LUADOC - Farming Simulator 19

MorphPositionEffect

Description
Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved.
Parent
ShaderPlaneEffect
Functions

getIsFullyVisible

Description
Definition
getIsFullyVisible()
Code
146function MorphPositionEffect:getIsFullyVisible()
147 return self.fadeCur[2] == 1 and self.fadeCur[1] == 0
148end

loadEffectAttributes

Description
Definition
loadEffectAttributes()
Code
22function MorphPositionEffect:loadEffectAttributes(xmlFile, key, node, i3dNode, i3dMapping)
23 if not MorphPositionEffect:superClass().loadEffectAttributes(self, xmlFile, key, node, i3dNode, i3dMapping) then
24 return false
25 end
26
27 self.speed = Utils.getNoNil(Effect.getValue(xmlFile, key, getXMLFloat, node, "speed"), 1)
28 self.fadeCur = {0, 0}
29 self.fadeDir = {0, 0}
30
31 self.scrollLength = Utils.getNoNil(Effect.getValue(xmlFile, key, getXMLFloat, node, "scrollLength"), 1)
32 self.scrollSpeed = Utils.getNoNil(Effect.getValue(xmlFile, key, getXMLFloat, node, "scrollSpeed"), 1)*0.001
33 self.scrollPosition = 0
34 self.scrollUpdate = true
35
36 setShaderParameter(self.node, "morphPosition", 0.0, 1.0, 1.0, 0.0, false)
37 setVisibility(self.node, false)
38
39 return true
40end

new

Description
Definition
new()
Code
10function MorphPositionEffect:new(customMt)
11 if customMt == nil then
12 customMt = MorphPositionEffect_mt
13 end
14
15 local self = ShaderPlaneEffect:new(customMt)
16
17 return self
18end

reset

Description
Definition
reset()
Code
125function MorphPositionEffect:reset()
126 self.fadeCur = {math.min(self.offset, 0), math.min(self.offset, 0)}
127 self.fadeDir = {0, 1}
128 setShaderParameter(self.node, "morphPosition", self.fadeCur[1], self.fadeCur[2], 0.0, self.scrollSpeed, false )
129 setVisibility(self.node, false)
130
131 self.state = ShaderPlaneEffect.STATE_OFF
132end

setScrollUpdate

Description
Definition
setScrollUpdate()
Code
136function MorphPositionEffect:setScrollUpdate(state)
137 if state == nil then
138 self.scrollUpdate = not self.scrollUpdate
139 else
140 self.scrollUpdate = state
141 end
142end

start

Description
Definition
start()
Code
100function MorphPositionEffect:start()
101 if self.state ~= ShaderPlaneEffect.STATE_TURNING_ON and self.state ~= ShaderPlaneEffect.STATE_ON then
102 self.state = ShaderPlaneEffect.STATE_TURNING_ON
103 self.fadeCur = {math.min(self.offset, 0), math.min(self.offset, self.fadeCur[2])}
104 self.fadeDir = {0, 1}
105 self.currentDelay = self.startDelay
106 return true
107 end
108 return false
109end

stop

Description
Definition
stop()
Code
113function MorphPositionEffect:stop()
114 if self.state ~= ShaderPlaneEffect.STATE_TURNING_OFF and self.state ~= ShaderPlaneEffect.STATE_OFF then
115 self.state = ShaderPlaneEffect.STATE_TURNING_OFF
116 self.fadeDir = {1, 1}
117 self.currentDelay = self.stopDelay
118 return true
119 end
120 return false
121end

update

Description
Definition
update()
Code
44function MorphPositionEffect:update(dt)
45 local running = false
46
47 if self.currentDelay > 0 then
48 self.currentDelay = self.currentDelay - dt
49 end
50
51 if self.currentDelay <= 0 and self.state ~= ShaderPlaneEffect.STATE_OFF then
52 local fadeTime = self.fadeInTime
53 if self.state == ShaderPlaneEffect.STATE_TURNING_OFF then
54 fadeTime = self.fadeOutTime
55 end
56
57 self.fadeCur[1] = math.max(0, math.min(1, self.fadeCur[1] + self.fadeDir[1] * (dt / fadeTime)))
58 self.fadeCur[2] = math.max(0, math.min(1, self.fadeCur[2] + self.fadeDir[2] * (dt / fadeTime)), self.offset)
59
60 if self.state ~= ShaderPlaneEffect.STATE_OFF and self.state ~= ShaderPlaneEffect.STATE_TURNING_OFF then
61 self.fadeCur[1] = self.offset
62 end
63 setShaderParameter(self.node, "morphPosition", self.fadeCur[1], self.fadeCur[2], 1.0, self.speed, false)
64
65 local isVisible = true
66 if self.state == ShaderPlaneEffect.STATE_TURNING_OFF then
67 if self.fadeCur[1] == 1 then
68 isVisible = false
69 self.fadeCur[1] = 0
70 self.fadeCur[2] = 0
71 self.state = ShaderPlaneEffect.STATE_OFF
72 end
73 end
74 setVisibility(self.node, isVisible)
75
76 if not ((self.state == ShaderPlaneEffect.STATE_TURNING_ON and self.fadeCur[1] == 0 and self.fadeCur[2] == 1) or (self.state == ShaderPlaneEffect.STATE_TURNING_OFF and self.fadeCur[1] == 1 and self.fadeCur[2] == 1) ) then
77 running = true
78 end
79 else
80 running = true
81 end
82
83 if self.scrollUpdate then
84 self.scrollPosition = (self.scrollPosition + dt*self.scrollSpeed) % self.scrollLength
85 local _, y, z, w = getShaderParameter(self.node, "offsetUV")
86 setShaderParameter(self.node, "offsetUV", self.scrollPosition, y, z, w, false)
87 end
88
89 if not running then
90 if self.state == ShaderPlaneEffect.STATE_TURNING_ON then
91 self.state = ShaderPlaneEffect.STATE_ON
92 elseif self.state == ShaderPlaneEffect.STATE_TURNING_OFF then
93 self.state = ShaderPlaneEffect.STATE_OFF
94 end
95 end
96end