File: CastleSceneCore.html

package info (click to toggle)
castle-game-engine 5.2.0-3
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 185,428 kB
  • sloc: pascal: 260,781; cpp: 1,363; objc: 713; makefile: 537; xml: 496; sh: 480; php: 4
file content (387 lines) | stat: -rw-r--r-- 25,050 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>Castle Game Engine: CastleSceneCore</title>
<meta name="generator" content="PasDoc 0.13.0">
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="StyleSheet" type="text/css" href="pasdoc.css">
</head>
<body>
<table class="container"><tr><td class="navigation">
<h2>Castle Game Engine</h2><p><a href="introduction.html" class="navigation">Introduction</a></p><p><a href="AllUnits.html" class="navigation">Units</a></p><p><a href="ClassHierarchy.html" class="navigation">Class Hierarchy</a></p><p><a href="AllClasses.html" class="navigation">Classes, Interfaces, Objects and Records</a></p><p><a href="AllTypes.html" class="navigation">Types</a></p><p><a href="AllVariables.html" class="navigation">Variables</a></p><p><a href="AllConstants.html" class="navigation">Constants</a></p><p><a href="AllFunctions.html" class="navigation">Functions and Procedures</a></p><p><a href="AllIdentifiers.html" class="navigation">Identifiers</a></p></td><td class="content">
<h1 class="unit">Unit CastleSceneCore</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Uses">Uses</a></td><td><a class="section" href="#PasDoc-Classes">Classes, Interfaces, Objects and Records</a></td><td>Functions and Procedures</td><td><a class="section" href="#PasDoc-Types">Types</a></td><td>Constants</td><td><a class="section" href="#PasDoc-Variables">Variables</a></td></tr></table>
<a name="PasDoc-Description"></a><h2 class="description">Description</h2>
<p>
3D scenes (<a class="normal" href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>).</p>
<a name="PasDoc-Uses"></a><h2 class="uses">Uses</h2>
<ul class="useslist"><li>SysUtils</li><li>Classes</li><li><a  href="CastleVectors.html">CastleVectors</a></li><li><a  href="CastleBoxes.html">CastleBoxes</a></li><li><a  href="CastleTriangles.html">CastleTriangles</a></li><li><a  href="X3DFields.html">X3DFields</a></li><li><a  href="X3DNodes.html">X3DNodes</a></li><li><a  href="CastleClassUtils.html">CastleClassUtils</a></li><li><a  href="CastleUtils.html">CastleUtils</a></li><li><a  href="CastleShapes.html">CastleShapes</a></li><li><a  href="CastleTriangleOctree.html">CastleTriangleOctree</a></li><li><a  href="CastleProgress.html">CastleProgress</a></li><li><a  href="CastleOctree.html">CastleOctree</a></li><li><a  href="CastleShapeOctree.html">CastleShapeOctree</a></li><li><a  href="CastleKeysMouse.html">CastleKeysMouse</a></li><li><a  href="X3DTime.html">X3DTime</a></li><li><a  href="CastleCameras.html">CastleCameras</a></li><li><a  href="X3DTriangles.html">X3DTriangles</a></li><li>Contnrs</li><li><a  href="CastleRenderingCamera.html">CastleRenderingCamera</a></li><li><a  href="Castle3D.html">Castle3D</a></li><li><a  href="X3DShadowMaps.html">X3DShadowMaps</a></li><li>FGL</li><li><a  href="CastleGenericLists.html">CastleGenericLists</a></li><li><a  href="CastleRays.html">CastleRays</a></li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Classes"></a><h3 class="cio">Classes, Interfaces, Objects and Records</h3>
<table class="classestable wide_list">
<tr class="listheader">
<th class="itemname">Name</th>
<th class="itemdesc">Description</th>
</tr>
<tr class="list">
<td class="itemname">record&nbsp;<a class="bold" href="CastleSceneCore.TManifoldEdge.html"><code>TManifoldEdge</code></a></td>
<td class="itemdesc">Scene edge that is between exactly two triangles.</td>
</tr>
<tr class="list2">
<td class="itemname">record&nbsp;<a class="bold" href="CastleSceneCore.TBorderEdge.html"><code>TBorderEdge</code></a></td>
<td class="itemdesc">Scene edge that has one neighbor, i.e.</td>
</tr>
<tr class="list">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TX3DBindableStack.html"><code>TX3DBindableStack</code></a></td>
<td class="itemdesc">Stack of bindable nodes (only the top, bound, node is used for rendering/navigation).</td>
</tr>
<tr class="list2">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TBackgroundStack.html"><code>TBackgroundStack</code></a></td>
<td class="itemdesc">&nbsp;</td>
</tr>
<tr class="list">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TFogStack.html"><code>TFogStack</code></a></td>
<td class="itemdesc">&nbsp;</td>
</tr>
<tr class="list2">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TNavigationInfoStack.html"><code>TNavigationInfoStack</code></a></td>
<td class="itemdesc">&nbsp;</td>
</tr>
<tr class="list">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TViewpointStack.html"><code>TViewpointStack</code></a></td>
<td class="itemdesc">&nbsp;</td>
</tr>
<tr class="list2">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TTransformInstancesList.html"><code>TTransformInstancesList</code></a></td>
<td class="itemdesc">List of transform nodes (<a class="normal" href="X3DNodes.ITransformNode.html">ITransformNode</a>), used to extract <a class="normal" href="CastleShapes.html#TShapeTreeList">TShapeTreeList</a> for this node.</td>
</tr>
<tr class="list">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TTimeDependentHandlerList.html"><code>TTimeDependentHandlerList</code></a></td>
<td class="itemdesc">&nbsp;</td>
</tr>
<tr class="list2">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TTrianglesShadowCastersList.html"><code>TTrianglesShadowCastersList</code></a></td>
<td class="itemdesc">Triangles array for shadow casting object.</td>
</tr>
<tr class="list">
<td class="itemname">Class&nbsp;<a class="bold" href="CastleSceneCore.TCastleSceneCore.html"><code>TCastleSceneCore</code></a></td>
<td class="itemdesc">3D scene processing (except rendering, for which see <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a>).</td>
</tr>
</table>
<a name="PasDoc-Types"></a><h3 class="summary">Types</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TTriangle3SingleList">TTriangle3SingleList</a></b> = specialize <a  href="CastleGenericLists.TGenericStructList.html">TGenericStructList</a>&lt;<a  href="CastleTriangles.html#TTriangle3Single">TTriangle3Single</a>&gt;;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#PManifoldEdge">PManifoldEdge</a></b> = &circ;<a  href="CastleSceneCore.TManifoldEdge.html">TManifoldEdge</a>;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TManifoldEdgeList">TManifoldEdgeList</a></b> = specialize <a  href="CastleGenericLists.TGenericStructList.html">TGenericStructList</a>&lt;<a  href="CastleSceneCore.TManifoldEdge.html">TManifoldEdge</a>&gt;;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#PBorderEdge">PBorderEdge</a></b> = &circ;<a  href="CastleSceneCore.TBorderEdge.html">TBorderEdge</a>;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TBorderEdgeList">TBorderEdgeList</a></b> = specialize <a  href="CastleGenericLists.TGenericStructList.html">TGenericStructList</a>&lt;<a  href="CastleSceneCore.TBorderEdge.html">TBorderEdge</a>&gt;;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TSceneFreeResource">TSceneFreeResource</a></b> = (...);</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TSceneFreeResources">TSceneFreeResources</a></b> = set of <a  href="CastleSceneCore.html#TSceneFreeResource">TSceneFreeResource</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TSceneNotification">TSceneNotification</a></b> = procedure (Scene: <a  href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>) of object;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TSceneGeometryChanged">TSceneGeometryChanged</a></b> = procedure (Scene: <a  href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>; const SomeLocalGeometryChanged: boolean; OnlyShapeChanged: <a  href="CastleShapes.TShape.html">TShape</a>) of object;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#PGeneratedTexture">PGeneratedTexture</a></b> = &circ;TGeneratedTexture;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TCompiledScriptHandler">TCompiledScriptHandler</a></b> = procedure ( Value: <a  href="X3DFields.TX3DField.html">TX3DField</a>; const Time: <a  href="X3DTime.TX3DTime.html">TX3DTime</a>) of object;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#PCompiledScriptHandlerInfo">PCompiledScriptHandlerInfo</a></b> = &circ;TCompiledScriptHandlerInfo;</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TCompiledScriptHandlerInfoList">TCompiledScriptHandlerInfoList</a></b> = specialize <a  href="CastleGenericLists.TGenericStructList.html">TGenericStructList</a>&lt;TCompiledScriptHandlerInfo&gt;;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TSceneSpatialStructure">TSceneSpatialStructure</a></b> = (...);</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TSceneSpatialStructures">TSceneSpatialStructures</a></b> = set of <a  href="CastleSceneCore.html#TSceneSpatialStructure">TSceneSpatialStructure</a>;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TGeometryChange">TGeometryChange</a></b> = (...);</code></td>
</tr>
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#TPlayAnimationLooping">TPlayAnimationLooping</a></b> = (...);</code></td>
</tr>
</table>
<a name="PasDoc-Variables"></a><h3 class="summary">Variables</h3>
<table class="summary wide_list">
<tr class="list">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#LogChanges">LogChanges</a></b>: boolean = false;</code></td>
</tr>
<tr class="list2">
<td class="itemcode"><code><b><a  href="CastleSceneCore.html#OptimizeExtensiveTransformations">OptimizeExtensiveTransformations</a></b>: boolean = false;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Types</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TTriangle3SingleList"></a><code><b>TTriangle3SingleList</b> = specialize <a  href="CastleGenericLists.TGenericStructList.html">TGenericStructList</a>&lt;<a  href="CastleTriangles.html#TTriangle3Single">TTriangle3Single</a>&gt;;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="PManifoldEdge"></a><code><b>PManifoldEdge</b> = &circ;<a  href="CastleSceneCore.TManifoldEdge.html">TManifoldEdge</a>;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TManifoldEdgeList"></a><code><b>TManifoldEdgeList</b> = specialize <a  href="CastleGenericLists.TGenericStructList.html">TGenericStructList</a>&lt;<a  href="CastleSceneCore.TManifoldEdge.html">TManifoldEdge</a>&gt;;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="PBorderEdge"></a><code><b>PBorderEdge</b> = &circ;<a  href="CastleSceneCore.TBorderEdge.html">TBorderEdge</a>;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TBorderEdgeList"></a><code><b>TBorderEdgeList</b> = specialize <a  href="CastleGenericLists.TGenericStructList.html">TGenericStructList</a>&lt;<a  href="CastleSceneCore.TBorderEdge.html">TBorderEdge</a>&gt;;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TSceneFreeResource"></a><code><b>TSceneFreeResource</b> = (...);</code></td>
</tr>
<tr><td colspan="1">
<p>
These are various features that may be freed by <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#FreeResources">TCastleSceneCore.FreeResources</a>.

<p><i>Warning</i>: This is for experienced usage of <a class="normal" href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>. Everything is explained in detail below, but still &mdash; if you have some doubts, or you just don't observe any memory shortage in your program, it's probably best to not use <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#FreeResources">TCastleSceneCore.FreeResources</a>.

<p></p>

<ul class="paragraph_spacing">
  <li><p>For frTextureDataInNodes, frBackgroundImageInNodes and TrianglesList, if you will free them unnecessarily (i.e. you will use it after you freed it), it will be automatically recreated on next use. So everything will work correctly, but you will experience unnecessary slowdown if we will need to recreate exactly the same resource over and over again.</p></li>
  <li><p>For frTextureDataInNodes and frBackgroundImageInNodes note that freeing these resources too eagerly may make texture cache (see TextureImages) less effective. In normal circumstances, if you will use the same cache instance throughout the program, loaded images are reused. If you free frTextureDataInNodes too early, you may remove them from the cache too early, and lose a chance to reuse them. So you may cause unnecessary slowdown of preparing models, e.g. inside PrepareResources.</p></li>
</ul>

<p></p>
<h6 class="description_section">Values</h6>
<ul>
<li>
frTextureDataInNodes: Unloads the texture images/videos allocated in texture nodes.

<p>It's useful if you know that you already prepared everything that needed the texture images, and you will not need texture images later. For <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a> this means that you use Optimization method other than roNone, and you already did PrepareResources (so textures are already loaded to OpenGL), and your code will not access TextureImage / TextureVideo anymore. This is commonly <code>True</code> for various games.

<p>Then you can call this to free some resources.

<p>Note that if you made an accident and you will use some TextureImage or TextureVideo after FreeResources, then you will get no crash, but texture image will be simply reloaded. So you may experience slowdown if you inappropriately use this feature.</li>
<li>
frBackgroundImageInNodes: Unloads the background images allocated in VRML/X3D Background nodes. The same comments as for frTextureDataInNodes apply.</li>
<li>
frTrianglesListShadowCasters: Free triangle list created by TrianglesListShadowCasters call. This list is also implicitly created by ManifoldEdges or BorderEdges.</li>
<li>
frManifoldAndBorderEdges: Free edges lists in ManifoldEdges and BorderEdges.

<p>Frees memory, but next call to ManifoldEdges and BorderEdges will need to calculate them again (or you will need to call <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ShareManifoldAndBorderEdges">TCastleSceneCore.ShareManifoldAndBorderEdges</a> again). Note that using this scene as shadow caster for shadow volumes algorithm requires ManifoldEdges and BorderEdges.</li>
</ul>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TSceneFreeResources"></a><code><b>TSceneFreeResources</b> = set of <a  href="CastleSceneCore.html#TSceneFreeResource">TSceneFreeResource</a>;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TSceneNotification"></a><code><b>TSceneNotification</b> = procedure (Scene: <a  href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>) of object;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TSceneGeometryChanged"></a><code><b>TSceneGeometryChanged</b> = procedure (Scene: <a  href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>; const SomeLocalGeometryChanged: boolean; OnlyShapeChanged: <a  href="CastleShapes.TShape.html">TShape</a>) of object;</code></td>
</tr>
<tr><td colspan="1">
<p>
Callback for <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#OnGeometryChanged">TCastleSceneCore.OnGeometryChanged</a>.

<p>SomeLocalGeometryChanged means that octree, triangles, bounding volumes local to some shape changed (not just e.g. shape transformation).

<p>OnlyShapeChanged is meaningful when SomeLocalGeometryChanged = <code>True</code>. If nil, it indicates that only the given shape geometry changed. If not nil, assume that every shape's geometry potentially changed.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="PGeneratedTexture"></a><code><b>PGeneratedTexture</b> = &circ;TGeneratedTexture;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TCompiledScriptHandler"></a><code><b>TCompiledScriptHandler</b> = procedure ( Value: <a  href="X3DFields.TX3DField.html">TX3DField</a>; const Time: <a  href="X3DTime.TX3DTime.html">TX3DTime</a>) of object;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="PCompiledScriptHandlerInfo"></a><code><b>PCompiledScriptHandlerInfo</b> = &circ;TCompiledScriptHandlerInfo;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TCompiledScriptHandlerInfoList"></a><code><b>TCompiledScriptHandlerInfoList</b> = specialize <a  href="CastleGenericLists.TGenericStructList.html">TGenericStructList</a>&lt;TCompiledScriptHandlerInfo&gt;;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TSceneSpatialStructure"></a><code><b>TSceneSpatialStructure</b> = (...);</code></td>
</tr>
<tr><td colspan="1">
<p>
Possible spatial structure types that may be managed by <a class="normal" href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>, see <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#Spatial">TCastleSceneCore.Spatial</a>.</p>
<h6 class="description_section">Values</h6>
<ul>
<li>
ssRendering: Create and keep current the <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#OctreeRendering">TCastleSceneCore.OctreeRendering</a>. This is a dynamic octree containing all visible shapes.</li>
<li>
ssDynamicCollisions: Create and keep current the <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#OctreeDynamicCollisions">TCastleSceneCore.OctreeDynamicCollisions</a>. This is a dynamic octree containing all collidable items.</li>
<li>
ssVisibleTriangles: Create the <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#OctreeVisibleTriangles">TCastleSceneCore.OctreeVisibleTriangles</a>. This is an octree containing all visible triangles, suitable only for scenes that stay static.</li>
<li>
ssCollidableTriangles: Create the <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#OctreeCollidableTriangles">TCastleSceneCore.OctreeCollidableTriangles</a>. This is an octree containing all collidable triangles, suitable only for scenes that stay static.</li>
</ul>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TSceneSpatialStructures"></a><code><b>TSceneSpatialStructures</b> = set of <a  href="CastleSceneCore.html#TSceneSpatialStructure">TSceneSpatialStructure</a>;</code></td>
</tr>
<tr><td colspan="1">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TGeometryChange"></a><code><b>TGeometryChange</b> = (...);</code></td>
</tr>
<tr><td colspan="1">
&nbsp;<h6 class="description_section">Values</h6>
<ul>
<li>
gcAll: Everything changed. All octrees must be rebuild, old State pointers may be invalid.

<p>Every ChangedAll call does this. ChangedAll must take into account that everything could change. Note that ChangedAll traverses the VRML/X3D graph again, recalculating State values... so the old States are not correct anymore. You have to rebuild the octree or your pointers will be bad.

<p>When DoGeometryChanged with gcAll is called, we know that ChangedAll called this, and every <a class="normal" href="CastleShapes.TShape.html">TShape</a> will be (or already is) destroyed and created new.</li>
<li>
gcCollidableTransformChanged: Transformation of some shape changed. </li>
<li>
gcVisibleTransformChanged: &nbsp;</li>
<li>
gcLocalGeometryChanged: Local geometry change happened (actual octree free is already done by TShape.LocalGeometryChanged, octree create will be done at next demand). We should update stuff at higher (<a class="normal" href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>) level accordingly.

<p>gcLocalGeometryChangedCoord means that coordinates changed. Compared to gcLocalGeometryChanged, this means that model edges structure remains the same (this is helpful e.g. to avoid recalculating Manifold/BorderEdges in parent scene).

<p>In this case, DoGeometryChanged parameter LocalGeometryShape is non-nil and indicated the (only) shape that changed.

<p></li>
<li>
gcLocalGeometryChangedCoord: &nbsp;</li>
<li>
gcActiveShapesChanged: What is considered &quot;active&quot; shapes changed. Like after Switch.whichChoice change.</li>
</ul>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="TPlayAnimationLooping"></a><code><b>TPlayAnimationLooping</b> = (...);</code></td>
</tr>
<tr><td colspan="1">
<p>
Looping mode to use with <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#PlayAnimation">TCastleSceneCore.PlayAnimation</a>.</p>
<h6 class="description_section">Values</h6>
<ul>
<li>
paDefault: Use current TimeSensor.FdLoop value to determine whether animation should loop. Suitable when X3D model already has sensible &quot;TimeSensor.loop&quot; values.</li>
<li>
paForceLooping: Force TimeSensor.FdLoop to be <code>True</code>, to force looping.</li>
<li>
paForceNotLooping: Force TimeSensor.FdLoop to be <code>False</code>, to force not looping.</li>
</ul>
</td></tr>
</table>
<h3 class="detail">Variables</h3>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="LogChanges"></a><code><b>LogChanges</b>: boolean = false;</code></td>
</tr>
<tr><td colspan="1">
<p>
Log changes to fields. This debugs what and why happens through <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ChangedField">TCastleSceneCore.ChangedField</a> method and friends, which is central to VRML/X3D dynamic changes and events engine.

<p>Meaningful only if you initialized log (see <a class="normal" href="CastleLog.html">CastleLog</a> unit) by <a class="normal" href="CastleLog.html#InitializeLog">InitializeLog</a> first.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="itemcode"><a name="OptimizeExtensiveTransformations"></a><code><b>OptimizeExtensiveTransformations</b>: boolean = false;</code></td>
</tr>
<tr><td colspan="1">
<p>
Set this to optimize animating transformations for scenes where you have many transformations (many Transform nodes), and many of them are animated at the same time. Often particularly effective for skeletal animations of characters, 3D and 2D (e.g. from Spine).</p>
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(["trackPageView"]);
  _paq.push(["enableLinkTracking"]);

  (function() {
    var u=(("https:" == document.location.protocol) ? "https" : "http") + "://michalis.ii.uni.wroc.pl/piwik-castle-engine/";
    _paq.push(["setTrackerUrl", u+"piwik.php"]);
    _paq.push(["setSiteId", "1"]);
    var d=document, g=d.createElement("script"), s=d.getElementsByTagName("script")[0]; g.type="text/javascript";
    g.defer=true; g.async=true; g.src=u+"piwik.js"; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Piwik Code -->

<noscript>
<!-- Piwik Image Tracker -->
<img src="http://michalis.ii.uni.wroc.pl/piwik-castle-engine/piwik.php?idsite=1&amp;rec=1" style="border:0" alt="" />
<!-- End Piwik -->
</noscript>
<hr noshade size="1"><span class="appinfo"><em>Generated by <a  href="http://pasdoc.sourceforge.net/">PasDoc 0.13.0</a> on 2015-06-15 04:43:11</em>
</span>
</td></tr></table></body></html>