Add optional Lua scripting module, examples, and validation

This commit is contained in:
emil28092005
2026-09-18 11:28:50 +03:00
parent 06210aac23
commit 5a67735ff4
45 changed files with 3887 additions and 92 deletions
+27
View File
@@ -0,0 +1,27 @@
local motion = require("util.motion")
local Beacon = faset.behavior {
id = "example.lua_beacon",
version = 1,
name = "Lua Beacon",
fields = {
amplitude = { name = "Height", type = "number", default = 0.3, min = 0, max = 2 },
frequency = { name = "Frequency", type = "number", default = 0.7, min = 0, max = 5 }
}
}
function Beacon:on_start()
self.state.origin_y = self.entity:transform().position.y
self.state.elapsed = 0
end
function Beacon:update(delta)
self.state.elapsed = self.state.elapsed + delta
local pose = self.entity:transform()
pose.position.y = self.state.origin_y
+ motion.bob(self.state.elapsed, self.fields.frequency, self.fields.amplitude)
pose.rotation.z = self.state.elapsed
self.entity:set_transform(pose)
end
return Beacon