if not ShipMetatable then ShipMetatable = {} end
function ShipMetatable.__index(t, k)
if rawget(t, k) then return rawget(t, k) end
return ShipMetatable[k]
end
function ShipMetatable:init(def)
local body = Body(def)
local prop = Prop {
Name = def.Name .. "Prop"
}
prop:setTexture(Texture("textures/check.jpg"))
prop:setMesh(Mesh("meshes/interceptor.xsm"))
body:addChild(prop)
Spawn(body)
Spawn(prop)
self.body = body
self.prop = prop
end
function ShipMetatable:control(control, value)
-- print(control, value)
if value > 0 then value = value + 5000 end
if value < 0 then value = value - 5000 end
value = -(value*1.5)/32768
if control == "yaw" then
self.body:setAngularVelocity(0, 0, value)
elseif control == "roll" then
self.body:setAngularVelocity(value, 0, 0)
elseif control == "pitch" then
self.body:setAngularVelocity(0, value, 0)
end
if control == "fire" then
-- self.body:setAngularVelocity(0, 0, 0)
-- self.body:applyCentralImpulse(0, 100, 0)
-- self.body:applyTorque(0, 0, -100)
end
flush()
end
function Ship(def)
local ship = {}
setmetatable(ship, ShipMetatable)
ship:init(def)
return ship
end