Files
PlaneBuilding/scripts/modules/objects/Lever.lua
T

45 lines
1.3 KiB
Lua

local module = {}
function position(motor,phase,phases,target,origin)
motor.C0 = origin
local alpha = (phase)/(phases-1)
motor.C1 = CFrame.new():Lerp(target,alpha)
end
function module.new(this,lever,context)
this.motor = _G.GetInstance(lever,"Motor")
this.phase = _G.GetInstance(lever,"Phase")
this.phases = _G.GetInstance(lever,"Phases")
this.hold = _G.GetInstance(lever,"Hold")
this.click = _G.GetInstance(this.hold,"ClickDetector")
this.target = lever:GetAttribute("Target") or error("Needs target attribute.")
this.origin = lever:GetAttribute("Origin") or error("Needs target attribute.")
if _G.IsServer then
module.update(this,lever,context)
this.click.MouseClick:Connect(function()
if this.phase.Value == this.phases.Value - 1 then
this.phase.Value = 0
else
this.phase.Value += 1
end
print(this.phase.Value)
module.update(this,lever,context)
context.connected("ConnectorData",nil,lever.PrimaryPart,function(object)
print("firing",this.phase.Value)
context.message(object,nil,this.phase.Value/(this.phases.Value-1))
end)
end)
end
end
function module.update(this,lever,context)
if _G.IsServer then
position(this.motor,this.phase.Value,this.phases.Value,this.target,this.origin)
end
end
module.manifest = {
"Lever"
}
return module