LUADOC - Farming Simulator 19

Effect

Description
Base class for effects Copyright (C) GIANTS Software GmbH, Confidential, All Rights Reserved.
Functions

delete

Description
Definition
delete()
Code
165function Effect:delete()
166 if self.filename ~= nil then
167 g_i3DManager:releaseSharedI3DFile(self.filename, self.baseDirectory, true)
168 end
169end

getIsFullyVisible

Description
Definition
getIsFullyVisible()

getValue

Description
Definition
getValue()
Code
207function Effect.getValue(xmlFile, key, func, node, name)
208 if node == nil then
209 return func(xmlFile, key .. "#" .. name)
210 else
211 return getUserAttribute(node, name)
212 end
213end

isRunning

Description
Definition
isRunning()

load

Description
Definition
load()
Code
17function Effect:load(xmlFile, baseName, rootNodes, parent, i3dMapping)
18 if not hasXMLProperty(xmlFile, baseName) then
19 return nil
20 end
21
22 self.parent = parent
23 self.rootNodes = rootNodes
24 self.configFileName = Utils.getNoNil(parent.configFileName, parent.xmlFilename)
25 self.baseDirectory = parent.baseDirectory
26
27 local filename = getXMLString(xmlFile, baseName .. "#filename")
28 if filename ~= nil then
29 local shared = Utils.getNoNil(getXMLBool(xmlFile, baseName.."#shared"), true)
30 local i3dNode = 0
31 if shared then
32 i3dNode = g_i3DManager:loadSharedI3DFile(filename, self.baseDirectory, false, false, false)
33 else
34 filename = Utils.getFilename(filename, self.baseDirectory)
35 i3dNode = loadI3DFile(filename, false, false, false)
36 end
37 if i3dNode ~= 0 then
38 if shared then
39 self.filename = filename
40 end
41
42 if not self:loadEffectAttributes(xmlFile, baseName, nil, i3dNode, i3dMapping) then
43 g_logManager:xmlWarning(self.configFileName, "Failed to load effect from file '%s'", baseName)
44 return nil
45 end
46 self:transformEffectNode(xmlFile, baseName, nil)
47
48 delete(i3dNode)
49 end
50 else
51 if not self:loadEffectAttributes(xmlFile, baseName, nil, rootNodes, i3dMapping) then
52 g_logManager:xmlWarning(self.configFileName, "Failed to load effect '%s' from node", baseName)
53 return nil
54 end
55 self:transformEffectNode(xmlFile, baseName, nil)
56 end
57
58
59 return self
60end

loadEffectAttributes

Description
Definition
loadEffectAttributes()
Code
100function Effect:loadEffectAttributes(xmlFile, key, node, i3dNode, i3dMapping)
101 local useSelfAsEffectNode = Utils.getNoNil(Effect.getValue(xmlFile, key, getXMLFloat, node, "useSelfAsEffectNode"), false)
102 self.prio = Utils.getNoNil(Effect.getValue(xmlFile, key, getXMLInt, node, "prio"), 0)
103 local effect = I3DUtil.indexToObject(Utils.getNoNil(node, self.rootNodes), Effect.getValue(xmlFile, key, getXMLString, node, "effectNode"), i3dMapping)
104 if effect == nil and useSelfAsEffectNode then
105 effect = node
106 end
107
108 if effect ~= nil then
109 self.node = effect
110 else
111 self.node = I3DUtil.indexToObject(i3dNode, Effect.getValue(xmlFile, key, getXMLString, node, "node"), i3dMapping)
112 self.linkNode = I3DUtil.indexToObject(Utils.getNoNil(node, self.rootNodes), Effect.getValue(xmlFile, key, getXMLString, node, "linkNode"), i3dMapping)
113 if self.linkNode == nil then
114 if node == nil then
115 g_logManager:xmlWarning(self.configFileName, "LinkNode is nil in '%s'", key)
116 else
117 g_logManager:xmlWarning(self.configFileName, "LinkNode is nil in node attribute '%s'", getName(node))
118 end
119 return false
120 end
121 if self.node == nil then
122 if node == nil then
123 g_logManager:xmlWarning(self.configFileName, "Node is nil in '%s'", key)
124 else
125 g_logManager:xmlWarning(self.configFileName, "Node is nil in node attribute '%s'", getName(node))
126 end
127
128 return false
129 end
130
131 if self.node ~= nil and self.linkNode ~= nil then
132 link(self.linkNode, self.node)
133 end
134 end
135
136 return true
137end

loadFromNode

Description
Definition
loadFromNode()
Code
64function Effect:loadFromNode(node, parent)
65 self.parent = parent
66 self.baseDirectory = parent.baseDirectory
67 self.configFileName = Utils.getNoNil(parent.configFileName, parent.xmlFilename)
68
69 local filename = getUserAttribute(node, "filename")
70 local i3dNode = 0
71
72 if filename ~= nil then
73 local shared = Utils.getNoNil(getUserAttribute(node, "shared"), true)
74 if shared then
75 i3dNode = g_i3DManager:loadSharedI3DFile(filename, self.baseDirectory, false, false, false)
76 else
77 filename = Utils.getFilename(filename, self.baseDirectory)
78 i3dNode = loadI3DFile(filename, false, false, false)
79 end
80 if shared then
81 self.filename = filename
82 end
83 end
84
85 if not self:loadEffectAttributes(nil, nil, node, i3dNode) then
86 g_logManager:xmlWarning(self.configFileName, "Failed to load effect from node '%s'", getName(node))
87 return nil
88 end
89 self:transformEffectNode(nil, nil, node)
90
91 if i3dNode ~= 0 then
92 delete(i3dNode)
93 end
94
95 return self
96end

reset

Description
Definition
reset()

start

Description
Definition
start()

stop

Description
Definition
stop()

transformEffectNode

Description
Definition
transformEffectNode()
Code
141function Effect:transformEffectNode(xmlFile, key, node)
142 local x,y,z = StringUtil.getVectorFromString(Effect.getValue(xmlFile, key, getXMLString, node, "position"))
143 local rotX, rotY, rotZ = StringUtil.getVectorFromString(Effect.getValue(xmlFile, key, getXMLString, node, "rotation"))
144 if rotX ~= nil and rotY ~= nil and rotZ ~= nil then
145 rotX = MathUtil.degToRad(rotX)
146 rotY = MathUtil.degToRad(rotY)
147 rotZ = MathUtil.degToRad(rotZ)
148 end
149 local scaleX,scaleY,scaleZ = StringUtil.getVectorFromString(Effect.getValue(xmlFile, key, getXMLString, node, "scale"))
150
151 if x ~= nil and y ~= nil and z ~= nil then
152 setTranslation(self.node, x,y,z)
153 end
154 if rotX ~= nil and rotY ~= nil and rotZ ~= nil then
155 setRotation(self.node, rotX, rotY, rotZ)
156 end
157 if scaleX ~= nil and scaleY ~= nil and scaleZ ~= nil then
158 setScale(self.node, scaleX, scaleY, scaleZ)
159 end
160 setVisibility(self.node, false)
161end

update

Description
Definition
update()