From 5a93fb6f6a8fb6f1dad821b407b4f4531bc23783 Mon Sep 17 00:00:00 2001 From: sanine Date: Wed, 29 Mar 2023 00:01:54 -0500 Subject: add image caching --- honey/ode.lua | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 honey/ode.lua (limited to 'honey/ode.lua') diff --git a/honey/ode.lua b/honey/ode.lua new file mode 100644 index 0000000..4cd2e54 --- /dev/null +++ b/honey/ode.lua @@ -0,0 +1,55 @@ +local module = {} +setmetatable(module, {__index=_G} +setfenv(1, module) + + +--===== collision =====-- + +Geom = {} +Geom.__index = Geom + + +function Geom.new(_, type, params) + local self = {} + self.type = type + self.params = params + setmetatable(self, Geom) + return self +end +setmetatable(Geom, {__call=Geom.new}) + + +function Geom.renew(geom) + return ode.GeomGetData(geom) +end + + +local function instantiateSphere(space, params) + local geom = ode.CreateSphere(space, params.radius) + return geom +end + + +local function instantiatePlane(space, params) + local geom = ode.CreatePlane(space, params.a, params.b, params.c, params.d) + return geom +end + + +function Geom.instantiate(self, space) + if self.type == "sphere" then + self.geom = instantiateSphere(space, self.params) + elseif self.type == "plane" then + self.geom = instantiatePlane(space, self.params) + else + error(string.format("bad geom type: %s", self.type)) + end + ode.GeomSetData(self.geom, self) + return self +end + + +function Geom.setBody(self, body) + ode.GeomSetBody(self.geom, body.body) + return self +end -- cgit v1.2.1