浏览代码

Christmas updated

GLScene 2 年之前
父节点
当前提交
318bcd8057
共有 100 个文件被更改,包括 1792 次插入4557 次删除
  1. 15 15
      AdvDemos/AdvDemos.groupproj
  2. 二进制
      Asset/Map/earth-clouds.png
  3. 二进制
      Asset/Map/earth.png
  4. 二进制
      Asset/ModelExt/ActorMS3D__.zlib
  5. 1 1
      Demos/CleanDemos.bat
  6. 7 2
      Demos/meshes/actor/ActorD.dproj
  7. 1 2
      Demos/meshes/actor/fActorD.pas
  8. 15 10
      Demos/meshes/actorproxy/fActorProxyC.cpp
  9. 33 13
      Demos/meshes/actorproxy/fActorProxyC.dfm
  10. 4 3
      Demos/meshes/actorproxy/fActorProxyC.h
  11. 32 12
      Demos/meshes/actorproxy/fActorProxyD.dfm
  12. 7 2
      Demos/meshes/actorproxy/fActorProxyD.pas
  13. 8 12
      Demos/meshes/expolygon/fExPolygonD.dfm
  14. 106 111
      Demos/meshes/formula/fFormulaC.cpp
  15. 1 2
      Demos/meshes/formula/fFormulaC.dfm
  16. 21 41
      Demos/meshes/formula/fFormulaD.dfm
  17. 2 1
      Demos/meshes/mushroom/fMushroomC.cpp
  18. 0 2
      Demos/meshes/mushroom/fMushroomC.dfm
  19. 3 0
      Demos/meshes/subdivide/fSubdivideC.cpp
  20. 13 12
      Demos/meshes/subdivide/fSubdivideC.dfm
  21. 42 83
      Demos/meshes/subdivide/fSubdivideD.dfm
  22. 13 20
      Demos/meshes/subdivide/fSubdivideD.pas
  23. 182 163
      Demos/meshes/synthterr/fSynthTerrainC.cpp
  24. 0 2
      Demos/meshes/synthterr/fSynthTerrainC.dfm
  25. 251 232
      Demos/meshes/terrain/fTerrainC.cpp
  26. 5 5
      Demos/meshes/terrain/fTerrainD.pas
  27. 1 1
      Demos/meshes/tiles/TilesD.dproj
  28. 16 35
      Demos/meshes/tiles/fTilesC.cpp
  29. 1 0
      Demos/meshes/tiles/fTilesD.dfm
  30. 0 2
      Demos/meshes/tiles/fTilesD.pas
  31. 139 139
      Demos/meshes/tree/fTreeC.cpp
  32. 129 239
      Demos/meshes/tree/fTreeC.dfm
  33. 135 256
      Demos/meshes/tree/fTreeD.dfm
  34. 8 12
      Demos/meshes/tree/fTreeD.pas
  35. 0 1428
      Demos/rendering/basicsdl/BasicSDL_C.cbproj
  36. 0 35
      Demos/rendering/basicsdl/BasicSDL_C.cpp
  37. 0 28
      Demos/rendering/basicsdl/BasicSDL_D.dpr
  38. 0 996
      Demos/rendering/basicsdl/BasicSDL_D.dproj
  39. 0 84
      Demos/rendering/basicsdl/fBasicSDL_C.cpp
  40. 0 36
      Demos/rendering/basicsdl/fBasicSDL_C.dfm
  41. 0 33
      Demos/rendering/basicsdl/fBasicSDL_C.h
  42. 0 36
      Demos/rendering/basicsdl/fBasicSDL_D.dfm
  43. 0 113
      Demos/rendering/basicsdl/fBasicSDL_D.pas
  44. 48 48
      Demos/rendering/culling/fCullingC.cpp
  45. 0 4
      Demos/rendering/culling/fCullingC.dfm
  46. 31 30
      Demos/rendering/culling/fCullingC.h
  47. 34 67
      Demos/sprites/imposter/fImposterD.dfm
  48. 8 14
      Demos/sprites/imposter/fImposterD.pas
  49. 3 27
      Packages/GLScene.groupproj
  50. 2 2
      Packages/GLScene_Cg_DT.dproj
  51. 2 2
      Packages/GLScene_DT.dpk
  52. 4 4
      Packages/GLScene_DT.dproj
  53. 47 7
      Source/FRFaceEditor.dfm
  54. 25 6
      Source/FRFaceEditor.pas
  55. 170 73
      Source/FmLibMaterialPicker.dfm
  56. 193 38
      Source/FmLibMaterialPicker.pas
  57. 26 3
      Source/FmMaterialEditor.dfm
  58. 0 2
      Source/FmMaterialEditor.pas
  59. 8 11
      Source/GLS.SceneRegister.pas
  60. 0 0
      external/CUDA/Packages/GLScene_GPU_DT.dpk
  61. 0 0
      external/CUDA/Packages/GLScene_GPU_DT.dproj
  62. 0 0
      external/CUDA/Packages/GLScene_GPU_RT.dpk
  63. 0 0
      external/CUDA/Packages/GLScene_GPU_RT.dproj
  64. 0 0
      external/CUDA/Samples/Computing.groupproj
  65. 0 0
      external/CUDA/Samples/FastFT.jpg
  66. 0 0
      external/CUDA/Samples/FastFourierTransformation/FastFourierD.dpr
  67. 0 0
      external/CUDA/Samples/FastFourierTransformation/FastFourierD.dproj
  68. 0 0
      external/CUDA/Samples/FastFourierTransformation/fFourier_D.dfm
  69. 0 0
      external/CUDA/Samples/FastFourierTransformation/fFourier_D.pas
  70. 0 0
      external/CUDA/Samples/FastFourierTransformation/uCPUFFT.pas
  71. 0 0
      external/CUDA/Samples/PostProcessing.jpg
  72. 0 0
      external/CUDA/Samples/PostProcessing/PostProcessingD.dpr
  73. 0 0
      external/CUDA/Samples/PostProcessing/PostProcessingD.dproj
  74. 0 0
      external/CUDA/Samples/PostProcessing/PostProcessing_kernel.cu
  75. 0 0
      external/CUDA/Samples/PostProcessing/fPostProcessingD.dfm
  76. 0 0
      external/CUDA/Samples/PostProcessing/fPostProcessingD.pas
  77. 0 0
      external/CUDA/Samples/ScalarProduct/ScalarProductD.dpr
  78. 0 0
      external/CUDA/Samples/ScalarProduct/ScalarProductD.dproj
  79. 0 0
      external/CUDA/Samples/ScalarProduct/ScalarProduct_kernel.cu
  80. 0 0
      external/CUDA/Samples/ScalarProduct/fScalarProductD.dfm
  81. 0 0
      external/CUDA/Samples/ScalarProduct/fScalarProductD.pas
  82. 0 0
      external/CUDA/Samples/SimpleCUDATexture/SimpleTextureD.dpr
  83. 0 0
      external/CUDA/Samples/SimpleCUDATexture/SimpleTextureD.dproj
  84. 0 0
      external/CUDA/Samples/SimpleCUDATexture/SimpleTexture_kernel.cu
  85. 0 0
      external/CUDA/Samples/SimpleCUDATexture/fSimpleTexD.dfm
  86. 0 0
      external/CUDA/Samples/SimpleCUDATexture/fSimpleTexD.pas
  87. 0 0
      external/CUDA/Samples/StableFluids/FluidsD.dpr
  88. 0 0
      external/CUDA/Samples/StableFluids/FluidsD.dproj
  89. 0 0
      external/CUDA/Samples/StableFluids/Fluids_kernels.cu
  90. 0 0
      external/CUDA/Samples/StableFluids/fFluidsD.dfm
  91. 0 0
      external/CUDA/Samples/StableFluids/fFluidsD.pas
  92. 0 0
      external/CUDA/Samples/VertexDataGeneration/Simple kernel.cu
  93. 0 0
      external/CUDA/Samples/VertexDataGeneration/VertexGeneration.dpr
  94. 0 0
      external/CUDA/Samples/VertexDataGeneration/VertexGeneration.dproj
  95. 0 0
      external/CUDA/Samples/VertexDataGeneration/fVertexGenD.dfm
  96. 0 0
      external/CUDA/Samples/VertexDataGeneration/fVertexGenD.pas
  97. 0 0
      external/CUDA/Samples/aComputing.htm
  98. 0 0
      external/CUDA/Source/CUDA.APIComps.pas
  99. 0 0
      external/CUDA/Source/CUDA.Compiler.pas
  100. 0 0
      external/CUDA/Source/CUDA.Context.pas

+ 15 - 15
AdvDemos/AdvDemos.groupproj

@@ -39,9 +39,6 @@
         <Projects Include="IntensityMesh\IntensityMeshC.cbproj">
         <Projects Include="IntensityMesh\IntensityMeshC.cbproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
-        <Projects Include="KosmoScene\KosmoScene.dproj">
-            <Dependencies/>
-        </Projects>
         <Projects Include="PanoramViewer\PanoViewerD.dproj">
         <Projects Include="PanoramViewer\PanoViewerD.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
@@ -57,6 +54,9 @@
         <Projects Include="Quake3Demo\Q3DemoC.cbproj">
         <Projects Include="Quake3Demo\Q3DemoC.cbproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
+        <Projects Include="D:\XYZ_FITiPM\3D Mod\2022_СТУДЕНТЫ_1901\Костенко\Лаб №13 Костенко Артем 12001901\LR13_2\VRsupport.cbproj">
+            <Dependencies/>
+        </Projects>
     </ItemGroup>
     </ItemGroup>
     <ProjectExtensions>
     <ProjectExtensions>
         <Borland.Personality>Default.Personality.12</Borland.Personality>
         <Borland.Personality>Default.Personality.12</Borland.Personality>
@@ -173,15 +173,6 @@
     <Target Name="IntensityMeshC:Make">
     <Target Name="IntensityMeshC:Make">
         <MSBuild Projects="IntensityMesh\IntensityMeshC.cbproj" Targets="Make"/>
         <MSBuild Projects="IntensityMesh\IntensityMeshC.cbproj" Targets="Make"/>
     </Target>
     </Target>
-    <Target Name="KosmoScene">
-        <MSBuild Projects="KosmoScene\KosmoScene.dproj"/>
-    </Target>
-    <Target Name="KosmoScene:Clean">
-        <MSBuild Projects="KosmoScene\KosmoScene.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="KosmoScene:Make">
-        <MSBuild Projects="KosmoScene\KosmoScene.dproj" Targets="Make"/>
-    </Target>
     <Target Name="PanoViewerD">
     <Target Name="PanoViewerD">
         <MSBuild Projects="PanoramViewer\PanoViewerD.dproj"/>
         <MSBuild Projects="PanoramViewer\PanoViewerD.dproj"/>
     </Target>
     </Target>
@@ -227,14 +218,23 @@
     <Target Name="Q3DemoC:Make">
     <Target Name="Q3DemoC:Make">
         <MSBuild Projects="Quake3Demo\Q3DemoC.cbproj" Targets="Make"/>
         <MSBuild Projects="Quake3Demo\Q3DemoC.cbproj" Targets="Make"/>
     </Target>
     </Target>
+    <Target Name="VRsupport">
+        <MSBuild Projects="D:\XYZ_FITiPM\3D Mod\2022_СТУДЕНТЫ_1901\Костенко\Лаб №13 Костенко Артем 12001901\LR13_2\VRsupport.cbproj"/>
+    </Target>
+    <Target Name="VRsupport:Clean">
+        <MSBuild Projects="D:\XYZ_FITiPM\3D Mod\2022_СТУДЕНТЫ_1901\Костенко\Лаб №13 Костенко Артем 12001901\LR13_2\VRsupport.cbproj" Targets="Clean"/>
+    </Target>
+    <Target Name="VRsupport:Make">
+        <MSBuild Projects="D:\XYZ_FITiPM\3D Mod\2022_СТУДЕНТЫ_1901\Костенко\Лаб №13 Костенко Артем 12001901\LR13_2\VRsupport.cbproj" Targets="Make"/>
+    </Target>
     <Target Name="Build">
     <Target Name="Build">
-        <CallTarget Targets="Actorms3dD;ActorMS3dC;ArchipelagoD;ArchipelagoC;ChristmasD;ChristmasC;EarthD;EarthC;ForestD;GLSViewerD;IntensityMeshD;IntensityMeshC;KosmoScene;PanoViewerD;PanoViewerC;TtbD;Q3DemoD;Q3DemoC"/>
+        <CallTarget Targets="Actorms3dD;ActorMS3dC;ArchipelagoD;ArchipelagoC;ChristmasD;ChristmasC;EarthD;EarthC;ForestD;GLSViewerD;IntensityMeshD;IntensityMeshC;PanoViewerD;PanoViewerC;TtbD;Q3DemoD;Q3DemoC;VRsupport"/>
     </Target>
     </Target>
     <Target Name="Clean">
     <Target Name="Clean">
-        <CallTarget Targets="Actorms3dD:Clean;ActorMS3dC:Clean;ArchipelagoD:Clean;ArchipelagoC:Clean;ChristmasD:Clean;ChristmasC:Clean;EarthD:Clean;EarthC:Clean;ForestD:Clean;GLSViewerD:Clean;IntensityMeshD:Clean;IntensityMeshC:Clean;KosmoScene:Clean;PanoViewerD:Clean;PanoViewerC:Clean;TtbD:Clean;Q3DemoD:Clean;Q3DemoC:Clean"/>
+        <CallTarget Targets="Actorms3dD:Clean;ActorMS3dC:Clean;ArchipelagoD:Clean;ArchipelagoC:Clean;ChristmasD:Clean;ChristmasC:Clean;EarthD:Clean;EarthC:Clean;ForestD:Clean;GLSViewerD:Clean;IntensityMeshD:Clean;IntensityMeshC:Clean;PanoViewerD:Clean;PanoViewerC:Clean;TtbD:Clean;Q3DemoD:Clean;Q3DemoC:Clean;VRsupport:Clean"/>
     </Target>
     </Target>
     <Target Name="Make">
     <Target Name="Make">
-        <CallTarget Targets="Actorms3dD:Make;ActorMS3dC:Make;ArchipelagoD:Make;ArchipelagoC:Make;ChristmasD:Make;ChristmasC:Make;EarthD:Make;EarthC:Make;ForestD:Make;GLSViewerD:Make;IntensityMeshD:Make;IntensityMeshC:Make;KosmoScene:Make;PanoViewerD:Make;PanoViewerC:Make;TtbD:Make;Q3DemoD:Make;Q3DemoC:Make"/>
+        <CallTarget Targets="Actorms3dD:Make;ActorMS3dC:Make;ArchipelagoD:Make;ArchipelagoC:Make;ChristmasD:Make;ChristmasC:Make;EarthD:Make;EarthC:Make;ForestD:Make;GLSViewerD:Make;IntensityMeshD:Make;IntensityMeshC:Make;PanoViewerD:Make;PanoViewerC:Make;TtbD:Make;Q3DemoD:Make;Q3DemoC:Make;VRsupport:Make"/>
     </Target>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>
 </Project>

二进制
Asset/Map/earth-clouds.png


二进制
Asset/Map/earth.png


二进制
Asset/ModelExt/ActorMS3D__.zlib


+ 1 - 1
Demos/CleanDemos.bat

@@ -57,7 +57,7 @@ attrib +R "AdvDemos/Q3Demo/Model/animation.cfg"
 rem del *.cfg /s  - there are quake's animations
 rem del *.cfg /s  - there are quake's animations
 attrib -R "AdvDemos/Q3Demo/Model/animation.cfg"
 attrib -R "AdvDemos/Q3Demo/Model/animation.cfg"
 
 
-rem del *.res /s
+del *.res /s
 rem del *.ico /s  - some projects have own icos
 rem del *.ico /s  - some projects have own icos
 rem del *.cur /s  - cursors
 rem del *.cur /s  - cursors
 rem del *.obj /s  - obj models and resources for lazarus
 rem del *.obj /s  - obj models and resources for lazarus

+ 7 - 2
Demos/meshes/actor/ActorD.dproj

@@ -3,7 +3,7 @@
         <ProjectGuid>{8E4580CD-0188-4812-ABE8-527378CB5F46}</ProjectGuid>
         <ProjectGuid>{8E4580CD-0188-4812-ABE8-527378CB5F46}</ProjectGuid>
         <MainSource>ActorD.dpr</MainSource>
         <MainSource>ActorD.dpr</MainSource>
         <Base>True</Base>
         <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Release</Config>
+        <Config Condition="'$(Config)'==''">Debug</Config>
         <TargetedPlatforms>3</TargetedPlatforms>
         <TargetedPlatforms>3</TargetedPlatforms>
         <AppType>Application</AppType>
         <AppType>Application</AppType>
         <FrameworkType>VCL</FrameworkType>
         <FrameworkType>VCL</FrameworkType>
@@ -103,6 +103,8 @@
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <BT_BuildType>Debug</BT_BuildType>
         <BT_BuildType>Debug</BT_BuildType>
         <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
         <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <DCC_DebugDCUs>true</DCC_DebugDCUs>
+        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>
     </PropertyGroup>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
@@ -117,13 +119,14 @@
     <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
     <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
         <BT_BuildType>Debug</BT_BuildType>
         <BT_BuildType>Debug</BT_BuildType>
         <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
         <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_ExeOutput>.</DCC_ExeOutput>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
         <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
         <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>
     </PropertyGroup>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <BT_BuildType>Debug</BT_BuildType>
         <BT_BuildType>Debug</BT_BuildType>
@@ -165,6 +168,8 @@
                     <Source Name="MainSource">ActorD.dpr</Source>
                     <Source Name="MainSource">ActorD.dpr</Source>
                 </Source>
                 </Source>
                 <Excluded_Packages>
                 <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GBComps.bpl">Geoblock - Components</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GBE3D.bpl">File C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GBE3D.bpl not found</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp280.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcbofficexp280.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k280.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\dcloffice2k280.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>

+ 1 - 2
Demos/meshes/actor/fActorD.pas

@@ -165,8 +165,7 @@ begin
 
 
   // Normally actors for Quake II Model have one number of frames
   // Normally actors for Quake II Model have one number of frames
   // for all states 198 for actors and 172 for weapon,
   // for all states 198 for actors and 172 for weapon,
-  // frames 173 to 198 are for death
-  // I use this for Hide and show weapon.
+  // frames 173 to 198 are for death. We use this for Hide and show weapon.
   Actor2.Visible := (Actor1.NextFrameIndex < 173);
   Actor2.Visible := (Actor1.NextFrameIndex < 173);
   if Actor2.Visible then
   if Actor2.Visible then
     Actor2.Synchronize(Actor1);
     Actor2.Synchronize(Actor1);

+ 15 - 10
Demos/meshes/actorproxy/fActorProxyC.cpp

@@ -104,17 +104,20 @@ void __fastcall TForm1::DoRaycastStuff()
 void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
 void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
 		  const double newTime)
 		  const double newTime)
 {
 {
-	 // Align object to hand
-	 * GLArrowLine1->Matrix  = GLActorProxy1->BoneMatrix("Bip01 R Finger1");
-	 * GLArrowLine2->Matrix  = GLActorProxy2->BoneMatrix("Bip01 R Finger1");
+    // Align object to hand
+    *GLArrowLine1->Matrix = GLActorProxy1->BoneMatrix("Bip01 R Finger1");
+    *GLArrowLine2->Matrix = GLActorProxy2->BoneMatrix("Bip01 R Finger1");
 
 
-	 // turn actors
-	 if (cbActorsAreTurning->Checked)
-	 {
-	   GLActorProxy1->Turn(-deltaTime *130);
-	   GLActorProxy2->Turn(deltaTime *100);
-	 }
-	 DoRaycastStuff();
+    // turn actors
+    if (chbActorsAreTurning->Checked) {
+        GLActorProxy1->Turn(-deltaTime * 130);
+        GLActorProxy2->Turn(deltaTime * 100);
+    }
+
+	// show master actor
+	dcInvisible->Visible = chbShowMasterActor->Checked;
+
+    DoRaycastStuff();
 }
 }
 
 
 void __fastcall TForm1::Timer1Timer(TObject *Sender)
 void __fastcall TForm1::Timer1Timer(TObject *Sender)
@@ -124,3 +127,5 @@ void __fastcall TForm1::Timer1Timer(TObject *Sender)
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
+
+

+ 33 - 13
Demos/meshes/actorproxy/fActorProxyC.dfm

@@ -2,8 +2,8 @@ object Form1: TForm1
   Left = 0
   Left = 0
   Top = 0
   Top = 0
   Caption = 'Actor Proxy'
   Caption = 'Actor Proxy'
-  ClientHeight = 418
-  ClientWidth = 555
+  ClientHeight = 563
+  ClientWidth = 675
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
@@ -16,50 +16,70 @@ object Form1: TForm1
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 555
-    Height = 391
+    Width = 675
+    Height = 536
     Camera = GLCamera1
     Camera = GLCamera1
     Buffer.BackgroundColor = 4194304
     Buffer.BackgroundColor = 4194304
-    FieldOfView = 151.307739257812500000
+    FieldOfView = 158.863967895507800000
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     OnMouseMove = GLSceneViewer1MouseMove
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
     TabOrder = 0
+    ExplicitWidth = 558
+    ExplicitHeight = 394
   end
   end
   object Panel1: TPanel
   object Panel1: TPanel
     Left = 0
     Left = 0
-    Top = 391
-    Width = 555
+    Top = 536
+    Width = 675
     Height = 27
     Height = 27
     Align = alBottom
     Align = alBottom
     TabOrder = 1
     TabOrder = 1
-    object cbActorsAreTurning: TCheckBox
-      Left = 13
-      Top = 5
+    ExplicitTop = 391
+    ExplicitWidth = 555
+    object chbActorsAreTurning: TCheckBox
+      Left = 1
+      Top = 1
       Width = 116
       Width = 116
-      Height = 17
+      Height = 25
+      Align = alLeft
       Caption = 'Actors are turning'
       Caption = 'Actors are turning'
       Checked = True
       Checked = True
       State = cbChecked
       State = cbChecked
       TabOrder = 0
       TabOrder = 0
+      ExplicitLeft = 13
+      ExplicitTop = 5
+      ExplicitHeight = 17
+    end
+    object chbShowMasterActor: TCheckBox
+      Left = 558
+      Top = 1
+      Width = 116
+      Height = 25
+      Align = alRight
+      Caption = 'Show master actor'
+      TabOrder = 1
+      ExplicitLeft = 439
+      ExplicitTop = 6
     end
     end
   end
   end
   object GLScene1: TGLScene
   object GLScene1: TGLScene
     Left = 48
     Left = 48
     Top = 24
     Top = 24
-    object InvisibleDummyCube: TGLDummyCube
+    object dcInvisible: TGLDummyCube
       Visible = False
       Visible = False
       CubeSize = 1.000000000000000000
       CubeSize = 1.000000000000000000
       object MasterActor: TGLActor
       object MasterActor: TGLActor
         Material.MaterialLibrary = GLMaterialLibrary1
         Material.MaterialLibrary = GLMaterialLibrary1
         Material.LibMaterialName = 'Mat2'
         Material.LibMaterialName = 'Mat2'
         Direction.Coordinates = {000000000000803F0000000000000000}
         Direction.Coordinates = {000000000000803F0000000000000000}
+        Position.Coordinates = {00000000000080BF000000000000803F}
         Scale.Coordinates = {CDCC4C3DCDCC4C3DCDCC4C3D00000000}
         Scale.Coordinates = {CDCC4C3DCDCC4C3DCDCC4C3D00000000}
         Up.Coordinates = {0000000000000000000080BF00000000}
         Up.Coordinates = {0000000000000000000080BF00000000}
         Interval = 50
         Interval = 50
       end
       end
     end
     end
-    object GLDummyCube2: TGLDummyCube
+    object dcShow: TGLDummyCube
       CubeSize = 1.000000000000000000
       CubeSize = 1.000000000000000000
       object GLActorProxy1: TGLActorProxy
       object GLActorProxy1: TGLActorProxy
         MasterObject = MasterActor
         MasterObject = MasterActor

+ 4 - 3
Demos/meshes/actorproxy/fActorProxyC.h

@@ -36,11 +36,11 @@ class TForm1 : public TForm
 __published:	// IDE-managed Components
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
 	TGLSceneViewer *GLSceneViewer1;
 	TPanel *Panel1;
 	TPanel *Panel1;
-	TCheckBox *cbActorsAreTurning;
+	TCheckBox *chbActorsAreTurning;
 	TGLScene *GLScene1;
 	TGLScene *GLScene1;
-	TGLDummyCube *InvisibleDummyCube;
+	TGLDummyCube *dcInvisible;
 	TGLActor *MasterActor;
 	TGLActor *MasterActor;
-	TGLDummyCube *GLDummyCube2;
+	TGLDummyCube *dcShow;
 	TGLActorProxy *GLActorProxy1;
 	TGLActorProxy *GLActorProxy1;
 	TGLArrowLine *GLArrowLine1;
 	TGLArrowLine *GLArrowLine1;
 	TGLActorProxy *GLActorProxy2;
 	TGLActorProxy *GLActorProxy2;
@@ -52,6 +52,7 @@ __published:	// IDE-managed Components
 	TGLMaterialLibrary *GLMaterialLibrary1;
 	TGLMaterialLibrary *GLMaterialLibrary1;
 	TGLCadencer *GLCadencer1;
 	TGLCadencer *GLCadencer1;
 	TTimer *Timer1;
 	TTimer *Timer1;
+	TCheckBox *chbShowMasterActor;
 	void __fastcall FormCreate(TObject *Sender);
 	void __fastcall FormCreate(TObject *Sender);
 	void __fastcall GLCadencer1Progress(TObject *Sender, const double deltaTime, const double newTime);
 	void __fastcall GLCadencer1Progress(TObject *Sender, const double deltaTime, const double newTime);
 	void __fastcall GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift, int X,
 	void __fastcall GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift, int X,

+ 32 - 12
Demos/meshes/actorproxy/fActorProxyD.dfm

@@ -2,63 +2,83 @@ object FormActorProxy: TFormActorProxy
   Left = 285
   Left = 285
   Top = 192
   Top = 192
   Caption = 'Actor Proxy'
   Caption = 'Actor Proxy'
-  ClientHeight = 437
-  ClientWidth = 590
+  ClientHeight = 571
+  ClientWidth = 650
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Name = 'Tahoma'
   Font.Style = []
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
   OnCreate = FormCreate
   TextHeight = 13
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 590
-    Height = 410
+    Width = 650
+    Height = 544
     Camera = GLCamera1
     Camera = GLCamera1
     Buffer.BackgroundColor = 4194304
     Buffer.BackgroundColor = 4194304
-    FieldOfView = 152.586074829101600000
+    FieldOfView = 159.167938232421900000
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     OnMouseMove = GLSceneViewer1MouseMove
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
     TabOrder = 0
+    ExplicitWidth = 591
+    ExplicitHeight = 414
   end
   end
   object Panel1: TPanel
   object Panel1: TPanel
     Left = 0
     Left = 0
-    Top = 410
-    Width = 590
+    Top = 544
+    Width = 650
     Height = 27
     Height = 27
     Align = alBottom
     Align = alBottom
     TabOrder = 1
     TabOrder = 1
+    ExplicitTop = 410
+    ExplicitWidth = 590
     object cbActorsAreTurning: TCheckBox
     object cbActorsAreTurning: TCheckBox
-      Left = 13
-      Top = 5
+      Left = 1
+      Top = 1
       Width = 116
       Width = 116
-      Height = 17
+      Height = 25
+      Align = alLeft
       Caption = 'Actors are turning'
       Caption = 'Actors are turning'
       Checked = True
       Checked = True
       State = cbChecked
       State = cbChecked
       TabOrder = 0
       TabOrder = 0
+      ExplicitLeft = 13
+      ExplicitTop = 5
+      ExplicitHeight = 17
+    end
+    object chbShowMasterActor: TCheckBox
+      Left = 532
+      Top = 1
+      Width = 117
+      Height = 25
+      Align = alRight
+      Caption = 'Show master actor'
+      TabOrder = 1
+      ExplicitLeft = 472
     end
     end
   end
   end
   object GLScene1: TGLScene
   object GLScene1: TGLScene
     Left = 48
     Left = 48
     Top = 24
     Top = 24
-    object InvisibleDummyCube: TGLDummyCube
+    object dcInvisible: TGLDummyCube
       Visible = False
       Visible = False
       CubeSize = 1.000000000000000000
       CubeSize = 1.000000000000000000
       object MasterActor: TGLActor
       object MasterActor: TGLActor
         Material.MaterialLibrary = GLMaterialLibrary1
         Material.MaterialLibrary = GLMaterialLibrary1
         Material.LibMaterialName = 'Mat2'
         Material.LibMaterialName = 'Mat2'
         Direction.Coordinates = {000000000000803F0000000000000000}
         Direction.Coordinates = {000000000000803F0000000000000000}
+        Position.Coordinates = {00000000000080BF000000000000803F}
         Scale.Coordinates = {CDCC4C3DCDCC4C3DCDCC4C3D00000000}
         Scale.Coordinates = {CDCC4C3DCDCC4C3DCDCC4C3D00000000}
         Up.Coordinates = {0000000000000000000080BF00000000}
         Up.Coordinates = {0000000000000000000080BF00000000}
         Interval = 50
         Interval = 50
       end
       end
     end
     end
-    object GLDummyCube2: TGLDummyCube
+    object dcShow: TGLDummyCube
       CubeSize = 1.000000000000000000
       CubeSize = 1.000000000000000000
       object GLActorProxy1: TGLActorProxy
       object GLActorProxy1: TGLActorProxy
         MasterObject = MasterActor
         MasterObject = MasterActor

+ 7 - 2
Demos/meshes/actorproxy/fActorProxyD.pas

@@ -40,8 +40,8 @@ type
     GLMaterialLibrary1: TGLMaterialLibrary;
     GLMaterialLibrary1: TGLMaterialLibrary;
     GLCadencer1: TGLCadencer;
     GLCadencer1: TGLCadencer;
     GLCamera1: TGLCamera;
     GLCamera1: TGLCamera;
-    InvisibleDummyCube: TGLDummyCube;
-    GLDummyCube2: TGLDummyCube;
+    dcInvisible: TGLDummyCube;
+    dcShow: TGLDummyCube;
     MasterActor: TGLActor;
     MasterActor: TGLActor;
     GLActorProxy1: TGLActorProxy;
     GLActorProxy1: TGLActorProxy;
     GLArrowLine1: TGLArrowLine;
     GLArrowLine1: TGLArrowLine;
@@ -53,6 +53,7 @@ type
     GLArrowLine2: TGLArrowLine;
     GLArrowLine2: TGLArrowLine;
     Panel1: TPanel;
     Panel1: TPanel;
     cbActorsAreTurning: TCheckBox;
     cbActorsAreTurning: TCheckBox;
+    chbShowMasterActor: TCheckBox;
     procedure FormCreate(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
     procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
       newTime: Double);
       newTime: Double);
@@ -153,6 +154,10 @@ begin
        GLActorProxy2.Turn(deltaTime *100);
        GLActorProxy2.Turn(deltaTime *100);
      end;
      end;
 
 
+   	// show master actor
+  	dcInvisible.Visible := chbShowMasterActor.Checked;
+
+
      DoRaycastStuff;
      DoRaycastStuff;
 end;
 end;
 
 

+ 8 - 12
Demos/meshes/expolygon/fExPolygonD.dfm

@@ -2,28 +2,24 @@ object FormExPolygon: TFormExPolygon
   Left = 256
   Left = 256
   Top = 188
   Top = 188
   Caption = 'Extruded Polygon'
   Caption = 'Extruded Polygon'
-  ClientHeight = 444
-  ClientWidth = 640
+  ClientHeight = 355
+  ClientWidth = 512
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
+  Position = poScreenCenter
   OnShow = FormShow
   OnShow = FormShow
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 640
-    Height = 444
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 512
+    Height = 355
     Camera = Camera
     Camera = Camera
-    FieldOfView = 111.908126831054700000
+    FieldOfView = 99.599670410156250000
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseDown = GLSceneViewer1MouseDown

+ 106 - 111
Demos/meshes/formula/fFormulaC.cpp

@@ -14,161 +14,156 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 
 
 const int
 const int
-   // half-grid resolution, grid width is actually cResolution*2 of "quads"
-   cResolution = 50;
+    // half-grid resolution, grid width is actually cResolution*2 of "quads"
+    cResolution = 50;
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
-	: TForm(Owner)
-{
-}
+__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {}
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-
 TAffineVector __fastcall TForm1::MakeVect(const float aX, const float aY)
 TAffineVector __fastcall TForm1::MakeVect(const float aX, const float aY)
 {
 {
-  TAffineVector Result;
-  SetVector(Result, aX*invRes1, sin((aX*aX+aY*aY)*invRes2), aY*invRes1);
-  return Result;
+	TAffineVector Result;
+	SetVector(
+		Result, aX * invRes1, sin((aX * aX + aY * aY) * invRes2), aY * invRes1);
+	return Result;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
 void __fastcall TForm1::AddTriangle(const TAffineVector p1,
 void __fastcall TForm1::AddTriangle(const TAffineVector p1,
-									const TAffineVector p2,
-									const TAffineVector p3,
-									const TGLColorVector color)
+	const TAffineVector p2, const TAffineVector p3, const TGLColorVector color)
 {
 {
-  Mesh1->Vertices->AddVertex(p1, NullVector, color);
-  Mesh1->Vertices->AddVertex(p2, NullVector, color);
-  Mesh1->Vertices->AddVertex(p3, NullVector, color);
+	Mesh1->Vertices->AddVertex(p1, NullVector, color);
+	Mesh1->Vertices->AddVertex(p2, NullVector, color);
+	Mesh1->Vertices->AddVertex(p3, NullVector, color);
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TForm1::FormCreate(TObject* Sender)
 {
 {
-   int x, y;
-   TAffineVector pTopLeft;
-   TAffineVector pTopRight;
-   TAffineVector pBottomRight;
-   TAffineVector pBottomLeft;
-
-   // scaling precalcs for our math func
-   invRes1 = (float) 10/cResolution;
-   invRes2 = 0.1*sqrt(invRes1);
-   //
-   // Triangles
-   //
-   // this one is basic : we calculate the corner points for each grid quad and
-   // add the two triangles that make it
-   Mesh1->Mode = mmTriangles;
-   Mesh1->Vertices->Clear();
-   for (y = -cResolution; y < cResolution; y++)
-	 for (x = -cResolution; x < cResolution; x++)
-	 {
-			pTopLeft = MakeVect(x, y+1);
-			pTopRight = MakeVect(x+1, y+1);
-			pBottomRight = MakeVect(x+1, y);
+	int x, y;
+	TAffineVector pTopLeft;
+	TAffineVector pTopRight;
+	TAffineVector pBottomRight;
+	TAffineVector pBottomLeft;
+
+	// scaling precalcs for our math func
+	invRes1 = (float)10 / cResolution;
+	invRes2 = 0.1 * sqrt(invRes1);
+	//
+	// Triangles
+	//
+	// this one is basic : we calculate the corner points for each grid quad and
+	// add the two triangles that make it
+	Mesh1->Mode = mmTriangles;
+	Mesh1->Vertices->Clear();
+	for (y = -cResolution; y < cResolution; y++)
+		for (x = -cResolution; x < cResolution; x++) {
+			pTopLeft = MakeVect(x, y + 1);
+			pTopRight = MakeVect(x + 1, y + 1);
+			pBottomRight = MakeVect(x + 1, y);
 			pBottomLeft = MakeVect(x, y);
 			pBottomLeft = MakeVect(x, y);
 			// top left triangle
 			// top left triangle
 			AddTriangle(pBottomLeft, pTopLeft, pTopRight, clrBlue);
 			AddTriangle(pBottomLeft, pTopLeft, pTopRight, clrBlue);
 			// bottom right triangle
 			// bottom right triangle
 			AddTriangle(pTopRight, pBottomRight, pBottomLeft, clrBlue);
 			AddTriangle(pTopRight, pBottomRight, pBottomLeft, clrBlue);
-   }
-   Mesh1->CalcNormals(fwCounterClockWise);
-//      Vertices.Locked:=True;
-
-   //
-   // TriangleStrip
-   //
-   // Same as triangle, however trianglestrips are continuous, and to cover
-   // the grid, "null" segments are used at both ends of a strip (to avoid a
-   // visible triangle that would stretch for the full width of the grid).
-   // Note : this can be avoided by reversing grid traversing direction (one line
-   // from left to right, one from right to left, etc.)
-   Mesh2->Mode = mmTriangleStrip;
-   Mesh2->Vertices->Clear();
-   for (y = -cResolution; y < cResolution; y++)
-   {
-	 pTopLeft = MakeVect(-cResolution, y+1);
-	 Mesh2->Vertices->AddVertex(pTopLeft, NullVector, clrBlue);
-	 Mesh2->Vertices->AddVertex(pTopLeft, NullVector, clrBlue);
-	 for (x = -cResolution; x < cResolution; x++)
-	 {
-		pTopRight = MakeVect(x+1, y+1);
-		pBottomLeft = MakeVect(x, y);
-		Mesh2->Vertices->AddVertex(pBottomLeft, NullVector, clrBlue);
-		Mesh2->Vertices->AddVertex(pTopRight, NullVector, clrBlue);
-	 }
-	 pBottomRight = MakeVect(cResolution+1, y);
-	 Mesh2->Vertices->AddVertex(pBottomRight, NullVector, clrBlue);
-	 Mesh2->Vertices->AddVertex(pBottomRight, NullVector, clrBlue);
-	 Mesh2->CalcNormals(fwClockWise);
-//      Vertices.Locked:=True;
-   }
+		}
+	Mesh1->CalcNormals(fwCounterClockWise);
+	//      Vertices->Locked = True;
+
+	//
+	// TriangleStrip
+	//
+	// Same as triangle, however trianglestrips are continuous, and to cover
+	// the grid, "null" segments are used at both ends of a strip (to avoid a
+	// visible triangle that would stretch for the full width of the grid).
+	// Note : this can be avoided by reversing grid traversing direction (one line
+	// from left to right, one from right to left, etc.)
+	Mesh2->Mode = mmTriangleStrip;
+	Mesh2->Vertices->Clear();
+	for (y = -cResolution; y < cResolution; y++) {
+		pTopLeft = MakeVect(-cResolution, y + 1);
+		Mesh2->Vertices->AddVertex(pTopLeft, NullVector, clrBlue);
+		Mesh2->Vertices->AddVertex(pTopLeft, NullVector, clrBlue);
+		for (x = -cResolution; x < cResolution; x++) {
+			pTopRight = MakeVect(x + 1, y + 1);
+			pBottomLeft = MakeVect(x, y);
+			Mesh2->Vertices->AddVertex(pBottomLeft, NullVector, clrBlue);
+			Mesh2->Vertices->AddVertex(pTopRight, NullVector, clrBlue);
+        }
+        pBottomRight = MakeVect(cResolution + 1, y);
+        Mesh2->Vertices->AddVertex(pBottomRight, NullVector, clrBlue);
+        Mesh2->Vertices->AddVertex(pBottomRight, NullVector, clrBlue);
+        Mesh2->CalcNormals(fwClockWise);
+		//      Vertices->Locked = True;
+	}
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TForm1::Timer1Timer(TObject* Sender)
 {
 {
-   // nb of triangles in scene
-   Caption = "Formula " + Format("%d Triangles",
-	  ARRAYOFCONST ((2*(cResolution*2)*(cResolution*2))));
-   // calculate & display triangles framerate
-   // we render twice to get a fair FPS rating
-   GLSceneViewer1->ResetPerformanceMonitor();
-   GLSceneViewer1->Buffer->Render();
-   GLSceneViewer1->Buffer->Render();
-   Label1->Caption = Format("%.2f FPS (mmTriangles)",
-	  ARRAYOFCONST ((GLSceneViewer1->FramesPerSecond())));
-
-   // calculate & display trianglestrip framerate
-   // we render twice to get a fair FPS rating
-   GLSceneViewer2->ResetPerformanceMonitor();
-   GLSceneViewer2->Buffer->Render();
-   GLSceneViewer2->Buffer->Render();
-   Label2->Caption = Format("%.2f FPS (mmTriangleStrip)",
-      ARRAYOFCONST ((GLSceneViewer2->FramesPerSecond())));
+    // nb of triangles in scene
+    Caption = "Formula " +
+              Format("%d Triangles",
+                  ARRAYOFCONST((2 * (cResolution * 2) * (cResolution * 2))));
+    // calculate & display triangles framerate
+    // we render twice to get a fair FPS rating
+    GLSceneViewer1->ResetPerformanceMonitor();
+    GLSceneViewer1->Buffer->Render();
+    GLSceneViewer1->Buffer->Render();
+    Label1->Caption = Format("%.2f FPS (mmTriangles)",
+        ARRAYOFCONST((GLSceneViewer1->FramesPerSecond())));
+
+    // calculate & display trianglestrip framerate
+    // we render twice to get a fair FPS rating
+    GLSceneViewer2->ResetPerformanceMonitor();
+    GLSceneViewer2->Buffer->Render();
+    GLSceneViewer2->Buffer->Render();
+    Label2->Caption = Format("%.2f FPS (mmTriangleStrip)",
+        ARRAYOFCONST((GLSceneViewer2->FramesPerSecond())));
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
-          TShiftState Shift, int X, int Y)
+void __fastcall TForm1::GLSceneViewer1MouseDown(
+    TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
 {
 {
-   mx = X; my = Y;
+	mx = X;
+    my = Y;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
-		  int X, int Y)
+void __fastcall TForm1::GLSceneViewer1MouseMove(
+	TObject* Sender, TShiftState Shift, int X, int Y)
 {
 {
-   if (Shift.Contains(ssLeft))
-   {
-	 GLSceneViewer1->Camera->MoveAroundTarget(my-Y, mx-X);
-	 my = Y; mx = X;
-   }
+    if (Shift.Contains(ssLeft)) {
+        GLSceneViewer1->Camera->MoveAroundTarget(my - Y, mx - X);
+        my = Y;
+        mx = X;
+    }
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer2MouseDown(TObject *Sender, TMouseButton Button,
-		  TShiftState Shift, int X, int Y)
+void __fastcall TForm1::GLSceneViewer2MouseDown(
+    TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
 {
 {
-   mx = X; my = Y;
+    mx = X;
+    my = Y;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer2MouseMove(TObject *Sender, TShiftState Shift,
-		  int X, int Y)
+void __fastcall TForm1::GLSceneViewer2MouseMove(
+    TObject* Sender, TShiftState Shift, int X, int Y)
 {
 {
-   if (Shift.Contains(ssLeft))
-   {
-	 GLSceneViewer2->Camera->MoveAroundTarget(my-Y, mx-X);
-	 my = Y; mx = X;
-   }
+    if (Shift.Contains(ssLeft)) {
+        GLSceneViewer2->Camera->MoveAroundTarget(my - Y, mx - X);
+        my = Y;
+        mx = X;
+    }
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 

+ 1 - 2
Demos/meshes/formula/fFormulaC.dfm

@@ -10,9 +10,8 @@ object Form1: TForm1
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Name = 'Tahoma'
   Font.Style = []
   Font.Style = []
-  OldCreateOrder = False
+  Position = poScreenCenter
   OnCreate = FormCreate
   OnCreate = FormCreate
-  PixelsPerInch = 96
   TextHeight = 13
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0

+ 21 - 41
Demos/meshes/formula/fFormulaD.dfm

@@ -3,28 +3,24 @@ object FormFormula: TFormFormula
   Top = 110
   Top = 110
   BorderWidth = 5
   BorderWidth = 5
   Caption = 'Formula'
   Caption = 'Formula'
-  ClientHeight = 349
-  ClientWidth = 754
+  ClientHeight = 279
+  ClientWidth = 603
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
   OnCreate = FormCreate
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0
-    Top = 21
-    Width = 371
-    Height = 328
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Top = 17
+    Width = 297
+    Height = 262
     Camera = GLCamera1
     Camera = GLCamera1
-    FieldOfView = 117.253990173339800000
+    FieldOfView = 105.286758422851600000
     PenAsTouch = False
     PenAsTouch = False
     Align = alLeft
     Align = alLeft
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseDown = GLSceneViewer1MouseDown
@@ -32,16 +28,12 @@ object FormFormula: TFormFormula
     TabOrder = 0
     TabOrder = 0
   end
   end
   object GLSceneViewer2: TGLSceneViewer
   object GLSceneViewer2: TGLSceneViewer
-    Left = 383
-    Top = 21
-    Width = 371
-    Height = 328
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 306
+    Top = 17
+    Width = 297
+    Height = 262
     Camera = GLCamera2
     Camera = GLCamera2
-    FieldOfView = 117.253990173339800000
+    FieldOfView = 105.286758422851600000
     PenAsTouch = False
     PenAsTouch = False
     Align = alRight
     Align = alRight
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseDown = GLSceneViewer1MouseDown
@@ -51,37 +43,25 @@ object FormFormula: TFormFormula
   object Panel1: TPanel
   object Panel1: TPanel
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 754
-    Height = 21
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 603
+    Height = 17
     Align = alTop
     Align = alTop
     BevelOuter = bvNone
     BevelOuter = bvNone
     TabOrder = 2
     TabOrder = 2
     object Label1: TLabel
     object Label1: TLabel
       Left = 0
       Left = 0
       Top = 0
       Top = 0
-      Width = 371
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Width = 297
+      Height = 13
       Alignment = taCenter
       Alignment = taCenter
       AutoSize = False
       AutoSize = False
       Caption = 'FPS1'
       Caption = 'FPS1'
     end
     end
     object Label2: TLabel
     object Label2: TLabel
-      Left = 380
+      Left = 304
       Top = 0
       Top = 0
-      Width = 371
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Width = 297
+      Height = 13
       Alignment = taCenter
       Alignment = taCenter
       AutoSize = False
       AutoSize = False
       Caption = 'FPS2'
       Caption = 'FPS2'

+ 2 - 1
Demos/meshes/mushroom/fMushroomC.cpp

@@ -78,7 +78,8 @@ void __fastcall TForm1::AddMushRooms()
 	 proxy->RollAngle = Random(360);
 	 proxy->RollAngle = Random(360);
 	 proxy->PitchAngle = -90;
 	 proxy->PitchAngle = -90;
    }
    }
-   MushRoomCounter = MushRoomCounter + cNbMushrooms; // Inc(mushroomCounter, cNbMushrooms);
+
+   MushRoomCounter = MushRoomCounter + cNbMushrooms;
 }
 }
 
 
 
 

+ 0 - 2
Demos/meshes/mushroom/fMushroomC.dfm

@@ -34,8 +34,6 @@ object Form1: TForm1
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
     TabOrder = 0
-    ExplicitWidth = 566
-    ExplicitHeight = 378
   end
   end
   object Button1: TButton
   object Button1: TButton
     Left = 160
     Left = 160

+ 3 - 0
Demos/meshes/subdivide/fSubdivideC.cpp

@@ -28,6 +28,9 @@ __fastcall TForm1::TForm1(TComponent* Owner)
 void __fastcall TForm1::BULoadClick(TObject *Sender)
 void __fastcall TForm1::BULoadClick(TObject *Sender)
 {
 {
    TFileName Path = GetCurrentAssetPath();
    TFileName Path = GetCurrentAssetPath();
+   SetCurrentDir(Path + "\\modelext");
+
+
    BUSubdivide->Enabled = true;
    BUSubdivide->Enabled = true;
 
 
 //   GLFreeForm1->LoadFromFile("polyhedron.3ds");
 //   GLFreeForm1->LoadFromFile("polyhedron.3ds");

+ 13 - 12
Demos/meshes/subdivide/fSubdivideC.dfm

@@ -2,24 +2,21 @@ object Form1: TForm1
   Left = 0
   Left = 0
   Top = 0
   Top = 0
   Caption = 'Subdivide'
   Caption = 'Subdivide'
-  ClientHeight = 380
-  ClientWidth = 567
+  ClientHeight = 494
+  ClientWidth = 672
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Name = 'Tahoma'
   Font.Style = []
   Font.Style = []
-  OldCreateOrder = False
   Position = poScreenCenter
   Position = poScreenCenter
-  WindowState = wsMaximized
-  PixelsPerInch = 96
   TextHeight = 13
   TextHeight = 13
   object Label1: TLabel
   object Label1: TLabel
-    Left = 450
+    Left = 555
     Top = 0
     Top = 0
     Width = 2
     Width = 2
-    Height = 380
+    Height = 494
     Align = alRight
     Align = alRight
     AutoSize = False
     AutoSize = False
     ExplicitLeft = 382
     ExplicitLeft = 382
@@ -28,26 +25,30 @@ object Form1: TForm1
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 450
-    Height = 380
+    Width = 555
+    Height = 494
     Camera = GLCamera1
     Camera = GLCamera1
     Buffer.BackgroundColor = 13619151
     Buffer.BackgroundColor = 13619151
     Buffer.FaceCulling = False
     Buffer.FaceCulling = False
-    FieldOfView = 150.512878417968800000
+    FieldOfView = 157.112609863281300000
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
     TabOrder = 0
+    ExplicitWidth = 536
+    ExplicitHeight = 490
   end
   end
   object Panel1: TPanel
   object Panel1: TPanel
-    Left = 452
+    Left = 557
     Top = 0
     Top = 0
     Width = 115
     Width = 115
-    Height = 380
+    Height = 494
     Align = alRight
     Align = alRight
     BevelOuter = bvLowered
     BevelOuter = bvLowered
     TabOrder = 1
     TabOrder = 1
+    ExplicitLeft = 452
+    ExplicitHeight = 380
     object LASubdivideTime: TLabel
     object LASubdivideTime: TLabel
       Left = 8
       Left = 8
       Top = 168
       Top = 168

+ 42 - 83
Demos/meshes/subdivide/fSubdivideD.dfm

@@ -3,43 +3,34 @@ object FormSubdivide: TFormSubdivide
   Top = 100
   Top = 100
   BorderWidth = 2
   BorderWidth = 2
   Caption = 'Subdivide'
   Caption = 'Subdivide'
-  ClientHeight = 511
-  ClientWidth = 773
+  ClientHeight = 409
+  ClientWidth = 618
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
   Position = poScreenCenter
   Position = poScreenCenter
   ShowHint = True
   ShowHint = True
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object Label1: TLabel
   object Label1: TLabel
-    Left = 626
+    Left = 501
     Top = 0
     Top = 0
-    Width = 3
-    Height = 511
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 2
+    Height = 409
     Align = alRight
     Align = alRight
     AutoSize = False
     AutoSize = False
   end
   end
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 626
-    Height = 511
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 501
+    Height = 409
     Camera = GLCamera1
     Camera = GLCamera1
     Buffer.BackgroundColor = 13619151
     Buffer.BackgroundColor = 13619151
     Buffer.FaceCulling = False
     Buffer.FaceCulling = False
-    FieldOfView = 157.854904174804700000
+    FieldOfView = 152.521591186523400000
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseDown = GLSceneViewer1MouseDown
@@ -47,93 +38,65 @@ object FormSubdivide: TFormSubdivide
     TabOrder = 0
     TabOrder = 0
   end
   end
   object Panel1: TPanel
   object Panel1: TPanel
-    Left = 629
+    Left = 503
     Top = 0
     Top = 0
-    Width = 144
-    Height = 511
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 115
+    Height = 409
     Align = alRight
     Align = alRight
     BevelOuter = bvLowered
     BevelOuter = bvLowered
     TabOrder = 1
     TabOrder = 1
     object LASubdivideTime: TLabel
     object LASubdivideTime: TLabel
-      Left = 10
-      Top = 210
-      Width = 121
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 168
+      Width = 97
+      Height = 13
       Alignment = taCenter
       Alignment = taCenter
       AutoSize = False
       AutoSize = False
       Caption = 'LASubdivideTime'
       Caption = 'LASubdivideTime'
     end
     end
     object BULoad: TButton
     object BULoad: TButton
-      Left = 20
-      Top = 10
-      Width = 104
-      Height = 31
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 8
+      Width = 83
+      Height = 25
       Caption = 'Load'
       Caption = 'Load'
       TabOrder = 0
       TabOrder = 0
       OnClick = BULoadClick
       OnClick = BULoadClick
     end
     end
     object BUSubdivide: TButton
     object BUSubdivide: TButton
-      Left = 10
-      Top = 140
-      Width = 124
-      Height = 31
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 112
+      Width = 99
+      Height = 25
       Caption = 'Subdivide'
       Caption = 'Subdivide'
       Enabled = False
       Enabled = False
       TabOrder = 1
       TabOrder = 1
       OnClick = BUSubdivideClick
       OnClick = BUSubdivideClick
     end
     end
     object TrackBar1: TTrackBar
     object TrackBar1: TTrackBar
-      Left = 10
-      Top = 180
-      Width = 121
-      Height = 21
+      Left = 8
+      Top = 144
+      Width = 97
+      Height = 17
       Hint = 'Subdivision smoothness'
       Hint = 'Subdivision smoothness'
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
       Position = 5
       Position = 5
       TabOrder = 2
       TabOrder = 2
-      ThumbLength = 13
+      ThumbLength = 10
     end
     end
     object RBWireFrame: TRadioButton
     object RBWireFrame: TRadioButton
-      Left = 20
-      Top = 50
-      Width = 101
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 40
+      Width = 81
+      Height = 17
       Caption = 'Wireframe'
       Caption = 'Wireframe'
       TabOrder = 3
       TabOrder = 3
       OnClick = RBWireFrameClick
       OnClick = RBWireFrameClick
     end
     end
     object RBSolid: TRadioButton
     object RBSolid: TRadioButton
-      Left = 20
-      Top = 70
-      Width = 111
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 56
+      Width = 89
+      Height = 17
       Caption = 'Solid'
       Caption = 'Solid'
       Checked = True
       Checked = True
       TabOrder = 4
       TabOrder = 4
@@ -141,14 +104,10 @@ object FormSubdivide: TFormSubdivide
       OnClick = RBSolidClick
       OnClick = RBSolidClick
     end
     end
     object CBAnimate: TCheckBox
     object CBAnimate: TCheckBox
-      Left = 20
-      Top = 100
-      Width = 101
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 80
+      Width = 81
+      Height = 17
       Caption = 'Animate'
       Caption = 'Animate'
       TabOrder = 5
       TabOrder = 5
       OnClick = CBAnimateClick
       OnClick = CBAnimateClick

+ 13 - 20
Demos/meshes/subdivide/fSubdivideD.pas

@@ -53,14 +53,12 @@ type
     LASubdivideTime: TLabel;
     LASubdivideTime: TLabel;
     GLLightSource1: TGLLightSource;
     GLLightSource1: TGLLightSource;
     procedure BULoadClick(Sender: TObject);
     procedure BULoadClick(Sender: TObject);
-    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
-      Shift: TShiftState; X, Y: Integer);
-    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
+    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
       X, Y: Integer);
       X, Y: Integer);
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure BUSubdivideClick(Sender: TObject);
     procedure BUSubdivideClick(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
-    procedure GLCadencer1Progress(Sender: TObject;
-      const deltaTime, newTime: Double);
+    procedure GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
     procedure RBWireFrameClick(Sender: TObject);
     procedure RBWireFrameClick(Sender: TObject);
     procedure RBSolidClick(Sender: TObject);
     procedure RBSolidClick(Sender: TObject);
     procedure CBAnimateClick(Sender: TObject);
     procedure CBAnimateClick(Sender: TObject);
@@ -78,8 +76,8 @@ implementation
 procedure TFormSubdivide.BULoadClick(Sender: TObject);
 procedure TFormSubdivide.BULoadClick(Sender: TObject);
 begin
 begin
   var Path: TFileName := GetCurrentAssetPath();
   var Path: TFileName := GetCurrentAssetPath();
-  SetCurrentDir(Path  + '\model');
-  
+  SetCurrentDir(Path + '\modelext');
+
   BUSubdivide.Enabled := True;
   BUSubdivide.Enabled := True;
 
 
   // GLFreeForm1.LoadFromFile('polyhedron.3ds');
   // GLFreeForm1.LoadFromFile('polyhedron.3ds');
@@ -87,17 +85,14 @@ begin
   // GLFreeForm1.LoadFromFile('trinityrage.smd');
   // GLFreeForm1.LoadFromFile('trinityrage.smd');
   // GLFreeForm1.LoadFromFile('HighPolyObject.3ds');
   // GLFreeForm1.LoadFromFile('HighPolyObject.3ds');
 
 
-  {
+  (*
     GLActor1.LoadFromFile('trinityrage.smd');
     GLActor1.LoadFromFile('trinityrage.smd');
     GLActor1.AddDataFromFile('run.smd');
     GLActor1.AddDataFromFile('run.smd');
     GLActor1.Animations[1].MakeSkeletalTranslationStatic;
     GLActor1.Animations[1].MakeSkeletalTranslationStatic;
     GLActor1.SwitchToAnimation(GLActor1.Animations[1]);
     GLActor1.SwitchToAnimation(GLActor1.Animations[1]);
-  }
+  *)
 
 
   GLActor1.LoadFromFile('waste.md2');
   GLActor1.LoadFromFile('waste.md2');
-  
-  SetCurrentDir(Path  + '\texture');
-  
   GLActor1.Material.Texture.Image.LoadFromFile('waste.jpg');
   GLActor1.Material.Texture.Image.LoadFromFile('waste.jpg');
   GLActor1.Material.Texture.Enabled := True;
   GLActor1.Material.Texture.Enabled := True;
   GLActor1.SwitchToAnimation(GLActor1.Animations[0]);
   GLActor1.SwitchToAnimation(GLActor1.Animations[0]);
@@ -177,8 +172,7 @@ begin
 
 
         morphNorms := GLS.MeshUtils.BuildNormals(morphTris, bufRemap);
         morphNorms := GLS.MeshUtils.BuildNormals(morphTris, bufRemap);
 
 
-        SubdivideTriangles(TrackBar1.Position * 0.1, morphTris, bufRemap,
-          morphNorms);
+        SubdivideTriangles(TrackBar1.Position * 0.1, morphTris, bufRemap, morphNorms);
 
 
         buf := TGLAffineVectorList.Create;
         buf := TGLAffineVectorList.Create;
         try
         try
@@ -232,15 +226,15 @@ begin
   GLActor1.StructureChanged;
   GLActor1.StructureChanged;
 end;
 end;
 
 
-procedure TFormSubdivide.GLSceneViewer1MouseDown(Sender: TObject;
-  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+procedure TFormSubdivide.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
 begin
 begin
   mx := X;
   mx := X;
   my := Y;
   my := Y;
 end;
 end;
 
 
-procedure TFormSubdivide.GLSceneViewer1MouseMove(Sender: TObject;
-  Shift: TShiftState; X, Y: Integer);
+procedure TFormSubdivide.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
+  X, Y: Integer);
 begin
 begin
   if Shift = [ssLeft] then
   if Shift = [ssLeft] then
   begin
   begin
@@ -271,8 +265,7 @@ begin
   GLSceneViewer1.ResetPerformanceMonitor;
   GLSceneViewer1.ResetPerformanceMonitor;
 end;
 end;
 
 
-procedure TFormSubdivide.GLCadencer1Progress(Sender: TObject;
-  const deltaTime, newTime: Double);
+procedure TFormSubdivide.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
 begin
 begin
   GLSceneViewer1.Invalidate;
   GLSceneViewer1.Invalidate;
 end;
 end;

+ 182 - 163
Demos/meshes/synthterr/fSynthTerrainC.cpp

@@ -20,205 +20,224 @@
 #pragma link "GLS.HeightData"
 #pragma link "GLS.HeightData"
 #pragma link "GLS.HeightData"
 #pragma link "GLS.HeightData"
 #pragma resource "*.dfm"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
-	: TForm(Owner)
-{
-}
+__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {}
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TForm1::FormCreate(TObject* Sender)
 {
 {
-   int i;
-   TBitmap *bmp;
-
-   // 8 MB height data cache
-   // Note this is the data size in terms of elevation samples, it does not
-   // take into account all the data required/allocated by the renderer
-   GLCustomHDS->MaxPoolSize = 8*1024*1024;
-   // Move camera starting point to an interesting hand-picked location
-   DummyCube1->Position->X = 50;
-   DummyCube1->Position->Z = 150;
-   // Initial camera height offset (controled with pageUp/pageDown)
-   FCamHeight = 20;
-   // We build several basic 1D textures which are just color ramps
-   // all use automatic texture mapping corodinates, in ObjectLinear method
-   // (ie. texture coordinates for a vertex depend on that vertex coordinates)
-   bmp = new TBitmap;
-   bmp->PixelFormat = pf24bit;
-   bmp->Width = 256;
-   bmp->Height = 1;
-   // Black-White ramp, autotexture maps to Z coordinate
-   // This one changes with altitude, this is a quick way to obtain
-   // altitude-dependant coloring
-   for (i=0; i < 255; i++)
-	  bmp->Canvas->Pixels[i][0] = RGB(i, i, i);
-   GLMaterialLibrary1->AddTextureMaterial("BW", bmp)->Material->Texture->MappingMode = tmmObjectLinear;
-   GLMaterialLibrary1->AddTextureMaterial("BW", bmp)->Material->Texture->MappingSCoordinates->AsVector = VectorMake(0, 0, 0.0001, 0);
-   // Red, Blue map linearly to X and Y axis respectively
-   for (i=0; i < 255; i++)
-	  bmp->Canvas->Pixels[i][0] = RGB(i, 0, 0);
-   GLMaterialLibrary1->AddTextureMaterial("Red", bmp)->Material->Texture->MappingMode = tmmObjectLinear;
-   GLMaterialLibrary1->AddTextureMaterial("Red", bmp)->Material->Texture->MappingSCoordinates->AsVector = VectorMake(0.1, 0, 0, 0);
-   for (i=0; i < 255; i++)
-	  bmp->Canvas->Pixels[i][0] = RGB(0, 0, i);
-
-   GLMaterialLibrary1->AddTextureMaterial("Blue", bmp)->Material->Texture->MappingMode = tmmObjectLinear;
-   GLMaterialLibrary1->AddTextureMaterial("Blue", bmp)->Material->Texture->MappingSCoordinates->AsVector = VectorMake(0, 0.1, 0, 0);
-   bmp->Free();
-   TerrainRenderer1->MaterialLibrary = GLMaterialLibrary1;
+    int i;
+    TBitmap* bmp;
+
+    // 8 MB height data cache
+    // Note this is the data size in terms of elevation samples, it does not
+    // take into account all the data required/allocated by the renderer
+    GLCustomHDS->MaxPoolSize = 8 * 1024 * 1024;
+    // Move camera starting point to an interesting hand-picked location
+    DummyCube1->Position->X = 50;
+    DummyCube1->Position->Z = 150;
+    // Initial camera height offset (controled with pageUp/pageDown)
+    FCamHeight = 20;
+    // We build several basic 1D textures which are just color ramps
+    // all use automatic texture mapping corodinates, in ObjectLinear method
+    // (ie. texture coordinates for a vertex depend on that vertex coordinates)
+    bmp = new TBitmap;
+    bmp->PixelFormat = pf24bit;
+    bmp->Width = 256;
+    bmp->Height = 1;
+    // Black-White ramp, autotexture maps to Z coordinate
+    // This one changes with altitude, this is a quick way to obtain
+    // altitude-dependant coloring
+    for (i = 0; i < 255; i++)
+        bmp->Canvas->Pixels[i][0] = RGB(i, i, i);
+    GLMaterialLibrary1->AddTextureMaterial("BW", bmp)
+        ->Material->Texture->MappingMode = tmmObjectLinear;
+    GLMaterialLibrary1->AddTextureMaterial("BW", bmp)
+        ->Material->Texture->MappingSCoordinates->AsVector =
+        VectorMake(0, 0, 0.0001, 0);
+    // Red, Blue map linearly to X and Y axis respectively
+    for (i = 0; i < 255; i++)
+        bmp->Canvas->Pixels[i][0] = RGB(i, 0, 0);
+    GLMaterialLibrary1->AddTextureMaterial("Red", bmp)
+        ->Material->Texture->MappingMode = tmmObjectLinear;
+    GLMaterialLibrary1->AddTextureMaterial("Red", bmp)
+        ->Material->Texture->MappingSCoordinates->AsVector =
+        VectorMake(0.1, 0, 0, 0);
+    for (i = 0; i < 255; i++)
+        bmp->Canvas->Pixels[i][0] = RGB(0, 0, i);
+
+    GLMaterialLibrary1->AddTextureMaterial("Blue", bmp)
+        ->Material->Texture->MappingMode = tmmObjectLinear;
+    GLMaterialLibrary1->AddTextureMaterial("Blue", bmp)
+        ->Material->Texture->MappingSCoordinates->AsVector =
+        VectorMake(0, 0.1, 0, 0);
+    bmp->Free();
+    TerrainRenderer1->MaterialLibrary = GLMaterialLibrary1;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 //
 //
 // The beef : this event does all the interesting elevation data stuff
 // The beef : this event does all the interesting elevation data stuff
 //
 //
-
-void __fastcall TForm1::GLCustomHDSStartPreparingData(TGLHeightData *HeightData)
+void __fastcall TForm1::GLCustomHDSStartPreparingData(TGLHeightData* HeightData)
 {
 {
-   int x, y;
-   TByteRaster rasterLine;
-   TGLHeightDataType oldType;
-   TByteVector * b;
-   float d, dy;
-
-   HeightData->DataState = hdsPreparing;
-   // retrieve data
-   oldType = HeightData->DataType;
-   HeightData->Allocate(hdtByte);
-   // Cheap texture changed (32 is our tileSize = 2^5)
-   // This basicly picks a texture for each tile depending on the tile's position
-   switch ((((HeightData->XLeft ^ HeightData->YTop) << 5) && 3))
-   {
-   case  0, 3 : HeightData->MaterialName = "BW"; break;
-   case  1 : HeightData->MaterialName = "Blue";  break;
-   case  2 : HeightData->MaterialName = "Red";  break;
-   default:
-	   ;
-   }
+	int x, y;
+	TByteRaster rasterLine;
+	TGLHeightDataType oldType;
+	TByteVector* b;
+	float d, dy;
+
+	b = new(TByteVector);
+	HeightData->DataState = hdsPreparing;
+	// retrieve data
+	oldType = HeightData->DataType;
+	HeightData->Allocate(hdtByte);
+	// Cheap texture changed (32 is our tileSize = 2^5)
+	// This basicly picks a texture for each tile depending on the tile's position
+	switch ((((HeightData->XLeft ^ HeightData->YTop) << 5) && 3)) {
+		case 0, 3:
+			HeightData->MaterialName = "BW";
+			break;
+		case 1:
+			HeightData->MaterialName = "Blue";
+			break;
+		case 2:
+			HeightData->MaterialName = "Red";
+			break;
+		default:;
+	}
 	// 'Cheap' elevation data : this is just a formula z=f(x, y)
 	// 'Cheap' elevation data : this is just a formula z=f(x, y)
-	for (y=HeightData->YTop; y < HeightData->YTop+HeightData->Size-1; y++)
+	for (y = HeightData->YTop; y < HeightData->YTop + HeightData->Size - 1; y++)
 	{
 	{
-	 rasterLine = HeightData->ByteRaster[y-HeightData->YTop];
-	 dy = y*y;
-	 for (x = HeightData->XLeft; x < HeightData->XLeft+HeightData->Size-1; x++)
-	 {
-		d = sqrt(x*x+dy);
-		b->data[0,0,0] = (float) RoundInt(128+128*Sin(d*0.2)/(d*0.1+1));
-		rasterLine[x-HeightData->XLeft] = b;
-	 }
-	}
+		rasterLine = HeightData->ByteRaster[y - HeightData->YTop];
+		dy = y * y;
+        for (x = HeightData->XLeft;
+             x < HeightData->XLeft + HeightData->Size - 1; x++) {
+            d = sqrt(x * x + dy);
+			b = (float)RoundInt(128 + 128 * Sin(d * 0.2) / (d * 0.1 + 1));
+			rasterLine[x - HeightData->XLeft] = b;
+        }
+    }
 	if (oldType != hdtByte)
 	if (oldType != hdtByte)
-	 HeightData->DataType = oldType;
+		HeightData->DataType = oldType;
 
 
-   ///inherited;
+	///inherited;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 // Movement, mouse handling etc.
 // Movement, mouse handling etc.
 
 
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
-          TShiftState Shift, int X, int Y)
+void __fastcall TForm1::GLSceneViewer1MouseDown(
+    TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
 {
 {
-   mx = X;
-   my = Y;
-
+    mx = X;
+    my = Y;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
-          int X, int Y)
+void __fastcall TForm1::GLSceneViewer1MouseMove(
+    TObject* Sender, TShiftState Shift, int X, int Y)
 {
 {
-   if (Shift.Contains(ssLeft))
-   {
-	  GLCamera1->MoveAroundTarget(my-Y, mx-X);
-	  mx = X;
-	  my = Y;
-   }
+    if (Shift.Contains(ssLeft)) {
+        GLCamera1->MoveAroundTarget(my - Y, mx - X);
+        mx = X;
+        my = Y;
+    }
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TForm1::Timer1Timer(TObject* Sender)
 {
 {
-   Caption = "Synthetic Terrain " + Format("%.1f FPS - %d",
-	   ARRAYOFCONST ((GLSceneViewer1->FramesPerSecond(),
-		  TerrainRenderer1->LastTriangleCount)));
-   GLSceneViewer1->ResetPerformanceMonitor();
+    Caption =
+        "Synthetic Terrain " +
+        Format("%.1f FPS - %d", ARRAYOFCONST((GLSceneViewer1->FramesPerSecond(),
+                                    TerrainRenderer1->LastTriangleCount)));
+    GLSceneViewer1->ResetPerformanceMonitor();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::FormKeyPress(TObject *Sender, System::WideChar &Key)
+void __fastcall TForm1::FormKeyPress(TObject* Sender, System::WideChar &Key)
 {
 {
-   switch (Key)
-   {
-   case '+' : if (GLCamera1->DepthOfView < 4000)
-		 {
-		 GLCamera1->DepthOfView = GLCamera1->DepthOfView*1.2;
-		 GLSceneViewer1->Buffer->FogEnvironment->FogEnd =
-			GLSceneViewer1->Buffer->FogEnvironment->FogEnd*1.2;
-		 GLSceneViewer1->Buffer->FogEnvironment->FogStart =
-			GLSceneViewer1->Buffer->FogEnvironment->FogStart*1.2;
-		 } break;
-	case '-' : if (GLCamera1->DepthOfView > 300)
-		 {
-		 GLCamera1->DepthOfView = GLCamera1->DepthOfView/1.2;
-		 GLSceneViewer1->Buffer->FogEnvironment->FogEnd =
-		   GLSceneViewer1->Buffer->FogEnvironment->FogEnd/1.2;
-		 GLSceneViewer1->Buffer->FogEnvironment->FogStart =
-		   GLSceneViewer1->Buffer->FogEnvironment->FogStart/1.2;
-		 } break;
-   case  '*' : if (TerrainRenderer1->CLODPrecision > 5)
-	   TerrainRenderer1->CLODPrecision = RoundInt(TerrainRenderer1->CLODPrecision*0.8);
-	   break;
-   case  '/' : if (TerrainRenderer1->CLODPrecision<500)
-		 TerrainRenderer1->CLODPrecision = RoundInt(TerrainRenderer1->CLODPrecision*1.2);
-		 break;
-   case  '8' : if (TerrainRenderer1->QualityDistance>40)
-		 TerrainRenderer1->QualityDistance = RoundInt(TerrainRenderer1->QualityDistance*0.8);
-		 break;
-   case  '9' : if (TerrainRenderer1->QualityDistance<1000)
-		 TerrainRenderer1->QualityDistance = RoundInt(TerrainRenderer1->QualityDistance*1.2);
-		 break;
-   default:
-	   ;
-   }
-
-   Key = 0x0;
+    switch (Key) {
+        case '+':
+            if (GLCamera1->DepthOfView < 4000) {
+                GLCamera1->DepthOfView = GLCamera1->DepthOfView * 1.2;
+                GLSceneViewer1->Buffer->FogEnvironment->FogEnd =
+                    GLSceneViewer1->Buffer->FogEnvironment->FogEnd * 1.2;
+                GLSceneViewer1->Buffer->FogEnvironment->FogStart =
+					GLSceneViewer1->Buffer->FogEnvironment->FogStart * 1.2;
+            }
+            break;
+        case '-':
+            if (GLCamera1->DepthOfView > 300) {
+                GLCamera1->DepthOfView = GLCamera1->DepthOfView / 1.2;
+                GLSceneViewer1->Buffer->FogEnvironment->FogEnd =
+                    GLSceneViewer1->Buffer->FogEnvironment->FogEnd / 1.2;
+                GLSceneViewer1->Buffer->FogEnvironment->FogStart =
+                    GLSceneViewer1->Buffer->FogEnvironment->FogStart / 1.2;
+            }
+            break;
+        case '*':
+            if (TerrainRenderer1->CLODPrecision > 5)
+                TerrainRenderer1->CLODPrecision =
+                    RoundInt(TerrainRenderer1->CLODPrecision * 0.8);
+            break;
+        case '/':
+            if (TerrainRenderer1->CLODPrecision < 500)
+                TerrainRenderer1->CLODPrecision =
+                    RoundInt(TerrainRenderer1->CLODPrecision * 1.2);
+            break;
+        case '8':
+            if (TerrainRenderer1->QualityDistance > 40)
+                TerrainRenderer1->QualityDistance =
+                    RoundInt(TerrainRenderer1->QualityDistance * 0.8);
+            break;
+        case '9':
+            if (TerrainRenderer1->QualityDistance < 1000)
+                TerrainRenderer1->QualityDistance =
+                    RoundInt(TerrainRenderer1->QualityDistance * 1.2);
+            break;
+        default:;
+    }
+
+    Key = 0x0;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
-		  const double newTime)
+void __fastcall TForm1::GLCadencer1Progress(
+    TObject* Sender, const double deltaTime, const double newTime)
 {
 {
-   float speed;
-
-   // handle keypresses
-   if (IsKeyDown(VK_SHIFT))
-	 speed = 5*deltaTime;
-   else
-	 speed = deltaTime;
-
-
-	  if (IsKeyDown(VK_RIGHT))
-		 DummyCube1->Translate(GLCamera1->Position->Z*speed, 0,
-							  -GLCamera1->Position->X*speed);
-	  if (IsKeyDown(VK_LEFT))
-		 DummyCube1->Translate(-GLCamera1->Position->Z*speed, 0,
-								GLCamera1->Position->X*speed);
-	  if (IsKeyDown(VK_UP))
-		 DummyCube1->Translate(-GLCamera1->Position->X*speed, 0,
-							  -GLCamera1->Position->Z*speed);
-	  if (IsKeyDown(VK_DOWN))
-		 DummyCube1->Translate(GLCamera1->Position->X*speed, 0,
-		                       GLCamera1->Position->Z*speed);
-	  if (IsKeyDown(VK_PRIOR))
-		 FCamHeight = FCamHeight+10*speed;
-	  if (IsKeyDown(VK_NEXT))
-		 FCamHeight = FCamHeight-10*speed;
-	  if (IsKeyDown(VK_ESCAPE))
-		 Close();
-   // don't drop through terrain!
-   DummyCube1->Position->Y = TerrainRenderer1->InterpolatedHeight(DummyCube1->Position->AsVector)+FCamHeight;
+    float speed;
+
+    // handle keypresses
+    if (IsKeyDown(VK_SHIFT))
+        speed = 5 * deltaTime;
+    else
+        speed = deltaTime;
+
+    if (IsKeyDown(VK_RIGHT))
+        DummyCube1->Translate(
+            GLCamera1->Position->Z * speed, 0, -GLCamera1->Position->X * speed);
+    if (IsKeyDown(VK_LEFT))
+        DummyCube1->Translate(
+            -GLCamera1->Position->Z * speed, 0, GLCamera1->Position->X * speed);
+    if (IsKeyDown(VK_UP))
+        DummyCube1->Translate(-GLCamera1->Position->X * speed, 0,
+            -GLCamera1->Position->Z * speed);
+    if (IsKeyDown(VK_DOWN))
+        DummyCube1->Translate(
+            GLCamera1->Position->X * speed, 0, GLCamera1->Position->Z * speed);
+    if (IsKeyDown(VK_PRIOR))
+        FCamHeight = FCamHeight + 10 * speed;
+    if (IsKeyDown(VK_NEXT))
+        FCamHeight = FCamHeight - 10 * speed;
+    if (IsKeyDown(VK_ESCAPE))
+        Close();
+    // don't drop through terrain!
+    DummyCube1->Position->Y =
+        TerrainRenderer1->InterpolatedHeight(DummyCube1->Position->AsVector) +
+        FCamHeight;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
+

+ 0 - 2
Demos/meshes/synthterr/fSynthTerrainC.dfm

@@ -10,10 +10,8 @@ object Form1: TForm1
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Name = 'Tahoma'
   Font.Style = []
   Font.Style = []
-  OldCreateOrder = False
   OnCreate = FormCreate
   OnCreate = FormCreate
   OnKeyPress = FormKeyPress
   OnKeyPress = FormKeyPress
-  PixelsPerInch = 96
   TextHeight = 13
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0

+ 251 - 232
Demos/meshes/terrain/fTerrainC.cpp

@@ -31,276 +31,295 @@
 #pragma link "GLS.Material"
 #pragma link "GLS.Material"
 #pragma link "GLS.FileMP3"
 #pragma link "GLS.FileMP3"
 #pragma resource "*.dfm"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 
 
 float random(void)
 float random(void)
 {
 {
-  return (float)(rand() & 0x1FFF) / (float)0x1FFF;
+    return (float)(rand() & 0x1FFF) / (float)0x1FFF;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent * Owner):TForm(Owner)
+__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
 {
 {
-  TFileName Path = GetCurrentAssetPath();
-  // 8 MB height data cache
-  // Note this is the data size in terms of elevation samples, it does not
-  // take into account all the data required/allocated by the renderer
-  GLBitmapHDS1->MaxPoolSize = 8 * 1024 * 1024;
-  // specify height map data
-  GLBitmapHDS1->Picture->LoadFromFile("terrain.bmp");
-  // load the texture maps
-  GLMaterialLibrary1->Materials->Items[0]->Material->Texture->Image->
-	LoadFromFile("snow512.jpg");
-  GLMaterialLibrary1->Materials->Items[1]->Material->Texture->Image->
-	LoadFromFile("detailmap.jpg");
-  SPMoon->Material->Texture->Image->LoadFromFile("moon.bmp");
-  SPSun->Material->Texture->Image->LoadFromFile("flare1.bmp");
-  // apply texture map scale (our heightmap size is 256)
-  TerrainRenderer1->TilesPerTexture = 256.0 / TerrainRenderer1->TileSize;
-  // load Bitmap Font
-  BitmapFont1->Glyphs->LoadFromFile("darkgold_font.bmp");
-  // load and setup sound samples
-  GLSoundLibrary->Samples->Add()->LoadFromFile("ChillyWind.mp3");
-  GLSoundLibrary->Samples->Add()->LoadFromFile("howl.mp3");
-  // Could've been done at design time, but then it hurts the eyes ;)
-  GLSceneViewer1->Buffer->BackgroundColor = clWhite;
-  // Move camera starting point to an interesting hand-picked location
-  DummyCube1->Position->X = 570;
-  DummyCube1->Position->Z = -385;
-  DummyCube1->Turn(90);
-  // Initial camera height offset (controled with pageUp/pageDown)
-  FCamHeight = 10;
-
-  randomize();
+    TFileName Path = GetCurrentAssetPath();
+    SetCurrentDir(Path + "\\texture");
+
+    // 8 MB height data cache
+    // Note this is the data size in terms of elevation samples, it does not
+    // take into account all the data required/allocated by the renderer
+    GLBitmapHDS1->MaxPoolSize = 8 * 1024 * 1024;
+    // specify height map data
+    GLBitmapHDS1->Picture->LoadFromFile("terrain.bmp");
+    // load the texture maps
+    GLMaterialLibrary1->Materials->Items[0]
+        ->Material->Texture->Image->LoadFromFile("snow512.jpg");
+    GLMaterialLibrary1->Materials->Items[1]
+        ->Material->Texture->Image->LoadFromFile("detailmap.jpg");
+    SPMoon->Material->Texture->Image->LoadFromFile("moon.bmp");
+    SPSun->Material->Texture->Image->LoadFromFile("flare1.bmp");
+    // apply texture map scale (our heightmap size is 256)
+    TerrainRenderer1->TilesPerTexture = 256.0 / TerrainRenderer1->TileSize;
+    // Load Bitmap Font
+    BitmapFont1->Glyphs->LoadFromFile("darkgold_font.bmp");
+
+    // Load and setup sound samples
+    // Load and setup sound samples
+    SetCurrentDir(Path + "\\audio");
+    GLSoundLibrary->Samples->Add()->LoadFromFile("ChillyWind.mp3");
+    GLSoundLibrary->Samples->Add()->LoadFromFile("howl.mp3");
+    // Could've been done at design time, but then it hurts the eyes ;)
+    GLSceneViewer1->Buffer->BackgroundColor = clWhite;
+    // Move camera starting point to an interesting hand-picked location
+    DummyCube1->Position->X = 570;
+    DummyCube1->Position->Z = -385;
+    DummyCube1->Turn(90);
+    // Initial camera height offset (controled with pageUp/pageDown)
+    FCamHeight = 10;
+
+    randomize();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLCadencer1Progress(TObject * Sender,
-											const double deltaTime,
-											const double newTime)
+void __fastcall TForm1::GLCadencer1Progress(
+    TObject* Sender, const double deltaTime, const double newTime)
 {
 {
-  float speed;
-
-  // handle keypresses
-  if(IsKeyDown(VK_SHIFT))
-	speed = 5 * deltaTime;
-  else
-	speed = deltaTime;
-  TGLCoordinates *c = GLCamera1->Position;
-  if(IsKeyDown(VK_UP))
-	DummyCube1->Translate(c->Z * speed, 0, -c->X * speed);
-  if(IsKeyDown(VK_DOWN))
-	DummyCube1->Translate(-c->Z * speed, 0, c->X * speed);
-  if(IsKeyDown(VK_LEFT))
-	DummyCube1->Translate(-c->X * speed, 0, -c->Z * speed);
-  if(IsKeyDown(VK_RIGHT))
-	DummyCube1->Translate(c->X * speed, 0, c->Z * speed);
-  if(IsKeyDown(VK_PRIOR))
-	FCamHeight = FCamHeight + 10 * speed;
-  if(IsKeyDown(VK_NEXT))
-	FCamHeight = FCamHeight - 10 * speed;
-  if(IsKeyDown(VK_ESCAPE))
-	Close();
-
-  // don't drop through terrain!
-  DummyCube1->Position->Y =
-	TerrainRenderer1->InterpolatedHeight(DummyCube1->Position->AsVector) +
-	FCamHeight;
+    float speed;
+
+    // handle keypresses
+    if (IsKeyDown(VK_SHIFT))
+        speed = 5 * deltaTime;
+    else
+        speed = deltaTime;
+    TGLCoordinates* c = GLCamera1->Position;
+    if (IsKeyDown(VK_UP))
+        DummyCube1->Translate(c->Z * speed, 0, -c->X * speed);
+    if (IsKeyDown(VK_DOWN))
+        DummyCube1->Translate(-c->Z * speed, 0, c->X * speed);
+    if (IsKeyDown(VK_LEFT))
+        DummyCube1->Translate(-c->X * speed, 0, -c->Z * speed);
+    if (IsKeyDown(VK_RIGHT))
+        DummyCube1->Translate(c->X * speed, 0, c->Z * speed);
+    if (IsKeyDown(VK_PRIOR))
+        FCamHeight = FCamHeight + 10 * speed;
+    if (IsKeyDown(VK_NEXT))
+        FCamHeight = FCamHeight - 10 * speed;
+    if (IsKeyDown(VK_ESCAPE))
+        Close();
+
+    // don't drop through terrain!
+    DummyCube1->Position->Y =
+        TerrainRenderer1->InterpolatedHeight(DummyCube1->Position->AsVector) +
+        FCamHeight;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject * Sender,
-                                                TMouseButton Button,
-                                                TShiftState Shift, int X, int Y)
+void __fastcall TForm1::GLSceneViewer1MouseDown(
+    TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
 {
 {
-  my = Y;
-  mx = X;
+    my = Y;
+    mx = X;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject * Sender,
-												TShiftState Shift, int X, int Y)
+void __fastcall TForm1::GLSceneViewer1MouseMove(
+    TObject* Sender, TShiftState Shift, int X, int Y)
 {
 {
-  if(Shift.Contains(ssLeft))
-  {
-	GLCamera1->MoveAroundTarget((my - Y) * 0.5, (mx - X) * 0.5);
-	mx = X;
-	my = Y;
-  }
+    if (Shift.Contains(ssLeft)) {
+        GLCamera1->MoveAroundTarget((my - Y) * 0.5, (mx - X) * 0.5);
+        mx = X;
+        my = Y;
+    }
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::Timer1Timer(TObject * Sender)
+void __fastcall TForm1::Timer1Timer(TObject* Sender)
 {
 {
-  String s;
-//  s.printf("%.1f FPS - %d", GLSceneViewer1->FramesPerSecond(),
-//		   TerrainRenderer1->LastTriangleCount());
-  HUDText1->Text = s;
-  GLSceneViewer1->ResetPerformanceMonitor();
+    String s;
+    //  s.printf("%.1f FPS - %d", GLSceneViewer1->FramesPerSecond(),
+    //		   TerrainRenderer1->LastTriangleCount());
+    HUDText1->Text = s;
+    GLSceneViewer1->ResetPerformanceMonitor();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::FormKeyPress(TObject * Sender, char &Key)
+void __fastcall TForm1::FormKeyPress(TObject* Sender, char &Key)
 {
 {
-  TGLMaterial *fp;
-  TGLFogEnvironment *fe;
-  TGIFColor  Color;
-
-  switch (Key)
-  {
-  case 'w':
-  case 'W':
-	fp = GLMaterialLibrary1->Materials->Items[0]->Material;
-	if(fp->PolygonMode == pmLines)
-	  fp->PolygonMode = pmFill;
-	else
-	  fp->PolygonMode = pmLines;
-	break;
-  case '+':
-	if(GLCamera1->DepthOfView < 2000)
-	{
-	  GLCamera1->DepthOfView = GLCamera1->DepthOfView * 1.2;
-	  fe = GLSceneViewer1->Buffer->FogEnvironment;
-	  fe->FogEnd = fe->FogEnd * 1.2;
-	  fe->FogStart = fe->FogStart * 1.2;
-	}
-	break;
-  case '-':
-	if(GLCamera1->DepthOfView > 300)
-    {
-      GLCamera1->DepthOfView = GLCamera1->DepthOfView / 1.2;
-      fe = GLSceneViewer1->Buffer->FogEnvironment;
-      fe->FogEnd = fe->FogEnd / 1.2;
-      fe->FogStart = fe->FogStart / 1.2;
-	}
-    break;
-  case '*':
-	if(TerrainRenderer1->CLODPrecision > 20)
-	  TerrainRenderer1->CLODPrecision =
-		RoundInt(TerrainRenderer1->CLODPrecision * 0.8);
-	break;
-  case '/':
-	if(TerrainRenderer1->CLODPrecision < 1000)
-	  TerrainRenderer1->CLODPrecision =
-		RoundInt(TerrainRenderer1->CLODPrecision * 1.2);
-	break;
-  case '8':
-	if(TerrainRenderer1->QualityDistance > 40)
-	  TerrainRenderer1->QualityDistance =
-		RoundInt(TerrainRenderer1->QualityDistance * 0.8);
-	break;
-  case '9':
-	if(TerrainRenderer1->QualityDistance < 1000)
-	  TerrainRenderer1->QualityDistance =
-		RoundInt(TerrainRenderer1->QualityDistance * 1.2);
-	break;
-  case 'n':
-  case 'N':
-	if(SkyDome1->Stars->Count == 0)
-	{
-	  // turn on 'night' mode
-	  Color.Red = 0; Color.Green = 0; Color.Blue = 8;
-	  SkyDome1->Bands->Items[0]->StopColor->AsWinColor = TGIFColorMap::RGB2Color(Color);
-	  Color.Red = 0; Color.Green = 0; Color.Blue = 0;
-	  SkyDome1->Bands->Items[0]->StartColor->AsWinColor = TGIFColorMap::RGB2Color(Color);
-	  Color.Red = 0; Color.Green = 0; Color.Blue = 16;
-	  SkyDome1->Bands->Items[1]->StopColor->AsWinColor =  TGIFColorMap::RGB2Color(Color);
-	  Color.Red = 0; Color.Green = 0; Color.Blue = 8;
-	  SkyDome1->Bands->Items[1]->StartColor->AsWinColor =  TGIFColorMap::RGB2Color(Color);
-
-	  SkyDome1->Stars->AddRandomStars(700, clWhite, True);      // many white stars
-	  Color.Red = 255; Color.Green = 100; Color.Blue = 100;
-	  SkyDome1->Stars->AddRandomStars(100, TGIFColorMap::RGB2Color(Color), True); // some redish ones
-	  Color.Red = 100; Color.Green = 100; Color.Blue = 255;
-	  SkyDome1->Stars->AddRandomStars(100, TGIFColorMap::RGB2Color(Color), True); // some blueish ones
-	  Color.Red = 255; Color.Green = 255; Color.Blue = 100;
-	  SkyDome1->Stars->AddRandomStars(100, TGIFColorMap::RGB2Color(Color), True); // some yellowish ones
-
-	  GLSceneViewer1->Buffer->BackgroundColor = clBlack;
-	  fe = GLSceneViewer1->Buffer->FogEnvironment;
-	  fe->FogColor->AsWinColor = clBlack;
-	  fe->FogStart = -fe->FogStart;     // Fog is used to make things darker
-
-	  SPMoon->Visible = True;
-	  SPSun->Visible = False;
-	  GLLensFlare->Visible = False;
-	}
-	break;
-  case 'd':
-  case 'D':
-    if(SkyDome1->Stars->Count > 0)
-	{
-      // turn on 'day' mode
-      SkyDome1->Bands->Items[1]->StopColor->Color = clrNavy;
-      SkyDome1->Bands->Items[1]->StartColor->Color = clrBlue;
-      SkyDome1->Bands->Items[0]->StopColor->Color = clrBlue;
-      SkyDome1->Bands->Items[0]->StartColor->Color = clrWhite;
-      SkyDome1->Stars->Clear();
-      GLSceneViewer1->Buffer->BackgroundColor = clWhite;
-      fe = GLSceneViewer1->Buffer->FogEnvironment;
-	  fe->FogColor->AsWinColor = clWhite;
-      fe->FogStart = -fe->FogStart;
-
-	  GLSceneViewer1->Buffer->FogEnvironment->FogStart = 0;
-      SPMoon->Visible = False;
-      SPSun->Visible = True;
+    TGLMaterial* fp;
+    TGLFogEnvironment* fe;
+    TGIFColor Color;
+
+    switch (Key) {
+        case 'w':
+        case 'W':
+            fp = GLMaterialLibrary1->Materials->Items[0]->Material;
+            if (fp->PolygonMode == pmLines)
+                fp->PolygonMode = pmFill;
+            else
+                fp->PolygonMode = pmLines;
+            break;
+        case '+':
+            if (GLCamera1->DepthOfView < 2000) {
+                GLCamera1->DepthOfView = GLCamera1->DepthOfView * 1.2;
+                fe = GLSceneViewer1->Buffer->FogEnvironment;
+                fe->FogEnd = fe->FogEnd * 1.2;
+                fe->FogStart = fe->FogStart * 1.2;
+            }
+            break;
+        case '-':
+            if (GLCamera1->DepthOfView > 300) {
+                GLCamera1->DepthOfView = GLCamera1->DepthOfView / 1.2;
+                fe = GLSceneViewer1->Buffer->FogEnvironment;
+                fe->FogEnd = fe->FogEnd / 1.2;
+                fe->FogStart = fe->FogStart / 1.2;
+            }
+            break;
+        case '*':
+            if (TerrainRenderer1->CLODPrecision > 20)
+                TerrainRenderer1->CLODPrecision =
+                    RoundInt(TerrainRenderer1->CLODPrecision * 0.8);
+            break;
+        case '/':
+            if (TerrainRenderer1->CLODPrecision < 1000)
+                TerrainRenderer1->CLODPrecision =
+                    RoundInt(TerrainRenderer1->CLODPrecision * 1.2);
+            break;
+        case '8':
+            if (TerrainRenderer1->QualityDistance > 40)
+                TerrainRenderer1->QualityDistance =
+                    RoundInt(TerrainRenderer1->QualityDistance * 0.8);
+            break;
+        case '9':
+            if (TerrainRenderer1->QualityDistance < 1000)
+                TerrainRenderer1->QualityDistance =
+                    RoundInt(TerrainRenderer1->QualityDistance * 1.2);
+            break;
+        case 'n':
+        case 'N':
+            if (SkyDome1->Stars->Count == 0) {
+                // turn on 'night' mode
+                Color.Red = 0;
+                Color.Green = 0;
+                Color.Blue = 8;
+                SkyDome1->Bands->Items[0]->StopColor->AsWinColor =
+                    TGIFColorMap::RGB2Color(Color);
+                Color.Red = 0;
+                Color.Green = 0;
+                Color.Blue = 0;
+                SkyDome1->Bands->Items[0]->StartColor->AsWinColor =
+                    TGIFColorMap::RGB2Color(Color);
+                Color.Red = 0;
+                Color.Green = 0;
+                Color.Blue = 16;
+                SkyDome1->Bands->Items[1]->StopColor->AsWinColor =
+                    TGIFColorMap::RGB2Color(Color);
+                Color.Red = 0;
+                Color.Green = 0;
+                Color.Blue = 8;
+                SkyDome1->Bands->Items[1]->StartColor->AsWinColor =
+                    TGIFColorMap::RGB2Color(Color);
+
+                SkyDome1->Stars->AddRandomStars(
+                    700, clWhite, True); // many white stars
+                Color.Red = 255;
+                Color.Green = 100;
+                Color.Blue = 100;
+                SkyDome1->Stars->AddRandomStars(100,
+                    TGIFColorMap::RGB2Color(Color), True); // some redish ones
+                Color.Red = 100;
+                Color.Green = 100;
+                Color.Blue = 255;
+                SkyDome1->Stars->AddRandomStars(100,
+                    TGIFColorMap::RGB2Color(Color), True); // some blueish ones
+                Color.Red = 255;
+                Color.Green = 255;
+                Color.Blue = 100;
+                SkyDome1->Stars->AddRandomStars(100,
+                    TGIFColorMap::RGB2Color(Color),
+                    True); // some yellowish ones
+
+                GLSceneViewer1->Buffer->BackgroundColor = clBlack;
+                fe = GLSceneViewer1->Buffer->FogEnvironment;
+                fe->FogColor->AsWinColor = clBlack;
+                fe->FogStart =
+                    -fe->FogStart; // Fog is used to make things darker
+
+                SPMoon->Visible = True;
+                SPSun->Visible = False;
+                GLLensFlare->Visible = False;
+            }
+            break;
+        case 'd':
+        case 'D':
+            if (SkyDome1->Stars->Count > 0) {
+                // turn on 'day' mode
+                SkyDome1->Bands->Items[1]->StopColor->Color = clrNavy;
+                SkyDome1->Bands->Items[1]->StartColor->Color = clrBlue;
+                SkyDome1->Bands->Items[0]->StopColor->Color = clrBlue;
+                SkyDome1->Bands->Items[0]->StartColor->Color = clrWhite;
+                SkyDome1->Stars->Clear();
+                GLSceneViewer1->Buffer->BackgroundColor = clWhite;
+                fe = GLSceneViewer1->Buffer->FogEnvironment;
+                fe->FogColor->AsWinColor = clWhite;
+                fe->FogStart = -fe->FogStart;
+
+                GLSceneViewer1->Buffer->FogEnvironment->FogStart = 0;
+                SPMoon->Visible = False;
+                SPSun->Visible = True;
+            }
+            break;
+        case 't':
+            if (SkyDome1->Options.Contains(sdoTwinkle))
+                SkyDome1->Options = SkyDome1->Options << sdoTwinkle;
+            else
+                SkyDome1->Options = SkyDome1->Options >> sdoTwinkle;
+            break;
+        case 'l':
+            GLLensFlare->Visible = (!GLLensFlare->Visible) && SPSun->Visible;
     }
     }
-    break;
-  case 't':
-    if(SkyDome1->Options.Contains(sdoTwinkle))
-      SkyDome1->Options = SkyDome1->Options << sdoTwinkle;
-	else
-      SkyDome1->Options = SkyDome1->Options >> sdoTwinkle;
-    break;
-  case 'l':
-    GLLensFlare->Visible = (!GLLensFlare->Visible) && SPSun->Visible;
-  }
-  Key = '\0';
+    Key = '\0';
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TISoundTimer(TObject * Sender)
+void __fastcall TForm1::TISoundTimer(TObject* Sender)
 {
 {
-  TGLVector wolfPos;
-  float c, s;
-  TGLBSoundEmitter *be;
-
-  if(!GLSMBASS1->Active)
-	return;
-  if(SkyDome1->Stars->Count == 0)
-  {
-    // wind blows around camera
-    be = GetOrCreateSoundEmitter(GLCamera1);
-    be->Source->SoundLibrary = GLSoundLibrary;
-    be->Source->SoundName = GLSoundLibrary->Samples->Items[0]->Name;
-    be->Source->Volume = random() * 0.5 + 0.5;
-    be->Playing = True;
-  }
-  else
-  {
-    // wolf howl at some distance, at ground level
-    wolfPos = GLCamera1->AbsolutePosition;
-	SinCosine(random() * Gls::Vectorgeometry::c2PI, 100 + random(1000), s, c);
-	wolfPos.X = wolfPos.X + c;
-	wolfPos.Z = wolfPos.Z + s;
-	wolfPos.Y = TerrainRenderer1->InterpolatedHeight(wolfPos);
-	DCSound->Position->AsVector = wolfPos;
-	be = GetOrCreateSoundEmitter(DCSound);
-	be->Source->SoundLibrary = GLSoundLibrary;
-	be->Source->SoundName = GLSoundLibrary->Samples->Items[1]->Name;
-	be->Source->MinDistance = 100;
-	be->Source->MaxDistance = 4000;
-	be->Playing = True;
-  }
-  TISound->Enabled = False;
-  TISound->Interval = 10000 + random(10000);
-  TISound->Enabled = True;
+    TGLVector wolfPos;
+    float c, s;
+    TGLBSoundEmitter* be;
+
+    if (!GLSMBASS1->Active)
+        return;
+    if (SkyDome1->Stars->Count == 0) {
+        // wind blows around camera
+        be = GetOrCreateSoundEmitter(GLCamera1);
+        be->Source->SoundLibrary = GLSoundLibrary;
+        be->Source->SoundName = GLSoundLibrary->Samples->Items[0]->Name;
+        be->Source->Volume = random() * 0.5 + 0.5;
+        be->Playing = True;
+    } else {
+        // wolf howl at some distance, at ground level
+        wolfPos = GLCamera1->AbsolutePosition;
+        SinCosine(
+            random() * Gls::Vectorgeometry::c2PI, 100 + random(1000), s, c);
+        wolfPos.X = wolfPos.X + c;
+        wolfPos.Z = wolfPos.Z + s;
+        wolfPos.Y = TerrainRenderer1->InterpolatedHeight(wolfPos);
+        DCSound->Position->AsVector = wolfPos;
+        be = GetOrCreateSoundEmitter(DCSound);
+        be->Source->SoundLibrary = GLSoundLibrary;
+        be->Source->SoundName = GLSoundLibrary->Samples->Items[1]->Name;
+        be->Source->MinDistance = 100;
+        be->Source->MaxDistance = 4000;
+        be->Playing = True;
+    }
+    TISound->Enabled = False;
+    TISound->Interval = 10000 + random(10000);
+    TISound->Enabled = True;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------

+ 5 - 5
Demos/meshes/terrain/fTerrainD.pas

@@ -95,7 +95,7 @@ procedure TFormTerrain.FormCreate(Sender: TObject);
 begin
 begin
   var Path: TFileName := GetCurrentAssetPath();
   var Path: TFileName := GetCurrentAssetPath();
   SetCurrentDir(Path  + '\texture');
   SetCurrentDir(Path  + '\texture');
-  
+
   // 8 MB height data cache
   // 8 MB height data cache
   // Note this is the data size in terms of elevation samples, it does not
   // Note this is the data size in terms of elevation samples, it does not
   // take into account all the data required/allocated by the renderer
   // take into account all the data required/allocated by the renderer
@@ -109,11 +109,11 @@ begin
   SPSun.Material.Texture.Image.LoadFromFile('flare1.bmp');
   SPSun.Material.Texture.Image.LoadFromFile('flare1.bmp');
   // apply texture map scale (our heightmap size is 256)
   // apply texture map scale (our heightmap size is 256)
   TerrainRenderer1.TilesPerTexture := 256 / TerrainRenderer1.TileSize;
   TerrainRenderer1.TilesPerTexture := 256 / TerrainRenderer1.TileSize;
-  // load Bitmap Font
+  // Load Bitmap Font
   BitmapFont1.Glyphs.LoadFromFile('darkgold_font.bmp');
   BitmapFont1.Glyphs.LoadFromFile('darkgold_font.bmp');
-  
-  // load and setup sound samples
-  SetCurrentDir(S  + '\audio');
+
+  // Load and setup sound samples
+  SetCurrentDir(Path  + '\audio');
   with GLSoundLibrary.Samples do
   with GLSoundLibrary.Samples do
   begin
   begin
     Add.LoadFromFile('ChillyWind.mp3');
     Add.LoadFromFile('ChillyWind.mp3');

+ 1 - 1
Demos/meshes/tiles/TilesD.dproj

@@ -8,7 +8,7 @@
         <AppType>Application</AppType>
         <AppType>Application</AppType>
         <FrameworkType>VCL</FrameworkType>
         <FrameworkType>VCL</FrameworkType>
         <ProjectVersion>19.4</ProjectVersion>
         <ProjectVersion>19.4</ProjectVersion>
-        <Platform Condition="'$(Platform)'==''">Win64</Platform>
+        <Platform Condition="'$(Platform)'==''">Win32</Platform>
     </PropertyGroup>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
     <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
         <Base>true</Base>
         <Base>true</Base>

+ 16 - 35
Demos/meshes/tiles/fTilesC.cpp

@@ -26,6 +26,8 @@ void __fastcall TForm1::FormCreate(TObject* Sender)
 {
 {
 	int i, j;
 	int i, j;
 	TFileName Path = GetCurrentAssetPath();
 	TFileName Path = GetCurrentAssetPath();
+	SetCurrentDir(Path  + "\\texture");
+
 	GLMaterialLibrary->TexturePaths = GetCurrentDir();
 	GLMaterialLibrary->TexturePaths = GetCurrentDir();
 
 
 	GLMaterialLibrary->LibMaterialByName("beigemarble")
 	GLMaterialLibrary->LibMaterialByName("beigemarble")
@@ -35,47 +37,25 @@ void __fastcall TForm1::FormCreate(TObject* Sender)
 	GLMaterialLibrary->LibMaterialByName("walkway")
 	GLMaterialLibrary->LibMaterialByName("walkway")
 		->Material->Texture->Image->LoadFromFile("walkway.jpg");
 		->Material->Texture->Image->LoadFromFile("walkway.jpg");
 
 
-	// fill the tiled area with random tiles
-	RandSeed = 0;
-
-   for (i=-20;i<=20;i++)
-	 for (j=-20;j<=20;j++) {
-	 // GLTilePlane->Tiles->Item[i][j] = 1; //Random(GLMaterialLibrary->Materials->Count-1)+1;
-	 }
-
-	// set all tile materials to anisotropic,
-	// add them to the material selection combo
-	for (i = 0; i < (GLMaterialLibrary->Materials->Count - 1); i++) {
-		GLMaterialLibrary->Materials->Items[i]
-			->Material->Texture->FilteringQuality = tfAnisotropic;
-		CBMaterial->Items->Add(GLMaterialLibrary->Materials->Items[i]->Name);
-	}
-	CBMaterial->ItemIndex = 0;
-
-/*
-
   // fill the tiled area with random tiles
   // fill the tiled area with random tiles
-  RandSeed := 0;
-  for i := -20 to 20 do
-	for j := -20 to 20 do
-	  GLTilePlane.Tiles[i, j] := Random(GLMaterialLibrary.Materials.Count - 1) + 1;
-
-  // set all tile materials to anisotropic,
-  // add them to the material selection combo
-  for i := 0 to GLMaterialLibrary.Materials.Count - 1 do
-  begin
-	GLMaterialLibrary.Materials[i].Material.Texture.FilteringQuality :=
-	  tfAnisotropic;
-	CBMaterial.Items.Add(GLMaterialLibrary.Materials[i].Name);
-  end;
-  CBMaterial.ItemIndex := 0;
- */
+    RandSeed = 0;
+    for (int i = -20; i < 20; i++)
+        for (int j = -20; j < 20; j++)
+            GLTilePlane->Tiles[i][j] =
+                Random(GLMaterialLibrary->Materials.Count - 1) + 1;
 
 
+    // set all tile materials to anisotropic add them to the material selection combo
+    for (i = 0; GLMaterialLibrary->Materials->Count - 1; i++) {
+        GLMaterialLibrary->Materials->Items[i]
+            ->Material->Texture->FilteringQuality = tfAnisotropic;
+        CBMaterial->Items->Add(GLMaterialLibrary->Materials->Items[i]->Name);
+    }
+    CBMaterial->ItemIndex = 0;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
 void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
 void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
-          TPoint &MousePos, bool &Handled)
+		  TPoint &MousePos, bool &Handled)
 {
 {
   GLCamera->AdjustDistanceToTarget(Power(1.1, WheelDelta / 120));
   GLCamera->AdjustDistanceToTarget(Power(1.1, WheelDelta / 120));
 }
 }
@@ -90,3 +70,4 @@ void __fastcall TForm1::GLDirectOpenGLRender(TObject *Sender, TGLRenderContextIn
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
+

+ 1 - 0
Demos/meshes/tiles/fTilesD.dfm

@@ -10,6 +10,7 @@ object FormTiles: TFormTiles
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
   OnCreate = FormCreate
   TextHeight = 13
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer

+ 0 - 2
Demos/meshes/tiles/fTilesD.pas

@@ -74,9 +74,7 @@ type
     procedure CBShowGridClick(Sender: TObject);
     procedure CBShowGridClick(Sender: TObject);
     procedure CBSortByMaterialsClick(Sender: TObject);
     procedure CBSortByMaterialsClick(Sender: TObject);
   private
   private
-     
   public
   public
-     
     mx, my: Integer;
     mx, my: Integer;
     tileX, tileY: Integer;
     tileX, tileY: Integer;
     mip, translateOffset: TGLVector;
     mip, translateOffset: TGLVector;

+ 139 - 139
Demos/meshes/tree/fTreeC.cpp

@@ -13,283 +13,283 @@
 #pragma link "GLS.FileTGA"
 #pragma link "GLS.FileTGA"
 
 
 #pragma resource "*.dfm"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
 void TForm1::AlignControlsToTree()
 void TForm1::AlignControlsToTree()
 {
 {
-  TrackBar1->Position = GLTree1->Depth;
-  TrackBar2->Position = RoundInt(GLTree1->BranchTwist);
-  TrackBar3->Position = RoundInt(GLTree1->BranchAngle * 100);
-  TrackBar4->Position = RoundInt(GLTree1->BranchAngleBias * 100);
-  TrackBar5->Position = RoundInt(GLTree1->BranchSize * 10);
-  TrackBar6->Position = RoundInt(GLTree1->BranchRadius * 25);
-  TrackBar7->Position = RoundInt(GLTree1->BranchNoise * 100);
-  TrackBar8->Position = RoundInt(GLTree1->LeafSize * 100);
-  TrackBar9->Position = RoundInt(GLTree1->LeafThreshold * 100);
-  TrackBar10->Position = GLTree1->BranchFacets;
-  Edit1->Text = IntToStr(GLTree1->Seed);
-  CheckBox1->Checked = GLTree1->CentralLeader;
-  TrackBar11->Position = RoundInt(GLTree1->CentralLeaderBias * 100);
+    TrackBar1->Position = GLTree1->Depth;
+    TrackBar2->Position = RoundInt(GLTree1->BranchTwist);
+    TrackBar3->Position = RoundInt(GLTree1->BranchAngle * 100);
+    TrackBar4->Position = RoundInt(GLTree1->BranchAngleBias * 100);
+    TrackBar5->Position = RoundInt(GLTree1->BranchSize * 10);
+    TrackBar6->Position = RoundInt(GLTree1->BranchRadius * 25);
+    TrackBar7->Position = RoundInt(GLTree1->BranchNoise * 100);
+    TrackBar8->Position = RoundInt(GLTree1->LeafSize * 100);
+    TrackBar9->Position = RoundInt(GLTree1->LeafThreshold * 100);
+    TrackBar10->Position = GLTree1->BranchFacets;
+    Edit1->Text = IntToStr(GLTree1->Seed);
+    CheckBox1->Checked = GLTree1->CentralLeader;
+    TrackBar11->Position = RoundInt(GLTree1->CentralLeaderBias * 100);
 }
 }
 
 
 void TForm1::NewTree()
 void TForm1::NewTree()
 {
 {
-  delete GLTree1;
-  GLTree1 = (TGLTree *) GLScene1->Objects->AddNewChild(__classid(TGLTree));
-
-  GLTree1->MaterialLibrary = GLMaterialLibrary1;
-  GLTree1->LeafMaterialName = "LeafFront";
-  GLTree1->LeafBackMaterialName = "LeafBack";
-  GLTree1->BranchMaterialName = "Branch";
-  GLTree1->Depth = 8;
-  GLTree1->LeafSize = 0.2;
-  GLTree1->BranchRadius = 0.08;
-  GLTree1->BranchNoise = 0.5;
-
-  Randomize();
-  GLTree1->Seed = RoundInt((2 * Random() - 1) * (MaxInt - 1));
-
-  AlignControlsToTree();
+    delete GLTree1;
+    GLTree1 = (TGLTree*)GLScene1->Objects->AddNewChild(__classid(TGLTree));
+
+    GLTree1->MaterialLibrary = GLMaterialLibrary1;
+    GLTree1->LeafMaterialName = "LeafFront";
+    GLTree1->LeafBackMaterialName = "LeafBack";
+    GLTree1->BranchMaterialName = "Branch";
+    GLTree1->Depth = 8;
+    GLTree1->LeafSize = 0.2;
+    GLTree1->BranchRadius = 0.08;
+    GLTree1->BranchNoise = 0.5;
+
+    Randomize();
+    GLTree1->Seed = RoundInt((2 * Random() - 1) * (MaxInt - 1));
+
+    AlignControlsToTree();
 }
 }
 
 
-__fastcall TForm1::TForm1(TComponent * Owner):TForm(Owner)
+__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
 {
 {
-  TFileName Path = GetCurrentAssetPath();
-  // Set up default textures
-  TGLLibMaterial *lm =
-	GLMaterialLibrary1->AddTextureMaterial("LeafFront", "maple_multi.tga", true);
-  lm->Material->BlendingMode = bmAlphaTest50;
-  lm->Material->Texture->TextureMode = tmModulate;
-  lm->Material->Texture->TextureFormat = tfRGBA;
-
-  lm = GLMaterialLibrary1->AddTextureMaterial("LeafBack", "maple_multi.tga", true);
-  lm->Material->BlendingMode = bmAlphaTest50;
-  lm->Material->Texture->TextureMode = tmModulate;
-  lm->Material->Texture->TextureFormat = tfRGBA;
-
-  lm = GLMaterialLibrary1->AddTextureMaterial("Branch", "zbark_016.jpg", true);
-  lm->Material->Texture->TextureMode = tmModulate;
-
-  // Set a up a tree
-  NewTree();
+    TFileName Path = GetCurrentAssetPath();
+    SetCurrentDir(Path + "\\texture");
+
+    // Set up default textures
+    TGLLibMaterial* lm = GLMaterialLibrary1->AddTextureMaterial(
+        "LeafFront", "maple_multi.tga", true);
+    lm->Material->BlendingMode = bmAlphaTest50;
+    lm->Material->Texture->TextureMode = tmModulate;
+    lm->Material->Texture->TextureFormat = tfRGBA;
+
+    lm = GLMaterialLibrary1->AddTextureMaterial(
+        "LeafBack", "maple_multi.tga", true);
+    lm->Material->BlendingMode = bmAlphaTest50;
+    lm->Material->Texture->TextureMode = tmModulate;
+    lm->Material->Texture->TextureFormat = tfRGBA;
+
+    lm =
+        GLMaterialLibrary1->AddTextureMaterial("Branch", "zbark_016.jpg", true);
+    lm->Material->Texture->TextureMode = tmModulate;
+
+    // Set a up a tree
+    NewTree();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject * Sender,
-												TMouseButton Button,
-												TShiftState Shift, int X, int Y)
+void __fastcall TForm1::GLSceneViewer1MouseDown(
+    TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
 {
 {
-  mx = X;
-  my = Y;
+    mx = X;
+    my = Y;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject * Sender,
-												TShiftState Shift, int X, int Y)
+void __fastcall TForm1::GLSceneViewer1MouseMove(
+	TObject* Sender, TShiftState Shift, int X, int Y)
 {
 {
-  if(Shift.Contains(ssLeft))
-	GLCamera1->MoveAroundTarget(my - Y, mx - X);
-  else if(Shift.Contains(ssRight))
-	GLCamera1->AdjustDistanceToTarget(1 + (my - Y) * 0.01);
-  mx = X;
-  my = Y;
+    if (Shift.Contains(ssLeft))
+        GLCamera1->MoveAroundTarget(my - Y, mx - X);
+    else if (Shift.Contains(ssRight))
+        GLCamera1->AdjustDistanceToTarget(1 + (my - Y) * 0.01);
+    mx = X;
+    my = Y;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar1Change(TObject * Sender)
+void __fastcall TForm1::TrackBar1Change(TObject* Sender)
 {
 {
-  GLTree1->Depth = (float) TrackBar1->Position;
+    GLTree1->Depth = (float)TrackBar1->Position;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar2Change(TObject * Sender)
+void __fastcall TForm1::TrackBar2Change(TObject* Sender)
 {
 {
-  GLTree1->BranchTwist = (float)TrackBar2->Position;
+    GLTree1->BranchTwist = (float)TrackBar2->Position;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar3Change(TObject * Sender)
+void __fastcall TForm1::TrackBar3Change(TObject* Sender)
 {
 {
-  GLTree1->BranchAngle = (float)TrackBar3->Position / 100;
+    GLTree1->BranchAngle = (float)TrackBar3->Position / 100;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar4Change(TObject * Sender)
+void __fastcall TForm1::TrackBar4Change(TObject* Sender)
 {
 {
-  GLTree1->BranchAngleBias = (float)TrackBar4->Position / 100;
+    GLTree1->BranchAngleBias = (float)TrackBar4->Position / 100;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar5Change(TObject * Sender)
+void __fastcall TForm1::TrackBar5Change(TObject* Sender)
 {
 {
-  GLTree1->BranchSize = (float)TrackBar5->Position / 10;
+    GLTree1->BranchSize = (float)TrackBar5->Position / 10;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar6Change(TObject * Sender)
+void __fastcall TForm1::TrackBar6Change(TObject* Sender)
 {
 {
-  GLTree1->BranchRadius = (float)TrackBar6->Position / 25;
+    GLTree1->BranchRadius = (float)TrackBar6->Position / 25;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar7Change(TObject * Sender)
+void __fastcall TForm1::TrackBar7Change(TObject* Sender)
 {
 {
-  GLTree1->BranchNoise = (float)TrackBar7->Position / 100;
+    GLTree1->BranchNoise = (float)TrackBar7->Position / 100;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar8Change(TObject * Sender)
+void __fastcall TForm1::TrackBar8Change(TObject* Sender)
 {
 {
-  GLTree1->LeafSize = (float)TrackBar8->Position / 100;
+    GLTree1->LeafSize = (float)TrackBar8->Position / 100;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar9Change(TObject * Sender)
+void __fastcall TForm1::TrackBar9Change(TObject* Sender)
 {
 {
-  GLTree1->LeafThreshold = (float)TrackBar9->Position / 100;
+    GLTree1->LeafThreshold = (float)TrackBar9->Position / 100;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar10Change(TObject * Sender)
+void __fastcall TForm1::TrackBar10Change(TObject* Sender)
 {
 {
-  GLTree1->BranchFacets = (float)TrackBar10->Position;
+    GLTree1->BranchFacets = (float)TrackBar10->Position;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::Button1Click(TObject * Sender)
+void __fastcall TForm1::Button1Click(TObject* Sender)
 {
 {
-  try
-  {
-	GLTree1->Seed = StrToInt(Edit1->Text);
-  }
-  catch(Exception * E)
-  {
-	MessageDlg("Invalid input", mtWarning, TMsgDlgButtons() << mbOK, 0);
-	Edit1->Text = IntToStr(GLTree1->Seed);
-  }
+    try {
+        GLTree1->Seed = StrToInt(Edit1->Text);
+    } catch (Exception* E) {
+        MessageDlg("Invalid input", mtWarning, TMsgDlgButtons() << mbOK, 0);
+        Edit1->Text = IntToStr(GLTree1->Seed);
+    }
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::CheckBox1Click(TObject * Sender)
+void __fastcall TForm1::CheckBox1Click(TObject* Sender)
 {
 {
-  GLTree1->CentralLeader = CheckBox1->Checked;
+    GLTree1->CentralLeader = CheckBox1->Checked;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::TrackBar11Change(TObject * Sender)
+void __fastcall TForm1::TrackBar11Change(TObject* Sender)
 {
 {
-  GLTree1->CentralLeaderBias = (float)TrackBar11->Position / 100;
+    GLTree1->CentralLeaderBias = (float)TrackBar11->Position / 100;
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::NewTree1Click(TObject * Sender)
+void __fastcall TForm1::NewTree1Click(TObject* Sender)
 {
 {
-  NewTree();
+    NewTree();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::LoadTree1Click(TObject * Sender)
+void __fastcall TForm1::LoadTree1Click(TObject* Sender)
 {
 {
-  if(!OpenDialog1->Execute())
-    return;
+    if (!OpenDialog1->Execute())
+        return;
 
 
-  GLTree1->LoadFromFile(OpenDialog1->FileName);
-  AlignControlsToTree();
+    GLTree1->LoadFromFile(OpenDialog1->FileName);
+    AlignControlsToTree();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::SaveTree1Click(TObject * Sender)
+void __fastcall TForm1::SaveTree1Click(TObject* Sender)
 {
 {
-  if(!SaveDialog1->Execute())
-    return;
+    if (!SaveDialog1->Execute())
+        return;
 
 
-  GLTree1->SaveToFile(SaveDialog1->FileName);
+    GLTree1->SaveToFile(SaveDialog1->FileName);
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::ExportMesh1Click(TObject * Sender)
+void __fastcall TForm1::ExportMesh1Click(TObject* Sender)
 {
 {
-  if(!SaveDialog2->Execute())
-    return;
+    if (!SaveDialog2->Execute())
+        return;
 
 
-  GLTree1->BuildMesh(GLFreeForm1);
-  GLFreeForm1->SaveToFile(SaveDialog2->FileName);
+    GLTree1->BuildMesh(GLFreeForm1);
+    GLFreeForm1->SaveToFile(SaveDialog2->FileName);
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::ExportMaterialLibrary1Click(TObject * Sender)
+void __fastcall TForm1::ExportMaterialLibrary1Click(TObject* Sender)
 {
 {
-  if(!SaveDialog3->Execute())
-    return;
+    if (!SaveDialog3->Execute())
+        return;
 
 
-  GLMaterialLibrary1->SaveToFile(SaveDialog3->FileName);
+    GLMaterialLibrary1->SaveToFile(SaveDialog3->FileName);
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::Exit1Click(TObject * Sender)
+void __fastcall TForm1::Exit1Click(TObject* Sender)
 {
 {
-  Form1->Close();
+    Form1->Close();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::LeafFrontTexture1Click(TObject * Sender)
+void __fastcall TForm1::LeafFrontTexture1Click(TObject* Sender)
 {
 {
-  if(!OpenPictureDialog1->Execute())
-    return;
+    if (!OpenPictureDialog1->Execute())
+        return;
 
 
-  TGLLibMaterial *lm =
-    GLMaterialLibrary1->Materials->GetLibMaterialByName("LeafFront");
-  lm->Material->Texture->Image->LoadFromFile(OpenPictureDialog1->FileName);
-  GLTree1->StructureChanged();
+    TGLLibMaterial* lm =
+        GLMaterialLibrary1->Materials->GetLibMaterialByName("LeafFront");
+    lm->Material->Texture->Image->LoadFromFile(OpenPictureDialog1->FileName);
+    GLTree1->StructureChanged();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::LeafBackTexture1Click(TObject * Sender)
+void __fastcall TForm1::LeafBackTexture1Click(TObject* Sender)
 {
 {
-  if(!OpenPictureDialog1->Execute())
-    return;
+    if (!OpenPictureDialog1->Execute())
+        return;
 
 
-  TGLLibMaterial *lm =
-    GLMaterialLibrary1->Materials->GetLibMaterialByName("LeafBack");
-  lm->Material->Texture->Image->LoadFromFile(OpenPictureDialog1->FileName);
-  GLTree1->StructureChanged();
+    TGLLibMaterial* lm =
+        GLMaterialLibrary1->Materials->GetLibMaterialByName("LeafBack");
+    lm->Material->Texture->Image->LoadFromFile(OpenPictureDialog1->FileName);
+    GLTree1->StructureChanged();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::BranchTexture1Click(TObject * Sender)
+void __fastcall TForm1::BranchTexture1Click(TObject* Sender)
 {
 {
-  if(!OpenPictureDialog1->Execute())
-    return;
+    if (!OpenPictureDialog1->Execute())
+        return;
 
 
-  TGLLibMaterial *lm =
-    GLMaterialLibrary1->Materials->GetLibMaterialByName("Branch");
-  lm->Material->Texture->Image->LoadFromFile(OpenPictureDialog1->FileName);
-  GLTree1->StructureChanged();
+    TGLLibMaterial* lm =
+        GLMaterialLibrary1->Materials->GetLibMaterialByName("Branch");
+    lm->Material->Texture->Image->LoadFromFile(OpenPictureDialog1->FileName);
+    GLTree1->StructureChanged();
 }
 }
 
 
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------

+ 129 - 239
Demos/meshes/tree/fTreeC.dfm

@@ -2,395 +2,285 @@ object Form1: TForm1
   Left = 192
   Left = 192
   Top = 106
   Top = 106
   Caption = 'Tree Editor'
   Caption = 'Tree Editor'
-  ClientHeight = 629
-  ClientWidth = 910
+  ClientHeight = 388
+  ClientWidth = 579
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
   Menu = MainMenu1
   Menu = MainMenu1
   Position = poScreenCenter
   Position = poScreenCenter
   WindowState = wsMaximized
   WindowState = wsMaximized
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
-    Left = 191
+    Left = 153
     Top = 0
     Top = 0
-    Width = 719
-    Height = 629
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 426
+    Height = 388
     Camera = GLCamera1
     Camera = GLCamera1
-    FieldOfView = 161.933151245117200000
+    FieldOfView = 151.095138549804700000
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
     TabOrder = 0
+    ExplicitWidth = 575
+    ExplicitHeight = 503
   end
   end
   object Panel1: TPanel
   object Panel1: TPanel
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 191
-    Height = 629
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 153
+    Height = 388
     Align = alLeft
     Align = alLeft
     TabOrder = 1
     TabOrder = 1
+    ExplicitHeight = 503
     object Label1: TLabel
     object Label1: TLabel
-      Left = 10
-      Top = 140
-      Width = 76
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 112
+      Width = 62
+      Height = 13
       Caption = 'Branch Twist'
       Caption = 'Branch Twist'
     end
     end
     object Label2: TLabel
     object Label2: TLabel
-      Left = 10
-      Top = 40
-      Width = 36
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 32
+      Width = 29
+      Height = 13
       Caption = 'Depth'
       Caption = 'Depth'
     end
     end
     object Label3: TLabel
     object Label3: TLabel
-      Left = 10
-      Top = 190
-      Width = 80
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 152
+      Width = 64
+      Height = 13
       Caption = 'Branch Angle'
       Caption = 'Branch Angle'
     end
     end
     object Label4: TLabel
     object Label4: TLabel
-      Left = 10
-      Top = 240
-      Width = 110
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 192
+      Width = 87
+      Height = 13
       Caption = 'Branch Angle Bias'
       Caption = 'Branch Angle Bias'
     end
     end
     object Label5: TLabel
     object Label5: TLabel
-      Left = 10
-      Top = 290
-      Width = 71
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 232
+      Width = 57
+      Height = 13
       Caption = 'Branch Size'
       Caption = 'Branch Size'
     end
     end
     object Label6: TLabel
     object Label6: TLabel
-      Left = 10
-      Top = 340
-      Width = 88
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 272
+      Width = 70
+      Height = 13
       Caption = 'Branch Radius'
       Caption = 'Branch Radius'
     end
     end
     object Label7: TLabel
     object Label7: TLabel
-      Left = 10
-      Top = 450
-      Width = 81
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 360
+      Width = 64
+      Height = 13
       Caption = 'Branch Noise'
       Caption = 'Branch Noise'
     end
     end
     object Label8: TLabel
     object Label8: TLabel
-      Left = 10
-      Top = 550
-      Width = 55
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 440
+      Width = 44
+      Height = 13
       Caption = 'Leaf Size'
       Caption = 'Leaf Size'
     end
     end
     object Label9: TLabel
     object Label9: TLabel
-      Left = 10
-      Top = 600
-      Width = 90
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 480
+      Width = 71
+      Height = 13
       Caption = 'Leaf Threshold'
       Caption = 'Leaf Threshold'
     end
     end
     object Label10: TLabel
     object Label10: TLabel
-      Left = 10
-      Top = 90
-      Width = 86
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 72
+      Width = 69
+      Height = 13
       Caption = 'Branch Facets'
       Caption = 'Branch Facets'
       FocusControl = GLSceneViewer1
       FocusControl = GLSceneViewer1
     end
     end
     object Label11: TLabel
     object Label11: TLabel
-      Left = 10
-      Top = 10
-      Width = 138
-      Height = 18
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 8
+      Width = 111
+      Height = 16
       Caption = 'Tree properties'
       Caption = 'Tree properties'
       Font.Charset = ANSI_CHARSET
       Font.Charset = ANSI_CHARSET
       Font.Color = clWindowText
       Font.Color = clWindowText
-      Font.Height = -16
+      Font.Height = -13
       Font.Name = 'Verdana'
       Font.Name = 'Verdana'
       Font.Style = [fsBold]
       Font.Style = [fsBold]
       ParentFont = False
       ParentFont = False
     end
     end
     object Label12: TLabel
     object Label12: TLabel
-      Left = 10
-      Top = 390
-      Width = 88
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 312
+      Width = 68
+      Height = 13
       Caption = 'Random Seed'
       Caption = 'Random Seed'
     end
     end
     object TrackBar1: TTrackBar
     object TrackBar1: TTrackBar
-      Left = 10
-      Top = 60
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 48
+      Width = 137
+      Height = 17
       Max = 15
       Max = 15
       Position = 10
       Position = 10
       TabOrder = 0
       TabOrder = 0
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar1Change
       OnChange = TrackBar1Change
     end
     end
     object TrackBar2: TTrackBar
     object TrackBar2: TTrackBar
-      Left = 10
-      Top = 160
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 128
+      Width = 137
+      Height = 17
       Max = 180
       Max = 180
       Position = 45
       Position = 45
       TabOrder = 1
       TabOrder = 1
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar2Change
       OnChange = TrackBar2Change
     end
     end
     object TrackBar3: TTrackBar
     object TrackBar3: TTrackBar
-      Left = 10
-      Top = 210
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 168
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 40
       Position = 40
       TabOrder = 2
       TabOrder = 2
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar3Change
       OnChange = TrackBar3Change
     end
     end
     object TrackBar4: TTrackBar
     object TrackBar4: TTrackBar
-      Left = 10
-      Top = 260
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 208
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 60
       Position = 60
       TabOrder = 3
       TabOrder = 3
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar4Change
       OnChange = TrackBar4Change
     end
     end
     object TrackBar5: TTrackBar
     object TrackBar5: TTrackBar
-      Left = 10
-      Top = 310
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 248
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 10
       Position = 10
       TabOrder = 4
       TabOrder = 4
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar5Change
       OnChange = TrackBar5Change
     end
     end
     object TrackBar6: TTrackBar
     object TrackBar6: TTrackBar
-      Left = 10
-      Top = 360
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 288
+      Width = 137
+      Height = 17
       Max = 25
       Max = 25
       Position = 3
       Position = 3
       TabOrder = 5
       TabOrder = 5
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar6Change
       OnChange = TrackBar6Change
     end
     end
     object TrackBar7: TTrackBar
     object TrackBar7: TTrackBar
-      Left = 10
-      Top = 470
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 376
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 70
       Position = 70
       TabOrder = 6
       TabOrder = 6
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar7Change
       OnChange = TrackBar7Change
     end
     end
     object TrackBar8: TTrackBar
     object TrackBar8: TTrackBar
-      Left = 10
-      Top = 570
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 456
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 20
       Position = 20
       TabOrder = 7
       TabOrder = 7
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar8Change
       OnChange = TrackBar8Change
     end
     end
     object TrackBar9: TTrackBar
     object TrackBar9: TTrackBar
-      Left = 10
-      Top = 620
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 496
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 20
       Position = 20
       TabOrder = 8
       TabOrder = 8
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar9Change
       OnChange = TrackBar9Change
     end
     end
     object TrackBar10: TTrackBar
     object TrackBar10: TTrackBar
-      Left = 10
-      Top = 110
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 88
+      Width = 137
+      Height = 17
       Min = 3
       Min = 3
       Position = 6
       Position = 6
       TabOrder = 9
       TabOrder = 9
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar10Change
       OnChange = TrackBar10Change
     end
     end
     object Edit1: TEdit
     object Edit1: TEdit
-      Left = 10
-      Top = 410
-      Width = 131
-      Height = 24
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 328
+      Width = 105
+      Height = 21
       TabOrder = 10
       TabOrder = 10
     end
     end
     object Button1: TButton
     object Button1: TButton
-      Left = 146
-      Top = 410
-      Width = 27
-      Height = 26
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 117
+      Top = 328
+      Width = 21
+      Height = 21
       Caption = 'S'
       Caption = 'S'
       TabOrder = 11
       TabOrder = 11
       OnClick = Button1Click
       OnClick = Button1Click
     end
     end
     object CheckBox1: TCheckBox
     object CheckBox1: TCheckBox
-      Left = 10
-      Top = 500
-      Width = 121
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 400
+      Width = 97
+      Height = 17
       Alignment = taLeftJustify
       Alignment = taLeftJustify
       Caption = 'Central Leader'
       Caption = 'Central Leader'
       TabOrder = 12
       TabOrder = 12
       OnClick = CheckBox1Click
       OnClick = CheckBox1Click
     end
     end
     object TrackBar11: TTrackBar
     object TrackBar11: TTrackBar
-      Left = 10
-      Top = 520
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 416
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 50
       Position = 50
       TabOrder = 13
       TabOrder = 13
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar11Change
       OnChange = TrackBar11Change
     end
     end

+ 135 - 256
Demos/meshes/tree/fTreeD.dfm

@@ -2,30 +2,25 @@ object FormTree: TFormTree
   Left = 192
   Left = 192
   Top = 106
   Top = 106
   Caption = 'Tree Editor'
   Caption = 'Tree Editor'
-  ClientHeight = 629
-  ClientWidth = 910
+  ClientHeight = 503
+  ClientWidth = 728
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
   Menu = MainMenu1
   Menu = MainMenu1
   Position = poScreenCenter
   Position = poScreenCenter
   OnCreate = FormCreate
   OnCreate = FormCreate
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
-    Left = 191
+    Left = 153
     Top = 0
     Top = 0
-    Width = 719
-    Height = 629
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 575
+    Height = 503
     Camera = GLCamera1
     Camera = GLCamera1
-    FieldOfView = 161.933151245117200000
+    FieldOfView = 157.511596679687500000
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseDown = GLSceneViewer1MouseDown
@@ -35,389 +30,273 @@ object FormTree: TFormTree
   object Panel1: TPanel
   object Panel1: TPanel
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 191
-    Height = 629
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 153
+    Height = 503
     Align = alLeft
     Align = alLeft
     TabOrder = 1
     TabOrder = 1
     object Label1: TLabel
     object Label1: TLabel
-      Left = 10
-      Top = 125
-      Width = 76
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 100
+      Width = 62
+      Height = 13
       Caption = 'Branch Twist'
       Caption = 'Branch Twist'
     end
     end
     object Label2: TLabel
     object Label2: TLabel
-      Left = 10
-      Top = 30
-      Width = 36
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 24
+      Width = 29
+      Height = 13
       Caption = 'Depth'
       Caption = 'Depth'
     end
     end
     object Label3: TLabel
     object Label3: TLabel
-      Left = 10
-      Top = 173
-      Width = 80
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 138
+      Width = 64
+      Height = 13
       Caption = 'Branch Angle'
       Caption = 'Branch Angle'
     end
     end
     object Label4: TLabel
     object Label4: TLabel
-      Left = 10
-      Top = 220
-      Width = 110
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 176
+      Width = 87
+      Height = 13
       Caption = 'Branch Angle Bias'
       Caption = 'Branch Angle Bias'
     end
     end
     object Label5: TLabel
     object Label5: TLabel
-      Left = 10
-      Top = 268
-      Width = 71
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 214
+      Width = 57
+      Height = 13
       Caption = 'Branch Size'
       Caption = 'Branch Size'
     end
     end
     object Label6: TLabel
     object Label6: TLabel
-      Left = 10
-      Top = 313
-      Width = 88
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 250
+      Width = 70
+      Height = 13
       Caption = 'Branch Radius'
       Caption = 'Branch Radius'
     end
     end
     object Label7: TLabel
     object Label7: TLabel
-      Left = 10
-      Top = 450
-      Width = 81
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 360
+      Width = 64
+      Height = 13
       Caption = 'Branch Noise'
       Caption = 'Branch Noise'
     end
     end
     object Label8: TLabel
     object Label8: TLabel
-      Left = 10
-      Top = 550
-      Width = 55
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 440
+      Width = 44
+      Height = 13
       Caption = 'Leaf Size'
       Caption = 'Leaf Size'
     end
     end
     object Label9: TLabel
     object Label9: TLabel
-      Left = 10
-      Top = 600
-      Width = 90
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 480
+      Width = 71
+      Height = 13
       Caption = 'Leaf Threshold'
       Caption = 'Leaf Threshold'
     end
     end
     object Label10: TLabel
     object Label10: TLabel
-      Left = 10
-      Top = 78
-      Width = 86
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 62
+      Width = 69
+      Height = 13
       Caption = 'Branch Facets'
       Caption = 'Branch Facets'
       FocusControl = GLSceneViewer1
       FocusControl = GLSceneViewer1
     end
     end
     object Label11: TLabel
     object Label11: TLabel
-      Left = 18
-      Top = 3
-      Width = 138
-      Height = 18
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 14
+      Top = 2
+      Width = 111
+      Height = 16
       Caption = 'Tree properties'
       Caption = 'Tree properties'
       Font.Charset = ANSI_CHARSET
       Font.Charset = ANSI_CHARSET
       Font.Color = clWindowText
       Font.Color = clWindowText
-      Font.Height = -16
+      Font.Height = -13
       Font.Name = 'Verdana'
       Font.Name = 'Verdana'
       Font.Style = [fsBold]
       Font.Style = [fsBold]
       ParentFont = False
       ParentFont = False
     end
     end
     object Label12: TLabel
     object Label12: TLabel
-      Left = 10
-      Top = 400
-      Width = 88
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 320
+      Width = 68
+      Height = 13
       Caption = 'Random Seed'
       Caption = 'Random Seed'
     end
     end
     object Label13: TLabel
     object Label13: TLabel
-      Left = 10
-      Top = 355
-      Width = 139
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 284
+      Width = 113
+      Height = 13
       Caption = 'Center Branch Constant'
       Caption = 'Center Branch Constant'
     end
     end
     object TrackBar1: TTrackBar
     object TrackBar1: TTrackBar
-      Left = 10
-      Top = 48
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 38
+      Width = 137
+      Height = 17
       Max = 11
       Max = 11
       Position = 5
       Position = 5
       TabOrder = 0
       TabOrder = 0
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar1Change
       OnChange = TrackBar1Change
     end
     end
     object TrackBar2: TTrackBar
     object TrackBar2: TTrackBar
-      Left = 10
-      Top = 143
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 114
+      Width = 137
+      Height = 17
       Max = 180
       Max = 180
       Position = 45
       Position = 45
       TabOrder = 1
       TabOrder = 1
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar2Change
       OnChange = TrackBar2Change
     end
     end
     object TrackBar3: TTrackBar
     object TrackBar3: TTrackBar
-      Left = 10
-      Top = 190
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 152
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 40
       Position = 40
       TabOrder = 2
       TabOrder = 2
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar3Change
       OnChange = TrackBar3Change
     end
     end
     object TrackBar4: TTrackBar
     object TrackBar4: TTrackBar
-      Left = 10
-      Top = 238
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 190
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 60
       Position = 60
       TabOrder = 3
       TabOrder = 3
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar4Change
       OnChange = TrackBar4Change
     end
     end
     object TrackBar5: TTrackBar
     object TrackBar5: TTrackBar
-      Left = 10
-      Top = 285
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 228
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 10
       Position = 10
       TabOrder = 4
       TabOrder = 4
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar5Change
       OnChange = TrackBar5Change
     end
     end
     object TrackBar6: TTrackBar
     object TrackBar6: TTrackBar
-      Left = 10
-      Top = 330
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 264
+      Width = 137
+      Height = 17
       Max = 25
       Max = 25
       Position = 3
       Position = 3
       TabOrder = 5
       TabOrder = 5
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar6Change
       OnChange = TrackBar6Change
     end
     end
     object TrackBar7: TTrackBar
     object TrackBar7: TTrackBar
-      Left = 10
-      Top = 470
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 376
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 70
       Position = 70
       TabOrder = 6
       TabOrder = 6
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar7Change
       OnChange = TrackBar7Change
     end
     end
     object TrackBar8: TTrackBar
     object TrackBar8: TTrackBar
-      Left = 10
-      Top = 570
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 456
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 20
       Position = 20
       TabOrder = 7
       TabOrder = 7
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar8Change
       OnChange = TrackBar8Change
     end
     end
     object TrackBar9: TTrackBar
     object TrackBar9: TTrackBar
-      Left = 10
-      Top = 620
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 496
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 20
       Position = 20
       TabOrder = 8
       TabOrder = 8
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar9Change
       OnChange = TrackBar9Change
     end
     end
     object TrackBar10: TTrackBar
     object TrackBar10: TTrackBar
-      Left = 10
-      Top = 95
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 76
+      Width = 137
+      Height = 17
       Min = 3
       Min = 3
       Position = 6
       Position = 6
       TabOrder = 9
       TabOrder = 9
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar10Change
       OnChange = TrackBar10Change
     end
     end
     object Edit1: TEdit
     object Edit1: TEdit
-      Left = 10
-      Top = 420
-      Width = 131
-      Height = 24
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 336
+      Width = 105
+      Height = 21
       TabOrder = 10
       TabOrder = 10
     end
     end
     object Button1: TButton
     object Button1: TButton
-      Left = 146
-      Top = 420
-      Width = 27
-      Height = 26
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 117
+      Top = 336
+      Width = 21
+      Height = 21
       Caption = 'S'
       Caption = 'S'
       TabOrder = 11
       TabOrder = 11
       OnClick = Button1Click
       OnClick = Button1Click
     end
     end
     object CheckBox1: TCheckBox
     object CheckBox1: TCheckBox
-      Left = 10
-      Top = 500
-      Width = 121
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 400
+      Width = 97
+      Height = 17
       Alignment = taLeftJustify
       Alignment = taLeftJustify
       Caption = 'Central Leader'
       Caption = 'Central Leader'
       TabOrder = 12
       TabOrder = 12
       OnClick = CheckBox1Click
       OnClick = CheckBox1Click
     end
     end
     object TrackBar11: TTrackBar
     object TrackBar11: TTrackBar
-      Left = 10
-      Top = 520
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 416
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 50
       Position = 50
       TabOrder = 13
       TabOrder = 13
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar11Change
       OnChange = TrackBar11Change
     end
     end
     object TrackBar12: TTrackBar
     object TrackBar12: TTrackBar
-      Left = 10
-      Top = 373
-      Width = 171
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 298
+      Width = 137
+      Height = 17
       Max = 100
       Max = 100
       Position = 50
       Position = 50
       TabOrder = 14
       TabOrder = 14
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       TickStyle = tsManual
       OnChange = TrackBar12Change
       OnChange = TrackBar12Change
     end
     end

+ 8 - 12
Demos/meshes/tree/fTreeD.pas

@@ -25,7 +25,7 @@ uses
   GLS.VectorFileObjects,
   GLS.VectorFileObjects,
   GLS.AsyncTimer,
   GLS.AsyncTimer,
   GLS.Cadencer,
   GLS.Cadencer,
- 
+
   GLS.Material,
   GLS.Material,
   GLS.Coordinates,
   GLS.Coordinates,
   GLS.BaseClasses,
   GLS.BaseClasses,
@@ -93,10 +93,9 @@ type
     AsyncTimer1: TGLAsyncTimer;
     AsyncTimer1: TGLAsyncTimer;
     GLCadencer1: TGLCadencer;
     GLCadencer1: TGLCadencer;
     miFPS: TMenuItem;
     miFPS: TMenuItem;
-    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
-      Shift: TShiftState; X, Y: Integer);
-    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
+    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
       X, Y: Integer);
       X, Y: Integer);
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure TrackBar1Change(Sender: TObject);
     procedure TrackBar1Change(Sender: TObject);
     procedure TrackBar2Change(Sender: TObject);
     procedure TrackBar2Change(Sender: TObject);
     procedure TrackBar3Change(Sender: TObject);
     procedure TrackBar3Change(Sender: TObject);
@@ -122,8 +121,7 @@ type
     procedure ExportMaterialLibrary1Click(Sender: TObject);
     procedure ExportMaterialLibrary1Click(Sender: TObject);
     procedure TrackBar12Change(Sender: TObject);
     procedure TrackBar12Change(Sender: TObject);
     procedure AsyncTimer1Timer(Sender: TObject);
     procedure AsyncTimer1Timer(Sender: TObject);
-    procedure GLCadencer1Progress(Sender: TObject;
-      const deltaTime, newTime: Double);
+    procedure GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
   public
   public
     mx, my: Integer;
     mx, my: Integer;
     GLTree1: TGLTree;
     GLTree1: TGLTree;
@@ -184,8 +182,8 @@ end;
 procedure TFormTree.FormCreate(Sender: TObject);
 procedure TFormTree.FormCreate(Sender: TObject);
 begin
 begin
   var Path: TFileName := GetCurrentAssetPath();
   var Path: TFileName := GetCurrentAssetPath();
-  SetCurrentDir(Path  + '\texture');
-  
+  SetCurrentDir(Path + '\texture');
+
   // Set up default textures
   // Set up default textures
   with GLMaterialLibrary1.AddTextureMaterial('LeafFront', 'maple_multi.tga') do
   with GLMaterialLibrary1.AddTextureMaterial('LeafFront', 'maple_multi.tga') do
   begin
   begin
@@ -214,8 +212,7 @@ begin
   my := Y;
   my := Y;
 end;
 end;
 
 
-procedure TFormTree.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
-  X, Y: Integer);
+procedure TFormTree.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 begin
 begin
   if ssLeft in Shift then
   if ssLeft in Shift then
     GLCamera1.MoveAroundTarget(my - Y, mx - X)
     GLCamera1.MoveAroundTarget(my - Y, mx - X)
@@ -385,8 +382,7 @@ begin
   miFPS.Caption := 'Tree Editor - ' + GLSceneViewer1.FramesPerSecondText;
   miFPS.Caption := 'Tree Editor - ' + GLSceneViewer1.FramesPerSecondText;
 end;
 end;
 
 
-procedure TFormTree.GLCadencer1Progress(Sender: TObject;
-  const deltaTime, newTime: Double);
+procedure TFormTree.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
 begin
 begin
   GLSceneViewer1.Invalidate;
   GLSceneViewer1.Invalidate;
 end;
 end;

+ 0 - 1428
Demos/rendering/basicsdl/BasicSDL_C.cbproj

@@ -1,1428 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{C25C88AD-0B3C-43E9-82D5-141347F91022}</ProjectGuid>
-        <ProjectVersion>19.3</ProjectVersion>
-        <FrameworkType>VCL</FrameworkType>
-        <AppType>Application</AppType>
-        <MainSource>BasicSDL_C.cpp</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <Platform Condition="'$(Platform)'==''">Win32</Platform>
-        <TargetedPlatforms>1</TargetedPlatforms>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
-        <Base_Win32>true</Base_Win32>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
-        <Base_Win64>true</Base_Win64>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
-        <Cfg_1>true</Cfg_1>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
-        <Cfg_1_Win32>true</Cfg_1_Win32>
-        <CfgParent>Cfg_1</CfgParent>
-        <Cfg_1>true</Cfg_1>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
-        <Cfg_1_Win64>true</Cfg_1_Win64>
-        <CfgParent>Cfg_1</CfgParent>
-        <Cfg_1>true</Cfg_1>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
-        <Cfg_2>true</Cfg_2>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
-        <Cfg_2_Win32>true</Cfg_2_Win32>
-        <CfgParent>Cfg_2</CfgParent>
-        <Cfg_2>true</Cfg_2>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
-        <Cfg_2_Win64>true</Cfg_2_Win64>
-        <CfgParent>Cfg_2</CfgParent>
-        <Cfg_2>true</Cfg_2>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base)'!=''">
-        <SanitizedProjectName>BasicSDL_C</SanitizedProjectName>
-        <ILINK_LibraryPath>D:\GLScene\Samples\CPP\Demos\rendering\basicsdl\;$(ILINK_LibraryPath)</ILINK_LibraryPath>
-        <AllPackageLibs>rtl.lib;vcl.lib;GLScene_RT.lib;fmx.lib;xmlrtl.lib;vclimg.lib;GLScene_SDL_RT.lib;vclwinx.lib;bindengine.lib;vclactnband.lib;vclx.lib</AllPackageLibs>
-        <_TCHARMapping>wchar_t</_TCHARMapping>
-        <ProjectType>CppVCLApplication</ProjectType>
-        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
-        <Multithreaded>true</Multithreaded>
-        <IncludePath>D:\GLScene\Samples\CPP\Demos\rendering\basicsdl\;$(IncludePath)</IncludePath>
-        <Icon_MainIcon>$(BDS)\bin\cbuilder_PROJECTICON.ico</Icon_MainIcon>
-        <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
-        <DynamicRTL>true</DynamicRTL>
-        <UsePackages>true</UsePackages>
-        <IntermediateOutputDir>.\$(Platform)\$(Config)</IntermediateOutputDir>
-        <FinalOutputDir>.\$(Platform)\$(Config)</FinalOutputDir>
-        <BCC_wpar>false</BCC_wpar>
-        <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
-        <BCC_ExtendedErrorInfo>true</BCC_ExtendedErrorInfo>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <PackageImports>IndyIPClient;GLScene_Sounds_RT;frx17;fs17;GLScene_Physics_RT;GLScene_Cg_RT;bindcompfmx;GR32_RSXE3;DBXSqliteDriver;vcldbx;GLScene_Physics_RT;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;TeeDB;bindcomp;inetdb;inetdbbde;vclib;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DBXOdbcDriver;DataSnapServer;Tee;GLScene_RT;DataSnapProviderClient;xmlrtl;DBXSybaseASEDriver;ibxpress;DbxCommonDriver;vclimg;GLScene_Sounds_RT;IndyProtocols;DBXMySQLDriver;dbxcds;MetropolisUILiveTile;bindengine;vclactnband;vcldb;soaprtl;bindcompdbx;vcldsnap;bindcompvcl;FMXTee;TeeUI;vclie;GR32_DSGN_RSXE3;DBXDb2Driver;vcltouch;bcbsmp;websnap;DBXOracleDriver;CustomIPTransport;vclribbon;VclSmp;dsnap;DBXInformixDriver;IndyIPServer;fmxase;vcl;DataSnapConnectors;IndyCore;GLScene_Sounds_RT;DBXMSSQLDriver;CodeSiteExpressPkg;CloudService;DBXFirebirdDriver;dsnapcon;frxDB17;inet;fsDB17;fmxobj;IndyIPCommon;FmxTeeUI;vclx;frxe17;inetdbxpress;webdsnap;DBXSybaseASADriver;fmxdae;bdertl;dbexpress;DataSnapIndy10ServerTransport;adortl;bcbie;$(PackageImports)</PackageImports>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <IncludePath>$(BDSINCLUDE)\windows\vcl;$(IncludePath)</IncludePath>
-        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
-        <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win64)'!=''">
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
-        <PackageImports>IndyIPClient;GLScene_Sounds_RT;frx17;fs17;GLScene_Physics_RT;GLScene_Cg_RT;bindcompfmx;GR32_RSXE3;DBXSqliteDriver;vcldbx;GLScene_Physics_RT;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;TeeDB;bindcomp;inetdb;inetdbbde;vclib;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DBXOdbcDriver;DataSnapServer;Tee;GLScene_RT;DataSnapProviderClient;xmlrtl;DBXSybaseASEDriver;ibxpress;DbxCommonDriver;vclimg;GLScene_Sounds_RT;IndyProtocols;DBXMySQLDriver;dbxcds;MetropolisUILiveTile;bindengine;vclactnband;vcldb;soaprtl;bindcompdbx;vcldsnap;bindcompvcl;FMXTee;TeeUI;vclie;GR32_DSGN_RSXE3;DBXDb2Driver;vcltouch;bcbsmp;websnap;DBXOracleDriver;CustomIPTransport;vclribbon;VclSmp;dsnap;DBXInformixDriver;IndyIPServer;fmxase;vcl;DataSnapConnectors;IndyCore;GLScene_Sounds_RT;DBXMSSQLDriver;CodeSiteExpressPkg;CloudService;DBXFirebirdDriver;dsnapcon;frxDB17;inet;fsDB17;fmxobj;IndyIPCommon;FmxTeeUI;vclx;frxe17;inetdbxpress;webdsnap;DBXSybaseASADriver;fmxdae;bdertl;dbexpress;DataSnapIndy10ServerTransport;adortl;bcbie;$(PackageImports)</PackageImports>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <UWP_CppLogo44>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_44.png</UWP_CppLogo44>
-        <UWP_CppLogo150>$(BDS)\bin\Artwork\Windows\UWP\cppreg_UwpDefault_150.png</UWP_CppLogo150>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
-        <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
-        <DCC_Optimize>false</DCC_Optimize>
-        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
-        <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
-        <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
-        <DCC_Define>DEBUG</DCC_Define>
-        <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
-        <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
-        <BCC_StackFrames>true</BCC_StackFrames>
-        <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
-        <TASM_Debugging>Full</TASM_Debugging>
-        <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
-        <BCC_EnableCPPExceptions>true</BCC_EnableCPPExceptions>
-        <BCC_DisableFramePtrElimOpt>true</BCC_DisableFramePtrElimOpt>
-        <BCC_DisableSpellChecking>true</BCC_DisableSpellChecking>
-        <CLANG_UnwindTables>true</CLANG_UnwindTables>
-        <ILINK_LibraryPath>$(BDSLIB)\$(PLATFORM)\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
-        <UsingDelphiRTL>true</UsingDelphiRTL>
-        <ILINK_LibraryPath>$(BDSCOMMONDIR)\Dcp;D:\GLScene\Source\external;$(ILINK_LibraryPath)</ILINK_LibraryPath>
-        <DCC_CBuilderOutput>None</DCC_CBuilderOutput>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <Defines>_DEBUG;$(Defines)</Defines>
-        <LinkPackageImports>rtl.bpi;vcl.bpi;GLScene_RT.bpi;fmx.bpi;xmlrtl.bpi;vclimg.bpi;bindengine.bpi;vclactnband.bpi;vclx.bpi</LinkPackageImports>
-        <BT_BuildType>Debug</BT_BuildType>
-        <LinkPackageStatics>GLScene_SDL_RT.lib;vclwinx.lib</LinkPackageStatics>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <Defines>_DEBUG;$(Defines)</Defines>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <TASM_Debugging>None</TASM_Debugging>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <Defines>NDEBUG;$(Defines)</Defines>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <Defines>NDEBUG;$(Defines)</Defines>
-    </PropertyGroup>
-    <ItemGroup>
-        <CppCompile Include="BasicSDL_C.cpp">
-            <BuildOrder>0</BuildOrder>
-        </CppCompile>
-        <CppCompile Include="fBasicSDL_C.cpp">
-            <Form>DataModule2</Form>
-            <FormType>dfm</FormType>
-            <DesignClass>TDataModule</DesignClass>
-            <DependentOn>fBasicSDL_C.h</DependentOn>
-            <BuildOrder>2</BuildOrder>
-        </CppCompile>
-        <FormResources Include="fBasicSDL_C.dfm"/>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>CPlusPlusBuilder.Personality.12</Borland.Personality>
-        <Borland.ProjectType>CppVCLApplication</Borland.ProjectType>
-        <BorlandProject>
-            <CPlusPlusBuilder.Personality>
-                <Source>
-                    <Source Name="MainSource">BasicSDL_C.cpp</Source>
-                </Source>
-                <VersionInfo>
-                    <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
-                    <VersionInfo Name="AutoIncBuild">False</VersionInfo>
-                    <VersionInfo Name="MajorVer">1</VersionInfo>
-                    <VersionInfo Name="MinorVer">0</VersionInfo>
-                    <VersionInfo Name="Release">0</VersionInfo>
-                    <VersionInfo Name="Build">0</VersionInfo>
-                    <VersionInfo Name="Debug">False</VersionInfo>
-                    <VersionInfo Name="PreRelease">False</VersionInfo>
-                    <VersionInfo Name="Special">False</VersionInfo>
-                    <VersionInfo Name="Private">False</VersionInfo>
-                    <VersionInfo Name="DLL">False</VersionInfo>
-                    <VersionInfo Name="Locale">1049</VersionInfo>
-                    <VersionInfo Name="CodePage">1251</VersionInfo>
-                </VersionInfo>
-                <VersionInfoKeys>
-                    <VersionInfoKeys Name="CompanyName"/>
-                    <VersionInfoKeys Name="FileDescription"/>
-                    <VersionInfoKeys Name="FileVersion">1.0.0.0</VersionInfoKeys>
-                    <VersionInfoKeys Name="InternalName"/>
-                    <VersionInfoKeys Name="LegalCopyright"/>
-                    <VersionInfoKeys Name="LegalTrademarks"/>
-                    <VersionInfoKeys Name="OriginalFilename"/>
-                    <VersionInfoKeys Name="ProductName"/>
-                    <VersionInfoKeys Name="ProductVersion">1.0.0.0</VersionInfoKeys>
-                    <VersionInfoKeys Name="Comments"/>
-                    <VersionInfoKeys Name="CFBundleName"/>
-                    <VersionInfoKeys Name="CFBundleDisplayName"/>
-                    <VersionInfoKeys Name="CFBundleIdentifier"/>
-                    <VersionInfoKeys Name="CFBundleVersion"/>
-                    <VersionInfoKeys Name="CFBundlePackageType"/>
-                    <VersionInfoKeys Name="CFBundleSignature"/>
-                    <VersionInfoKeys Name="CFBundleAllowMixedLocalizations"/>
-                    <VersionInfoKeys Name="CFBundleExecutable"/>
-                </VersionInfoKeys>
-                <ProjectProperties>
-                    <ProjectProperties Name="AutoShowDeps">False</ProjectProperties>
-                    <ProjectProperties Name="ManagePaths">True</ProjectProperties>
-                    <ProjectProperties Name="VerifyPackages">True</ProjectProperties>
-                    <ProjectProperties Name="IndexFiles">False</ProjectProperties>
-                </ProjectProperties>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp280.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k280.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp280.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
-                </Excluded_Packages>
-            </CPlusPlusBuilder.Personality>
-            <Deployment Version="3">
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32280mt.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true'" LocalName="$(BDS)\Redist\osx32\libcgcrtl.dylib" Class="DependencyModule">
-                    <Platform Name="OSX32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(UsingDelphiRTL)'=='true'" LocalName="$(BDS)\bin\borlndmm.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32c280mt.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32c260.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin64\cc64280.dll" Class="DependencyModule">
-                    <Platform Name="Win64">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile LocalName=".\Win32\Debug\BasicSDL_C.exe" Configuration="Debug" Class="ProjectOutput">
-                    <Platform Name="Win32">
-                        <RemoteName>BasicSDL_C.exe</RemoteName>
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true'" LocalName="$(BDS)\Redist\osx64\libcgstl.dylib" Class="DependencyModule">
-                    <Platform Name="OSX64">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(UsingDelphiRTL)'=='true'" LocalName="$(BDS)\bin64\borlndmm.dll" Class="DependencyModule">
-                    <Platform Name="Win64">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32c260mt.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin64\cc64260.dll" Class="DependencyModule">
-                    <Platform Name="Win64">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32c280.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32260mt.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true'" LocalName="$(BDS)\Redist\osx32\libcgstl.dylib" Class="DependencyModule">
-                    <Platform Name="OSX32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin64\cc64260mt.dll" Class="DependencyModule">
-                    <Platform Name="Win64">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32260.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile LocalName=".\Win32\Debug\BasicSDL_C.tds" Configuration="Debug" Class="DebugSymbols">
-                    <Platform Name="Win32">
-                        <RemoteName>BasicSDL_C.tds</RemoteName>
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32280.dll" Class="DependencyModule">
-                    <Platform Name="Win32">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true'" LocalName="$(BDS)\Redist\osx64\libcgcrtl.dylib" Class="DependencyModule">
-                    <Platform Name="OSX64">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin64\cc64280mt.dll" Class="DependencyModule">
-                    <Platform Name="Win64">
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployClass Name="AdditionalDebugSymbols">
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidClasses">
-                    <Platform Name="Android">
-                        <RemoteDir>classes</RemoteDir>
-                        <Operation>64</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>classes</RemoteDir>
-                        <Operation>64</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidClassesDexFile">
-                    <Platform Name="Android">
-                        <RemoteDir>classes</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidFileProvider">
-                    <Platform Name="Android">
-                        <RemoteDir>res\xml</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\xml</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidGDBServer">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidLibnativeArmeabiFile">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\armeabi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidLibnativeMipsFile">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\mips</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\mips</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidServiceOutput">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidServiceOutput_Android32">
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidSplashImageDef">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidSplashStyles">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidSplashStylesV21">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values-v21</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\values-v21</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_Colors">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_DefaultAppIcon">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon144">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon192">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon36">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-ldpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-ldpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon48">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon72">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon96">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon24">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon36">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon48">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon72">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon96">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage426">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-small</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-small</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage470">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-normal</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-normal</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage640">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-large</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-large</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage960">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xlarge</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xlarge</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_Strings">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="DebugSymbols">
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="DependencyFramework">
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.framework</Extensions>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.framework</Extensions>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.framework</Extensions>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="DependencyModule">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                        <Extensions>.dll;.bpl</Extensions>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Required="true" Name="DependencyPackage">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                        <Extensions>.bpl</Extensions>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="File">
-                    <Platform Name="Android">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iOS_AppStore1024">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_AppIcon152">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_AppIcon167">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch1024x768">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch1536x2048">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch1668">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch1668x2388">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch2048x1536">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch2048x2732">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch2224">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch2388x1668">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch2732x2048">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch2x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch768x1024">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_LaunchDark2x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Notification40">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Setting58">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_SpotLight80">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_AppIcon120">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_AppIcon180">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch1125">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch1136x640">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch1242">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch1242x2688">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch1334">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch1792">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch2208">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch2436">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch2688x1242">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch2x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch320">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch3x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch640">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch640x1136">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch750">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch828">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_LaunchDark2x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_LaunchDark3x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Notification40">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Notification60">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Setting58">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Setting87">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Spotlight120">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Spotlight80">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectAndroidManifest">
-                    <Platform Name="Android">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSDeviceDebug">
-                    <Platform Name="iOSDevice32">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSDeviceResourceRules">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSEntitlements">
-                    <Platform Name="iOSDevice32">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSInfoPList">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSLaunchScreen">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
-                        <Operation>64</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
-                        <Operation>64</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSResource">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXDebug">
-                    <Platform Name="OSX64">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXEntitlements">
-                    <Platform Name="OSX32">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXInfoPList">
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXResource">
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\Resources</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\Resources</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\Resources</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Required="true" Name="ProjectOutput">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Linux64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOutput_Android32">
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectUWPManifest">
-                    <Platform Name="Win32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win64">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="UWP_CppLogo150">
-                    <Platform Name="Win32">
-                        <RemoteDir>Assets</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win64">
-                        <RemoteDir>Assets</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="UWP_CppLogo44">
-                    <Platform Name="Win32">
-                        <RemoteDir>Assets</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win64">
-                        <RemoteDir>Assets</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
-            </Deployment>
-            <Platforms>
-                <Platform value="Win32">True</Platform>
-                <Platform value="Win64">False</Platform>
-            </Platforms>
-        </BorlandProject>
-        <ProjectFileVersion>12</ProjectFileVersion>
-    </ProjectExtensions>
-    <Import Project="$(BDS)\Bin\CodeGear.Cpp.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Cpp.Targets')"/>
-    <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
-    <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
-</Project>

+ 0 - 35
Demos/rendering/basicsdl/BasicSDL_C.cpp

@@ -1,35 +0,0 @@
-//---------------------------------------------------------------------------
-
-#include <vcl.h>
-#pragma hdrstop
-#include <tchar.h>
-//---------------------------------------------------------------------------
-USEFORM("fBasicSDL_C.cpp", DataModule2); /* TDataModule: File Type */
-//---------------------------------------------------------------------------
-int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
-{
-	try
-	{
-		Application->Initialize();
-		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TDataModule2), &DataModule2);
-		Application->Run();
-	}
-	catch (Exception &exception)
-	{
-		Application->ShowException(&exception);
-	}
-	catch (...)
-	{
-		try
-		{
-			throw Exception("");
-		}
-		catch (Exception &exception)
-		{
-			Application->ShowException(&exception);
-		}
-	}
-	return 0;
-}
-//---------------------------------------------------------------------------

+ 0 - 28
Demos/rendering/basicsdl/BasicSDL_D.dpr

@@ -1,28 +0,0 @@
-(*
-   Basic demo for using the SDLViewer.
-
-   The SDL Viewer allows to use SDL for setting up OpenGL, but still render
-   with GLScene. The main differences are that SDL has no design-time preview
-   and for SDL 1.2 you may have standard forms around it, but as soon as the SDL
-   window is closed, the application terminates.
-
-   The SDL viewer is more suited for games or simple apps that aim for
-   cross-platform support, for SDL is available on multiple platforms.
-   SDL also provides several game-related support APIs for sound, controlers,
-   video etc. (see http://www.libsdl.org).
-
-   The rendered scene is similar to the one in the materials/cubemap demo.
-*)
-program BasicSDL_D;
-
-uses
-  Forms,
-  fBasicSDL_D in 'fBasicSDL_D.pas';
-
-{$R *.res}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TDataModule1, DataModule1);
-  Application.Run;
-end.

+ 0 - 996
Demos/rendering/basicsdl/BasicSDL_D.dproj

@@ -1,996 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{EE78A751-664B-489D-B0BA-35E174921140}</ProjectGuid>
-        <MainSource>BasicSDL_D.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.3</ProjectVersion>
-        <Platform Condition="'$(Platform)'==''">Win32</Platform>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
-        <Base_Win32>true</Base_Win32>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
-        <Base_Win64>true</Base_Win64>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_1)'!=''">
-        <Cfg_1>true</Cfg_1>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
-        <Cfg_1_Win32>true</Cfg_1_Win32>
-        <CfgParent>Cfg_1</CfgParent>
-        <Cfg_1>true</Cfg_1>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
-        <Cfg_1_Win64>true</Cfg_1_Win64>
-        <CfgParent>Cfg_1</CfgParent>
-        <Cfg_1>true</Cfg_1>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_2)'!=''">
-        <Cfg_2>true</Cfg_2>
-        <CfgParent>Base</CfgParent>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
-        <Cfg_2_Win32>true</Cfg_2_Win32>
-        <CfgParent>Cfg_2</CfgParent>
-        <Cfg_2>true</Cfg_2>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win64)'!=''">
-        <Cfg_2_Win64>true</Cfg_2_Win64>
-        <CfgParent>Cfg_2</CfgParent>
-        <Cfg_2>true</Cfg_2>
-        <Base>true</Base>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base)'!=''">
-        <DCC_ImageBase>00400000</DCC_ImageBase>
-        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
-        <DCC_N>false</DCC_N>
-        <DCC_S>false</DCC_S>
-        <DCC_K>false</DCC_K>
-        <DCC_E>false</DCC_E>
-        <DCC_F>false</DCC_F>
-        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
-        <VerInfo_Locale>1049</VerInfo_Locale>
-        <SanitizedProjectName>BasicSDL_D</SanitizedProjectName>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
-        <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-        <Icon_MainIcon>basicsdl\basicsdl_Icon1.ico</Icon_MainIcon>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win64)'!=''">
-        <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
-        <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <Icon_MainIcon>basicsdl\basicsdl_Icon1.ico</Icon_MainIcon>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <BT_BuildType>Debug</BT_BuildType>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
-        <Icon_MainIcon>basicsdl\basicsdl\basicsdl_Icon1.ico</Icon_MainIcon>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
-        <Icon_MainIcon>basicsdl\basicsdl\basicsdl_Icon1.ico</Icon_MainIcon>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-        <DCC_Optimize>false</DCC_Optimize>
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="fBasicSDL_D.pas">
-            <Form>DataModule1</Form>
-            <FormType>dfm</FormType>
-            <DesignClass>TDataModule</DesignClass>
-        </DCCReference>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">BasicSDL_D.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp280.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k280.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp280.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
-                </Excluded_Packages>
-            </Delphi.Personality>
-            <Platforms>
-                <Platform value="Win32">True</Platform>
-                <Platform value="Win64">True</Platform>
-            </Platforms>
-            <Deployment Version="3">
-                <DeployFile LocalName="BasicSDL_D.exe" Configuration="Debug" Class="ProjectOutput">
-                    <Platform Name="Win32">
-                        <RemoteName>BasicSDL_D.exe</RemoteName>
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
-                <DeployClass Name="AdditionalDebugSymbols">
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidClasses">
-                    <Platform Name="Android">
-                        <RemoteDir>classes</RemoteDir>
-                        <Operation>64</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>classes</RemoteDir>
-                        <Operation>64</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidFileProvider">
-                    <Platform Name="Android">
-                        <RemoteDir>res\xml</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\xml</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidGDBServer">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidLibnativeArmeabiFile">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\armeabi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidLibnativeMipsFile">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\mips</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\mips</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidServiceOutput">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidServiceOutput_Android32">
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidSplashImageDef">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidSplashStyles">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="AndroidSplashStylesV21">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values-v21</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\values-v21</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_Colors">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_DefaultAppIcon">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon144">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon192">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon36">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-ldpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-ldpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon48">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon72">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_LauncherIcon96">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon24">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-mdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon36">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-hdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon48">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon72">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_NotificationIcon96">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage426">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-small</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-small</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage470">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-normal</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-normal</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage640">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-large</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-large</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_SplashImage960">
-                    <Platform Name="Android">
-                        <RemoteDir>res\drawable-xlarge</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\drawable-xlarge</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="Android_Strings">
-                    <Platform Name="Android">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>res\values</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="DebugSymbols">
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="DependencyFramework">
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.framework</Extensions>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.framework</Extensions>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.framework</Extensions>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="DependencyModule">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                        <Extensions>.dll;.bpl</Extensions>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Required="true" Name="DependencyPackage">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                        <Extensions>.dylib</Extensions>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                        <Extensions>.bpl</Extensions>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="File">
-                    <Platform Name="Android">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
-                        <Operation>0</Operation>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iOS_AppStore1024">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_AppIcon152">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_AppIcon167">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Launch2x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_LaunchDark2x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Notification40">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_Setting58">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPad_SpotLight80">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_AppIcon120">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_AppIcon180">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch2x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Launch3x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_LaunchDark2x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_LaunchDark3x">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Notification40">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Notification60">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Setting58">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Setting87">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Spotlight120">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="iPhone_Spotlight80">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectAndroidManifest">
-                    <Platform Name="Android">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSDeviceDebug">
-                    <Platform Name="iOSDevice32">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSEntitlements">
-                    <Platform Name="iOSDevice32">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSInfoPList">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSLaunchScreen">
-                    <Platform Name="iOSDevice64">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
-                        <Operation>64</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
-                        <Operation>64</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectiOSResource">
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXDebug">
-                    <Platform Name="OSX64">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXEntitlements">
-                    <Platform Name="OSX32">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>..\</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXInfoPList">
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOSXResource">
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\Resources</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\Resources</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\Resources</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Required="true" Name="ProjectOutput">
-                    <Platform Name="Android">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSDevice64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="iOSSimulator">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Linux64">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX32">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSX64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="OSXARM64">
-                        <RemoteDir>Contents\MacOS</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win32">
-                        <Operation>0</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectOutput_Android32">
-                    <Platform Name="Android64">
-                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="ProjectUWPManifest">
-                    <Platform Name="Win32">
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win64">
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="UWP_DelphiLogo150">
-                    <Platform Name="Win32">
-                        <RemoteDir>Assets</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win64">
-                        <RemoteDir>Assets</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <DeployClass Name="UWP_DelphiLogo44">
-                    <Platform Name="Win32">
-                        <RemoteDir>Assets</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                    <Platform Name="Win64">
-                        <RemoteDir>Assets</RemoteDir>
-                        <Operation>1</Operation>
-                    </Platform>
-                </DeployClass>
-                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
-                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
-                <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
-            </Deployment>
-        </BorlandProject>
-        <ProjectFileVersion>12</ProjectFileVersion>
-    </ProjectExtensions>
-    <Import Project="$(BDS)\Bin\CodeGear.Delphi.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Delphi.Targets')"/>
-    <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
-    <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
-</Project>

+ 0 - 84
Demos/rendering/basicsdl/fBasicSDL_C.cpp

@@ -1,84 +0,0 @@
-//---------------------------------------------------------------------------
-
-#pragma hdrstop
-
-#include "fBasicSDL_C.h"
-//---------------------------------------------------------------------------
-#pragma package(smart_init)
-#pragma classgroup "Vcl.Controls.TControl"
-#pragma link "GLS.BaseClasses"
-#pragma link "GLS.Coordinates"
-#pragma link "GLS.GeomObjects"
-#pragma link "GLS.Scene"
-#pragma link "GLS.SDLContext"
-
-#pragma resource "*.dfm"
-TDataModule2* DataModule2;
-//---------------------------------------------------------------------------
-__fastcall TDataModule2::TDataModule2(TComponent* Owner) : TDataModule(Owner) {}
-//---------------------------------------------------------------------------
-void __fastcall TDataModule2::DataModuleCreate(TObject* Sender)
-{
-	// When using SDL, the standard VCL message queue is no longer operational,
-	// so you must have/make your own loop to prevent the application from
-	// terminating immediately
-	GLSDLViewer1->Render();
-	while (GLSDLViewer1->Active()) {
-		// Message queue is not operational, but there may still be some messages
-		Forms::Application->ProcessMessages();
-		// Relinquish some of that CPU time
-		SDL_Delay(1);
-		// Slowly rotate the teapot
-		Teapot1->RollAngle = 4 * Frac(24 * double(Now())) * 3600;
-	}
-}
-//---------------------------------------------------------------------------
-void __fastcall TDataModule2::GLSDLViewer1EventPollDone(TObject* Sender)
-{
-	TFileName Path = GetCurrentAssetPath();
-	TFileName PathCM = GetCurrentDir() + "\\Cubemaps";
-    SetCurrentDir(PathCM);
-
-	if (!firstPassDone) {
-        // Loads a texture map for the teapot
-        // (see materials/cubemap for details on that)
-        //
-        // The odd bit is that it must be done upon first render, otherwise
-        // SDL OpenGL support has not been initialized and things like checking
-        // an extension support (cube maps here) would fail...
-        // Something less clunky will be introduced, someday...
-        firstPassDone = true;
-        GLSDLViewer1->Buffer->RenderingContext->Activate();
-        try {
-            if (!GL_ARB_texture_cube_map)
-                ShowMessage("Your graphics board does not support cube maps");
-            else {
-                TGLTexture* tex = Teapot1->Material->Texture;
-                tex->ImageClassName = __classid(TGLCubeMapImage)->ClassName();
-                TGLCubeMapImage* img = (TGLCubeMapImage*)tex->Image;
-
-                img->Picture[CmtPX]->LoadFromFile("cm_left.jpg");
-                img->Picture[CmtNX]->LoadFromFile("cm_right.jpg");
-                img->Picture[CmtPY]->LoadFromFile("cm_top.jpg");
-                img->Picture[CmtNY]->LoadFromFile("cm_bottom.jpg");
-                img->Picture[CmtPZ]->LoadFromFile("cm_back.jpg");
-                img->Picture[CmtNZ]->LoadFromFile("cm_front.jpg");
-
-                Teapot1->Material->Texture->MappingMode = tmmCubeMapReflection;
-                Teapot1->Material->Texture->Disabled = false;
-            }
-        } __finally
-        {
-            GLSDLViewer1->Buffer->RenderingContext->Deactivate();
-        }
-    }
-    GLSDLViewer1->Render();
-}
-//---------------------------------------------------------------------------
-void __fastcall TDataModule2::GLSDLViewer1Resize(TObject* Sender)
-{
-    // Zoom if SDL window gets smaller/bigger
-    GLCamera1->SceneScale = GLSDLViewer1->Width / 160;
-}
-//---------------------------------------------------------------------------
-

+ 0 - 36
Demos/rendering/basicsdl/fBasicSDL_C.dfm

@@ -1,36 +0,0 @@
-object DataModule2: TDataModule2
-  OnCreate = DataModuleCreate
-  Height = 251
-  Width = 486
-  PixelsPerInch = 120
-  object GLScene1: TGLScene
-    Left = 16
-    Top = 8
-    object GLLightSource1: TGLLightSource
-      ConstAttenuation = 1.000000000000000000
-      Position.Coordinates = {0000484200004842000048420000803F}
-      SpotCutOff = 180.000000000000000000
-    end
-    object Teapot1: TGLTeapot
-      Material.Texture.ImageClassName = 'TGLCubeMapImage'
-      Material.Texture.TextureMode = tmReplace
-    end
-    object GLCamera1: TGLCamera
-      DepthOfView = 100.000000000000000000
-      FocalLength = 50.000000000000000000
-      TargetObject = Teapot1
-      Position.Coordinates = {0000404000000040000000400000803F}
-    end
-  end
-  object GLSDLViewer1: TSDLViewer
-    Camera = GLCamera1
-    Width = 640
-    Height = 480
-    Buffer.BackgroundColor = clBlack
-    Caption = 'GLScene SDL Test'
-    OnResize = GLSDLViewer1Resize
-    OnEventPollDone = GLSDLViewer1EventPollDone
-    Left = 96
-    Top = 8
-  end
-end

+ 0 - 33
Demos/rendering/basicsdl/fBasicSDL_C.h

@@ -1,33 +0,0 @@
-//---------------------------------------------------------------------------
-
-#ifndef fBasicSDL_CH
-#define fBasicSDL_CH
-//---------------------------------------------------------------------------
-#include <System.Classes.hpp>
-#include "GLS.BaseClasses.hpp"
-#include "GLS.Coordinates.hpp"
-#include "GLS.GeomObjects.hpp"
-#include "GLS.Scene.hpp"
-#include "GLS.SDLContext.hpp"
-
-//---------------------------------------------------------------------------
-class TDataModule2 : public TDataModule
-{
-__published:	// IDE-managed Components
-	TGLScene *GLScene1;
-	TGLLightSource *GLLightSource1;
-	TGLTeapot *Teapot1;
-	TGLCamera *GLCamera1;
-	TSDLViewer *GLSDLViewer1;
-	void __fastcall DataModuleCreate(TObject *Sender);
-	void __fastcall GLSDLViewer1EventPollDone(TObject *Sender);
-	void __fastcall GLSDLViewer1Resize(TObject *Sender);
-private:	// User declarations
-public:		// User declarations
-	bool firstPassDone;
-	__fastcall TDataModule2(TComponent* Owner);
-};
-//---------------------------------------------------------------------------
-extern PACKAGE TDataModule2 *DataModule2;
-//---------------------------------------------------------------------------
-#endif

+ 0 - 36
Demos/rendering/basicsdl/fBasicSDL_D.dfm

@@ -1,36 +0,0 @@
-object DataModule1: TDataModule1
-  OnCreate = DataModuleCreate
-  Height = 251
-  Width = 486
-  PixelsPerInch = 120
-  object GLScene1: TGLScene
-    Left = 16
-    Top = 8
-    object GLLightSource1: TGLLightSource
-      ConstAttenuation = 1.000000000000000000
-      Position.Coordinates = {0000484200004842000048420000803F}
-      SpotCutOff = 180.000000000000000000
-    end
-    object Teapot1: TGLTeapot
-      Material.Texture.ImageClassName = 'TGLCubeMapImage'
-      Material.Texture.TextureMode = tmReplace
-    end
-    object GLCamera1: TGLCamera
-      DepthOfView = 100.000000000000000000
-      FocalLength = 50.000000000000000000
-      TargetObject = Teapot1
-      Position.Coordinates = {0000404000000040000000400000803F}
-    end
-  end
-  object GLSDLViewer1: TSDLViewer
-    Camera = GLCamera1
-    Width = 640
-    Height = 480
-    Buffer.BackgroundColor = clBlack
-    Caption = 'GLScene SDL Test'
-    OnResize = GLSDLViewer1Resize
-    OnEventPollDone = GLSDLViewer1EventPollDone
-    Left = 160
-    Top = 8
-  end
-end

+ 0 - 113
Demos/rendering/basicsdl/fBasicSDL_D.pas

@@ -1,113 +0,0 @@
-unit fBasicSDL_D;
-
-interface
-
-uses
-  System.SysUtils,
-  System.Classes,
-  Vcl.Forms,
-  Vcl.Dialogs,
-
-  GLS.Scene,
-  GLS.Objects,
-  GLS.GeomObjects,
-  GLS.Coordinates,
-  GLS.BaseClasses,
-  GLS.Color,
-  GLS.Context,
-  GLS.Texture,
-  GLS.Utils,
-
-  GLS.SDLContext,
-  SDL2.Import;
-
-type
-  TDataModule1 = class(TDataModule)
-    GLScene1: TGLScene;
-    GLSDLViewer1: TSDLViewer;
-    GLCamera1: TGLCamera;
-    GLLightSource1: TGLLightSource;
-    Teapot1: TGLTeapot;
-    procedure DataModuleCreate(Sender: TObject);
-    procedure GLSDLViewer1EventPollDone(Sender: TObject);
-    procedure GLSDLViewer1Resize(Sender: TObject);
-  public
-    firstPassDone: Boolean;
-  end;
-
-var
-  DataModule1: TDataModule1;
-
-implementation
-
-{$R *.dfm}
-
-procedure TDataModule1.DataModuleCreate(Sender: TObject);
-begin
-  // When using SDL2, the standard VCL message queue is no longer operational,
-  // so you must have/make your own loop to prevent the application from
-  // terminating immediately
-  GLSDLViewer1.Render;
-  while GLSDLViewer1.Active do
-  begin
-    // Message queue is not operational, but there may still be some messages
-    Application.ProcessMessages;
-    // Relinquish some of that CPU time
-    SDL_Delay(1);
-    // Slowly rotate the teapot
-    Teapot1.RollAngle := 4 * Frac(Now * 24) * 3600;
-  end;
-end;
-
-procedure TDataModule1.GLSDLViewer1EventPollDone(Sender: TObject);
-begin
-  var Path: TFileName := GetCurrentAssetPath();
-  SetCurrentDir(Path  + '\cubemap');
-  
-  if not firstPassDone then
-  begin
-    // Loads a texture map for the teapot
-    // (see materials/cubemap for details on that)
-    // The odd bit is that it must be done upon first render, otherwise
-    // SDL OpenGL support has not been initialized and things like checking
-    // an extension support (cube maps here) would fail...
-    // Something less clunky will be introduced, someday...
-    firstPassDone := True;
-    GLSDLViewer1.Buffer.RenderingContext.Activate;
-    try
-      if not GL.ARB_texture_cube_map then
-        ShowMessage('Your graphics board does not support cube maps...'#13#10 +
-          'So, no cube maps for ya...')
-      else
-      begin
-        with Teapot1.Material.Texture do
-        begin
-          ImageClassName := TGLCubeMapImage.ClassName;
-          with Image as TGLCubeMapImage do
-          begin
-            Picture[cmtPX].LoadFromFile('cm_left.jpg');
-            Picture[cmtNX].LoadFromFile('cm_right.jpg');
-            Picture[cmtPY].LoadFromFile('cm_top.jpg');
-            Picture[cmtNY].LoadFromFile('cm_bottom.jpg');
-            Picture[cmtPZ].LoadFromFile('cm_back.jpg');
-            Picture[cmtNZ].LoadFromFile('cm_front.jpg');
-          end;
-          MappingMode := tmmCubeMapReflection;
-          Disabled := False;
-        end;
-      end;
-    finally
-      GLSDLViewer1.Buffer.RenderingContext.Deactivate;
-    end;
-  end;
-
-  GLSDLViewer1.Render;
-end;
-
-procedure TDataModule1.GLSDLViewer1Resize(Sender: TObject);
-begin
-  // Zoom if SDL window gets smaller/bigger
-  GLCamera1.SceneScale := GLSDLViewer1.Width / 160;
-end;
-
-end.

+ 48 - 48
Demos/rendering/culling/fCullingC.cpp

@@ -6,72 +6,72 @@
 #pragma package(smart_init)
 #pragma package(smart_init)
 #pragma link "GLS.FileMD2"
 #pragma link "GLS.FileMD2"
 #pragma resource "*.dfm"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
-		: TForm(Owner)
+__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
 {
 {
-  int i, j;
-  TGLSphere *newSphere;
-  TGLActor *newActor;
+    int i, j;
+    TGLSphere* newSphere;
+    TGLActor* newActor;
 
 
-  TFileName Path = GetCurrentAssetPath();
-  SetCurrentDir(Path  + "\\texture");
-  GLMaterialLibrary->Materials->Items[0]->Material->Texture->Image->LoadFromFile("waste.jpg");
-  // Spheres are used as standalone, high-polycount objects
-  // that are highly T&L friendly
-  for (i=-4; i<4; i++)
-	for (j=-4; j<4; j++)
-	{
-	  newSphere = (TGLSphere *) DCSpheres->AddNewChild(__classid(TGLSphere));
-	  newSphere->Position->SetPoint(i*5, 0, j*5);
-	  newSphere->Slices = 32;
-	  newSphere->Stacks = 32;
-	}
-   // Actors are used as standalone, med-polycount objects
-  // that aren't T&L friendly (all geometry must be sent to
-  // the hardware at each frame)
-  SetCurrentDir(Path  + "\\model");
-  ACReference->LoadFromFile("waste.md2");
-  for (i=-3; i<3; i++)
-	for (j=-3; j<3; j++)
-	{
-	  newActor = (TGLActor *) DCActors->AddNewChild(__classid(TGLActor));
-	  newActor->Assign(ACReference);
-	  newActor->Position->SetPoint(i*10, 0, j*10);
-	  newActor->CurrentFrame = (i+2)+(j+2)*5;
-    }
-  ACReference->Visible = false;
+    TFileName Path = GetCurrentAssetPath();
+    SetCurrentDir(Path + "\\modelext");
+    GLMaterialLibrary->Materials->Items[0]
+        ->Material->Texture->Image->LoadFromFile("waste.jpg");
+    // Spheres are used as standalone, high-polycount objects
+    // that are highly T&L friendly
+    for (i = -4; i < 4; i++)
+        for (j = -4; j < 4; j++) {
+            newSphere =
+                (TGLSphere*)DCSpheres->AddNewChild(__classid(TGLSphere));
+            newSphere->Position->SetPoint(i * 5, 0, j * 5);
+            newSphere->Slices = 32;
+            newSphere->Stacks = 32;
+        }
+    // Actors are used as standalone, med-polycount objects
+    // that aren't T&L friendly (all geometry must be sent to
+    // the hardware at each frame)
+    ACReference->LoadFromFile("waste.md2");
+    for (i = -3; i < 3; i++)
+        for (j = -3; j < 3; j++) {
+            newActor = (TGLActor*)DCActors->AddNewChild(__classid(TGLActor));
+            newActor->Assign(ACReference);
+            newActor->Position->SetPoint(i * 10, 0, j * 10);
+            newActor->CurrentFrame = (i + 2) + (j + 2) * 5;
+        }
+    ACReference->Visible = false;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-void __fastcall TForm1::RBSpheresClick(TObject *Sender)
+void __fastcall TForm1::RBSpheresClick(TObject* Sender)
 {
 {
-   DCSpheres->Visible = RBSpheres->Checked;
-   DCActors->Visible = RBActors->Checked;
+    DCSpheres->Visible = RBSpheres->Checked;
+    DCActors->Visible = RBActors->Checked;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLCadencerProgress(TObject *Sender,
-      const double deltaTime, const double newTime)
+void __fastcall TForm1::GLCadencerProgress(
+    TObject* Sender, const double deltaTime, const double newTime)
 {
 {
-   Viewer->Invalidate();
+    Viewer->Invalidate();
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TForm1::Timer1Timer(TObject* Sender)
 {
 {
-   LabelFPS->Caption = Format("%.1f FPS", ARRAYOFCONST((Viewer->FramesPerSecond())));
-   Viewer->ResetPerformanceMonitor();
+    LabelFPS->Caption =
+        Format("%.1f FPS", ARRAYOFCONST((Viewer->FramesPerSecond())));
+    Viewer->ResetPerformanceMonitor();
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::RBNoneClick(TObject *Sender)
+void __fastcall TForm1::RBNoneClick(TObject* Sender)
 {
 {
-   if (RBObject->Checked)
-      GLScene->VisibilityCulling = vcObjectBased;
-   else if (RBHierarchical->Checked)
-      GLScene->VisibilityCulling = vcHierarchical;
-   else GLScene->VisibilityCulling = vcNone;
+    if (RBObject->Checked)
+        GLScene->VisibilityCulling = vcObjectBased;
+    else if (RBHierarchical->Checked)
+        GLScene->VisibilityCulling = vcHierarchical;
+    else
+        GLScene->VisibilityCulling = vcNone;
 }
 }
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 
 

+ 0 - 4
Demos/rendering/culling/fCullingC.dfm

@@ -24,8 +24,6 @@ object Form1: TForm1
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     TabOrder = 0
     TabOrder = 0
-    ExplicitWidth = 610
-    ExplicitHeight = 501
   end
   end
   object Panel2: TPanel
   object Panel2: TPanel
     Left = 681
     Left = 681
@@ -34,8 +32,6 @@ object Form1: TForm1
     Height = 516
     Height = 516
     Align = alRight
     Align = alRight
     TabOrder = 1
     TabOrder = 1
-    ExplicitLeft = 416
-    ExplicitHeight = 342
     DesignSize = (
     DesignSize = (
       153
       153
       516)
       516)

+ 31 - 30
Demos/rendering/culling/fCullingC.h

@@ -27,37 +27,38 @@
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 class TForm1 : public TForm
 class TForm1 : public TForm
 {
 {
-__published:
-        TGLSceneViewer *Viewer;
-        TGLScene *GLScene;
-        TGLLightSource *GLLightSource1;
-        TGLDummyCube *DCTarget;
-        TGLCamera *GLCamera1;
-        TGLDummyCube *DCSpheres;
-        TGLDummyCube *DCActors;
-        TGLActor *ACReference;
-        TGLCadencer *GLCadencer;
-        TTimer *Timer1;
-        TGLMaterialLibrary *GLMaterialLibrary;
-	TPanel *Panel2;
-	TLabel *Label1;
-	TRadioButton *RBNone;
-	TRadioButton *RBObject;
-	TRadioButton *RBHierarchical;
-	TLabel *Label2;
-	TRadioButton *RBSpheres;
-	TRadioButton *RBActors;
-	TLabel *LabelFPS;
-        void __fastcall RBSpheresClick(TObject *Sender);
-        void __fastcall GLCadencerProgress(TObject *Sender,
-          const double deltaTime, const double newTime);
-        void __fastcall Timer1Timer(TObject *Sender);
-        void __fastcall RBNoneClick(TObject *Sender);
-private:	// Déclarations de l'utilisateur
-public:		// Déclarations de l'utilisateur
-        __fastcall TForm1(TComponent* Owner);
+  __published:
+    TGLSceneViewer* Viewer;
+    TGLScene* GLScene;
+    TGLLightSource* GLLightSource1;
+    TGLDummyCube* DCTarget;
+    TGLCamera* GLCamera1;
+    TGLDummyCube* DCSpheres;
+    TGLDummyCube* DCActors;
+    TGLActor* ACReference;
+    TGLCadencer* GLCadencer;
+    TTimer* Timer1;
+    TGLMaterialLibrary* GLMaterialLibrary;
+    TPanel* Panel2;
+    TLabel* Label1;
+    TRadioButton* RBNone;
+    TRadioButton* RBObject;
+    TRadioButton* RBHierarchical;
+    TLabel* Label2;
+    TRadioButton* RBSpheres;
+    TRadioButton* RBActors;
+    TLabel* LabelFPS;
+    void __fastcall RBSpheresClick(TObject* Sender);
+    void __fastcall GLCadencerProgress(
+        TObject* Sender, const double deltaTime, const double newTime);
+    void __fastcall Timer1Timer(TObject* Sender);
+    void __fastcall RBNoneClick(TObject* Sender);
+  private: // Déclarations de l'utilisateur
+  public: // Déclarations de l'utilisateur
+    __fastcall TForm1(TComponent* Owner);
 };
 };
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TForm1* Form1;
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 #endif
 #endif
+

+ 34 - 67
Demos/sprites/imposter/fImposterD.dfm

@@ -2,89 +2,64 @@ object FormImposter: TFormImposter
   Left = 110
   Left = 110
   Top = 65
   Top = 65
   Caption = 'Imposter'
   Caption = 'Imposter'
-  ClientHeight = 416
-  ClientWidth = 671
+  ClientHeight = 333
+  ClientWidth = 537
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
   Position = poScreenCenter
   Position = poScreenCenter
   OnCreate = FormCreate
   OnCreate = FormCreate
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Left = 0
     Top = 0
     Top = 0
-    Width = 488
-    Height = 416
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 390
+    Height = 333
     Camera = GLCamera1
     Camera = GLCamera1
     Buffer.ContextOptions = [roDoubleBuffer, roRenderToWindow, roDestinationAlpha]
     Buffer.ContextOptions = [roDoubleBuffer, roRenderToWindow, roDestinationAlpha]
-    FieldOfView = 142.799865722656300000
+    FieldOfView = 134.394241333007800000
     PenAsTouch = False
     PenAsTouch = False
     Align = alClient
     Align = alClient
     OnMouseMove = GLSceneViewer1MouseMove
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
     TabOrder = 0
   end
   end
   object Panel1: TPanel
   object Panel1: TPanel
-    Left = 488
+    Left = 390
     Top = 0
     Top = 0
-    Width = 183
-    Height = 416
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 147
+    Height = 333
     Align = alRight
     Align = alRight
     BevelOuter = bvLowered
     BevelOuter = bvLowered
     TabOrder = 1
     TabOrder = 1
     object LabelTexSize: TLabel
     object LabelTexSize: TLabel
-      Left = 10
-      Top = 10
-      Width = 49
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 8
+      Width = 38
+      Height = 13
       Caption = 'TexSize'
       Caption = 'TexSize'
     end
     end
     object Label2: TLabel
     object Label2: TLabel
-      Left = 10
-      Top = 100
-      Width = 76
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 80
+      Width = 58
+      Height = 13
       Caption = 'Sample Size'
       Caption = 'Sample Size'
     end
     end
     object LabelFPS: TLabel
     object LabelFPS: TLabel
-      Left = 8
-      Top = 150
-      Width = 26
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 6
+      Top = 120
+      Width = 20
+      Height = 13
       Caption = 'FPS'
       Caption = 'FPS'
     end
     end
     object CBShowTeapot: TCheckBox
     object CBShowTeapot: TCheckBox
-      Left = 10
-      Top = 40
-      Width = 121
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 32
+      Width = 97
+      Height = 17
       Caption = 'Show Teapot'
       Caption = 'Show Teapot'
       Checked = True
       Checked = True
       State = cbChecked
       State = cbChecked
@@ -92,14 +67,10 @@ object FormImposter: TFormImposter
       OnClick = CBShowTeapotClick
       OnClick = CBShowTeapotClick
     end
     end
     object CBShowImposter: TCheckBox
     object CBShowImposter: TCheckBox
-      Left = 10
-      Top = 65
-      Width = 121
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 8
+      Top = 52
+      Width = 97
+      Height = 17
       Caption = 'Show Imposters'
       Caption = 'Show Imposters'
       Checked = True
       Checked = True
       State = cbChecked
       State = cbChecked
@@ -107,14 +78,10 @@ object FormImposter: TFormImposter
       OnClick = CBShowImposterClick
       OnClick = CBShowImposterClick
     end
     end
     object CBSampleSize: TComboBox
     object CBSampleSize: TComboBox
-      Left = 90
-      Top = 95
-      Width = 61
-      Height = 24
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 72
+      Top = 76
+      Width = 49
+      Height = 21
       Style = csDropDownList
       Style = csDropDownList
       ItemIndex = 3
       ItemIndex = 3
       TabOrder = 2
       TabOrder = 2

+ 8 - 14
Demos/sprites/imposter/fImposterD.pas

@@ -12,7 +12,7 @@ uses
   Vcl.Dialogs,
   Vcl.Dialogs,
   Vcl.StdCtrls,
   Vcl.StdCtrls,
   Vcl.ExtCtrls,
   Vcl.ExtCtrls,
-  
+
   GLS.Scene,
   GLS.Scene,
   GLS.Context,
   GLS.Context,
   GLS.VectorTypes,
   GLS.VectorTypes,
@@ -24,7 +24,7 @@ uses
   GLS.Cadencer,
   GLS.Cadencer,
   GLS.Imposter,
   GLS.Imposter,
   GLS.SkyDome,
   GLS.SkyDome,
- 
+
   GLS.Coordinates,
   GLS.Coordinates,
   GLS.BaseClasses,
   GLS.BaseClasses,
   GLS.RenderContextInfo;
   GLS.RenderContextInfo;
@@ -48,14 +48,11 @@ type
     CBSampleSize: TComboBox;
     CBSampleSize: TComboBox;
     Label2: TLabel;
     Label2: TLabel;
     LabelFPS: TLabel;
     LabelFPS: TLabel;
-    procedure GLDirectOpenGL1Render(Sender: TObject;
-      var rci: TGLRenderContextInfo);
-    procedure GLCadencer1Progress(Sender: TObject;
-      const deltaTime, newTime: Double);
+    procedure GLDirectOpenGL1Render(Sender: TObject; var rci: TGLRenderContextInfo);
+    procedure GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
     procedure FormCreate(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
     procedure Timer1Timer(Sender: TObject);
-    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
-      X, Y: Integer);
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure CBSampleSizeChange(Sender: TObject);
     procedure CBSampleSizeChange(Sender: TObject);
     procedure CBShowImposterClick(Sender: TObject);
     procedure CBShowImposterClick(Sender: TObject);
     procedure CBShowTeapotClick(Sender: TObject);
     procedure CBShowTeapotClick(Sender: TObject);
@@ -93,8 +90,7 @@ begin
   impBuilder.RequestImposterFor(GLTeapot1);
   impBuilder.RequestImposterFor(GLTeapot1);
 end;
 end;
 
 
-procedure TFormImposter.GLDirectOpenGL1Render(Sender: TObject;
-  var rci: TGLRenderContextInfo);
+procedure TFormImposter.GLDirectOpenGL1Render(Sender: TObject; var rci: TGLRenderContextInfo);
 var
 var
   camPos, pos: TGLVector;
   camPos, pos: TGLVector;
   imp: TImposter;
   imp: TImposter;
@@ -115,8 +111,7 @@ begin
   imp.EndRender(rci);
   imp.EndRender(rci);
 end;
 end;
 
 
-procedure TFormImposter.GLCadencer1Progress(Sender: TObject;
-  const deltaTime, newTime: Double);
+procedure TFormImposter.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
 begin
 begin
   GLSceneViewer1.Invalidate;
   GLSceneViewer1.Invalidate;
 end;
 end;
@@ -133,8 +128,7 @@ begin
 
 
 end;
 end;
 
 
-procedure TFormImposter.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
-  X, Y: Integer);
+procedure TFormImposter.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 begin
 begin
   if ssLeft in Shift then
   if ssLeft in Shift then
   begin
   begin

+ 3 - 27
Packages/GLScene.groupproj

@@ -21,12 +21,6 @@
         <Projects Include="GLScene_Physics_DT.dproj">
         <Projects Include="GLScene_Physics_DT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
-        <Projects Include="GLScene_GPU_RT.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="GLScene_GPU_DT.dproj">
-            <Dependencies/>
-        </Projects>
         <Projects Include="GLScene_Cg_RT.dproj">
         <Projects Include="GLScene_Cg_RT.dproj">
             <Dependencies/>
             <Dependencies/>
         </Projects>
         </Projects>
@@ -95,24 +89,6 @@
     <Target Name="GLScene_Physics_DT:Make">
     <Target Name="GLScene_Physics_DT:Make">
         <MSBuild Projects="GLScene_Physics_DT.dproj" Targets="Make"/>
         <MSBuild Projects="GLScene_Physics_DT.dproj" Targets="Make"/>
     </Target>
     </Target>
-    <Target Name="GLScene_GPU_RT">
-        <MSBuild Projects="GLScene_GPU_RT.dproj"/>
-    </Target>
-    <Target Name="GLScene_GPU_RT:Clean">
-        <MSBuild Projects="GLScene_GPU_RT.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="GLScene_GPU_RT:Make">
-        <MSBuild Projects="GLScene_GPU_RT.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="GLScene_GPU_DT">
-        <MSBuild Projects="GLScene_GPU_DT.dproj"/>
-    </Target>
-    <Target Name="GLScene_GPU_DT:Clean">
-        <MSBuild Projects="GLScene_GPU_DT.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="GLScene_GPU_DT:Make">
-        <MSBuild Projects="GLScene_GPU_DT.dproj" Targets="Make"/>
-    </Target>
     <Target Name="GLScene_Cg_RT">
     <Target Name="GLScene_Cg_RT">
         <MSBuild Projects="GLScene_Cg_RT.dproj"/>
         <MSBuild Projects="GLScene_Cg_RT.dproj"/>
     </Target>
     </Target>
@@ -132,13 +108,13 @@
         <MSBuild Projects="GLScene_Cg_DT.dproj" Targets="Make"/>
         <MSBuild Projects="GLScene_Cg_DT.dproj" Targets="Make"/>
     </Target>
     </Target>
     <Target Name="Build">
     <Target Name="Build">
-        <CallTarget Targets="GLScene_RT;GLScene_DT;GLScene_Sounds_RT;GLScene_Sounds_DT;GLScene_Physics_RT;GLScene_Physics_DT;GLScene_GPU_RT;GLScene_GPU_DT;GLScene_Cg_RT;GLScene_Cg_DT"/>
+        <CallTarget Targets="GLScene_RT;GLScene_DT;GLScene_Sounds_RT;GLScene_Sounds_DT;GLScene_Physics_RT;GLScene_Physics_DT;GLScene_Cg_RT;GLScene_Cg_DT"/>
     </Target>
     </Target>
     <Target Name="Clean">
     <Target Name="Clean">
-        <CallTarget Targets="GLScene_RT:Clean;GLScene_DT:Clean;GLScene_Sounds_RT:Clean;GLScene_Sounds_DT:Clean;GLScene_Physics_RT:Clean;GLScene_Physics_DT:Clean;GLScene_GPU_RT:Clean;GLScene_GPU_DT:Clean;GLScene_Cg_RT:Clean;GLScene_Cg_DT:Clean"/>
+        <CallTarget Targets="GLScene_RT:Clean;GLScene_DT:Clean;GLScene_Sounds_RT:Clean;GLScene_Sounds_DT:Clean;GLScene_Physics_RT:Clean;GLScene_Physics_DT:Clean;GLScene_Cg_RT:Clean;GLScene_Cg_DT:Clean"/>
     </Target>
     </Target>
     <Target Name="Make">
     <Target Name="Make">
-        <CallTarget Targets="GLScene_RT:Make;GLScene_DT:Make;GLScene_Sounds_RT:Make;GLScene_Sounds_DT:Make;GLScene_Physics_RT:Make;GLScene_Physics_DT:Make;GLScene_GPU_RT:Make;GLScene_GPU_DT:Make;GLScene_Cg_RT:Make;GLScene_Cg_DT:Make"/>
+        <CallTarget Targets="GLScene_RT:Make;GLScene_DT:Make;GLScene_Sounds_RT:Make;GLScene_Sounds_DT:Make;GLScene_Physics_RT:Make;GLScene_Physics_DT:Make;GLScene_Cg_RT:Make;GLScene_Cg_DT:Make"/>
     </Target>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>
 </Project>

+ 2 - 2
Packages/GLScene_Cg_DT.dproj

@@ -165,12 +165,12 @@
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>

+ 2 - 2
Packages/GLScene_DT.dpk

@@ -53,11 +53,11 @@ contains
   FmInfo in '..\Source\FmInfo.pas' {GLInfoForm},
   FmInfo in '..\Source\FmInfo.pas' {GLInfoForm},
   GLS.SceneRegister in '..\Source\GLS.SceneRegister.pas',
   GLS.SceneRegister in '..\Source\GLS.SceneRegister.pas',
   GLS.XCollectionRegister in '..\Source\GLS.XCollectionRegister.pas',
   GLS.XCollectionRegister in '..\Source\GLS.XCollectionRegister.pas',
-  FmLibMaterialPicker in '..\Source\FmLibMaterialPicker.pas' {GLLibMaterialPickerForm},
   FRTrackBarEdit in '..\Source\FRTrackBarEdit.pas' {RTrackBarEdit: TFrame},
   FRTrackBarEdit in '..\Source\FRTrackBarEdit.pas' {RTrackBarEdit: TFrame},
   FRFaceEditor in '..\Source\FRFaceEditor.pas' {RFaceEditor: TFrame},
   FRFaceEditor in '..\Source\FRFaceEditor.pas' {RFaceEditor: TFrame},
   FRMaterialPreview in '..\Source\FRMaterialPreview.pas' {RMaterialPreview: TFrame},
   FRMaterialPreview in '..\Source\FRMaterialPreview.pas' {RMaterialPreview: TFrame},
-  FmMaterialEditor in '..\Source\FmMaterialEditor.pas' {GLMaterialEditorForm};
+  FmMaterialEditor in '..\Source\FmMaterialEditor.pas' {GLMaterialEditorForm},
+  FmLibMaterialPicker in '..\Source\FmLibMaterialPicker.pas' {GLLibMaterialPickerForm};
 
 
 end.
 end.
 
 

+ 4 - 4
Packages/GLScene_DT.dproj

@@ -157,10 +157,6 @@
         </DCCReference>
         </DCCReference>
         <DCCReference Include="..\Source\GLS.SceneRegister.pas"/>
         <DCCReference Include="..\Source\GLS.SceneRegister.pas"/>
         <DCCReference Include="..\Source\GLS.XCollectionRegister.pas"/>
         <DCCReference Include="..\Source\GLS.XCollectionRegister.pas"/>
-        <DCCReference Include="..\Source\FmLibMaterialPicker.pas">
-            <Form>GLLibMaterialPickerForm</Form>
-            <FormType>dfm</FormType>
-        </DCCReference>
         <DCCReference Include="..\Source\FRTrackBarEdit.pas">
         <DCCReference Include="..\Source\FRTrackBarEdit.pas">
             <Form>RTrackBarEdit</Form>
             <Form>RTrackBarEdit</Form>
             <FormType>dfm</FormType>
             <FormType>dfm</FormType>
@@ -180,6 +176,10 @@
             <Form>GLMaterialEditorForm</Form>
             <Form>GLMaterialEditorForm</Form>
             <FormType>dfm</FormType>
             <FormType>dfm</FormType>
         </DCCReference>
         </DCCReference>
+        <DCCReference Include="..\Source\FmLibMaterialPicker.pas">
+            <Form>GLLibMaterialPickerForm</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
         <RcCompile Include="..\Resources\GLScene.rc">
         <RcCompile Include="..\Resources\GLScene.rc">
             <Form>GLScene.res</Form>
             <Form>GLScene.res</Form>
         </RcCompile>
         </RcCompile>

+ 47 - 7
Source/FRFaceEditor.dfm

@@ -1,13 +1,12 @@
 object RFaceEditor: TRFaceEditor
 object RFaceEditor: TRFaceEditor
   Left = 0
   Left = 0
   Top = 0
   Top = 0
-  Width = 305
-  Height = 186
-  AutoSize = True
+  Width = 355
+  Height = 247
   TabOrder = 0
   TabOrder = 0
   object Label1: TLabel
   object Label1: TLabel
-    Left = 0
-    Top = 6
+    Left = 3
+    Top = 214
     Width = 60
     Width = 60
     Height = 20
     Height = 20
     Caption = 'Shininess'
     Caption = 'Shininess'
@@ -55,11 +54,29 @@ object RFaceEditor: TRFaceEditor
       inline CEEmission: TRColorEditor
       inline CEEmission: TRColorEditor
         Left = 0
         Left = 0
         Top = 0
         Top = 0
-        Width = 289
-        Height = 95
+        Width = 341
+        Height = 98
         AutoSize = True
         AutoSize = True
         TabOrder = 0
         TabOrder = 0
         TabStop = True
         TabStop = True
+        ExplicitWidth = 341
+        ExplicitHeight = 98
+        inherited ColorEditorPaintBox: TPaintBox
+          Width = 341
+          Height = 98
+          ExplicitWidth = 341
+          ExplicitHeight = 98
+        end
+        inherited Panel1: TPanel
+          Left = 52
+          Top = 3
+          ExplicitLeft = 52
+          ExplicitTop = 3
+        end
+        inherited ColorDialog: TColorDialog
+          Left = 264
+          Top = 72
+        end
       end
       end
     end
     end
     object TSSpecular: TTabSheet
     object TSSpecular: TTabSheet
@@ -100,6 +117,29 @@ object RFaceEditor: TRFaceEditor
       ExplicitLeft = 160
       ExplicitLeft = 160
     end
     end
   end
   end
+  object TrackBar: TTrackBar
+    Left = 69
+    Top = 213
+    Width = 150
+    Height = 20
+    Max = 128
+    PageSize = 10
+    Frequency = 16
+    TabOrder = 2
+    ThumbLength = 10
+    TickMarks = tmTopLeft
+    OnChange = TrackBarChange
+  end
+  object Edit: TEdit
+    Left = 222
+    Top = 213
+    Width = 41
+    Height = 28
+    TabOrder = 3
+    Text = '0'
+    OnChange = EditChange
+    OnExit = TrackBarChange
+  end
   object ImageList: TImageList
   object ImageList: TImageList
     Left = 264
     Left = 264
     Top = 8
     Top = 8

+ 25 - 6
Source/FRFaceEditor.pas

@@ -21,11 +21,10 @@ uses
   VCL.Controls,
   VCL.Controls,
   VCL.Graphics,
   VCL.Graphics,
 
 
-  FRTrackBarEdit,
   FRColorEditor,
   FRColorEditor,
   GLS.Texture,
   GLS.Texture,
   GLS.Material,
   GLS.Material,
-  GLS.State;
+  GLS.State, FRTrackBarEdit;
 
 
 type
 type
   TRFaceEditor = class(TFrame)
   TRFaceEditor = class(TFrame)
@@ -36,11 +35,14 @@ type
     TSSpecular: TTabSheet;
     TSSpecular: TTabSheet;
     CEAmbiant: TRColorEditor;
     CEAmbiant: TRColorEditor;
     Label1: TLabel;
     Label1: TLabel;
-    TBEShininess: TRTrackBarEdit;
     ImageList: TImageList;
     ImageList: TImageList;
     CEDiffuse: TRColorEditor;
     CEDiffuse: TRColorEditor;
     CEEmission: TRColorEditor;
     CEEmission: TRColorEditor;
     CESpecular: TRColorEditor;
     CESpecular: TRColorEditor;
+    TrackBar: TTrackBar;
+    Edit: TEdit;
+    procedure TrackBarChange(Sender: TObject);
+    procedure EditChange(Sender: TObject);
     procedure TBEShininessTrackBarChange(Sender: TObject);
     procedure TBEShininessTrackBarChange(Sender: TObject);
   private
   private
     FOnChange: TNotifyEvent;
     FOnChange: TNotifyEvent;
@@ -79,6 +81,18 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
+procedure TRFaceEditor.EditChange(Sender: TObject);
+var
+  i: Integer;
+begin
+  try
+    i := StrToInt(Edit.Text);
+    TrackBar.Position := i;
+  except
+    // ignore
+  end;
+end;
+
 procedure TRFaceEditor.OnColorChange(Sender: TObject);
 procedure TRFaceEditor.OnColorChange(Sender: TObject);
 var
 var
   bmp: TBitmap;
   bmp: TBitmap;
@@ -125,13 +139,18 @@ procedure TRFaceEditor.TBEShininessTrackBarChange(Sender: TObject);
 begin
 begin
   if not Updating then
   if not Updating then
   begin
   begin
-    TBEShininess.TrackBarChange(Sender);
-    FFaceProperties.Shininess := TBEShininess.Value;
+//    TBEShininess.TrackBarChange(Sender);
+    FFaceProperties.Shininess := TrackBar.Position;  // TBEShininess.Value;
     if Assigned(FOnChange) then
     if Assigned(FOnChange) then
       FOnChange(Self);
       FOnChange(Self);
   end;
   end;
 end;
 end;
 
 
+procedure TRFaceEditor.TrackBarChange(Sender: TObject);
+begin
+  Edit.Text := IntToStr(TrackBar.Position);
+end;
+
 procedure TRFaceEditor.SetGLFaceProperties(const val: TGLFaceProperties);
 procedure TRFaceEditor.SetGLFaceProperties(const val: TGLFaceProperties);
 begin
 begin
   Updating := True;
   Updating := True;
@@ -140,7 +159,7 @@ begin
     CEDiffuse.Color := val.Diffuse.Color;
     CEDiffuse.Color := val.Diffuse.Color;
     CEEmission.Color := val.Emission.Color;
     CEEmission.Color := val.Emission.Color;
     CESpecular.Color := val.Specular.Color;
     CESpecular.Color := val.Specular.Color;
-    TBEShininess.Value := val.Shininess;
+///    TBEShininess.Value := val.Shininess;
   finally
   finally
     Updating := False;
     Updating := False;
   end;
   end;

+ 170 - 73
Source/FmLibMaterialPicker.dfm

@@ -2,16 +2,16 @@ object GLLibMaterialPickerForm: TGLLibMaterialPickerForm
   Left = 326
   Left = 326
   Top = 157
   Top = 157
   BorderStyle = bsDialog
   BorderStyle = bsDialog
-  Caption = 'LibMaterial Picker'
-  ClientHeight = 261
-  ClientWidth = 460
+  Caption = 'LibMaterial Pickers'
+  ClientHeight = 295
+  ClientWidth = 423
   Color = clBtnFace
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Color = clWindowText
   Font.Height = -11
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
-  PixelsPerInch = 96
+  OnCreate = FormCreate
   TextHeight = 13
   TextHeight = 13
   object Label1: TLabel
   object Label1: TLabel
     Left = 152
     Left = 152
@@ -27,100 +27,197 @@ object GLLibMaterialPickerForm: TGLLibMaterialPickerForm
     Height = 13
     Height = 13
     Caption = 'Available Materials'
     Caption = 'Available Materials'
   end
   end
-  object LBMaterials: TListBox
+  object ListBoxMaterials: TListBox
     Left = 8
     Left = 8
     Top = 24
     Top = 24
     Width = 137
     Width = 137
     Height = 223
     Height = 223
     ItemHeight = 13
     ItemHeight = 13
     TabOrder = 0
     TabOrder = 0
-    OnClick = LBMaterialsClick
-    OnDblClick = LBMaterialsDblClick
-    OnKeyPress = LBMaterialsKeyPress
+    OnClick = ListBoxMaterialsClick
+    OnDblClick = ListBoxMaterialsDblClick
+    OnKeyPress = ListBoxMaterialsKeyPress
   end
   end
-  object BBOk: TBitBtn
-    Left = 376
-    Top = 24
+  object BitBtnOk: TBitBtn
+    Left = 334
+    Top = 262
     Width = 75
     Width = 75
     Height = 25
     Height = 25
     Kind = bkOK
     Kind = bkOK
     NumGlyphs = 2
     NumGlyphs = 2
     TabOrder = 2
     TabOrder = 2
   end
   end
-  object BBCancel: TBitBtn
-    Left = 376
-    Top = 56
+  object BitBtnCancel: TBitBtn
+    Left = 246
+    Top = 262
     Width = 75
     Width = 75
     Height = 25
     Height = 25
     Kind = bkCancel
     Kind = bkCancel
     NumGlyphs = 2
     NumGlyphs = 2
     TabOrder = 1
     TabOrder = 1
   end
   end
-  inline MPPreview: TRMaterialPreview
-    Left = 157
-    Top = 25
-    Width = 202
-    Height = 222
-    AutoSize = True
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 151
+    Top = 52
+    Width = 258
+    Height = 195
+    Camera = Camera1
+    FieldOfView = 125.700637817382800000
+    PenAsTouch = False
+    OnMouseDown = GLSceneViewer1MouseDown
+    OnMouseMove = GLSceneViewer1MouseMove
+    OnMouseWheel = GLSceneViewer1MouseWheel
     TabOrder = 3
     TabOrder = 3
-    ExplicitLeft = 157
-    ExplicitTop = 25
-    ExplicitHeight = 222
-    inherited GLSceneViewer: TGLSceneViewer
-      Top = 19
-      ExplicitTop = 19
-    end
-    inherited CBObject: TComboBox
-      Height = 21
-      ExplicitHeight = 21
-    end
-    inherited CBBackground: TComboBox
-      Height = 21
-      ExplicitHeight = 21
+  end
+  object ComboBoxObject1: TComboBox
+    Left = 151
+    Top = 25
+    Width = 89
+    Height = 21
+    TabOrder = 5
+    OnChange = ComboBoxObject1Change
+    Items.Strings = (
+      'Cube'
+      'Sphere'
+      'Teapot')
+  end
+  object ComboBoxBackGround1: TComboBox
+    Left = 246
+    Top = 25
+    Width = 163
+    Height = 21
+    TabOrder = 4
+    OnChange = ComboBoxBackGround1Change
+    Items.Strings = (
+      'on a pattern background'
+      'on a white background'
+      'on a black background'
+      'on a blue background'
+      'on a red background'
+      'on a green background')
+  end
+  object GLScene1: TGLScene
+    Left = 173
+    Top = 78
+    object BackGroundSprite1: TGLHUDSprite
+      Material.MaterialOptions = [moNoLighting]
+      Material.Texture.Image.Picture.Data = {
+        07544269746D617076080000424D760800000000000076000000280000004000
+        0000400000000100040000000000000800000000000000000000100000000000
+        000000000000000080000080000000808000800000008000800080800000C0C0
+        C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+        FF00CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555EEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDD4444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        1111000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF}
+      Material.Texture.Disabled = False
+      Rotation = 0.000000000000000000
     end
     end
-    inherited GLScene: TGLScene
-      inherited World: TGLDummyCube
-        inherited Cube: TGLCube
-          Material.MaterialLibrary = nil
-          Material.LibMaterialName = ''
-          Direction.Coordinates = {FCFAF0B1D8B35D3FFEFFFF3E00000000}
-          Up.Coordinates = {D7B35DBFFFFF7F3ED7B3DDBE00000000}
-        end
-        inherited Sphere: TGLSphere
-          Material.MaterialLibrary = nil
-          Material.LibMaterialName = ''
-        end
-        inherited Cone: TGLCone
-          Material.MaterialLibrary = nil
-          Material.LibMaterialName = ''
-        end
-        inherited Teapot: TGLTeapot
-          Material.MaterialLibrary = nil
-          Material.LibMaterialName = ''
-          Scale.Coordinates = {00000040000000400000004000000000}
-        end
+    object dcWorld1: TGLDummyCube
+      CubeSize = 1.000000000000000000
+      object Cube1: TGLCube
       end
       end
-      inherited Light: TGLDummyCube
-        Position.Coordinates = {0000000000004040000020410000803F}
-        inherited LightSource: TGLLightSource
-          Position.Coordinates = {0000000000004040000020410000803F}
-          Specular.Color = {0000803F0000803F0000803F0000803F}
-        end
-        inherited FireSphere: TGLSphere
-          Material.FrontProperties.Ambient.Color = {A3A2223FCDCC4C3ECDCC4C3E0000803F}
-          Material.FrontProperties.Emission.Color = {D3D2523FA1A0203F000000000000803F}
-        end
+      object Sphere1: TGLSphere
+        Radius = 1.000000000000000000
+      end
+      object Teapot1: TGLTeapot
+        Position.Coordinates = {00000000000000BF000000000000803F}
+        Scale.Coordinates = {00004040000040400000404000000000}
+      end
+    end
+    object dcLight1: TGLDummyCube
+      Position.Coordinates = {0000000000004040000020410000803F}
+      Visible = False
+      CubeSize = 1.000000000000000000
+      object LightSource2: TGLLightSource
+        ConstAttenuation = 1.000000000000000000
+        SpotCutOff = 180.000000000000000000
       end
       end
-      inherited Camera: TGLCamera
-        Position.Coordinates = {0000000000000000000020410000803F}
+      object FireSphere1: TGLSphere
+        Visible = False
+        Radius = 0.500000000000000000
       end
       end
     end
     end
-    inherited GLMaterialLibrary: TGLMaterialLibrary
-      Materials = <
-        item
-          Name = 'LibMaterial1'
-          Tag = 0
-        end>
+    object Camera1: TGLCamera
+      DepthOfView = 100.000000000000000000
+      FocalLength = 50.000000000000000000
+      TargetObject = dcWorld1
+      Position.Coordinates = {0000004000004040000040400000803F}
+      object LightSource1: TGLLightSource
+        ConstAttenuation = 1.000000000000000000
+        Position.Coordinates = {0000000000004040000020410000803F}
+        SpotCutOff = 180.000000000000000000
+      end
     end
     end
   end
   end
+  object GLMaterialLibrary1: TGLMaterialLibrary
+    Materials = <
+      item
+        Name = 'LibMaterial1'
+        Tag = 0
+      end>
+    Left = 277
+    Top = 85
+  end
 end
 end

+ 193 - 38
Source/FmLibMaterialPicker.pas

@@ -11,31 +11,74 @@ interface
 
 
 uses
 uses
   System.Classes,
   System.Classes,
-  VCL.Forms,
-  VCL.StdCtrls,
-  VCL.Buttons,
-  VCL.Controls,
+  System.Types,
+  Vcl.Forms,
+  Vcl.StdCtrls,
+  Vcl.Buttons,
+  Vcl.Controls,
+  Vcl.Graphics,
+
+  GLS.Scene,
+  GLS.Objects,
   GLS.SceneViewer,
   GLS.SceneViewer,
   GLS.Material,
   GLS.Material,
-  FRMaterialPreview;
+  GLS.Color,
+  GLS.Coordinates,
+  GLS.BaseClasses,
+  GLS.HUDObjects,
+  GLS.GeomObjects;
 
 
 type
 type
   TGLLibMaterialPickerForm = class(TForm)
   TGLLibMaterialPickerForm = class(TForm)
-    LBMaterials: TListBox;
+    ListBoxMaterials: TListBox;
     Label1: TLabel;
     Label1: TLabel;
     Label2: TLabel;
     Label2: TLabel;
-    BBOk: TBitBtn;
-    BBCancel: TBitBtn;
-    MPPreview: TRMaterialPreview;
-    procedure LBMaterialsClick(Sender: TObject);
-    procedure LBMaterialsKeyPress(Sender: TObject; var Key: Char);
-    procedure LBMaterialsDblClick(Sender: TObject);
+    BitBtnOk: TBitBtn;
+    BitBtnCancel: TBitBtn;
+    GLScene1: TGLScene;
+    GLSceneViewer1: TGLSceneViewer;
+    LightSource1: TGLLightSource;
+    dcLight1: TGLDummyCube;
+    dcWorld1: TGLDummyCube;
+    Camera1: TGLCamera;
+    Cube1: TGLCube;
+    Sphere1: TGLSphere;
+    FireSphere1: TGLSphere;
+    Teapot1: TGLTeapot;
+    GLMaterialLibrary1: TGLMaterialLibrary;
+    ComboBoxObject1: TComboBox;
+    ComboBoxBackGround1: TComboBox;
+    BackGroundSprite1: TGLHUDSprite;
+    LightSource2: TGLLightSource;
+    procedure ListBoxMaterialsClick(Sender: TObject);
+    procedure ListBoxMaterialsKeyPress(Sender: TObject; var Key: Char);
+    procedure ListBoxMaterialsDblClick(Sender: TObject);
+    procedure ComboBoxObject1Change(Sender: TObject);
+    procedure ComboBoxBackGround1Change(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
+    procedure GLSceneViewer1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer;
+      MousePos: TPoint; var Handled: Boolean);
+    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
+      Y: Integer);
   private
   private
+    mx, my: Integer;
+
+    FLibMaterial1: TGLAbstractLibMaterial;
+    function GetMaterial1: TGLMaterial;
+    procedure SetMaterial1(const Value: TGLMaterial);
+    function GetLibMaterial1: TGLAbstractLibMaterial;
+    procedure SetLibMaterial1(const Value: TGLAbstractLibMaterial);
+
   public
   public
-    function Execute(var materialName: TGLLibMaterialName;
-      materialLibrary: TGLAbstractMaterialLibrary): Boolean;
+    function Execute(var MaterialName: TGLLibMaterialName;
+      MaterialLibrary: TGLAbstractMaterialLibrary): Boolean;
+    property Material1: TGLMaterial read GetMaterial1 write SetMaterial1;
+    property LibMaterial1: TGLAbstractLibMaterial read GetLibMaterial1 write SetLibMaterial1;
+
   end;
   end;
 
 
+// For registration in GLScene
 function GLLibMaterialPickerForm: TGLLibMaterialPickerForm;
 function GLLibMaterialPickerForm: TGLLibMaterialPickerForm;
 procedure ReleaseLibMaterialPickerForm;
 procedure ReleaseLibMaterialPickerForm;
 
 
@@ -48,6 +91,8 @@ implementation
 var
 var
   vGLLibMaterialPickerForm: TGLLibMaterialPickerForm;
   vGLLibMaterialPickerForm: TGLLibMaterialPickerForm;
 
 
+// ------------ GLLibMaterialPickerForm -----------------
+
 function GLLibMaterialPickerForm: TGLLibMaterialPickerForm;
 function GLLibMaterialPickerForm: TGLLibMaterialPickerForm;
 begin
 begin
   if not Assigned(vGLLibMaterialPickerForm) then
   if not Assigned(vGLLibMaterialPickerForm) then
@@ -55,6 +100,8 @@ begin
   Result := vGLLibMaterialPickerForm;
   Result := vGLLibMaterialPickerForm;
 end;
 end;
 
 
+// ----------- ReleaseLibMaterialPickerForm --------------
+
 procedure ReleaseLibMaterialPickerForm;
 procedure ReleaseLibMaterialPickerForm;
 begin
 begin
   if Assigned(vGLLibMaterialPickerForm) then
   if Assigned(vGLLibMaterialPickerForm) then
@@ -64,47 +111,156 @@ begin
   end;
   end;
 end;
 end;
 
 
+//------------------- FormCreate --------------------------
 
 
-function TGLLibMaterialPickerForm.Execute(var materialName: TGLLibMaterialName;
-  materialLibrary: TGLAbstractMaterialLibrary): Boolean;
+procedure TGLLibMaterialPickerForm.FormCreate(Sender: TObject);
 begin
 begin
-  with LBMaterials do
-  begin
-    materialLibrary.SetNamesToTStrings(LBMaterials.Items);
-    ItemIndex := Items.IndexOf(materialName);
-    if (ItemIndex < 0) and (Items.Count > 0) then ItemIndex := 0;
-    BBOk.Enabled := (Items.Count > 0);
-  end;
-  LBMaterialsClick(Self);
+  // BackGroundSprite positions and size
+  BackGroundSprite1.Position.X := GLSceneViewer1.Width div 2;
+  BackGroundSprite1.Position.Y := GLSceneViewer1.Height div 2;
+  BackGroundSprite1.Width := GLSceneViewer1.Width;
+  BackGroundSprite1.Height := GLSceneViewer1.Height;
+
+  ComboBoxObject1.ItemIndex := 0;
+  ComboBoxObject1Change(Self);
+  ComboBoxBackground1.ItemIndex := 0;
+  ComboBoxBackground1Change(Self);
+end;
+
+// ----------------------- MouseMove ----------------------
+
+procedure TGLLibMaterialPickerForm.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  mx := X;
+  my := Y;
+end;
+
+procedure TGLLibMaterialPickerForm.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X,
+  Y: Integer);
+begin
+  if (ssRight in Shift) and (ssLeft in Shift) then
+    Camera1.AdjustDistanceToTarget(1 - 0.01 * (my - Y))
+  else if (ssRight in Shift) or (ssLeft in Shift) then
+    Camera1.MoveAroundTarget(Y - my, X - mx);
+  mx := X;
+  my := Y;
+end;
+
+// ----------------------- MouseWheel ----------------------
+procedure TGLLibMaterialPickerForm.GLSceneViewer1MouseWheel(Sender: TObject; Shift: TShiftState;
+  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
+begin
+  Camera1.AdjustDistanceToTarget(1 - 0.1 * (Abs(WheelDelta) / WheelDelta));
+end;
+
+
+//------------------ Execute --------------------------
+
+function TGLLibMaterialPickerForm.Execute(var MaterialName: TGLLibMaterialName;
+  MaterialLibrary: TGLAbstractMaterialLibrary): Boolean;
+begin
+  MaterialLibrary.SetNamesToTStrings(ListBoxMaterials.Items);
+  ListBoxMaterials.ItemIndex := ListBoxMaterials.Items.IndexOf(MaterialName);
+  if ((ListBoxMaterials.ItemIndex < 0) and (ListBoxMaterials.Items.Count > 0)) then
+    ListBoxMaterials.ItemIndex := 0;
+  BitBtnOk.Enabled := (ListBoxMaterials.Items.Count > 0);
+
+  ListBoxMaterialsClick(Self);
   Result := (ShowModal = mrOk);
   Result := (ShowModal = mrOk);
   if Result then
   if Result then
   begin
   begin
-    with LBMaterials do
-      if ItemIndex >= 0 then
-        materialName := Items[ItemIndex]
-      else
-        materialName := '';
+    if ListBoxMaterials.ItemIndex >= 0 then
+      MaterialName := ListBoxMaterials.Items[ListBoxMaterials.ItemIndex]
+    else
+      MaterialName := '';
   end;
   end;
 end;
 end;
 
 
-procedure TGLLibMaterialPickerForm.LBMaterialsClick(Sender: TObject);
+//-------------------------------------------------------------------
+
+function TGLLibMaterialPickerForm.GetLibMaterial1: TGLAbstractLibMaterial;
 begin
 begin
-  with LBMaterials do
-    if ItemIndex >= 0 then
-      MPPreview.LibMaterial := TGLAbstractLibMaterial(Items.Objects[ItemIndex]);
+   Result := FLibMaterial1;
 end;
 end;
 
 
-procedure TGLLibMaterialPickerForm.LBMaterialsKeyPress(Sender: TObject;
+function TGLLibMaterialPickerForm.GetMaterial1: TGLMaterial;
+begin
+   Result := GLMaterialLibrary1.Materials[0].Material;
+end;
+
+
+procedure TGLLibMaterialPickerForm.ListBoxMaterialsClick(Sender: TObject);
+begin
+  if ListBoxMaterials.ItemIndex >= 0 then
+    LibMaterial1 := TGLAbstractLibMaterial(ListBoxMaterials.Items.Objects[ListBoxMaterials.ItemIndex]);
+   Cube1.Material :=  Material1;
+   Sphere1.Material := Material1;
+   TeaPot1.Material := Material1;
+end;
+
+procedure TGLLibMaterialPickerForm.ListBoxMaterialsKeyPress(Sender: TObject;
   var Key: Char);
   var Key: Char);
 begin
 begin
-  LBMaterialsClick(Sender);
+  ListBoxMaterialsClick(Sender);
+end;
+
+procedure TGLLibMaterialPickerForm.SetLibMaterial1(const Value: TGLAbstractLibMaterial);
+begin
+  FLibMaterial1 := Value;
+  if Assigned(FLibMaterial1) then
+  begin
+    GLMaterialLibrary1.Materials[0].Material.MaterialLibrary := FLibMaterial1.MaterialLibrary;
+    GLMaterialLibrary1.Materials[0].Material.LibMaterialName := FLibMaterial1.Name
+  end
+  else
+  begin
+    GLMaterialLibrary1.Materials[0].Material.MaterialLibrary := nil;
+    GLMaterialLibrary1.Materials[0].Material.LibMaterialName := '';
+  end;
 end;
 end;
 
 
-procedure TGLLibMaterialPickerForm.LBMaterialsDblClick(Sender: TObject);
+procedure TGLLibMaterialPickerForm.SetMaterial1(const Value: TGLMaterial);
 begin
 begin
-  BBOk.Click;
+  GLMaterialLibrary1.Materials[0].Material.Assign(Value.GetActualPrimaryMaterial);
 end;
 end;
 
 
+// ------------------- ComboBoxObject1Change -----------------------------
+
+procedure TGLLibMaterialPickerForm.ComboBoxObject1Change(Sender: TObject);
+begin
+  var i: Integer := ComboBoxObject1.ItemIndex;
+  Cube1.Visible := i = 0;
+  Sphere1.Visible := i = 1;
+  Teapot1.Visible := i = 2;
+end;
+
+// ------------------- ComboBoxBackGround1Change -----------------------------
+
+procedure TGLLibMaterialPickerForm.ComboBoxBackGround1Change(Sender: TObject);
+var
+  bgColor: TColor;  // from Vcl.Graphics
+begin
+  case ComboBoxBackground1.ItemIndex of
+    1: bgColor := clWhite;
+    2: bgColor := clBlack;
+    3: bgColor := clBlue;
+    4: bgColor := clRed;
+    5: bgColor := clGreen;
+  else
+    bgColor := clNone;   // 0 - pattern background
+  end;
+  BackGroundSprite1.Material.Texture.Disabled := (bgColor <> clNone);
+  BackGroundSprite1.Material.FrontProperties.Diffuse.Color := ConvertWinColor(bgColor);
+end;
+
+
+procedure TGLLibMaterialPickerForm.ListBoxMaterialsDblClick(Sender: TObject);
+begin
+  BitBtnOk.Click;
+end;
+
+
 //-----------------------------------------------------------------
 //-----------------------------------------------------------------
 initialization
 initialization
 //-----------------------------------------------------------------
 //-----------------------------------------------------------------
@@ -114,4 +270,3 @@ finalization
  ReleaseLibMaterialPickerForm;
  ReleaseLibMaterialPickerForm;
 
 
 end.
 end.
-

+ 26 - 3
Source/FmMaterialEditor.dfm

@@ -12,7 +12,6 @@ object GLMaterialEditorForm: TGLMaterialEditorForm
   Font.Name = 'MS Sans Serif'
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Font.Style = []
   ShowHint = True
   ShowHint = True
-  PixelsPerInch = 96
   TextHeight = 13
   TextHeight = 13
   object Label1: TLabel
   object Label1: TLabel
     Left = 8
     Left = 8
@@ -42,9 +41,11 @@ object GLMaterialEditorForm: TGLMaterialEditorForm
         Left = 0
         Left = 0
         Top = 0
         Top = 0
         Width = 305
         Width = 305
-        Height = 186
+        Height = 241
         AutoSize = True
         AutoSize = True
         TabOrder = 0
         TabOrder = 0
+        ExplicitWidth = 305
+        ExplicitHeight = 241
         inherited Label1: TLabel
         inherited Label1: TLabel
           Width = 45
           Width = 45
           Height = 13
           Height = 13
@@ -69,6 +70,16 @@ object GLMaterialEditorForm: TGLMaterialEditorForm
             ExplicitHeight = 102
             ExplicitHeight = 102
           end
           end
         end
         end
+        inherited TBEShininess: TRTrackBarEdit
+          inherited Edit: TEdit
+            Height = 21
+            ExplicitHeight = 21
+          end
+        end
+        inherited Edit: TEdit
+          Height = 21
+          ExplicitHeight = 21
+        end
         inherited ImageList: TImageList
         inherited ImageList: TImageList
           Top = 0
           Top = 0
         end
         end
@@ -81,9 +92,11 @@ object GLMaterialEditorForm: TGLMaterialEditorForm
         Left = 0
         Left = 0
         Top = 0
         Top = 0
         Width = 305
         Width = 305
-        Height = 186
+        Height = 241
         AutoSize = True
         AutoSize = True
         TabOrder = 0
         TabOrder = 0
+        ExplicitWidth = 305
+        ExplicitHeight = 241
         inherited Label1: TLabel
         inherited Label1: TLabel
           Width = 45
           Width = 45
           Height = 13
           Height = 13
@@ -108,6 +121,16 @@ object GLMaterialEditorForm: TGLMaterialEditorForm
             ExplicitHeight = 102
             ExplicitHeight = 102
           end
           end
         end
         end
+        inherited TBEShininess: TRTrackBarEdit
+          inherited Edit: TEdit
+            Height = 21
+            ExplicitHeight = 21
+          end
+        end
+        inherited Edit: TEdit
+          Height = 21
+          ExplicitHeight = 21
+        end
       end
       end
     end
     end
     object TSTexture: TTabSheet
     object TSTexture: TTabSheet

+ 0 - 2
Source/FmMaterialEditor.pas

@@ -45,8 +45,6 @@ type
     Label2: TLabel;
     Label2: TLabel;
     CBPolygonMode: TComboBox;
     CBPolygonMode: TComboBox;
     procedure OnMaterialChanged(Sender: TObject);
     procedure OnMaterialChanged(Sender: TObject);
-  private
-     
   public
   public
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
     function Execute(AMaterial: TGLMaterial): Boolean;
     function Execute(AMaterial: TGLMaterial): Boolean;

+ 8 - 11
Source/GLS.SceneRegister.pas

@@ -168,7 +168,7 @@ type
     procedure GetValues(Proc: TGetStrProc); override;
     procedure GetValues(Proc: TGetStrProc); override;
   end;
   end;
 
 
-  (*  Selection editor for TGLSoundLibrary 
+  (*  Selection editor for TGLSoundLibrary
     Allows units to be added to the uses clause automatically when
     Allows units to be added to the uses clause automatically when
     sound files are loaded into a TGLSoundLibrary at design-time. *)
     sound files are loaded into a TGLSoundLibrary at design-time. *)
   TGLSoundLibrarySelectionEditor = class(TSelectionEditor)
   TGLSoundLibrarySelectionEditor = class(TSelectionEditor)
@@ -969,9 +969,7 @@ var
   Int: IGLMaterialLibrarySupported;
   Int: IGLMaterialLibrarySupported;
 begin
 begin
 
 
-  if FmMaterialEditor.GLMaterialEditorForm.Execute(
-    TGLMaterial(GetOrdValue))
-  then
+  if FmMaterialEditor.GLMaterialEditorForm.Execute(TGLMaterial(GetOrdValue)) then
     Modified;
     Modified;
 end;
 end;
 
 
@@ -1002,7 +1000,6 @@ begin
   if not Assigned(ml) then
   if not Assigned(ml) then
     ShowMessage('Select the material library first.')
     ShowMessage('Select the material library first.')
   else
   else
-//  if FmMaterialEditor.GLMaterialEditorForm.ExecutePicker(buf, ml) then
   if GLLibMaterialPickerForm.Execute(buf, ml) then
   if GLLibMaterialPickerForm.Execute(buf, ml) then
     SetStrValue(buf);
     SetStrValue(buf);
 end;
 end;
@@ -1430,10 +1427,10 @@ begin
     ['*Frame*', 'Interval', 'OverlaySkeleton', 'UseMeshmaterials']);
     ['*Frame*', 'Interval', 'OverlaySkeleton', 'UseMeshmaterials']);
   RegisterPropertiesInCategory(strVisualCategoryName, TGLActor,  ['OverlaySkeleton']);
   RegisterPropertiesInCategory(strVisualCategoryName, TGLActor,  ['OverlaySkeleton']);
 
 
-  // GLMesh 
+  // GLMesh
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLMeshMode), TypeInfo(TGLVertexMode)]);
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLMeshMode), TypeInfo(TGLVertexMode)]);
 
 
-  // GLGraph 
+  // GLGraph
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLHeightFieldOptions)]);
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLHeightFieldOptions)]);
   RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TGLHeightFieldColorMode), TypeInfo(TGLSamplingScale),
   RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TGLHeightFieldColorMode), TypeInfo(TGLSamplingScale),
     TypeInfo(TGLXYZGridLinesStyle), TypeInfo(TGLXYZGridParts)]);
     TypeInfo(TGLXYZGridLinesStyle), TypeInfo(TGLXYZGridParts)]);
@@ -1456,7 +1453,7 @@ begin
   RegisterPropertiesInCategory(strOpenGLCategoryName,
   RegisterPropertiesInCategory(strOpenGLCategoryName,
     [TypeInfo(TGLMirrorOptions), TypeInfo(TGLBaseSceneObject)]);
     [TypeInfo(TGLMirrorOptions), TypeInfo(TGLBaseSceneObject)]);
 
 
-  // GLParticleFX 
+  // GLParticleFX
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLBlendingMode)]);
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLBlendingMode)]);
   RegisterPropertiesInCategory(strVisualCategoryName,
   RegisterPropertiesInCategory(strVisualCategoryName,
     [TypeInfo(TGLBlendingMode), TypeInfo(TPFXLifeColors), TypeInfo(TSpriteColorMode)]);
     [TypeInfo(TGLBlendingMode), TypeInfo(TPFXLifeColors), TypeInfo(TSpriteColorMode)]);
@@ -1468,11 +1465,11 @@ begin
   RegisterPropertiesInCategory(strVisualCategoryName, TGLPolygonPFXManager, ['NbSides']);
   RegisterPropertiesInCategory(strVisualCategoryName, TGLPolygonPFXManager, ['NbSides']);
   RegisterPropertiesInCategory(strVisualCategoryName, TGLPointLightPFXManager, ['TexMapSize']);
   RegisterPropertiesInCategory(strVisualCategoryName, TGLPointLightPFXManager, ['TexMapSize']);
 
 
-  // GLTerrainRenderer 
+  // GLTerrainRenderer
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLHeightDataSource)]);
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLHeightDataSource)]);
   RegisterPropertiesInCategory(strVisualCategoryName, TGLTerrainRenderer, ['*CLOD*', 'QualityDistance', 'Tile*']);
   RegisterPropertiesInCategory(strVisualCategoryName, TGLTerrainRenderer, ['*CLOD*', 'QualityDistance', 'Tile*']);
 
 
-  // GLzBuffer 
+  // GLzBuffer
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLMemoryViewer),
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLMemoryViewer),
     TypeInfo(TGLSceneViewer), TypeInfo(TOptimise)]);
     TypeInfo(TGLSceneViewer), TypeInfo(TOptimise)]);
   RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TOptimise)]);
   RegisterPropertiesInCategory(strVisualCategoryName, [TypeInfo(TOptimise)]);
@@ -1509,7 +1506,7 @@ begin
   RegisterPropertiesInCategory(strVisualCategoryName, TGLThorFXManager,
   RegisterPropertiesInCategory(strVisualCategoryName, TGLThorFXManager,
     ['Core', 'Glow*', 'Paused', 'Target', 'Vibrate', 'Wildness']);
     ['Core', 'Glow*', 'Paused', 'Target', 'Vibrate', 'Wildness']);
 
 
-  // GLBitmapFont 
+  // GLBitmapFont
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLMagFilter), TypeInfo(TGLMinFilter)]);
   RegisterPropertiesInCategory(strOpenGLCategoryName, [TypeInfo(TGLMagFilter), TypeInfo(TGLMinFilter)]);
   RegisterPropertiesInCategory(strLocalizableCategoryName, [TypeInfo(TGLBitmapFontRanges)]);
   RegisterPropertiesInCategory(strLocalizableCategoryName, [TypeInfo(TGLBitmapFontRanges)]);
   RegisterPropertiesInCategory(strLocalizableCategoryName, TGLBitmapFontRange, ['*ASCII']);
   RegisterPropertiesInCategory(strLocalizableCategoryName, TGLBitmapFontRange, ['*ASCII']);

+ 0 - 0
Packages/GLScene_GPU_DT.dpk → external/CUDA/Packages/GLScene_GPU_DT.dpk


+ 0 - 0
Packages/GLScene_GPU_DT.dproj → external/CUDA/Packages/GLScene_GPU_DT.dproj


+ 0 - 0
Packages/GLScene_GPU_RT.dpk → external/CUDA/Packages/GLScene_GPU_RT.dpk


+ 0 - 0
Packages/GLScene_GPU_RT.dproj → external/CUDA/Packages/GLScene_GPU_RT.dproj


+ 0 - 0
Demos/computing/Computing.groupproj → external/CUDA/Samples/Computing.groupproj


+ 0 - 0
Demos/computing/FastFT.jpg → external/CUDA/Samples/FastFT.jpg


+ 0 - 0
Demos/computing/FastFourierTransformation/FastFourierD.dpr → external/CUDA/Samples/FastFourierTransformation/FastFourierD.dpr


+ 0 - 0
Demos/computing/FastFourierTransformation/FastFourierD.dproj → external/CUDA/Samples/FastFourierTransformation/FastFourierD.dproj


+ 0 - 0
Demos/computing/FastFourierTransformation/fFourier_D.dfm → external/CUDA/Samples/FastFourierTransformation/fFourier_D.dfm


+ 0 - 0
Demos/computing/FastFourierTransformation/fFourier_D.pas → external/CUDA/Samples/FastFourierTransformation/fFourier_D.pas


+ 0 - 0
Demos/computing/FastFourierTransformation/uCPUFFT.pas → external/CUDA/Samples/FastFourierTransformation/uCPUFFT.pas


+ 0 - 0
Demos/computing/PostProcessing.jpg → external/CUDA/Samples/PostProcessing.jpg


+ 0 - 0
Demos/computing/PostProcessing/PostProcessingD.dpr → external/CUDA/Samples/PostProcessing/PostProcessingD.dpr


+ 0 - 0
Demos/computing/PostProcessing/PostProcessingD.dproj → external/CUDA/Samples/PostProcessing/PostProcessingD.dproj


+ 0 - 0
Demos/computing/PostProcessing/PostProcessing_kernel.cu → external/CUDA/Samples/PostProcessing/PostProcessing_kernel.cu


+ 0 - 0
Demos/computing/PostProcessing/fPostProcessingD.dfm → external/CUDA/Samples/PostProcessing/fPostProcessingD.dfm


+ 0 - 0
Demos/computing/PostProcessing/fPostProcessingD.pas → external/CUDA/Samples/PostProcessing/fPostProcessingD.pas


+ 0 - 0
Demos/computing/ScalarProduct/ScalarProductD.dpr → external/CUDA/Samples/ScalarProduct/ScalarProductD.dpr


+ 0 - 0
Demos/computing/ScalarProduct/ScalarProductD.dproj → external/CUDA/Samples/ScalarProduct/ScalarProductD.dproj


+ 0 - 0
Demos/computing/ScalarProduct/ScalarProduct_kernel.cu → external/CUDA/Samples/ScalarProduct/ScalarProduct_kernel.cu


+ 0 - 0
Demos/computing/ScalarProduct/fScalarProductD.dfm → external/CUDA/Samples/ScalarProduct/fScalarProductD.dfm


+ 0 - 0
Demos/computing/ScalarProduct/fScalarProductD.pas → external/CUDA/Samples/ScalarProduct/fScalarProductD.pas


+ 0 - 0
Demos/computing/SimpleCUDATexture/SimpleTextureD.dpr → external/CUDA/Samples/SimpleCUDATexture/SimpleTextureD.dpr


+ 0 - 0
Demos/computing/SimpleCUDATexture/SimpleTextureD.dproj → external/CUDA/Samples/SimpleCUDATexture/SimpleTextureD.dproj


+ 0 - 0
Demos/computing/SimpleCUDATexture/SimpleTexture_kernel.cu → external/CUDA/Samples/SimpleCUDATexture/SimpleTexture_kernel.cu


+ 0 - 0
Demos/computing/SimpleCUDATexture/fSimpleTexD.dfm → external/CUDA/Samples/SimpleCUDATexture/fSimpleTexD.dfm


+ 0 - 0
Demos/computing/SimpleCUDATexture/fSimpleTexD.pas → external/CUDA/Samples/SimpleCUDATexture/fSimpleTexD.pas


+ 0 - 0
Demos/computing/StableFluids/FluidsD.dpr → external/CUDA/Samples/StableFluids/FluidsD.dpr


+ 0 - 0
Demos/computing/StableFluids/FluidsD.dproj → external/CUDA/Samples/StableFluids/FluidsD.dproj


+ 0 - 0
Demos/computing/StableFluids/Fluids_kernels.cu → external/CUDA/Samples/StableFluids/Fluids_kernels.cu


+ 0 - 0
Demos/computing/StableFluids/fFluidsD.dfm → external/CUDA/Samples/StableFluids/fFluidsD.dfm


+ 0 - 0
Demos/computing/StableFluids/fFluidsD.pas → external/CUDA/Samples/StableFluids/fFluidsD.pas


+ 0 - 0
Demos/computing/VertexDataGeneration/Simple kernel.cu → external/CUDA/Samples/VertexDataGeneration/Simple kernel.cu


+ 0 - 0
Demos/computing/VertexDataGeneration/VertexGeneration.dpr → external/CUDA/Samples/VertexDataGeneration/VertexGeneration.dpr


+ 0 - 0
Demos/computing/VertexDataGeneration/VertexGeneration.dproj → external/CUDA/Samples/VertexDataGeneration/VertexGeneration.dproj


+ 0 - 0
Demos/computing/VertexDataGeneration/fVertexGenD.dfm → external/CUDA/Samples/VertexDataGeneration/fVertexGenD.dfm


+ 0 - 0
Demos/computing/VertexDataGeneration/fVertexGenD.pas → external/CUDA/Samples/VertexDataGeneration/fVertexGenD.pas


+ 0 - 0
Demos/computing/aComputing.htm → external/CUDA/Samples/aComputing.htm


+ 0 - 0
Source/CUDA.APIComps.pas → external/CUDA/Source/CUDA.APIComps.pas


+ 0 - 0
Source/CUDA.Compiler.pas → external/CUDA/Source/CUDA.Compiler.pas


+ 0 - 0
Source/CUDA.Context.pas → external/CUDA/Source/CUDA.Context.pas


部分文件因为文件数量过多而无法显示