File: X3DNodes.TX3DNode.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 (1538 lines) | stat: -rw-r--r-- 109,772 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
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
<!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: X3DNodes: Class TX3DNode</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">
<a name="TX3DNode"></a><h1 class="cio">Class TX3DNode</h1>
<table class="sections wide_list">
<tr>
<td><a class="section" href="#PasDoc-Description">Description</a></td><td><a class="section" href="#PasDoc-Hierarchy">Hierarchy</a></td><td><a class="section" href="#PasDoc-Fields">Fields</a></td><td><a class="section" href="#PasDoc-Methods">Methods</a></td><td><a class="section" href="#PasDoc-Properties">Properties</a></td></tr></table>
<a name="PasDoc-Description"></a><h2 class="unit">Unit</h2>
<p class="unitlink">
<a  href="X3DNodes.html">X3DNodes</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type TX3DNode = class(<a class="normal" href="X3DFields.TX3DFileItem.html">TX3DFileItem</a>, <a class="normal" href="X3DNodes.IX3DNode.html">IX3DNode</a>)</code></p>
<h2 class="description">Description</h2>
<p>
X3D node. Every VRML/X3D node class descends from this.</p>
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
<ul class="hierarchy"><li class="ancestor">TPersistent</li>
<li class="ancestor"><a class="normal" href="CastleInterfaces.TNonRefCountedInterfacedPersistent.html">TNonRefCountedInterfacedPersistent</a></li>
<li class="ancestor"><a class="normal" href="X3DFields.TX3DFileItem.html">TX3DFileItem</a></li>
<li class="thisitem">TX3DNode</li></ul><h2 class="overview">Overview</h2>
<a name="PasDoc-Fields"></a><h3 class="summary">Fields</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code><b><a  href="X3DNodes.TX3DNode.html#VRML1ChildrenAllowed">VRML1ChildrenAllowed</a></b>: boolean;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code><b><a  href="X3DNodes.TX3DNode.html#VRML1ChildrenParsingAllowed">VRML1ChildrenParsingAllowed</a></b>: boolean;</code></td>
</tr>
</table>
<a name="PasDoc-Methods"></a><h3 class="summary">Methods</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#DeepCopyCore">DeepCopyCore</a></b>(CopyState: <a  href="X3DNodes.TX3DNodeDeepCopyState.html">TX3DNodeDeepCopyState</a>): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#DeepCopyCreate">DeepCopyCreate</a></b>(CopyState: <a  href="X3DNodes.TX3DNodeDeepCopyState.html">TX3DNodeDeepCopyState</a>): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; virtual;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>class function <b><a  href="X3DNodes.TX3DNode.html#VRML1ChildrenSaveToStream">VRML1ChildrenSaveToStream</a></b>: boolean; virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#DirectEnumerateActive">DirectEnumerateActive</a></b>( Func: <a  href="X3DNodes.html#TEnumerateChildrenFunction">TEnumerateChildrenFunction</a>); virtual;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#DirectEnumerateActiveForTraverse">DirectEnumerateActiveForTraverse</a></b>( Func: <a  href="X3DNodes.html#TEnumerateChildrenFunction">TEnumerateChildrenFunction</a>; StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>); virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#DirectEnumerateAll">DirectEnumerateAll</a></b>( Func: <a  href="X3DNodes.html#TEnumerateChildrenFunction">TEnumerateChildrenFunction</a>);</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#DirectEnumerate">DirectEnumerate</a></b>( Func: <a  href="X3DNodes.html#TEnumerateChildrenFunction">TEnumerateChildrenFunction</a>; OnlyActive: boolean);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#BeforeTraverse">BeforeTraverse</a></b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>); virtual;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#MiddleTraverse">MiddleTraverse</a></b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>); virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#AfterTraverse">AfterTraverse</a></b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>); virtual;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#ParseNodeBodyElement">ParseNodeBodyElement</a></b>(Lexer: <a  href="X3DLexer.TX3DLexer.html">TX3DLexer</a>; Reader: <a  href="X3DNodes.TX3DReaderNames.html">TX3DReaderNames</a>; const APositionInParent: Integer): boolean; virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#ParseAfter">ParseAfter</a></b>(Reader: <a  href="X3DNodes.TX3DReaderNames.html">TX3DReaderNames</a>); virtual;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#CreateNode">CreateNode</a></b>; virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#FieldOrEvent">FieldOrEvent</a></b>(const Name: string): <a  href="X3DFields.TX3DFieldOrEvent.html">TX3DFieldOrEvent</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#AnyEvent">AnyEvent</a></b>(const Name: string): <a  href="X3DFields.TX3DEvent.html">TX3DEvent</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#VRML1ChildrenCount">VRML1ChildrenCount</a></b>: integer;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#VRML1ChildAdd">VRML1ChildAdd</a></b>(Index: Integer; child: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>); overload;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#VRML1ChildAdd">VRML1ChildAdd</a></b>(child: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>); overload;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#VRML1ChildRemove">VRML1ChildRemove</a></b>(i: integer);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#VRML1ChildrenClear">VRML1ChildrenClear</a></b>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#VRML1ChildExtract">VRML1ChildExtract</a></b>(I: Integer): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#VRML1ParentsCount">VRML1ParentsCount</a></b>: integer;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#ParentFieldsCount">ParentFieldsCount</a></b>: Integer;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#FreeRemovingFromAllParents">FreeRemovingFromAllParents</a></b>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#FreeIfUnused">FreeIfUnused</a></b>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#KeepExistingBegin">KeepExistingBegin</a></b>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#KeepExistingEnd">KeepExistingEnd</a></b>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#PathFromBaseUrl">PathFromBaseUrl</a></b>(const RelativePath: string): string;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#Parse">Parse</a></b>(Lexer: <a  href="X3DLexer.TX3DLexer.html">TX3DLexer</a>; Reader: <a  href="X3DNodes.TX3DReaderNames.html">TX3DReaderNames</a>); virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#ParseXML">ParseXML</a></b>(Element: TDOMElement; Reader: <a  href="X3DNodes.TX3DReaderNames.html">TX3DReaderNames</a>);</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>constructor <b><a  href="X3DNodes.TX3DNode.html#Create">Create</a></b>(const ANodeName: string = ''; const ABaseUrl: string = ''); virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>destructor <b><a  href="X3DNodes.TX3DNode.html#Destroy">Destroy</a></b>; override;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#NodeTypeName">NodeTypeName</a></b>: string; virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>class function <b><a  href="X3DNodes.TX3DNode.html#ClassNodeTypeName">ClassNodeTypeName</a></b>: string; virtual;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#Traverse">Traverse</a></b>( NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; TraversingFunc: <a  href="X3DNodes.html#TTraversingFunc">TTraversingFunc</a>);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#TraverseInternal">TraverseInternal</a></b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>; NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; TraversingFunc: <a  href="X3DNodes.html#TTraversingFunc">TTraversingFunc</a>; ParentInfo: <a  href="X3DNodes.html#PTraversingInfo">PTraversingInfo</a>);</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#TraverseIntoChildren">TraverseIntoChildren</a></b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>; NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; TraversingFunc: <a  href="X3DNodes.html#TTraversingFunc">TTraversingFunc</a>; ParentInfo: <a  href="X3DNodes.html#PTraversingInfo">PTraversingInfo</a>);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#EnumerateNodes">EnumerateNodes</a></b>( proc: <a  href="X3DNodes.html#TX3DNodeProc">TX3DNodeProc</a>; OnlyActive: boolean); overload;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#EnumerateNodes">EnumerateNodes</a></b>(nodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; proc: <a  href="X3DNodes.html#TX3DNodeProc">TX3DNodeProc</a>; OnlyActive: boolean); overload;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#EnumerateNodes">EnumerateNodes</a></b>(nodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; const SeekNodeName: string; proc: <a  href="X3DNodes.html#TX3DNodeProc">TX3DNodeProc</a>; OnlyActive: boolean); overload;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#TryFindNodeByName">TryFindNodeByName</a></b>(FindClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; const FindName: string; OnlyActive: boolean): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#FindNodeByName">FindNodeByName</a></b>(FindClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; const FindName: string; OnlyActive: boolean): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#TryFindNode">TryFindNode</a></b>(FindClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; OnlyActive: boolean): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#FindNode">FindNode</a></b>(FindClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; OnlyActive: boolean): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#TryFindNodeState">TryFindNodeState</a></b>( NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; out Node: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; out State: <a  href="X3DNodes.TX3DGraphTraverseState.html">TX3DGraphTraverseState</a>): boolean;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#TryFindNodeTransform">TryFindNodeTransform</a></b>( NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; out Node: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; out Transform: <a  href="CastleVectors.html#TMatrix4Single">TMatrix4Single</a>; out TransformScale: Single): boolean;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#TryFindParentByName">TryFindParentByName</a></b>(const FindName: string): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#FindParentByName">FindParentByName</a></b>(const FindName: string): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#HasParent">HasParent</a></b>(Node: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>): boolean;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#TryFindDirectParentByName">TryFindDirectParentByName</a></b>(const FindName: string): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#IsNodePresent">IsNodePresent</a></b>(Node: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; OnlyActive: boolean): boolean;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#NodesCount">NodesCount</a></b>(NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; CountOnlyActiveNodes: boolean): integer;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#SaveToStream">SaveToStream</a></b>(Writer: <a  href="X3DFields.TX3DWriter.html">TX3DWriter</a>); override;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>class function <b><a  href="X3DNodes.TX3DNode.html#VRML1StateNode">VRML1StateNode</a></b>(out StateNode: <a  href="X3DNodes.html#TVRML1StateNode">TVRML1StateNode</a>): boolean;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>class function <b><a  href="X3DNodes.TX3DNode.html#ForVRMLVersion">ForVRMLVersion</a></b>(const Version: <a  href="X3DNodes.html#TX3DVersion">TX3DVersion</a>): boolean; virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#EnumerateReplaceChildren">EnumerateReplaceChildren</a></b>( Func: <a  href="X3DNodes.html#TEnumerateReplaceNodesFunction">TEnumerateReplaceNodesFunction</a>): Cardinal;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#RemoveChildrenWithMatchingName">RemoveChildrenWithMatchingName</a></b>( const Wildcard: string; IgnoreCase: Boolean): Cardinal;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#DeepCopy">DeepCopy</a></b>: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>class function <b><a  href="X3DNodes.TX3DNode.html#URNMatching">URNMatching</a></b>(const URN: string): boolean; virtual;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#PostAddInterfaceDeclaration">PostAddInterfaceDeclaration</a></b>(IDecl: <a  href="X3DNodes.TX3DInterfaceDeclaration.html">TX3DInterfaceDeclaration</a>); virtual;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>procedure <b><a  href="X3DNodes.TX3DNode.html#AddCustomField">AddCustomField</a></b>(Field: <a  href="X3DFields.TX3DField.html">TX3DField</a>; const Exposed: boolean = false);</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>function <b><a  href="X3DNodes.TX3DNode.html#NiceName">NiceName</a></b>: string;</code></td>
</tr>
</table>
<a name="PasDoc-Properties"></a><h3 class="summary">Properties</h3>
<table class="summary wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#CDataField">CDataField</a></b>: <a  href="X3DFields.TMFString.html">TMFString</a> read FCDataField write FCDataField;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#Fields">Fields</a></b>: <a  href="X3DFields.TX3DFieldList.html">TX3DFieldList</a> read FFields;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#Events">Events</a></b>: <a  href="X3DFields.TX3DEventList.html">TX3DEventList</a> read FEvents;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#VRML1Children">VRML1Children</a></b> [i:integer]: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a> read GetVRML1Child write SetVRML1Child;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a></b> [i:integer]: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a> read GetVRML1Parent;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#ParentFields">ParentFields</a></b>[Index:Integer]: <a  href="X3DFields.TX3DField.html">TX3DField</a> read GetParentFieldsItem;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#ParentFieldsNode">ParentFieldsNode</a></b>[Index:Integer]: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>
      read GetParentFieldsNodeItem;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#KeepExisting">KeepExisting</a></b>: Cardinal read FKeepExisting write FKeepExisting;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#NodeName">NodeName</a></b>: string read fNodeName write FNodeName;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#BaseUrl">BaseUrl</a></b>: string read FBaseUrl write FBaseUrl;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#WWWBasePath">WWWBasePath</a></b>: string read FBaseUrl write FBaseUrl; deprecated;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#Prototypes">Prototypes</a></b>: <a  href="X3DNodes.TX3DPrototypeBaseList.html">TX3DPrototypeBaseList</a> read FPrototypes;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#Routes">Routes</a></b>: <a  href="X3DNodes.TX3DRouteList.html">TX3DRouteList</a> read FRoutes;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#ImportsList">ImportsList</a></b>: <a  href="X3DFields.TX3DFileItemList.html">TX3DFileItemList</a> read FImportsList;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#ExportsList">ExportsList</a></b>: <a  href="X3DFields.TX3DFileItemList.html">TX3DFileItemList</a> read FExportsList;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#PrototypeInstance">PrototypeInstance</a></b>: boolean read FPrototypeInstance;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#PrototypeInstanceSourceNode">PrototypeInstanceSourceNode</a></b>: <a  href="X3DNodes.TX3DPrototypeNode.html">TX3DPrototypeNode</a>
      read FPrototypeInstanceSourceNode;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#PrototypeInstanceHelpers">PrototypeInstanceHelpers</a></b>: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a> read FPrototypeInstanceHelpers;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#DefaultContainerField">DefaultContainerField</a></b>: string
      read FDefaultContainerField write FDefaultContainerField;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#HasInterfaceDeclarations">HasInterfaceDeclarations</a></b>: <a  href="X3DNodes.html#TX3DAccessTypes">TX3DAccessTypes</a>
      read FHasInterfaceDeclarations
      write SetHasInterfaceDeclarations default [];</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#InterfaceDeclarations">InterfaceDeclarations</a></b>: <a  href="X3DNodes.TX3DInterfaceDeclarationList.html">TX3DInterfaceDeclarationList</a>
      read FInterfaceDeclarations;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#DestructionNotifications">DestructionNotifications</a></b>: <a  href="X3DNodes.TNodeDestructionNotificationList.html">TNodeDestructionNotificationList</a>
      read FDestructionNotifications;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#Scene">Scene</a></b>: <a  href="X3DNodes.TX3DEventsEngine.html">TX3DEventsEngine</a> read FScene write FScene;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="X3DNodes.TX3DNode.html#ShapeTrees">ShapeTrees</a></b>: TObject read FShapeTrees write FShapeTrees;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<h3 class="detail">Fields</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="VRML1ChildrenAllowed"></a><code><b>VRML1ChildrenAllowed</b>: boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Are VRML 1.0 children allowed. This condition is checked in <a class="normal" href="X3DNodes.TX3DNode.html#VRML1ChildAdd">VRML1ChildAdd</a>, so it's strictly impossible to add a node that is not allowed.

<p>Note that in some special cases <code>VRML1ChildrenAllowed</code> and <a class="normal" href="X3DNodes.TX3DNode.html#VRML1ChildrenParsingAllowed">VRML1ChildrenParsingAllowed</a> values may be changed during object lifetime. Currently, this may concern <a class="normal" href="X3DNodes.TX3DUnknownNode.html">TX3DUnknownNode</a>.

<p>Default <code>False</code>.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="VRML1ChildrenParsingAllowed"></a><code><b>VRML1ChildrenParsingAllowed</b>: boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
VRML 1.0 children allowed to be added during parsing. This is used only by *Inline nodes for now, that do not allow reading children during parsing but may get new children in memory. So their <code>VRML1ChildrenParsingAllowed</code> must be empty, but <a class="normal" href="X3DNodes.TX3DNode.html#VRML1ChildrenAllowed">VRML1ChildrenAllowed</a> must allow all.

<p>When <a class="normal" href="X3DNodes.TX3DNode.html#VRML1ChildrenAllowed">VRML1ChildrenAllowed</a> is <code>False</code> then <code>VRML1ChildrenParsingAllowed</code> should also be <code>False</code>.

<p>Default <code>False</code>.</p>
</td></tr>
</table>
<h3 class="detail">Methods</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="DeepCopyCore"></a><code>function <b>DeepCopyCore</b>(CopyState: <a  href="X3DNodes.TX3DNodeDeepCopyState.html">TX3DNodeDeepCopyState</a>): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Does actual <a class="normal" href="X3DNodes.TX3DNode.html#DeepCopy">DeepCopy</a> work. You can override this to copy some more properties for descendants.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="DeepCopyCreate"></a><code>function <b>DeepCopyCreate</b>(CopyState: <a  href="X3DNodes.TX3DNodeDeepCopyState.html">TX3DNodeDeepCopyState</a>): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
This should be a mere call to constructor of your own class.

<p>In <a class="normal" href="X3DNodes.TX3DNode.html">TX3DNode</a>, this simply calls default virtual constructor, which is Ok for all normal nodes. But we have some special nodes, like <a class="normal" href="X3DNodes.TX3DPrototypeNode.html">TX3DPrototypeNode</a> or <a class="normal" href="X3DNodes.TX3DUnknownNode.html">TX3DUnknownNode</a>, that simply cannot be created by default constructor. They need to override this.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="VRML1ChildrenSaveToStream"></a><code>class function <b>VRML1ChildrenSaveToStream</b>: boolean; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Should <a class="normal" href="X3DNodes.TX3DNode.html#SaveToStream">SaveToStream</a> save our <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Children">VRML1Children</a>. In this class default implementation returns <code>True</code>, this is what you will want in 99% of cases. It's useful to set this to false if you use <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Children">VRML1Children</a> internally, e.g. *Inline nodes.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="DirectEnumerateActive"></a><code>procedure <b>DirectEnumerateActive</b>( Func: <a  href="X3DNodes.html#TEnumerateChildrenFunction">TEnumerateChildrenFunction</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Enumerate all active child nodes of given node.

<p>&quot;Active nodes&quot; are the ones affecting current VRML graph look or collisions, e.g. from Switch node only one child will be enumerated. See <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a> for more precise definition.

<p>&quot;Direct&quot; means that this enumerates only direct descendants, i.e. this is not recursive. See methods like Traverse or <a class="normal" href="X3DNodes.TX3DNode.html#EnumerateNodes">EnumerateNodes</a> if you want recursive behavior.

<p>This can enumerate both <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Children">VRML1Children</a> nodes nodes within <a class="normal" href="X3DNodes.TSFNode.html">TSFNode</a> and <a class="normal" href="X3DNodes.TMFNode.html">TMFNode</a> fields.

<p>Default implementation in this class returns all Children nodes of VRML 1.0. If you need to remove some children for VRML 1.0 (e.g. for Switch or LOD nodes) or add some children for VRML 2.0 you have to override this. You're not required to call inherited when overriding this.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="DirectEnumerateActiveForTraverse"></a><code>procedure <b>DirectEnumerateActiveForTraverse</b>( Func: <a  href="X3DNodes.html#TEnumerateChildrenFunction">TEnumerateChildrenFunction</a>; StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Enumerate all active child nodes of given node, and may additionally modify StateStack. It's used by Traverse.

<p>Default implementation in this class simply calls <a class="normal" href="X3DNodes.TX3DNode.html#DirectEnumerateActive">DirectEnumerateActive</a>, ignoring StateStack, and this is suitable for 99% of nodes. However, for some special nodes (only Collision node for now), they have to modify state during traversing into various children, and then they can override this.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="DirectEnumerateAll"></a><code>procedure <b>DirectEnumerateAll</b>( Func: <a  href="X3DNodes.html#TEnumerateChildrenFunction">TEnumerateChildrenFunction</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Simply enumerate all direct descendant nodes. That is, all children in VRML 1.0 style and all nodes in SFNode and MFNode fields. This includes prototype stuff, if this node is expanded from prototype: <a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceSourceNode">PrototypeInstanceSourceNode</a> and <a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceHelpers">PrototypeInstanceHelpers</a>.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="DirectEnumerate"></a><code>procedure <b>DirectEnumerate</b>( Func: <a  href="X3DNodes.html#TEnumerateChildrenFunction">TEnumerateChildrenFunction</a>; OnlyActive: boolean);</code></td>
</tr>
<tr><td colspan="2">
<p>
This enumerates direct descendant nodes of this node. This is equivalent to <a class="normal" href="X3DNodes.TX3DNode.html#DirectEnumerateActive">DirectEnumerateActive</a> or <a class="normal" href="X3DNodes.TX3DNode.html#DirectEnumerateAll">DirectEnumerateAll</a>, depending on value of OnlyActive param.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="BeforeTraverse"></a><code>procedure <b>BeforeTraverse</b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Override these methods to determine what happens when given node is traversed during Traverse call. The main use of this is to operate on <a class="normal" href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>.

<p>Remember to always call inherited when overriding. In <code>BeforeTraverse</code> and <a class="normal" href="X3DNodes.TX3DNode.html#MiddleTraverse">MiddleTraverse</a> you should call inherited at the beginning, in <a class="normal" href="X3DNodes.TX3DNode.html#AfterTraverse">AfterTraverse</a> inherited should be called at the end.

<p>Besides changing StateStack.Top fields, you can do push/pop on the stack. Remember that if you do StateStack.Push in <code>BeforeTraverse</code>, and then you <i>must call StateStack.Pop in <a class="normal" href="X3DNodes.TX3DNode.html#AfterTraverse">AfterTraverse</a></i>.

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="MiddleTraverse"></a><code>procedure <b>MiddleTraverse</b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="AfterTraverse"></a><code>procedure <b>AfterTraverse</b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="ParseNodeBodyElement"></a><code>function <b>ParseNodeBodyElement</b>(Lexer: <a  href="X3DLexer.TX3DLexer.html">TX3DLexer</a>; Reader: <a  href="X3DNodes.TX3DReaderNames.html">TX3DReaderNames</a>; const APositionInParent: Integer): boolean; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Parse VRML node body element. Usually, this is a field. May also be VRML 1.0 style child node. May also be VRML 2.0 Script node interface declaration, etc. &mdash; see VRML 2.0 grammar spec.

<p>This should be overriden to parse special features within particular nodes. While generally VRML is very clean and there's no need to override this, there's one use for this currently:

<p></p>

<ol class="paragraph_spacing">
  <li value="1"><p>Since we handle a couple of VRML flavors (at least Inventor, VRML 1.0 and VRML 97), sometimes the same node has different fields to express the same things in various VRML flavors. So it may be useful to parse a field and copy it's value into other fields.

<p>Example: <a class="normal" href="X3DNodes.TShapeHintsNode_1.html">TShapeHintsNode_1</a> in Inventor parses &quot;hints&quot; field, and copies it's value to other fields as appropriate. &quot;hints&quot; field is not exposed in <a class="normal" href="X3DNodes.TShapeHintsNode_1.html">TShapeHintsNode_1</a> interface, so everything is clean in the interface, and under the hood <a class="normal" href="X3DNodes.TShapeHintsNode_1.html">TShapeHintsNode_1</a> can &quot;magically&quot; handle &quot;hints&quot; field for Inventor.</p></li>
</ol>

<p>

<p>When overriding, always check inherited result first, and exit if inherited handled successfully. Otherwise either read your stuff and return <code>True</code> (Lexer should advance to the position of next &quot;nodeBodyElement&quot;). Or return <code>False</code> without changing Lexer position.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="ParseAfter"></a><code>procedure <b>ParseAfter</b>(Reader: <a  href="X3DNodes.TX3DReaderNames.html">TX3DReaderNames</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Called at the end of parsing (in both classic and XML encoding).</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="CreateNode"></a><code>procedure <b>CreateNode</b>; virtual;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="FieldOrEvent"></a><code>function <b>FieldOrEvent</b>(const Name: string): <a  href="X3DFields.TX3DFieldOrEvent.html">TX3DFieldOrEvent</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Search by name for given field or event (exposed by some field or not).

<p><code>Nil</code> if not found.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="AnyEvent"></a><code>function <b>AnyEvent</b>(const Name: string): <a  href="X3DFields.TX3DEvent.html">TX3DEvent</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Search by name for given event (exposed by some field or not).

<p><code>Nil</code> if not found.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1ChildrenCount"></a><code>function <b>VRML1ChildrenCount</b>: integer;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1ChildAdd"></a><code>procedure <b>VRML1ChildAdd</b>(Index: Integer; child: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>); overload;</code></td>
</tr>
<tr><td colspan="2">
<p>
Add a VRML 1.0 child node at given position. Index (position) must be in [0..VRML1ChildrenCount]. Items at and above Index position are moved to the right, to insert new child at Index position.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1ChildAdd"></a><code>procedure <b>VRML1ChildAdd</b>(child: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>); overload;</code></td>
</tr>
<tr><td colspan="2">
<p>
Add a VRML 1.0 child node at the end of <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Children">VRML1Children</a> list.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1ChildRemove"></a><code>procedure <b>VRML1ChildRemove</b>(i: integer);</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1ChildrenClear"></a><code>procedure <b>VRML1ChildrenClear</b>;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1ChildExtract"></a><code>function <b>VRML1ChildExtract</b>(I: Integer): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Remove a VRML 1.0 children at index I and return it (do not free it). Compare this with VRML1Remove, that removes children I and frees it if it's no longer used by anything.

<p>This removes children I, appropriately adjusting all parent / children links, but even if a node is unused after removing, it is not freed. It's always returned.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1ParentsCount"></a><code>function <b>VRML1ParentsCount</b>: integer;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ParentFieldsCount"></a><code>function <b>ParentFieldsCount</b>: Integer;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="FreeRemovingFromAllParents"></a><code>procedure <b>FreeRemovingFromAllParents</b>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Free this object (if it's not <code>Nil</code>) <i>also removing it from <b>all</b> parent nodes and fields</i>.

<p>By design, normal destructor (Destroy called by Free) doesn't care about removing references to this object from it's parents. That's because it's the parents that usually initialize freeing of their children, and they free child when it's reference count is 0. So this freeing method is special in this regard.

<p>Use this if you really want to remove all node occurrences from the middle of VRML hierarchy.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="FreeIfUnused"></a><code>procedure <b>FreeIfUnused</b>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Free this node if it is not referenced by any parent fields or nodes. Takes into account that node may have VRML 1.0 parent nodes and VRML 2.0 / X3D parent fields (SFNode or MFNode). This is a safe way of removing a node that may, but doesn't have to, be part of some VRML/X3D graph. The idea is that if a node is a part of some graph, we don't need to do anything (since you should have a reference to the entine graph somewhere anyway), otherwise node is considered unused and freed.

<p>Analogous to standard TObject.Free, this also works when called on a <code>Nil</code> value (does nothing in this case).

<p>For safety, it's advised to set reference to <code>Nil</code> after calling <code>FreeIfUnused</code>. You can use <a class="normal" href="X3DNodes.html#FreeIfUnusedAndNil">FreeIfUnusedAndNil</a> utility for this (that employs a trick to <code>Nil</code> the visible reference even before freeing, which is even safer). This is analogous to standard FreeAndNil.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="KeepExistingBegin"></a><code>procedure <b>KeepExistingBegin</b>;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="KeepExistingEnd"></a><code>procedure <b>KeepExistingEnd</b>;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="PathFromBaseUrl"></a><code>function <b>PathFromBaseUrl</b>(const RelativePath: string): string;</code></td>
</tr>
<tr><td colspan="2">
<p>
Returns an absolute path, assuming that RelativePath is relative path from <a class="normal" href="X3DNodes.TX3DNode.html#BaseUrl">BaseUrl</a> or that RelativePath is already absolute.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Parse"></a><code>procedure <b>Parse</b>(Lexer: <a  href="X3DLexer.TX3DLexer.html">TX3DLexer</a>; Reader: <a  href="X3DNodes.TX3DReaderNames.html">TX3DReaderNames</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Parse node. This should set values of your fields, VRML 1.0 Children list, <a class="normal" href="X3DNodes.TX3DNode.html#BaseUrl">BaseUrl</a>.

<p>In special cases like <a class="normal" href="X3DNodes.TX3DUnknownNode.html">TX3DUnknownNode</a> this may actually initialize whole Fields list (by VRML 1.0 &quot;fields&quot; extensibility feature).</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ParseXML"></a><code>procedure <b>ParseXML</b>(Element: TDOMElement; Reader: <a  href="X3DNodes.TX3DReaderNames.html">TX3DReaderNames</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Parse node body, i.e. mainly node's fields.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(const ANodeName: string = ''; const ABaseUrl: string = ''); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Constructor. Initializes various properties:

<p></p>

<ul class="paragraph_spacing">
  <li><p><a class="normal" href="X3DNodes.TX3DNode.html#NodeName">NodeName</a>, <a class="normal" href="X3DNodes.TX3DNode.html#BaseUrl">BaseUrl</a> are initialized directly from given parameters.</p></li>
  <li><p>The <a class="normal" href="X3DNodes.TX3DNode.html#Fields">Fields</a>, <a class="normal" href="X3DNodes.TX3DNode.html#Events">Events</a> lists are filled in every descendant, to have all the fields/events defined by the specification.</p></li>
  <li><p><a class="normal" href="X3DNodes.TX3DNode.html#DefaultContainerField">DefaultContainerField</a>, and other node-specific stuff, is filled in descendants. This is actually implemented in <a class="normal" href="X3DNodes.TX3DNode.html#CreateNode">CreateNode</a>, that is called at the end of this constructor.</p></li>
</ul>

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Destroy"></a><code>destructor <b>Destroy</b>; override;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="NodeTypeName"></a><code>function <b>NodeTypeName</b>: string; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Node type name in VRML/X3D. Never empty. Constant for the class lifetime (even for special <a class="normal" href="X3DNodes.TX3DUnknownNode.html">TX3DUnknownNode</a> and <a class="normal" href="X3DNodes.TX3DPrototypeNode.html">TX3DPrototypeNode</a>, where this is calculated at runtime).

<p>Note that VRML/X3D is generally case-sensitive, so this property is too.

<p>In <a class="normal" href="X3DNodes.TX3DNode.html">TX3DNode</a>, this returns <a class="normal" href="X3DNodes.TX3DNode.html#ClassNodeTypeName">ClassNodeTypeName</a>, which is suitable for most nodes. See <a class="normal" href="X3DNodes.TX3DNode.html#ClassNodeTypeName">ClassNodeTypeName</a>.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ClassNodeTypeName"></a><code>class function <b>ClassNodeTypeName</b>: string; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Node type name in VRML/X3D, for this class. Normal VRML/X3D node classes should override this to return something non-empty, and then <a class="normal" href="X3DNodes.TX3DNode.html#NodeTypeName">NodeTypeName</a> automatically will return the same value.

<p>Empty for classes that don't have a hardcoded VRML/X3D node name, like a special <a class="normal" href="X3DNodes.TX3DUnknownNode.html">TX3DUnknownNode</a>. Such special classes should override then <a class="normal" href="X3DNodes.TX3DNode.html#NodeTypeName">NodeTypeName</a> to return actual non-empty name there.

<p>You usually should call <a class="normal" href="X3DNodes.TX3DNode.html#NodeTypeName">NodeTypeName</a>. The only use of this method is that it works on classes (it's &quot;class function&quot;), without needing at actual instance.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Traverse"></a><code>procedure <b>Traverse</b>( NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; TraversingFunc: <a  href="X3DNodes.html#TTraversingFunc">TTraversingFunc</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Traverse all the nodes of VRML graph that are active.

<p>An &quot;active&quot; part of the VRML graph are the nodes that actually change what the VRML file represents, in terms of geometry, collision detection etc. For example, the Switch node has only one child usually active. Nodes that merely influence the active graph by some events and routes do not have to be active (these nodes may change what the VRML file actually represents, but only by changing other nodes).

<p>For all nodes of NodeClass TraversingFunc will be called.

<p>Traverse not only enumerates these nodes, it also collects all state (transformation, etc &mdash; see <a class="normal" href="X3DNodes.TX3DGraphTraverseState.html">TX3DGraphTraverseState</a>) that affects how given node should be presented.

<p>Also, TraversingInfo is passed to each TraversingFunc call. This allows you to investigate, during TraversingFunc call, the parents hierarchy (you can't use <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a> / <a class="normal" href="X3DNodes.TX3DNode.html#ParentFields">ParentFields</a> of the current node, since a node may have many parents). Traverse calls are naturally recursive, and so the stack of TraversingInfo structures is naturally build and destroyed by recursive calls. For the root node (the one where you called Traverse without specifying initial TraversingInfo), ParentInfo is simply <code>Nil</code>.

<p>The scheme of how Traverse works:

<p></p>

<pre class="preformatted">
  BeforeTraverse;

  TraverseIntoChildren := true;
  if Self is NodeClass then TraversingFunc (Self, State, TraverseIntoChildren);

  MiddleTraverse;

  if TraverseIntoChildren is still true then
    for all children returned by DirectEnumerateActive
      call their Traverse(State);

  AfterTraverse;

  Add Self to State.LastNodes (for VRML 1.0 state nodes, see
    TraverseStateLastNodesClasses);
</pre>

<p>

<p>Note: setting <a class="normal" href="X3DNodes.TX3DNode.html#TraverseIntoChildren">TraverseIntoChildren</a> to false means that some part of the tree is explicitly omitted from traversing. Use this only if you know what you're doing, as for some nodes they actually affect their parents too (for example, chilren within VRML 1.0 Group affect other nodes too; global lights within VRML &gt;= 2.0 affect all nodes; and so on...). Usually, you will use this only for separator-like nodes (for VRML &gt;= 2.0, all Group, Transform, Switch etc. act like separators), and only when you will somehow traverse into these nodes anyway.

<p>We guarantee that <a class="normal" href="X3DNodes.TX3DNode.html#AfterTraverse">AfterTraverse</a> will be called if <a class="normal" href="X3DNodes.TX3DNode.html#BeforeTraverse">BeforeTraverse</a> was called and finished (that is, <a class="normal" href="X3DNodes.TX3DNode.html#AfterTraverse">AfterTraverse</a> is called in the <code>finally..end</code>).

<p>During traversing, you can only modify the children (direct or not) nodes of the current node.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TraverseInternal"></a><code>procedure <b>TraverseInternal</b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>; NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; TraversingFunc: <a  href="X3DNodes.html#TTraversingFunc">TTraversingFunc</a>; ParentInfo: <a  href="X3DNodes.html#PTraversingInfo">PTraversingInfo</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Like <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a>, but it takes explicit starting state stack and starting ParentInfo. Not generally useful, use only for special purposes.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TraverseIntoChildren"></a><code>procedure <b>TraverseIntoChildren</b>(StateStack: <a  href="X3DNodes.TX3DGraphTraverseStateStack.html">TX3DGraphTraverseStateStack</a>; NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; TraversingFunc: <a  href="X3DNodes.html#TTraversingFunc">TTraversingFunc</a>; ParentInfo: <a  href="X3DNodes.html#PTraversingInfo">PTraversingInfo</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Like <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a>, but only enters children. This does the job of Traverse normally omitted if your <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a> callback returns <code>TraverseIntoChildren</code> = <code>False</code>. Using this method, you can traverse into children explicitly from your callback.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="EnumerateNodes"></a><code>procedure <b>EnumerateNodes</b>( proc: <a  href="X3DNodes.html#TX3DNodeProc">TX3DNodeProc</a>; OnlyActive: boolean); overload;</code></td>
</tr>
<tr><td colspan="2">
<p>
Enumerate all our children of some class. Recursively. Enumerates also this instance (Self), if it satisfies the NodeClass and SeekNodeName conditions.

<p>This enumerates both VRML 1.0 children (<a class="normal" href="X3DNodes.TX3DNode.html#VRML1Children">VRML1Children</a>) as well as VRML &gt;= 2.0 (including X3D) children (nodes in <a class="normal" href="X3DNodes.TSFNode.html">TSFNode</a> and <a class="normal" href="X3DNodes.TMFNode.html">TMFNode</a> fields).

<p>If OnlyActive then it will enumerate only active parts of the graph (&quot;active&quot; as defined by <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a>), so it will work as a simpler version of Traverse (simpler, because it doesn't track any state).

<p>If not OnlyActive then it will simply enumerate all nodes. This will include then also prototype helpers, if this node was expanded from prototype: see <a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceSourceNode">PrototypeInstanceSourceNode</a> and <a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceHelpers">PrototypeInstanceHelpers</a>.

<p>If you give SeekNodeName parameter, we'll only look for nodes with <a class="normal" href="X3DNodes.TX3DNode.html#NodeName">NodeName</a> = SeekNodeName. When SeekNodeName = '' it, consistently, looks for unnamed nodes (where <a class="normal" href="X3DNodes.TX3DNode.html#NodeName">NodeName</a> = '').

<p>Enumerates children only after enumerating Self. So you can modify children before enumerating them in the Proc callback. You can only modify your children in the Proc callback.

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="EnumerateNodes"></a><code>procedure <b>EnumerateNodes</b>(nodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; proc: <a  href="X3DNodes.html#TX3DNodeProc">TX3DNodeProc</a>; OnlyActive: boolean); overload;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="EnumerateNodes"></a><code>procedure <b>EnumerateNodes</b>(nodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; const SeekNodeName: string; proc: <a  href="X3DNodes.html#TX3DNodeProc">TX3DNodeProc</a>; OnlyActive: boolean); overload;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TryFindNodeByName"></a><code>function <b>TryFindNodeByName</b>(FindClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; const FindName: string; OnlyActive: boolean): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
<code>TryFindNodeByName</code> and <a class="normal" href="X3DNodes.TX3DNode.html#TryFindNode">TryFindNode</a> seek for a node with given class (and node name, in case of <code>TryFindNodeByName</code>). If OnlyActive then they seek among only active nodes (&quot;active&quot; as defined by <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a>), otherwise all nodes.

<p>These functions are quite like <a class="normal" href="X3DNodes.TX3DNode.html#EnumerateNodes">EnumerateNodes</a>, except they stop at the first occurrence and return it.

<p><code>TryFindNodeByName</code> and <a class="normal" href="X3DNodes.TX3DNode.html#TryFindNode">TryFindNode</a> return <code>Nil</code> if such node is not found. <a class="normal" href="X3DNodes.TX3DNode.html#FindNodeByName">FindNodeByName</a> and <a class="normal" href="X3DNodes.TX3DNode.html#FindNode">FindNode</a> raise exception <a class="normal" href="X3DFields.EX3DNotFound.html">EX3DNotFound</a> in this case.  </p>
<h6 class="description_section">Exceptions raised</h6>
<dl class="exceptions_raised">
<dt><a class="normal" href="X3DFields.EX3DNotFound.html">EX3DNotFound</a></dt>
<dd><a class="normal" href="X3DNodes.TX3DNode.html#FindNodeByName">FindNodeByName</a> and <a class="normal" href="X3DNodes.TX3DNode.html#FindNode">FindNode</a> raise this exception when node is not found.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="FindNodeByName"></a><code>function <b>FindNodeByName</b>(FindClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; const FindName: string; OnlyActive: boolean): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TryFindNode"></a><code>function <b>TryFindNode</b>(FindClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; OnlyActive: boolean): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="FindNode"></a><code>function <b>FindNode</b>(FindClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; OnlyActive: boolean): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TryFindNodeState"></a><code>function <b>TryFindNodeState</b>( NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; out Node: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; out State: <a  href="X3DNodes.TX3DGraphTraverseState.html">TX3DGraphTraverseState</a>): boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Find the first node with given class (NodeClass), return it's state or just transformation. Similar to <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a>, but stops as soon as the given node is found.

<p>Returns <code>False</code> when not found (&quot;out&quot; parametrs Node, State and Transform are undefined then). </p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TryFindNodeTransform"></a><code>function <b>TryFindNodeTransform</b>( NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; out Node: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; out Transform: <a  href="CastleVectors.html#TMatrix4Single">TMatrix4Single</a>; out TransformScale: Single): boolean;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TryFindParentByName"></a><code>function <b>TryFindParentByName</b>(const FindName: string): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Seeks Self and parent nodes (from <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a> and <a class="normal" href="X3DNodes.TX3DNode.html#ParentFields">ParentFields</a>, recursively) for given node name.

<p>In other words, this is similar to TryNodeByName or NodeByName, but it goes &quot;upward&quot; in graph hierarchy. Note that this never restricts itself only to &quot;active&quot; graph part (&quot;active&quot; as defined by <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a>) because you really can't detect what is the &quot;active&quot; part of the graph when going upward.

<p>

<p></p>
<h6 class="description_section">Exceptions raised</h6>
<dl class="exceptions_raised">
<dt><a class="normal" href="X3DFields.EX3DNotFound.html">EX3DNotFound</a></dt>
<dd><a class="normal" href="X3DNodes.TX3DNode.html#FindParentByName">FindParentByName</a> raises this exception when node is not found.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="FindParentByName"></a><code>function <b>FindParentByName</b>(const FindName: string): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="HasParent"></a><code>function <b>HasParent</b>(Node: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>): boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Looks for a given Node in parents (and self), recursively. Similar to <a class="normal" href="X3DNodes.TX3DNode.html#TryFindParentByName">TryFindParentByName</a>. Returns <code>True</code> only if found.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="TryFindDirectParentByName"></a><code>function <b>TryFindDirectParentByName</b>(const FindName: string): <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Search immediate parents of this node for a node with given FindName. Returns <code>Nil</code> if not found.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="IsNodePresent"></a><code>function <b>IsNodePresent</b>(Node: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>; OnlyActive: boolean): boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Looks for a given node in our children (direct and not, including self). If OnlyActive, then only active parts are searched (&quot;active&quot; as defined by <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a>).</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="NodesCount"></a><code>function <b>NodesCount</b>(NodeClass: <a  href="X3DNodes.html#TX3DNodeClass">TX3DNodeClass</a>; CountOnlyActiveNodes: boolean): integer;</code></td>
</tr>
<tr><td colspan="2">
<p>
Count the occurrences of given node class in our children. For example, you can pass NodeClass = <a class="normal" href="X3DNodes.TAbstractLightNode.html">TAbstractLightNode</a> to count the light sources in the scene.

<p>If CountOnlyActiveNodes, then only active parts are searched (&quot;active&quot; as defined by <a class="normal" href="X3DNodes.TX3DNode.html#Traverse">Traverse</a>).

<p>This traverses both VRML 1.0 children nodes and VRML 2.0 nodes inside SFNode and MFNode fields.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="SaveToStream"></a><code>procedure <b>SaveToStream</b>(Writer: <a  href="X3DFields.TX3DWriter.html">TX3DWriter</a>); override;</code></td>
</tr>
<tr><td colspan="2">
<p>
Save node to a stream. Saves everything, including node name, node type, and node contents.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1StateNode"></a><code>class function <b>VRML1StateNode</b>(out StateNode: <a  href="X3DNodes.html#TVRML1StateNode">TVRML1StateNode</a>): boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Do the nodes of (exactly) this class should be included in VRML 1.0 state (see <a class="normal" href="X3DNodes.TX3DGraphTraverseState.html#LastNodes">TX3DGraphTraverseState.LastNodes</a>).</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ForVRMLVersion"></a><code>class function <b>ForVRMLVersion</b>(const Version: <a  href="X3DNodes.html#TX3DVersion">TX3DVersion</a>): boolean; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Some nodes are present only in specific VRML/X3D version. This functions decides it.

<p>For example some nodes can only work in VRML &lt; 2.0, some others only in VRML &gt;= 2.0. There are even some pairs of nodes: for example <a class="normal" href="X3DNodes.TConeNode_1.html">TConeNode_1</a> works with VRML &lt; 2.0, <a class="normal" href="X3DNodes.TConeNode.html">TConeNode</a> works with VRML &gt;= 2.0.

<p><a class="normal" href="X3DNodes.html#NodesManager">NodesManager</a> will use this.

<p>Default implementation of this function returns always <code>True</code>. Generally, I don't try to set this too aggresively &mdash; in other words, for all cases when it's sensible, I allow nodes to be used in every VRML/X3D version, even when official specification doesn't. This means that when reading VRML 1.0 files actually a large part of VRML 2.0 is allowed too, and also while reading VRML 2.0 many constructs from VRML 1.0 (officially no longer present in VRML 2.0) are allowed too. I'm trying to support what I call a &quot;sum of VRML 1.0 and 2.0&quot;.

<p>In practice I only use this function when various VRML/X3D versions specify the same node name but

<p></p>

<ul class="paragraph_spacing">
  <li><p>With different fields.

<p>For example Cone and Cylinder have slightly different fields, due to the fact that VRML 2.0 resigned from using <a class="normal" href="X3DFields.TSFBitMask.html">TSFBitMask</a> fields.</p></li>
  <li><p>With different behavior.

<p>For example definitions of Sphere for VRML 1.0 and 2.0 are practically equal. However, the behavior from where to take texture and material info is different &mdash; in VRML 1.0 we take last Texture2, Material etc. nodes, while in VRML 2.0 we look in parent Shape's &quot;appearance&quot; field. So once again two different Sphere classes are needed.</p></li>
</ul>

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="EnumerateReplaceChildren"></a><code>function <b>EnumerateReplaceChildren</b>( Func: <a  href="X3DNodes.html#TEnumerateReplaceNodesFunction">TEnumerateReplaceNodesFunction</a>): Cardinal;</code></td>
</tr>
<tr><td colspan="2">
<p>
Enumerates all children nodes (recursively), allowing you to decide for each node to replace or remove it.

<p>So this is something like <a class="normal" href="X3DNodes.TX3DNode.html#EnumerateNodes">EnumerateNodes</a>, except that it allows you to remove the nodes. It always enumerates all nodes, not only active (e.g. it enumerates all Switch node children, not only the chosen one).

<p>Note that (unlike regular <a class="normal" href="X3DNodes.TX3DNode.html#EnumerateNodes">EnumerateNodes</a>) <b>this doesn't report Self to Func !</b>. Which is natural, since this may remove nodes by normal <a class="normal" href="X3DNodes.TX3DNode.html#VRML1ChildRemove">VRML1ChildRemove</a> calls, so it needs to know ParentNode of the removed node.

<p>For each node Func will be called, with ParentNode and Node set. If you change the Node to something else, then the old node will be removed and new Node inserted in the same place. If new Node is <code>Nil</code>, then only the old node will be removed.

<p>Nodes are traversed in depth-first search. Node is first reported to Func, and then (if it's not replaced) we descend into this Node.

<p></p>
<h6 class="description_section">Returns</h6>
<p class="return">The number of removed (and possibly replaced) nodes.</p></td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="RemoveChildrenWithMatchingName"></a><code>function <b>RemoveChildrenWithMatchingName</b>( const Wildcard: string; IgnoreCase: Boolean): Cardinal;</code></td>
</tr>
<tr><td colspan="2">
<p>
Removes all children (and their children, recursively) with node names matchig Wildcard. You can use * and ? special chars in the Wildcard. </p>
<h6 class="description_section">Returns</h6>
<p class="return">The number of removed nodes.</p></td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="DeepCopy"></a><code>function <b>DeepCopy</b>: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Create a deep copy of this node and all it's children.

<p>New copy is completely independent from original, having all children nodes (in both VRML 1.0 sense (Children) and VRML &gt;= 2.0 (inside SFNode and MFNode fields)) also duplicated. New copy has protypes, routes, interface declarations and generally everything established like in the original, using copied nodes.

<p>Doesn't copy things which are dependent on container hierarchy. (So copying them would be more dangerous than useful.) This means: <a class="normal" href="X3DNodes.TX3DNode.html#DestructionNotifications">DestructionNotifications</a>, Scene, <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a>, <a class="normal" href="X3DNodes.TX3DNode.html#ParentFields">ParentFields</a>. <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a> and <a class="normal" href="X3DNodes.TX3DNode.html#ParentFields">ParentFields</a> will be set for children anyway (to appropriate copies).

<p>Caller owns this newly created copy &mdash; as returned by this method, it's not linked anywhere.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="URNMatching"></a><code>class function <b>URNMatching</b>(const URN: string): boolean; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Should we use this node when URN is required by EXTERNPROTO ?

<p>Implementors note: in this class, this returns <code>False</code>. You can use constants like <a class="normal" href="X3DNodes.html#URNVRML97Nodes">URNVRML97Nodes</a> and <a class="normal" href="X3DNodes.html#URNKambiNodes">URNKambiNodes</a> to help implementing this.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="PostAddInterfaceDeclaration"></a><code>procedure <b>PostAddInterfaceDeclaration</b>(IDecl: <a  href="X3DNodes.TX3DInterfaceDeclaration.html">TX3DInterfaceDeclaration</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
This will be always called by VRML parsers after adding new item to our <a class="normal" href="X3DNodes.TX3DNode.html#InterfaceDeclarations">InterfaceDeclarations</a>.

<p>In this class, this simply adds IDecl.FieldOrEvent to our normal fields/events by IDecl.AddFieldOrEvent. You may override this in subclasses to react in some special way to new fields/events, for example Script node may register here to receive notification when input event is received.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="AddCustomField"></a><code>procedure <b>AddCustomField</b>(Field: <a  href="X3DFields.TX3DField.html">TX3DField</a>; const Exposed: boolean = false);</code></td>
</tr>
<tr><td colspan="2">
<p>
Add to node <a class="normal" href="X3DNodes.TX3DNode.html#InterfaceDeclarations">InterfaceDeclarations</a> given field. Sets the field's exposed to given Exposed parameter, for comfort. This should only be used with nodes having <a class="normal" href="X3DNodes.TX3DNode.html#HasInterfaceDeclarations">HasInterfaceDeclarations</a> = <code>True</code>, like Script or ComposedShader.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="NiceName"></a><code>function <b>NiceName</b>: string;</code></td>
</tr>
<tr><td colspan="2">
<p>
Nice and concise node description for user. Shows node type and name.</p>
</td></tr>
</table>
<h3 class="detail">Properties</h3>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="CDataField"></a><code>property <b>CDataField</b>: <a  href="X3DFields.TMFString.html">TMFString</a> read FCDataField write FCDataField;</code></td>
</tr>
<tr><td colspan="2">
<p>
The field where CDATA section from XML is added. Used when loading X3D in XML encoding: XML elements may contain CDATA sections, that are added to &quot;url&quot; field. See X3D XML encoding specification about &quot;Encapsulating Script node code&quot; [<a  href="http://www.web3d.org/x3d/specifications/ISO-IEC-19776-1.2-X3DEncodings-XML/Part01/concepts.html#EncapsulatingScriptNodeCode">http://www.web3d.org/x3d/specifications/ISO-IEC-19776-1.2-X3DEncodings-XML/Part01/concepts.html#EncapsulatingScriptNodeCode</a>]. We also allow this for shader nodes (sensible (follows the intention of the spec) and compatible with InstantReality).

<p>When not assigned, then CDATA section for this node is not allowed.

<p>This should be set in descendants constructor.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Fields"></a><code>property <b>Fields</b>: <a  href="X3DFields.TX3DFieldList.html">TX3DFieldList</a> read FFields;</code></td>
</tr>
<tr><td colspan="2">
<p>
Node fields.

<p>For normal nodes, all Fields are created and added to Fields list in constructor. Fields default values are set, and of course current field values are set to these defaults. Later, we only modify these fields current values (e.g. when parsing).

<p>However, there are special node classes that set their Fields differently. <a class="normal" href="X3DNodes.TX3DPrototypeNode.html">TX3DPrototypeNode</a> has their fields set according to it's VRML 2.0 prototype. <a class="normal" href="X3DNodes.TX3DUnknownNode.html">TX3DUnknownNode</a> may have it's fields set by VRML 1.0 &quot;fields&quot; feature (so it's Fields are initialized by parsing it).

<p>Nodes with <a class="normal" href="X3DNodes.TX3DNode.html#HasInterfaceDeclarations">HasInterfaceDeclarations</a> have some Fields and Events added when reading node.

<p>All fields on this list are owned by this object.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Events"></a><code>property <b>Events</b>: <a  href="X3DFields.TX3DEventList.html">TX3DEventList</a> read FEvents;</code></td>
</tr>
<tr><td colspan="2">
<p>
Explicit events (that is, not exposed by some field) of this node. For exposed events, see each field's property ExposedEvents.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1Children"></a><code>property <b>VRML1Children</b> [i:integer]: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a> read GetVRML1Child write SetVRML1Child;</code></td>
</tr>
<tr><td colspan="2">
<p>
VRML 1.0 children nodes. These are nodes directly specified inside a VRML 1.0 node, they don't belong to any node field. (In VRML 1.0, there was no SFNode / MFNode fields.)

<p>In VRML 2.0, this is always empty.

<p>VRML 1.0 nodes may have any number of children. The children nodes refer back to it's parent nodes in <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a> list. When travelling over VRML/X3D graph, remember that cycles are possible, because of DEF/USE. Obviously, they possible when travelling along the <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a> list. We currently assume that there are no cycles when we treat the graph as directed, but it may change one day (some VRML/X3D models create real cycles).

<p>Adding/removing stuff from the <code>VRML1Children</code> list keeps track of how many times a node is used. If the child node has no parents, it will be freed. Actually, nodes can be children of both nodes (VRML 1.0 style, then <code>VRML1Children</code> and <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a> is used) or fields (<a class="normal" href="X3DNodes.TMFNode.html">TMFNode</a> or <a class="normal" href="X3DNodes.TSFNode.html">TSFNode</a>, in VRML 2.0 style; then <a class="normal" href="X3DNodes.TX3DNode.html#ParentFields">ParentFields</a> is used). So the node is freed only when it's not referenced by any node and not referenced by any field. Generally, it's the parent that takes care of reference-counting and freeing the children, not the other way around.

<p>Note that given node instance may be a children of a single node multiple times, through DEF/USE mechanism. The order of children is important and preserved. (On the other hand, the order of <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a> is not important, as that list is mostly for reference-counting.)

<p>You can replace one children with another like <code><code>VRML1Children</code>[I] := NewChildren;</code>. This works like a shortcut for <code><a class="normal" href="X3DNodes.TX3DNode.html#VRML1ChildRemove">VRML1ChildRemove</a>(I); <a class="normal" href="X3DNodes.TX3DNode.html#VRML1ChildAdd">VRML1ChildAdd</a>(I, NewChildren);</code>. But 1. it's more efficient; 2. it's safer &mdash; if Children[I] is already equal to NewChildren, it does nothing.

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="VRML1Parents"></a><code>property <b>VRML1Parents</b> [i:integer]: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a> read GetVRML1Parent;</code></td>
</tr>
<tr><td colspan="2">
<p>
VRML 1.0 parent nodes. <code>VRML1Parents</code> is a reverse of <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Children">VRML1Children</a> &mdash; it lists all the nodes where we are on <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Children">VRML1Children</a> list.

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ParentFields"></a><code>property <b>ParentFields</b>[Index:Integer]: <a  href="X3DFields.TX3DField.html">TX3DField</a> read GetParentFieldsItem;</code></td>
</tr>
<tr><td colspan="2">
<p>
This lists all SFNode and MFNode fields where this node is referenced. This is somewhat analogous for <a class="normal" href="X3DNodes.TX3DNode.html#VRML1Parents">VRML1Parents</a>, but for VRML 2.0.

<p><a class="normal" href="X3DNodes.TX3DNode.html#ParentFieldsNode">ParentFieldsNode</a> is just for your comfort, it returns always appropriate field's ParentNode property value (i.e. <code>(ParentField[Index] as <a class="normal" href="X3DNodes.TSFNode.html">TSFNode</a>).ParentNode</code> or <code>(ParentField[Index] as <a class="normal" href="X3DNodes.TMFNode.html">TMFNode</a>).ParentNode</code>).

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ParentFieldsNode"></a><code>property <b>ParentFieldsNode</b>[Index:Integer]: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a>
      read GetParentFieldsNodeItem;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="KeepExisting"></a><code>property <b>KeepExisting</b>: Cardinal read FKeepExisting write FKeepExisting;</code></td>
</tr>
<tr><td colspan="2">
<p>
Increase <code>KeepExisting</code> property value to disable automatic freeing of the node when unused. This may be useful in cases when you remove the node from VRML graph hierarchy, but you want to keep a valid reference to it anyway (for example, maybe you'll free it later by hand or add it somewhere else).

<p>Simple methods <a class="normal" href="X3DNodes.TX3DNode.html#KeepExistingBegin">KeepExistingBegin</a> and <a class="normal" href="X3DNodes.TX3DNode.html#KeepExistingEnd">KeepExistingEnd</a> simply increase / decrease <code>KeepExisting</code> value by 1. This is the most usual usage.

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="NodeName"></a><code>property <b>NodeName</b>: string read fNodeName write FNodeName;</code></td>
</tr>
<tr><td colspan="2">
<p>
Name of this node. When saving/loading, this comes from VRML/X3D &quot;DEF&quot; construct. Empty value means that the name is not defined.

<p>Do not change it during loading / saving or searching.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="BaseUrl"></a><code>property <b>BaseUrl</b>: string read FBaseUrl write FBaseUrl;</code></td>
</tr>
<tr><td colspan="2">
<p>
Base URL for all URLs inside our fields. Used everywhere as a base for relative URLs, to handle fields that refer to external files like textures, other 3D models (ImageTexture, Inline nodes, many others).

<p>It must be an absolute URL. Currently, it doesn't have to contain a protocol, and is then interpreted as a path on local filesystem (just like it had <a  href="file://">file://</a> prefix). Still, it must be an absolute path.

<p>This is set in constructor, and eventually adjusted by various parsing routines. This way we could, if only we would like to, resolve nodes like Inline or ImageTexture immediately after parsing them.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="WWWBasePath"></a><code>property <b>WWWBasePath</b>: string read FBaseUrl write FBaseUrl; deprecated;</code></td>
</tr>
<tr><td colspan="2">
<p class="hint_directive">Warning: this symbol is deprecated.</p><p>
Old deprecated name for <a class="normal" href="X3DNodes.TX3DNode.html#BaseUrl">BaseUrl</a>. </p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Prototypes"></a><code>property <b>Prototypes</b>: <a  href="X3DNodes.TX3DPrototypeBaseList.html">TX3DPrototypeBaseList</a> read FPrototypes;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Routes"></a><code>property <b>Routes</b>: <a  href="X3DNodes.TX3DRouteList.html">TX3DRouteList</a> read FRoutes;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ImportsList"></a><code>property <b>ImportsList</b>: <a  href="X3DFields.TX3DFileItemList.html">TX3DFileItemList</a> read FImportsList;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ExportsList"></a><code>property <b>ExportsList</b>: <a  href="X3DFields.TX3DFileItemList.html">TX3DFileItemList</a> read FExportsList;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="PrototypeInstance"></a><code>property <b>PrototypeInstance</b>: boolean read FPrototypeInstance;</code></td>
</tr>
<tr><td colspan="2">
<p>
<code>PrototypeInstance</code> = <code>True</code> indicates that this node was created from a non-external prototype instantiation.

<p>Then <a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceSourceNode">PrototypeInstanceSourceNode</a> is non-nil and indicates parsed prototype node (and PrototypeInstanceSourceNode.Prototype gives you even a link to the actual prototype specification).

<p><a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceSourceNode">PrototypeInstanceSourceNode</a> is used for events: any ROUTEs specified <i>outside</i> of prototype and leading to/from instantiated prototype should actually lead to <a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceSourceNode">PrototypeInstanceSourceNode</a> events (not to events of Self). Reason: prototype events may be different than actual expanded node events, and ROUTEs want to lead to prototype events. This is implemented when expanding prototype (<a class="normal" href="X3DNodes.TX3DPrototypeNode.html#Instantiate">TX3DPrototypeNode.Instantiate</a>) and when linking ROUTE (<a class="normal" href="X3DNodes.TX3DRoute.html#SetSource">TX3DRoute.SetSource</a>, <a class="normal" href="X3DNodes.TX3DRoute.html#SetDestination">TX3DRoute.SetDestination</a>).

<p><a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceHelpers">PrototypeInstanceHelpers</a> may be <code>Nil</code> if empty, or may contain a list of other nodes duplicated along with the main prototype node. From VRML spec:

<p></p>

<pre class="preformatted">
        Any other nodes and accompanying scene graphs
        are not part of the transformation hierarchy, but may be referenced
        by ROUTE statements or Script nodes in the prototype definition.</pre>

<p>

<p>Note that for <a class="normal" href="X3DNodes.TX3DPrototypeNode.html">TX3DPrototypeNode</a> (within <a class="normal" href="X3DNodes.TX3DNode.html#PrototypeInstanceSourceNode">PrototypeInstanceSourceNode</a>) these have a little different meaning: they describe the <i>nested prototype</i>, if any, that was used to create this node. This may happen if the node was expanded from one prototype within another. (Usually, you shouldn't be concerned about this; see <a class="normal" href="X3DNodes.TX3DPrototypeNode.html#Instantiate">TX3DPrototypeNode.Instantiate</a> implementation comments for gory details about this.)

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="PrototypeInstanceSourceNode"></a><code>property <b>PrototypeInstanceSourceNode</b>: <a  href="X3DNodes.TX3DPrototypeNode.html">TX3DPrototypeNode</a>
      read FPrototypeInstanceSourceNode;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="PrototypeInstanceHelpers"></a><code>property <b>PrototypeInstanceHelpers</b>: <a  href="X3DNodes.TX3DNode.html">TX3DNode</a> read FPrototypeInstanceHelpers;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="DefaultContainerField"></a><code>property <b>DefaultContainerField</b>: string
      read FDefaultContainerField write FDefaultContainerField;</code></td>
</tr>
<tr><td colspan="2">
<p>
Default value of &quot;containerField&quot; attribute for this node in X3D XML encoding.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="HasInterfaceDeclarations"></a><code>property <b>HasInterfaceDeclarations</b>: <a  href="X3DNodes.html#TX3DAccessTypes">TX3DAccessTypes</a>
      read FHasInterfaceDeclarations
      write SetHasInterfaceDeclarations default [];</code></td>
</tr>
<tr><td colspan="2">
<p>
For some special VRML / X3D nodes (like Script, ComposedShader) that allow the definition of additional fields/events within.

<p>In X3D specification this is marked like

<p></p>

<pre class="preformatted">
  # And any number of:
  fieldType [in]     fieldName
  fieldType [in,out] fieldName    initialValue
  fieldType [out]    fieldName
  fieldType []       fieldName    initialValue
</pre>

<p>

<p>If <code>HasInterfaceDeclarations</code> is not [], then <a class="normal" href="X3DNodes.TX3DNode.html#InterfaceDeclarations">InterfaceDeclarations</a> will be non-nil and parser (classic VRML parser in this unit, X3D XML reader too) will read this from VRML files. Moreover, for each interface declaration, also appropriate field/event will be added to the list of <a class="normal" href="X3DNodes.TX3DNode.html#Fields">Fields</a> or <a class="normal" href="X3DNodes.TX3DNode.html#Events">Events</a>, so fields/events created by interface declarations will function just like other standard fields everywhere.

<p></p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="InterfaceDeclarations"></a><code>property <b>InterfaceDeclarations</b>: <a  href="X3DNodes.TX3DInterfaceDeclarationList.html">TX3DInterfaceDeclarationList</a>
      read FInterfaceDeclarations;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="DestructionNotifications"></a><code>property <b>DestructionNotifications</b>: <a  href="X3DNodes.TNodeDestructionNotificationList.html">TNodeDestructionNotificationList</a>
      read FDestructionNotifications;</code></td>
</tr>
<tr><td colspan="2">
<p>
Functions registered here will be called when this <a class="normal" href="X3DNodes.TX3DNode.html">TX3DNode</a> descendant will be destroyed.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Scene"></a><code>property <b>Scene</b>: <a  href="X3DNodes.TX3DEventsEngine.html">TX3DEventsEngine</a> read FScene write FScene;</code></td>
</tr>
<tr><td colspan="2">
<p>
Scene that will be notified about changes to this node. This is necessary to allow the scene to properly process VRML/X3D events, and also to react properly to any other changes to the nodes (like when you change some field directly by ObjectPascal code, e.g. by <a class="normal" href="X3DFields.TX3DField.html#Send">TX3DField.Send</a>).

<p>May be <code>Nil</code> if none.

<p>A given <a class="normal" href="X3DNodes.TX3DNode.html">TX3DNode</a> may be renderable only by a single renderer. This means it can be placed only within one <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a> or one <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</a> (nothing else gives you a renderer).

<p>A given <a class="normal" href="X3DNodes.TX3DNode.html">TX3DNode</a> may be placed inside many <a class="normal" href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a> instances (including <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a>). But if more than one scene is used, then all the scenes must be static (<a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ProcessEvents">TCastleSceneCore.ProcessEvents</a> = false and <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#Static">TCastleSceneCore.Static</a> = true). Static scenes are ones that never change, that is never have any <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ChangedField">TCastleSceneCore.ChangedField</a> called. This means that events processing is disabled, and also other dynamic scene changes from code are disallowed.

<p>These two rules are both at action when you think about a node inside many <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a> instances. In this case, all such scene instances must be created with the same renderer (hence the need for <a class="normal" href="CastleScene.TCastleScene.html#CreateCustomRenderer">TCastleScene.CreateCustomRenderer</a>) and all must be static. This is actually exactly how <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</a> works: it internally creates a single renderer and a series of <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a> instances.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="ShapeTrees"></a><code>property <b>ShapeTrees</b>: TObject read FShapeTrees write FShapeTrees;</code></td>
</tr>
<tr><td colspan="2">
<p>
Managed and used by <a class="normal" href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a> to keep TShapeTreesList for every <a class="normal" href="X3DNodes.ITransformNode.html">ITransformNode</a>.</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:14</em>
</span>
</td></tr></table></body></html>