45 lines
1.3 KiB
Lua
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 |