File: CastleSceneManager.TCastleAbstractViewport.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 (1146 lines) | stat: -rw-r--r-- 84,486 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
<!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: CastleSceneManager: Class TCastleAbstractViewport</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="TCastleAbstractViewport"></a><h1 class="cio">Class TCastleAbstractViewport</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="CastleSceneManager.html">CastleSceneManager</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type TCastleAbstractViewport = class(<a class="normal" href="CastleUIControls.TUIRectangularControl.html">TUIRectangularControl</a>)</code></p>
<h2 class="description">Description</h2>
<p>
Common abstract class for things that may act as a viewport: <a class="normal" href="CastleSceneManager.TCastleSceneManager.html">TCastleSceneManager</a> and <a class="normal" href="CastleSceneManager.TCastleViewport.html">TCastleViewport</a>.</p>
<a name="PasDoc-Hierarchy"></a><h2 class="hierarchy">Hierarchy</h2>
<ul class="hierarchy"><li class="ancestor">TComponent</li>
<li class="ancestor"><a class="normal" href="CastleUIControls.TInputListener.html">TInputListener</a></li>
<li class="ancestor"><a class="normal" href="CastleUIControls.TUIControl.html">TUIControl</a></li>
<li class="ancestor"><a class="normal" href="CastleUIControls.TUIRectangularControl.html">TUIRectangularControl</a></li>
<li class="thisitem">TCastleAbstractViewport</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="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>internal const <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultScreenSpaceAmbientOcclusion">DefaultScreenSpaceAmbientOcclusion</a></b> = 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>internal const <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultUseGlobalLights">DefaultUseGlobalLights</a></b> = true;</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>internal const <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultShadowVolumes">DefaultShadowVolumes</a></b> = true;</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="CastleSceneManager.TCastleAbstractViewport.html#CalculateProjection">CalculateProjection</a></b>: <a  href="CastleRays.TProjection.html">TProjection</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="CastleSceneManager.TCastleAbstractViewport.html#Render3D">Render3D</a></b>(const Params: <a  href="Castle3D.TRenderParams.html">TRenderParams</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="CastleSceneManager.TCastleAbstractViewport.html#RenderShadowVolume">RenderShadowVolume</a></b>; 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="CastleSceneManager.TCastleAbstractViewport.html#RenderFromViewEverything">RenderFromViewEverything</a></b>; 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="CastleSceneManager.TCastleAbstractViewport.html#InitializeLights">InitializeLights</a></b>(const Lights: <a  href="X3DNodes.TLightInstancesList.html">TLightInstancesList</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="CastleSceneManager.TCastleAbstractViewport.html#Headlight">Headlight</a></b>: <a  href="X3DNodes.TAbstractLightNode.html">TAbstractLightNode</a>; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#RenderFromView3D">RenderFromView3D</a></b>(const Params: <a  href="Castle3D.TRenderParams.html">TRenderParams</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="CastleSceneManager.TCastleAbstractViewport.html#Background">Background</a></b>: <a  href="CastleBackground.TBackground.html">TBackground</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="CastleSceneManager.TCastleAbstractViewport.html#MainLightForShadows">MainLightForShadows</a></b>( out AMainLightPosition: <a  href="CastleVectors.html#TVector4Single">TVector4Single</a>): 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="CastleSceneManager.TCastleAbstractViewport.html#SetCamera">SetCamera</a></b>(const Value: <a  href="CastleCameras.TCamera.html">TCamera</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="CastleSceneManager.TCastleAbstractViewport.html#Notification">Notification</a></b>(AComponent: TComponent; Operation: TOperation); override;</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="CastleSceneManager.TCastleAbstractViewport.html#SetContainer">SetContainer</a></b>(const Value: <a  href="CastleUIControls.TUIContainer.html">TUIContainer</a>); override;</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="CastleSceneManager.TCastleAbstractViewport.html#GetItems">GetItems</a></b>: <a  href="Castle3D.T3DWorld.html">T3DWorld</a>; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#GetMainScene">GetMainScene</a></b>: <a  href="CastleScene.TCastleScene.html">TCastleScene</a>; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#GetShadowVolumeRenderer">GetShadowVolumeRenderer</a></b>: <a  href="CastleGLShadowVolumes.TGLShadowVolumeRenderer.html">TGLShadowVolumeRenderer</a>; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#GetMouseRayHit">GetMouseRayHit</a></b>: <a  href="Castle3D.TRayCollision.html">TRayCollision</a>; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#GetHeadlightCamera">GetHeadlightCamera</a></b>: <a  href="CastleCameras.TCamera.html">TCamera</a>; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#GetPlayer">GetPlayer</a></b>: <a  href="CastlePlayer.TPlayer.html">TPlayer</a>; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#GetTimeScale">GetTimeScale</a></b>: Single; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#PointingDeviceMove">PointingDeviceMove</a></b>(const RayOrigin, RayDirection: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>): boolean; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#PointingDeviceActivate">PointingDeviceActivate</a></b>(const Active: boolean): boolean; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#CameraMoveAllowed">CameraMoveAllowed</a></b>(ACamera: <a  href="CastleCameras.TWalkCamera.html">TWalkCamera</a>; const ProposedNewPos: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>; out NewPos: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>; const BecauseOfGravity: boolean): boolean; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#CameraHeight">CameraHeight</a></b>(ACamera: <a  href="CastleCameras.TWalkCamera.html">TWalkCamera</a>; const Position: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>; out AboveHeight: Single; out AboveGround: <a  href="CastleTriangles.html#P3DTriangle">P3DTriangle</a>): boolean; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#CameraRayCollision">CameraRayCollision</a></b>(const RayOrigin, RayDirection: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>): <a  href="Castle3D.TRayCollision.html">TRayCollision</a>; virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#CameraVisibleChange">CameraVisibleChange</a></b>(ACamera: TObject); virtual; abstract;</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="CastleSceneManager.TCastleAbstractViewport.html#GetScreenEffects">GetScreenEffects</a></b>(const Index: Integer): <a  href="CastleGLShaders.TGLSLProgram.html">TGLSLProgram</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>constructor <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Create">Create</a></b>(AOwner: TComponent); 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>destructor <b><a  href="CastleSceneManager.TCastleAbstractViewport.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>procedure <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#ContainerResize">ContainerResize</a></b>(const AContainerWidth, AContainerHeight: Cardinal); 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>function <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#PositionInside">PositionInside</a></b>(const Position: <a  href="CastleVectors.html#TVector2Single">TVector2Single</a>): boolean; 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="CastleSceneManager.TCastleAbstractViewport.html#AllowSuspendForInput">AllowSuspendForInput</a></b>: boolean; 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>function <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Press">Press</a></b>(const Event: <a  href="CastleKeysMouse.TInputPressRelease.html">TInputPressRelease</a>): boolean; 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="CastleSceneManager.TCastleAbstractViewport.html#Release">Release</a></b>(const Event: <a  href="CastleKeysMouse.TInputPressRelease.html">TInputPressRelease</a>): boolean; 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>function <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Motion">Motion</a></b>(const Event: <a  href="CastleKeysMouse.TInputMotion.html">TInputMotion</a>): boolean; 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="CastleSceneManager.TCastleAbstractViewport.html#SensorRotation">SensorRotation</a></b>(const X, Y, Z, Angle: Double; const SecondsPassed: Single): boolean; 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>function <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#SensorTranslation">SensorTranslation</a></b>(const X, Y, Z, Length: Double; const SecondsPassed: Single): boolean; 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>procedure <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Update">Update</a></b>(const SecondsPassed: Single; var HandleInput: boolean); 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>function <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Rect">Rect</a></b>: <a  href="CastleRectangles.TRectangle.html">TRectangle</a>; 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="CastleSceneManager.TCastleAbstractViewport.html#CreateDefaultCamera">CreateDefaultCamera</a></b>(AOwner: TComponent): <a  href="CastleCameras.TCamera.html">TCamera</a>; virtual; abstract; 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>function <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#CreateDefaultCamera">CreateDefaultCamera</a></b>: <a  href="CastleCameras.TCamera.html">TCamera</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="CastleSceneManager.TCastleAbstractViewport.html#CameraAnimateToDefault">CameraAnimateToDefault</a></b>(const Time: <a  href="CastleTimeUtils.html#TFloatTime">TFloatTime</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="CastleSceneManager.TCastleAbstractViewport.html#ScreenEffectsCount">ScreenEffectsCount</a></b>: Integer; 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>function <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#ScreenEffectsNeedDepth">ScreenEffectsNeedDepth</a></b>: 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="CastleSceneManager.TCastleAbstractViewport.html#ScreenSpaceAmbientOcclusionAvailable">ScreenSpaceAmbientOcclusionAvailable</a></b>: 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>procedure <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#GLContextOpen">GLContextOpen</a></b>; 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>procedure <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#GLContextClose">GLContextClose</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="CastleSceneManager.TCastleAbstractViewport.html#HeadlightInstance">HeadlightInstance</a></b>(out Instance: <a  href="X3DNodes.TLightInstance.html">TLightInstance</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="CastleSceneManager.TCastleAbstractViewport.html#BaseLights">BaseLights</a></b>: <a  href="X3DNodes.TLightInstancesList.html">TLightInstancesList</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="CastleSceneManager.TCastleAbstractViewport.html#Statistics">Statistics</a></b>: <a  href="Castle3D.TRenderStatistics.html">TRenderStatistics</a>;</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="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#RenderStyle">RenderStyle</a></b> default rs3D;</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="CastleSceneManager.TCastleAbstractViewport.html#Projection">Projection</a></b>: <a  href="CastleRays.TProjection.html">TProjection</a> read FProjection;</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="CastleSceneManager.TCastleAbstractViewport.html#ScreenEffects">ScreenEffects</a></b> [Index:Integer]: <a  href="CastleGLShaders.TGLSLProgram.html">TGLSLProgram</a> read <a  href="CastleSceneManager.TCastleAbstractViewport.html#GetScreenEffects">GetScreenEffects</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>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#BackgroundColor">BackgroundColor</a></b>: <a  href="CastleColors.html#TCastleColor">TCastleColor</a>
      read FBackgroundColor write FBackgroundColor;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#FullSize">FullSize</a></b>: boolean read FFullSize write FFullSize default true;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Width">Width</a></b>: Cardinal read FWidth write FWidth default 0;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Height">Height</a></b>: Cardinal read FHeight write FHeight default 0;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Camera">Camera</a></b>: <a  href="CastleCameras.TCamera.html">TCamera</a> read FCamera write <a  href="CastleSceneManager.TCastleAbstractViewport.html#SetCamera">SetCamera</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Paused">Paused</a></b>: boolean read FPaused write FPaused default false;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#OnRender3D">OnRender3D</a></b>: <a  href="CastleSceneManager.html#TRender3DEvent">TRender3DEvent</a> read FOnRender3D write FOnRender3D;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#ShadowVolumes">ShadowVolumes</a></b>: boolean
      read FShadowVolumes write FShadowVolumes default <a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultShadowVolumes">DefaultShadowVolumes</a>;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#ShadowVolumesRender">ShadowVolumesRender</a></b>: boolean read FShadowVolumesRender write FShadowVolumesRender default false;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#BackgroundWireframe">BackgroundWireframe</a></b>: boolean
      read FBackgroundWireframe write FBackgroundWireframe default false;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#Transparent">Transparent</a></b>: boolean read FTransparent write FTransparent default false;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#HeadlightFromViewport">HeadlightFromViewport</a></b>: boolean
      read FHeadlightFromViewport write FHeadlightFromViewport default false; deprecated;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#UseGlobalLights">UseGlobalLights</a></b>: boolean
      read FUseGlobalLights write FUseGlobalLights default <a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultUseGlobalLights">DefaultUseGlobalLights</a>;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#ApproximateActivation">ApproximateActivation</a></b>: boolean
      read FApproximateActivation write FApproximateActivation default false;</code></td>
</tr>
<tr class="list2">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultVisibilityLimit">DefaultVisibilityLimit</a></b>: Single
      read FDefaultVisibilityLimit write FDefaultVisibilityLimit default 0.0;</code></td>
</tr>
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><code>property <b><a  href="CastleSceneManager.TCastleAbstractViewport.html#ScreenSpaceAmbientOcclusion">ScreenSpaceAmbientOcclusion</a></b>: boolean
      read FScreenSpaceAmbientOcclusion write SetScreenSpaceAmbientOcclusion
      default <a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultScreenSpaceAmbientOcclusion">DefaultScreenSpaceAmbientOcclusion</a>;</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="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="DefaultScreenSpaceAmbientOcclusion"></a><code>internal const <b>DefaultScreenSpaceAmbientOcclusion</b> = false;</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="DefaultUseGlobalLights"></a><code>internal const <b>DefaultUseGlobalLights</b> = true;</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="DefaultShadowVolumes"></a><code>internal const <b>DefaultShadowVolumes</b> = true;</code></td>
</tr>
<tr><td colspan="2">
&nbsp;</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="CalculateProjection"></a><code>function <b>CalculateProjection</b>: <a  href="CastleRays.TProjection.html">TProjection</a>; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
The <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Projection">projection</a> parameters. Determines if the view is perspective or orthogonal and exact field of view parameters. Used by our Render method.

<p>The default implementation is <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html">TCastleAbstractViewport</a> calculates <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Projection">projection</a> based on MainScene currently bound Viewpoint, NavigationInfo and used <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Camera">Camera</a>. If scene manager's MainScene is not assigned, we use some default sensible perspective <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Projection">projection</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="Render3D"></a><code>procedure <b>Render3D</b>(const Params: <a  href="Castle3D.TRenderParams.html">TRenderParams</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Render one pass, with current camera and parameters. All current camera settings are saved in <a class="normal" href="CastleRenderingCamera.html#RenderingCamera">RenderingCamera</a>, and the camera matrix is already loaded to OpenGL.

<p>If you want to display something 3D during rendering, this is the simplest method to override. (Or you can use <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#OnRender3D">OnRender3D</a> event, which is called at the end of this method.) Alternatively, you can create new <a class="normal" href="Castle3D.T3D.html">T3D</a> descendant and add it to the <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#GetItems">GetItems</a> list.

<p></p>
<h6 class="description_section">Parameters</h6>
<dl class="parameters">
<dt>Params</dt>
<dd>Parameters specify what lights should be used (Params.BaseLights, Params.InShadow), and which parts of the 3D scene should be rendered (Params.Transparent, Params.ShadowVolumesReceivers &mdash; only matching 3D objects should be rendered by this method).</dd>
</dl>
</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="RenderShadowVolume"></a><code>procedure <b>RenderShadowVolume</b>; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Render shadow quads for all the things rendered by <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Render3D">Render3D</a>. You can use here ShadowVolumeRenderer instance, which is guaranteed to be initialized with <a class="normal" href="CastleGLShadowVolumes.TGLShadowVolumeRenderer.html#InitFrustumAndLight">TGLShadowVolumeRenderer.InitFrustumAndLight</a>, so you can do shadow volumes culling.</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="RenderFromViewEverything"></a><code>procedure <b>RenderFromViewEverything</b>; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Render everything from current (in <a class="normal" href="CastleRenderingCamera.html#RenderingCamera">RenderingCamera</a>) camera view. Current RenderingCamera.Target says to where we generate the image. Takes method must take care of making many rendering passes for shadow volumes, but doesn't take care of updating generated textures.</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="InitializeLights"></a><code>procedure <b>InitializeLights</b>(const Lights: <a  href="X3DNodes.TLightInstancesList.html">TLightInstancesList</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Prepare lights shining on everything. <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#BaseLights">BaseLights</a> contents should be initialized here.

<p>The implementation in this class adds headlight determined by the <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Headlight">Headlight</a> method. By default, this looks at the MainScene, and follows NavigationInfo.headlight and KambiNavigationInfo.headlightNode properties.</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="Headlight"></a><code>function <b>Headlight</b>: <a  href="X3DNodes.TAbstractLightNode.html">TAbstractLightNode</a>; virtual; abstract;</code></td>
</tr>
<tr><td colspan="2">
<p>
Headlight used to light the scene. Returns non-nil headlight node, if headlight is present, or <code>Nil</code> when no headlight.

<p>Default implementation of this method in <a class="normal" href="CastleSceneManager.TCastleSceneManager.html">TCastleSceneManager</a> looks at the MainScene headlight. We return if MainScene is assigned and <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#HeadlightOn">TCastleSceneCore.HeadlightOn</a> is <code>True</code>. (HeadlightOn in turn looks at information in VRML/X3D file (NavigationInfo.headlight) and you can also always set HeadlightOn explicitly by code.) The custom light node is obtained from <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#CustomHeadlight">TCastleSceneCore.CustomHeadlight</a>, eventually using a default directional light node for a simple headlight.

<p>Default implementation of this method in <a class="normal" href="CastleSceneManager.TCastleViewport.html">TCastleViewport</a> looks at SceneManager.Headlight.

<p>You can override this method to determine the headlight in any other way.</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="RenderFromView3D"></a><code>procedure <b>RenderFromView3D</b>(const Params: <a  href="Castle3D.TRenderParams.html">TRenderParams</a>); virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Render the 3D part of scene. Called by <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#RenderFromViewEverything">RenderFromViewEverything</a> at the end, when everything (clearing, background, headlight, loading camera matrix) is done and all that remains is to pass to OpenGL actual 3D world.

<p>This will change Params.Transparent, Params.InShadow and Params.ShadowVolumesReceivers as needed. Their previous values do not matter.</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="Background"></a><code>function <b>Background</b>: <a  href="CastleBackground.TBackground.html">TBackground</a>; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
The background used during rendering. <code>Nil</code> if no background should be rendered.

<p>The default implementation in this class does what is usually most natural: return MainScene.Background, if MainScene assigned.</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="MainLightForShadows"></a><code>function <b>MainLightForShadows</b>( out AMainLightPosition: <a  href="CastleVectors.html#TVector4Single">TVector4Single</a>): boolean; virtual;</code></td>
</tr>
<tr><td colspan="2">
<p>
Detect position/direction of the main light that produces shadows. The default implementation in this class looks at MainScene.MainLightForShadows.

<p></p>
<h6 class="description_section">See also</h6>
<dl class="see_also">
  <dt><a class="normal" href="CastleSceneCore.TCastleSceneCore.html#MainLightForShadows">TCastleSceneCore.MainLightForShadows</a></dt>
  <dd>Detect position/direction of the main light that produces shadows.</dd>
</dl>
</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="SetCamera"></a><code>procedure <b>SetCamera</b>(const Value: <a  href="CastleCameras.TCamera.html">TCamera</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="Notification"></a><code>procedure <b>Notification</b>(AComponent: TComponent; Operation: TOperation); 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="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="SetContainer"></a><code>procedure <b>SetContainer</b>(const Value: <a  href="CastleUIControls.TUIContainer.html">TUIContainer</a>); 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="protected.gif" alt="Protected" title="Protected"></a></td>
<td class="itemcode"><a name="GetItems"></a><code>function <b>GetItems</b>: <a  href="Castle3D.T3DWorld.html">T3DWorld</a>; virtual; abstract;</code></td>
</tr>
<tr><td colspan="2">
<p>
Information about the 3D world. For scene maager, these methods simply return it's own properties. For <a class="normal" href="CastleSceneManager.TCastleViewport.html">TCastleViewport</a>, these methods refer to scene manager. </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="GetMainScene"></a><code>function <b>GetMainScene</b>: <a  href="CastleScene.TCastleScene.html">TCastleScene</a>; virtual; abstract;</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="GetShadowVolumeRenderer"></a><code>function <b>GetShadowVolumeRenderer</b>: <a  href="CastleGLShadowVolumes.TGLShadowVolumeRenderer.html">TGLShadowVolumeRenderer</a>; virtual; abstract;</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="GetMouseRayHit"></a><code>function <b>GetMouseRayHit</b>: <a  href="Castle3D.TRayCollision.html">TRayCollision</a>; virtual; abstract;</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="GetHeadlightCamera"></a><code>function <b>GetHeadlightCamera</b>: <a  href="CastleCameras.TCamera.html">TCamera</a>; virtual; abstract;</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="GetPlayer"></a><code>function <b>GetPlayer</b>: <a  href="CastlePlayer.TPlayer.html">TPlayer</a>; virtual; abstract;</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="GetTimeScale"></a><code>function <b>GetTimeScale</b>: Single; virtual; abstract;</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="PointingDeviceMove"></a><code>function <b>PointingDeviceMove</b>(const RayOrigin, RayDirection: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>): boolean; virtual; abstract;</code></td>
</tr>
<tr><td colspan="2">
<p>
Pass pointing device (mouse) move event to 3D world.</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="PointingDeviceActivate"></a><code>function <b>PointingDeviceActivate</b>(const Active: boolean): boolean; virtual; abstract;</code></td>
</tr>
<tr><td colspan="2">
<p>
Pass pointing device (mouse) activation/deactivation event to 3D world.</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="CameraMoveAllowed"></a><code>function <b>CameraMoveAllowed</b>(ACamera: <a  href="CastleCameras.TWalkCamera.html">TWalkCamera</a>; const ProposedNewPos: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>; out NewPos: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>; const BecauseOfGravity: boolean): boolean; virtual; abstract;</code></td>
</tr>
<tr><td colspan="2">
<p>
Handle camera events.

<p>Scene manager implements collisions by looking at 3D scene, custom viewports implements collisions by calling their scene manager.

<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="CameraHeight"></a><code>function <b>CameraHeight</b>(ACamera: <a  href="CastleCameras.TWalkCamera.html">TWalkCamera</a>; const Position: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>; out AboveHeight: Single; out AboveGround: <a  href="CastleTriangles.html#P3DTriangle">P3DTriangle</a>): boolean; virtual; abstract;</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="CameraRayCollision"></a><code>function <b>CameraRayCollision</b>(const RayOrigin, RayDirection: <a  href="CastleVectors.html#TVector3Single">TVector3Single</a>): <a  href="Castle3D.TRayCollision.html">TRayCollision</a>; virtual; abstract;</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="CameraVisibleChange"></a><code>procedure <b>CameraVisibleChange</b>(ACamera: TObject); virtual; abstract;</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="GetScreenEffects"></a><code>function <b>GetScreenEffects</b>(const Index: Integer): <a  href="CastleGLShaders.TGLSLProgram.html">TGLSLProgram</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="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="Create"></a><code>constructor <b>Create</b>(AOwner: TComponent); 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="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="ContainerResize"></a><code>procedure <b>ContainerResize</b>(const AContainerWidth, AContainerHeight: Cardinal); 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="PositionInside"></a><code>function <b>PositionInside</b>(const Position: <a  href="CastleVectors.html#TVector2Single">TVector2Single</a>): boolean; 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="AllowSuspendForInput"></a><code>function <b>AllowSuspendForInput</b>: boolean; 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="Press"></a><code>function <b>Press</b>(const Event: <a  href="CastleKeysMouse.TInputPressRelease.html">TInputPressRelease</a>): boolean; 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="Release"></a><code>function <b>Release</b>(const Event: <a  href="CastleKeysMouse.TInputPressRelease.html">TInputPressRelease</a>): boolean; 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="Motion"></a><code>function <b>Motion</b>(const Event: <a  href="CastleKeysMouse.TInputMotion.html">TInputMotion</a>): boolean; 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="SensorRotation"></a><code>function <b>SensorRotation</b>(const X, Y, Z, Angle: Double; const SecondsPassed: Single): boolean; 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="SensorTranslation"></a><code>function <b>SensorTranslation</b>(const X, Y, Z, Length: Double; const SecondsPassed: Single): boolean; 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="Update"></a><code>procedure <b>Update</b>(const SecondsPassed: Single; var HandleInput: boolean); 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="Rect"></a><code>function <b>Rect</b>: <a  href="CastleRectangles.TRectangle.html">TRectangle</a>; override;</code></td>
</tr>
<tr><td colspan="2">
<p>
Position and size of the viewport, assuming it <a class="normal" href="CastleUIControls.TUIControl.html#Exists">exists</a>.

<p>Looks at <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#FullSize">FullSize</a> value, and the current container sizes (when <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#FullSize">FullSize</a> is <code>True</code>), and at the properties <a class="normal" href="CastleUIControls.TUIRectangularControl.html#Left">Left</a>, <a class="normal" href="CastleUIControls.TUIRectangularControl.html#Bottom">Bottom</a>, <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Width">Width</a>, <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Height">Height</a> (when <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#FullSize">FullSize</a> is <code>False</code>).</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="CreateDefaultCamera"></a><code>function <b>CreateDefaultCamera</b>(AOwner: TComponent): <a  href="CastleCameras.TCamera.html">TCamera</a>; virtual; abstract; overload;</code></td>
</tr>
<tr><td colspan="2">
<p>
Create default <a class="normal" href="CastleCameras.TCamera.html">TCamera</a> suitable for navigating in this scene. This is automatically used to initialize <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Camera">Camera</a> property when <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Camera">Camera</a> is <code>Nil</code> at ApplyProjection call.

<p>The implementation in base <a class="normal" href="CastleSceneManager.TCastleSceneManager.html">TCastleSceneManager</a> uses MainScene.CreateCamera (so it will follow your VRML/X3D scene Viewpoint, NavigationInfo and such). If MainScene is not assigned, we will just create a simple <a class="normal" href="CastleCameras.TUniversalCamera.html">TUniversalCamera</a> in (initially) Examine mode.

<p>The implementation in <a class="normal" href="CastleSceneManager.TCastleViewport.html">TCastleViewport</a> simply calls SceneManager.CreateDefaultCamera. So by default all the viewport's cameras are created the same way, by refering to the scene manager. If you want you can override it to specialize <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#CreateDefaultCamera">CreateDefaultCamera</a> for specific viewport classes.

<p>Overloaded version without any parameters just uses Self as owner of the camera.

<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="CreateDefaultCamera"></a><code>function <b>CreateDefaultCamera</b>: <a  href="CastleCameras.TCamera.html">TCamera</a>; 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="CameraAnimateToDefault"></a><code>procedure <b>CameraAnimateToDefault</b>(const Time: <a  href="CastleTimeUtils.html#TFloatTime">TFloatTime</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Smoothly animate current <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Camera">Camera</a> to a default camera settings.

<p>Default camera settings are determined by calling <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#CreateDefaultCamera">CreateDefaultCamera</a>. See <a class="normal" href="CastleCameras.TCamera.html#AnimateTo">TCamera.AnimateTo</a> for details what and how is animated.

<p>Current <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Camera">Camera</a> is created by <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#CreateDefaultCamera">CreateDefaultCamera</a> if not assigned yet at this point. (And the animation isn't done, since such camera already stands at the default position.) This makes this method consistent: after calling it, you always know that <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Camera">Camera</a> is assigned and going to the default 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="ScreenEffectsCount"></a><code>function <b>ScreenEffectsCount</b>: Integer; 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="ScreenEffectsNeedDepth"></a><code>function <b>ScreenEffectsNeedDepth</b>: boolean; 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="ScreenSpaceAmbientOcclusionAvailable"></a><code>function <b>ScreenSpaceAmbientOcclusionAvailable</b>: boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Does the graphic card support our <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#ScreenSpaceAmbientOcclusion">ScreenSpaceAmbientOcclusion</a> shader. This does <i>not</i> depend on the current state of <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#ScreenSpaceAmbientOcclusion">ScreenSpaceAmbientOcclusion</a> property. You can use it e.g. to disable the menu item to switch SSAO in 3D viewer.</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="GLContextOpen"></a><code>procedure <b>GLContextOpen</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="GLContextClose"></a><code>procedure <b>GLContextClose</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="HeadlightInstance"></a><code>function <b>HeadlightInstance</b>(out Instance: <a  href="X3DNodes.TLightInstance.html">TLightInstance</a>): boolean;</code></td>
</tr>
<tr><td colspan="2">
<p>
Instance for headlight that should be used for this scene. Uses <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Headlight">Headlight</a> method, applies appropriate camera position/direction. Returns <code>True</code> only if <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Headlight">Headlight</a> method returned <code>True</code> and a suitable camera was present.

<p>Instance should be considered undefined (&quot;out&quot; parameter) when we return <code>False</code>.</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="BaseLights"></a><code>function <b>BaseLights</b>: <a  href="X3DNodes.TLightInstancesList.html">TLightInstancesList</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Base lights used for rendering. Uses <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#InitializeLights">InitializeLights</a>, and returns instance owned and managed by this scene manager. You can only use this outside PrepareResources or Render, as they may change this 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="Statistics"></a><code>function <b>Statistics</b>: <a  href="Castle3D.TRenderStatistics.html">TRenderStatistics</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Statistics about last rendering frame. See <a class="normal" href="Castle3D.TRenderStatistics.html">TRenderStatistics</a> docs.</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="public.gif" alt="Public" title="Public"></a></td>
<td class="itemcode"><a name="RenderStyle"></a><code>property <b>RenderStyle</b> default rs3D;</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="Projection"></a><code>property <b>Projection</b>: <a  href="CastleRays.TProjection.html">TProjection</a> read FProjection;</code></td>
</tr>
<tr><td colspan="2">
<p>
Current <code>projection</code> parameters, calculated by last <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#CalculateProjection">CalculateProjection</a> call. <b>Read only</b>, change these parameters only by overriding <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#CalculateProjection">CalculateProjection</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="ScreenEffects"></a><code>property <b>ScreenEffects</b> [Index:Integer]: <a  href="CastleGLShaders.TGLSLProgram.html">TGLSLProgram</a> read <a  href="CastleSceneManager.TCastleAbstractViewport.html#GetScreenEffects">GetScreenEffects</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Screen effects are shaders that post-process the rendered screen. If any screen effects are active, we will automatically render screen to a temporary texture, processing it with each shader.

<p>By default, screen effects come from GetMainScene.ScreenEffects, so the effects may be defined by VRML/X3D author using ScreenEffect nodes (see docs: [<a  href="http://castle-engine.sourceforge.net/x3d_extensions_screen_effects.php">http://castle-engine.sourceforge.net/x3d_extensions_screen_effects.php</a>]). Descendants may override <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#GetScreenEffects">GetScreenEffects</a>, <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#ScreenEffectsCount">ScreenEffectsCount</a>, and <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#ScreenEffectsNeedDepth">ScreenEffectsNeedDepth</a> to add screen effects by code. Each viewport may have it's own, different screen effects.

<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="BackgroundColor"></a><code>property <b>BackgroundColor</b>: <a  href="CastleColors.html#TCastleColor">TCastleColor</a>
      read FBackgroundColor write FBackgroundColor;</code></td>
</tr>
<tr><td colspan="2">
<p>
Background color, displayed behind the 3D world. Unless the MainScene has a Background node defined, in which case the Background (colored and/or textured) of the 3D scene is used.

<p><a class="normal" href="CastleColors.html#Black">Black</a> by default.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="FullSize"></a><code>property <b>FullSize</b>: boolean read FFullSize write FFullSize default true;</code></td>
</tr>
<tr><td colspan="2">
<p>
Viewport dimensions where the 3D world will be drawn. When <code>FullSize</code> is <code>True</code> (the default), the viewport always fills the whole container (like <a class="normal" href="CastleWindow.TCastleWindow.html">TCastleWindow</a> or <a class="normal" href="CastleControl.TCastleControl.html">TCastleControl</a>), and the values of Left, Bottom, Width, Height are ignored here.

<p>

<p></p>
<h6 class="description_section">See also</h6>
<dl class="see_also">
  <dt><a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Rect">Rect</a></dt>
  <dd>Position and size of the viewport, assuming it <a class="normal" href="CastleUIControls.TUIControl.html#Exists">exists</a>.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="Width"></a><code>property <b>Width</b>: Cardinal read FWidth write FWidth default 0;</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="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="Height"></a><code>property <b>Height</b>: Cardinal read FHeight write FHeight default 0;</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="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="Camera"></a><code>property <b>Camera</b>: <a  href="CastleCameras.TCamera.html">TCamera</a> read FCamera write <a  href="CastleSceneManager.TCastleAbstractViewport.html#SetCamera">SetCamera</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Camera used to render.

<p>Cannot be <code>Nil</code> when rendering. If you don't assign anything here, we'll create a default camera object at the nearest ApplyProjection call (this is the first moment when we really must have some camera). This default camera will be created by <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#CreateDefaultCamera">CreateDefaultCamera</a>.

<p>This camera <i>should not</i> be inside some other container (like on <a class="normal" href="CastleWindow.TCastleWindowCustom.html#Controls">TCastleWindowCustom.Controls</a> or <a class="normal" href="CastleControl.TCastleControlCustom.html#Controls">TCastleControlCustom.Controls</a> list). Scene manager / viewport will handle passing events to the camera on it's own, we will also pass our own Container to Camera.Container. This is desired, this way events are correctly passed and interpreted before passing them to 3D objects. And this way we avoid the question whether camera should be before or after the scene manager / viewport on the Controls list (as there's really no perfect ordering for them).

<p>Scene manager / viewport will &quot;hijack&quot; some Camera events: TCamera.OnVisibleChange, <a class="normal" href="CastleCameras.TWalkCamera.html#OnMoveAllowed">TWalkCamera.OnMoveAllowed</a>, <a class="normal" href="CastleCameras.TWalkCamera.html#OnHeight">TWalkCamera.OnHeight</a>, TCamera.OnCursorChange. We will handle them in a proper way.

<p><i>For <a class="normal" href="CastleSceneManager.TCastleViewport.html">TCastleViewport</a> only:</i> The <a class="normal" href="CastleSceneManager.TCastleViewport.html">TCastleViewport</a>'s camera is slightly less important than TCastleSceneManager.Camera, because TCastleSceneManager.Camera may be treated as a &quot;central&quot; camera. Viewport's camera may not (because you may have many viewports and they all deserve fair treatment). So e.g. headlight is done only from TCastleSceneManager.Camera (for mirror textures, there must be one headlight for your 3D world). Also VRML/X3D ProximitySensors receive events only from TCastleSceneManager.Camera.

<p>TODO: In the future it should be possible (even encouraged) to assign one of your custom viewport cameras also to TCastleSceneManager.Camera. It should also be possible to share one camera instance among a couple of viewports. For now, it doesn't work (last viewport/scene manager will hijack some camera events making it not working in other ones).

<p></p>
<h6 class="description_section">See also</h6>
<dl class="see_also">
  <dt><a class="normal" href="CastleSceneManager.TCastleSceneManager.html#OnCameraChanged">TCastleSceneManager.OnCameraChanged</a></dt>
  <dd>Called on any camera change.</dd>
</dl>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="Paused"></a><code>property <b>Paused</b>: boolean read FPaused write FPaused default false;</code></td>
</tr>
<tr><td colspan="2">
<p>
For scene manager: you can pause everything inside your 3D world, for viewport: you can make the camera of this viewpoint paused (not responsive).

<p><i>For scene manager:</i>

<p>&quot;Paused&quot; means that no events (key, mouse, <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Update">Update</a>) are passed to any <a class="normal" href="CastleSceneManager.TCastleSceneManager.html#Items">TCastleSceneManager.Items</a> or the <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Camera">Camera</a>. This is suitable if you really want to totally, unconditionally, make your 3D world view temporary still (for example, useful when entering some modal dialog box and you want 3D scene to behave as a still background).

<p>You can of course still directly change some scene property, and then 3D world will change. But no change will be initialized automatically by scene manager events.

<p><i>See also</i>: For less drastic pausing methods, there are other methods of pausing / disabling some events processing for the 3D world:

<p></p>

<ul class="paragraph_spacing">
  <li><p>You can set TCastleScene.TimePlaying or <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimePlaying">TCastlePrecalculatedAnimation.TimePlaying</a> to <code>False</code>. This is roughly equivalent to not running their <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Update">Update</a> methods. This means that time will &quot;stand still&quot; for them, so their animations will not play. Although they may still react and change in response to mouse clicks / key presses, if TCastleScene.ProcessEvents.</p></li>
  <li><p>You can set TCastleScene.ProcessEvents to <code>False</code>. This means that scene will not receive and process any key / mouse and other events (through VRML/X3D sensors). Some animations (not depending on VRML/X3D events processing) may still run, for example MovieTexture will still animate, if only TCastleScene.TimePlaying.</p></li>
  <li><p>For cameras, you can set <code><a class="normal" href="CastleCameras.TCamera.html#Input">TCamera.Input</a> := []</code> to ignore key / mouse clicks.</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="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="OnRender3D"></a><code>property <b>OnRender3D</b>: <a  href="CastleSceneManager.html#TRender3DEvent">TRender3DEvent</a> read FOnRender3D write FOnRender3D;</code></td>
</tr>
<tr><td colspan="2">
<p>
See <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Render3D">Render3D</a> method.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="ShadowVolumes"></a><code>property <b>ShadowVolumes</b>: boolean
      read FShadowVolumes write FShadowVolumes default <a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultShadowVolumes">DefaultShadowVolumes</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Should we render with shadow volumes. You can change this at any time, to switch rendering shadows on/off.

<p>This works only if OpenGL context actually can render shadow volumes, checked by GLFeatures.ShadowVolumesPossible, which means that you have to initialize OpenGL context with stencil buffer.

<p>The shadow volumes algorithm is used only if shadow caster is 2-manifold, that is has a correctly closed volume. Also you need a light source marked as the main shadow volumes light (<code>shadowVolumes</code> = shadowVolumesMain = TRUE). See [<a  href="http://castle-engine.sourceforge.net/x3d_extensions.php#section_ext_shadows">http://castle-engine.sourceforge.net/x3d_extensions.php#section_ext_shadows</a>] for details.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="ShadowVolumesRender"></a><code>property <b>ShadowVolumesRender</b>: boolean read FShadowVolumesRender write FShadowVolumesRender default false;</code></td>
</tr>
<tr><td colspan="2">
<p>
Actually draw the shadow volumes to the color buffer, for debugging. If shadows are rendered (see GLFeatures.ShadowVolumesPossible and <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#ShadowVolumes">ShadowVolumes</a>), you can use this to actually see shadow volumes, for debug / demo purposes. Shadow volumes will be rendered on top of the scene, as <a class="normal" href="CastleColors.html#Yellow">yellow</a> blended polygons.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="BackgroundWireframe"></a><code>property <b>BackgroundWireframe</b>: boolean
      read FBackgroundWireframe write FBackgroundWireframe default false;</code></td>
</tr>
<tr><td colspan="2">
<p>
If yes then the scene background will be rendered wireframe, over the background filled with <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#BackgroundColor">BackgroundColor</a>.

<p>There's a catch here: this works only if the background is actually internally rendered as a geometry. If the background is rendered by clearing the screen (this is an optimized case of sky color being just one simple color, and no textures), then it will just cover the screen as normal, like without wireframe. This is uncertain situation anyway (what should the wireframe look like in this case anyway?), so I don't consider it a bug.

<p>Useful especially for debugging when you want to see how your background geometry looks like.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="Transparent"></a><code>property <b>Transparent</b>: boolean read FTransparent write FTransparent default false;</code></td>
</tr>
<tr><td colspan="2">
<p>
If yes then we will not draw any background, letting the window contents underneath be visible (in places where we do not draw our own 3D geometry, or where our own geometry is transparent, e.g. by Material.transparency). For this to make sense, make sure that you always place some other 2D control under this viewport, that actually draws something predictable underneath.

<p>The normal background, derived from <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Background">Background</a> will be ignored. We will also not do any <a class="normal" href="CastleGLUtils.html#GLClear">GLClear</a> on color buffer. Also <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#BackgroundWireframe">BackgroundWireframe</a> and <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#BackgroundColor">BackgroundColor</a> doesn't matter in this case.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="HeadlightFromViewport"></a><code>property <b>HeadlightFromViewport</b>: boolean
      read FHeadlightFromViewport write FHeadlightFromViewport default false; deprecated;</code></td>
</tr>
<tr><td colspan="2">
<p class="hint_directive">Warning: this symbol is deprecated.</p><p>
When <code>True</code> then headlight is always rendered from custom viewport's (<a class="normal" href="CastleSceneManager.TCastleViewport.html">TCastleViewport</a>) camera, not from central camera (the one in scene manager). This is meaningless in <a class="normal" href="CastleSceneManager.TCastleSceneManager.html">TCastleSceneManager</a>.

<p>By default this is <code>False</code>, which means that when rendering custom viewport (<a class="normal" href="CastleSceneManager.TCastleViewport.html">TCastleViewport</a>) we render headlight from TCastleViewport.SceneManager.Camera (not from current viewport's TCastleViewport.Camera). On one hand, this is sensible: there is exactly one headlight in your 3D world, and it shines from a central camera in SceneManager.Camera. When SceneManager.Camera is <code>Nil</code> (which may happen if you set SceneManager.DefaultViewport := false and you didn't assign SceneManager.Camera explicitly) headlight is never done. This means that when observing 3D world from other cameras, you will see a light shining from SceneManager.Camera. This is also the only way to make headlight lighting correctly reflected in mirror textures (like GeneratedCubeMapTexture) &mdash; since we render to one mirror texture, we need a knowledge of &quot;cental&quot; camera for this.

<p>When this is <code>True</code>, then each viewport actually renders headlight from it's current camera. This means that actually each viewport has it's own, independent headlight (althoug they all follow VRML/X3D NavigationInfo.headlight and KambiNavigationInfo settings). This may allow you to light your view better (if you only use headlight to &quot;just make the view brighter&quot;), but it's not entirely correct (in particular, mirror reflections of the headlight are undefined then).

<p> This is deprecated, since <code>HeadlightFromViewport</code> = <code>True</code> is not really nicely defined, and it's not practically that useful either.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="UseGlobalLights"></a><code>property <b>UseGlobalLights</b>: boolean
      read FUseGlobalLights write FUseGlobalLights default <a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultUseGlobalLights">DefaultUseGlobalLights</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Let MainScene.GlobalLights shine on every 3D object, not only MainScene. This is an easy way to lit your whole world with lights defined inside MainScene file. Be sure to set lights global=TRUE.

<p>Note that for now this assumes that MainScene coordinates equal world coordinates. This means that you should not transform the MainScene, it should be placed inside <a class="normal" href="CastleSceneManager.TCastleSceneManager.html#Items">TCastleSceneManager.Items</a> without wrapping in any <a class="normal" href="Castle3D.T3DTransform.html">T3DTransform</a>.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="ApproximateActivation"></a><code>property <b>ApproximateActivation</b>: boolean
      read FApproximateActivation write FApproximateActivation default false;</code></td>
</tr>
<tr><td colspan="2">
<p>
Help user to activate pointing device sensors and pick items. Every time you press or release <a class="normal" href="CastleSceneManager.html#Input_Interact">Input_Interact</a> (by default just left mouse button), we look if current mouse position hits 3D object that actually does something on activation. 3D objects may do various stuff inside <a class="normal" href="Castle3D.T3D.html#PointingDeviceActivate">T3D.PointingDeviceActivate</a>, generally this causes various picking/interaction with the 3D object (like pulling a level, opening a door), possibly dragging, possibly with the help of VRML/X3D pointing device and drag sensors.

<p>When this is <code>True</code>, we try harder to hit some 3D object that handles <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#PointingDeviceActivate">PointingDeviceActivate</a>. If there's nothing interesting under mouse, we will retry a couple of other positions arount the current mouse.

<p>This should be usually used when you use <a class="normal" href="CastleCameras.TWalkCamera.html#MouseLook">TWalkCamera.MouseLook</a>, or other navigation when mouse cursor is hidden. It allows user to only approximately look at interesting item and hit interaction button or key. Otherwise, activating a small 3D object is difficult, as you don't see the mouse cursor.</p>
</td></tr>
</table>
<table class="detail wide_list">
<tr class="list">
<td class="visibility"><a  href="legend.html"><img  src="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="DefaultVisibilityLimit"></a><code>property <b>DefaultVisibilityLimit</b>: Single
      read FDefaultVisibilityLimit write FDefaultVisibilityLimit default 0.0;</code></td>
</tr>
<tr><td colspan="2">
<p>
Visibility limit of your 3D world. This is the distance the far <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#Projection">projection</a> clipping plane.

<p>The default <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#CalculateProjection">CalculateProjection</a> implementation calculates the final visibility limit as follows:

<p></p>

<ul class="paragraph_spacing">
  <li><p>First of all, if (GLFeatures.ShadowVolumesPossible and <a class="normal" href="CastleSceneManager.TCastleAbstractViewport.html#ShadowVolumes">ShadowVolumes</a>), then it's infinity.</p></li>
  <li><p>Then we look NavigationInfo.visibilityLimit value inside MainScene. This allows your 3D data creators to set this inside VRML/X3D data.

<p>Only if MainScene is not set, or doesn't contain NavigationInfo node, or NavigationInfo.visibilityLimit is left at (default) zero, we look further.</p></li>
  <li><p>We use this property, <code>DefaultVisibilityLimit</code>, if it's not zero.</p></li>
  <li><p>Finally, as a last resort we calculate something suitable looking at the 3D bounding box of items inside our 3D world.</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="published.gif" alt="Published" title="Published"></a></td>
<td class="itemcode"><a name="ScreenSpaceAmbientOcclusion"></a><code>property <b>ScreenSpaceAmbientOcclusion</b>: boolean
      read FScreenSpaceAmbientOcclusion write SetScreenSpaceAmbientOcclusion
      default <a  href="CastleSceneManager.TCastleAbstractViewport.html#DefaultScreenSpaceAmbientOcclusion">DefaultScreenSpaceAmbientOcclusion</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Enable built-in SSAO screen effect in the world.</p>
</td></tr>
</table>
<!-- Piwik -->
<script type="text/javascript">
  var _paq = _paq || [];
  _paq.push(["trackPageView"]);
  _paq.push(["enableLinkTracking"]);

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

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