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