GLScene пре 2 година
родитељ
комит
318bcd8057
100 измењених фајлова са 1792 додато и 4557 уклоњено
  1. 15 15
      AdvDemos/AdvDemos.groupproj
  2. BIN
      Asset/Map/earth-clouds.png
  3. BIN
      Asset/Map/earth.png
  4. BIN
      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">
             <Dependencies/>
         </Projects>
-        <Projects Include="KosmoScene\KosmoScene.dproj">
-            <Dependencies/>
-        </Projects>
         <Projects Include="PanoramViewer\PanoViewerD.dproj">
             <Dependencies/>
         </Projects>
@@ -57,6 +54,9 @@
         <Projects Include="Quake3Demo\Q3DemoC.cbproj">
             <Dependencies/>
         </Projects>
+        <Projects Include="D:\XYZ_FITiPM\3D Mod\2022_СТУДЕНТЫ_1901\Костенко\Лаб №13 Костенко Артем 12001901\LR13_2\VRsupport.cbproj">
+            <Dependencies/>
+        </Projects>
     </ItemGroup>
     <ProjectExtensions>
         <Borland.Personality>Default.Personality.12</Borland.Personality>
@@ -173,15 +173,6 @@
     <Target Name="IntensityMeshC:Make">
         <MSBuild Projects="IntensityMesh\IntensityMeshC.cbproj" Targets="Make"/>
     </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">
         <MSBuild Projects="PanoramViewer\PanoViewerD.dproj"/>
     </Target>
@@ -227,14 +218,23 @@
     <Target Name="Q3DemoC:Make">
         <MSBuild Projects="Quake3Demo\Q3DemoC.cbproj" Targets="Make"/>
     </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">
-        <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 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 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>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

BIN
Asset/Map/earth-clouds.png


BIN
Asset/Map/earth.png


BIN
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
 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 *.cur /s  - cursors
 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>
         <MainSource>ActorD.dpr</MainSource>
         <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Release</Config>
+        <Config Condition="'$(Config)'==''">Debug</Config>
         <TargetedPlatforms>3</TargetedPlatforms>
         <AppType>Application</AppType>
         <FrameworkType>VCL</FrameworkType>
@@ -103,6 +103,8 @@
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
         <BT_BuildType>Debug</BT_BuildType>
         <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <DCC_DebugDCUs>true</DCC_DebugDCUs>
+        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
@@ -117,13 +119,14 @@
     <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
         <BT_BuildType>Debug</BT_BuildType>
         <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_ExeOutput>.</DCC_ExeOutput>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <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>
         <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <BT_BuildType>Debug</BT_BuildType>
@@ -165,6 +168,8 @@
                     <Source Name="MainSource">ActorD.dpr</Source>
                 </Source>
                 <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)\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>

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

@@ -165,8 +165,7 @@ begin
 
   // Normally actors for Quake II Model have one number of frames
   // 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);
   if Actor2.Visible then
     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,
 		  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)
@@ -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
   Top = 0
   Caption = 'Actor Proxy'
-  ClientHeight = 418
-  ClientWidth = 555
+  ClientHeight = 563
+  ClientWidth = 675
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
@@ -16,50 +16,70 @@ object Form1: TForm1
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 555
-    Height = 391
+    Width = 675
+    Height = 536
     Camera = GLCamera1
     Buffer.BackgroundColor = 4194304
-    FieldOfView = 151.307739257812500000
+    FieldOfView = 158.863967895507800000
     PenAsTouch = False
     Align = alClient
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
+    ExplicitWidth = 558
+    ExplicitHeight = 394
   end
   object Panel1: TPanel
     Left = 0
-    Top = 391
-    Width = 555
+    Top = 536
+    Width = 675
     Height = 27
     Align = alBottom
     TabOrder = 1
-    object cbActorsAreTurning: TCheckBox
-      Left = 13
-      Top = 5
+    ExplicitTop = 391
+    ExplicitWidth = 555
+    object chbActorsAreTurning: TCheckBox
+      Left = 1
+      Top = 1
       Width = 116
-      Height = 17
+      Height = 25
+      Align = alLeft
       Caption = 'Actors are turning'
       Checked = True
       State = cbChecked
       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
   object GLScene1: TGLScene
     Left = 48
     Top = 24
-    object InvisibleDummyCube: TGLDummyCube
+    object dcInvisible: TGLDummyCube
       Visible = False
       CubeSize = 1.000000000000000000
       object MasterActor: TGLActor
         Material.MaterialLibrary = GLMaterialLibrary1
         Material.LibMaterialName = 'Mat2'
         Direction.Coordinates = {000000000000803F0000000000000000}
+        Position.Coordinates = {00000000000080BF000000000000803F}
         Scale.Coordinates = {CDCC4C3DCDCC4C3DCDCC4C3D00000000}
         Up.Coordinates = {0000000000000000000080BF00000000}
         Interval = 50
       end
     end
-    object GLDummyCube2: TGLDummyCube
+    object dcShow: TGLDummyCube
       CubeSize = 1.000000000000000000
       object GLActorProxy1: TGLActorProxy
         MasterObject = MasterActor

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

@@ -36,11 +36,11 @@ class TForm1 : public TForm
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
 	TPanel *Panel1;
-	TCheckBox *cbActorsAreTurning;
+	TCheckBox *chbActorsAreTurning;
 	TGLScene *GLScene1;
-	TGLDummyCube *InvisibleDummyCube;
+	TGLDummyCube *dcInvisible;
 	TGLActor *MasterActor;
-	TGLDummyCube *GLDummyCube2;
+	TGLDummyCube *dcShow;
 	TGLActorProxy *GLActorProxy1;
 	TGLArrowLine *GLArrowLine1;
 	TGLActorProxy *GLActorProxy2;
@@ -52,6 +52,7 @@ __published:	// IDE-managed Components
 	TGLMaterialLibrary *GLMaterialLibrary1;
 	TGLCadencer *GLCadencer1;
 	TTimer *Timer1;
+	TCheckBox *chbShowMasterActor;
 	void __fastcall FormCreate(TObject *Sender);
 	void __fastcall GLCadencer1Progress(TObject *Sender, const double deltaTime, const double newTime);
 	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
   Top = 192
   Caption = 'Actor Proxy'
-  ClientHeight = 437
-  ClientWidth = 590
+  ClientHeight = 571
+  ClientWidth = 650
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 590
-    Height = 410
+    Width = 650
+    Height = 544
     Camera = GLCamera1
     Buffer.BackgroundColor = 4194304
-    FieldOfView = 152.586074829101600000
+    FieldOfView = 159.167938232421900000
     PenAsTouch = False
     Align = alClient
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
+    ExplicitWidth = 591
+    ExplicitHeight = 414
   end
   object Panel1: TPanel
     Left = 0
-    Top = 410
-    Width = 590
+    Top = 544
+    Width = 650
     Height = 27
     Align = alBottom
     TabOrder = 1
+    ExplicitTop = 410
+    ExplicitWidth = 590
     object cbActorsAreTurning: TCheckBox
-      Left = 13
-      Top = 5
+      Left = 1
+      Top = 1
       Width = 116
-      Height = 17
+      Height = 25
+      Align = alLeft
       Caption = 'Actors are turning'
       Checked = True
       State = cbChecked
       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
   object GLScene1: TGLScene
     Left = 48
     Top = 24
-    object InvisibleDummyCube: TGLDummyCube
+    object dcInvisible: TGLDummyCube
       Visible = False
       CubeSize = 1.000000000000000000
       object MasterActor: TGLActor
         Material.MaterialLibrary = GLMaterialLibrary1
         Material.LibMaterialName = 'Mat2'
         Direction.Coordinates = {000000000000803F0000000000000000}
+        Position.Coordinates = {00000000000080BF000000000000803F}
         Scale.Coordinates = {CDCC4C3DCDCC4C3DCDCC4C3D00000000}
         Up.Coordinates = {0000000000000000000080BF00000000}
         Interval = 50
       end
     end
-    object GLDummyCube2: TGLDummyCube
+    object dcShow: TGLDummyCube
       CubeSize = 1.000000000000000000
       object GLActorProxy1: TGLActorProxy
         MasterObject = MasterActor

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

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

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

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

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

@@ -14,161 +14,156 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 
 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 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,
-									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);
 			// top left triangle
 			AddTriangle(pBottomLeft, pTopLeft, pTopRight, clrBlue);
 			// bottom right triangle
 			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.Name = 'Tahoma'
   Font.Style = []
-  OldCreateOrder = False
+  Position = poScreenCenter
   OnCreate = FormCreate
-  PixelsPerInch = 96
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0

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

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

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

@@ -78,7 +78,8 @@ void __fastcall TForm1::AddMushRooms()
 	 proxy->RollAngle = Random(360);
 	 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
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
-    ExplicitWidth = 566
-    ExplicitHeight = 378
   end
   object Button1: TButton
     Left = 160

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

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

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

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

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

@@ -3,43 +3,34 @@ object FormSubdivide: TFormSubdivide
   Top = 100
   BorderWidth = 2
   Caption = 'Subdivide'
-  ClientHeight = 511
-  ClientWidth = 773
+  ClientHeight = 409
+  ClientWidth = 618
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Position = poScreenCenter
   ShowHint = True
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object Label1: TLabel
-    Left = 626
+    Left = 501
     Top = 0
-    Width = 3
-    Height = 511
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 2
+    Height = 409
     Align = alRight
     AutoSize = False
   end
   object GLSceneViewer1: TGLSceneViewer
     Left = 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
     Buffer.BackgroundColor = 13619151
     Buffer.FaceCulling = False
-    FieldOfView = 157.854904174804700000
+    FieldOfView = 152.521591186523400000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
@@ -47,93 +38,65 @@ object FormSubdivide: TFormSubdivide
     TabOrder = 0
   end
   object Panel1: TPanel
-    Left = 629
+    Left = 503
     Top = 0
-    Width = 144
-    Height = 511
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 115
+    Height = 409
     Align = alRight
     BevelOuter = bvLowered
     TabOrder = 1
     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
       AutoSize = False
       Caption = 'LASubdivideTime'
     end
     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'
       TabOrder = 0
       OnClick = BULoadClick
     end
     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'
       Enabled = False
       TabOrder = 1
       OnClick = BUSubdivideClick
     end
     object TrackBar1: TTrackBar
-      Left = 10
-      Top = 180
-      Width = 121
-      Height = 21
+      Left = 8
+      Top = 144
+      Width = 97
+      Height = 17
       Hint = 'Subdivision smoothness'
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
       Position = 5
       TabOrder = 2
-      ThumbLength = 13
+      ThumbLength = 10
     end
     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'
       TabOrder = 3
       OnClick = RBWireFrameClick
     end
     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'
       Checked = True
       TabOrder = 4
@@ -141,14 +104,10 @@ object FormSubdivide: TFormSubdivide
       OnClick = RBSolidClick
     end
     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'
       TabOrder = 5
       OnClick = CBAnimateClick

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

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

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

@@ -20,205 +20,224 @@
 #pragma link "GLS.HeightData"
 #pragma link "GLS.HeightData"
 #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
 //
-
-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)
-	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)
-	 HeightData->DataType = oldType;
+		HeightData->DataType = oldType;
 
-   ///inherited;
+	///inherited;
 }
 //---------------------------------------------------------------------------
 // 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.Name = 'Tahoma'
   Font.Style = []
-  OldCreateOrder = False
   OnCreate = FormCreate
   OnKeyPress = FormKeyPress
-  PixelsPerInch = 96
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0

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

@@ -31,276 +31,295 @@
 #pragma link "GLS.Material"
 #pragma link "GLS.FileMP3"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 
 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
   var Path: TFileName := 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
@@ -109,11 +109,11 @@ begin
   SPSun.Material.Texture.Image.LoadFromFile('flare1.bmp');
   // apply texture map scale (our heightmap size is 256)
   TerrainRenderer1.TilesPerTexture := 256 / TerrainRenderer1.TileSize;
-  // load Bitmap Font
+  // Load Bitmap Font
   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
   begin
     Add.LoadFromFile('ChillyWind.mp3');

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

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

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

@@ -26,6 +26,8 @@ void __fastcall TForm1::FormCreate(TObject* Sender)
 {
 	int i, j;
 	TFileName Path = GetCurrentAssetPath();
+	SetCurrentDir(Path  + "\\texture");
+
 	GLMaterialLibrary->TexturePaths = GetCurrentDir();
 
 	GLMaterialLibrary->LibMaterialByName("beigemarble")
@@ -35,47 +37,25 @@ void __fastcall TForm1::FormCreate(TObject* Sender)
 	GLMaterialLibrary->LibMaterialByName("walkway")
 		->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
-  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,
-          TPoint &MousePos, bool &Handled)
+		  TPoint &MousePos, bool &Handled)
 {
   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.Name = 'MS Sans Serif'
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer

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

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

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

@@ -13,283 +13,283 @@
 #pragma link "GLS.FileTGA"
 
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 //---------------------------------------------------------------------------
 
 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()
 {
-  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
   Top = 106
   Caption = 'Tree Editor'
-  ClientHeight = 629
-  ClientWidth = 910
+  ClientHeight = 388
+  ClientWidth = 579
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Menu = MainMenu1
   Position = poScreenCenter
   WindowState = wsMaximized
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
-    Left = 191
+    Left = 153
     Top = 0
-    Width = 719
-    Height = 629
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 426
+    Height = 388
     Camera = GLCamera1
-    FieldOfView = 161.933151245117200000
+    FieldOfView = 151.095138549804700000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
+    ExplicitWidth = 575
+    ExplicitHeight = 503
   end
   object Panel1: TPanel
     Left = 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
     TabOrder = 1
+    ExplicitHeight = 503
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
       FocusControl = GLSceneViewer1
     end
     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'
       Font.Charset = ANSI_CHARSET
       Font.Color = clWindowText
-      Font.Height = -16
+      Font.Height = -13
       Font.Name = 'Verdana'
       Font.Style = [fsBold]
       ParentFont = False
     end
     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'
     end
     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
       Position = 10
       TabOrder = 0
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar1Change
     end
     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
       Position = 45
       TabOrder = 1
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar2Change
     end
     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
       Position = 40
       TabOrder = 2
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar3Change
     end
     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
       Position = 60
       TabOrder = 3
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar4Change
     end
     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
       Position = 10
       TabOrder = 4
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar5Change
     end
     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
       Position = 3
       TabOrder = 5
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar6Change
     end
     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
       Position = 70
       TabOrder = 6
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar7Change
     end
     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
       Position = 20
       TabOrder = 7
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar8Change
     end
     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
       Position = 20
       TabOrder = 8
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar9Change
     end
     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
       Position = 6
       TabOrder = 9
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar10Change
     end
     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
     end
     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'
       TabOrder = 11
       OnClick = Button1Click
     end
     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
       Caption = 'Central Leader'
       TabOrder = 12
       OnClick = CheckBox1Click
     end
     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
       Position = 50
       TabOrder = 13
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar11Change
     end

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

@@ -2,30 +2,25 @@ object FormTree: TFormTree
   Left = 192
   Top = 106
   Caption = 'Tree Editor'
-  ClientHeight = 629
-  ClientWidth = 910
+  ClientHeight = 503
+  ClientWidth = 728
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Menu = MainMenu1
   Position = poScreenCenter
   OnCreate = FormCreate
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
-    Left = 191
+    Left = 153
     Top = 0
-    Width = 719
-    Height = 629
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 575
+    Height = 503
     Camera = GLCamera1
-    FieldOfView = 161.933151245117200000
+    FieldOfView = 157.511596679687500000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
@@ -35,389 +30,273 @@ object FormTree: TFormTree
   object Panel1: TPanel
     Left = 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
     TabOrder = 1
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
     end
     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'
       FocusControl = GLSceneViewer1
     end
     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'
       Font.Charset = ANSI_CHARSET
       Font.Color = clWindowText
-      Font.Height = -16
+      Font.Height = -13
       Font.Name = 'Verdana'
       Font.Style = [fsBold]
       ParentFont = False
     end
     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'
     end
     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'
     end
     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
       Position = 5
       TabOrder = 0
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar1Change
     end
     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
       Position = 45
       TabOrder = 1
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar2Change
     end
     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
       Position = 40
       TabOrder = 2
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar3Change
     end
     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
       Position = 60
       TabOrder = 3
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar4Change
     end
     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
       Position = 10
       TabOrder = 4
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar5Change
     end
     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
       Position = 3
       TabOrder = 5
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar6Change
     end
     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
       Position = 70
       TabOrder = 6
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar7Change
     end
     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
       Position = 20
       TabOrder = 7
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar8Change
     end
     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
       Position = 20
       TabOrder = 8
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar9Change
     end
     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
       Position = 6
       TabOrder = 9
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar10Change
     end
     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
     end
     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'
       TabOrder = 11
       OnClick = Button1Click
     end
     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
       Caption = 'Central Leader'
       TabOrder = 12
       OnClick = CheckBox1Click
     end
     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
       Position = 50
       TabOrder = 13
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar11Change
     end
     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
       Position = 50
       TabOrder = 14
-      ThumbLength = 13
+      ThumbLength = 10
       TickStyle = tsManual
       OnChange = TrackBar12Change
     end

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

@@ -25,7 +25,7 @@ uses
   GLS.VectorFileObjects,
   GLS.AsyncTimer,
   GLS.Cadencer,
- 
+
   GLS.Material,
   GLS.Coordinates,
   GLS.BaseClasses,
@@ -93,10 +93,9 @@ type
     AsyncTimer1: TGLAsyncTimer;
     GLCadencer1: TGLCadencer;
     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);
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure TrackBar1Change(Sender: TObject);
     procedure TrackBar2Change(Sender: TObject);
     procedure TrackBar3Change(Sender: TObject);
@@ -122,8 +121,7 @@ type
     procedure ExportMaterialLibrary1Click(Sender: TObject);
     procedure TrackBar12Change(Sender: TObject);
     procedure AsyncTimer1Timer(Sender: TObject);
-    procedure GLCadencer1Progress(Sender: TObject;
-      const deltaTime, newTime: Double);
+    procedure GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
   public
     mx, my: Integer;
     GLTree1: TGLTree;
@@ -184,8 +182,8 @@ end;
 procedure TFormTree.FormCreate(Sender: TObject);
 begin
   var Path: TFileName := GetCurrentAssetPath();
-  SetCurrentDir(Path  + '\texture');
-  
+  SetCurrentDir(Path + '\texture');
+
   // Set up default textures
   with GLMaterialLibrary1.AddTextureMaterial('LeafFront', 'maple_multi.tga') do
   begin
@@ -214,8 +212,7 @@ begin
   my := Y;
 end;
 
-procedure TFormTree.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
-  X, Y: Integer);
+procedure TFormTree.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 begin
   if ssLeft in Shift then
     GLCamera1.MoveAroundTarget(my - Y, mx - X)
@@ -385,8 +382,7 @@ begin
   miFPS.Caption := 'Tree Editor - ' + GLSceneViewer1.FramesPerSecondText;
 end;
 
-procedure TFormTree.GLCadencer1Progress(Sender: TObject;
-  const deltaTime, newTime: Double);
+procedure TFormTree.GLCadencer1Progress(Sender: TObject; const deltaTime, newTime: Double);
 begin
   GLSceneViewer1.Invalidate;
 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 link "GLS.FileMD2"
 #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
     Align = alClient
     TabOrder = 0
-    ExplicitWidth = 610
-    ExplicitHeight = 501
   end
   object Panel2: TPanel
     Left = 681
@@ -34,8 +32,6 @@ object Form1: TForm1
     Height = 516
     Align = alRight
     TabOrder = 1
-    ExplicitLeft = 416
-    ExplicitHeight = 342
     DesignSize = (
       153
       516)

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

@@ -27,37 +27,38 @@
 //---------------------------------------------------------------------------
 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
+

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

@@ -2,89 +2,64 @@ object FormImposter: TFormImposter
   Left = 110
   Top = 65
   Caption = 'Imposter'
-  ClientHeight = 416
-  ClientWidth = 671
+  ClientHeight = 333
+  ClientWidth = 537
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Position = poScreenCenter
   OnCreate = FormCreate
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 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
     Buffer.ContextOptions = [roDoubleBuffer, roRenderToWindow, roDestinationAlpha]
-    FieldOfView = 142.799865722656300000
+    FieldOfView = 134.394241333007800000
     PenAsTouch = False
     Align = alClient
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
   end
   object Panel1: TPanel
-    Left = 488
+    Left = 390
     Top = 0
-    Width = 183
-    Height = 416
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 147
+    Height = 333
     Align = alRight
     BevelOuter = bvLowered
     TabOrder = 1
     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'
     end
     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'
     end
     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'
     end
     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'
       Checked = True
       State = cbChecked
@@ -92,14 +67,10 @@ object FormImposter: TFormImposter
       OnClick = CBShowTeapotClick
     end
     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'
       Checked = True
       State = cbChecked
@@ -107,14 +78,10 @@ object FormImposter: TFormImposter
       OnClick = CBShowImposterClick
     end
     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
       ItemIndex = 3
       TabOrder = 2

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

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

+ 3 - 27
Packages/GLScene.groupproj

@@ -21,12 +21,6 @@
         <Projects Include="GLScene_Physics_DT.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="GLScene_GPU_RT.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="GLScene_GPU_DT.dproj">
-            <Dependencies/>
-        </Projects>
         <Projects Include="GLScene_Cg_RT.dproj">
             <Dependencies/>
         </Projects>
@@ -95,24 +89,6 @@
     <Target Name="GLScene_Physics_DT:Make">
         <MSBuild Projects="GLScene_Physics_DT.dproj" Targets="Make"/>
     </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">
         <MSBuild Projects="GLScene_Cg_RT.dproj"/>
     </Target>
@@ -132,13 +108,13 @@
         <MSBuild Projects="GLScene_Cg_DT.dproj" Targets="Make"/>
     </Target>
     <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 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 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>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 2 - 2
Packages/GLScene_Cg_DT.dproj

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

+ 2 - 2
Packages/GLScene_DT.dpk

@@ -53,11 +53,11 @@ contains
   FmInfo in '..\Source\FmInfo.pas' {GLInfoForm},
   GLS.SceneRegister in '..\Source\GLS.SceneRegister.pas',
   GLS.XCollectionRegister in '..\Source\GLS.XCollectionRegister.pas',
-  FmLibMaterialPicker in '..\Source\FmLibMaterialPicker.pas' {GLLibMaterialPickerForm},
   FRTrackBarEdit in '..\Source\FRTrackBarEdit.pas' {RTrackBarEdit: TFrame},
   FRFaceEditor in '..\Source\FRFaceEditor.pas' {RFaceEditor: 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.
 

+ 4 - 4
Packages/GLScene_DT.dproj

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

+ 47 - 7
Source/FRFaceEditor.dfm

@@ -1,13 +1,12 @@
 object RFaceEditor: TRFaceEditor
   Left = 0
   Top = 0
-  Width = 305
-  Height = 186
-  AutoSize = True
+  Width = 355
+  Height = 247
   TabOrder = 0
   object Label1: TLabel
-    Left = 0
-    Top = 6
+    Left = 3
+    Top = 214
     Width = 60
     Height = 20
     Caption = 'Shininess'
@@ -55,11 +54,29 @@ object RFaceEditor: TRFaceEditor
       inline CEEmission: TRColorEditor
         Left = 0
         Top = 0
-        Width = 289
-        Height = 95
+        Width = 341
+        Height = 98
         AutoSize = True
         TabOrder = 0
         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
     object TSSpecular: TTabSheet
@@ -100,6 +117,29 @@ object RFaceEditor: TRFaceEditor
       ExplicitLeft = 160
     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
     Left = 264
     Top = 8

+ 25 - 6
Source/FRFaceEditor.pas

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

+ 170 - 73
Source/FmLibMaterialPicker.dfm

@@ -2,16 +2,16 @@ object GLLibMaterialPickerForm: TGLLibMaterialPickerForm
   Left = 326
   Top = 157
   BorderStyle = bsDialog
-  Caption = 'LibMaterial Picker'
-  ClientHeight = 261
-  ClientWidth = 460
+  Caption = 'LibMaterial Pickers'
+  ClientHeight = 295
+  ClientWidth = 423
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
-  PixelsPerInch = 96
+  OnCreate = FormCreate
   TextHeight = 13
   object Label1: TLabel
     Left = 152
@@ -27,100 +27,197 @@ object GLLibMaterialPickerForm: TGLLibMaterialPickerForm
     Height = 13
     Caption = 'Available Materials'
   end
-  object LBMaterials: TListBox
+  object ListBoxMaterials: TListBox
     Left = 8
     Top = 24
     Width = 137
     Height = 223
     ItemHeight = 13
     TabOrder = 0
-    OnClick = LBMaterialsClick
-    OnDblClick = LBMaterialsDblClick
-    OnKeyPress = LBMaterialsKeyPress
+    OnClick = ListBoxMaterialsClick
+    OnDblClick = ListBoxMaterialsDblClick
+    OnKeyPress = ListBoxMaterialsKeyPress
   end
-  object BBOk: TBitBtn
-    Left = 376
-    Top = 24
+  object BitBtnOk: TBitBtn
+    Left = 334
+    Top = 262
     Width = 75
     Height = 25
     Kind = bkOK
     NumGlyphs = 2
     TabOrder = 2
   end
-  object BBCancel: TBitBtn
-    Left = 376
-    Top = 56
+  object BitBtnCancel: TBitBtn
+    Left = 246
+    Top = 262
     Width = 75
     Height = 25
     Kind = bkCancel
     NumGlyphs = 2
     TabOrder = 1
   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
-    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
-    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
-      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
-      inherited Camera: TGLCamera
-        Position.Coordinates = {0000000000000000000020410000803F}
+      object FireSphere1: TGLSphere
+        Visible = False
+        Radius = 0.500000000000000000
       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
+  object GLMaterialLibrary1: TGLMaterialLibrary
+    Materials = <
+      item
+        Name = 'LibMaterial1'
+        Tag = 0
+      end>
+    Left = 277
+    Top = 85
+  end
 end

+ 193 - 38
Source/FmLibMaterialPicker.pas

@@ -11,31 +11,74 @@ interface
 
 uses
   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.Material,
-  FRMaterialPreview;
+  GLS.Color,
+  GLS.Coordinates,
+  GLS.BaseClasses,
+  GLS.HUDObjects,
+  GLS.GeomObjects;
 
 type
   TGLLibMaterialPickerForm = class(TForm)
-    LBMaterials: TListBox;
+    ListBoxMaterials: TListBox;
     Label1: 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
+    mx, my: Integer;
+
+    FLibMaterial1: TGLAbstractLibMaterial;
+    function GetMaterial1: TGLMaterial;
+    procedure SetMaterial1(const Value: TGLMaterial);
+    function GetLibMaterial1: TGLAbstractLibMaterial;
+    procedure SetLibMaterial1(const Value: TGLAbstractLibMaterial);
+
   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;
 
+// For registration in GLScene
 function GLLibMaterialPickerForm: TGLLibMaterialPickerForm;
 procedure ReleaseLibMaterialPickerForm;
 
@@ -48,6 +91,8 @@ implementation
 var
   vGLLibMaterialPickerForm: TGLLibMaterialPickerForm;
 
+// ------------ GLLibMaterialPickerForm -----------------
+
 function GLLibMaterialPickerForm: TGLLibMaterialPickerForm;
 begin
   if not Assigned(vGLLibMaterialPickerForm) then
@@ -55,6 +100,8 @@ begin
   Result := vGLLibMaterialPickerForm;
 end;
 
+// ----------- ReleaseLibMaterialPickerForm --------------
+
 procedure ReleaseLibMaterialPickerForm;
 begin
   if Assigned(vGLLibMaterialPickerForm) then
@@ -64,47 +111,156 @@ begin
   end;
 end;
 
+//------------------- FormCreate --------------------------
 
-function TGLLibMaterialPickerForm.Execute(var materialName: TGLLibMaterialName;
-  materialLibrary: TGLAbstractMaterialLibrary): Boolean;
+procedure TGLLibMaterialPickerForm.FormCreate(Sender: TObject);
 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);
   if Result then
   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;
 
-procedure TGLLibMaterialPickerForm.LBMaterialsClick(Sender: TObject);
+//-------------------------------------------------------------------
+
+function TGLLibMaterialPickerForm.GetLibMaterial1: TGLAbstractLibMaterial;
 begin
-  with LBMaterials do
-    if ItemIndex >= 0 then
-      MPPreview.LibMaterial := TGLAbstractLibMaterial(Items.Objects[ItemIndex]);
+   Result := FLibMaterial1;
 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);
 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;
 
-procedure TGLLibMaterialPickerForm.LBMaterialsDblClick(Sender: TObject);
+procedure TGLLibMaterialPickerForm.SetMaterial1(const Value: TGLMaterial);
 begin
-  BBOk.Click;
+  GLMaterialLibrary1.Materials[0].Material.Assign(Value.GetActualPrimaryMaterial);
 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
 //-----------------------------------------------------------------
@@ -114,4 +270,3 @@ finalization
  ReleaseLibMaterialPickerForm;
 
 end.
-

+ 26 - 3
Source/FmMaterialEditor.dfm

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

+ 0 - 2
Source/FmMaterialEditor.pas

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

+ 8 - 11
Source/GLS.SceneRegister.pas

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


Неке датотеке нису приказане због велике количине промена