41 lines
1.1 KiB
Lua
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
|