Script v1.7.1.0
- AI
- Animals
- Contracts
- Debug
- Economy
- Effects
- Events
- Farms
- GUI
- AnimalScreen
- AnimationElement
- BitmapElement
- BoxLayoutElement
- BreadcrumbsElement
- ButtonElement
- ButtonOverlay
- ChatWindow
- CheckedOptionElement
- ClearElement
- ContextActionDisplay
- DialogElement
- FieldInfoDisplay
- FillLevelsDisplay
- FlowLayoutElement
- FocusManager
- FrameElement
- FrameReferenceElement
- GameInfoDisplay
- GamePausedDisplay
- Gui
- GuiDataSource
- GuiElement
- GuiMixin
- GuiOverlay
- GuiProfile
- GuiSoundPlayer
- GuiTopDownCamera
- GuiUtils
- HUDDisplayElement
- HUDElement
- HUDFrameElement
- HUDPopupMessage
- HUDTextDisplay
- IndexChangeSubjectMixin
- IndexStateElement
- InGameIcon
- IngameMap
- IngameMapElement
- InputGlyphElement
- InputHelpDisplay
- ListElement
- ListItemElement
- MapHotspot
- MapOverlayGenerator
- MixerWagonHUDExtension
- MultiTextOptionElement
- MultiValueTween
- Overlay
- PagingElement
- PlaySampleMixin
- RenderElement
- RoundStatusBar
- ScreenElement
- SettingsModel
- SideNotification
- SliderElement
- SpeakerDisplay
- SpeedMeterDisplay
- StableListElement
- StatusBar
- TabbedMenu
- TabbedMenuFrameElement
- TabbedMenuWithDetails
- TableElement
- TableHeaderElement
- TextElement
- TextInputElement
- TimerElement
- ToggleButtonElement
- TopNotification
- Tween
- TweenSequence
- VehicleHUDExtension
- VehicleSchemaDisplay
- VideoElement
- Handtools
- I3d
- Materials
- Misc
- Objects
- Placeables
- Player
- Shop
- Sounds
- Specializations
- Triggers
- Utils
- Vehicles
- Weather
Engine v1.7.1.0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- XML
- general
Foundation Reference
RenderElement
DescriptionRender display as an overlayParent
GuiElementXML Configuration Parameters
RenderElement#filename | string Path to the i3d to be rendered in the overlay |
RenderElement#cameraPath | string Node of the camera to be used to show the render |
RenderElement#superSamplingFactor | number [optional] Supersampling factor the render size should be increased with, to imitate anti-aliasing by supersampling |
Functions
- copyAttributes
- createOverlay
- createScene
- delete
- destroyScene
- draw
- getSceneRoot
- loadFromXML
- loadProfile
- new
- setRenderDirty
- setScene
- setSceneFinished
- update
copyAttributes
DescriptionDefinitioncopyAttributes()Code
66 | function 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 |
72 | end |
createOverlay
DescriptionDefinitioncreateOverlay()Code
143 | function 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 |
167 | end |
createScene
DescriptionCreate the scene and the overlay. Call destroyScene to clean up resources.Definition
createScene()Code
76 | function RenderElement:createScene() |
77 | self:setScene(self.filename) |
78 | end |
delete
DescriptionDefinitiondelete()Code
32 | function RenderElement:delete() |
33 | self:destroyScene() |
34 | |
35 | RenderElement:superClass().delete(self) |
36 | end |
destroyScene
DescriptionDestroy the scene and the overlay, cleaning up resources.Definition
destroyScene()Code
82 | function 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 |
98 | end |
draw
DescriptionDefinitiondraw()Code
182 | function 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) |
188 | end |
getSceneRoot
DescriptionDefinitiongetSceneRoot()Code
198 | function RenderElement:getSceneRoot() |
199 | return self.scene |
200 | end |
loadFromXML
DescriptionDefinitionloadFromXML()Code
40 | function 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") |
48 | end |
loadProfile
DescriptionDefinitionloadProfile()Code
52 | function 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 |
62 | end |
new
DescriptionDefinitionnew()Code
20 | function 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 |
28 | end |
setRenderDirty
DescriptionDefinitionsetRenderDirty()Code
204 | function RenderElement:setRenderDirty() |
205 | self.isRenderDirty = true |
206 | end |
setScene
DescriptionDefinitionsetScene()Code
102 | function 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) |
118 | end |
setSceneFinished
DescriptionDefinitionsetSceneFinished()Code
122 | function 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 |
139 | end |
update
DescriptionDefinitionupdate()Code
171 | function 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 |
178 | end |