LUADOC - Farming Simulator 19

Script v1.7.1.0

Engine v1.7.1.0

Foundation Reference

RenderElement

Description
Render display as an overlay
Parent
GuiElement
XML Configuration Parameters
RenderElement#filenamestring Path to the i3d to be rendered in the overlay
RenderElement#cameraPathstring Node of the camera to be used to show the render
RenderElement#superSamplingFactornumber [optional] Supersampling factor the render size should be increased with, to imitate anti-aliasing by supersampling

Functions

copyAttributes

Description
Definition
copyAttributes()
Code
66function RenderElement:copyAttributes(src)
67 RenderElement:superClass().copyAttributes(self, src)
68
69 self.filename = src.filename
70 self.cameraPath = src.cameraPath
71 self.superSamplingFactor = src.superSamplingFactor
72end

createOverlay

Description
Definition
createOverlay()
Code
143function RenderElement:createOverlay()
144 if self.overlay ~= 0 then
145 delete(self.overlay)
146 self.overlay = 0
147 end
148
149 -- Use downsampling to imitate anti-aliasing, as the postFx for it is not available
150 -- on render overlays
151 local resolutionX = math.ceil(g_screenWidth * self.size[1]) * self.superSamplingFactor
152 local resolutionY = math.ceil(g_screenHeight * self.size[2]) * self.superSamplingFactor
153
154 local aspectRatio = resolutionX / resolutionY
155
156 local camera = I3DUtil.indexToObject(self.scene, self.cameraPath)
157 if camera == nil then
158 print("ERROR: Could not find camera node '" .. self.cameraPath .. "' in scene")
159 else
160 local shapesMask = 255 --0x000000FF
161 local lightsMask = 16711680 -- 0x00FF0000
162
163 self.overlay = createRenderOverlay(camera, aspectRatio, resolutionX, resolutionY, true, shapesMask, lightsMask)
164 self.isRenderDirty = true
165 self:raiseCallback("onRenderLoadCallback", self.scene, self.overlay)
166 end
167end

createScene

Description
Create the scene and the overlay. Call destroyScene to clean up resources.
Definition
createScene()
Code
76function RenderElement:createScene()
77 self:setScene(self.filename)
78end

delete

Description
Definition
delete()
Code
32function RenderElement:delete()
33 self:destroyScene()
34
35 RenderElement:superClass().delete(self)
36end

destroyScene

Description
Destroy the scene and the overlay, cleaning up resources.
Definition
destroyScene()
Code
82function RenderElement:destroyScene()
83 if self.overlay ~= 0 then
84 delete(self.overlay)
85 self.overlay = 0
86 end
87
88 -- Mark the pending i3d load as cancelled
89 if self.loadContext ~= nil then
90 self.loadContext.cancel = true
91 self.loadContext = nil
92 end
93
94 if self.scene then
95 delete(self.scene)
96 self.scene = nil
97 end
98end

draw

Description
Definition
draw()
Code
182function RenderElement:draw()
183 if not self.isLoading and self.overlay ~= 0 then
184 renderOverlay(self.overlay, self.absPosition[1], self.absPosition[2], self.size[1], self.size[2])
185 end
186
187 RenderElement:superClass().draw(self)
188end

getSceneRoot

Description
Definition
getSceneRoot()
Code
198function RenderElement:getSceneRoot()
199 return self.scene
200end

loadFromXML

Description
Definition
loadFromXML()
Code
40function RenderElement:loadFromXML(xmlFile, key)
41 RenderElement:superClass().loadFromXML(self, xmlFile, key)
42
43 self.filename = getXMLString(xmlFile, key .. "#filename")
44 self.cameraPath = getXMLString(xmlFile, key .. "#cameraNode")
45 self.superSamplingFactor = getXMLInt(xmlFile, key .. "#superSamplingFactor")
46
47 self:addCallback(xmlFile, key.."#onRenderLoad", "onRenderLoadCallback")
48end

loadProfile

Description
Definition
loadProfile()
Code
52function RenderElement:loadProfile(profile, applyProfile)
53 RenderElement:superClass().loadProfile(self, profile, applyProfile)
54
55 self.filename = profile:getValue("filename")
56 self.cameraPath = profile:getValue("cameraNode")
57 self.superSamplingFactor = profile:getNumber("superSamplingFactor")
58
59 if applyProfile then
60 self:setScene(self.filename)
61 end
62end

new

Description
Definition
new()
Code
20function RenderElement:new(target, custom_mt)
21 local self = GuiElement:new(target, custom_mt or RenderElement_mt)
22
23 self.cameraPath = nil
24 self.isRenderDirty = false
25 self.overlay = 0
26
27 return self
28end

setRenderDirty

Description
Definition
setRenderDirty()
Code
204function RenderElement:setRenderDirty()
205 self.isRenderDirty = true
206end

setScene

Description
Definition
setScene()
Code
102function RenderElement:setScene(filename)
103 if self.scene ~= nil then
104 delete(self.scene)
105 end
106
107 -- Mark the pending i3d load as cancelled
108 if self.loadContext ~= nil then
109 self.loadContext.cancel = true
110 self.loadContext = nil
111 end
112
113 self.isLoading = true
114 self.filename = filename
115
116 self.loadContext = { cancel=false }
117 streamI3DFile(filename, "setSceneFinished", self, self.loadContext, false, false, false)
118end

setSceneFinished

Description
Definition
setSceneFinished()
Code
122function RenderElement:setSceneFinished(id, context)
123 if context.cancel then
124 -- Delete the loaded scene when it was cancelled in the meantime
125 if id ~= 0 then
126 delete(id)
127 end
128 elseif id == 0 then
129 print("ERROR: Failed to load character creation scene from '" .. tostring(self.filename) .. "'")
130 else
131 self.isLoading = false
132 self.scene = id
133
134 link(getRootNode(), id)
135
136 -- The overlay is bound to the scene, so we need to recreate the overlay
137 self:createOverlay()
138 end
139end

update

Description
Definition
update()
Code
171function RenderElement:update(dt)
172 RenderElement:superClass().update(self, dt)
173
174 if self.isRenderDirty and self.overlay ~= 0 then
175 updateRenderOverlay(self.overlay)
176 self.isRenderDirty = false
177 end
178end