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

41 lines
1.1 KiB
Lua

local module = {}
function module.new(this,piston,context)
this.servo = _G.GetInstance(piston,"Servo")
this.extension = _G.GetInstance(piston,"Extension")
this.binding = _G.GetInstance(piston,"Binding")
this.inverted = _G.GetInstance(piston,"Inverted")
this.force = _G.GetInstance(piston,"Force")
return this
end
local begin = tick()
module.run = _G.Protect(function(this,servo,context)
local control = (this.control or context.controls[this.binding.Value] or 0)
if this.inverted.Value then control = 1 - control end
this.servo.TargetPosition = servo.Extension.Value * control * servo:GetScale() + (this.offset or 0)
context.replicate(this,servo,module,this.servo.TargetPosition)
end)
module.replication_delta = 0.25
function module.replicate(this,servo,context,value)
servo.ServoMaxForce = this.force.Value * servo:GetScale() ^ 2
servo.TargetPosition = value
end
module.messages = {
control = function(this,object,context,value)
this.control = value
end,
offset = function(this,object,context,value)
this.offset = value
end,
}
module.messages.default = module.messages.control
module.manifest = {
"Piston"
}
return module