LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

CCTDrivable

Description
Specialization class for CCTDrivables
XML Configuration Parameters
vehicle.cctDrivable#cctRadiusradius of the CCT
vehicle.cctDrivable#cctHeightheight of the CCT

Functions

getCCTCollisionMask

Description
Definition
getCCTCollisionMask()
Return Values
intreturnsthe collision mask
Code
126function CCTDrivable:getCCTCollisionMask()
127 local spec = self.spec_cctdrivable
128 return spec.kinematicCollisionMask
129end

getCCTWorldTranslation

Description
Definition
getCCTWorldTranslation()
Return Values
floatxposition of center of CCT
floatyposition of center of CCT
floatzposition of center of CCT
Code
136function CCTDrivable:getCCTWorldTranslation()
137 local spec = self.spec_cctdrivable
138 local cctX, cctY, cctZ = getTranslation(spec.cctNode)
139 cctY = cctY-spec.cctCenterOffset
140 return cctX, cctY, cctZ
141end

getIsCCTOnGround

Description
Definition
getIsCCTOnGround()
Return Values
intreturnsthe CCT index
Code
114function CCTDrivable:getIsCCTOnGround()
115 local spec = self.spec_cctdrivable
116 if self.isServer then
117 local _, _, isOnGround = getCCTCollisionFlags(spec.controllerIndex)
118 return isOnGround
119 end
120 return false
121end

initSpecialization

Description
Definition
initSpecialization()
Code
26function CCTDrivable.initSpecialization()
27 local schema = Vehicle.xmlSchema
28 schema:setXMLSpecializationType("CCTDrivable")
29
30 schema:register(XMLValueType.FLOAT, "vehicle.cctDrivable#cctRadius", "CCT radius", 1.0)
31 schema:register(XMLValueType.FLOAT, "vehicle.cctDrivable#cctHeight", "CCT height", 1.0)
32 schema:register(XMLValueType.FLOAT, "vehicle.cctDrivable#cctSlopeLimit", "CCT slope limit", 25.0)
33 schema:register(XMLValueType.FLOAT, "vehicle.cctDrivable#cctStepOffset", "CCT step offset", 0.35)
34 schema:register(XMLValueType.FLOAT, "vehicle.cctDrivable#customOffset", "CCT custom offset", 0)
35
36 schema:setXMLSpecializationType()
37end

moveCCT

Description
Definition
moveCCT()
Code
101function CCTDrivable:moveCCT(moveX, moveY, moveZ)
102 if self.isServer then
103 local spec = self.spec_cctdrivable
104 -- move cct
105 -- print(string.format("-- [CCTDrivable:moveCCT][%d] physIndex(%d) move(%.6f, %.6f, %.6f) physDt(%.6f) physDtNoInterp(%.6f) physDtUnclamp(%.6f)", g_updateLoopIndex, getPhysicsUpdateIndex(), moveX, moveY, moveZ, g_physicsDt, g_physicsDtNonInterpolated, g_physicsDtUnclamped))
106 moveCCT(spec.controllerIndex, moveX, moveY, moveZ, spec.movementCollisionMask)
107 self:raiseActive()
108 end
109end

onDelete

Description
Called on deleting
Definition
onDelete()
Code
90function CCTDrivable:onDelete()
91 local spec = self.spec_cctdrivable
92
93 if spec.controllerIndex ~= nil then
94 removeCCT(spec.controllerIndex)
95 delete(spec.cctNode)
96 end
97end

onLoad

Description
Called on loading
Definition
onLoad(table savegame)
Arguments
tablesavegamesavegame
Code
67function CCTDrivable:onLoad(savegame)
68 local spec = self.spec_cctdrivable
69
70 spec.cctRadius = self.xmlFile:getValue("vehicle.cctDrivable#cctRadius", 1.0)
71 spec.cctHeight = self.xmlFile:getValue("vehicle.cctDrivable#cctHeight", 1.0)
72 spec.cctSlopeLimit = self.xmlFile:getValue("vehicle.cctDrivable#cctSlopeLimit", 25)
73 spec.cctStepOffset = self.xmlFile:getValue("vehicle.cctDrivable#cctStepOffset", 0.3)
74 spec.customOffset = self.xmlFile:getValue("vehicle.cctDrivable#customOffset", 0)
75 spec.cctCenterOffset = spec.cctRadius + spec.cctHeight*0.5
76
77 spec.kinematicCollisionMask = 4 -- 2147483648 + 1048576 + 4
78 spec.movementCollisionMask = 31 -- 2147483648 + 1048576 + 31
79 if self.isServer then
80 -- CCT
81 local mass = self.components[1].defaultMass * 1000
82 spec.cctNode = createTransformGroup("cctDrivable")
83 link(getRootNode(), spec.cctNode)
84 spec.controllerIndex = createCCT(spec.cctNode, spec.cctRadius, spec.cctHeight, spec.cctStepOffset, spec.cctSlopeLimit, 0.1, spec.kinematicCollisionMask, mass)
85 end
86end

prerequisitesPresent

Description
Checks if all prerequisite specializations are loaded
Definition
prerequisitesPresent(table specializations)
Arguments
tablespecializationsspecializations
Return Values
booleanhasPrerequisitetrue if all prerequisite specializations are loaded
Code
20function CCTDrivable.prerequisitesPresent(specializations)
21 return SpecializationUtil.hasSpecialization(Enterable, specializations)
22end

registerEventListeners

Description
Registers event listeners
Definition
registerEventListeners(string vehicleType)
Arguments
stringvehicleTypetype of vehicle
Code
59function CCTDrivable.registerEventListeners(vehicleType)
60 SpecializationUtil.registerEventListener(vehicleType, "onLoad", CCTDrivable)
61 SpecializationUtil.registerEventListener(vehicleType, "onDelete", CCTDrivable)
62end

registerFunctions

Description
Registers functions
Definition
registerFunctions(string vehicleType)
Arguments
stringvehicleTypetype of vehicle
Code
42function CCTDrivable.registerFunctions(vehicleType)
43 SpecializationUtil.registerFunction(vehicleType, "moveCCT", CCTDrivable.moveCCT)
44 SpecializationUtil.registerFunction(vehicleType, "getIsCCTOnGround", CCTDrivable.getIsCCTOnGround)
45 SpecializationUtil.registerFunction(vehicleType, "getCCTCollisionMask", CCTDrivable.getCCTCollisionMask)
46 SpecializationUtil.registerFunction(vehicleType, "getCCTWorldTranslation", CCTDrivable.getCCTWorldTranslation)
47end

registerOverwrittenFunctions

Description
Definition
registerOverwrittenFunctions()
Code
51function CCTDrivable.registerOverwrittenFunctions(vehicleType)
52 SpecializationUtil.registerOverwrittenFunction(vehicleType, "setWorldPosition", CCTDrivable.setWorldPosition)
53 SpecializationUtil.registerOverwrittenFunction(vehicleType, "setWorldPositionQuaternion", CCTDrivable.setWorldPositionQuaternion)
54end

setWorldPosition

Description
Set world position and rotation of component
Definition
setWorldPosition(float x, float y, float z, float xRot, float yRot, float zRot, integer i, boolean changeInterp)
Arguments
floatxx position
floatyy position
floatzz position
floatxRotx rotation
floatyRoty rotation
floatzRotz rotation
integeriindex if component
booleanchangeInterpchange interpolation
Code
153function CCTDrivable:setWorldPosition(superFunc, x,y,z, xRot,yRot,zRot, i, changeInterp)
154 superFunc(self, x,y,z, xRot,yRot,zRot, i, changeInterp)
155 if self.isServer and i == 1 then
156 local spec = self.spec_cctdrivable
157 setTranslation(spec.cctNode, x, y + spec.cctCenterOffset, z)
158 end
159end

setWorldPositionQuaternion

Description
Set world position and quaternion rotation of component
Definition
setWorldPositionQuaternion(float x, float y, float z, float qx, float qy, float qz, float qw, Integer i, boolean changeInterp)
Arguments
floatxx position
floatyy position
floatzz position
floatqxx rotation
floatqyy rotation
floatqzz rotation
floatqww rotation
Integeriindex if component
booleanchangeInterpchange interpolation
Code
172function CCTDrivable:setWorldPositionQuaternion(superFunc, x, y, z, qx, qy, qz, qw, i, changeInterp)
173 superFunc(self, x, y, z, qx, qy, qz, qw, i, changeInterp)
174 if self.isServer and i == 1 then
175 local spec = self.spec_cctdrivable
176 setTranslation(spec.cctNode, x, y + spec.cctCenterOffset, z)
177 end
178end