FrontDoorRear =
{
type = 'rotation',
mesh = 0,
grp = {14,15},
ref = {x=0.0003,y=-0.7170,z=3.35},
axis = {x=1,y=0,z=0},
angle = 110*RAD
}
-- Gear animation parameters
GearAnimationSpeed = 0.3
GearOpen=0
GearClosed=1
GearOpening=2
GearClosing=3
GearStatus = GearOpen
GearState = 0
-- CLBK SETCLASSCAPS FUNCTION
function clbk_setclasscaps(cfg)
-- Gears animation
FrontDoorRearComponent = oapi.create_animationcomponent(FrontDoorRear)
GearAnimation = vi:create_animation(0)
vi:add_animationcomponent(GearAnimation, 0, 1, FrontDoorRearComponent)
end
-- Reverse function for gear animation
local function revert_status(status)
if status == GearOpen or status == GearOpening then
return GearClosing
else
return GearOpening
end
end
-- Function for gear animations
function clbk_poststep(simt, simdt, mjd)
if GearStatus >= GearOpening then
local da = simdt * GearAnimationSpeed
if GearStatus == GearOpening then
if GearState > 0.0 then
GearState = math.max(0.0, GearState - da)
else
GearStatus = GearOpen
end
else
if GearState < 1.0 then
GearState = math.min(1.0, GearState + da)
else
GearStatus = GearClosed
end
end
vi:set_animation(GearAnimation, GearState)
end
end
-- Key for gear animation
function clbk_consumebufferedkey(key, down, kstate)
if oapi.keydown(kstate, OAPI_KEY.G) then
GearStatus = revert_status(GearStatus)
end
end