LUADOC - Farming Simulator 22

ValueInterpolator

Description
Class to interpolate between values
Functions

delete

Description
Definition
delete()
Code
80function ValueInterpolator:delete()
81end

getTarget

Description
Definition
getTarget()
Code
85function ValueInterpolator:getTarget()
86 return self.target
87end

hasInterpolator

Description
Definition
hasInterpolator()
Code
150function ValueInterpolator.hasInterpolator(key)
151 return g_currentMission:getHasUpdateable(key)
152end

new

Description
Definition
new()
Code
16function ValueInterpolator.new(customKey, get, set, target, duration, speed, customMt)
17 local self = setmetatable({}, customMt or ValueInterpolator_mt)
18
19 self.customKey = customKey
20
21 self.get = get
22 self.set = set
23
24 self.target = target
25 self.duration = duration
26
27 self.cur = {get()}
28
29 if self.duration ~= nil then
30 self:updateSpeed()
31 else
32 speed = (speed or 1) / 1000
33 self.speed = {}
34 for i=1, #self.target do
35 self.speed[i] = speed
36 end
37 end
38
39 local isValid = false
40 for i=1, #self.speed do
41 if math.abs(self.speed[i]) > 0.000000001 then
42 isValid = true
43 end
44 end
45
46 if isValid then
47 g_currentMission:addUpdateable(self, customKey)
48
49 return self
50 end
51end

onDeleteParent

Description
Definition
onDeleteParent()
Code
156function ValueInterpolator:onDeleteParent()
157 g_currentMission:removeUpdateable(self.customKey)
158end

removeInterpolator

Description
Definition
removeInterpolator()
Code
142function ValueInterpolator.removeInterpolator(key)
143 if g_currentMission:getHasUpdateable(key) then
144 g_currentMission:removeUpdateable(key)
145 end
146end

setDeleteListenerObject

Description
Definition
setDeleteListenerObject()
Code
71function ValueInterpolator:setDeleteListenerObject(object)
72 if object ~= nil and object:isa(Object) then
73 object:addDeleteListener(self, "onDeleteParent")
74 self.deleteListenerObject = object
75 end
76end

setFinishedFunc

Description
Definition
setFinishedFunc()
Code
63function ValueInterpolator:setFinishedFunc(finishedFunc, finishedTarget, ...)
64 self.finishedFunc = finishedFunc
65 self.finishedTarget = finishedTarget
66 self.finishedArgs = {...}
67end

setUpdateFunc

Description
Definition
setUpdateFunc()
Code
55function ValueInterpolator:setUpdateFunc(updateFunc, updateTarget, ...)
56 self.updateFunc = updateFunc
57 self.updateTarget = updateTarget
58 self.updateArgs = {...}
59end

update

Description
Definition
update()
Code
104function ValueInterpolator:update(dt)
105 local finished = true
106 for i=1, #self.cur do
107 local direction = MathUtil.sign(self.target[i] - self.cur[i])
108 local limitFunc = math.min
109 if direction < 0 then
110 limitFunc = math.max
111 end
112 self.cur[i] = limitFunc(self.cur[i] + self.speed[i] * dt * direction, self.target[i])
113
114 finished = finished and self.cur[i] == self.target[i]
115 end
116
117 self.set(unpack(self.cur))
118
119 if self.updateFunc ~= nil then
120 self.updateFunc(self.updateTarget, unpack(self.updateArgs))
121 end
122
123 if self.duration ~= nil then
124 self.duration = math.max(self.duration - dt, 1)
125 end
126
127 if finished then
128 g_currentMission:removeUpdateable(self.customKey)
129
130 if self.deleteListenerObject ~= nil then
131 self.deleteListenerObject:removeDeleteListener("onDeleteParent")
132 end
133
134 if self.finishedFunc ~= nil then
135 self.finishedFunc(self.finishedTarget, unpack(self.finishedArgs))
136 end
137 end
138end

updateSpeed

Description
Definition
updateSpeed()
Code
91function ValueInterpolator:updateSpeed()
92 if type(self.duration) == "number" then
93 self.speed = {}
94 for i=1, #self.target do
95 self.speed[i] = math.abs(self.target[i] - self.cur[i]) / self.duration
96 end
97 else
98 self.speed = self.duration
99 end
100end