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
|
<!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: CastlePrecalculatedAnimation: Class TCastlePrecalculatedAnimation</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="TCastlePrecalculatedAnimation"></a><h1 class="cio">Class TCastlePrecalculatedAnimation</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>Fields</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="CastlePrecalculatedAnimation.html">CastlePrecalculatedAnimation</a></p>
<h2 class="declaration">Declaration</h2>
<p class="declaration">
<code>type TCastlePrecalculatedAnimation = class(<a class="normal" href="CastlePrecalculatedAnimationCore.TCastlePrecalculatedAnimationCore.html">TCastlePrecalculatedAnimationCore</a>)</code></p>
<h2 class="description">Description</h2>
<p>
A "precalculated" animation done by interpolating between a number of 3D model states.
<p>After constructing an object of this class, you must actually load it's animation by calling Load or <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromFile">LoadFromFile</a> or <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromEvents">LoadFromEvents</a> etc.
<p>When loading you must provide one or more X3D models with their associated times. Animation will show a transition from the first model to the last. If models are "structurally equal" then the transition between two successive models will be smooth, otherwise a sudden change will be shown. "Structurally equal" means the same nodes hierarchy, the same names of nodes, the same values of all fields (with the exception of fields that are floating-point based and so can be interpolated, for example SFFloat, SFVec3f and equivalent MFXxx fields). For multi-valued fields (MFXxx) that can be interpolated: note that values of items may differ, but still the counts of items must be equal.
<p>This creates a list of <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scenes">Scenes</a> such that </p>
<ul class="compact_spacing">
<li><p>the first scene on the list is exactly the 1st object</p></li>
<li><p>the last scene on the list is exactly the last object</p></li>
<li><p>intermediate scenes are accordingly interpolated between the two surrounding "predefined" by you scenes</p></li>
</ul>
<p>
<p>For example, first object may be a small sphere with blue color, the other object may be a larger sphere with <a class="normal" href="CastleColors.html#White">white</a> color, and the simplest times are 0.0 for the 1st scene and 1.0 for the 2nd scene. The animation will show the blue sphere growing larger and fading into the <a class="normal" href="CastleColors.html#White">white</a> color. Of course, any kind of models is allowed — e.g. it can be a walking man at various stages, so in effect you get an animation of walking man.
<p>A special case when you pass only one scene to this class is allowed (it may be handy in some situations). This will obviously produce just a still result, i.e. resulting <code>TCastlePrecalculatedAnimation</code> will be just a wrapper around single <a class="normal" href="CastleScene.TCastleScene.html">TCastleScene</a> instance.
<p>For more information see our engine documentation on [<a href="http://castle-engine.sourceforge.net/engine_doc.php">http://castle-engine.sourceforge.net/engine_doc.php</a>]. Specifically the section "Non-interactive precalculated animation: <code>TCastlePrecalculatedAnimation</code>", [<a href="http://castle-engine.sourceforge.net/vrml_engine_doc/output/xsl/html/section.animation_precalculated.html">http://castle-engine.sourceforge.net/vrml_engine_doc/output/xsl/html/section.animation_precalculated.html</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="Castle3D.T3D.html">T3D</a></li>
<li class="ancestor"><a class="normal" href="CastlePrecalculatedAnimationCore.TCastlePrecalculatedAnimationCore.html">TCastlePrecalculatedAnimationCore</a></li>
<li class="thisitem">TCastlePrecalculatedAnimation</li></ul><h2 class="overview">Overview</h2>
<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>procedure <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadCore">LoadCore</a></b>( GetRootNodeWithTime: <a href="CastlePrecalculatedAnimation.html#TGetRootNodeWithTime">TGetRootNodeWithTime</a>; RootNodesCount: Cardinal; AOwnsFirstRootNode: boolean; ScenesPerTime: Cardinal; const EqualityEpsilon: Single);</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#HeightCollision">HeightCollision</a></b>(const Position, GravityUp: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>; out AboveHeight: Single; out AboveGround: <a href="CastleTriangles.html#P3DTriangle">P3DTriangle</a>): boolean; 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#MoveCollision">MoveCollision</a></b>( const OldPos, ProposedNewPos: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; out NewPos: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const IsRadius: boolean; const Radius: Single; const OldBox, NewBox: <a href="CastleBoxes.TBox3D.html">TBox3D</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): boolean; 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>function <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#MoveCollision">MoveCollision</a></b>( const OldPos, NewPos: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const IsRadius: boolean; const Radius: Single; const OldBox, NewBox: <a href="CastleBoxes.TBox3D.html">TBox3D</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): boolean; 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#SegmentCollision">SegmentCollision</a></b>(const Pos1, Pos2: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>; const ALineOfSight: boolean): boolean; 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>function <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#SphereCollision">SphereCollision</a></b>(const Pos: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const Radius: Single; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): boolean; 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#BoxCollision">BoxCollision</a></b>(const Box: <a href="CastleBoxes.TBox3D.html">TBox3D</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): boolean; 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>function <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#RayCollision">RayCollision</a></b>(const RayOrigin, RayDirection: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): <a href="Castle3D.TRayCollision.html">TRayCollision</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>constructor <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.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>constructor <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#CreateCustomCache">CreateCustomCache</a></b>(AOwner: TComponent; ACache: <a href="CastleRenderer.TGLRendererContextCache.html">TGLRendererContextCache</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>destructor <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Destroy">Destroy</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Load">Load</a></b>( RootNodes: <a href="X3DNodes.TX3DNodeList.html">TX3DNodeList</a>; AOwnsFirstRootNode: boolean; ATimes: <a href="CastleUtils.TSingleList.html">TSingleList</a>; ScenesPerTime: Cardinal; const EqualityEpsilon: Single);</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromEvents">LoadFromEvents</a></b>( RootNode: <a href="X3DNodes.TX3DRootNode.html">TX3DRootNode</a>; AOwnsRootNode: boolean; const ATimeBegin, ATimeEnd: Single; ScenesPerTime: Cardinal; const EqualityEpsilon: Single; const ProgressTitle: string);</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadStatic">LoadStatic</a></b>(RootNode: <a href="X3DNodes.TX3DNode.html">TX3DNode</a>; AOwnsRootNode: 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromFile">LoadFromFile</a></b>(const URL: string; const AllowStdIn: boolean; const LoadTime: boolean; const Smoothness: <a href="CastleUtils.html#Float">Float</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromFile">LoadFromFile</a></b>(const URL: string; const AllowStdIn: boolean; const LoadTime: 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Close">Close</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ScenesCount">ScenesCount</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#FirstScene">FirstScene</a></b>: <a href="CastleScene.TCastleScene.html">TCastleScene</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LastScene">LastScene</a></b>: <a href="CastleScene.TCastleScene.html">TCastleScene</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#PrepareResources">PrepareResources</a></b>(Options: <a href="CastleScene.html#TPrepareResourcesOptions">TPrepareResourcesOptions</a>; ProgressStep: boolean; BaseLights: <a href="Castle3D.html#TAbstractLightInstancesList">TAbstractLightInstancesList</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>function <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#PrepareResourcesSteps">PrepareResourcesSteps</a></b>: Cardinal; 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#FreeResources">FreeResources</a></b>(Resources: <a href="CastleSceneCore.html#TSceneFreeResources">TSceneFreeResources</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a></b>: Single;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDurationWithBack">TimeDurationWithBack</a></b>: Single;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scene">Scene</a></b>(const Time: Single): <a href="CastleScene.TCastleScene.html">TCastleScene</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scene">Scene</a></b>(const Time: Single; const Loop: boolean): <a href="CastleScene.TCastleScene.html">TCastleScene</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#CurrentScene">CurrentScene</a></b>: <a href="CastleScene.TCastleScene.html">TCastleScene</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Attributes">Attributes</a></b>: <a href="CastleScene.TSceneRenderingAttributes.html">TSceneRenderingAttributes</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#BoundingBox">BoundingBox</a></b>: <a href="CastleBoxes.TBox3D.html">TBox3D</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>procedure <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#BeforeNodesFree">BeforeNodesFree</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ChangedAll">ChangedAll</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Info">Info</a></b>( ATriangleVerticesCounts, ABoundingBox, AManifoldAndBorderEdges: boolean): 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>function <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Press">Press</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Release">Release</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>procedure <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Update">Update</a></b>(const SecondsPassed: Single; var RemoveMe: <a href="Castle3D.html#TRemoveType">TRemoveType</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>procedure <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ResetTimeAtLoad">ResetTimeAtLoad</a></b>(const ForceTimeOrigin: boolean = false);</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ResetTime">ResetTime</a></b>(const NewValue: <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>procedure <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Render">Render</a></b>(const Frustum: <a href="CastleFrustum.TFrustum.html">TFrustum</a>; const Params: <a href="Castle3D.TRenderParams.html">TRenderParams</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>procedure <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#RenderShadowVolume">RenderShadowVolume</a></b>( ShadowVolumeRenderer: <a href="Castle3D.TBaseShadowVolumeRenderer.html">TBaseShadowVolumeRenderer</a>; const ParentTransformIsIdentity: boolean; const ParentTransform: <a href="CastleVectors.html#TMatrix4Single">TMatrix4Single</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>procedure <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#UpdateGeneratedTextures">UpdateGeneratedTextures</a></b>( const RenderFunc: <a href="Castle3D.html#TRenderFromViewFunction">TRenderFromViewFunction</a>; const ProjectionNear, ProjectionFar: Single; const OriginalViewport: <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>procedure <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#VisibleChangeNotification">VisibleChangeNotification</a></b>(const Changes: <a href="Castle3D.html#TVisibleChanges">TVisibleChanges</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>function <b><a href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Dragging">Dragging</a></b>: boolean; override;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Loaded">Loaded</a></b>: boolean read FLoaded;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#OwnsFirstRootNode">OwnsFirstRootNode</a></b>: boolean
read FOwnsFirstRootNode write SetOwnsFirstRootNode;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scenes">Scenes</a></b>[I:Integer]: <a href="CastleScene.TCastleScene.html">TCastleScene</a> read GetScenes;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a></b>: Single read FTimeBegin;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a></b>: Single read FTimeEnd;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeAtLoad">TimeAtLoad</a></b>: <a href="CastleTimeUtils.html#TFloatTime">TFloatTime</a> read FTimeAtLoad;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a></b>: <a href="CastleTimeUtils.html#TFloatTime">TFloatTime</a> read FTime;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Cache">Cache</a></b>: <a href="CastleRenderer.TGLRendererContextCache.html">TGLRendererContextCache</a> read FCache;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TryFirstSceneDynamic">TryFirstSceneDynamic</a></b>: boolean
read FTryFirstSceneDynamic write FTryFirstSceneDynamic 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimePlaying">TimePlaying</a></b>: boolean read FTimePlaying write FTimePlaying default true;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimePlayingSpeed">TimePlayingSpeed</a></b>: Single read FTimePlayingSpeed write FTimePlayingSpeed default 1.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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a></b>: boolean read FTimeLoop write FTimeLoop default true;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBackwards">TimeBackwards</a></b>: boolean
read FTimeBackwards write FTimeBackwards 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#CollisionUseLastScene">CollisionUseLastScene</a></b>: boolean
read FCollisionUseLastScene
write FCollisionUseLastScene 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ShadowMaps">ShadowMaps</a></b>: boolean read FShadowMaps write SetShadowMaps 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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ShadowMapsDefaultSize">ShadowMapsDefaultSize</a></b>: Cardinal
read FShadowMapsDefaultSize write SetShadowMapsDefaultSize
default <a href="CastleSceneCore.TCastleSceneCore.html#DefaultShadowMapsDefaultSize">TCastleSceneCore.DefaultShadowMapsDefaultSize</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#InitialViewpointIndex">InitialViewpointIndex</a></b>: Cardinal
read FInitialViewpointIndex write FInitialViewpointIndex;</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="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#InitialViewpointName">InitialViewpointName</a></b>: string
read FInitialViewpointName write FInitialViewpointName;</code></td>
</tr>
</table>
<h2 class="description">Description</h2>
<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="LoadCore"></a><code>procedure <b>LoadCore</b>( GetRootNodeWithTime: <a href="CastlePrecalculatedAnimation.html#TGetRootNodeWithTime">TGetRootNodeWithTime</a>; RootNodesCount: Cardinal; AOwnsFirstRootNode: boolean; ScenesPerTime: Cardinal; const EqualityEpsilon: Single);</code></td>
</tr>
<tr><td colspan="2">
<p>
Internal version of <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Load">Load</a> routines, feasible to load from both ready RootNodes array and to automatically generate RootNodes on the fly.
<p>GetRootNodeWithTime will be called with indexes from 0 to RootNodesCount - 1. It's guaranteed that it will be called in this order (from 0 upwards to RootNodesCount - 1) and will be called exactly once for each index. So it's safe to e.g. create RootNode with some costly operation there.
<p>Note that RootNode passed to GetRootNodeWithTime becomes owned by this class. Well, you can get control over only the first one, by AOwnsFirstRootNode, but you cannot free it anyway while this is loaded.
<p>See <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Load">Load</a> for more information, including the meaning of EqualityEpsilon.</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="HeightCollision"></a><code>function <b>HeightCollision</b>(const Position, GravityUp: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>; out AboveHeight: Single; out AboveGround: <a href="CastleTriangles.html#P3DTriangle">P3DTriangle</a>): boolean; override;</code></td>
</tr>
<tr><td colspan="2">
</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="MoveCollision"></a><code>function <b>MoveCollision</b>( const OldPos, ProposedNewPos: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; out NewPos: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const IsRadius: boolean; const Radius: Single; const OldBox, NewBox: <a href="CastleBoxes.TBox3D.html">TBox3D</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): boolean; override;</code></td>
</tr>
<tr><td colspan="2">
</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="MoveCollision"></a><code>function <b>MoveCollision</b>( const OldPos, NewPos: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const IsRadius: boolean; const Radius: Single; const OldBox, NewBox: <a href="CastleBoxes.TBox3D.html">TBox3D</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): boolean; override;</code></td>
</tr>
<tr><td colspan="2">
</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="SegmentCollision"></a><code>function <b>SegmentCollision</b>(const Pos1, Pos2: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>; const ALineOfSight: boolean): boolean; override;</code></td>
</tr>
<tr><td colspan="2">
</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="SphereCollision"></a><code>function <b>SphereCollision</b>(const Pos: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const Radius: Single; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): boolean; override;</code></td>
</tr>
<tr><td colspan="2">
</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="BoxCollision"></a><code>function <b>BoxCollision</b>(const Box: <a href="CastleBoxes.TBox3D.html">TBox3D</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): boolean; override;</code></td>
</tr>
<tr><td colspan="2">
</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="RayCollision"></a><code>function <b>RayCollision</b>(const RayOrigin, RayDirection: <a href="CastleVectors.html#TVector3Single">TVector3Single</a>; const TrianglesToIgnoreFunc: <a href="CastleTriangles.html#T3DTriangleIgnoreFunc">T3DTriangleIgnoreFunc</a>): <a href="Castle3D.TRayCollision.html">TRayCollision</a>; override;</code></td>
</tr>
<tr><td colspan="2">
</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">
</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="CreateCustomCache"></a><code>constructor <b>CreateCustomCache</b>(AOwner: TComponent; ACache: <a href="CastleRenderer.TGLRendererContextCache.html">TGLRendererContextCache</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Constructor that allows you to pass your own Cache 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="Destroy"></a><code>destructor <b>Destroy</b>; override;</code></td>
</tr>
<tr><td colspan="2">
</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="Load"></a><code>procedure <b>Load</b>( RootNodes: <a href="X3DNodes.TX3DNodeList.html">TX3DNodeList</a>; AOwnsFirstRootNode: boolean; ATimes: <a href="CastleUtils.TSingleList.html">TSingleList</a>; ScenesPerTime: Cardinal; const EqualityEpsilon: Single);</code></td>
</tr>
<tr><td colspan="2">
<p>
Load the animation scenes. Must be called (this or some other loading routine like <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromFile">LoadFromFile</a>) before you do almost anything with this object. <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Loaded">Loaded</a> changes to <code>True</code> after calling this.
<p>
<p>
<p>
<p></p>
<h6 class="description_section">Parameters</h6>
<dl class="parameters">
<dt>RootNodes</dt>
<dd>Models describing the "predefined" frames of animation. They must descend from <a class="normal" href="X3DNodes.TX3DRootNode.html">TX3DRootNode</a>.
<p>For all nodes except the first: They are <i>always</i> owned by this class — that's needed, because actually we may do some operations on these models when building animation (including even freeing some RootNodes, if we will find that they are equivalent to some other RootNodes). They all must point to different objects.
<p>You must supply at least one item here (you cannot make an animation from 0 items).</dd>
<dt>Times</dt>
<dd>Array specifying the point of time for each "predefined" frame. Length of this array must equal to length of RootNodes array.</dd>
<dt>ScenesPerTime</dt>
<dd>This says how many scenes will be used for period of time equal to 1.0. This will determine Scenes.Count. RootNodes[0] always takes Scenes[0] and RootNodes[High(RootNodes)] always takes Scenes[Scenes.High].
<p>Note that if we will find that some nodes along the way are exactly equal, we may drop scenes count between — because if they are both equal, we can simply render the same scene for some period of time. This is an optimization, and you shouldn't notice it at all, since rendeting will be the same (but less memory-consuming).
<p>Special value ScenesPerTime = 0 means that you want to have only the RootNodes you explicitly passed in the scene, not more. No more intermediate scenes will ever be created. This creates a trivial animation that suddenly jumps from one RootNode to the next at specified times. It may be useful if you already have generated a lot of RootNodes, densely distributed over time, and you don't need <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</a> to insert any more scenes.</dd>
<dt>EqualityEpsilon</dt>
<dd>This will be used for comparing fields, to decide if two fields (and, consequently, nodes) are equal. It will be simply passed to <a class="normal" href="X3DFields.TX3DField.html#Equals">TX3DField.Equals</a>.
<p>You can pass here 0 to use exact comparison, but it's advised to use here something > 0. Otherwise we could waste display list memory (and loading time) for many frames of the same node that are in fact equal.</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="LoadFromEvents"></a><code>procedure <b>LoadFromEvents</b>( RootNode: <a href="X3DNodes.TX3DRootNode.html">TX3DRootNode</a>; AOwnsRootNode: boolean; const ATimeBegin, ATimeEnd: Single; ScenesPerTime: Cardinal; const EqualityEpsilon: Single; const ProgressTitle: string);</code></td>
</tr>
<tr><td colspan="2">
<p>
Load precalculated animation by playing a single VRML/X3D file with events (interpolators, TimeSensor and such working). Conceptually, this "records" interactive animation stored in VRML/X3D file into <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</a> precalculated animation.
<p>ATimeBegin, ATimeEnd tell what time slice should be recorded. They will also set <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> properties.
<p>
<p></p>
<h6 class="description_section">Parameters</h6>
<dl class="parameters">
<dt>ScenesPerTime</dt>
<dd>tells with what density should the animation be recorded. See <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Load">Load</a> for ScenesPerTime, EqualityEpsilon precise documentation. Note that special value ScenesPerTime = 0 is interpreted here as "record only one, initial frame".</dd>
<dt>ProgressTitle</dt>
<dd>When <> '' we will use Progress.Init, Step, Fini to display nice progress of operation.</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="LoadStatic"></a><code>procedure <b>LoadStatic</b>(RootNode: <a href="X3DNodes.TX3DNode.html">TX3DNode</a>; AOwnsRootNode: boolean);</code></td>
</tr>
<tr><td colspan="2">
<p>
Load a dumb animation that consists of only one frame (so actually there's no animation, everything is static).
<p>This just calls <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Load">Load</a> with parameters such that </p>
<ol class="paragraph_spacing">
<li value="1"><p>RootNodes list contains one specified node</p></li>
<li value="2"><p>Times contain only one item 0.0</p></li>
<li value="3"><p>ScenesPerTime and EqualityEpsilon have some unimportant values — they are not meaningfull when you have only one scene</p></li>
</ol>
<p>
<p>This is usefull when you know that you have a static scene, but still you want to treat it as <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</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="LoadFromFile"></a><code>procedure <b>LoadFromFile</b>(const URL: string; const AllowStdIn: boolean; const LoadTime: boolean; const Smoothness: <a href="CastleUtils.html#Float">Float</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Load animation parameters (models to use, times to use and such) from given file.
<p>Various file formats are possible, everything that can be handled by <a class="normal" href="X3DLoad.html#Load3DSequence">Load3DSequence</a>, in particular simple 3D model files, MD3, kanim (described on [<a href="http://castle-engine.sourceforge.net/kanim_format.php">http://castle-engine.sourceforge.net/kanim_format.php</a>]).
<p>If you need more control over loading, for example you want to change some parameters at loading (for example, ScenesPerTime and EqualityEpsilon of kanim files), you should use more flexible (and less comfortable to use) <a class="normal" href="CastlePrecalculatedAnimationCore.TCastlePrecalculatedAnimationCore.html#LoadFromFileToVars">LoadFromFileToVars</a> class procedure (specialized for kanim files) or <a class="normal" href="X3DLoad.html#Load3DSequence">Load3DSequence</a> (if you want to handle any files).
<p><a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Loaded">Loaded</a> property changes to <code>True</code> after calling this.
<p>
<p>
<p>
<p></p>
<h6 class="description_section">Parameters</h6>
<dl class="parameters">
<dt>AllowStdIn</dt>
<dd>If <code>True</code>, then URL = '-' is understood as "standard input".</dd>
<dt>LoadTime</dt>
<dd>If <code>True</code> then loading changes current <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBackwards">TimeBackwards</a> properties. Sometimes this is sensible (you want to allow control over them from the file), sometimes not (e.g. you set suitable values for them by code).
<p>Note that, independent of this, you can always change <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBackwards">TimeBackwards</a> properties later, since these properties are writeable at any time.</dd>
<dt>Smoothness</dt>
<dd>Scales the number of scenes created per second. Values > 1 make better quality but also use more memory. If this parameter isn't given, we use global <a class="normal" href="CastlePrecalculatedAnimation.html#AnimationSmoothness">AnimationSmoothness</a> (which is by default 1, but may be globally changed).</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="LoadFromFile"></a><code>procedure <b>LoadFromFile</b>(const URL: string; const AllowStdIn: boolean; const LoadTime: boolean);</code></td>
</tr>
<tr><td colspan="2">
</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="Close"></a><code>procedure <b>Close</b>;</code></td>
</tr>
<tr><td colspan="2">
<p>
This releases all resources allocared by Load (or <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromFile">LoadFromFile</a>). <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Loaded">Loaded</a> property changes to <code>False</code> after calling this.
<p>It's safe to call this even if <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Loaded">Loaded</a> is already <code>False</code> — then this will do nothing.</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="ScenesCount"></a><code>function <b>ScenesCount</b>: Integer;</code></td>
</tr>
<tr><td colspan="2">
</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="FirstScene"></a><code>function <b>FirstScene</b>: <a href="CastleScene.TCastleScene.html">TCastleScene</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Just a shortcut for Scenes[0].</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="LastScene"></a><code>function <b>LastScene</b>: <a href="CastleScene.TCastleScene.html">TCastleScene</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Just a shortcut for Scenes[<a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ScenesCount">ScenesCount</a> - 1].</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="PrepareResources"></a><code>procedure <b>PrepareResources</b>(Options: <a href="CastleScene.html#TPrepareResourcesOptions">TPrepareResourcesOptions</a>; ProgressStep: boolean; BaseLights: <a href="Castle3D.html#TAbstractLightInstancesList">TAbstractLightInstancesList</a>); override;</code></td>
</tr>
<tr><td colspan="2">
<p>
Prepare all scenes for rendering. Basically, this calls <code>PrepareResources</code>(...) for all Scenes.
<p>There's also a special memory (and prepare time) optimization used for <a class="normal" href="CastleScene.html#prManifoldAndBorderEdges">prManifoldAndBorderEdges</a>: we use the fact that animation scenes are "structurally equal", and so prepare and share one manifold edges information for all scenes.
<p>ProgressStep = <code>True</code> is especially useful with this: we'll call Progress.Step then after preparing each scene. For portability, always check <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#PrepareResourcesSteps">PrepareResourcesSteps</a>, but for now this is just always equal <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ScenesCount">ScenesCount</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="PrepareResourcesSteps"></a><code>function <b>PrepareResourcesSteps</b>: Cardinal; override;</code></td>
</tr>
<tr><td colspan="2">
</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="FreeResources"></a><code>procedure <b>FreeResources</b>(Resources: <a href="CastleSceneCore.html#TSceneFreeResources">TSceneFreeResources</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Free resources for all scenes, it's useful if you know that you will not need some allocated resources anymore and you want to conserve memory use.
<p>See TCastleSceneCore.FreeResource documentation for a description of what are possible resources to free.</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="GLContextClose"></a><code>procedure <b>GLContextClose</b>; override;</code></td>
</tr>
<tr><td colspan="2">
<p>
Close anything associated with current OpenGL context in this class. This calls <code>GLContextClose</code> on every Scenes[], and additionally may close some other internal things here.</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="TimeDuration"></a><code>function <b>TimeDuration</b>: Single;</code></td>
</tr>
<tr><td colspan="2">
<p>
Just a shortcut for <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> - <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</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="TimeDurationWithBack"></a><code>function <b>TimeDurationWithBack</b>: Single;</code></td>
</tr>
<tr><td colspan="2">
<p>
This is <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a> * 2 if <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBackwards">TimeBackwards</a>, otherwise it's just <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a>. In other words, this is the time of the one "full" (forward + backward) animation.</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>function <b>Scene</b>(const Time: Single): <a href="CastleScene.TCastleScene.html">TCastleScene</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Appropriate scene from <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scenes">Scenes</a> based on given Time. If Time is between given <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a>, then this will be appropriate scene in the middle.
<p>For Time outside the range <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> .. <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> behavior depends on <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBackwards">TimeBackwards</a> properties:
<p></p>
<ul class="paragraph_spacing">
<li><p>When not <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> and not <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBackwards">TimeBackwards</a> then:
<p>If Time is < <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a>, always the first scene will be returned. If Time is > <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a>, always the last scene will be returned.
<p>So there will no real animation outside <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> .. <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> timeline.</p></li>
<li><p>When not <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBackwards">TimeBackwards</a> then:
<p>If Time is < <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a>, always the first scene will be returned. If Time is between <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> + <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a>, then the animation will be played backwards. When Time is > <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> + <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a>, again always the first scene will be returned.
<p>So between <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> + <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a> animation will be played backwards, and there will no real animation outside <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> .. <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> + <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a> timeline.</p></li>
<li><p>When <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> and not <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBackwards">TimeBackwards</a> then:
<p>Outside <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> .. <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a>, animation will cycle. This means that e.g. between <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> + <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a> animation will be played just like between <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a>.</p></li>
<li><p>When <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> and TimeBackwardsm then:
<p>Outside <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> .. <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a>, animation will cycle. Cycle between <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> + <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a> will go backwards. Cycle between <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> + <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a> and <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeEnd">TimeEnd</a> + <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeDuration">TimeDuration</a> * 2 will again go forward. And so on.</p></li>
</ul>
<p>
<p>Overloaded version with explicit Loop parameter ignores the <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> property. This way you can force looping (or force not looping), regardless of the <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeLoop">TimeLoop</a> property, so also regardless of loop setting in kanim file.
<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="Scene"></a><code>function <b>Scene</b>(const Time: Single; const Loop: boolean): <a href="CastleScene.TCastleScene.html">TCastleScene</a>;</code></td>
</tr>
<tr><td colspan="2">
</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="CurrentScene"></a><code>function <b>CurrentScene</b>: <a href="CastleScene.TCastleScene.html">TCastleScene</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Appropriate scene from <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scenes">Scenes</a> based on current <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a>. This is just a shortcut for Scene(<a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a>), useful if you track animation time in our <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a> property.</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="Attributes"></a><code>function <b>Attributes</b>: <a href="CastleScene.TSceneRenderingAttributes.html">TSceneRenderingAttributes</a>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Attributes controlling rendering. See <a class="normal" href="CastleScene.TSceneRenderingAttributes.html">TSceneRenderingAttributes</a> and <a class="normal" href="CastleRenderer.TRenderingAttributes.html">TRenderingAttributes</a> for documentation of properties.
<p>You can change properties of this object at any time, but beware that some changes may force time-consuming regeneration of some things (like OpenGL display lists) in the nearest Render of the scenes. So explicitly calling <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#PrepareResources">PrepareResources</a> may be useful after changing these Attributes.
<p>Note that Attributes may be accessed and even changed when the scene is not loaded (e.g. before calling Load / <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromFile">LoadFromFile</a>). Also, Attributes are preserved between various animations loaded.</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="BoundingBox"></a><code>function <b>BoundingBox</b>: <a href="CastleBoxes.TBox3D.html">TBox3D</a>; override;</code></td>
</tr>
<tr><td colspan="2">
<p>
The sum of bounding boxes of all animation frames.
<p>Result of this function is cached, which means that it usually returns very fast. But you have to call <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ChangedAll">ChangedAll</a> when you changed something inside Scenes[] using some direct Scenes[].RootNode operations, to force recalculation of this box.</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="BeforeNodesFree"></a><code>procedure <b>BeforeNodesFree</b>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Call this before directly freeing some VRML nodes in animation scenes.</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="ChangedAll"></a><code>procedure <b>ChangedAll</b>;</code></td>
</tr>
<tr><td colspan="2">
<p>
Call this when you changed something inside Scenes[] using some direct Scenes[].RootNode operations. This calls TCastleScene.ChangedAll on all Scenes[] and invalidates some cached things inside this class.</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="Info"></a><code>function <b>Info</b>( ATriangleVerticesCounts, ABoundingBox, AManifoldAndBorderEdges: boolean): string;</code></td>
</tr>
<tr><td colspan="2">
<p>
Returns some textual info about this animation. Similar to TCastleScene.Info.</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="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">
<p>
Handling key and mouse events.
<p>We pass key and mouse events only if there's exactly one scene (<a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ScenesCount">ScenesCount</a> = 1), as there's no sensible way of activating VRML/X3D events when <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</a> contains more than one scene. (Precalculated animation of this class, and interactive animation by <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ProcessEvents">TCastleSceneCore.ProcessEvents</a> do not mix sensibly.)
<p>So when <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ScenesCount">ScenesCount</a> = 1, we simply pass key and mouse events to the only Scene[0]. Be sure to turn on <code>Scene[0].ProcessEvents := true</code> if you want to make actual use of it.
<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="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">
</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 RemoveMe: <a href="Castle3D.html#TRemoveType">TRemoveType</a>); override;</code></td>
</tr>
<tr><td colspan="2">
</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="ResetTimeAtLoad"></a><code>procedure <b>ResetTimeAtLoad</b>(const ForceTimeOrigin: boolean = false);</code></td>
</tr>
<tr><td colspan="2">
<p>
Set <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a> to initial value after loading a world.</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="ResetTime"></a><code>procedure <b>ResetTime</b>(const NewValue: <a href="CastleTimeUtils.html#TFloatTime">TFloatTime</a>);</code></td>
</tr>
<tr><td colspan="2">
<p>
Set <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a> to arbitrary value.</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="Render"></a><code>procedure <b>Render</b>(const Frustum: <a href="CastleFrustum.TFrustum.html">TFrustum</a>; const Params: <a href="Castle3D.TRenderParams.html">TRenderParams</a>); override;</code></td>
</tr>
<tr><td colspan="2">
</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="RenderShadowVolume"></a><code>procedure <b>RenderShadowVolume</b>( ShadowVolumeRenderer: <a href="Castle3D.TBaseShadowVolumeRenderer.html">TBaseShadowVolumeRenderer</a>; const ParentTransformIsIdentity: boolean; const ParentTransform: <a href="CastleVectors.html#TMatrix4Single">TMatrix4Single</a>); override;</code></td>
</tr>
<tr><td colspan="2">
</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="UpdateGeneratedTextures"></a><code>procedure <b>UpdateGeneratedTextures</b>( const RenderFunc: <a href="Castle3D.html#TRenderFromViewFunction">TRenderFromViewFunction</a>; const ProjectionNear, ProjectionFar: Single; const OriginalViewport: <a href="CastleRectangles.TRectangle.html">TRectangle</a>); override;</code></td>
</tr>
<tr><td colspan="2">
</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="VisibleChangeNotification"></a><code>procedure <b>VisibleChangeNotification</b>(const Changes: <a href="Castle3D.html#TVisibleChanges">TVisibleChanges</a>); override;</code></td>
</tr>
<tr><td colspan="2">
</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="Dragging"></a><code>function <b>Dragging</b>: boolean; override;</code></td>
</tr>
<tr><td colspan="2">
</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="Loaded"></a><code>property <b>Loaded</b>: boolean read FLoaded;</code></td>
</tr>
<tr><td colspan="2">
</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="OwnsFirstRootNode"></a><code>property <b>OwnsFirstRootNode</b>: boolean
read FOwnsFirstRootNode write SetOwnsFirstRootNode;</code></td>
</tr>
<tr><td colspan="2">
<p>
Is the RootNode in first scene owned by this <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</a> instance? If yes, it will be freed at closing the animation. Otherwise, you are responsible for freeing it yourself (but you cannot do this while animation is loaded, anyway).</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="Scenes"></a><code>property <b>Scenes</b>[I:Integer]: <a href="CastleScene.TCastleScene.html">TCastleScene</a> read GetScenes;</code></td>
</tr>
<tr><td colspan="2">
<p>
You can read anything from Scenes below. But you cannot set some things: don't set their scenes Attributes properties. Use only our <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Attributes">Attributes</a>.
<p>The scenes here have <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#Static">TCastleSceneCore.Static</a> set to <code>True</code>, which means we assume you will not modify their VRML nodes graph (by <a class="normal" href="X3DFields.TX3DField.html#Send">TX3DField.Send</a> and such). Note that this doesn't prevent you from enabling <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ProcessEvents">TCastleSceneCore.ProcessEvents</a> on the first scene (<a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ProcessEvents">TCastleSceneCore.ProcessEvents</a> will be property handled regardless of <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#Static">TCastleSceneCore.Static</a> value).</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="TimeBegin"></a><code>property <b>TimeBegin</b>: Single read FTimeBegin;</code></td>
</tr>
<tr><td colspan="2">
<p>
First and last time that you passed to Load (or that were read from file by <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#LoadFromFile">LoadFromFile</a>). In other words, Times[0] and Times[High(Times)]. </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="TimeEnd"></a><code>property <b>TimeEnd</b>: Single read FTimeEnd;</code></td>
</tr>
<tr><td colspan="2">
</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="TimeAtLoad"></a><code>property <b>TimeAtLoad</b>: <a href="CastleTimeUtils.html#TFloatTime">TFloatTime</a> read FTimeAtLoad;</code></td>
</tr>
<tr><td colspan="2">
<p>
Initial world time, set by the <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ResetTimeAtLoad">ResetTimeAtLoad</a> call. This can be useful for showing user time like <code>"Animation Time: LoadTime + %f"</code> on status bar.
<p>0 means that starting <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a> was <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> of the animation (0.0 in case of normal VRML files, usually 0.0 in case of Kanim). Note that even when <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimeBegin">TimeBegin</a> <> 0 (for Kanim), we still set <code>TimeAtLoad</code> to 0, this is nicer to show to user.
<p>Other value means that we used current real time as time origin, following VRML/X3D specification. See also [<a href="http://castle-engine.sourceforge.net/x3d_time_origin_considered_uncomfortable.php">http://castle-engine.sourceforge.net/x3d_time_origin_considered_uncomfortable.php</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="Time"></a><code>property <b>Time</b>: <a href="CastleTimeUtils.html#TFloatTime">TFloatTime</a> read FTime;</code></td>
</tr>
<tr><td colspan="2">
<p>
Current time of the animation. Although you do not have to use it: you can always acccess any point in time of the animation by <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scene">Scene</a>. But sometimes tracking the current time here is most natural and comfortable.
<p>When we have exactly one scene in Scenes, our methods (<a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ResetTime">ResetTime</a>, <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ResetTimeAtLoad">ResetTimeAtLoad</a> and Update) will synchronize Scenes[0].Time always to the same value as our own <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a>. This makes time-dependent nodes (like TimeSensor, MovieTexture etc.) inside this scene work Ok.</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="Cache"></a><code>property <b>Cache</b>: <a href="CastleRenderer.TGLRendererContextCache.html">TGLRendererContextCache</a> read FCache;</code></td>
</tr>
<tr><td colspan="2">
</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="TryFirstSceneDynamic"></a><code>property <b>TryFirstSceneDynamic</b>: boolean
read FTryFirstSceneDynamic write FTryFirstSceneDynamic default false;</code></td>
</tr>
<tr><td colspan="2">
<p>
Turn this on to treat specially the case when a single scene (Scenes.Count = 1) is loaded: we will set this scene's Static = <code>False</code>. This allows you to enable VRML/X3D events and dynamically change the scene in this very special case. The normal behavior, when we load many scenes (or when this property is <code>False</code>), is to set all children scenes Static = <code>True</code>.
<p>Practically, this is useful only for tools like view3dscene, that want to have full VRML/X3D events when possible, and at the same time they want to load everything as <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</a>, for ease of coding.
<p>To put it simply, just don't use this in normal programs – it's a hack.
<p>Although Static can be later changed, but changing it (after loading) to <code>False</code> is expensive (needs <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#ChangedAll">ChangedAll</a>, that also recalculates shape tree, forces shape octree and other recalculations). That's why this property is needed, it sets Static correctly before loading the contents.</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="TimePlaying"></a><code>property <b>TimePlaying</b>: boolean read FTimePlaying write FTimePlaying default true;</code></td>
</tr>
<tr><td colspan="2">
<p>
Is the animation time playing, and how fast.
<p>For exact meaning of our <code>TimePlaying</code>, <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#TimePlayingSpeed">TimePlayingSpeed</a>, see <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#TimePlaying">TCastleSceneCore.TimePlaying</a>, <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#TimePlayingSpeed">TCastleSceneCore.TimePlayingSpeed</a>. Like in <a class="normal" href="CastleSceneCore.TCastleSceneCore.html">TCastleSceneCore</a>, these are realized by our <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Update">Update</a> method, so Time is automatically increased in <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Update">Update</a> which is called automatically if you added this to some <a class="normal" href="CastleWindow.TCastleWindowCustom.html#Controls">TCastleWindowCustom.Controls</a> or <a class="normal" href="CastleControl.TCastleControlCustom.html#Controls">TCastleControlCustom.Controls</a>.
<p>Note that Scenes[0].TimePlaying, Scenes[0].TimePlayingSpeed do not matter when you're operating on the <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html">TCastlePrecalculatedAnimation</a> level. They will not affect our <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a>, or even Scenes[0].Time, and they will not be synchronized with our values.
<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="TimePlayingSpeed"></a><code>property <b>TimePlayingSpeed</b>: Single read FTimePlayingSpeed write FTimePlayingSpeed default 1.0;</code></td>
</tr>
<tr><td colspan="2">
</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="TimeLoop"></a><code>property <b>TimeLoop</b>: boolean read FTimeLoop write FTimeLoop default true;</code></td>
</tr>
<tr><td colspan="2">
<p>
See <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scene">Scene</a> for precise description what this property does.</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="TimeBackwards"></a><code>property <b>TimeBackwards</b>: boolean
read FTimeBackwards write FTimeBackwards default false;</code></td>
</tr>
<tr><td colspan="2">
<p>
See <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Scene">Scene</a> for precise description what this property does.</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="CollisionUseLastScene"></a><code>property <b>CollisionUseLastScene</b>: boolean
read FCollisionUseLastScene
write FCollisionUseLastScene default false;</code></td>
</tr>
<tr><td colspan="2">
<p>
Should collision checking check also last animation frame.
<p>Regardless of this value, we always check collision with the first animation frame (<a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#FirstScene">FirstScene</a>), of course only when FirstScene.OctreeCollisions is initialized, and only if <a class="normal" href="Castle3D.T3D.html#GetCollides">GetCollides</a> (which includes <a class="normal" href="Castle3D.T3D.html#GetExists">GetExists</a>).
<p>When <code>CollisionUseLastScene</code> is <code>True</code>, we will also check collision with the last animation frame's octree, i.e. LastScene.OctreeCollisions. (Of course, only if it's initialized, e.g. by adding ssDynamicCollisions to the LastScene.Spatial property.) So when <code>CollisionUseLastScene</code>, collision checking sees the animation as a sum of first and last frames geometry. <code>CollisionUseLastScene</code> is useful if the object is moving, but the move is very slight, so that the sum of first and last scenes geometry is good enough approximation of the whole geometry at any point of the animation.
<p>Although it seems like a totally dumb way to check for collisions, it's suitable for many purposes (see e.g. uses on "castle hall" level), it's simple and not memory-consuming, and you don't have to take any action when animation frame changes (because <a class="normal" href="CastlePrecalculatedAnimation.TCastlePrecalculatedAnimation.html#Time">Time</a> changes don't change the colliding geometry, so the animation is static from the point of view of collision checking routines).
<p>TODO: In the future other collision methods may be available. First of all, checking with sum of all bounding boxes, or with particular scene time box, should be available.</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="ShadowMaps"></a><code>property <b>ShadowMaps</b>: boolean read FShadowMaps write SetShadowMaps default true;</code></td>
</tr>
<tr><td colspan="2">
<p>
At loading, process the animation to support shadow maps. See <a class="normal" href="CastleSceneCore.TCastleSceneCore.html#ShadowMaps">TCastleSceneCore.ShadowMaps</a> and related properties for documentation. </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="ShadowMapsDefaultSize"></a><code>property <b>ShadowMapsDefaultSize</b>: Cardinal
read FShadowMapsDefaultSize write SetShadowMapsDefaultSize
default <a href="CastleSceneCore.TCastleSceneCore.html#DefaultShadowMapsDefaultSize">TCastleSceneCore.DefaultShadowMapsDefaultSize</a>;</code></td>
</tr>
<tr><td colspan="2">
</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="InitialViewpointIndex"></a><code>property <b>InitialViewpointIndex</b>: Cardinal
read FInitialViewpointIndex write FInitialViewpointIndex;</code></td>
</tr>
<tr><td colspan="2">
</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="InitialViewpointName"></a><code>property <b>InitialViewpointName</b>: string
read FInitialViewpointName write FInitialViewpointName;</code></td>
</tr>
<tr><td colspan="2">
</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&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>
|