LUADOC - Farming Simulator 19

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
108function CCTDrivable:getCCTCollisionMask()
109 local spec = self.spec_cctdrivable
110 return spec.kinematicCollisionMask
111end

getCCTWorldTranslation

Description
Definition
getCCTWorldTranslation()
Return Values
floatxposition of center of CCT
floatyposition of center of CCT
floatzposition of center of CCT
Code
118function CCTDrivable:getCCTWorldTranslation()
119 local spec = self.spec_cctdrivable
120 local cctX, cctY, cctZ = getTranslation(spec.cctNode)
121 cctY = cctY-spec.cctCenterOffset
122 return cctX, cctY, cctZ
123end

getIsCCTOnGround

Description
Definition
getIsCCTOnGround()
Return Values
intreturnsthe CCT index
Code
96function CCTDrivable:getIsCCTOnGround()
97 local spec = self.spec_cctdrivable
98 if self.isServer then
99 local _, _, isOnGround = getCCTCollisionFlags(spec.controllerIndex)
100 return isOnGround
101 end
102 return false
103end

moveCCT

Description
Definition
moveCCT()
Code
83function CCTDrivable:moveCCT(moveX, moveY, moveZ)
84 if self.isServer then
85 local spec = self.spec_cctdrivable
86 -- move cct
87 -- 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))
88 moveCCT(spec.controllerIndex, moveX, moveY, moveZ, spec.movementCollisionMask)
89 self:raiseActive()
90 end
91end

onDelete

Description
Called on deleting
Definition
onDelete()
Code
73function CCTDrivable:onDelete()
74 local spec = self.spec_cctdrivable
75
76 if spec.controllerIndex ~= nil then
77 removeCCT(spec.controllerIndex)
78 end
79end

onLoad

Description
Called on loading
Definition
onLoad(table savegame)
Arguments
tablesavegamesavegame
Code
52function CCTDrivable:onLoad(savegame)
53 local spec = self.spec_cctdrivable
54
55 spec.cctRadius = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.cctDrivable#cctRadius"), 1.0)
56 spec.cctHeight = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.cctDrivable#cctHeight"), 1.0)
57 spec.customOffset = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.cctDrivable#customOffset"), 0)
58 spec.cctCenterOffset = spec.cctRadius + spec.cctHeight*0.5
59
60 spec.kinematicCollisionMask = 4 -- 2147483648 + 1048576 + 4
61 spec.movementCollisionMask = 31 -- 2147483648 + 1048576 + 31
62 if self.isServer then
63 -- CCT
64 local mass = 1000
65 spec.cctNode = createTransformGroup("cctDrivable")
66 link(getRootNode(), spec.cctNode)
67 spec.controllerIndex = createCCT(spec.cctNode, spec.cctRadius, spec.cctHeight, 0.6, 45.0, 0.1, spec.kinematicCollisionMask, mass)
68 end
69end

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
44function CCTDrivable.registerEventListeners(vehicleType)
45 SpecializationUtil.registerEventListener(vehicleType, "onLoad", CCTDrivable)
46 SpecializationUtil.registerEventListener(vehicleType, "onDelete", CCTDrivable)
47end

registerFunctions

Description
Registers functions
Definition
registerFunctions(string vehicleType)
Arguments
stringvehicleTypetype of vehicle
Code
27function CCTDrivable.registerFunctions(vehicleType)
28 SpecializationUtil.registerFunction(vehicleType, "moveCCT", CCTDrivable.moveCCT)
29 SpecializationUtil.registerFunction(vehicleType, "getIsCCTOnGround", CCTDrivable.getIsCCTOnGround)
30 SpecializationUtil.registerFunction(vehicleType, "getCCTCollisionMask", CCTDrivable.getCCTCollisionMask)
31 SpecializationUtil.registerFunction(vehicleType, "getCCTWorldTranslation", CCTDrivable.getCCTWorldTranslation)
32end

registerOverwrittenFunctions

Description
Definition
registerOverwrittenFunctions()
Code
36function CCTDrivable.registerOverwrittenFunctions(vehicleType)
37 SpecializationUtil.registerOverwrittenFunction(vehicleType, "setWorldPosition", CCTDrivable.setWorldPosition)
38 SpecializationUtil.registerOverwrittenFunction(vehicleType, "setWorldPositionQuaternion", CCTDrivable.setWorldPositionQuaternion)
39end

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
135function CCTDrivable:setWorldPosition(superFunc, x,y,z, xRot,yRot,zRot, i, changeInterp)
136 superFunc(self, x,y,z, xRot,yRot,zRot, i, changeInterp)
137 if self.isServer and i == 1 then
138 local spec = self.spec_cctdrivable
139 setTranslation(spec.cctNode, x, y + spec.cctCenterOffset, z)
140 end
141end

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
154function CCTDrivable:setWorldPositionQuaternion(superFunc, x, y, z, qx, qy, qz, qw, i, changeInterp)
155 superFunc(self, x, y, z, qx, qy, qz, qw, i, changeInterp)
156 if self.isServer and i == 1 then
157 local spec = self.spec_cctdrivable
158 setTranslation(spec.cctNode, x, y + spec.cctCenterOffset, z)
159 end
160end