LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

VineDetector

Functions

initSpecialization

Description
Definition
initSpecialization()
Code
14function VineDetector.initSpecialization()
15 local schema = Vehicle.xmlSchema
16 schema:setXMLSpecializationType("VineDetector")
17 schema:register(XMLValueType.NODE_INDEX, "vehicle.vineDetector.raycast#node", "Raycast node")
18 schema:register(XMLValueType.FLOAT, "vehicle.vineDetector.raycast#maxDistance", "Max raycast distance", 1)
19 schema:setXMLSpecializationType()
20end

onLoad

Description
Definition
onLoad()
Code
53function VineDetector:onLoad(savegame)
54 local spec = self.spec_vineDetector
55
56 spec.raycast = {}
57 spec.raycast.node = self.xmlFile:getValue("vehicle.vineDetector.raycast#node", nil, self.components, self.i3dMappings)
58 if spec.raycast.node == nil then
59 Logging.xmlWarning(self.xmlFile, "Missing vine detector raycast node")
60 end
61 spec.raycast.maxDistance = self.xmlFile:getValue("vehicle.vineDetector.raycast#maxDistance", 1)
62 spec.raycast.vineNode = nil
63 spec.raycast.isRaycasting = false
64 spec.raycast.firstHitPosition = {0, 0, 0}
65 spec.raycast.currentHitPosition = {0, 0, 0}
66 spec.raycast.currentHitDistance = 0
67 spec.raycast.currentNode = nil
68 spec.isVineDetectionActive = false
69end

onUpdate

Description
Called on update
Definition
onUpdate(float dt, boolean isActiveForInput, boolean isSelected)
Arguments
floatdttime since last call in ms
booleanisActiveForInputtrue if vehicle is active for input
booleanisSelectedtrue if vehicle is selected
Code
76function VineDetector:onUpdate(dt, isActiveForInput, isActiveForInputIgnoreSelection, isSelected)
77 local spec = self.spec_vineDetector
78 if self.isServer and spec.raycast.node ~= nil then
79 if self:getCanStartVineDetection() then
80 spec.isVineDetectionActive = true
81 if not spec.raycast.isRaycasting then
82 spec.raycast.isRaycasting = true
83
84 local x, y, z = getWorldTranslation(spec.raycast.node)
85 local dx, dy, dz = localDirectionToWorld(spec.raycast.node, 0, -1, 0)
86 raycastAll(x,y,z, dx,dy,dz, "raycastCallbackVineDetection", spec.raycast.maxDistance, self, nil, false, true)
87 end
88 else
89 if spec.isVineDetectionActive then
90 self:clearCurrentVinePlaceable()
91 self:finishedVineDetection()
92 spec.isVineDetectionActive = false
93 end
94 end
95 end
96end

prerequisitesPresent

Description
Definition
prerequisitesPresent()
Code
24function VineDetector.prerequisitesPresent(specializations)
25 return true
26end

registerEventListeners

Description
Definition
registerEventListeners()
Code
45function VineDetector.registerEventListeners(vehicleType)
46 SpecializationUtil.registerEventListener(vehicleType, "onLoad", VineDetector)
47 SpecializationUtil.registerEventListener(vehicleType, "onUpdate", VineDetector)
48
49end

registerFunctions

Description
Definition
registerFunctions()
Code
30function VineDetector.registerFunctions(vehicleType)
31 SpecializationUtil.registerFunction(vehicleType, "raycastCallbackVineDetection", VineDetector.raycastCallbackVineDetection)
32 SpecializationUtil.registerFunction(vehicleType, "finishedVineDetection", VineDetector.finishedVineDetection)
33 SpecializationUtil.registerFunction(vehicleType, "clearCurrentVinePlaceable", VineDetector.clearCurrentVinePlaceable)
34 SpecializationUtil.registerFunction(vehicleType, "cancelVineDetection", VineDetector.cancelVineDetection)
35 SpecializationUtil.registerFunction(vehicleType, "getIsValidVinePlaceable", VineDetector.getIsValidVinePlaceable)
36 SpecializationUtil.registerFunction(vehicleType, "handleVinePlaceable", VineDetector.handleVinePlaceable)
37 SpecializationUtil.registerFunction(vehicleType, "getCanStartVineDetection", VineDetector.getCanStartVineDetection)
38 SpecializationUtil.registerFunction(vehicleType, "getFirstVineHitPosition", VineDetector.getFirstVineHitPosition)
39 SpecializationUtil.registerFunction(vehicleType, "getCurrentVineHitPosition", VineDetector.getCurrentVineHitPosition)
40 SpecializationUtil.registerFunction(vehicleType, "getCurrentVineHitDistance", VineDetector.getCurrentVineHitDistance)
41end