summaryrefslogtreecommitdiff
path: root/scripts/character
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/character')
-rw-r--r--scripts/character/cameraDistance.lua6
-rw-r--r--scripts/character/collide.lua6
-rw-r--r--scripts/character/spring.lua29
3 files changed, 41 insertions, 0 deletions
diff --git a/scripts/character/cameraDistance.lua b/scripts/character/cameraDistance.lua
new file mode 100644
index 0000000..436b4a3
--- /dev/null
+++ b/scripts/character/cameraDistance.lua
@@ -0,0 +1,6 @@
+require 'honey.std'
+
+return function(db, id, data)
+ local node = db:getComponent(id, "node")
+ node.matrix:translate(Vec3{0, 0, data.yoffset})
+end
diff --git a/scripts/character/collide.lua b/scripts/character/collide.lua
new file mode 100644
index 0000000..1ac6cff
--- /dev/null
+++ b/scripts/character/collide.lua
@@ -0,0 +1,6 @@
+require 'honey.std'
+
+return function(db, self, other, point)
+ local tbl = ode.ContactGeomTable(point)
+ print(tbl.pos, tbl.normal, tbl.depth, tbl.g1, tbl.g2)
+end
diff --git a/scripts/character/spring.lua b/scripts/character/spring.lua
new file mode 100644
index 0000000..ed3e878
--- /dev/null
+++ b/scripts/character/spring.lua
@@ -0,0 +1,29 @@
+require 'honey.std'
+
+
+local values = {}
+local sum = 0
+function integral(value)
+ sum = sum + value
+ table.insert(values, value)
+ if #values > 20 then
+ sum = sum - values[1]
+ table.remove(values, 1)
+ end
+ return sum
+end
+
+local prev = 0
+function derivative(value)
+ local delta = value - prev
+ prev = value
+ return delta
+end
+
+return function(db, self, other, point)
+ local tbl = ode.ContactGeomTable(point)
+ local x = tbl.depth - 3.8
+ local spring = db:getComponent(self, "spring")
+ spring.F = math.abs(200 * x)
+ print("depth", x)
+end