GLScene 4 лет назад
Родитель
Сommit
2a1a6630b9
100 измененных файлов с 13650 добавлено и 5899 удалено
  1. 2 1
      AdvDemos/Delphi/Christmas/FMain.pas
  2. 1 1
      AdvDemos/Delphi/GLSViewer/Source/fGLAbout.dfm
  3. 4 1
      AdvDemos/Delphi/GLSViewer/Source/fMain.pas
  4. 2 2
      Demos/CPP/cgshaders/celshading/Unit1.cpp
  5. 1 1
      Demos/CPP/cgshaders/celshading/Unit1.h
  6. 1 1
      Demos/CPP/cgshaders/simple/Unit1.cpp
  7. 1 1
      Demos/CPP/cgshaders/simple/Unit1.h
  8. 1 1
      Demos/CPP/cgshaders/texturing/Unit1.h
  9. 1 1
      Demos/CPP/glslshaders/BumpShader/Unit1.cpp
  10. 1 1
      Demos/CPP/glslshaders/BumpShader/Unit1.h
  11. 1 1
      Demos/CPP/glslshaders/DiffuseSpecularShader/Unit1.cpp
  12. 1 1
      Demos/CPP/glslshaders/DiffuseSpecularShader/Unit1.h
  13. 1 1
      Demos/CPP/glslshaders/PostShader/Unit1.h
  14. 1 1
      Demos/CPP/physics/OdeFurball/Unit1.h
  15. 1 1
      Demos/CPP/physics/OdeRagdoll/Unit1.h
  16. 111 104
      Demos/CPP/rendering/SkyBox/Unit1.cpp
  17. 771 4
      Demos/CPP/rendering/basicsdl/Basicsdl.cbproj
  18. 4 0
      Demos/CPP/rendering/basicsdl/Unit1.cpp
  19. 1 1
      Demos/CPP/specialsFX/ShadowmappingFBO/Unit1.h
  20. 6 2
      Demos/CPP/specialsFX/waterplane/Unit1.cpp
  21. 0 1
      Demos/CPP/specialsFX/waterplane/Unit1.dfm
  22. 0 212
      Demos/Delphi/AllSandbox/fAllSandbox.dfm
  23. 3 3
      Demos/Delphi/aSandbox/Sandbox.dpr
  24. 7 7
      Demos/Delphi/aSandbox/Sandbox.dproj
  25. 0 0
      Demos/Delphi/aSandbox/Sandbox.htm
  26. 263 0
      Demos/Delphi/aSandbox/SandboxFm.dfm
  27. 19 6
      Demos/Delphi/aSandbox/SandboxFm.pas
  28. 0 72
      Demos/Delphi/behaviours/Behaviours.groupproj
  29. 0 187
      Demos/Delphi/behaviours/DCEDemo/dceDemo.dproj
  30. 0 163
      Demos/Delphi/behaviours/DCEDemo/dceDemo.mes
  31. 24 24
      Demos/Delphi/behaviours/DceDemo.dpr
  32. 894 0
      Demos/Delphi/behaviours/DceDemo.dproj
  33. BIN
      Demos/Delphi/behaviours/DceDemo.jpg
  34. 197 198
      Demos/Delphi/behaviours/DceFm.dfm
  35. 426 426
      Demos/Delphi/behaviours/DceFm.pas
  36. 0 172
      Demos/Delphi/behaviours/FPSMovement/FPSMovement.dproj
  37. 27 27
      Demos/Delphi/behaviours/FpsMovement.dpr
  38. 878 0
      Demos/Delphi/behaviours/FpsMovement.dproj
  39. BIN
      Demos/Delphi/behaviours/FpsMovement.jpg
  40. 267 268
      Demos/Delphi/behaviours/FpsMovementFm.dfm
  41. 202 203
      Demos/Delphi/behaviours/FpsMovementFm.pas
  42. 17 17
      Demos/Delphi/behaviours/PathControl.dpr
  43. 878 0
      Demos/Delphi/behaviours/PathControl.dproj
  44. BIN
      Demos/Delphi/behaviours/PathControl.jpg
  45. 102 102
      Demos/Delphi/behaviours/PathControlFm.dfm
  46. 129 129
      Demos/Delphi/behaviours/PathControlFm.pas
  47. 32 32
      Demos/Delphi/behaviours/Torque.dpr
  48. 881 0
      Demos/Delphi/behaviours/Torque.dproj
  49. BIN
      Demos/Delphi/behaviours/Torque.jpg
  50. 211 209
      Demos/Delphi/behaviours/TorqueFm.dfm
  51. 162 162
      Demos/Delphi/behaviours/TorqueFm.pas
  52. 72 0
      Demos/Delphi/behaviours/aBehaviours.groupproj
  53. 4 4
      Demos/Delphi/behaviours/aBehaviours.htm
  54. 0 172
      Demos/Delphi/behaviours/pathcontrol/PathControl.dproj
  55. 0 175
      Demos/Delphi/behaviours/torque/Torque.dproj
  56. 0 96
      Demos/Delphi/bench/Bench.groupproj
  57. 34 34
      Demos/Delphi/bench/Canvas.dpr
  58. 867 0
      Demos/Delphi/bench/Canvas.dproj
  59. 148 148
      Demos/Delphi/bench/CanvasFm.dfm
  60. 290 290
      Demos/Delphi/bench/CanvasFm.pas
  61. BIN
      Demos/Delphi/bench/MegaGlasscube.jpg
  62. 60 60
      Demos/Delphi/bench/Megacube.dpr
  63. 873 0
      Demos/Delphi/bench/Megacube.dproj
  64. BIN
      Demos/Delphi/bench/Megacube.jpg
  65. 78 77
      Demos/Delphi/bench/MegacubeFm.dfm
  66. 90 90
      Demos/Delphi/bench/MegacubeFm.pas
  67. 76 75
      Demos/Delphi/bench/MegaglassCubeFm.dfm
  68. 92 92
      Demos/Delphi/bench/MegaglassCubeFm.pas
  69. 34 34
      Demos/Delphi/bench/Megaglasscube.dpr
  70. 873 0
      Demos/Delphi/bench/Megaglasscube.dproj
  71. 21 21
      Demos/Delphi/bench/Smoking.dpr
  72. 873 0
      Demos/Delphi/bench/Smoking.dproj
  73. BIN
      Demos/Delphi/bench/Smoking.jpg
  74. 183 182
      Demos/Delphi/bench/SmokingFm.dfm
  75. 71 71
      Demos/Delphi/bench/SmokingFm.pas
  76. 36 36
      Demos/Delphi/bench/Volcano.dpr
  77. 869 0
      Demos/Delphi/bench/Volcano.dproj
  78. BIN
      Demos/Delphi/bench/Volcano.jpg
  79. 148 147
      Demos/Delphi/bench/VolcanoFm.dfm
  80. 93 96
      Demos/Delphi/bench/VolcanoFm.pas
  81. 14 14
      Demos/Delphi/bench/Whirlwind.dpr
  82. 873 0
      Demos/Delphi/bench/Whirlwind.dproj
  83. BIN
      Demos/Delphi/bench/Whirlwind.jpg
  84. 82 82
      Demos/Delphi/bench/WhirlwindFm.dfm
  85. 120 120
      Demos/Delphi/bench/WhirlwindFm.pas
  86. 96 0
      Demos/Delphi/bench/aBench.groupproj
  87. 6 6
      Demos/Delphi/bench/aBench.htm
  88. 0 157
      Demos/Delphi/bench/canvas/canvas.dproj
  89. 0 167
      Demos/Delphi/bench/megacube/Megacube.dproj
  90. 0 167
      Demos/Delphi/bench/megaglasscube/Megaglasscube.dproj
  91. 0 167
      Demos/Delphi/bench/smoking/smoking.dproj
  92. 0 163
      Demos/Delphi/bench/volcano/volcano.dproj
  93. 0 167
      Demos/Delphi/bench/whirlwind/Whirlwind.dproj
  94. 2 2
      Demos/Delphi/cgshaders/CgBombShader.dpr
  95. 2 2
      Demos/Delphi/cgshaders/CgBombShader.dproj
  96. BIN
      Demos/Delphi/cgshaders/CgBombShader.jpg
  97. 1 2
      Demos/Delphi/cgshaders/CgBombShaderFm.dfm
  98. 24 23
      Demos/Delphi/cgshaders/CgBombShaderFm.pas
  99. 1 1
      Demos/Delphi/cgshaders/CgCellShader.dpr
  100. 12 12
      Demos/Delphi/cgshaders/CgCellShader.dproj

+ 2 - 1
AdvDemos/Delphi/Christmas/FMain.pas

@@ -41,7 +41,7 @@ uses
   GLS.Color,
   GLS.Sound,
   Sounds.BASS,
-  Import.BASS,
+  Imports.BASS,
   GLS.FireFX,
   GLS.FileWAV;
 
@@ -151,6 +151,7 @@ procedure TMain.FormCreate(Sender: TObject);
 var
   DataPath : String;
 begin
+
   Randomize;
   DataPath := ExtractFilePath(ParamStr(0)) + 'data';
   SetCurrentDir(DataPath);

+ 1 - 1
AdvDemos/Delphi/GLSViewer/Source/fGLAbout.dfm

@@ -2429,7 +2429,7 @@ inherited GLAbout: TGLAbout
       Width = 77
       Height = 17
       BevelOuter = bvNone
-      Caption = ' '#169'  2002, 2018'
+      Caption = ' '#169'  2002, 2021'
       TabOrder = 0
     end
   end

+ 4 - 1
AdvDemos/Delphi/GLSViewer/Source/fMain.pas

@@ -58,6 +58,7 @@ uses
   GLS.Graph,
   GLS.MeshBuilder,
   GLS.Navigator,
+  GLS.Utils,
 
   fGLForm,
   fGLAbout,
@@ -295,7 +296,9 @@ end;
 procedure TMainForm.FormCreate(Sender: TObject);
 begin
   inherited;
-  GetCurrentDir;
+  SetCurrentDir(ExtractFilePath(ParamStr(0)));
+  SetGLSceneMediaDir();
+
   NaviCube := TGLNaviCube.CreateAsChild(Scene.Objects);
   NaviCube.SceneViewer := snViewer;
   NaviCube.FPS := 30;

+ 2 - 2
Demos/CPP/cgshaders/celshading/Unit1.cpp

@@ -10,7 +10,7 @@
 #pragma link "GLS.AsyncTimer"
 #pragma link "GLS.BaseClasses"
 #pragma link "GLS.Cadencer"
-#pragma link "CGs.Shader"
+#pragma link "Cg.Shader"
 #pragma link "GLS.Coordinates"
 
 #pragma link "GLS.Material"
@@ -20,7 +20,7 @@
 #pragma link "GLS.SceneViewer"
 #pragma link "GLS.FileMD2"
 
-#pragma link "CGs.Shader"
+#pragma link "Cg.Shader"
 #pragma resource "*.dfm"
 TForm1 *Form1;
 //---------------------------------------------------------------------------

+ 1 - 1
Demos/CPP/cgshaders/celshading/Unit1.h

@@ -21,7 +21,7 @@
 #include "GLS.FileMD2.hpp"
 #include "GLS.Utils.hpp"
 #include "Imports.cgGL.hpp"
-#include "CGs.Shader.hpp"
+#include "Cg.Shader.hpp"
 
 //---------------------------------------------------------------------------
 class TForm1 : public TForm

+ 1 - 1
Demos/CPP/cgshaders/simple/Unit1.cpp

@@ -8,7 +8,7 @@
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma link "GLS.BaseClasses"
-#pragma link "CGs.Shader"
+#pragma link "Cg.Shader"
 
 #pragma link "GLS.Material"
 #pragma link "GLS.Scene"

+ 1 - 1
Demos/CPP/cgshaders/simple/Unit1.h

@@ -20,7 +20,7 @@
 #include "GLS.Graph.hpp"
 #include "GLS.Objects.hpp"
 #include "GLS.VectorFileObjects.hpp"
-#include "CGs.Shader.hpp"
+#include "Cg.Shader.hpp"
 #include "GLS.File3DS.hpp"
 #include "Imports.Cg.hpp"
 #include "Imports.cgGL.hpp"

+ 1 - 1
Demos/CPP/cgshaders/texturing/Unit1.h

@@ -18,7 +18,7 @@
 #include "GLS.Objects.hpp"
 #include "GLS.Scene.hpp"
 #include "GLS.SceneViewer.hpp"
-#include "CGs.Shader.hpp"
+#include "Cg.Shader.hpp"
 #include "JPeg.hpp"
 #include "GLS.Utils.hpp"
 //---------------------------------------------------------------------------

+ 1 - 1
Demos/CPP/glslshaders/BumpShader/Unit1.cpp

@@ -24,7 +24,7 @@
 #pragma link "GLS.FileSMD"
 #pragma link "GLS.FileMD2"
 #pragma link "GLS.File3DS"
-#pragma link "FormatDDSImage"
+#pragma link "Formats.DDSImage"
 #pragma link "GLS.FileMS3D"
 #pragma link "GLS.BaseClasses"
 #pragma link "GLSL.Shader"

+ 1 - 1
Demos/CPP/glslshaders/BumpShader/Unit1.h

@@ -25,7 +25,7 @@
 #include "GLS.FileSMD.hpp"
 #include "GLS.FileMD2.hpp"
 #include "GLS.File3DS.hpp"
-#include "FormatDDSImage.hpp"
+#include "Formats.DDSImage.hpp"
 #include "GLS.FileMS3D.hpp"
 
 #include "GLS.Utils.hpp"

+ 1 - 1
Demos/CPP/glslshaders/DiffuseSpecularShader/Unit1.cpp

@@ -25,7 +25,7 @@
 #pragma link "GLS.FileSMD"
 #pragma link "GLS.FileMD2"
 #pragma link "GLS.File3DS"
-#pragma link "FormatDDSImage"
+#pragma link "Formats.DDSImage"
 #pragma link "GLS.FileMS3D"
 
 #pragma resource "*.dfm"

+ 1 - 1
Demos/CPP/glslshaders/DiffuseSpecularShader/Unit1.h

@@ -27,7 +27,7 @@
 #include "GLS.FileSMD.hpp"
 #include "GLS.FileMD2.hpp"
 #include "GLS.File3DS.hpp"
-#include "FormatDDSImage.hpp"
+#include "Formats.DDSImage.hpp"
 #include "GLS.FileMS3D.hpp"
 #include "GLS.Utils.hpp"
 #include "GLSL.DiffuseSpecularShader.hpp"

+ 1 - 1
Demos/CPP/glslshaders/PostShader/Unit1.h

@@ -25,7 +25,7 @@
 #include "GLS.Utils.hpp"
 
 #include "GLSL.PostShaders.hpp"
-#include "GLSL.CGPostTransformationShader.hpp"
+#include "CGs.PostTransformationShader.hpp"
 
 // FileFormats
 #include "GLS.FileTGA.hpp"

+ 1 - 1
Demos/CPP/physics/OdeFurball/Unit1.h

@@ -15,7 +15,7 @@
 #include "GLS.SceneViewer.hpp"
 #include "GLS.Cadencer.hpp"
 
-#include "Import.ODE.hpp"
+#include "Imports.ODE.hpp"
 #include "Physics.ODEUtils.hpp"
 #include <GLS.Navigator.hpp>
 #include <GLS.ShadowPlane.hpp>

+ 1 - 1
Demos/CPP/physics/OdeRagdoll/Unit1.h

@@ -24,7 +24,7 @@
 #include "GLS.SceneViewer.hpp"
 #include "GLS.WindowsFont.hpp"
 #include "Physics.ODEUtils.hpp"
-#include "Import.ODE.hpp"
+#include "Imports.ODE.hpp"
 #include "Physics.ODERagdoll.hpp"
 
 //---------------------------------------------------------------------------

+ 111 - 104
Demos/CPP/rendering/SkyBox/Unit1.cpp

@@ -1,10 +1,10 @@
-//---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
 
 #include <vcl.h>
 #pragma hdrstop
 
 #include "Unit1.h"
-//---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma link "GLS.BaseClasses"
 #pragma link "GLS.Cadencer"
@@ -18,122 +18,129 @@
 #pragma link "GLS.SimpleNavigation"
 #pragma link "GLS.SkyDome"
 #pragma link "GLS.SceneViewer"
+#pragma link "GLS.Utils"
 #pragma resource "*.dfm"
 TForm1 *Form1;
-//---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
-	: TForm(Owner)
-{
+
+// ---------------------------------------------------------------------------
+__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
 }
-//---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
 
 TGLLibMaterial* __fastcall TForm1::LoadTexture(String Matname, String Filename)
 {
-  GLMaterialLibrary1->AddTextureMaterial(Matname, Filename);
-  GLMaterialLibrary1->Materials->Items[0]->Material->Texture->Disabled = false;
-  return GLMaterialLibrary1->Materials->GetLibMaterialByName(Matname);
-}
-void __fastcall TForm1::FormCreate(TObject *Sender)
-{
-	 SetGLSceneMediaDir();
-	 // --------------
-	 // Load graphics
-	 // --------------
-	 // Skybox textures
-	 LoadTexture("Left","icecraterlf.jpg");
-	GLMaterialLibrary1->Materials->Items[0]->Material->Texture->TextureMode = tmDecal;
-	 LoadTexture("Right","icecraterrt.jpg");
-	GLMaterialLibrary1->Materials->Items[1]->Material->Texture->TextureMode = tmDecal;
-	 LoadTexture("Top","icecraterup.jpg");
-	GLMaterialLibrary1->Materials->Items[2]->Material->Texture->TextureMode = tmDecal;
-	 LoadTexture("Bottom","icecraterdn.jpg");
-	GLMaterialLibrary1->Materials->Items[3]->Material->Texture->TextureMode = tmDecal;
-	 LoadTexture("Front","icecraterft.jpg");
-	GLMaterialLibrary1->Materials->Items[4]->Material->Texture->TextureMode = tmDecal;
-	 LoadTexture("Back","icecraterbk.jpg");
-	GLMaterialLibrary1->Materials->Items[5]->Material->Texture->TextureMode = tmDecal;
-	 // Add transparency to clouds
-	 LoadTexture("Clouds","Clouds.jpg")->Material->BlendingMode = bmTransparency;
-	 LoadTexture("Clouds","Clouds.jpg")->Material->FrontProperties->Diffuse->Alpha = 0.2;
-
-	  // scale the clouds texture
-	  LoadTexture("Clouds","Clouds.jpg")->TextureScale->X = 8;
-	  LoadTexture("Clouds","Clouds.jpg")->TextureScale->Y = 8;
-
-	 // bricks
-	  LoadTexture("Bricks","rawwall.jpg")->TextureScale->X = 1;
-	  LoadTexture("Bricks","rawwall.jpg")->TextureScale->Y = 32;
-	  LoadTexture("Bricks","rawwall.jpg")->Material->Texture->TextureMode = tmModulate;
-
-	  LoadTexture("Bricks2","marbletiles.jpg")->TextureScale->X = 6;
-	  LoadTexture("Bricks2","marbletiles.jpg")->TextureScale->Y = 1;
-	  LoadTexture("Bricks2","marbletiles.jpg")->Material->Texture->TextureMode = tmModulate;
-
-	 //Moon
-	 LoadTexture("Moon","unwrapped moon.jpg")->Material->Texture->TextureMode = tmModulate;
-
-
-	 //-----------------------------------------
-	 // Assign materials to objects
-	 //-----------------------------------------
-	 GLCube1->Material->LibMaterialName = "Bricks";
-	 GLCube11->Material->LibMaterialName  = "Bricks";
-	 GLCube111->Material->LibMaterialName = "Bricks";
-	 GLCube112->Material->LibMaterialName = "Bricks";
-	 GLCube2->Material->LibMaterialName = "Bricks2";
-	 GLCube21->Material->LibMaterialName = "Bricks2";
-	 GLCube21->Material->LibMaterialName = "Bricks2";
-	 GLCube211->Material->LibMaterialName = "Bricks2";
-	 GLCube212->Material->LibMaterialName = "Bricks2";
-	 GLSphere1->Material->LibMaterialName = "Moon";
-	 GLSphere2->Material->LibMaterialName = "Moon";
-
-	 GLUserInterface1->MouseLookActive = true;
-
+	GLMaterialLibrary1->AddTextureMaterial(Matname, Filename);
+	GLMaterialLibrary1->Materials->Items[0]
+		->Material->Texture->Disabled = false;
+	return GLMaterialLibrary1->Materials->GetLibMaterialByName(Matname);
 }
-//---------------------------------------------------------------------------
-
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
-		  const double newTime)
-{
-   // Make clouds Texture slide
-   GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->X =
-	  GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->X + deltaTime * 0.02;
-   GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->Y =
-	  GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")->TextureOffset->Y + deltaTime * 0.03;
-
-   // Rotate moons
-   GLSphere1->Turn(deltaTime * 7);
-   GLSphere2->Turn(deltaTime * 10);
 
-   HandleKeys(deltaTime);
-   GLUserInterface1->MouseLook();
-   GLUserInterface1->MouseUpdate();
+void __fastcall TForm1::FormCreate(TObject *Sender) {
+	SetGLSceneMediaDir();
+	TFileName PathCM = GetCurrentDir() + "\\Cubemaps";
+	SetCurrentDir(PathCM);
+
+	// Skybox textures
+	LoadTexture("Left", "icecraterlf.jpg");
+	GLMaterialLibrary1->Materials->Items[0]->Material->Texture->TextureMode =
+		tmDecal;
+	LoadTexture("Right", "icecraterrt.jpg");
+	GLMaterialLibrary1->Materials->Items[1]->Material->Texture->TextureMode =
+		tmDecal;
+	LoadTexture("Top", "icecraterup.jpg");
+	GLMaterialLibrary1->Materials->Items[2]->Material->Texture->TextureMode =
+		tmDecal;
+	LoadTexture("Bottom", "icecraterdn.jpg");
+	GLMaterialLibrary1->Materials->Items[3]->Material->Texture->TextureMode =
+		tmDecal;
+	LoadTexture("Front", "icecraterft.jpg");
+	GLMaterialLibrary1->Materials->Items[4]->Material->Texture->TextureMode =
+		tmDecal;
+	LoadTexture("Back", "icecraterbk.jpg");
+	GLMaterialLibrary1->Materials->Items[5]->Material->Texture->TextureMode =
+		tmDecal;
+	SetGLSceneMediaDir();  // back to madia dir with textures
+	// Add transparency to clouds
+
+	LoadTexture("Clouds", "Clouds.jpg")->Material->BlendingMode =
+		bmTransparency;
+	LoadTexture("Clouds", "Clouds.jpg")
+		->Material->FrontProperties->Diffuse->Alpha = 0.2;
+
+	// scale the clouds texture
+	LoadTexture("Clouds", "Clouds.jpg")->TextureScale->X = 8;
+	LoadTexture("Clouds", "Clouds.jpg")->TextureScale->Y = 8;
+
+	// bricks
+	LoadTexture("Bricks", "rawwall.jpg")->TextureScale->X = 1;
+	LoadTexture("Bricks", "rawwall.jpg")->TextureScale->Y = 32;
+	LoadTexture("Bricks", "rawwall.jpg")->Material->Texture->TextureMode =
+		tmModulate;
+
+	LoadTexture("Bricks2", "marbletiles.jpg")->TextureScale->X = 6;
+	LoadTexture("Bricks2", "marbletiles.jpg")->TextureScale->Y = 1;
+	LoadTexture("Bricks2", "marbletiles.jpg")->Material->Texture->TextureMode =
+		tmModulate;
+
+	// Moon
+	LoadTexture("Moon", "unwrapped moon.jpg")->Material->Texture->TextureMode =
+		tmModulate;
+
+	// -----------------------------------------
+	// Assign materials to objects
+	// -----------------------------------------
+	GLCube1->Material->LibMaterialName = "Bricks";
+	GLCube11->Material->LibMaterialName = "Bricks";
+	GLCube111->Material->LibMaterialName = "Bricks";
+	GLCube112->Material->LibMaterialName = "Bricks";
+	GLCube2->Material->LibMaterialName = "Bricks2";
+	GLCube21->Material->LibMaterialName = "Bricks2";
+	GLCube21->Material->LibMaterialName = "Bricks2";
+	GLCube211->Material->LibMaterialName = "Bricks2";
+	GLCube212->Material->LibMaterialName = "Bricks2";
+	GLSphere1->Material->LibMaterialName = "Moon";
+	GLSphere2->Material->LibMaterialName = "Moon";
+
+	GLUserInterface1->MouseLookActive = true;
 
-   GLSceneViewer1->Invalidate();
 }
-//---------------------------------------------------------------------------
+// ---------------------------------------------------------------------------
+
+void __fastcall TForm1::GLCadencer1Progress(TObject *Sender,
+	const double deltaTime, const double newTime) {
+	// Make clouds Texture slide
+	GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")
+		->TextureOffset->X = GLMaterialLibrary1->Materials->GetLibMaterialByName
+		("Clouds")->TextureOffset->X + deltaTime * 0.02;
+	GLMaterialLibrary1->Materials->GetLibMaterialByName("Clouds")
+		->TextureOffset->Y = GLMaterialLibrary1->Materials->GetLibMaterialByName
+		("Clouds")->TextureOffset->Y + deltaTime * 0.03;
+
+	// Rotate moons
+	GLSphere1->Turn(deltaTime * 7);
+	GLSphere2->Turn(deltaTime * 10);
+
+	HandleKeys(deltaTime);
+	GLUserInterface1->MouseLook();
+	GLUserInterface1->MouseUpdate();
+
+	GLSceneViewer1->Invalidate();
+}
+// ---------------------------------------------------------------------------
 
-void __fastcall TForm1::HandleKeys(double d)
-{
-	if (IsKeyDown('W')||IsKeyDown('Z'))
-		 GLCamera1->Move(d);
+void __fastcall TForm1::HandleKeys(double d) {
+	if (IsKeyDown('W') || IsKeyDown('Z'))
+		GLCamera1->Move(d);
 	if (IsKeyDown('S'))
-		 GLCamera1->Move(-d);
+		GLCamera1->Move(-d);
 	if (IsKeyDown('A') || IsKeyDown('A'))
-		 GLCamera1->Slide(-d);
+		GLCamera1->Slide(-d);
 	if (IsKeyDown('D'))
-		 GLCamera1->Slide(d);
+		GLCamera1->Slide(d);
 
-	if(IsKeyDown(VK_SPACE))
-	   Castle->Visible = !Castle->Visible;
-	if(IsKeyDown(VK_ESCAPE))
-	   Close();
+	if (IsKeyDown(VK_SPACE))
+		Castle->Visible = !Castle->Visible;
+	if (IsKeyDown(VK_ESCAPE))
+		Close();
 
 }
-
-
-
-
-
-

+ 771 - 4
Demos/CPP/rendering/basicsdl/Basicsdl.cbproj

@@ -1,7 +1,7 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <PropertyGroup>
         <ProjectGuid>{C25C88AD-0B3C-43E9-82D5-141347F91022}</ProjectGuid>
-        <ProjectVersion>15.4</ProjectVersion>
+        <ProjectVersion>18.7</ProjectVersion>
         <FrameworkType>VCL</FrameworkType>
         <AppType>Application</AppType>
         <MainSource>Basicsdl.cpp</MainSource>
@@ -83,7 +83,10 @@
         <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=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <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>
@@ -92,6 +95,9 @@
         <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>
@@ -115,12 +121,13 @@
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
         <UsingDelphiRTL>true</UsingDelphiRTL>
-        <ILINK_LibraryPath>$(BDSCOMMONDIR)\Dcp;$(BDS)\lib\win32\release\;D:\GLScene\Source\external;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+        <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</LinkPackageImports>
+        <BT_BuildType>Debug</BT_BuildType>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <Defines>_DEBUG;$(Defines)</Defines>
@@ -140,6 +147,7 @@
         </CppCompile>
         <PCHCompile Include="Basicsdl1.h">
             <BuildOrder>1</BuildOrder>
+            <PCH>true</PCH>
         </PCHCompile>
         <CppCompile Include="Unit1.cpp">
             <Form>DataModule1</Form>
@@ -211,7 +219,765 @@
                     <ProjectProperties Name="IndexFiles">False</ProjectProperties>
                 </ProjectProperties>
             </CPlusPlusBuilder.Personality>
-            <Deployment/>
+            <Deployment Version="3">
+                <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'" LocalName="$(BDS)\Redist\osx32\libcgcrtl.dylib" Class="DependencyModule">
+                    <Platform Name="OSX32">
+                        <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="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32260mt.dll" Class="DependencyModule">
+                    <Platform Name="Win32">
+                        <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'" 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)\bin\cc32260.dll" Class="DependencyModule">
+                    <Platform Name="Win32">
+                        <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="'$(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)\bin64\cc64260mt.dll" Class="DependencyModule">
+                    <Platform Name="Win64">
+                        <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'" LocalName="$(BDS)\Redist\osx64\libcgcrtl.dylib" Class="DependencyModule">
+                    <Platform Name="OSX64">
+                        <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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
+            </Deployment>
             <Platforms>
                 <Platform value="Win32">True</Platform>
                 <Platform value="Win64">False</Platform>
@@ -221,4 +987,5 @@
     </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>

+ 4 - 0
Demos/CPP/rendering/basicsdl/Unit1.cpp

@@ -41,6 +41,10 @@ void TDataModule1::DataModuleCreate(TObject *Sender)
 void TDataModule1::GLSDLViewer1EventPollDone(TObject *Sender)
 {
    SetGLSceneMediaDir();
+   TFileName PathCM = GetCurrentDir() + "\\Cubemaps";
+   SetCurrentDir(PathCM);
+
+
    if (!firstPassDone)
    {
 	  // Loads a texture map for the teapot

+ 1 - 1
Demos/CPP/specialsFX/ShadowmappingFBO/Unit1.h

@@ -24,7 +24,7 @@
 #include "GLS.VectorFileObjects.hpp"
 #include "GLS.SceneViewer.hpp"
 #include "OpenGLx.hpp"
-#include "FormatDDSImage.hpp"
+#include "Formats.DDSImage.hpp"
 #include <Vcl.ExtCtrls.hpp>
 //---------------------------------------------------------------------------
 class TForm1 : public TForm

+ 6 - 2
Demos/CPP/specialsFX/waterplane/Unit1.cpp

@@ -28,6 +28,12 @@ void TForm1::ClickWater(int x, int y)
 __fastcall TForm1::TForm1(TComponent * Owner):TForm(Owner)
 {
   SetGLSceneMediaDir();
+  GLWaterPlane1->Mask->LoadFromFile("basinMask.bmp");
+  GLHeightField1->Material->Texture->Image->LoadFromFile("clover.jpg");
+
+  TFileName PathCM = GetCurrentDir() + "\\Cubemaps";
+  SetCurrentDir(PathCM);
+
   // Load the cube map which is used both for environment and as reflection texture
   TGLTexture *t = GLMaterialLibrary1->Materials->Items[0]->Material->Texture;
   t->ImageClassName = __classid(TGLCubeMapImage)->ClassName();
@@ -42,8 +48,6 @@ __fastcall TForm1::TForm1(TComponent * Owner):TForm(Owner)
   img->Picture[CmtNY]->LoadFromFile("cm_bottom.jpg");
   img->Picture[CmtNZ]->LoadFromFile("cm_front.jpg");
 
-  GLWaterPlane1->Mask->LoadFromFile("basinMask.bmp");
-  GLHeightField1->Material->Texture->Image->LoadFromFile("clover.jpg");
 }
 
 //---------------------------------------------------------------------------

+ 0 - 1
Demos/CPP/specialsFX/waterplane/Unit1.dfm

@@ -11,7 +11,6 @@ object Form1: TForm1
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   OldCreateOrder = False
-  WindowState = wsMaximized
   PixelsPerInch = 96
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer

+ 0 - 212
Demos/Delphi/AllSandbox/fAllSandbox.dfm

@@ -1,212 +0,0 @@
-object FormAllSandox: TFormAllSandox
-  Left = 0
-  Top = 0
-  Caption = 'Sandox of demos'
-  ClientHeight = 415
-  ClientWidth = 768
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'Tahoma'
-  Font.Style = []
-  Menu = MainMenu
-  OldCreateOrder = False
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 121
-    Top = 0
-    Width = 647
-    Height = 415
-    PenAsTouch = False
-    Align = alClient
-    TabOrder = 0
-    ExplicitWidth = 507
-    ExplicitHeight = 592
-  end
-  object TreeView1: TTreeView
-    Left = 0
-    Top = 0
-    Width = 121
-    Height = 415
-    Align = alLeft
-    Indent = 19
-    TabOrder = 1
-    Items.NodeData = {
-      0313000000320000000000000000000000FFFFFFFFFFFFFFFF00000000000000
-      0004000000010A4200650068006100760069006F007500720073002C00000000
-      00000000000000FFFFFFFFFFFFFFFF0000000000000000000000000107440043
-      004500440065006D006F00340000000000000000000000FFFFFFFFFFFFFFFF00
-      0000000000000000000000010B4600500053004D006F00760065006D0065006E
-      007400340000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
-      000000010B500061007400680043006F006E00740072006F006C002A00000000
-      00000000000000FFFFFFFFFFFFFFFF000000000000000000000000010654006F
-      007200710075006500280000000000000000000000FFFFFFFFFFFFFFFF000000
-      0000000000060000000105420065006E00630068002A00000000000000000000
-      00FFFFFFFFFFFFFFFF0000000000000000000000000106430061006E00760061
-      0073002E0000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
-      00000001084D0065006700610043007500620065003800000000000000000000
-      00FFFFFFFFFFFFFFFF000000000000000000000000010D4D0065006700610047
-      006C0061007300730043007500620065002C0000000000000000000000FFFFFF
-      FFFFFFFFFF000000000000000000000000010753006D006F006B0069006E0067
-      002C0000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
-      00010756006F006C00630061006E006F00300000000000000000000000FFFFFF
-      FFFFFFFFFF000000000000000000000000010957006800690072006C00570069
-      006E006400300000000000000000000000FFFFFFFFFFFFFFFF00000000000000
-      0004000000010943006700530068006100640065007200730036000000000000
-      0000000000FFFFFFFFFFFFFFFF000000000000000000000000010C4300670042
-      006F006D006200530068006100640065007200360000000000000000000000FF
-      FFFFFFFFFFFFFF000000000000000000000000010C43006700430065006C006C
-      005300680061006400650072002E0000000000000000000000FFFFFFFFFFFFFF
-      FF000000000000000000000000010843006700530069006D0070006C00650030
-      0000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000001
-      09430067005400650078007400750072006500320000000000000000000000FF
-      FFFFFFFFFFFFFF000000000000000000000000010A43006F006C006C00690073
-      0069006F006E007300300000000000000000000000FFFFFFFFFFFFFFFF000000
-      000000000000000000010943006F006D0070007500740069006E006700300000
-      000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000010945
-      007800740072007500730069006F006E00340000000000000000000000FFFFFF
-      FFFFFFFFFF000000000000000000000000010B47006C0073006C005300680061
-      006400650072007300280000000000000000000000FFFFFFFFFFFFFFFF000000
-      0000000000000000000105470072006100700068003000000000000000000000
-      00FFFFFFFFFFFFFFFF000000000000000000000000010949006E007400650072
-      006600610063006500300000000000000000000000FFFFFFFFFFFFFFFF000000
-      00000000000000000001094D006100740065007200690061006C0073002A0000
-      000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000001064D
-      0065007300680065007300300000000000000000000000FFFFFFFFFFFFFFFF00
-      000000000000000000000001094D006F00760065006D0065006E00740073002C
-      0000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000001
-      075000680079007300690063007300300000000000000000000000FFFFFFFFFF
-      FFFFFF0000000000000000000000000109520065006E0064006500720069006E
-      006700300000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
-      000000010953006300720069007000740069006E006700280000000000000000
-      000000FFFFFFFFFFFFFFFF000000000000000000000000010553006F0075006E
-      006400300000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
-      00000001095300700065006300690061006C00460058002C0000000000000000
-      000000FFFFFFFFFFFFFFFF000000000000000000000000010753007000720069
-      00740065007300300000000000000000000000FFFFFFFFFFFFFFFF0000000000
-      0000000000000001095500740069006C0069007400690065007300}
-    ExplicitLeft = 64
-    ExplicitTop = 208
-    ExplicitHeight = 97
-  end
-  object GLScene: TGLScene
-    Left = 176
-    Top = 24
-  end
-  object MainMenu: TMainMenu
-    Left = 712
-    Top = 16
-    object File1: TMenuItem
-      Caption = '&File'
-      object New1: TMenuItem
-        Caption = '&New'
-      end
-      object Open1: TMenuItem
-        Caption = '&Open...'
-      end
-      object Save1: TMenuItem
-        Caption = '&Save'
-      end
-      object SaveAs1: TMenuItem
-        Caption = 'Save &As...'
-      end
-      object N2: TMenuItem
-        Caption = '-'
-      end
-      object Print1: TMenuItem
-        Caption = '&Print...'
-      end
-      object PrintSetup1: TMenuItem
-        Caption = 'P&rint Setup...'
-      end
-      object N1: TMenuItem
-        Caption = '-'
-      end
-      object Exit1: TMenuItem
-        Caption = 'E&xit'
-      end
-    end
-    object Edit1: TMenuItem
-      Caption = '&Edit'
-      object Undo1: TMenuItem
-        Caption = '&Undo'
-        ShortCut = 16474
-      end
-      object Repeat1: TMenuItem
-        Caption = '&Repeat <command>'
-      end
-      object N5: TMenuItem
-        Caption = '-'
-      end
-      object Cut1: TMenuItem
-        Caption = 'Cu&t'
-        ShortCut = 16472
-      end
-      object Copy1: TMenuItem
-        Caption = '&Copy'
-        ShortCut = 16451
-      end
-      object Paste1: TMenuItem
-        Caption = '&Paste'
-        ShortCut = 16470
-      end
-      object PasteSpecial1: TMenuItem
-        Caption = 'Paste &Special...'
-      end
-      object N4: TMenuItem
-        Caption = '-'
-      end
-      object Find1: TMenuItem
-        Caption = '&Find...'
-      end
-      object Replace1: TMenuItem
-        Caption = 'R&eplace...'
-      end
-      object GoTo1: TMenuItem
-        Caption = '&Go To...'
-      end
-      object N3: TMenuItem
-        Caption = '-'
-      end
-      object Links1: TMenuItem
-        Caption = 'Lin&ks...'
-      end
-      object Object1: TMenuItem
-        Caption = '&Object'
-      end
-    end
-    object Help1: TMenuItem
-      Caption = '&Help'
-      object Contents1: TMenuItem
-        Caption = '&Contents'
-      end
-      object SearchforHelpOn1: TMenuItem
-        Caption = '&Search for Help On...'
-      end
-      object HowtoUseHelp1: TMenuItem
-        Caption = '&How to Use Help'
-      end
-      object About1: TMenuItem
-        Caption = '&About...'
-      end
-    end
-  end
-  object GLCadencer: TGLCadencer
-    Scene = GLScene
-    Left = 248
-    Top = 24
-  end
-  object GLMaterialLibrary: TGLMaterialLibrary
-    Left = 328
-    Top = 24
-  end
-  object GLBitmapFont: TGLBitmapFont
-    GlyphsIntervalX = 0
-    GlyphsIntervalY = 0
-    Ranges = <>
-    Left = 424
-    Top = 24
-  end
-end

+ 3 - 3
Demos/Delphi/AllSandbox/AllSandbox.dpr → Demos/Delphi/aSandbox/Sandbox.dpr

@@ -1,14 +1,14 @@
-program AllSandbox;
+program Sandbox;
 
 uses
   Vcl.Forms,
-  fAllSandbox in 'fAllSandbox.pas' {FormAllSandox};
+  SandboxFm in 'SandboxFm.pas' {FormSandox};
 
 {$R *.res}
 
 begin
   Application.Initialize;
   Application.MainFormOnTaskbar := True;
-  Application.CreateForm(TFormAllSandox, FormAllSandox);
+  Application.CreateForm(TFormSandox, FormSandox);
   Application.Run;
 end.

+ 7 - 7
Demos/Delphi/AllSandbox/AllSandbox.dproj → Demos/Delphi/aSandbox/Sandbox.dproj

@@ -3,7 +3,7 @@
         <ProjectGuid>{72898470-6E4A-498D-8E46-2AB8B076202E}</ProjectGuid>
         <ProjectVersion>18.7</ProjectVersion>
         <FrameworkType>VCL</FrameworkType>
-        <MainSource>AllSandbox.dpr</MainSource>
+        <MainSource>Sandbox.dpr</MainSource>
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Debug</Config>
         <Platform Condition="'$(Platform)'==''">Win32</Platform>
@@ -57,7 +57,7 @@
         <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
         <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>
-        <SanitizedProjectName>AllSandbox</SanitizedProjectName>
+        <SanitizedProjectName>Sandbox</SanitizedProjectName>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
         <DCC_UsePackage>DBXSqliteDriver;RESTComponents;DataSnapServerMidas;DBXDb2Driver;DBXInterBaseDriver;vclactnband;vclFireDAC;emsclientfiredac;DataSnapFireDAC;svnui;tethering;FireDACADSDriver;DBXMSSQLDriver;GLScene_RT;DatasnapConnectorsFreePascal;FireDACMSSQLDriver;vcltouch;vcldb;bindcompfmx;svn;DBXOracleDriver;inetdb;FmxTeeUI;emsedge;FireDACIBDriver;fmx;fmxdae;vclib;GLScene_Physics_RT;FireDACDBXDriver;dbexpress;IndyCore;vclx;dsnap;DataSnapCommon;emsclient;FireDACCommon;bdertl;RESTBackendComponents;DataSnapConnectors;VCLRESTComponents;soapserver;vclie;bindengine;DBXMySQLDriver;FireDACOracleDriver;CloudService;FireDACMySQLDriver;DBXFirebirdDriver;FireDACCommonODBC;FireDACCommonDriver;DataSnapClient;inet;bindcompdbx;IndyIPCommon;GR32_D;vcl;DBXSybaseASEDriver;IndyIPServer;GLScene_Parallel_RT;IndySystem;FireDACDb2Driver;GEdgeIODB;dsnapcon;FireDACMSAccDriver;fmxFireDAC;FireDACInfxDriver;vclimg;TeeDB;FireDAC;emshosting;FireDACSqliteDriver;FireDACPgDriver;ibmonitor;FireDACASADriver;GLScene_Sounds_RT;DBXOdbcDriver;FireDACTDataDriver;FMXTee;soaprtl;DbxCommonDriver;GLScene_Cg_RT;ibxpress;Tee;DataSnapServer;xmlrtl;soapmidas;DataSnapNativeClient;fmxobj;vclwinx;ibxbindings;rtl;emsserverresource;DbxClientDriver;FireDACDSDriver;DBXSybaseASADriver;GR32_R;CustomIPTransport;vcldsnap;bindcomp;appanalytics;DBXInformixDriver;IndyIPClient;bindcompvcl;vcldbx;TeeUI;dbxcds;VclSmp;adortl;FireDACODBCDriver;DataSnapIndy10ServerTransport;GBComps;dsnapxml;DataSnapProviderClient;dbrtl;inetdbxpress;FireDACMongoDBDriver;IndyProtocols;GEdgeIO;fmxase;$(DCC_UsePackage)</DCC_UsePackage>
@@ -98,8 +98,8 @@
         <DelphiCompile Include="$(MainSource)">
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
-        <DCCReference Include="fAllSandbox.pas">
-            <Form>FormAllSandox</Form>
+        <DCCReference Include="SandboxFm.pas">
+            <Form>FormSandox</Form>
             <FormType>dfm</FormType>
         </DCCReference>
         <BuildConfiguration Include="Release">
@@ -120,13 +120,13 @@
         <BorlandProject>
             <Delphi.Personality>
                 <Source>
-                    <Source Name="MainSource">AllSandbox.dpr</Source>
+                    <Source Name="MainSource">Sandbox.dpr</Source>
                 </Source>
             </Delphi.Personality>
             <Deployment Version="3">
-                <DeployFile LocalName="Win32\Debug\AllSandbox.exe" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName="Win32\Debug\Sandbox.exe" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win32">
-                        <RemoteName>AllSandbox.exe</RemoteName>
+                        <RemoteName>Sandbox.exe</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>

+ 0 - 0
Demos/Delphi/AllSandbox/AllSandbox.htm → Demos/Delphi/aSandbox/Sandbox.htm


+ 263 - 0
Demos/Delphi/aSandbox/SandboxFm.dfm

@@ -0,0 +1,263 @@
+object FormSandox: TFormSandox
+  Left = 0
+  Top = 0
+  Caption = 'Sandox of demos'
+  ClientHeight = 398
+  ClientWidth = 819
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  Menu = MainMenu
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 185
+    Top = 0
+    Width = 634
+    Height = 398
+    PenAsTouch = False
+    Align = alClient
+    TabOrder = 0
+  end
+  object TreeView1: TTreeView
+    Left = 0
+    Top = 0
+    Width = 185
+    Height = 398
+    Align = alLeft
+    Indent = 19
+    TabOrder = 1
+    Items.NodeData = {
+      0313000000320000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+      0005000000010A4200650068006100760069006F007500720073002C00000000
+      00000000000000FFFFFFFFFFFFFFFF0000000000000000000000000107440043
+      004500440065006D006F00340000000000000000000000FFFFFFFFFFFFFFFF00
+      0000000000000000000000010B4600500053004D006F00760065006D0065006E
+      007400340000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
+      000000010B500061007400680043006F006E00740072006F006C002A00000000
+      00000000000000FFFFFFFFFFFFFFFF000000000000000000000000010654006F
+      0072007100750065001E0000000000000000000000FFFFFFFFFFFFFFFF000000
+      0000000000000000000100280000000000000000000000FFFFFFFFFFFFFFFF00
+      00000000000000060000000105420065006E00630068002A0000000000000000
+      000000FFFFFFFFFFFFFFFF0000000000000000000000000106430061006E0076
+      00610073002E0000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+      000000000001084D006500670061004300750062006500380000000000000000
+      000000FFFFFFFFFFFFFFFF000000000000000000000000010D4D006500670061
+      0047006C0061007300730043007500620065002C0000000000000000000000FF
+      FFFFFFFFFFFFFF000000000000000000000000010753006D006F006B0069006E
+      0067002C0000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
+      000000010756006F006C00630061006E006F00300000000000000000000000FF
+      FFFFFFFFFFFFFF000000000000000000000000010957006800690072006C0057
+      0069006E006400300000000000000000000000FFFFFFFFFFFFFFFF0000000000
+      0000000400000001094300670053006800610064006500720073003600000000
+      00000000000000FFFFFFFFFFFFFFFF000000000000000000000000010C430067
+      0042006F006D0062005300680061006400650072003600000000000000000000
+      00FFFFFFFFFFFFFFFF000000000000000000000000010C43006700430065006C
+      006C005300680061006400650072002E0000000000000000000000FFFFFFFFFF
+      FFFFFF000000000000000000000000010843006700530069006D0070006C0065
+      00300000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+      0001094300670054006500780074007500720065003200000000000000000000
+      00FFFFFFFFFFFFFFFF00000000000000000A000000010A43006F006C006C0069
+      00730069006F006E0073002C0000000000000000000000FFFFFFFFFFFFFFFF00
+      0000000000000000000000010742006F0078006500640069006E003000000000
+      00000000000000FFFFFFFFFFFFFFFF000000000000000000000000010942006F
+      007800530070006800650072006500320000000000000000000000FFFFFFFFFF
+      FFFFFF000000000000000000000000010A460061006300650076007300460061
+      00630065002C0000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+      000000000001074D006500730068004800690074003A00000000000000000000
+      00FFFFFFFFFFFFFFFF000000000000000000000000010E4F00630063006C0075
+      00730069006F006E0051007500650072007900320000000000000000000000FF
+      FFFFFFFFFFFFFF000000000000000000000000010A4F00630074007200650065
+      00440065006D006F002A0000000000000000000000FFFFFFFFFFFFFFFF000000
+      000000000000000000010652006100790042006F0078002C0000000000000000
+      000000FFFFFFFFFFFFFFFF000000000000000000000000010752006100790043
+      006100730074002A0000000000000000000000FFFFFFFFFFFFFFFF0000000000
+      0000000000000001065300700068006500720065003400000000000000000000
+      00FFFFFFFFFFFFFFFF000000000000000000000000010B54007200690061006E
+      0067006C00650042006F007800300000000000000000000000FFFFFFFFFFFFFF
+      FF000000000000000006000000010943006F006D0070007500740069006E0067
+      002A0000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+      0001064600610073007400460054002A0000000000000000000000FFFFFFFFFF
+      FFFFFF000000000000000000000000010646006C0075006900640073003A0000
+      000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000010E50
+      006F0073007400500072006F00630065007300730069006E0067003800000000
+      00000000000000FFFFFFFFFFFFFFFF000000000000000000000000010D530063
+      0061006C0061007200500072006F006400750063007400380000000000000000
+      000000FFFFFFFFFFFFFFFF000000000000000000000000010D530069006D0070
+      006C00650054006500780074007500720065003E0000000000000000000000FF
+      FFFFFFFFFFFFFF00000000000000000000000001105600650072007400650078
+      00470065006E00650072006100740069006F006E003000000000000000000000
+      00FFFFFFFFFFFFFFFF0000000000000000050000000109450078007400720075
+      00730069006F006E00320000000000000000000000FFFFFFFFFFFFFFFF000000
+      000000000000000000010A420065006E00640069006E006700430079006C0032
+      0000000000000000000000FFFFFFFFFFFFFFFF00000000000000000000000001
+      0A4300750074006F007500740053007400610072003200000000000000000000
+      00FFFFFFFFFFFFFFFF000000000000000000000000010A4E007500740073006E
+      0042006F006C0074007300260000000000000000000000FFFFFFFFFFFFFFFF00
+      000000000000000000000001045000610077006E003000000000000000000000
+      00FFFFFFFFFFFFFFFF0000000000000000000000000109540065006E00740061
+      0063006C0065007300340000000000000000000000FFFFFFFFFFFFFFFF000000
+      000000000007000000010B47006C0073006C0053006800610064006500720073
+      00320000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+      00010A420075006D007000530068006100640065007200380000000000000000
+      000000FFFFFFFFFFFFFFFF000000000000000000000000010D44006900660066
+      00750073006500530068006100640065007200360000000000000000000000FF
+      FFFFFFFFFFFFFF000000000000000000000000010C4C0069006E0069006E0067
+      00530068006100640065007200280000000000000000000000FFFFFFFFFFFFFF
+      FF00000000000000000000000001054F006300650061006E0032000000000000
+      0000000000FFFFFFFFFFFFFFFF000000000000000000000000010A50006F0073
+      007400530068006100640065007200300000000000000000000000FFFFFFFFFF
+      FFFFFF00000000000000000000000001095300680061006400650072004C0061
+      006200360000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
+      000000010C53006B00790062006F007800530068006100640065007200280000
+      000000000000000000FFFFFFFFFFFFFFFF000000000000000005000000010547
+      007200610070006800240000000000000000000000FFFFFFFFFFFFFFFF000000
+      0000000000000000000103460078007900320000000000000000000000FFFFFF
+      FFFFFFFFFF000000000000000000000000010A48006900670068007400460069
+      0065006C0064002A0000000000000000000000FFFFFFFFFFFFFFFF0000000000
+      00000000000000010650006F0069006E00740073003200000000000000000000
+      00FFFFFFFFFFFFFFFF000000000000000000000000010A500072006F006A0065
+      006300740069006F006E002C0000000000000000000000FFFFFFFFFFFFFFFF00
+      00000000000000000000000107530070006C0069006E00650073003000000000
+      00000000000000FFFFFFFFFFFFFFFF000000000000000000000000010949006E
+      007400650072006600610063006500300000000000000000000000FFFFFFFFFF
+      FFFFFF00000000000000000000000001094D006100740065007200690061006C
+      0073002A0000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
+      00000001064D0065007300680065007300300000000000000000000000FFFFFF
+      FFFFFFFFFF00000000000000000000000001094D006F00760065006D0065006E
+      00740073002C0000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+      0000000000010750006800790073006900630073003000000000000000000000
+      00FFFFFFFFFFFFFFFF0000000000000000000000000109520065006E00640065
+      00720069006E006700300000000000000000000000FFFFFFFFFFFFFFFF000000
+      000000000000000000010953006300720069007000740069006E006700280000
+      000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000010553
+      006F0075006E006400300000000000000000000000FFFFFFFFFFFFFFFF000000
+      00000000000000000001095300700065006300690061006C00460058002C0000
+      000000000000000000FFFFFFFFFFFFFFFF000000000000000000000000010753
+      00700072006900740065007300300000000000000000000000FFFFFFFFFFFFFF
+      FF00000000000000000000000001095500740069006C00690074006900650073
+      00}
+  end
+  object GLScene: TGLScene
+    Left = 176
+    Top = 24
+  end
+  object MainMenu: TMainMenu
+    Left = 712
+    Top = 16
+    object File1: TMenuItem
+      Caption = '&File'
+      object New1: TMenuItem
+        Caption = '&New'
+      end
+      object Open1: TMenuItem
+        Caption = '&Open...'
+      end
+      object Save1: TMenuItem
+        Caption = '&Save'
+      end
+      object SaveAs1: TMenuItem
+        Caption = 'Save &As...'
+      end
+      object N2: TMenuItem
+        Caption = '-'
+      end
+      object Print1: TMenuItem
+        Caption = '&Print...'
+      end
+      object PrintSetup1: TMenuItem
+        Caption = 'P&rint Setup...'
+      end
+      object N1: TMenuItem
+        Caption = '-'
+      end
+      object Exit1: TMenuItem
+        Caption = 'E&xit'
+      end
+    end
+    object Edit1: TMenuItem
+      Caption = '&Edit'
+      object Undo1: TMenuItem
+        Caption = '&Undo'
+        ShortCut = 16474
+      end
+      object Repeat1: TMenuItem
+        Caption = '&Repeat <command>'
+      end
+      object N5: TMenuItem
+        Caption = '-'
+      end
+      object Cut1: TMenuItem
+        Caption = 'Cu&t'
+        ShortCut = 16472
+      end
+      object Copy1: TMenuItem
+        Caption = '&Copy'
+        ShortCut = 16451
+      end
+      object Paste1: TMenuItem
+        Caption = '&Paste'
+        ShortCut = 16470
+      end
+      object PasteSpecial1: TMenuItem
+        Caption = 'Paste &Special...'
+      end
+      object N4: TMenuItem
+        Caption = '-'
+      end
+      object Find1: TMenuItem
+        Caption = '&Find...'
+      end
+      object Replace1: TMenuItem
+        Caption = 'R&eplace...'
+      end
+      object GoTo1: TMenuItem
+        Caption = '&Go To...'
+      end
+      object N3: TMenuItem
+        Caption = '-'
+      end
+      object Links1: TMenuItem
+        Caption = 'Lin&ks...'
+      end
+      object Object1: TMenuItem
+        Caption = '&Object'
+      end
+    end
+    object Help1: TMenuItem
+      Caption = '&Help'
+      object Contents1: TMenuItem
+        Caption = '&Contents'
+      end
+      object SearchforHelpOn1: TMenuItem
+        Caption = '&Search for Help On...'
+      end
+      object HowtoUseHelp1: TMenuItem
+        Caption = '&How to Use Help'
+      end
+      object About1: TMenuItem
+        Caption = '&About...'
+      end
+    end
+  end
+  object GLCadencer: TGLCadencer
+    Scene = GLScene
+    Left = 248
+    Top = 24
+  end
+  object GLMaterialLibrary: TGLMaterialLibrary
+    Left = 328
+    Top = 24
+  end
+  object GLBitmapFont: TGLBitmapFont
+    GlyphsIntervalX = 0
+    GlyphsIntervalY = 0
+    Ranges = <>
+    Left = 424
+    Top = 24
+  end
+end

+ 19 - 6
Demos/Delphi/AllSandbox/fAllSandbox.pas → Demos/Delphi/aSandbox/SandboxFm.pas

@@ -1,15 +1,28 @@
-unit fAllSandbox;
+unit SandboxFm;
 
 interface
 
 uses
-  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
-  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus, Vcl.ComCtrls,
-  GLS.SceneViewer, GLS.BaseClasses, GLS.Scene, GLS.Cadencer, GLS.BitmapFont,
+  Winapi.Windows,
+  Winapi.Messages,
+  System.SysUtils,
+  System.Variants,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.Menus,
+  Vcl.ComCtrls,
+  GLS.SceneViewer,
+  GLS.BaseClasses,
+  GLS.Scene,
+  GLS.Cadencer,
+  GLS.BitmapFont,
   GLS.Material;
 
 type
-  TFormAllSandox = class(TForm)
+  TFormSandox = class(TForm)
     GLScene: TGLScene;
     GLSceneViewer1: TGLSceneViewer;
     TreeView1: TTreeView;
@@ -54,7 +67,7 @@ type
   end;
 
 var
-  FormAllSandox: TFormAllSandox;
+  FormSandox: TFormSandox;
 
 implementation
 

+ 0 - 72
Demos/Delphi/behaviours/Behaviours.groupproj

@@ -1,72 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{2E3221B1-5B2C-430B-8087-B9633A920509}</ProjectGuid>
-    </PropertyGroup>
-    <ItemGroup>
-        <Projects Include="DCEDemo\dceDemo.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="FPSMovement\FPSMovement.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="pathcontrol\PathControl.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="torque\Torque.dproj">
-            <Dependencies/>
-        </Projects>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Default.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Default.Personality/>
-        </BorlandProject>
-    </ProjectExtensions>
-    <Target Name="dceDemo">
-        <MSBuild Projects="DCEDemo\dceDemo.dproj"/>
-    </Target>
-    <Target Name="dceDemo:Clean">
-        <MSBuild Projects="DCEDemo\dceDemo.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="dceDemo:Make">
-        <MSBuild Projects="DCEDemo\dceDemo.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="FPSMovement">
-        <MSBuild Projects="FPSMovement\FPSMovement.dproj"/>
-    </Target>
-    <Target Name="FPSMovement:Clean">
-        <MSBuild Projects="FPSMovement\FPSMovement.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="FPSMovement:Make">
-        <MSBuild Projects="FPSMovement\FPSMovement.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="PathControl">
-        <MSBuild Projects="pathcontrol\PathControl.dproj"/>
-    </Target>
-    <Target Name="PathControl:Clean">
-        <MSBuild Projects="pathcontrol\PathControl.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="PathControl:Make">
-        <MSBuild Projects="pathcontrol\PathControl.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="Torque">
-        <MSBuild Projects="torque\Torque.dproj"/>
-    </Target>
-    <Target Name="Torque:Clean">
-        <MSBuild Projects="torque\Torque.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="Torque:Make">
-        <MSBuild Projects="torque\Torque.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="Build">
-        <CallTarget Targets="dceDemo;FPSMovement;PathControl;Torque"/>
-    </Target>
-    <Target Name="Clean">
-        <CallTarget Targets="dceDemo:Clean;FPSMovement:Clean;PathControl:Clean;Torque:Clean"/>
-    </Target>
-    <Target Name="Make">
-        <CallTarget Targets="dceDemo:Make;FPSMovement:Make;PathControl:Make;Torque:Make"/>
-    </Target>
-    <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
-</Project>

+ 0 - 187
Demos/Delphi/behaviours/DCEDemo/dceDemo.dproj

@@ -1,187 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{FAB43D53-1C81-4C54-9AAB-0ED33D9611C3}</ProjectGuid>
-        <MainSource>dceDemo.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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;Winapi;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_Locale>1049</VerInfo_Locale>
-        <DCC_N>false</DCC_N>
-        <DCC_S>false</DCC_S>
-        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
-        <DCC_K>false</DCC_K>
-        <DCC_E>false</DCC_E>
-        <SanitizedProjectName>dceDemo</SanitizedProjectName>
-        <DCC_F>false</DCC_F>
-    </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>
-        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <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>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-        <BT_BuildType>Debug</BT_BuildType>
-    </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>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <Icon_MainIcon>dceDemo_Icon.ico</Icon_MainIcon>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_Optimize>false</DCC_Optimize>
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <DCC_Define>madExcept;$(DCC_Define)</DCC_Define>
-        <DCC_MapFile>3</DCC_MapFile>
-        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-        <DCC_Define>madExcept;$(DCC_Define)</DCC_Define>
-        <DCC_MapFile>3</DCC_MapFile>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">dceDemo.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 0 - 163
Demos/Delphi/behaviours/DCEDemo/dceDemo.mes

@@ -1,163 +0,0 @@
-[GeneralSettings]
-MesVersion=4
-HandleExceptions=1
-LinkInCode=1
-AppendMapFileToBinary=1
-NoOwnMadExceptSettings=0
-CheckFileCrc=1
-CheckForFrozenMainThread=0
-FreezeTimeout=60000
-ReportLeaks=0
-WindowsLogo=0
-CrashOnBuffer=0
-CrashOnUnderrun=0
-AutomaticallySaveBugReport=1
-AutoSaveBugReportIfNotSent=1
-AutomaticallyMailBugReport=0
-AutoMailProgressBox=0
-CopyBugReportToClipboard=0
-SuspendAllRunningThreads=0
-ShowPleaseWaitBox=1
-PleaseWaitIcon=plwait1
-AutomaticallyContinueApplication=0
-AutomaticallyRestartApplication=0
-AutomaticallyCloseApplication=0
-SendInBackground=1
-SendHelper=196608
-Send32Icon=send321
-UploadViaHttp=0
-HttpServer=
-HttpSsl=0
-HttpPort=0
-HttpAccount=
-HttpPassword=
-UploadToFogBugz=0
-UploadToBugZilla=0
-UploadToMantis=0
-BugTrackerAccount=
-BugTrackerPassword=
-BugTrackerProject=
-BugTrackerArea=
-BugTrackerAssignTo=
-MailAsSmtpServer=0
-MailAsSmtpClient=0
-SmtpServer=
-SmtpSsl=0
-SmtpTls=0
-SmtpPort=0
-SmtpAccount=
-SmtpPassword=
-MailViaMapi=1
-MailViaMailto=1
-MailAddress=
-BugReportFile=bugreport.txt
-AttachBugReport=1
-AttachBugReportFile=1
-DeleteBugReportFile=1
-BugReportSendAs=bugreport.txt
-BugReportZip=
-ScreenShotDepth=8
-ScreenShotAppOnly=0
-ScreenShotSendAs=screenshot.png
-ScreenShotZip=
-AdditionalAttachments=
-AppendBugReports=1
-BugReportFileSize=100000
-DontSaveDuplicateExceptions=1
-DontSaveDuplicateFreezings=1
-DuplicateExceptionDefinition=1
-DuplicateFreezeDefinition=2
-ShowExceptionBox=1
-OkBtnText=&OK
-DetailsBtnText=&Details
-PleaseWaitTitle=Information
-PleaseWaitText=Please wait a moment...
-BugTrackerTitle=%25appname%25, %25exceptMsg%25
-BugTrackerDescr=error details: %0d%0a%25errorDetails%25
-MailSubject=bug report
-MailBody=please find the bug report attached
-SendBoxTitle=Sending bug report...
-PrepareAttachMsg=Preparing attachments...
-MxLookupMsg=Searching for mail server...
-ConnectMsg=Connecting to server...
-SendMailMsg=Sending mail...
-FieldsMsg=Setting fields...
-SendAttachMsg=Sending attachments...
-SendFinalizeMsg=Finalizing...
-MailFailureMsg=Sorry, sending the bug report didn't work.
-VersionVariable=
-[ExceptionBox]
-ShowButtonMailBugReport=1
-ShowButtonSaveBugReport=0
-ShowButtonPrintBugReport=0
-ShowButtonShowBugReport=1
-ShowButtonContinueApplication=1
-ShowButtonRestartApplication=1
-ShowButtonCloseApplication=1
-IconButtonSendBugReport=send1
-IconButtonSaveBugReport=save1
-IconButtonPrintBugReport=print1
-IconButtonShowBugReport=show1
-IconButtonContinueApplication=continue1
-IconButtonCantContinueApplication=cantContinue1
-IconButtonRestartApplication=restart1
-IconButtonCloseApplication=close1
-FocusedButton=0
-SendAssistant=SendAssistant
-SaveAssistant=SaveAssistant
-PrintAssistant=PrintAssistant
-AutomaticallyShowBugReport=0
-NoOwnerDrawButtons=0
-BigExceptionIcon=big1
-TitleBar=%25appname%25
-ExceptionMessage=An error occurred in the application.
-FrozenMessage=The application seems to be frozen.
-BitFaultMsg=The file "%25modname%25" seems to be corrupt!
-MailBugReportText=send bug report
-SaveBugReportText=save bug report
-PrintBugReportText=print bug report
-ShowBugReportText=show bug report
-ContinueApplicationText=continue application
-RestartApplicationText=restart application
-CloseApplicationText=close application
-[BugReport]
-ListThreads=1
-ListModules=1
-ListHardware=1
-ShowCpuRegisters=1
-ShowStackDump=1
-Disassembly=1
-HideUglyItems=0
-ShowRelativeAddrs=1
-ShowRelativeLines=1
-FormatDisassembly=0
-LimitDisassembly=5
-EnabledPlugins=modules|processes|hardware
-[Filters]
-Filter1ExceptionClasses=EDBEditError
-Filter1DontCreateBugReport=1
-Filter1DontCreateScreenshot=1
-Filter1DontSuspendThreads=1
-Filter1DontCallHandlers=1
-Filter1ShowBox=3
-Filter1Assis=
-Filter2ExceptionClasses=
-Filter2DontCreateBugReport=0
-Filter2DontCreateScreenshot=0
-Filter2DontSuspendThreads=0
-Filter2DontCallHandlers=0
-Filter2ShowBox=0
-Filter2Assis=
-GeneralDontCreateBugReport=0
-GeneralDontCreateScreenshot=0
-GeneralDontSuspendThreads=0
-GeneralDontCallHandlers=0
-GeneralShowBox=0
-GeneralAssis=
-[Assistants]
-Assistant1=SendAssistant|Send Assistant|ContactForm|DetailsForm|ScrShotForm
-Assistant2=SaveAssistant|Save Assistant|ContactForm|DetailsForm
-Assistant3=PrintAssistant|Print Assistant|ContactForm|DetailsForm
-Forms1=TPF0%0eTMEContactForm%0bContactForm%07Message%0c%13%00%00%00Contact Information%08MinWidth%04%00%00%00%00%08OnAction%0c%1b%00%00%00madExcept.HandleContactForm%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c%0a%00%00%00your name:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%08NameEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%09%0aOutputName%0c%0c%00%00%00contact name%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%08INVLabel%06Label2%07Caption%0c%0b%00%00%00your email:%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%09EmailEdit%07Colored%09%07Enabled%09%05Lines%04%01%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00contact email%0aOutputType%07%09nvoHeader%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%0bINVCheckBox%08MemCheck%07Caption%0c%0b%00%00%00remember me%07Checked%08%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%00
-Forms2=TPF0%0eTMEDetailsForm%0bDetailsForm%07Message%0c%0d%00%00%00Error Details%08MinWidth%04%00%00%00%00%08OnAction%0c%00%00%00%00%05Timer%04%00%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%08INVLabel%06Label1%07Caption%0c,%00%00%00what were you doing when the error occurred?%07Enabled%09%07Spacing%04%00%00%00%00%00%00%07INVEdit%0bDetailsMemo%07Colored%09%07Enabled%09%05Lines%04%09%00%00%00%08Optional%08%0aOutputName%0c%0d%00%00%00error details%0aOutputType%07%0dnvoOwnSection%07Spacing%04%00%00%00%00%04Text%0c%00%00%00%00%05Valid%09%00%00%00
-Forms3=TPF0%0eTMEScrShotForm%0bScrShotForm%0dActiveControl%07%0bContinueBtn%07Message%0c%18%00%00%00Screenshot Configuration%08MinWidth%04%00%00%00%00%08OnAction%0c%1e%00%00%00madExcept.HandleScreenshotForm%05Timer%04%fa%00%00%00%00%09INVButton%0bContinueBtn%07Caption%0c%08%00%00%00Continue%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%07SkipBtn%07Caption%0c%04%00%00%00Skip%07Enabled%08%0bNoOwnerDraw%08%07Visible%09%00%00%09INVButton%09CancelBtn%07Caption%0c%06%00%00%00Cancel%07Enabled%09%0bNoOwnerDraw%08%07Visible%09%00%00%0bINVCheckBox%0bAttachCheck%07Caption%0c%25%00%00%00attach a screenshot to the bug report%07Checked%09%07Enabled%09%0aOutputName%0c%00%00%00%00%07Spacing%04%00%00%00%00%00%00%08INVImage%0aScrShotImg%06Border%09%09Clickable%09%07Enabled%09%04File%0c%00%00%00%00%06Height%04%00%00%00%00%07Spacing%04%00%00%00%00%05Width%04%00%00%00%00%00%00%08INVLabel%06Label1%07Caption%0c%15%00%00%00(click to edit image)%07Enabled%09%07Spacing%04%00%00%00%00%00%00%00

+ 24 - 24
Demos/Delphi/behaviours/DCEDemo/dceDemo.dpr → Demos/Delphi/behaviours/DceDemo.dpr

@@ -1,24 +1,24 @@
-(* This is a basic use for the Dynamic Collision Engine (DCE) by Lucas Goraieb.
-
-     The engine pretty much works by creating a TGLDCEManager, and several
-     TGLDCEDynamic and TGLDCEStatic behaviours on the objects that should
-     interact. Each object can be either an ellipsoid, cube, freeForm or terrain,
-     have different sizes and friction, respond differently to collisions, etc.
-
-     This means your next FPS project is pretty much done: All you have to do
-     is keep loading object files into freeForms and letting DCE do the trick
-     for you. The only "real" code in this demo is inside the onProgress event
-     of the cadencer, that takes care of input.
-*)
-program dceDemo;
-uses
-  Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.res}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+(* This is a basic use for the Dynamic Collision Engine (DCE) by Lucas Goraieb.
+
+     The engine pretty much works by creating a TGLDCEManager, and several
+     TGLDCEDynamic and TGLDCEStatic behaviours on the objects that should
+     interact. Each object can be either an ellipsoid, cube, freeForm or terrain,
+     have different sizes and friction, respond differently to collisions, etc.
+
+     This means your next FPS project is pretty much done: All you have to do
+     is keep loading object files into freeForms and letting DCE do the trick
+     for you. The only "real" code in this demo is inside the onProgress event
+     of the cadencer, that takes care of input.
+*)
+program DceDemo;
+uses
+  Forms,
+  DceFm in 'DceFm.pas' {FormDCE};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TFormDCE, FormDCE);
+  Application.Run;
+end.

+ 894 - 0
Demos/Delphi/behaviours/DceDemo.dproj

@@ -0,0 +1,894 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{FAB43D53-1C81-4C54-9AAB-0ED33D9611C3}</ProjectGuid>
+        <MainSource>DceDemo.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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;Winapi;$(DCC_Namespace)</DCC_Namespace>
+        <VerInfo_Locale>1049</VerInfo_Locale>
+        <DCC_N>false</DCC_N>
+        <DCC_S>false</DCC_S>
+        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
+        <DCC_K>false</DCC_K>
+        <DCC_E>false</DCC_E>
+        <SanitizedProjectName>DceDemo</SanitizedProjectName>
+        <DCC_F>false</DCC_F>
+    </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>
+        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <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>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+        <BT_BuildType>Debug</BT_BuildType>
+    </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>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <Icon_MainIcon>DCEDemo\dceDemo_Icon.ico</Icon_MainIcon>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+        <Icon_MainIcon>DCEDemo\DCEDemo\dceDemo_Icon.ico</Icon_MainIcon>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <DCC_Define>madExcept;$(DCC_Define)</DCC_Define>
+        <DCC_MapFile>3</DCC_MapFile>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+        <DCC_Define>madExcept;$(DCC_Define)</DCC_Define>
+        <DCC_MapFile>3</DCC_MapFile>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="DceFm.pas">
+            <Form>FormDCE</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">DceDemo.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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="Win32\Debug\DceDemo.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>DceDemo.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

BIN
Demos/Delphi/behaviours/DceDemo.jpg


+ 197 - 198
Demos/Delphi/behaviours/DCEDemo/Unit1.dfm → Demos/Delphi/behaviours/DceFm.dfm

@@ -1,198 +1,197 @@
-object Form1: TForm1
-  Left = 192
-  Top = 114
-  Caption = 'GLScene Dynamic Collision Engine'
-  ClientHeight = 444
-  ClientWidth = 600
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  KeyPreview = True
-  OldCreateOrder = False
-  Position = poScreenCenter
-  WindowState = wsMaximized
-  OnKeyDown = FormKeyDown
-  OnShow = FormShow
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 0
-    Top = 0
-    Width = 600
-    Height = 444
-    Camera = GLCamera1
-    Buffer.FogEnvironment.FogStart = 50.000000000000000000
-    Buffer.FogEnvironment.FogEnd = 250.000000000000000000
-    Buffer.BackgroundColor = clBlack
-    Buffer.FogEnable = True
-    FieldOfView = 154.614669799804700000
-    PenAsTouch = False
-    Align = alClient
-    OnMouseMove = GLSceneViewer1MouseMove
-    TabOrder = 0
-  end
-  object GLScene1: TGLScene
-    Left = 24
-    Top = 8
-    object GLLightSource2: TGLLightSource
-      ConstAttenuation = 1.000000000000000000
-      Position.Coordinates = {00000000000048420000C8420000803F}
-      SpotCutOff = 180.000000000000000000
-    end
-    object Terrain: TGLTerrainRenderer
-      Material.MaterialLibrary = GLMatlLib
-      HeightDataSource = GLBitmapHDS1
-      TilesPerTexture = 1.000000000000000000
-      ContourWidth = 0
-      BehavioursData = {
-        0458434F4C02010201060C54474C444345537461746963020102001200000000
-        0200060D474C4443454D616E61676572310203020009090F0000A0410F000000
-        00020008}
-    end
-    object Ground: TGLPlane
-      Material.FrontProperties.Diffuse.Color = {D3D2D23EC7C6463FC7C6C63E0000803F}
-      Material.MaterialLibrary = GLMatlLib
-      Direction.Coordinates = {000000000000803F0000000000000000}
-      Position.Coordinates = {00000000000010C0000000000000803F}
-      Scale.Coordinates = {0000FA430000FA430000803F00000000}
-      Up.Coordinates = {00000000000000000000803F00000000}
-      Visible = False
-      Height = 1.000000000000000000
-      Width = 1.000000000000000000
-      XTiles = 50
-      YTiles = 50
-      Style = []
-      BehavioursData = {
-        0458434F4C02010201060C54474C444345537461746963020102001200000000
-        0200060D474C4443454D616E61676572310201020009080F0000A0410F000000
-        00020008}
-    end
-    object Balls: TGLDummyCube
-      CubeSize = 1.000000000000000000
-    end
-    object moMushroom: TGLFreeForm
-      Material.FrontProperties.Diffuse.Color = {A9A8283F8B8A8A3E9190103E0000803F}
-      Position.Coordinates = {00000000000000000000A0C00000803F}
-      NormalsOrientation = mnoInvert
-      BehavioursData = {
-        0458434F4C02010201060C54474C444345537461746963020102001200000000
-        0200060D474C4443454D616E61676572310202020009090F0000803F0F000000
-        00020008}
-    end
-    object Mushrooms: TGLDummyCube
-      CubeSize = 1.000000000000000000
-    end
-    object GLCube1: TGLCube
-      Material.FrontProperties.Diffuse.Color = {B1B0B03D9998183F8180003D0000803F}
-      Direction.Coordinates = {00000000CAA8073FAE19593F00000000}
-      PitchAngle = 32.000000000000000000
-      Position.Coordinates = {0000804000000000000020410000803F}
-      Scale.Coordinates = {0000A041000080400000204100000000}
-      Up.Coordinates = {00000000AE19593FCAA807BF00000000}
-      BehavioursData = {
-        0458434F4C02010201060C54474C444345537461746963020102001200000000
-        0200060D474C4443454D616E61676572310201020009090F0000F0410F000000
-        00020008}
-    end
-    object GLDirectOpenGL1: TGLDirectOpenGL
-      Visible = False
-      UseBuildList = False
-      OnRender = GLDirectOpenGL1Render
-      Blend = False
-    end
-    object Player: TGLDummyCube
-      Position.Coordinates = {000000000000803F000000000000803F}
-      CubeSize = 1.000000000000000000
-      BehavioursData = {
-        0458434F4C02010201060D54474C44434544796E616D69630201020012000000
-        000200060D474C4443454D616E616765723102000909090F0000003F0F000000
-        00020502000200090000803F0000A03F0000803F00000000}
-      object GLCamera1: TGLCamera
-        DepthOfView = 300.000000000000000000
-        FocalLength = 50.000000000000000000
-        TargetObject = Player
-        Position.Coordinates = {0000000000000040000040C00000803F}
-        object GLLightSource1: TGLLightSource
-          ConstAttenuation = 1.000000000000000000
-          SpotCutOff = 180.000000000000000000
-        end
-      end
-      object GLActor1: TGLActor
-        Material.MaterialLibrary = GLMatlLib
-        Interval = 100
-      end
-      object GLSphere1: TGLSphere
-        Material.FrontProperties.Ambient.Color = {0000803F9190903D000000000000803F}
-        Material.FrontProperties.Diffuse.Color = {BFBE3E3F00000000000000006DE77B3E}
-        Material.FrontProperties.Emission.Color = {0000000000000000A1A0203D0000803F}
-        Material.BlendingMode = bmAdditive
-        Radius = 1.000000000000000000
-      end
-    end
-    object GLHUDText1: TGLHUDText
-      Position.Coordinates = {0000804000000000000000000000803F}
-      BitmapFont = GLWindowsBitmapFont1
-      Rotation = 0.000000000000000000
-    end
-    object HelpShadow: TGLHUDText
-      Position.Coordinates = {000030410000F841000000000000803F}
-      BitmapFont = GLWindowsBitmapFont1
-      Rotation = 0.000000000000000000
-      ModulateColor.Color = {A19E9E3ECFBC3C3ECFBC3C3E0000803F}
-    end
-    object Help: TGLHUDText
-      Position.Coordinates = {000020410000F041000000000000803F}
-      BitmapFont = GLWindowsBitmapFont1
-      Rotation = 0.000000000000000000
-    end
-  end
-  object GLCadencer1: TGLCadencer
-    Scene = GLScene1
-    Enabled = False
-    OnProgress = GLCadencer1Progress
-    Left = 96
-    Top = 8
-  end
-  object GLDCEManager1: TGLDCEManager
-    Gravity = -30.000000000000000000
-    WorldScale = 1.000000000000000000
-    MovimentScale = 1.000000000000000000
-    StandardiseLayers = ccsDCEStandard
-    ManualStep = False
-    Left = 192
-    Top = 8
-  end
-  object GLBitmapHDS1: TGLBitmapHDS
-    MaxPoolSize = 0
-    Left = 24
-    Top = 72
-  end
-  object GLMatlLib: TGLMaterialLibrary
-    Left = 96
-    Top = 72
-  end
-  object GLWindowsBitmapFont1: TGLWindowsBitmapFont
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clWhite
-    Font.Height = -16
-    Font.Name = 'Impact'
-    Font.Style = []
-    Ranges = <
-      item
-        StartASCII = ' '
-        StopASCII = 'z'
-        StartGlyphIdx = 0
-      end>
-    Left = 192
-    Top = 72
-  end
-  object Timer1: TTimer
-    Interval = 500
-    OnTimer = Timer1Timer
-    Left = 496
-    Top = 16
-  end
-end
+object FormDCE: TFormDCE
+  Left = 192
+  Top = 114
+  Caption = 'GLScene Dynamic Collision Engine'
+  ClientHeight = 444
+  ClientWidth = 600
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  KeyPreview = True
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnKeyDown = FormKeyDown
+  OnShow = FormShow
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 0
+    Top = 0
+    Width = 600
+    Height = 444
+    Camera = GLCamera1
+    Buffer.FogEnvironment.FogStart = 50.000000000000000000
+    Buffer.FogEnvironment.FogEnd = 250.000000000000000000
+    Buffer.BackgroundColor = clBlack
+    Buffer.FogEnable = True
+    FieldOfView = 154.614669799804700000
+    PenAsTouch = False
+    Align = alClient
+    OnMouseMove = GLSceneViewer1MouseMove
+    TabOrder = 0
+  end
+  object GLScene1: TGLScene
+    Left = 24
+    Top = 8
+    object GLLightSource2: TGLLightSource
+      ConstAttenuation = 1.000000000000000000
+      Position.Coordinates = {00000000000048420000C8420000803F}
+      SpotCutOff = 180.000000000000000000
+    end
+    object Terrain: TGLTerrainRenderer
+      Material.MaterialLibrary = GLMatlLib
+      HeightDataSource = GLBitmapHDS1
+      TilesPerTexture = 1.000000000000000000
+      ContourWidth = 0
+      BehavioursData = {
+        0458434F4C02010201060C54474C444345537461746963020102001200000000
+        0200060D474C4443454D616E61676572310203020009090F0000A0410F000000
+        00020008}
+    end
+    object Ground: TGLPlane
+      Material.FrontProperties.Diffuse.Color = {D3D2D23EC7C6463FC7C6C63E0000803F}
+      Material.MaterialLibrary = GLMatlLib
+      Direction.Coordinates = {000000000000803F0000000000000000}
+      Position.Coordinates = {00000000000010C0000000000000803F}
+      Scale.Coordinates = {0000FA430000FA430000803F00000000}
+      Up.Coordinates = {00000000000000000000803F00000000}
+      Visible = False
+      Height = 1.000000000000000000
+      Width = 1.000000000000000000
+      XTiles = 50
+      YTiles = 50
+      Style = []
+      BehavioursData = {
+        0458434F4C02010201060C54474C444345537461746963020102001200000000
+        0200060D474C4443454D616E61676572310201020009080F0000A0410F000000
+        00020008}
+    end
+    object Balls: TGLDummyCube
+      CubeSize = 1.000000000000000000
+    end
+    object moMushroom: TGLFreeForm
+      Material.FrontProperties.Diffuse.Color = {A9A8283F8B8A8A3E9190103E0000803F}
+      Position.Coordinates = {00000000000000000000A0C00000803F}
+      NormalsOrientation = mnoInvert
+      BehavioursData = {
+        0458434F4C02010201060C54474C444345537461746963020102001200000000
+        0200060D474C4443454D616E61676572310202020009090F0000803F0F000000
+        00020008}
+    end
+    object Mushrooms: TGLDummyCube
+      CubeSize = 1.000000000000000000
+    end
+    object GLCube1: TGLCube
+      Material.FrontProperties.Diffuse.Color = {B1B0B03D9998183F8180003D0000803F}
+      Direction.Coordinates = {00000000CAA8073FAE19593F00000000}
+      PitchAngle = 32.000000000000000000
+      Position.Coordinates = {0000804000000000000020410000803F}
+      Scale.Coordinates = {0000A041000080400000204100000000}
+      Up.Coordinates = {00000000AE19593FCAA807BF00000000}
+      BehavioursData = {
+        0458434F4C02010201060C54474C444345537461746963020102001200000000
+        0200060D474C4443454D616E61676572310201020009090F0000F0410F000000
+        00020008}
+    end
+    object GLDirectOpenGL1: TGLDirectOpenGL
+      Visible = False
+      UseBuildList = False
+      OnRender = GLDirectOpenGL1Render
+      Blend = False
+    end
+    object Player: TGLDummyCube
+      Position.Coordinates = {000000000000803F000000000000803F}
+      CubeSize = 1.000000000000000000
+      BehavioursData = {
+        0458434F4C02010201060D54474C44434544796E616D69630201020012000000
+        000200060D474C4443454D616E616765723102000909090F0000003F0F000000
+        00020502000200090000803F0000A03F0000803F00000000}
+      object GLCamera1: TGLCamera
+        DepthOfView = 300.000000000000000000
+        FocalLength = 50.000000000000000000
+        TargetObject = Player
+        Position.Coordinates = {0000000000000040000040C00000803F}
+        object GLLightSource1: TGLLightSource
+          ConstAttenuation = 1.000000000000000000
+          SpotCutOff = 180.000000000000000000
+        end
+      end
+      object GLActor1: TGLActor
+        Material.MaterialLibrary = GLMatlLib
+        Interval = 100
+      end
+      object GLSphere1: TGLSphere
+        Material.FrontProperties.Ambient.Color = {0000803F9190903D000000000000803F}
+        Material.FrontProperties.Diffuse.Color = {BFBE3E3F00000000000000006DE77B3E}
+        Material.FrontProperties.Emission.Color = {0000000000000000A1A0203D0000803F}
+        Material.BlendingMode = bmAdditive
+        Radius = 1.000000000000000000
+      end
+    end
+    object GLHUDText1: TGLHUDText
+      Position.Coordinates = {0000804000000000000000000000803F}
+      BitmapFont = GLWindowsBitmapFont1
+      Rotation = 0.000000000000000000
+    end
+    object HelpShadow: TGLHUDText
+      Position.Coordinates = {000030410000F841000000000000803F}
+      BitmapFont = GLWindowsBitmapFont1
+      Rotation = 0.000000000000000000
+      ModulateColor.Color = {A19E9E3ECFBC3C3ECFBC3C3E0000803F}
+    end
+    object Help: TGLHUDText
+      Position.Coordinates = {000020410000F041000000000000803F}
+      BitmapFont = GLWindowsBitmapFont1
+      Rotation = 0.000000000000000000
+    end
+  end
+  object GLCadencer1: TGLCadencer
+    Scene = GLScene1
+    Enabled = False
+    OnProgress = GLCadencer1Progress
+    Left = 96
+    Top = 8
+  end
+  object GLDCEManager1: TGLDCEManager
+    Gravity = -30.000000000000000000
+    WorldScale = 1.000000000000000000
+    MovimentScale = 1.000000000000000000
+    StandardiseLayers = ccsDCEStandard
+    ManualStep = False
+    Left = 192
+    Top = 8
+  end
+  object GLBitmapHDS1: TGLBitmapHDS
+    MaxPoolSize = 0
+    Left = 24
+    Top = 72
+  end
+  object GLMatlLib: TGLMaterialLibrary
+    Left = 96
+    Top = 72
+  end
+  object GLWindowsBitmapFont1: TGLWindowsBitmapFont
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWhite
+    Font.Height = -16
+    Font.Name = 'Impact'
+    Font.Style = []
+    Ranges = <
+      item
+        StartASCII = ' '
+        StopASCII = 'z'
+        StartGlyphIdx = 0
+      end>
+    Left = 192
+    Top = 72
+  end
+  object Timer1: TTimer
+    Interval = 500
+    OnTimer = Timer1Timer
+    Left = 496
+    Top = 16
+  end
+end

+ 426 - 426
Demos/Delphi/behaviours/DCEDemo/Unit1.pas → Demos/Delphi/behaviours/DceFm.pas

@@ -1,426 +1,426 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.Windows,
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Classes,
-  Vcl.Graphics,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.Dialogs,
-  Vcl.ExtCtrls,
-  Vcl.Imaging.Jpeg,
-
-  GLS.Scene,
-  GLS.Objects,
-  GLS.PersistentClasses,
-  GLS.Cadencer,
-  GLS.SceneViewer,
-  GLS.DCE,
-  GLS.Material,
-  GLS.Texture,
-  GLS.HeightData,
-  GLS.TerrainRenderer,
-  GLS.VectorFileObjects,
-  GLS.BitmapFont,
-  GLS.WindowsFont,
-  GLS.HUDObjects,
-  GLS.Coordinates,
-  GLS.VectorGeometry,
-  GLS.FileMD2,
-  GLS.File3DS,
-  GLS.Context,
-  GLS.EllipseCollision,
-  GLS.RenderContextInfo,
-  GLS.Keyboard,
-  GLS.ProxyObjects,
-  GLS.State,
-  GLS.Utils,
-  GLS.BaseClasses,
-  GLS.VectorTypes;
-
-type
-  TForm1 = class(TForm)
-    GLScene1: TGLScene;
-    GLSceneViewer1: TGLSceneViewer;
-    GLCadencer1: TGLCadencer;
-    GLCamera1: TGLCamera;
-    Player: TGLDummyCube;
-    GLDCEManager1: TGLDCEManager;
-    Terrain: TGLTerrainRenderer;
-    GLBitmapHDS1: TGLBitmapHDS;
-    GLMatlLib: TGLMaterialLibrary;
-    GLLightSource1: TGLLightSource;
-    GLActor1: TGLActor;
-    GLSphere1: TGLSphere;
-    GLLightSource2: TGLLightSource;
-    Balls: TGLDummyCube;
-    GLWindowsBitmapFont1: TGLWindowsBitmapFont;
-    Timer1: TTimer;
-    GLHUDText1: TGLHUDText;
-    Mushrooms: TGLDummyCube;
-    moMushroom: TGLFreeForm;
-    GLDirectOpenGL1: TGLDirectOpenGL;
-    GLCube1: TGLCube;
-    Help: TGLHUDText;
-    HelpShadow: TGLHUDText;
-    Ground: TGLPlane;
-    procedure FormShow(Sender: TObject);
-    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
-      X, Y: Integer);
-    procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
-      newTime: Double);
-    procedure FormKeyDown(Sender: TObject; var Key: Word;
-      Shift: TShiftState);
-    procedure PlayerBehaviours0Collision(Sender: TObject;
-      ObjectCollided: TGLBaseSceneObject; CollisionInfo: TDCECollision);
-    procedure Timer1Timer(Sender: TObject);
-    procedure GLDirectOpenGL1Render(Sender: TObject;
-      var rci: TGLRenderContextInfo);
-  public
-    mx, my: Integer;
-    Jumped: boolean;
-    procedure Load;
-    procedure HandleKeys;
-    procedure HandleAnimation;
-    procedure AddBall;
-    procedure AddMushrooms;
-  end;
-
-var
-  Form1: TForm1;
-
-const
-  cForce: Single = 250;
-  cSpread = 200;
-  cNbMushrooms = 20;
-
-implementation
-
-{$R *.dfm}
-
-{ TForm1 }
-
-procedure TForm1.Load;
-begin
-  SetGLSceneMediaDir();
-
-  //Load Materials
-  GLMatlLib.AddTextureMaterial('Terrain', 'snow512.jpg');
-  GLMatlLib.AddTextureMaterial('Actor', 'waste.jpg');
-
-  //Load Terrain
-  GLBitmapHDS1.MaxPoolSize := 8 * 1024 * 1024;
-  GLBitmapHDS1.Picture.LoadFromFile('terrain.bmp');
-  Terrain.Direction.SetVector(0, 1, 0);
-  Terrain.Material.LibMaterialName := 'Terrain';
-  Terrain.TilesPerTexture := 256 / Terrain.TileSize;
-  Terrain.Scale.SetVector(1, 1, 0.02);
-
-  Ground.Material.LibMaterialName := 'Terrain';
-
-  // Load mushroom mesh
-  //Always use AutoScaling property or you may get some problems
-  moMushRoom.AutoScaling.SetPoint(0.1, 0.1, 0.1);
-  moMushRoom.LoadFromFile('Mushroom.3ds');
-  moMushRoom.Direction.SetVector(0, 1, 0);
-  moMushRoom.BuildOctree;
-
-  //Load player
-  Player.Position.SetPoint(0, 3, 0);
-  //Actor
-  GLActor1.LoadFromFile('Waste.md2');
-  GLActor1.Direction.SetVector(0, 1, 0);
-  GLActor1.Up.SetVector(1, 0, 0);
-  GLActor1.Scale.SetVector(0.05, 0.05, 0.05);
-  GLActor1.Material.LibMaterialName := 'Actor';
-  GLActor1.Animations.LoadFromFile('Quake2Animations.aaf');
-  // Define animation properties
-  GLActor1.AnimationMode := aamLoop;
-  GLActor1.SwitchToAnimation('stand');
-  GLActor1.FrameInterpolation := afpLinear;
-
-  //DCE Behaviour
-  GLSphere1.Scale.Assign(GetOrCreateDCEDynamic(Player).Size);
-  GetOrCreateDCEDynamic(Player).OnCollision := PlayerBehaviours0Collision;
-end;
-
-procedure TForm1.HandleKeys;
-var
-  Force: TAffineVector;
-begin
-
-  Force := NullVector;
-  if IsKeyDown('w') or IsKeyDown('z') then
-    Force.Z := cForce;
-  if IsKeyDown('s') then
-    Force.Z := -cForce;
-  if IsKeyDown('a') or IsKeyDown('q') then
-    Force.X := cForce;
-  if IsKeyDown('d') then
-    Force.X := -cForce;
-
-  GetOrCreateDCEDynamic(Player).ApplyAccel(Force);
-end;
-
-procedure TForm1.HandleAnimation;
-var
-  anim: string;
-begin
-  if VectorNorm(GetOrCreateDCEDynamic(Player).Speed) > 0.1 then
-    anim := 'run'
-  else
-    anim := 'stand';
-
-  if Jumped then
-  begin
-    if (not GetOrCreateDCEDynamic(Player).InGround) then
-      anim := 'jump'
-    else
-      Jumped := False;
-  end;
-
-  if anim = 'jump' then
-    GLActor1.Interval := 500
-  else
-    GLActor1.Interval := 100;
-
-  if GLActor1.CurrentAnimation <> anim then
-    GLActor1.SwitchToAnimation(anim);
-end;
-
-procedure TForm1.AddBall;
-var
-  Ball: TGLSphere;
-  S: Single;
-begin
-  Ball := TGLSphere(Balls.AddNewChild(TGLSphere));
-  with Ball do
-  begin
-    Tag := 1; //set the identifier of a ball
-    Radius := 1;
-    S := (100 + Random(900)) / 500;
-    Scale.SetVector(s, s, s);
-    Position.SetPoint(
-         Random(40) - Random(40),
-         4 + Random(10),
-         Random(40) - Random(40));
-    Material.FrontProperties.Diffuse.SetColor(
-        (100 + Random(900)) / 1000,
-        (100 + Random(900)) / 1000,
-        (100 + Random(900)) / 1000);
-  end;
-  with GetOrCreateDCEDynamic(Ball) do
-  begin
-    Manager := GLDCEManager1;
-    BounceFactor := 0.75;
-    Friction := 0.1;
-    SlideOrBounce := csbBounce;
-    Size.Assign(Ball.Scale);
-  end;
-end;
-
-procedure TForm1.AddMushrooms;
-var
-  i: Integer;
-  proxy: TGLFreeFormProxy;
-  s: TVector;
-  f: Single;
-begin
-  // spawn some more mushrooms using proxy objects
-  for i := 0 to cNbMushrooms - 1 do
-  begin
-    // create a new proxy and set its MasterObject property
-    proxy := TGLFreeFormProxy(MushRooms.AddNewChild(TGLFreeFormProxy));
-    with proxy do
-    begin
-      ProxyOptions := [pooObjects];
-      MasterObject := moMushroom;
-      // retrieve reference attitude
-      Direction := moMushroom.Direction;
-      Up := moMushroom.Up;
-      // randomize scale
-      s := moMushroom.Scale.AsVector;
-      f := (2 * Random + 1);
-      ScaleVector(s, f);
-      Scale.AsVector := s;
-      // randomize position
-      Position.SetPoint(Random(cSpread) - (cSpread / 2),
-        moMushroom.Position.z + 1.5 * f,
-        Random(cSpread) - (cSpread / 2));
-      // randomize orientation
-      RollAngle := Random(360);
-      TransformationChanged;
-    end;
-    with GetOrCreateDCEStatic(Proxy) do
-    begin
-      Manager := GLDCEManager1;
-      BounceFactor := 0.75;
-      Friction := 10;
-      Shape := csFreeform;
-    end;
-
-  end;
-end;
-
-procedure TForm1.FormShow(Sender: TObject);
-begin
-  Load;
-  GLCadencer1.Enabled := true;
-  Help.Text :=
-    'Mouse Drag - Look' + #13 +
-    'A,W,S,D - movement' + #13 +
-    'SPACE - Jump' + #13 +
-    'F1 - Add one ball' + #13 +
-    'F2 - Add 10 balls' + #13 +
-    'F3 - Add 20 mushrooms' + #13 +
-    'F4 - Change ground to box' + #13 +
-    'F5 - Toggle step mode' + #13 +
-    'RETURN - Reset';
-end;
-
-procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject;
-  Shift: TShiftState; X, Y: Integer);
-begin
-  //Mouse look
-  if ssLeft in Shift then
-  begin
-    GLCamera1.MoveAroundTarget((my - y), 0);
-    Player.Turn(-(mx - x));
-  end;
-  mx := x;
-  my := y;
-end;
-
-procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime,
-  newTime: Double);
-begin
-  HandleKeys;
-  HandleAnimation;
-  //This shows the manual progress, don't need this if you use the automatic mode
-  if GLDCEManager1.ManualStep then
-    GLDCEManager1.Step(deltaTime);
-
-  Help.ModulateColor.Alpha := Help.ModulateColor.Alpha - (deltaTime * 0.05);
-  if Help.ModulateColor.Alpha < 0.25 then
-    Help.ModulateColor.Alpha := 0.25;
-  HelpShadow.ModulateColor.Alpha := Help.ModulateColor.Alpha;
-  HelpShadow.Text := Help.Text;
-end;
-
-procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
-  Shift: TShiftState);
-var
-  i: integer;
-begin
-  if Key = VK_F1 then
-    AddBall;
-  if Key = VK_F2 then
-    for i := 1 to 10 do
-      AddBall;
-  if Key = VK_F3 then
-    AddMushrooms;
-  if (Key = VK_Space) then
-  begin
-    GetOrCreateDCEDynamic(Player).Jump(1, 20);
-    Jumped := true;
-  end;
-  if key = VK_F4 then
-  begin
-    Terrain.Visible := False;
-    Ground.Visible := true;
-    GetOrCreateDCEStatic(Terrain).Active := False;
-    GetOrCreateDCEStatic(Ground).Active := True;
-  end;
-  if key = VK_F5 then
-    GLDCEManager1.ManualStep := not GLDCEManager1.ManualStep;
-
-  if (Key = VK_RETURN) then
-  begin
-    Player.Position.SetPoint(0, 3, 0);
-    Balls.DeleteChildren;
-    MushRooms.DeleteChildren;
-    Help.ModulateColor.Alpha := 1;
-    Terrain.Visible := True;
-    Ground.Visible := False;
-    GetOrCreateDCEStatic(Terrain).Active := True;
-    GetOrCreateDCEStatic(Ground).Active := False;
-  end;
-end;
-
-procedure TForm1.PlayerBehaviours0Collision(Sender: TObject;
-  ObjectCollided: TGLBaseSceneObject; CollisionInfo: TDCECollision);
-var
-  v: TAffineVector;
-begin
-  //Use some kind of identifier to know what object you are colliding
-  //You can use the Tag, TagFloat, Name, Class
-  if ObjectCollided.Tag = 1 then
-  begin
-    v := AffineVectorMake(VectorSubtract(ObjectCollided.AbsolutePosition, Player.AbsolutePosition));
-    NormalizeVector(v);
-    ScaleVector(v, 400);
-    GetOrCreateDCEDynamic(ObjectCollided).StopAbsAccel;
-    GetOrCreateDCEDynamic(ObjectCollided).ApplyAbsAccel(v);
-  end;
-end;
-
-procedure TForm1.Timer1Timer(Sender: TObject);
-var
-  s: string;
-begin
-  if GLDCEManager1.ManualStep then
-    s := 'Manual'
-  else
-    s := 'Automatic';
-  GLHUDText1.Text := Format('FPS: %.1f - Dynamics: %d - Statics: %d - Step mode: %s',
-    [GLSceneViewer1.FramesPerSecond, GLDCEManager1.DynamicCount, GLDCEManager1.StaticCount, s]);
-  GLSceneViewer1.ResetPerformanceMonitor;
-end;
-
-procedure TForm1.GLDirectOpenGL1Render(Sender: TObject;
-  var rci: TGLRenderContextInfo);
-var
-  i: integer;
-  p, n: TAffineVector;
-begin
-  //To use this you will need to enable the debug define in the
-  //GLEllipseCollision.pas, if you do, don't forget to clear the
-  //triangle list! -> SetLength(debug_tri,0);
-
-  rci.GLStates.PointSize := 5.0;
-  glColor3f(0, 1, 0);
-
-  for i := 0 to High(debug_tri) do
-    with debug_tri[i] do
-    begin
-      glColor3f(0, 0, 0);
-      glBegin(GL_LINE_STRIP);
-        glVertex3f(p1.X, p1.Y, p1.Z);
-        glVertex3f(p2.X, p2.Y, p2.Z);
-        glVertex3f(p3.X, p3.Y, p3.Z);
-      glEnd;
-      CalcPlaneNormal(p1, p2, p3, n);
-      ScaleVector(n, 0.25);
-      p.X := (p1.X + p2.X + p3.X) / 3;
-      p.Y := (p1.Y + p2.Y + p3.Y) / 3;
-      p.Z := (p1.Z + p2.Z + p3.Z) / 3;
-      glColor3f(0, 0, 1);
-      glBegin(GL_LINE_STRIP);
-        glVertex3f(p.X, p.Y, p.Z);
-        glVertex3f(p.X + n.X, p.Y + n.Y, p.Z + n.Z);
-      glEnd;
-      glBegin(GL_POINTS);
-        glVertex3f(p.X + n.X, p.Y + n.Y, p.Z + n.Z);
-      glEnd;
-
-    end; //}
-
-  SetLength(debug_tri, 0);
-end;
-
-end.
-
+unit DceFm;
+
+interface
+
+uses
+  Winapi.Windows,
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.ExtCtrls,
+  Vcl.Imaging.Jpeg,
+
+  GLS.Scene,
+  GLS.Objects,
+  GLS.PersistentClasses,
+  GLS.Cadencer,
+  GLS.SceneViewer,
+  GLS.DCE,
+  GLS.Material,
+  GLS.Texture,
+  GLS.HeightData,
+  GLS.TerrainRenderer,
+  GLS.VectorFileObjects,
+  GLS.BitmapFont,
+  GLS.WindowsFont,
+  GLS.HUDObjects,
+  GLS.Coordinates,
+  GLS.VectorGeometry,
+  GLS.FileMD2,
+  GLS.File3DS,
+  GLS.Context,
+  GLS.EllipseCollision,
+  GLS.RenderContextInfo,
+  GLS.Keyboard,
+  GLS.ProxyObjects,
+  GLS.State,
+  GLS.Utils,
+  GLS.BaseClasses,
+  GLS.VectorTypes;
+
+type
+  TFormDCE = class(TForm)
+    GLScene1: TGLScene;
+    GLSceneViewer1: TGLSceneViewer;
+    GLCadencer1: TGLCadencer;
+    GLCamera1: TGLCamera;
+    Player: TGLDummyCube;
+    GLDCEManager1: TGLDCEManager;
+    Terrain: TGLTerrainRenderer;
+    GLBitmapHDS1: TGLBitmapHDS;
+    GLMatlLib: TGLMaterialLibrary;
+    GLLightSource1: TGLLightSource;
+    GLActor1: TGLActor;
+    GLSphere1: TGLSphere;
+    GLLightSource2: TGLLightSource;
+    Balls: TGLDummyCube;
+    GLWindowsBitmapFont1: TGLWindowsBitmapFont;
+    Timer1: TTimer;
+    GLHUDText1: TGLHUDText;
+    Mushrooms: TGLDummyCube;
+    moMushroom: TGLFreeForm;
+    GLDirectOpenGL1: TGLDirectOpenGL;
+    GLCube1: TGLCube;
+    Help: TGLHUDText;
+    HelpShadow: TGLHUDText;
+    Ground: TGLPlane;
+    procedure FormShow(Sender: TObject);
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
+      X, Y: Integer);
+    procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
+      newTime: Double);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure PlayerBehaviours0Collision(Sender: TObject;
+      ObjectCollided: TGLBaseSceneObject; CollisionInfo: TDCECollision);
+    procedure Timer1Timer(Sender: TObject);
+    procedure GLDirectOpenGL1Render(Sender: TObject;
+      var rci: TGLRenderContextInfo);
+  public
+    mx, my: Integer;
+    Jumped: boolean;
+    procedure Load;
+    procedure HandleKeys;
+    procedure HandleAnimation;
+    procedure AddBall;
+    procedure AddMushrooms;
+  end;
+
+var
+  FormDCE: TFormDCE;
+
+const
+  cForce: Single = 250;
+  cSpread = 200;
+  cNbMushrooms = 20;
+
+implementation
+
+{$R *.dfm}
+
+{ TForm1 }
+
+procedure TFormDCE.Load;
+begin
+  SetGLSceneMediaDir();
+
+  //Load Materials
+  GLMatlLib.AddTextureMaterial('Terrain', 'snow512.jpg');
+  GLMatlLib.AddTextureMaterial('Actor', 'waste.jpg');
+
+  //Load Terrain
+  GLBitmapHDS1.MaxPoolSize := 8 * 1024 * 1024;
+  GLBitmapHDS1.Picture.LoadFromFile('terrain.bmp');
+  Terrain.Direction.SetVector(0, 1, 0);
+  Terrain.Material.LibMaterialName := 'Terrain';
+  Terrain.TilesPerTexture := 256 / Terrain.TileSize;
+  Terrain.Scale.SetVector(1, 1, 0.02);
+
+  Ground.Material.LibMaterialName := 'Terrain';
+
+  // Load mushroom mesh
+  //Always use AutoScaling property or you may get some problems
+  moMushRoom.AutoScaling.SetPoint(0.1, 0.1, 0.1);
+  moMushRoom.LoadFromFile('Mushroom.3ds');
+  moMushRoom.Direction.SetVector(0, 1, 0);
+  moMushRoom.BuildOctree;
+
+  //Load player
+  Player.Position.SetPoint(0, 3, 0);
+  //Actor
+  GLActor1.LoadFromFile('Waste.md2');
+  GLActor1.Direction.SetVector(0, 1, 0);
+  GLActor1.Up.SetVector(1, 0, 0);
+  GLActor1.Scale.SetVector(0.05, 0.05, 0.05);
+  GLActor1.Material.LibMaterialName := 'Actor';
+  GLActor1.Animations.LoadFromFile('Quake2Animations.aaf');
+  // Define animation properties
+  GLActor1.AnimationMode := aamLoop;
+  GLActor1.SwitchToAnimation('stand');
+  GLActor1.FrameInterpolation := afpLinear;
+
+  //DCE Behaviour
+  GLSphere1.Scale.Assign(GetOrCreateDCEDynamic(Player).Size);
+  GetOrCreateDCEDynamic(Player).OnCollision := PlayerBehaviours0Collision;
+end;
+
+procedure TFormDCE.HandleKeys;
+var
+  Force: TAffineVector;
+begin
+
+  Force := NullVector;
+  if IsKeyDown('w') or IsKeyDown('z') then
+    Force.Z := cForce;
+  if IsKeyDown('s') then
+    Force.Z := -cForce;
+  if IsKeyDown('a') or IsKeyDown('q') then
+    Force.X := cForce;
+  if IsKeyDown('d') then
+    Force.X := -cForce;
+
+  GetOrCreateDCEDynamic(Player).ApplyAccel(Force);
+end;
+
+procedure TFormDCE.HandleAnimation;
+var
+  anim: string;
+begin
+  if VectorNorm(GetOrCreateDCEDynamic(Player).Speed) > 0.1 then
+    anim := 'run'
+  else
+    anim := 'stand';
+
+  if Jumped then
+  begin
+    if (not GetOrCreateDCEDynamic(Player).InGround) then
+      anim := 'jump'
+    else
+      Jumped := False;
+  end;
+
+  if anim = 'jump' then
+    GLActor1.Interval := 500
+  else
+    GLActor1.Interval := 100;
+
+  if GLActor1.CurrentAnimation <> anim then
+    GLActor1.SwitchToAnimation(anim);
+end;
+
+procedure TFormDCE.AddBall;
+var
+  Ball: TGLSphere;
+  S: Single;
+begin
+  Ball := TGLSphere(Balls.AddNewChild(TGLSphere));
+  with Ball do
+  begin
+    Tag := 1; //set the identifier of a ball
+    Radius := 1;
+    S := (100 + Random(900)) / 500;
+    Scale.SetVector(s, s, s);
+    Position.SetPoint(
+         Random(40) - Random(40),
+         4 + Random(10),
+         Random(40) - Random(40));
+    Material.FrontProperties.Diffuse.SetColor(
+        (100 + Random(900)) / 1000,
+        (100 + Random(900)) / 1000,
+        (100 + Random(900)) / 1000);
+  end;
+  with GetOrCreateDCEDynamic(Ball) do
+  begin
+    Manager := GLDCEManager1;
+    BounceFactor := 0.75;
+    Friction := 0.1;
+    SlideOrBounce := csbBounce;
+    Size.Assign(Ball.Scale);
+  end;
+end;
+
+procedure TFormDCE.AddMushrooms;
+var
+  i: Integer;
+  proxy: TGLFreeFormProxy;
+  s: TVector;
+  f: Single;
+begin
+  // spawn some more mushrooms using proxy objects
+  for i := 0 to cNbMushrooms - 1 do
+  begin
+    // create a new proxy and set its MasterObject property
+    proxy := TGLFreeFormProxy(MushRooms.AddNewChild(TGLFreeFormProxy));
+    with proxy do
+    begin
+      ProxyOptions := [pooObjects];
+      MasterObject := moMushroom;
+      // retrieve reference attitude
+      Direction := moMushroom.Direction;
+      Up := moMushroom.Up;
+      // randomize scale
+      s := moMushroom.Scale.AsVector;
+      f := (2 * Random + 1);
+      ScaleVector(s, f);
+      Scale.AsVector := s;
+      // randomize position
+      Position.SetPoint(Random(cSpread) - (cSpread / 2),
+        moMushroom.Position.z + 1.5 * f,
+        Random(cSpread) - (cSpread / 2));
+      // randomize orientation
+      RollAngle := Random(360);
+      TransformationChanged;
+    end;
+    with GetOrCreateDCEStatic(Proxy) do
+    begin
+      Manager := GLDCEManager1;
+      BounceFactor := 0.75;
+      Friction := 10;
+      Shape := csFreeform;
+    end;
+
+  end;
+end;
+
+procedure TFormDCE.FormShow(Sender: TObject);
+begin
+  Load;
+  GLCadencer1.Enabled := true;
+  Help.Text :=
+    'Mouse Drag - Look' + #13 +
+    'A,W,S,D - movement' + #13 +
+    'SPACE - Jump' + #13 +
+    'F1 - Add one ball' + #13 +
+    'F2 - Add 10 balls' + #13 +
+    'F3 - Add 20 mushrooms' + #13 +
+    'F4 - Change ground to box' + #13 +
+    'F5 - Toggle step mode' + #13 +
+    'RETURN - Reset';
+end;
+
+procedure TFormDCE.GLSceneViewer1MouseMove(Sender: TObject;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  //Mouse look
+  if ssLeft in Shift then
+  begin
+    GLCamera1.MoveAroundTarget((my - y), 0);
+    Player.Turn(-(mx - x));
+  end;
+  mx := x;
+  my := y;
+end;
+
+procedure TFormDCE.GLCadencer1Progress(Sender: TObject; const deltaTime,
+  newTime: Double);
+begin
+  HandleKeys;
+  HandleAnimation;
+  //This shows the manual progress, don't need this if you use the automatic mode
+  if GLDCEManager1.ManualStep then
+    GLDCEManager1.Step(deltaTime);
+
+  Help.ModulateColor.Alpha := Help.ModulateColor.Alpha - (deltaTime * 0.05);
+  if Help.ModulateColor.Alpha < 0.25 then
+    Help.ModulateColor.Alpha := 0.25;
+  HelpShadow.ModulateColor.Alpha := Help.ModulateColor.Alpha;
+  HelpShadow.Text := Help.Text;
+end;
+
+procedure TFormDCE.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+var
+  i: integer;
+begin
+  if Key = VK_F1 then
+    AddBall;
+  if Key = VK_F2 then
+    for i := 1 to 10 do
+      AddBall;
+  if Key = VK_F3 then
+    AddMushrooms;
+  if (Key = VK_Space) then
+  begin
+    GetOrCreateDCEDynamic(Player).Jump(1, 20);
+    Jumped := true;
+  end;
+  if key = VK_F4 then
+  begin
+    Terrain.Visible := False;
+    Ground.Visible := true;
+    GetOrCreateDCEStatic(Terrain).Active := False;
+    GetOrCreateDCEStatic(Ground).Active := True;
+  end;
+  if key = VK_F5 then
+    GLDCEManager1.ManualStep := not GLDCEManager1.ManualStep;
+
+  if (Key = VK_RETURN) then
+  begin
+    Player.Position.SetPoint(0, 3, 0);
+    Balls.DeleteChildren;
+    MushRooms.DeleteChildren;
+    Help.ModulateColor.Alpha := 1;
+    Terrain.Visible := True;
+    Ground.Visible := False;
+    GetOrCreateDCEStatic(Terrain).Active := True;
+    GetOrCreateDCEStatic(Ground).Active := False;
+  end;
+end;
+
+procedure TFormDCE.PlayerBehaviours0Collision(Sender: TObject;
+  ObjectCollided: TGLBaseSceneObject; CollisionInfo: TDCECollision);
+var
+  v: TAffineVector;
+begin
+  //Use some kind of identifier to know what object you are colliding
+  //You can use the Tag, TagFloat, Name, Class
+  if ObjectCollided.Tag = 1 then
+  begin
+    v := AffineVectorMake(VectorSubtract(ObjectCollided.AbsolutePosition, Player.AbsolutePosition));
+    NormalizeVector(v);
+    ScaleVector(v, 400);
+    GetOrCreateDCEDynamic(ObjectCollided).StopAbsAccel;
+    GetOrCreateDCEDynamic(ObjectCollided).ApplyAbsAccel(v);
+  end;
+end;
+
+procedure TFormDCE.Timer1Timer(Sender: TObject);
+var
+  s: string;
+begin
+  if GLDCEManager1.ManualStep then
+    s := 'Manual'
+  else
+    s := 'Automatic';
+  GLHUDText1.Text := Format('FPS: %.1f - Dynamics: %d - Statics: %d - Step mode: %s',
+    [GLSceneViewer1.FramesPerSecond, GLDCEManager1.DynamicCount, GLDCEManager1.StaticCount, s]);
+  GLSceneViewer1.ResetPerformanceMonitor;
+end;
+
+procedure TFormDCE.GLDirectOpenGL1Render(Sender: TObject;
+  var rci: TGLRenderContextInfo);
+var
+  i: integer;
+  p, n: TAffineVector;
+begin
+  //To use this you will need to enable the debug define in the
+  //GLEllipseCollision.pas, if you do, don't forget to clear the
+  //triangle list! -> SetLength(debug_tri,0);
+
+  rci.GLStates.PointSize := 5.0;
+  glColor3f(0, 1, 0);
+
+  for i := 0 to High(debug_tri) do
+    with debug_tri[i] do
+    begin
+      glColor3f(0, 0, 0);
+      glBegin(GL_LINE_STRIP);
+        glVertex3f(p1.X, p1.Y, p1.Z);
+        glVertex3f(p2.X, p2.Y, p2.Z);
+        glVertex3f(p3.X, p3.Y, p3.Z);
+      glEnd;
+      CalcPlaneNormal(p1, p2, p3, n);
+      ScaleVector(n, 0.25);
+      p.X := (p1.X + p2.X + p3.X) / 3;
+      p.Y := (p1.Y + p2.Y + p3.Y) / 3;
+      p.Z := (p1.Z + p2.Z + p3.Z) / 3;
+      glColor3f(0, 0, 1);
+      glBegin(GL_LINE_STRIP);
+        glVertex3f(p.X, p.Y, p.Z);
+        glVertex3f(p.X + n.X, p.Y + n.Y, p.Z + n.Z);
+      glEnd;
+      glBegin(GL_POINTS);
+        glVertex3f(p.X + n.X, p.Y + n.Y, p.Z + n.Z);
+      glEnd;
+
+    end; //}
+
+  SetLength(debug_tri, 0);
+end;
+
+end.
+

+ 0 - 172
Demos/Delphi/behaviours/FPSMovement/FPSMovement.dproj

@@ -1,172 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{C5877586-7C02-4F14-AE14-1795F2C4C4FF}</ProjectGuid>
-        <MainSource>FPSMovement.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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;Winapi;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_Locale>1049</VerInfo_Locale>
-        <DCC_N>false</DCC_N>
-        <DCC_S>false</DCC_S>
-        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
-        <DCC_K>false</DCC_K>
-        <DCC_E>false</DCC_E>
-        <SanitizedProjectName>FPSMovement</SanitizedProjectName>
-        <DCC_F>false</DCC_F>
-    </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>
-        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.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>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win64)'!=''">
-        <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>
-        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_Optimize>false</DCC_Optimize>
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">FPSMovement.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 27 - 27
Demos/Delphi/behaviours/FPSMovement/FPSMovement.dpr → Demos/Delphi/behaviours/FpsMovement.dpr

@@ -1,27 +1,27 @@
-//******************************************************************************
-//  SphereSweepAndSlide - Initial work by Dan Bartlett
-//  Shows how to use the FPS Movement behaviour
-//----------------------------------------
-//  Controls:
-//    W,A,S,D: Movement
-//    Mouse: Movement
-//    I,J,K,L,O,P: Movement (2nd sphere)
-//    F2, F3: First person, Third person
-//    F5: Toggle wireframe
-//    Space: Move upwards
-//    Esc: Quit
-//******************************************************************************
-program FPSMovement;
-
-uses
-  Vcl.Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.res}
-
-begin
-  Application.Initialize;
-  Application.MainFormOnTaskbar := True;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+//******************************************************************************
+//  SphereSweepAndSlide - Initial work by Dan Bartlett
+//  Shows how to use the FPS Movement behaviour
+//----------------------------------------
+//  Controls:
+//    W,A,S,D: Movement
+//    Mouse: Movement
+//    I,J,K,L,O,P: Movement (2nd sphere)
+//    F2, F3: First person, Third person
+//    F5: Toggle wireframe
+//    Space: Move upwards
+//    Esc: Quit
+//******************************************************************************
+program FpsMovement;
+
+uses
+  Vcl.Forms,
+  FpsMovementFm in 'FpsMovementFm.pas' {FormFPSMovement};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.MainFormOnTaskbar := True;
+  Application.CreateForm(TFormFPSMovement, FormFPSMovement);
+  Application.Run;
+end.

+ 878 - 0
Demos/Delphi/behaviours/FpsMovement.dproj

@@ -0,0 +1,878 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{C5877586-7C02-4F14-AE14-1795F2C4C4FF}</ProjectGuid>
+        <MainSource>FpsMovement.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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;Winapi;$(DCC_Namespace)</DCC_Namespace>
+        <VerInfo_Locale>1049</VerInfo_Locale>
+        <DCC_N>false</DCC_N>
+        <DCC_S>false</DCC_S>
+        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
+        <DCC_K>false</DCC_K>
+        <DCC_E>false</DCC_E>
+        <SanitizedProjectName>FpsMovement</SanitizedProjectName>
+        <DCC_F>false</DCC_F>
+    </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>
+        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.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>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <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>
+        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="FpsMovementFm.pas">
+            <Form>FormFPSMovement</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">FpsMovement.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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="Win32\Debug\FpsMovement.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>FpsMovement.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

BIN
Demos/Delphi/behaviours/FpsMovement.jpg


+ 267 - 268
Demos/Delphi/behaviours/FPSMovement/Unit1.dfm → Demos/Delphi/behaviours/FpsMovementFm.dfm

@@ -1,268 +1,267 @@
-object Form1: TForm1
-  Left = 209
-  Top = 112
-  Caption = 'FPSMovement'
-  ClientHeight = 383
-  ClientWidth = 588
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  KeyPreview = True
-  OldCreateOrder = False
-  Position = poScreenCenter
-  WindowState = wsMaximized
-  OnCreate = FormCreate
-  OnKeyDown = FormKeyDown
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 0
-    Top = 0
-    Width = 588
-    Height = 383
-    Camera = ThirdPersonCamera
-    Buffer.BackgroundColor = clBlack
-    Buffer.ShadeModel = smSmooth
-    FieldOfView = 150.733886718750000000
-    PenAsTouch = False
-    Align = alClient
-    TabOrder = 0
-  end
-  object GLScene1: TGLScene
-    Left = 40
-    Top = 24
-    object World: TGLDummyCube
-      CubeSize = 1.000000000000000000
-      object Player: TGLDummyCube
-        Position.Coordinates = {0000803FCDCC8C3F0000803F0000803F}
-        CubeSize = 1.000000000000000000
-        BehavioursData = {
-          0458434F4C02010201060F54474C424650534D6F76656D656E74020012000000
-          000200020002000F6666263F0909060A4D6F764D616E61676572}
-        object PlayerSphere: TGLSphere
-          Radius = 0.649999976158142100
-        end
-        object FirstPersonCamera: TGLCamera
-          DepthOfView = 120.000000000000000000
-          FocalLength = 50.000000000000000000
-          NearPlaneBias = 0.500000000000000000
-          Direction.Coordinates = {00000000000000000000803F00000000}
-          Up.Coordinates = {00000000FFFF7F3F0000008000000000}
-        end
-        object ThirdPersonCamera: TGLCamera
-          DepthOfView = 12000.000000000000000000
-          FocalLength = 50.000000000000000000
-          TargetObject = Player
-          Position.Coordinates = {000000000000803F000000C00000803F}
-        end
-        object GLLightSource1: TGLLightSource
-          ConstAttenuation = 1.000000000000000000
-          Diffuse.Color = {3333733F3333733F3333733F0000803F}
-          SpotCutOff = 180.000000000000000000
-        end
-        object PlayerCentre: TGLSphere
-          Radius = 0.050000000745058060
-        end
-      end
-      object Bot: TGLDummyCube
-        CubeSize = 1.000000000000000000
-        BehavioursData = {
-          0458434F4C02010201060F54474C424650534D6F76656D656E74020012000000
-          000200020002000FCDCCCC3E0909060A4D6F764D616E61676572}
-        object BotCenter: TGLSphere
-          Radius = 0.050000000745058060
-        end
-        object BotSphere: TGLSphere
-          Material.MaterialOptions = [moNoLighting]
-          Material.FaceCulling = fcNoCull
-          Radius = 0.400000005960464500
-        end
-      end
-      object GLLight: TGLLightSource
-        ConstAttenuation = 1.000000000000000000
-        Diffuse.Color = {3333733F3333733F3333733F0000803F}
-        SpotCutOff = 180.000000000000000000
-      end
-      object Map1: TGLFreeForm
-        VisibilityCulling = vcNone
-        Direction.Coordinates = {F7FF7FA7FFFF7FBFE1CD0C3400000000}
-        ShowAxes = True
-        Up.Coordinates = {00000000E2CD0C340000803F00000000}
-        MaterialLibrary = GLMaterialLibrary1
-        LightmapLibrary = GLMaterialLibrary1
-      end
-      object Map2: TGLFreeForm
-        Direction.Coordinates = {000000000000803F0000000000000000}
-        Position.Coordinates = {00000000000000C0000000000000803F}
-        Up.Coordinates = {00000000000000000000803F00000000}
-      end
-    end
-  end
-  object GLCadencer1: TGLCadencer
-    Scene = GLScene1
-    MaxDeltaTime = 0.020000000000000000
-    OnProgress = GLCadencer1Progress
-    Left = 128
-    Top = 88
-  end
-  object GLMaterialLibrary1: TGLMaterialLibrary
-    Materials = <
-      item
-        Name = 'LibMaterial'
-        Tag = 0
-        Material.FrontProperties.Ambient.Color = {0000803F0000803F0000803F0000803F}
-        Material.FrontProperties.Diffuse.Color = {0000803F0000803F0000803F0000803F}
-        Material.FrontProperties.Emission.Color = {0000803F0000803F0000803F0000803F}
-        Material.FrontProperties.Shininess = 100
-        Material.FrontProperties.Specular.Color = {0000803F0000803F0000803F0000803F}
-        Material.BlendingMode = bmAdditive
-        Material.Texture.Image.Picture.Data = {
-          07544269746D6170360C0000424D360C00000000000036000000280000002000
-          0000200000000100180000000000000C0000C30E0000C30E0000000000000000
-          0000000000000000000000000000000000000000000000000000000000000000
-          0000000000000000000000000000000000000000000000000000000000000000
-          0000000000000000000000000000000000000000000000000000000000000000
-          0000000000000000000000000000000000000000000000000000000000000000
-          0000000301000703000A05000D06000F07001007000F07000D06000A05000703
-          0003010000000000000000000000000000000000000000000000000000000000
-          0000000000000000000000000000000000000000000000000000000000050200
-          0C0500130800190B001E0D00220F00251000261100251000220F001E0D00190B
-          001308000C050005020000000000000000000000000000000000000000000000
-          00000000000000000000000000000000000000000000000301000B0500150900
-          1E0D002712003015003618003C1B003F1C00401D003F1C003C1B003618003015
-          002712001E0D001509000B050002010000000000000000000000000000000000
-          00000000000000000000000000000000000000000502001007001C0C00281200
-          341700401D004A21005225005827005C29005D2A005C29005827005225004A21
-          00401D003417002812001C0C0010070004020000000000000000000000000000
-          0000000000000000000000000000000000060300130800210F003015003F1C00
-          4D23005A2800662E006F32007635007A37007C37007A37007635006F3200662E
-          005A28004D23003F1C00301500210F0013080005020000000000000000000000
-          0000000000000000000000000000050200130800220F00331700451F00572700
-          672E00763500813A00863C008A3D008C3E008C3F008C3E008A3D00863C00813A
-          00763500672E00572700451F00331700220F0013080004010000000000000000
-          0000000000000000000000030100100700210F003317004720005C29006F3200
-          803900883D008F40009442009844009A45009B45009A45009844009442008F40
-          00883D008039006F32005C2900472000331700210F0010070002010000000000
-          00000000000000000000000B05001C0C00301500451F005C2900723300833B00
-          8C3F009542009C4600A14800A64A00A84B00A94C00A84B00A64A00A148009C46
-          009542008C3F00833B007233005C2900451F003015001C0C000A050000000000
-          00000000000000000502001509002812003F1C005727006F3200833B008E3F00
-          984400A14800A84B00AE4E00B35000B65100B75200B65100B35000AE4E00A84B
-          00A148009844008E3F00833B006F32005727003F1C0028120015090003010000
-          00000000000000000C05001E0D003417004D2300672E008039008C3F00984400
-          A24900AC4D00B45000BB5400C05600C35700C45800C35700C05600BB5400B450
-          00AC4D00A249009844008C3F00803900672E004D23003417001E0D000B040000
-          0000000000030100130800271200401D005A2800763500883D00954200A14800
-          AC4D00B65100BF5500C65900CC5B00CF5D00D15D00CF5D00CC5B00C65900BF55
-          00B65100AC4D00A14800954200883D007635005A2800401D0027120013080001
-          0000000000070300190B003015004A2100662E00813A008F40009C4600A84B00
-          B45000BF5500C85A00D15D00D76000DB6200DC6200DB6200D76000D15D00C85A
-          00BF5500B45000A84B009C46008F4000813A00662E004A2100301500190B0004
-          02000000000A05001E0D003618005225006F3200863C00944200A14800AE4E00
-          BB5400C65900D15D00D96100E16400E56600E76700E56600E16400D96100D15D
-          00C65900BB5400AE4E00A14800944200863C006F32005225003618001E0D0008
-          04000000000D0600220F003C1B005827007635008A3D00984400A64A00B35000
-          C05600CC5B00D76000E16400E96800EE6A00F06B00EE6A00E96800E16400D760
-          00CC5B00C05600B35000A64A009844008A3D007635005827003C1B00220F000B
-          05000000000F07002510003F1C005C29007A37008C3E009A4500A84B00B65100
-          C35700CF5D00DB6200E56600EE6A00F56E00F86F00F56E00EE6A00E56600DB62
-          00CF5D00C35700B65100A84B009A45008C3E007A37005C29003F1C002510000F
-          0700000000100700261100401D005D2A007C37008C3F009B4500A94C00B75200
-          C45800D15D00DC6200E76700F06B00F86F00FF7200F86F00F06B00E76700DC62
-          00D15D00C45800B75200A94C009B45008C3F007C37005D2A00401D0026110010
-          07000000000F07002510003F1C005C29007A37008C3E009A4500A84B00B65100
-          C35700CF5D00DB6200E56600EE6A00F56E00F86F00F56E00EE6A00E56600DB62
-          00CF5D00C35700B65100A84B009A45008C3E007A37005C29003F1C002510000D
-          06000000000D0600220F003C1B005827007635008A3D00984400A64A00B35000
-          C05600CC5B00D76000E16400E96800EE6A00F06B00EE6A00E96800E16400D760
-          00CC5B00C05600B35000A64A009844008A3D007635005827003C1B00220F000A
-          05000000000A05001E0D003618005225006F3200863C00944200A14800AE4E00
-          BB5400C65900D15D00D96100E16400E56600E76700E56600E16400D96100D15D
-          00C65900BB5400AE4E00A14800944200863C006F32005225003618001E0D0006
-          0300000000070300190B003015004A2100662E00813A008F40009C4600A84B00
-          B45000BF5500C85A00D15D00D76000DB6200DC6200DB6200D76000D15D00C85A
-          00BF5500B45000A84B009C46008F4000813A00662E004A2100301500190B0003
-          0100000000030100130800271200401D005A2800763500883D00954200A14800
-          AC4D00B65100BF5500C65900CC5B00CF5D00D15D00CF5D00CC5B00C65900BF55
-          00B65100AC4D00A14800954200883D007635005A2800401D0027120011070000
-          00000000000000000C05001E0D003417004D2300672E008039008C3F00984400
-          A24900AC4D00B45000BB5400C05600C35700C45800C35700C05600BB5400B450
-          00AC4D00A249009844008C3F00803900672E004D23003417001E0D0007030000
-          00000000000000000502001509002812003F1C005727006F3200833B008E3F00
-          984400A14800A84B00AE4E00B35000B65100B75200B65100B35000AE4E00A84B
-          00A148009844008E3F00833B006F32005727003F1C0028120013080001010000
-          00000000000000000000000B05001C0C00301500451F005C2900723300833B00
-          8C3F009542009C4600A14800A64A00A84B00A94C00A84B00A64A00A148009C46
-          009542008C3F00833B007233005C2900451F003015001C0C0006030000000000
-          0000000000000000000000020100100700210F003317004720005C29006F3200
-          803900883D008F40009442009844009A45009B45009A45009844009442008F40
-          00883D008039006F32005C2900472000331700210F000B050000000000000000
-          0000000000000000000000000000040200130800220F00331700451F00572700
-          672E00763500813A00863C008A3D008C3E008C3F008C3E008A3D00863C00813A
-          00763500672E00572700451F00331700220F000F060001010000000000000000
-          0000000000000000000000000000000000050200130800210F003015003F1C00
-          4D23005A2800662E006F32007635007A37007C37007A37007635006F3200662E
-          005A28004D23003F1C00301500210F000F060002010000000000000000000000
-          00000000000000000000000000000000000000000401001007001C0C00281200
-          341700401D004A21005225005827005C29005D2A005C29005827005225004A21
-          00401D003417002812001C0C000B050001010000000000000000000000000000
-          00000000000000000000000000000000000000000000000201000A0500150900
-          1E0D002712003015003618003C1B003F1C00401D003F1C003C1B003618003015
-          002712001E0D0013080006030000000000000000000000000000000000000000
-          0000000000000000000000000000000000000000000000000000000000030100
-          0B0400130800190B001E0D00220F00251000261100251000220F001E0D00190B
-          0011070007030001010000000000000000000000000000000000000000000000
-          0000000000000000000000000000000000000000000000000000000000000000
-          0000000100000402000804000B05000F07001007000D06000A05000603000301
-          0000000000000000000000000000000000000000000000000000000000000000
-          0000}
-        Material.Texture.ImageAlpha = tiaSuperBlackTransparent
-        Material.Texture.TextureMode = tmModulate
-        Material.Texture.Disabled = False
-      end>
-    Left = 40
-    Top = 88
-  end
-  object Navigator1: TGLNavigator
-    VirtualUp.Coordinates = {000000000000803F000000000000803F}
-    UseVirtualUp = True
-    AutoUpdateObject = True
-    Left = 40
-    Top = 152
-  end
-  object MovManager: TGLFPSMovementManager
-    Navigator = Navigator1
-    Scene = GLScene1
-    DisplayTime = 2000
-    MovementScale = 4.000000000000000000
-    Left = 128
-    Top = 24
-    MapsData = {
-      0458434F4C02010202061454474C4D6170436F6C6C656374696F6E4974656D02
-      00060E4650534D6F76656D656E744D61700200020006044D6170310200020006
-      0E4650534D6F76656D656E744D61700200020006044D617032}
-  end
-  object GLSimpleNavigation1: TGLSimpleNavigation
-    Form = Owner
-    GLSceneViewer = GLSceneViewer1
-    FormCaption = 'FPSMovement - %FPS'
-    KeyCombinations = <
-      item
-        ShiftState = [ssLeft, ssRight]
-        Action = snaZoom
-      end
-      item
-        ShiftState = [ssLeft]
-        Action = snaMoveAroundTarget
-      end
-      item
-        ShiftState = [ssRight]
-        Action = snaMoveAroundTarget
-      end>
-    Left = 128
-    Top = 152
-  end
-end
+object FormFPSMovement: TFormFPSMovement
+  Left = 209
+  Top = 112
+  Caption = 'FPSMovement'
+  ClientHeight = 383
+  ClientWidth = 588
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  KeyPreview = True
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnKeyDown = FormKeyDown
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 0
+    Top = 0
+    Width = 588
+    Height = 383
+    Camera = ThirdPersonCamera
+    Buffer.BackgroundColor = clBlack
+    Buffer.ShadeModel = smSmooth
+    FieldOfView = 150.733886718750000000
+    PenAsTouch = False
+    Align = alClient
+    TabOrder = 0
+  end
+  object GLScene1: TGLScene
+    Left = 40
+    Top = 24
+    object World: TGLDummyCube
+      CubeSize = 1.000000000000000000
+      object Player: TGLDummyCube
+        Position.Coordinates = {0000803FCDCC8C3F0000803F0000803F}
+        CubeSize = 1.000000000000000000
+        BehavioursData = {
+          0458434F4C02010201060F54474C424650534D6F76656D656E74020012000000
+          000200020002000F6666263F0909060A4D6F764D616E61676572}
+        object PlayerSphere: TGLSphere
+          Radius = 0.649999976158142100
+        end
+        object FirstPersonCamera: TGLCamera
+          DepthOfView = 120.000000000000000000
+          FocalLength = 50.000000000000000000
+          NearPlaneBias = 0.500000000000000000
+          Direction.Coordinates = {00000000000000000000803F00000000}
+          Up.Coordinates = {00000000FFFF7F3F0000008000000000}
+        end
+        object ThirdPersonCamera: TGLCamera
+          DepthOfView = 12000.000000000000000000
+          FocalLength = 50.000000000000000000
+          TargetObject = Player
+          Position.Coordinates = {000000000000803F000000C00000803F}
+        end
+        object GLLightSource1: TGLLightSource
+          ConstAttenuation = 1.000000000000000000
+          Diffuse.Color = {3333733F3333733F3333733F0000803F}
+          SpotCutOff = 180.000000000000000000
+        end
+        object PlayerCentre: TGLSphere
+          Radius = 0.050000000745058060
+        end
+      end
+      object Bot: TGLDummyCube
+        CubeSize = 1.000000000000000000
+        BehavioursData = {
+          0458434F4C02010201060F54474C424650534D6F76656D656E74020012000000
+          000200020002000FCDCCCC3E0909060A4D6F764D616E61676572}
+        object BotCenter: TGLSphere
+          Radius = 0.050000000745058060
+        end
+        object BotSphere: TGLSphere
+          Material.MaterialOptions = [moNoLighting]
+          Material.FaceCulling = fcNoCull
+          Radius = 0.400000005960464500
+        end
+      end
+      object GLLight: TGLLightSource
+        ConstAttenuation = 1.000000000000000000
+        Diffuse.Color = {3333733F3333733F3333733F0000803F}
+        SpotCutOff = 180.000000000000000000
+      end
+      object Map1: TGLFreeForm
+        VisibilityCulling = vcNone
+        Direction.Coordinates = {F7FF7FA7FFFF7FBFE1CD0C3400000000}
+        ShowAxes = True
+        Up.Coordinates = {00000000E2CD0C340000803F00000000}
+        MaterialLibrary = GLMaterialLibrary1
+        LightmapLibrary = GLMaterialLibrary1
+      end
+      object Map2: TGLFreeForm
+        Direction.Coordinates = {000000000000803F0000000000000000}
+        Position.Coordinates = {00000000000000C0000000000000803F}
+        Up.Coordinates = {00000000000000000000803F00000000}
+      end
+    end
+  end
+  object GLCadencer1: TGLCadencer
+    Scene = GLScene1
+    MaxDeltaTime = 0.020000000000000000
+    OnProgress = GLCadencer1Progress
+    Left = 128
+    Top = 88
+  end
+  object GLMaterialLibrary1: TGLMaterialLibrary
+    Materials = <
+      item
+        Name = 'LibMaterial'
+        Tag = 0
+        Material.FrontProperties.Ambient.Color = {0000803F0000803F0000803F0000803F}
+        Material.FrontProperties.Diffuse.Color = {0000803F0000803F0000803F0000803F}
+        Material.FrontProperties.Emission.Color = {0000803F0000803F0000803F0000803F}
+        Material.FrontProperties.Shininess = 100
+        Material.FrontProperties.Specular.Color = {0000803F0000803F0000803F0000803F}
+        Material.BlendingMode = bmAdditive
+        Material.Texture.Image.Picture.Data = {
+          07544269746D6170360C0000424D360C00000000000036000000280000002000
+          0000200000000100180000000000000C0000C30E0000C30E0000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000301000703000A05000D06000F07001007000F07000D06000A05000703
+          0003010000000000000000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000050200
+          0C0500130800190B001E0D00220F00251000261100251000220F001E0D00190B
+          001308000C050005020000000000000000000000000000000000000000000000
+          00000000000000000000000000000000000000000000000301000B0500150900
+          1E0D002712003015003618003C1B003F1C00401D003F1C003C1B003618003015
+          002712001E0D001509000B050002010000000000000000000000000000000000
+          00000000000000000000000000000000000000000502001007001C0C00281200
+          341700401D004A21005225005827005C29005D2A005C29005827005225004A21
+          00401D003417002812001C0C0010070004020000000000000000000000000000
+          0000000000000000000000000000000000060300130800210F003015003F1C00
+          4D23005A2800662E006F32007635007A37007C37007A37007635006F3200662E
+          005A28004D23003F1C00301500210F0013080005020000000000000000000000
+          0000000000000000000000000000050200130800220F00331700451F00572700
+          672E00763500813A00863C008A3D008C3E008C3F008C3E008A3D00863C00813A
+          00763500672E00572700451F00331700220F0013080004010000000000000000
+          0000000000000000000000030100100700210F003317004720005C29006F3200
+          803900883D008F40009442009844009A45009B45009A45009844009442008F40
+          00883D008039006F32005C2900472000331700210F0010070002010000000000
+          00000000000000000000000B05001C0C00301500451F005C2900723300833B00
+          8C3F009542009C4600A14800A64A00A84B00A94C00A84B00A64A00A148009C46
+          009542008C3F00833B007233005C2900451F003015001C0C000A050000000000
+          00000000000000000502001509002812003F1C005727006F3200833B008E3F00
+          984400A14800A84B00AE4E00B35000B65100B75200B65100B35000AE4E00A84B
+          00A148009844008E3F00833B006F32005727003F1C0028120015090003010000
+          00000000000000000C05001E0D003417004D2300672E008039008C3F00984400
+          A24900AC4D00B45000BB5400C05600C35700C45800C35700C05600BB5400B450
+          00AC4D00A249009844008C3F00803900672E004D23003417001E0D000B040000
+          0000000000030100130800271200401D005A2800763500883D00954200A14800
+          AC4D00B65100BF5500C65900CC5B00CF5D00D15D00CF5D00CC5B00C65900BF55
+          00B65100AC4D00A14800954200883D007635005A2800401D0027120013080001
+          0000000000070300190B003015004A2100662E00813A008F40009C4600A84B00
+          B45000BF5500C85A00D15D00D76000DB6200DC6200DB6200D76000D15D00C85A
+          00BF5500B45000A84B009C46008F4000813A00662E004A2100301500190B0004
+          02000000000A05001E0D003618005225006F3200863C00944200A14800AE4E00
+          BB5400C65900D15D00D96100E16400E56600E76700E56600E16400D96100D15D
+          00C65900BB5400AE4E00A14800944200863C006F32005225003618001E0D0008
+          04000000000D0600220F003C1B005827007635008A3D00984400A64A00B35000
+          C05600CC5B00D76000E16400E96800EE6A00F06B00EE6A00E96800E16400D760
+          00CC5B00C05600B35000A64A009844008A3D007635005827003C1B00220F000B
+          05000000000F07002510003F1C005C29007A37008C3E009A4500A84B00B65100
+          C35700CF5D00DB6200E56600EE6A00F56E00F86F00F56E00EE6A00E56600DB62
+          00CF5D00C35700B65100A84B009A45008C3E007A37005C29003F1C002510000F
+          0700000000100700261100401D005D2A007C37008C3F009B4500A94C00B75200
+          C45800D15D00DC6200E76700F06B00F86F00FF7200F86F00F06B00E76700DC62
+          00D15D00C45800B75200A94C009B45008C3F007C37005D2A00401D0026110010
+          07000000000F07002510003F1C005C29007A37008C3E009A4500A84B00B65100
+          C35700CF5D00DB6200E56600EE6A00F56E00F86F00F56E00EE6A00E56600DB62
+          00CF5D00C35700B65100A84B009A45008C3E007A37005C29003F1C002510000D
+          06000000000D0600220F003C1B005827007635008A3D00984400A64A00B35000
+          C05600CC5B00D76000E16400E96800EE6A00F06B00EE6A00E96800E16400D760
+          00CC5B00C05600B35000A64A009844008A3D007635005827003C1B00220F000A
+          05000000000A05001E0D003618005225006F3200863C00944200A14800AE4E00
+          BB5400C65900D15D00D96100E16400E56600E76700E56600E16400D96100D15D
+          00C65900BB5400AE4E00A14800944200863C006F32005225003618001E0D0006
+          0300000000070300190B003015004A2100662E00813A008F40009C4600A84B00
+          B45000BF5500C85A00D15D00D76000DB6200DC6200DB6200D76000D15D00C85A
+          00BF5500B45000A84B009C46008F4000813A00662E004A2100301500190B0003
+          0100000000030100130800271200401D005A2800763500883D00954200A14800
+          AC4D00B65100BF5500C65900CC5B00CF5D00D15D00CF5D00CC5B00C65900BF55
+          00B65100AC4D00A14800954200883D007635005A2800401D0027120011070000
+          00000000000000000C05001E0D003417004D2300672E008039008C3F00984400
+          A24900AC4D00B45000BB5400C05600C35700C45800C35700C05600BB5400B450
+          00AC4D00A249009844008C3F00803900672E004D23003417001E0D0007030000
+          00000000000000000502001509002812003F1C005727006F3200833B008E3F00
+          984400A14800A84B00AE4E00B35000B65100B75200B65100B35000AE4E00A84B
+          00A148009844008E3F00833B006F32005727003F1C0028120013080001010000
+          00000000000000000000000B05001C0C00301500451F005C2900723300833B00
+          8C3F009542009C4600A14800A64A00A84B00A94C00A84B00A64A00A148009C46
+          009542008C3F00833B007233005C2900451F003015001C0C0006030000000000
+          0000000000000000000000020100100700210F003317004720005C29006F3200
+          803900883D008F40009442009844009A45009B45009A45009844009442008F40
+          00883D008039006F32005C2900472000331700210F000B050000000000000000
+          0000000000000000000000000000040200130800220F00331700451F00572700
+          672E00763500813A00863C008A3D008C3E008C3F008C3E008A3D00863C00813A
+          00763500672E00572700451F00331700220F000F060001010000000000000000
+          0000000000000000000000000000000000050200130800210F003015003F1C00
+          4D23005A2800662E006F32007635007A37007C37007A37007635006F3200662E
+          005A28004D23003F1C00301500210F000F060002010000000000000000000000
+          00000000000000000000000000000000000000000401001007001C0C00281200
+          341700401D004A21005225005827005C29005D2A005C29005827005225004A21
+          00401D003417002812001C0C000B050001010000000000000000000000000000
+          00000000000000000000000000000000000000000000000201000A0500150900
+          1E0D002712003015003618003C1B003F1C00401D003F1C003C1B003618003015
+          002712001E0D0013080006030000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000030100
+          0B0400130800190B001E0D00220F00251000261100251000220F001E0D00190B
+          0011070007030001010000000000000000000000000000000000000000000000
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000000100000402000804000B05000F07001007000D06000A05000603000301
+          0000000000000000000000000000000000000000000000000000000000000000
+          0000}
+        Material.Texture.ImageAlpha = tiaSuperBlackTransparent
+        Material.Texture.TextureMode = tmModulate
+        Material.Texture.Disabled = False
+      end>
+    Left = 40
+    Top = 88
+  end
+  object Navigator1: TGLNavigator
+    VirtualUp.Coordinates = {000000000000803F000000000000803F}
+    UseVirtualUp = True
+    AutoUpdateObject = True
+    Left = 40
+    Top = 152
+  end
+  object MovManager: TGLFPSMovementManager
+    Navigator = Navigator1
+    Scene = GLScene1
+    DisplayTime = 2000
+    MovementScale = 4.000000000000000000
+    Left = 128
+    Top = 24
+    MapsData = {
+      0458434F4C02010202061454474C4D6170436F6C6C656374696F6E4974656D02
+      00060E4650534D6F76656D656E744D61700200020006044D6170310200020006
+      0E4650534D6F76656D656E744D61700200020006044D617032}
+  end
+  object GLSimpleNavigation1: TGLSimpleNavigation
+    Form = Owner
+    GLSceneViewer = GLSceneViewer1
+    FormCaption = 'FPSMovement - %FPS'
+    KeyCombinations = <
+      item
+        ShiftState = [ssLeft, ssRight]
+        Action = snaZoom
+      end
+      item
+        ShiftState = [ssLeft]
+        Action = snaMoveAroundTarget
+      end
+      item
+        ShiftState = [ssRight]
+        Action = snaMoveAroundTarget
+      end>
+    Left = 128
+    Top = 152
+  end
+end

+ 202 - 203
Demos/Delphi/behaviours/FPSMovement/Unit1.pas → Demos/Delphi/behaviours/FpsMovementFm.pas

@@ -1,203 +1,202 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.Windows,
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Classes,
-  Vcl.Graphics,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.Dialogs,
-  Vcl.Imaging.Jpeg,
-  Vcl.ExtCtrls,
-  Vcl.StdCtrls,
-
-
-  GLS.Scene,
-  GLS.Texture,
-  GLS.Cadencer,
-  GLS.FPSMovement,
-  GLS.Keyboard,
-  GLS.State,
-  GLS.SceneViewer,
-  GLS.Objects,
-  GLS.Collision,
-  GLS.VectorFileObjects,
-  GLS.Navigator,
-  GLS.VectorLists,
-  GLS.Octree,
-  GLS.File3DS,
-  GLS.VectorGeometry,
-  GLS.GeomObjects,
-  GLS.Material,
-  GLS.Coordinates,
-  GLS.SimpleNavigation,
-  GLS.BaseClasses,
-  GLS.Utils;
-
-type
-  TForm1 = class(TForm)
-    GLScene1: TGLScene;
-    GLSceneViewer1: TGLSceneViewer;
-    GLCadencer1: TGLCadencer;
-    FirstPersonCamera: TGLCamera;
-    Map1: TGLFreeForm;
-    GLMaterialLibrary1: TGLMaterialLibrary;
-    GLLight: TGLLightSource;
-    World: TGLDummyCube;
-    ThirdPersonCamera: TGLCamera;
-    PlayerSphere: TGLSphere;
-    GLLightSource1: TGLLightSource;
-    PlayerCentre: TGLSphere;
-    Player: TGLDummyCube;
-    Map2: TGLFreeForm;
-    Bot: TGLDummyCube;
-    BotCenter: TGLSphere;
-    BotSphere: TGLSphere;
-    Navigator1: TGLNavigator;
-    MovManager: TGLFPSMovementManager;
-    GLSimpleNavigation1: TGLSimpleNavigation;
-    procedure FormCreate(Sender: TObject);
-    procedure FormKeyDown(Sender: TObject; var Key: Word;
-      Shift: TShiftState);
-    procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
-      newTime: Double);
-  private
-  public
-  end;
-
-var
-  Form1: TForm1;
-  behav, behav2: TGLBFPSMovement;
-
-implementation
-
-var
-  yangle: double = 90;
-  xangle: double = 0;
-  //Velocity:TVector=(0,0,0,0);
-  //Gravity:TVector=(0,-9.81*20,0,0);
-  Wireframe: Boolean;
-  //DisplayTime:Integer=2000;
-
-{$R *.dfm}
-
-procedure TForm1.FormCreate(Sender: TObject);
-
-begin
-  SetGLSceneMediaDir;
-  Map1.LoadFromFile('map.3ds');
-  Map1.BuildOctree();
-  Map1.Up.SetVector(0, 1, 0);
-
-  Map2.LoadFromFile('beer.3ds');
-  Map2.BuildOctree;
-
-  ShowCursor(false);
-  SetCursorPos(screen.width div 2, screen.Height div 2);
-
-  behav := GetFPSMovement(player);
-  behav2 := GetFPSMovement(bot);
-end;
-
-procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
-  Shift: TShiftState);
-begin
-  if Key = VK_ESCAPE then
-    Halt;
-
-  //show/hide arrows
-  if key = VK_F1 then
-    behav.ShowArrows := not behav.ShowArrows;
-
-  //pause / unpause
-  if Key = VK_PAUSE then
-    GLCadencer1.Enabled := not GLCadencer1.Enabled;
-  //first person
-  if Key = VK_F2 then
-    GLSceneViewer1.Camera := FirstPersonCamera;
-  //third person
-  if Key = VK_F3 then
-    GLSceneViewer1.Camera := ThirdPersonCamera;
-  // solid / wireframe
-  if iskeydown(VK_F5) then
-  begin
-    WireFrame := not WireFrame;
-    if WireFrame then
-    begin
-      Map1.UseMeshMaterials := false;
-      Map1.Material.PolygonMode := pmLines;
-      map2.UseMeshMaterials := false;
-      Map2.Material.PolygonMode := pmLines;
-    end
-    else
-    begin
-      Map1.UseMeshMaterials := true;
-      Map1.Material.PolygonMode := pmFill;
-      Map2.UseMeshMaterials := true;
-      Map2.Material.PolygonMode := pmFill;
-    end;
-  end;
-end;
-
-procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime,
-  newTime: Double);
-var
-  MovementScale: Single;
-begin
-  MovementScale := Movmanager.MovementScale;
-
-  //then update position according to keys being pressed
-  if IsKeyDown('W') or IsKeyDown('Z') then
-    behav.MoveForward(MovementScale * deltaTime);
-  if IsKeyDown('S') then
-    behav.MoveForward(-MovementScale * deltaTime);
-  if IsKeyDown('A') or IsKeyDown('Q') then
-    behav.StrafeHorizontal(-MovementScale * deltaTime);
-  if IsKeyDown('D') then
-    behav.StrafeHorizontal(MovementScale * deltaTime);
-
-  //move up/down (for debugging)
-  if IsKeyDown(VK_PRIOR) or IsKeyDown(VK_SPACE) then
-    behav.StrafeVertical(MovementScale * deltaTime);
-  if IsKeyDown(VK_NEXT) then
-    behav.StrafeVertical(-MovementScale * deltaTime);
-
-  //move bot
-  if IsKeyDown('I') then
-    behav2.MoveForward(MovementScale * deltaTime);
-  if IsKeyDown('K') then
-    behav2.MoveForward(-MovementScale * deltaTime);
-  if IsKeyDown('J') then
-    behav2.StrafeHorizontal(-MovementScale * deltaTime);
-  if IsKeyDown('L') then
-    behav2.StrafeHorizontal(MovementScale * deltaTime);
-  if IsKeyDown('O') then
-    behav2.StrafeVertical(MovementScale * deltaTime);
-  if IsKeyDown('P') then
-    behav.StrafeVertical(-MovementScale * deltaTime);
-
-  if IsKeyDown(VK_LEFT) then
-    behav.TurnHorizontal(-70 * deltatime);
-  if IsKeyDown(VK_RIGHT) then
-    behav.TurnHorizontal(70 * deltatime);
-  if IsKeyDown(VK_UP) then
-    behav.turnVertical(-70 * deltatime);
-  if IsKeyDown(VK_DOWN) then
-    behav.turnVertical(70 * deltatime);
-
-  //update mouse view
-  xangle := mouse.CursorPos.X - screen.Width / 2;
-  yangle := mouse.CursorPos.Y - screen.Height / 2;
-  setcursorpos(screen.width div 2, screen.Height div 2);
-  behav.TurnHorizontal(xangle * 40 * deltaTime);
-  behav.TurnVertical(-yangle * 20 * deltaTime);
-
-  GLSceneViewer1.Invalidate;
-end;
-
-end.
-
+unit FpsMovementFm;
+
+interface
+
+uses
+  Winapi.Windows,
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.Imaging.Jpeg,
+  Vcl.ExtCtrls,
+  Vcl.StdCtrls,
+
+
+  GLS.Scene,
+  GLS.Texture,
+  GLS.Cadencer,
+  GLS.FPSMovement,
+  GLS.Keyboard,
+  GLS.State,
+  GLS.SceneViewer,
+  GLS.Objects,
+  GLS.Collision,
+  GLS.VectorFileObjects,
+  GLS.Navigator,
+  GLS.VectorLists,
+  GLS.Octree,
+  GLS.File3DS,
+  GLS.VectorGeometry,
+  GLS.GeomObjects,
+  GLS.Material,
+  GLS.Coordinates,
+  GLS.SimpleNavigation,
+  GLS.BaseClasses,
+  GLS.Utils;
+
+type
+  TFormFPSMovement = class(TForm)
+    GLScene1: TGLScene;
+    GLSceneViewer1: TGLSceneViewer;
+    GLCadencer1: TGLCadencer;
+    FirstPersonCamera: TGLCamera;
+    Map1: TGLFreeForm;
+    GLMaterialLibrary1: TGLMaterialLibrary;
+    GLLight: TGLLightSource;
+    World: TGLDummyCube;
+    ThirdPersonCamera: TGLCamera;
+    PlayerSphere: TGLSphere;
+    GLLightSource1: TGLLightSource;
+    PlayerCentre: TGLSphere;
+    Player: TGLDummyCube;
+    Map2: TGLFreeForm;
+    Bot: TGLDummyCube;
+    BotCenter: TGLSphere;
+    BotSphere: TGLSphere;
+    Navigator1: TGLNavigator;
+    MovManager: TGLFPSMovementManager;
+    GLSimpleNavigation1: TGLSimpleNavigation;
+    procedure FormCreate(Sender: TObject);
+    procedure FormKeyDown(Sender: TObject; var Key: Word;
+      Shift: TShiftState);
+    procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
+      newTime: Double);
+  private
+  end;
+
+var
+  FormFPSMovement: TFormFPSMovement;
+  behav, behav2: TGLBFPSMovement;
+
+implementation
+
+var
+  yangle: double = 90;
+  xangle: double = 0;
+  //Velocity:TVector=(0,0,0,0);
+  //Gravity:TVector=(0,-9.81*20,0,0);
+  Wireframe: Boolean;
+  //DisplayTime:Integer=2000;
+
+{$R *.dfm}
+
+procedure TFormFPSMovement.FormCreate(Sender: TObject);
+
+begin
+  SetGLSceneMediaDir;
+  Map1.LoadFromFile('map.3ds');
+  Map1.BuildOctree();
+  Map1.Up.SetVector(0, 1, 0);
+
+  Map2.LoadFromFile('beer.3ds');
+  Map2.BuildOctree;
+
+  ShowCursor(false);
+  SetCursorPos(screen.width div 2, screen.Height div 2);
+
+  behav := GetFPSMovement(player);
+  behav2 := GetFPSMovement(bot);
+end;
+
+procedure TFormFPSMovement.FormKeyDown(Sender: TObject; var Key: Word;
+  Shift: TShiftState);
+begin
+  if Key = VK_ESCAPE then
+    Halt;
+
+  //show/hide arrows
+  if key = VK_F1 then
+    behav.ShowArrows := not behav.ShowArrows;
+
+  //pause / unpause
+  if Key = VK_PAUSE then
+    GLCadencer1.Enabled := not GLCadencer1.Enabled;
+  //first person
+  if Key = VK_F2 then
+    GLSceneViewer1.Camera := FirstPersonCamera;
+  //third person
+  if Key = VK_F3 then
+    GLSceneViewer1.Camera := ThirdPersonCamera;
+  // solid / wireframe
+  if iskeydown(VK_F5) then
+  begin
+    WireFrame := not WireFrame;
+    if WireFrame then
+    begin
+      Map1.UseMeshMaterials := false;
+      Map1.Material.PolygonMode := pmLines;
+      map2.UseMeshMaterials := false;
+      Map2.Material.PolygonMode := pmLines;
+    end
+    else
+    begin
+      Map1.UseMeshMaterials := true;
+      Map1.Material.PolygonMode := pmFill;
+      Map2.UseMeshMaterials := true;
+      Map2.Material.PolygonMode := pmFill;
+    end;
+  end;
+end;
+
+procedure TFormFPSMovement.GLCadencer1Progress(Sender: TObject; const deltaTime,
+  newTime: Double);
+var
+  MovementScale: Single;
+begin
+  MovementScale := Movmanager.MovementScale;
+
+  //then update position according to keys being pressed
+  if IsKeyDown('W') or IsKeyDown('Z') then
+    behav.MoveForward(MovementScale * deltaTime);
+  if IsKeyDown('S') then
+    behav.MoveForward(-MovementScale * deltaTime);
+  if IsKeyDown('A') or IsKeyDown('Q') then
+    behav.StrafeHorizontal(-MovementScale * deltaTime);
+  if IsKeyDown('D') then
+    behav.StrafeHorizontal(MovementScale * deltaTime);
+
+  //move up/down (for debugging)
+  if IsKeyDown(VK_PRIOR) or IsKeyDown(VK_SPACE) then
+    behav.StrafeVertical(MovementScale * deltaTime);
+  if IsKeyDown(VK_NEXT) then
+    behav.StrafeVertical(-MovementScale * deltaTime);
+
+  //move bot
+  if IsKeyDown('I') then
+    behav2.MoveForward(MovementScale * deltaTime);
+  if IsKeyDown('K') then
+    behav2.MoveForward(-MovementScale * deltaTime);
+  if IsKeyDown('J') then
+    behav2.StrafeHorizontal(-MovementScale * deltaTime);
+  if IsKeyDown('L') then
+    behav2.StrafeHorizontal(MovementScale * deltaTime);
+  if IsKeyDown('O') then
+    behav2.StrafeVertical(MovementScale * deltaTime);
+  if IsKeyDown('P') then
+    behav.StrafeVertical(-MovementScale * deltaTime);
+
+  if IsKeyDown(VK_LEFT) then
+    behav.TurnHorizontal(-70 * deltatime);
+  if IsKeyDown(VK_RIGHT) then
+    behav.TurnHorizontal(70 * deltatime);
+  if IsKeyDown(VK_UP) then
+    behav.turnVertical(-70 * deltatime);
+  if IsKeyDown(VK_DOWN) then
+    behav.turnVertical(70 * deltatime);
+
+  //update mouse view
+  xangle := mouse.CursorPos.X - screen.Width / 2;
+  yangle := mouse.CursorPos.Y - screen.Height / 2;
+  setcursorpos(screen.width div 2, screen.Height div 2);
+  behav.TurnHorizontal(xangle * 40 * deltaTime);
+  behav.TurnVertical(-yangle * 20 * deltaTime);
+
+  GLSceneViewer1.Invalidate;
+end;
+
+end.
+

+ 17 - 17
Demos/Delphi/behaviours/pathcontrol/PathControl.dpr → Demos/Delphi/behaviours/PathControl.dpr

@@ -1,18 +1,18 @@
-{: This Form demonstrates basic "Pathcontrol" movements.
-
-   You can modified the Looped property of the path to enable the path-looping.
-   Set ShowPath property to turn on or turn off the path-displaying
-}
-program PathControl;
-
-uses
-  Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.RES}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
+{: This Form demonstrates basic "Pathcontrol" movements.
+
+   You can modified the Looped property of the path to enable the path-looping.
+   Set ShowPath property to turn on or turn off the path-displaying
+}
+program PathControl;
+
+uses
+  Forms,
+  PathControlFm in 'PathControlFm.pas' {FormPathControl};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TFormPathControl, FormPathControl);
+  Application.Run;
 end.

+ 878 - 0
Demos/Delphi/behaviours/PathControl.dproj

@@ -0,0 +1,878 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{DC289D01-30B9-4978-84C6-3E0CC2769071}</ProjectGuid>
+        <MainSource>PathControl.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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;Winapi;$(DCC_Namespace)</DCC_Namespace>
+        <VerInfo_Locale>1049</VerInfo_Locale>
+        <DCC_N>false</DCC_N>
+        <DCC_S>false</DCC_S>
+        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
+        <DCC_K>false</DCC_K>
+        <DCC_E>false</DCC_E>
+        <SanitizedProjectName>PathControl</SanitizedProjectName>
+        <DCC_F>false</DCC_F>
+    </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>
+        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.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>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <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>
+        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="PathControlFm.pas">
+            <Form>FormPathControl</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">PathControl.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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="Win32\Debug\PathControl.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>PathControl.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

BIN
Demos/Delphi/behaviours/PathControl.jpg


+ 102 - 102
Demos/Delphi/behaviours/pathcontrol/Unit1.dfm → Demos/Delphi/behaviours/PathControlFm.dfm

@@ -1,102 +1,102 @@
-object Form1: TForm1
-  Left = 83
-  Top = 95
-  Caption = 'Path Control'
-  ClientHeight = 370
-  ClientWidth = 505
-  Color = clBtnFace
-  Constraints.MinHeight = 200
-  Constraints.MinWidth = 320
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  OldCreateOrder = False
-  OnActivate = FormActivate
-  DesignSize = (
-    505
-    370)
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 0
-    Top = 0
-    Width = 505
-    Height = 370
-    Camera = GLCamera1
-    Buffer.BackgroundColor = clAppWorkSpace
-    FieldOfView = 149.751983642578100000
-    PenAsTouch = False
-    Align = alClient
-    TabOrder = 0
-  end
-  object MoveBtn: TBitBtn
-    Left = 176
-    Top = 13
-    Width = 137
-    Height = 25
-    Anchors = [akLeft, akBottom]
-    Caption = 'Start Movement'
-    TabOrder = 1
-    OnClick = MoveBtnClick
-  end
-  object GLScene1: TGLScene
-    Left = 40
-    Top = 24
-    object DummyCube1: TGLDummyCube
-      CubeSize = 2.000000000000000000
-      VisibleAtRunTime = True
-      object Cube2: TGLCube
-        Material.FrontProperties.Diffuse.Color = {8786063F8786063F0000803F0000803F}
-        Material.FrontProperties.Emission.Color = {0000000000000000A1A0203F0000803F}
-        Position.Coordinates = {0000404000000000000000000000803F}
-      end
-    end
-    object GLLightSource1: TGLLightSource
-      ConstAttenuation = 1.000000000000000000
-      Diffuse.Color = {B8B7373FB8B7373FB8B7373F0000803F}
-      Position.Coordinates = {0000204100000000000020410000803F}
-      SpotCutOff = 180.000000000000000000
-    end
-    object Sphere1: TGLSphere
-      Position.Coordinates = {0000004500002042008009450000803F}
-      Scale.Coordinates = {0000A0400000A0400000A04000000000}
-      Radius = 0.500000000000000000
-    end
-    object GLCamera1: TGLCamera
-      DepthOfView = 500.000000000000000000
-      FocalLength = 50.000000000000000000
-      TargetObject = DummyCube1
-      Position.Coordinates = {00000000000000000000A0410000803F}
-    end
-  end
-  object GLCadencer1: TGLCadencer
-    Scene = GLScene1
-    Enabled = False
-    TimeMultiplier = 2.000000000000000000
-    SleepLength = 10
-    Left = 32
-    Top = 88
-  end
-  object GLSimpleNavigation1: TGLSimpleNavigation
-    Form = Owner
-    GLSceneViewer = GLSceneViewer1
-    FormCaption = 'Path Control - %FPS'
-    KeyCombinations = <
-      item
-        ShiftState = [ssLeft, ssRight]
-        Action = snaZoom
-      end
-      item
-        ShiftState = [ssLeft]
-        Action = snaMoveAroundTarget
-      end
-      item
-        ShiftState = [ssRight]
-        Action = snaMoveAroundTarget
-      end>
-    Left = 128
-    Top = 88
-  end
-end
+object FormPathControl: TFormPathControl
+  Left = 83
+  Top = 95
+  Caption = 'Path Control'
+  ClientHeight = 370
+  ClientWidth = 505
+  Color = clBtnFace
+  Constraints.MinHeight = 200
+  Constraints.MinWidth = 320
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  OnActivate = FormActivate
+  DesignSize = (
+    505
+    370)
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 0
+    Top = 0
+    Width = 505
+    Height = 370
+    Camera = GLCamera1
+    Buffer.BackgroundColor = clAppWorkSpace
+    FieldOfView = 149.751983642578100000
+    PenAsTouch = False
+    Align = alClient
+    TabOrder = 0
+  end
+  object MoveBtn: TBitBtn
+    Left = 176
+    Top = 13
+    Width = 137
+    Height = 25
+    Anchors = [akLeft, akBottom]
+    Caption = 'Start Movement'
+    TabOrder = 1
+    OnClick = MoveBtnClick
+  end
+  object GLScene1: TGLScene
+    Left = 40
+    Top = 24
+    object DummyCube1: TGLDummyCube
+      CubeSize = 2.000000000000000000
+      VisibleAtRunTime = True
+      object Cube2: TGLCube
+        Material.FrontProperties.Diffuse.Color = {8786063F8786063F0000803F0000803F}
+        Material.FrontProperties.Emission.Color = {0000000000000000A1A0203F0000803F}
+        Position.Coordinates = {0000404000000000000000000000803F}
+      end
+    end
+    object GLLightSource1: TGLLightSource
+      ConstAttenuation = 1.000000000000000000
+      Diffuse.Color = {B8B7373FB8B7373FB8B7373F0000803F}
+      Position.Coordinates = {0000204100000000000020410000803F}
+      SpotCutOff = 180.000000000000000000
+    end
+    object Sphere1: TGLSphere
+      Position.Coordinates = {0000004500002042008009450000803F}
+      Scale.Coordinates = {0000A0400000A0400000A04000000000}
+      Radius = 0.500000000000000000
+    end
+    object GLCamera1: TGLCamera
+      DepthOfView = 500.000000000000000000
+      FocalLength = 50.000000000000000000
+      TargetObject = DummyCube1
+      Position.Coordinates = {00000000000000000000A0410000803F}
+    end
+  end
+  object GLCadencer1: TGLCadencer
+    Scene = GLScene1
+    Enabled = False
+    TimeMultiplier = 2.000000000000000000
+    SleepLength = 10
+    Left = 32
+    Top = 88
+  end
+  object GLSimpleNavigation1: TGLSimpleNavigation
+    Form = Owner
+    GLSceneViewer = GLSceneViewer1
+    FormCaption = 'Path Control - %FPS'
+    KeyCombinations = <
+      item
+        ShiftState = [ssLeft, ssRight]
+        Action = snaZoom
+      end
+      item
+        ShiftState = [ssLeft]
+        Action = snaMoveAroundTarget
+      end
+      item
+        ShiftState = [ssRight]
+        Action = snaMoveAroundTarget
+      end>
+    Left = 128
+    Top = 88
+  end
+end

+ 129 - 129
Demos/Delphi/behaviours/pathcontrol/Unit1.pas → Demos/Delphi/behaviours/PathControlFm.pas

@@ -1,129 +1,129 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Classes,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.ComCtrls,
-  Vcl.ExtCtrls,
-  Vcl.StdCtrls,
-  Vcl.Buttons,
-
-  
-  GLS.Scene,
-  GLS.Objects,
-  GLS.VectorGeometry,
-  GLS.Cadencer,
-  GLS.Behaviours,
-  GLS.Graph,
-  GLS.Movement,
-  GLS.VectorTypes,
-  GLS.SceneViewer,
- 
-  GLS.Coordinates,
-  GLS.BaseClasses,
-  GLS.Utils,
-  GLS.SimpleNavigation;
-
-type
-  TForm1 = class(TForm)
-    GLScene1: TGLScene;
-    GLSceneViewer1: TGLSceneViewer;
-    Cube2: TGLCube;
-    GLCamera1: TGLCamera;
-    GLLightSource1: TGLLightSource;
-    DummyCube1: TGLDummyCube;
-    GLCadencer1: TGLCadencer;
-    MoveBtn: TBitBtn;
-    Sphere1: TGLSphere;
-    GLSimpleNavigation1: TGLSimpleNavigation;
-    procedure FormActivate(Sender: TObject);
-    procedure MoveBtnClick(Sender: TObject);
-  private
-    procedure PathTravelStop(Sender: TObject; Path: TGLMovementPath; var Looped: Boolean);
-    procedure PathAllTravelledOver(Sender: TObject);
-  public
-  end;
-
-var
-  Form1: TForm1;
-
-implementation
-
-{$R *.DFM}
-
-procedure TForm1.FormActivate(Sender: TObject);
-var
-  Movement: TGLMovement;
-  Path:     TGLMovementPath;
-  Node:     TGLPathNode;
-begin
-  // Create a movement, a path and the first node of the path.
-  Movement   := GetOrCreateMovement(Cube2);
-  Movement.OnPathTravelStop := PathTravelStop;
-  Movement.OnAllPathTravelledOver := PathAllTravelledOver;
-  Path       := Movement.AddPath;
-  Path.ShowPath := True;
-
-  // Path.StartTime := 2;
-  // Path.Looped := True;
-
-  Node       := Path.AddNodeFromObject(Cube2);
-  Node.Speed := 4.0;
-
-  // Add a node.
-  Node       := Path.AddNode;
-  Node.Speed := 4.0;
-  Node.PositionAsVector := VectorMake(-10, 0, 0, 1);
-  Node.RotationAsVector := VectorMake(0, 0, 0);
-
-  // Add a node.
-  Node       := Path.AddNode;
-  Node.Speed := 4.0;
-  Node.PositionAsVector := VectorMake(0, 5, - 5);
-  Node.RotationAsVector := VectorMake(0, 90, 0);
-
-  // Add a node.
-  Node       := Path.AddNode;
-  Node.Speed := 4.0;
-  Node.PositionAsVector := VectorMake(6, - 5, 2);
-  Node.RotationAsVector := VectorMake(0, 180, 0);
-
-  // Add a node.
-  Node       := Path.AddNode;
-  Node.Speed := 4.0;
-  Node.PositionAsVector := VectorMake(-6, 0, 0);
-  Node.RotationAsVector := VectorMake(0, 259, 0);
-
-  // Activatived the current path.
-  Movement.ActivePathIndex := 0;
-end;
-
-procedure TForm1.MoveBtnClick(Sender: TObject);
-var
-  Movement: TGLMovement;
-begin
-  Movement := GetMovement(Cube2);
-  if Assigned(Movement) then begin
-      Movement.StartPathTravel;
-      GLCadencer1.Enabled := True;
-  end;
-end;
-
-procedure TForm1.PathTravelStop(Sender: TObject; Path: TGLMovementPath; var Looped: Boolean);
-begin
-   if not Application.Terminated then
-      InformationDlg('Path Travel Stopped');
-end;
-
-procedure TForm1.PathAllTravelledOver(Sender: TObject);
-begin
-   if not Application.Terminated then
-      InformationDlg('All Path(es) Traveled Over');
-end;
-
-end.
+unit PathControlFm;
+
+interface
+
+uses
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Classes,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.ComCtrls,
+  Vcl.ExtCtrls,
+  Vcl.StdCtrls,
+  Vcl.Buttons,
+
+  
+  GLS.Scene,
+  GLS.Objects,
+  GLS.VectorGeometry,
+  GLS.Cadencer,
+  GLS.Behaviours,
+  GLS.Graph,
+  GLS.Movement,
+  GLS.VectorTypes,
+  GLS.SceneViewer,
+ 
+  GLS.Coordinates,
+  GLS.BaseClasses,
+  GLS.Utils,
+  GLS.SimpleNavigation;
+
+type
+  TFormPathControl = class(TForm)
+    GLScene1: TGLScene;
+    GLSceneViewer1: TGLSceneViewer;
+    Cube2: TGLCube;
+    GLCamera1: TGLCamera;
+    GLLightSource1: TGLLightSource;
+    DummyCube1: TGLDummyCube;
+    GLCadencer1: TGLCadencer;
+    MoveBtn: TBitBtn;
+    Sphere1: TGLSphere;
+    GLSimpleNavigation1: TGLSimpleNavigation;
+    procedure FormActivate(Sender: TObject);
+    procedure MoveBtnClick(Sender: TObject);
+  private
+    procedure PathTravelStop(Sender: TObject; Path: TGLMovementPath; var Looped: Boolean);
+    procedure PathAllTravelledOver(Sender: TObject);
+  public
+  end;
+
+var
+  FormPathControl: TFormPathControl;
+
+implementation
+
+{$R *.DFM}
+
+procedure TFormPathControl.FormActivate(Sender: TObject);
+var
+  Movement: TGLMovement;
+  Path:     TGLMovementPath;
+  Node:     TGLPathNode;
+begin
+  // Create a movement, a path and the first node of the path.
+  Movement   := GetOrCreateMovement(Cube2);
+  Movement.OnPathTravelStop := PathTravelStop;
+  Movement.OnAllPathTravelledOver := PathAllTravelledOver;
+  Path       := Movement.AddPath;
+  Path.ShowPath := True;
+
+  // Path.StartTime := 2;
+  // Path.Looped := True;
+
+  Node       := Path.AddNodeFromObject(Cube2);
+  Node.Speed := 4.0;
+
+  // Add a node.
+  Node       := Path.AddNode;
+  Node.Speed := 4.0;
+  Node.PositionAsVector := VectorMake(-10, 0, 0, 1);
+  Node.RotationAsVector := VectorMake(0, 0, 0);
+
+  // Add a node.
+  Node       := Path.AddNode;
+  Node.Speed := 4.0;
+  Node.PositionAsVector := VectorMake(0, 5, - 5);
+  Node.RotationAsVector := VectorMake(0, 90, 0);
+
+  // Add a node.
+  Node       := Path.AddNode;
+  Node.Speed := 4.0;
+  Node.PositionAsVector := VectorMake(6, - 5, 2);
+  Node.RotationAsVector := VectorMake(0, 180, 0);
+
+  // Add a node.
+  Node       := Path.AddNode;
+  Node.Speed := 4.0;
+  Node.PositionAsVector := VectorMake(-6, 0, 0);
+  Node.RotationAsVector := VectorMake(0, 259, 0);
+
+  // Activatived the current path.
+  Movement.ActivePathIndex := 0;
+end;
+
+procedure TFormPathControl.MoveBtnClick(Sender: TObject);
+var
+  Movement: TGLMovement;
+begin
+  Movement := GetMovement(Cube2);
+  if Assigned(Movement) then begin
+      Movement.StartPathTravel;
+      GLCadencer1.Enabled := True;
+  end;
+end;
+
+procedure TFormPathControl.PathTravelStop(Sender: TObject; Path: TGLMovementPath; var Looped: Boolean);
+begin
+   if not Application.Terminated then
+      InformationDlg('Path Travel Stopped');
+end;
+
+procedure TFormPathControl.PathAllTravelledOver(Sender: TObject);
+begin
+   if not Application.Terminated then
+      InformationDlg('All Path(es) Traveled Over');
+end;
+
+end.

+ 32 - 32
Demos/Delphi/behaviours/torque/Torque.dpr → Demos/Delphi/behaviours/Torque.dpr

@@ -1,32 +1,32 @@
-{: This is a basic use for TGLBInertia behaviour.
-
-	There are three objects, which we assign three different dampings, and we
-	apply a torque to the object under the mouse pointer, other are left along
-	with their inertia (and damping makes them progressively reduce their speed).<br>
-	There is also a checkbox to double the objects mass.
-
-	Notice how the constant damping stops abruptly the dodecahedron, while the
-	the octahedron, once spinned, is slowing down but never really stops.<br>
-	However, don't show this sample to your science teacher, since our "torque"
-	is actually an angular acceleration in degrees that gets affected by the
-	object's mass... Anyway, it looks like a real torque is applied.
-
-	Note that the inertia behaviour could have been accessed directly with a
-	TGLBInertia(Behaviours[0]) for all objects in this sample, but using the
-	helper function GetOrCreateInertia is a more convenient (and resilient) way,
-	since it will automatically add an inertia behaviour to our object if it
-	doesn't have one.
-}
-program Torque;
-
-uses
-  Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.RES}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+{: This is a basic use for TGLBInertia behaviour.
+
+	There are three objects, which we assign three different dampings, and we
+	apply a torque to the object under the mouse pointer, other are left along
+	with their inertia (and damping makes them progressively reduce their speed).<br>
+	There is also a checkbox to double the objects mass.
+
+	Notice how the constant damping stops abruptly the dodecahedron, while the
+	the octahedron, once spinned, is slowing down but never really stops.<br>
+	However, don't show this sample to your science teacher, since our "torque"
+	is actually an angular acceleration in degrees that gets affected by the
+	object's mass... Anyway, it looks like a real torque is applied.
+
+	Note that the inertia behaviour could have been accessed directly with a
+	TGLBInertia(Behaviours[0]) for all objects in this sample, but using the
+	helper function GetOrCreateInertia is a more convenient (and resilient) way,
+	since it will automatically add an inertia behaviour to our object if it
+	doesn't have one.
+}
+program Torque;
+
+uses
+  Forms,
+  TorqueFm in 'TorqueFm.pas' {FormTorque};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TFormTorque, FormTorque);
+  Application.Run;
+end.

+ 881 - 0
Demos/Delphi/behaviours/Torque.dproj

@@ -0,0 +1,881 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{5461A80C-FA24-42D4-89AF-DC7F6A5F4F60}</ProjectGuid>
+        <MainSource>Torque.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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>
+        <VerInfo_Locale>1049</VerInfo_Locale>
+        <DCC_N>false</DCC_N>
+        <DCC_S>false</DCC_S>
+        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
+        <DCC_K>false</DCC_K>
+        <DCC_E>false</DCC_E>
+        <SanitizedProjectName>Torque</SanitizedProjectName>
+        <DCC_F>false</DCC_F>
+    </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>
+        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.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>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <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>
+        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_RangeChecking>true</DCC_RangeChecking>
+        <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
+        <Debugger_DebugSourcePath>D:\GLScene\Source\;$(Debugger_DebugSourcePath)</Debugger_DebugSourcePath>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="TorqueFm.pas">
+            <Form>FormTorque</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">Torque.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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="Win32\Debug\Torque.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>Torque.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

BIN
Demos/Delphi/behaviours/Torque.jpg


+ 211 - 209
Demos/Delphi/behaviours/torque/Unit1.dfm → Demos/Delphi/behaviours/TorqueFm.dfm

@@ -1,209 +1,211 @@
-object Form1: TForm1
-  Left = 125
-  Top = 119
-  BorderWidth = 5
-  Caption = 'Torque'
-  ClientHeight = 330
-  ClientWidth = 635
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  OldCreateOrder = False
-  Position = poScreenCenter
-  WindowState = wsMaximized
-  OnCreate = FormCreate
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 0
-    Top = 78
-    Width = 635
-    Height = 211
-    Camera = GLCamera1
-    Buffer.BackgroundColor = clBlack
-    FieldOfView = 93.066192626953130000
-    PenAsTouch = False
-    Align = alClient
-    OnMouseDown = GLSceneViewer1MouseDown
-    OnMouseMove = GLSceneViewer1MouseMove
-    TabOrder = 0
-  end
-  object Panel1: TPanel
-    Left = 0
-    Top = 0
-    Width = 635
-    Height = 78
-    Align = alTop
-    TabOrder = 1
-    object lHexahedron: TLabel
-      Left = 280
-      Top = 8
-      Width = 116
-      Height = 39
-      Alignment = taCenter
-      Caption = 'Hexahedron has a small constant'#13#10'and linear damping'
-      WordWrap = True
-    end
-    object lDodecahedron: TLabel
-      Left = 472
-      Top = 8
-      Width = 100
-      Height = 39
-      Alignment = taCenter
-      Caption = 'Dodecahedron has a'#13#10'small constant and'#13#10'quadratic damping'
-      WordWrap = True
-    end
-    object lOctagedron: TLabel
-      Left = 128
-      Top = 8
-      Width = 109
-      Height = 26
-      Alignment = taCenter
-      Caption = 'Octahedron has a'#13#10'only quadratic damping'
-      WordWrap = True
-    end
-    object lTetrahedron: TLabel
-      Left = 8
-      Top = 10
-      Width = 84
-      Height = 39
-      Caption = 'Tetrahedron has an only quadratic damping'
-      WordWrap = True
-    end
-    object lIcosahedron: TLabel
-      Left = 604
-      Top = 8
-      Width = 117
-      Height = 39
-      Alignment = taCenter
-      Caption = 'Icosahedron has a small constant'#13#10'and linear damping'
-      WordWrap = True
-    end
-    object CheckBox1: TCheckBox
-      Left = 8
-      Top = 55
-      Width = 81
-      Height = 17
-      Caption = 'Double Mass'
-      TabOrder = 0
-      OnClick = CheckBox1Click
-    end
-  end
-  object PanelBottom: TPanel
-    Left = 0
-    Top = 289
-    Width = 635
-    Height = 41
-    Align = alBottom
-    Caption = 
-      'Move your mouse over an object and it will start spinning. Click' +
-      ' to get info.'
-    TabOrder = 2
-  end
-  object GLScene1: TGLScene
-    Left = 16
-    Top = 80
-    object GLCamera1: TGLCamera
-      DepthOfView = 100.000000000000000000
-      FocalLength = 100.000000000000000000
-      TargetObject = DummyCube1
-      Position.Coordinates = {000020410000A040000000000000803F}
-    end
-    object GLLightSource1: TGLLightSource
-      ConstAttenuation = 1.000000000000000000
-      Position.Coordinates = {0000704100002041000020C10000803F}
-      SpotCutOff = 180.000000000000000000
-    end
-    object HUDText: TGLHUDText
-      Position.Coordinates = {00009643000048430000F0410000803F}
-      BitmapFont = GLBitmapFont1
-      Text = 'Hello'
-      Rotation = 0.000000000000000000
-    end
-    object DummyCube1: TGLDummyCube
-      CubeSize = 1.000000000000000000
-      object Tetrahedron: TGLTetrahedron
-        Material.FrontProperties.Diffuse.Color = {BEBEBE3E999F1F3F999F1F3F0000803F}
-        Material.BlendingMode = bmTransparency
-        Direction.Coordinates = {2EF9E43E000000002EF9643F00000000}
-        Position.Coordinates = {0000000000000000000080400000803F}
-        Scale.Coordinates = {0000003F0000003F0000003F00000000}
-      end
-      object Octahedron: TGLOctahedron
-        Material.FrontProperties.Diffuse.Color = {CDCC4C3FF8FEFE3EACC8483E0000803F}
-        Position.Coordinates = {0000000000000000000000400000803F}
-        Scale.Coordinates = {CDCC4C3FCDCC4C3FCDCC4C3F00000000}
-      end
-      object Cube: TGLCube
-        Material.FrontProperties.Diffuse.Color = {F8FEFE3E0000803F000000000000803F}
-        Direction.Coordinates = {0000003F00000000D7B35D3F00000000}
-        TurnAngle = 30.000000000000000000
-      end
-      object Hexahedron: TGLHexahedron
-        Material.FrontProperties.Diffuse.Color = {9A99593F9A99593FCDCCCC3D0000803F}
-        Material.Texture.ImageClassName = 'TGLPicFileImage'
-        Direction.Coordinates = {0000003F00000000D7B35D3F00000000}
-        Position.Coordinates = {0000A0C000000000333333C00000803F}
-        Scale.Coordinates = {0000003F0000003F0000003F00000000}
-        TurnAngle = 30.000000000000000000
-      end
-      object Dodecahedron: TGLDodecahedron
-        Material.FrontProperties.Diffuse.Color = {0000803F00000000000000000000803F}
-        Position.Coordinates = {0000000000000000000000C00000803F}
-        Scale.Coordinates = {9A99993F9A99993F9A99993F00000000}
-      end
-      object Icosahedron: TGLIcosahedron
-        Material.FrontProperties.Diffuse.Color = {14AE073F8FC2F53DD7A3F03E0000803F}
-        Position.Coordinates = {0000000000000000000080C00000803F}
-        Scale.Coordinates = {9A99993F9A99993F9A99993F00000000}
-      end
-      object Teapot: TGLTeapot
-        Material.FrontProperties.Diffuse.Color = {1F856B3F14AE473F52B81E3F0000803F}
-        Direction.Coordinates = {010000BF00000000D7B35D3F00000000}
-        Position.Coordinates = {0000404000000000000000000000803F}
-        Scale.Coordinates = {0000C03F0000C03F0000C03F00000000}
-        TurnAngle = -30.000000000000000000
-      end
-      object Torus: TGLTorus
-        Material.FrontProperties.Diffuse.Color = {85EB513F85EB113F1F85EB3E0000803F}
-        Material.FaceCulling = fcCull
-        Position.Coordinates = {0000C03F00000040CDCCCC3F0000803F}
-        MajorRadius = 0.400000005960464500
-        MinorRadius = 0.100000001490116100
-        StopAngle = 360.000000000000000000
-        Parts = [toSides, toStartDisk, toStopDisk]
-      end
-      object Superellipsoid: TGLSuperellipsoid
-        Material.FrontProperties.Diffuse.Color = {0000803F0000003F000000000000803F}
-        Material.Texture.ImageClassName = 'TGLPicFileImage'
-        Position.Coordinates = {000090C000000000000000000000803F}
-        Scale.Coordinates = {0000C03F0000C03F0000C03F00000000}
-        Radius = 0.500000000000000000
-        VCurve = 1.000000000000000000
-        HCurve = 1.000000000000000000
-        Slices = 8
-        Stacks = 8
-      end
-    end
-  end
-  object GLCadencer1: TGLCadencer
-    Scene = GLScene1
-    OnProgress = GLCadencer1Progress
-    Left = 88
-    Top = 80
-  end
-  object GLBitmapFont1: TGLBitmapFont
-    GlyphsIntervalX = 1
-    GlyphsIntervalY = 1
-    Ranges = <>
-    CharWidth = 30
-    CharHeight = 30
-    HSpace = 3
-    VSpace = 6
-    Left = 184
-    Top = 80
-  end
-end
+object FormTorque: TFormTorque
+  Left = 125
+  Top = 119
+  BorderWidth = 5
+  Caption = 'Torque'
+  ClientHeight = 407
+  ClientWidth = 751
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 0
+    Top = 78
+    Width = 751
+    Height = 288
+    Camera = GLCamera1
+    Buffer.BackgroundColor = clBlack
+    FieldOfView = 110.444335937500000000
+    PenAsTouch = False
+    Align = alClient
+    OnMouseDown = GLSceneViewer1MouseDown
+    OnMouseMove = GLSceneViewer1MouseMove
+    TabOrder = 0
+  end
+  object Panel1: TPanel
+    Left = 0
+    Top = 0
+    Width = 751
+    Height = 78
+    Align = alTop
+    TabOrder = 1
+    ExplicitWidth = 615
+    object lHexahedron: TLabel
+      Left = 280
+      Top = 8
+      Width = 116
+      Height = 39
+      Alignment = taCenter
+      Caption = 'Hexahedron has a small constant'#13#10'and linear damping'
+      WordWrap = True
+    end
+    object lDodecahedron: TLabel
+      Left = 472
+      Top = 8
+      Width = 100
+      Height = 39
+      Alignment = taCenter
+      Caption = 'Dodecahedron has a'#13#10'small constant and'#13#10'quadratic damping'
+      WordWrap = True
+    end
+    object lOctagedron: TLabel
+      Left = 128
+      Top = 8
+      Width = 109
+      Height = 26
+      Alignment = taCenter
+      Caption = 'Octahedron has a'#13#10'only quadratic damping'
+      WordWrap = True
+    end
+    object lTetrahedron: TLabel
+      Left = 8
+      Top = 10
+      Width = 84
+      Height = 39
+      Caption = 'Tetrahedron has an only quadratic damping'
+      WordWrap = True
+    end
+    object lIcosahedron: TLabel
+      Left = 604
+      Top = 8
+      Width = 117
+      Height = 39
+      Alignment = taCenter
+      Caption = 'Icosahedron has a small constant'#13#10'and linear damping'
+      WordWrap = True
+    end
+    object CheckBox1: TCheckBox
+      Left = 8
+      Top = 55
+      Width = 81
+      Height = 17
+      Caption = 'Double Mass'
+      TabOrder = 0
+      OnClick = CheckBox1Click
+    end
+  end
+  object PanelBottom: TPanel
+    Left = 0
+    Top = 366
+    Width = 751
+    Height = 41
+    Align = alBottom
+    Caption = 
+      'Move your mouse over an object and it will start spinning. Click' +
+      ' to get info.'
+    TabOrder = 2
+    ExplicitTop = 269
+    ExplicitWidth = 615
+  end
+  object GLScene1: TGLScene
+    Left = 16
+    Top = 80
+    object GLCamera1: TGLCamera
+      DepthOfView = 100.000000000000000000
+      FocalLength = 100.000000000000000000
+      TargetObject = DummyCube1
+      Position.Coordinates = {000020410000A040000000000000803F}
+    end
+    object GLLightSource1: TGLLightSource
+      ConstAttenuation = 1.000000000000000000
+      Position.Coordinates = {0000704100002041000020C10000803F}
+      SpotCutOff = 180.000000000000000000
+    end
+    object HUDText: TGLHUDText
+      Position.Coordinates = {00009643000048430000F0410000803F}
+      BitmapFont = GLBitmapFont1
+      Text = 'Hello'
+      Rotation = 0.000000000000000000
+    end
+    object DummyCube1: TGLDummyCube
+      CubeSize = 1.000000000000000000
+      object Tetrahedron: TGLTetrahedron
+        Material.FrontProperties.Diffuse.Color = {BEBEBE3E999F1F3F999F1F3F0000803F}
+        Material.BlendingMode = bmTransparency
+        Direction.Coordinates = {2EF9E43E000000002EF9643F00000000}
+        Position.Coordinates = {0000000000000000000080400000803F}
+        Scale.Coordinates = {0000003F0000003F0000003F00000000}
+      end
+      object Octahedron: TGLOctahedron
+        Material.FrontProperties.Diffuse.Color = {CDCC4C3FF8FEFE3EACC8483E0000803F}
+        Position.Coordinates = {0000000000000000000000400000803F}
+        Scale.Coordinates = {CDCC4C3FCDCC4C3FCDCC4C3F00000000}
+      end
+      object Cube: TGLCube
+        Material.FrontProperties.Diffuse.Color = {F8FEFE3E0000803F000000000000803F}
+        Direction.Coordinates = {0000003F00000000D7B35D3F00000000}
+        TurnAngle = 30.000000000000000000
+      end
+      object Hexahedron: TGLHexahedron
+        Material.FrontProperties.Diffuse.Color = {9A99593F9A99593FCDCCCC3D0000803F}
+        Material.Texture.ImageClassName = 'TGLPicFileImage'
+        Direction.Coordinates = {0000003F00000000D7B35D3F00000000}
+        Position.Coordinates = {0000A0C000000000333333C00000803F}
+        Scale.Coordinates = {0000003F0000003F0000003F00000000}
+        TurnAngle = 30.000000000000000000
+      end
+      object Dodecahedron: TGLDodecahedron
+        Material.FrontProperties.Diffuse.Color = {0000803F00000000000000000000803F}
+        Position.Coordinates = {0000000000000000000000C00000803F}
+        Scale.Coordinates = {9A99993F9A99993F9A99993F00000000}
+      end
+      object Icosahedron: TGLIcosahedron
+        Material.FrontProperties.Diffuse.Color = {14AE073F8FC2F53DD7A3F03E0000803F}
+        Position.Coordinates = {0000000000000000000080C00000803F}
+        Scale.Coordinates = {9A99993F9A99993F9A99993F00000000}
+      end
+      object Teapot: TGLTeapot
+        Material.FrontProperties.Diffuse.Color = {1F856B3F14AE473F52B81E3F0000803F}
+        Direction.Coordinates = {010000BF00000000D7B35D3F00000000}
+        Position.Coordinates = {0000404000000000000000000000803F}
+        Scale.Coordinates = {0000C03F0000C03F0000C03F00000000}
+        TurnAngle = -30.000000000000000000
+      end
+      object Torus: TGLTorus
+        Material.FrontProperties.Diffuse.Color = {85EB513F85EB113F1F85EB3E0000803F}
+        Material.FaceCulling = fcCull
+        Position.Coordinates = {0000C03F00000040CDCCCC3F0000803F}
+        MajorRadius = 0.400000005960464500
+        MinorRadius = 0.100000001490116100
+        StopAngle = 360.000000000000000000
+        Parts = [toSides, toStartDisk, toStopDisk]
+      end
+      object Superellipsoid: TGLSuperellipsoid
+        Material.FrontProperties.Diffuse.Color = {0000803F0000003F000000000000803F}
+        Material.Texture.ImageClassName = 'TGLPicFileImage'
+        Position.Coordinates = {000090C000000000000000000000803F}
+        Scale.Coordinates = {0000C03F0000C03F0000C03F00000000}
+        Radius = 0.500000000000000000
+        VCurve = 1.000000000000000000
+        HCurve = 1.000000000000000000
+        Slices = 8
+        Stacks = 8
+      end
+    end
+  end
+  object GLCadencer1: TGLCadencer
+    Scene = GLScene1
+    OnProgress = GLCadencer1Progress
+    Left = 88
+    Top = 80
+  end
+  object GLBitmapFont1: TGLBitmapFont
+    GlyphsIntervalX = 1
+    GlyphsIntervalY = 1
+    Ranges = <>
+    CharWidth = 30
+    CharHeight = 30
+    HSpace = 3
+    VSpace = 6
+    Left = 184
+    Top = 80
+  end
+end

+ 162 - 162
Demos/Delphi/behaviours/torque/Unit1.pas → Demos/Delphi/behaviours/TorqueFm.pas

@@ -1,162 +1,162 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.OpenGL,
-  System.Classes,
-  System.SysUtils,
-  Vcl.Forms,
-  Vcl.StdCtrls,
-  Vcl.ExtCtrls,
-  Vcl.Controls,
-  Vcl.Dialogs,
-  Vcl.Imaging.jpeg,
-  
-  GLS.Objects,
-  GLS.Scene,
-  GLS.PersistentClasses,
-  GLS.Cadencer,
-  GLS.SceneViewer,
-  
-  GLS.Coordinates,
-  GLS.BaseClasses,
-  GLS.Behaviours,
-  GLS.HUDObjects,
-  GLS.Color,
-  GLS.BitmapFont,
-  GLS.GeomObjects,
-  GLS.RenderContextInfo,
-  GLS.Utils,
-  GLS.Mesh,
-  GLS.VectorFileObjects;
-
-type
-  TForm1 = class(TForm)
-    GLSceneViewer1: TGLSceneViewer;
-    GLScene1: TGLScene;
-    GLCamera1: TGLCamera;
-    GLLightSource1: TGLLightSource;
-    DummyCube1: TGLDummyCube;
-    GLCadencer1: TGLCadencer;
-    Panel1: TPanel;
-    lHexahedron: TLabel;
-    lDodecahedron: TLabel;
-    lOctagedron: TLabel;
-    CheckBox1: TCheckBox;
-    PanelBottom: TPanel;
-    lTetrahedron: TLabel;
-    lIcosahedron: TLabel;
-    Dodecahedron: TGLDodecahedron;
-    Icosahedron: TGLIcosahedron;
-    Cube: TGLCube;
-    Octahedron: TGLOctahedron;
-    Tetrahedron: TGLTetrahedron;
-    HUDText: TGLHUDText;
-    GLBitmapFont1: TGLBitmapFont;
-    Teapot: TGLTeapot;
-    Superellipsoid: TGLSuperellipsoid;
-    Hexahedron: TGLHexahedron;
-    Torus: TGLTorus;
-    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
-      X, Y: Integer);
-    procedure FormCreate(Sender: TObject);
-    procedure CheckBox1Click(Sender: TObject);
-    procedure GLCadencer1Progress(Sender: TObject;
-      const deltaTime, newTime: Double);
-    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
-      Shift: TShiftState; X, Y: Integer);
-  private
-    lastTime: Double;
-    pickedObject: TGLBaseSceneObject;
-  public
-    //
-  end;
-
-var
-  Form1: TForm1;
-
-implementation
-
-{$R *.DFM}
-
-procedure TForm1.FormCreate(Sender: TObject);
-begin
-  // Load the font bitmap from media dir
-  SetGLSceneMediaDir();
-  GLBitmapFont1.Glyphs.LoadFromFile('darkgold_font.bmp');
-  // Initialize last time
-  lastTime := Now * 3600 * 24;
-  // Initialize rotation dampings...
-  // ...using properties...
-  with GetOrCreateInertia(Cube.Behaviours).RotationDamping do
-  begin
-    Constant := 1;
-    Linear := 1;
-    Quadratic := 0;
-  end;
-  // ...using helper function on the TGLBehaviours...
-  GetOrCreateInertia(Tetrahedron.Behaviours).RotationDamping.SetDamping(0, 0, 0.01);
-  // ...or using helper function directly on the TGLBaseSceneObject
-  GetOrCreateInertia(Octahedron.Behaviours).RotationDamping.SetDamping(0, 0, 0.01);
-  GetOrCreateInertia(Hexahedron.Behaviours).RotationDamping.SetDamping(5, 0, 0.01);
-  GetOrCreateInertia(Dodecahedron.Behaviours).RotationDamping.SetDamping(10, 0, 0.01);
-  GetOrCreateInertia(Icosahedron.Behaviours).RotationDamping.SetDamping(0, 0, 0.01);
-
-  GetOrCreateInertia(Torus.Behaviours).RotationDamping.SetDamping(10, 0, 0.01);
-  GetOrCreateInertia(Superellipsoid.Behaviours).RotationDamping.SetDamping(10, 0, 0.01);
-  GetOrCreateInertia(Teapot.Behaviours).RotationDamping.SetDamping(0, 0, 0.01);
-end;
-
-procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
-  Shift: TShiftState; X, Y: Integer);
-var
-  pickedObject: TGLCustomSceneObject;
-  oldColor: TColorVector;
-  rci: TGLRenderContextInfo;
-begin
-  // if an object is picked...
-  pickedObject := (GLSceneViewer1.Buffer.GetPickedObject(X, Y) as TGLCustomSceneObject);
-  if Assigned(pickedObject) then
-  begin
-    oldColor := pickedObject.Material.FrontProperties.Emission.Color;
-    //...turn it to yellow and show its name
-    pickedObject.Material.FrontProperties.Emission.Color := clrYellow;
-    ShowMessage('You clicked the ' + pickedObject.Name);
-    pickedObject.BuildList(rci);
-///    HUDText.Text := 'Calculated Volume:+ '#13#10 + 'Vertices:'#13#10#13#10 + 'Faces:'#13#10#13#10 + 'Edges:';
-    pickedObject.Material.FrontProperties.Emission.Color := oldColor;
-  end;
-end;
-
-procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
-  X, Y: Integer);
-begin
-  // Mouse moved, get what's underneath
-  pickedObject := GLSceneViewer1.Buffer.GetPickedObject(X, Y);
-end;
-
-procedure TForm1.GLCadencer1Progress(Sender: TObject;
-  const deltaTime, newTime: Double);
-begin
-  // apply some "torque" to the pickedObject if any
-  if Assigned(pickedObject) then
-    GetOrCreateInertia(pickedObject).ApplyTorque(deltaTime, 200, 0, 0);
-  GLSceneViewer1.Invalidate;
-end;
-
-procedure TForm1.CheckBox1Click(Sender: TObject);
-var
-  i: Integer;
-  mass: Single;
-begin
-  if CheckBox1.Checked then
-    mass := 2
-  else
-    mass := 1;
-  // all our objects are child of the DummyCube1
-  for i := 0 to DummyCube1.Count - 1 do
-    GetOrCreateInertia(DummyCube1.Children[i]).mass := mass;
-end;
-
-end.
+unit TorqueFm;
+
+interface
+
+uses
+  Winapi.OpenGL,
+  System.Classes,
+  System.SysUtils,
+  Vcl.Forms,
+  Vcl.StdCtrls,
+  Vcl.ExtCtrls,
+  Vcl.Controls,
+  Vcl.Dialogs,
+  Vcl.Imaging.jpeg,
+  
+  GLS.Objects,
+  GLS.Scene,
+  GLS.PersistentClasses,
+  GLS.Cadencer,
+  GLS.SceneViewer,
+  
+  GLS.Coordinates,
+  GLS.BaseClasses,
+  GLS.Behaviours,
+  GLS.HUDObjects,
+  GLS.Color,
+  GLS.BitmapFont,
+  GLS.GeomObjects,
+  GLS.RenderContextInfo,
+  GLS.Utils,
+  GLS.Mesh,
+  GLS.VectorFileObjects;
+
+type
+  TFormTorque = class(TForm)
+    GLSceneViewer1: TGLSceneViewer;
+    GLScene1: TGLScene;
+    GLCamera1: TGLCamera;
+    GLLightSource1: TGLLightSource;
+    DummyCube1: TGLDummyCube;
+    GLCadencer1: TGLCadencer;
+    Panel1: TPanel;
+    lHexahedron: TLabel;
+    lDodecahedron: TLabel;
+    lOctagedron: TLabel;
+    CheckBox1: TCheckBox;
+    PanelBottom: TPanel;
+    lTetrahedron: TLabel;
+    lIcosahedron: TLabel;
+    Dodecahedron: TGLDodecahedron;
+    Icosahedron: TGLIcosahedron;
+    Cube: TGLCube;
+    Octahedron: TGLOctahedron;
+    Tetrahedron: TGLTetrahedron;
+    HUDText: TGLHUDText;
+    GLBitmapFont1: TGLBitmapFont;
+    Teapot: TGLTeapot;
+    Superellipsoid: TGLSuperellipsoid;
+    Hexahedron: TGLHexahedron;
+    Torus: TGLTorus;
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
+      X, Y: Integer);
+    procedure FormCreate(Sender: TObject);
+    procedure CheckBox1Click(Sender: TObject);
+    procedure GLCadencer1Progress(Sender: TObject;
+      const deltaTime, newTime: Double);
+    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+  private
+    lastTime: Double;
+    pickedObject: TGLBaseSceneObject;
+  public
+    //
+  end;
+
+var
+  FormTorque: TFormTorque;
+
+implementation
+
+{$R *.DFM}
+
+procedure TFormTorque.FormCreate(Sender: TObject);
+begin
+  // Load the font bitmap from media dir
+  SetGLSceneMediaDir();
+  GLBitmapFont1.Glyphs.LoadFromFile('darkgold_font.bmp');
+  // Initialize last time
+  lastTime := Now * 3600 * 24;
+  // Initialize rotation dampings...
+  // ...using properties...
+  with GetOrCreateInertia(Cube.Behaviours).RotationDamping do
+  begin
+    Constant := 1;
+    Linear := 1;
+    Quadratic := 0;
+  end;
+  // ...using helper function on the TGLBehaviours...
+  GetOrCreateInertia(Tetrahedron.Behaviours).RotationDamping.SetDamping(0, 0, 0.01);
+  // ...or using helper function directly on the TGLBaseSceneObject
+  GetOrCreateInertia(Octahedron.Behaviours).RotationDamping.SetDamping(0, 0, 0.01);
+  GetOrCreateInertia(Hexahedron.Behaviours).RotationDamping.SetDamping(5, 0, 0.01);
+  GetOrCreateInertia(Dodecahedron.Behaviours).RotationDamping.SetDamping(10, 0, 0.01);
+  GetOrCreateInertia(Icosahedron.Behaviours).RotationDamping.SetDamping(0, 0, 0.01);
+
+  GetOrCreateInertia(Torus.Behaviours).RotationDamping.SetDamping(10, 0, 0.01);
+  GetOrCreateInertia(Superellipsoid.Behaviours).RotationDamping.SetDamping(10, 0, 0.01);
+  GetOrCreateInertia(Teapot.Behaviours).RotationDamping.SetDamping(0, 0, 0.01);
+end;
+
+procedure TFormTorque.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+var
+  pickedObject: TGLCustomSceneObject;
+  oldColor: TColorVector;
+  rci: TGLRenderContextInfo;
+begin
+  // if an object is picked...
+  pickedObject := (GLSceneViewer1.Buffer.GetPickedObject(X, Y) as TGLCustomSceneObject);
+  if Assigned(pickedObject) then
+  begin
+    oldColor := pickedObject.Material.FrontProperties.Emission.Color;
+    //...turn it to yellow and show its name
+    pickedObject.Material.FrontProperties.Emission.Color := clrYellow;
+    ShowMessage('You clicked the ' + pickedObject.Name);
+    pickedObject.BuildList(rci);
+///    HUDText.Text := 'Calculated Volume:+ '#13#10 + 'Vertices:'#13#10#13#10 + 'Faces:'#13#10#13#10 + 'Edges:';
+    pickedObject.Material.FrontProperties.Emission.Color := oldColor;
+  end;
+end;
+
+procedure TFormTorque.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
+  X, Y: Integer);
+begin
+  // Mouse moved, get what's underneath
+  pickedObject := GLSceneViewer1.Buffer.GetPickedObject(X, Y);
+end;
+
+procedure TFormTorque.GLCadencer1Progress(Sender: TObject;
+  const deltaTime, newTime: Double);
+begin
+  // apply some "torque" to the pickedObject if any
+  if Assigned(pickedObject) then
+    GetOrCreateInertia(pickedObject).ApplyTorque(deltaTime, 200, 0, 0);
+  GLSceneViewer1.Invalidate;
+end;
+
+procedure TFormTorque.CheckBox1Click(Sender: TObject);
+var
+  i: Integer;
+  mass: Single;
+begin
+  if CheckBox1.Checked then
+    mass := 2
+  else
+    mass := 1;
+  // all our objects are child of the DummyCube1
+  for i := 0 to DummyCube1.Count - 1 do
+    GetOrCreateInertia(DummyCube1.Children[i]).mass := mass;
+end;
+
+end.

+ 72 - 0
Demos/Delphi/behaviours/aBehaviours.groupproj

@@ -0,0 +1,72 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{2E3221B1-5B2C-430B-8087-B9633A920509}</ProjectGuid>
+    </PropertyGroup>
+    <ItemGroup>
+        <Projects Include="DceDemo.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="FpsMovement.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="PathControl.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="Torque.dproj">
+            <Dependencies/>
+        </Projects>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Default.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Default.Personality/>
+        </BorlandProject>
+    </ProjectExtensions>
+    <Target Name="DceDemo">
+        <MSBuild Projects="DceDemo.dproj"/>
+    </Target>
+    <Target Name="DceDemo:Clean">
+        <MSBuild Projects="DceDemo.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="DceDemo:Make">
+        <MSBuild Projects="DceDemo.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="FpsMovement">
+        <MSBuild Projects="FpsMovement.dproj"/>
+    </Target>
+    <Target Name="FpsMovement:Clean">
+        <MSBuild Projects="FpsMovement.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="FpsMovement:Make">
+        <MSBuild Projects="FpsMovement.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="PathControl">
+        <MSBuild Projects="PathControl.dproj"/>
+    </Target>
+    <Target Name="PathControl:Clean">
+        <MSBuild Projects="PathControl.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="PathControl:Make">
+        <MSBuild Projects="PathControl.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="Torque">
+        <MSBuild Projects="Torque.dproj"/>
+    </Target>
+    <Target Name="Torque:Clean">
+        <MSBuild Projects="Torque.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="Torque:Make">
+        <MSBuild Projects="Torque.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="Build">
+        <CallTarget Targets="DceDemo;FpsMovement;PathControl;Torque"/>
+    </Target>
+    <Target Name="Clean">
+        <CallTarget Targets="DceDemo:Clean;FpsMovement:Clean;PathControl:Clean;Torque:Clean"/>
+    </Target>
+    <Target Name="Make">
+        <CallTarget Targets="DceDemo:Make;FpsMovement:Make;PathControl:Make;Torque:Make"/>
+    </Target>
+    <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
+</Project>

+ 4 - 4
Demos/Delphi/behaviours/behaviours.htm → Demos/Delphi/behaviours/aBehaviours.htm

@@ -13,24 +13,24 @@ style="tab-interval:35.4pt">
 <p class="MsoPlainText"><font size="4" face="Courier New"><b>Behaviours&nbsp;:</b></font></p>
 
 <ul>
-    <li><a href="torque/torque.dpr"><b>torque</b></a><b>&nbsp;:</b><ul>
+    <li><a href="torque.dpr"><b>torque</b></a><b>&nbsp;:</b><ul>
             <li>using the inertia behaviour for interface
                 animations (Drakan-like effect)</li>
             <li>accessing behaviours in the code</li>
         </ul>
     </li>
-    <li><a href="pathcontrol/pathcontrol.dpr"><b>pathcontrol</b></a><b>&nbsp;:</b><ul>
+    <li><a href="pathcontrol.dpr"><b>pathcontrol</b></a><b>&nbsp;:</b><ul>
             <li>using the inertia movement behaviour to move
                 objects along a path</li>
         </ul>
     </li>
-    <li><a href="FPSMovement/FPSMovement.dpr"><b>FPSMovement</b></a><b>&nbsp;:</b><ul>
+    <li><a href="FPSMovement.dpr"><b>FPSMovement</b></a><b>&nbsp;:</b><ul>
             <li>using the FPSMovement behaviour and manager
             to simulate FPS-like movement inside freeForm maps</li>
         </ul>
     </li>
 
-    <li><a href="DCEDemo/dceDemo.dpr"><b>DCEDemo</b></a><b>&nbsp;:</b><ul>
+    <li><a href="DceDemo.dpr"><b>DCEDemo</b></a><b>&nbsp;:</b><ul>
             <li>This is a basic use for the Dynamic Collision Engine (DCE). A TGLDCEManager, and several TGLBDCEBody behaviours on the objects that should interact.</li>
         </ul>
     </li>

+ 0 - 172
Demos/Delphi/behaviours/pathcontrol/PathControl.dproj

@@ -1,172 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{DC289D01-30B9-4978-84C6-3E0CC2769071}</ProjectGuid>
-        <MainSource>PathControl.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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;Winapi;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_Locale>1049</VerInfo_Locale>
-        <DCC_N>false</DCC_N>
-        <DCC_S>false</DCC_S>
-        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
-        <DCC_K>false</DCC_K>
-        <DCC_E>false</DCC_E>
-        <SanitizedProjectName>PathControl</SanitizedProjectName>
-        <DCC_F>false</DCC_F>
-    </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>
-        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.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>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win64)'!=''">
-        <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>
-        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_Optimize>false</DCC_Optimize>
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">PathControl.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 0 - 175
Demos/Delphi/behaviours/torque/Torque.dproj

@@ -1,175 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{5461A80C-FA24-42D4-89AF-DC7F6A5F4F60}</ProjectGuid>
-        <MainSource>Torque.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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>
-        <VerInfo_Locale>1049</VerInfo_Locale>
-        <DCC_N>false</DCC_N>
-        <DCC_S>false</DCC_S>
-        <VerInfo_Keys>CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments=;CFBundleName=</VerInfo_Keys>
-        <DCC_K>false</DCC_K>
-        <DCC_E>false</DCC_E>
-        <SanitizedProjectName>Torque</SanitizedProjectName>
-        <DCC_F>false</DCC_F>
-    </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>
-        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.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>
-        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win64)'!=''">
-        <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>
-        <DCC_DcuOutput>$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_Optimize>false</DCC_Optimize>
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_RangeChecking>true</DCC_RangeChecking>
-        <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
-        <Debugger_DebugSourcePath>D:\GLScene\Source\;$(Debugger_DebugSourcePath)</Debugger_DebugSourcePath>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">Torque.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 0 - 96
Demos/Delphi/bench/Bench.groupproj

@@ -1,96 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{341965AB-200C-4FBA-929C-1BDB8FFE4F34}</ProjectGuid>
-    </PropertyGroup>
-    <ItemGroup>
-        <Projects Include="canvas\canvas.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="megacube\Megacube.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="megaglasscube\Megaglasscube.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="smoking\smoking.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="volcano\volcano.dproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="whirlwind\Whirlwind.dproj">
-            <Dependencies/>
-        </Projects>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Default.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Default.Personality/>
-        </BorlandProject>
-    </ProjectExtensions>
-    <Target Name="canvas">
-        <MSBuild Projects="canvas\canvas.dproj"/>
-    </Target>
-    <Target Name="canvas:Clean">
-        <MSBuild Projects="canvas\canvas.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="canvas:Make">
-        <MSBuild Projects="canvas\canvas.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="Megacube">
-        <MSBuild Projects="megacube\Megacube.dproj"/>
-    </Target>
-    <Target Name="Megacube:Clean">
-        <MSBuild Projects="megacube\Megacube.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="Megacube:Make">
-        <MSBuild Projects="megacube\Megacube.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="Megaglasscube">
-        <MSBuild Projects="megaglasscube\Megaglasscube.dproj"/>
-    </Target>
-    <Target Name="Megaglasscube:Clean">
-        <MSBuild Projects="megaglasscube\Megaglasscube.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="Megaglasscube:Make">
-        <MSBuild Projects="megaglasscube\Megaglasscube.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="smoking">
-        <MSBuild Projects="smoking\smoking.dproj"/>
-    </Target>
-    <Target Name="smoking:Clean">
-        <MSBuild Projects="smoking\smoking.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="smoking:Make">
-        <MSBuild Projects="smoking\smoking.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="volcano">
-        <MSBuild Projects="volcano\volcano.dproj"/>
-    </Target>
-    <Target Name="volcano:Clean">
-        <MSBuild Projects="volcano\volcano.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="volcano:Make">
-        <MSBuild Projects="volcano\volcano.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="Whirlwind">
-        <MSBuild Projects="whirlwind\Whirlwind.dproj"/>
-    </Target>
-    <Target Name="Whirlwind:Clean">
-        <MSBuild Projects="whirlwind\Whirlwind.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="Whirlwind:Make">
-        <MSBuild Projects="whirlwind\Whirlwind.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="Build">
-        <CallTarget Targets="canvas;Megacube;Megaglasscube;smoking;volcano;Whirlwind"/>
-    </Target>
-    <Target Name="Clean">
-        <CallTarget Targets="canvas:Clean;Megacube:Clean;Megaglasscube:Clean;smoking:Clean;volcano:Clean;Whirlwind:Clean"/>
-    </Target>
-    <Target Name="Make">
-        <CallTarget Targets="canvas:Make;Megacube:Make;Megaglasscube:Make;smoking:Make;volcano:Make;Whirlwind:Make"/>
-    </Target>
-    <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
-</Project>

+ 34 - 34
Demos/Delphi/bench/canvas/canvas.dpr → Demos/Delphi/bench/Canvas.dpr

@@ -1,34 +1,34 @@
-{: Benchmark for GLCanvas.
-
-   This project pits TGLCanvas against TCanvas in direct mode (hardware
-   acceleration should be available on both sides).
-   You may usually bet on TGLCanvas being 3 to 5 times faster, but on fast 3D
-   hardware, or when PenWidth is not 1, the performance ratio can reach 1:100.
-   However, this is not really an apples-to-apples comparison, because GDI
-   (or any other software implementations) are useless when it comes to drawing
-   to an OpenGL buffer, so, this is more to show that GLCanvas is far from
-   a "decelerator" if you have some 2D stuff to draw on your 3D Scene.
-
-   Figures for PenWidth = 1, GLCanvas / GDI
-
-   CPU         Graphics Board    Lines          Ellipses         Points       TextOut
-
-   Tbird 1.2   GF3 Ti200         5.2 / 227      64 /  756        27 / 408     75 / 208
-   ----29/09/02 - Added TextOut bench
-   Tbird 1.2   GF2 Pro           7.1 / 162       92 /  557       40 / 223
-   Duron 800   TNT2 M64        105.0 / 571      400 / 1148      126 / 676
-   ----21/01/02 - Initial
-}
-program canvas;
-
-uses
-  Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.res}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+{: Benchmark for GLCanvas.
+
+   This project pits TGLCanvas against TCanvas in direct mode (hardware
+   acceleration should be available on both sides).
+   You may usually bet on TGLCanvas being 3 to 5 times faster, but on fast 3D
+   hardware, or when PenWidth is not 1, the performance ratio can reach 1:100.
+   However, this is not really an apples-to-apples comparison, because GDI
+   (or any other software implementations) are useless when it comes to drawing
+   to an OpenGL buffer, so, this is more to show that GLCanvas is far from
+   a "decelerator" if you have some 2D stuff to draw on your 3D Scene.
+
+   Figures for PenWidth = 1, GLCanvas / GDI
+
+   CPU         Graphics Board    Lines          Ellipses         Points       TextOut
+
+   Tbird 1.2   GF3 Ti200         5.2 / 227      64 /  756        27 / 408     75 / 208
+   ----29/09/02 - Added TextOut bench
+   Tbird 1.2   GF2 Pro           7.1 / 162       92 /  557       40 / 223
+   Duron 800   TNT2 M64        105.0 / 571      400 / 1148      126 / 676
+   ----21/01/02 - Initial
+}
+program Canvas;
+
+uses
+  Forms,
+  CanvasFm in 'CanvasFm.pas' {FormCanvas};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TFormCanvas, FormCanvas);
+  Application.Run;
+end.

+ 867 - 0
Demos/Delphi/bench/Canvas.dproj

@@ -0,0 +1,867 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{323318E3-CFBB-4AE1-8EED-9707B34527D4}</ProjectGuid>
+        <MainSource>Canvas.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
+        <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>
+        <DCC_K>false</DCC_K>
+        <SanitizedProjectName>canvas</SanitizedProjectName>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_F>false</DCC_F>
+        <DCC_ImageBase>00400000</DCC_ImageBase>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_Optimize>false</DCC_Optimize>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="CanvasFm.pas">
+            <Form>FormCanvas</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">Canvas.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp260.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="Canvas.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>Canvas.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

+ 148 - 148
Demos/Delphi/bench/canvas/Unit1.dfm → Demos/Delphi/bench/CanvasFm.dfm

@@ -1,148 +1,148 @@
-object Form1: TForm1
-  Left = 151
-  Top = 105
-  BorderStyle = bsDialog
-  Caption = 'GLCanvas vs GDI'
-  ClientHeight = 329
-  ClientWidth = 537
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  OldCreateOrder = False
-  PixelsPerInch = 96
-  TextHeight = 13
-  object PaintBox: TPaintBox
-    Left = 272
-    Top = 64
-    Width = 256
-    Height = 256
-  end
-  object LAGLCanvas: TLabel
-    Left = 8
-    Top = 48
-    Width = 76
-    Height = 13
-    Caption = 'GLCanvas: N/A'
-  end
-  object LAGDI: TLabel
-    Left = 272
-    Top = 48
-    Width = 45
-    Height = 13
-    Caption = 'GDI: N/A'
-  end
-  object Bevel1: TBevel
-    Left = 267
-    Top = 48
-    Width = 2
-    Height = 273
-  end
-  object BULines: TButton
-    Left = 8
-    Top = 8
-    Width = 73
-    Height = 25
-    Caption = '20k Lines'
-    TabOrder = 0
-    OnClick = BULinesClick
-  end
-  object BUEllipses: TButton
-    Left = 88
-    Top = 8
-    Width = 73
-    Height = 25
-    Caption = '20k Ellipses'
-    TabOrder = 1
-    OnClick = BUEllipsesClick
-  end
-  object GLSceneViewer: TGLSceneViewer
-    Left = 8
-    Top = 64
-    Width = 256
-    Height = 256
-    Camera = GLCamera1
-    Buffer.Lighting = False
-    FieldOfView = 137.326278686523400000
-    PenAsTouch = False
-    TabOrder = 2
-  end
-  object RBPenWidth1: TRadioButton
-    Left = 432
-    Top = 8
-    Width = 89
-    Height = 17
-    Caption = 'Pen Width = 1'
-    Checked = True
-    TabOrder = 3
-    TabStop = True
-  end
-  object RBPenWidth2: TRadioButton
-    Left = 432
-    Top = 24
-    Width = 89
-    Height = 17
-    Caption = 'Pen Width = 2'
-    TabOrder = 4
-  end
-  object BUArc: TButton
-    Left = 168
-    Top = 35
-    Width = 73
-    Height = 25
-    Caption = '20k Arcs'
-    TabOrder = 8
-    OnClick = BUArcClick
-  end
-  object BUPoints: TButton
-    Left = 248
-    Top = 8
-    Width = 73
-    Height = 25
-    Caption = '200k Points'
-    TabOrder = 5
-    OnClick = BUPointsClick
-  end
-  object BURects: TButton
-    Left = 168
-    Top = 8
-    Width = 73
-    Height = 25
-    Caption = '20k Rects'
-    TabOrder = 6
-    OnClick = BURectsClick
-  end
-  object BUTextOut: TButton
-    Left = 328
-    Top = 8
-    Width = 73
-    Height = 25
-    Caption = '20k TextOut'
-    TabOrder = 7
-    OnClick = BUTextOutClick
-  end
-  object GLScene1: TGLScene
-    Left = 16
-    Top = 72
-    object GLDirectOpenGL1: TGLDirectOpenGL
-      UseBuildList = False
-      OnRender = GLDirectOpenGL1Render
-      Blend = False
-    end
-    object GLCamera1: TGLCamera
-      DepthOfView = 100.000000000000000000
-      FocalLength = 50.000000000000000000
-    end
-  end
-  object WindowsBitmapFont: TGLWindowsBitmapFont
-    Font.Charset = DEFAULT_CHARSET
-    Font.Color = clWhite
-    Font.Height = -11
-    Font.Name = 'Arial'
-    Font.Style = []
-    Left = 96
-    Top = 72
-  end
-end
+object FormCanvas: TFormCanvas
+  Left = 151
+  Top = 105
+  BorderStyle = bsDialog
+  Caption = 'GLCanvas vs GDI'
+  ClientHeight = 329
+  ClientWidth = 537
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object PaintBox: TPaintBox
+    Left = 272
+    Top = 64
+    Width = 256
+    Height = 256
+  end
+  object LAGLCanvas: TLabel
+    Left = 8
+    Top = 48
+    Width = 76
+    Height = 13
+    Caption = 'GLCanvas: N/A'
+  end
+  object LAGDI: TLabel
+    Left = 272
+    Top = 48
+    Width = 45
+    Height = 13
+    Caption = 'GDI: N/A'
+  end
+  object Bevel1: TBevel
+    Left = 267
+    Top = 48
+    Width = 2
+    Height = 273
+  end
+  object BULines: TButton
+    Left = 8
+    Top = 8
+    Width = 73
+    Height = 25
+    Caption = '20k Lines'
+    TabOrder = 0
+    OnClick = BULinesClick
+  end
+  object BUEllipses: TButton
+    Left = 88
+    Top = 8
+    Width = 73
+    Height = 25
+    Caption = '20k Ellipses'
+    TabOrder = 1
+    OnClick = BUEllipsesClick
+  end
+  object GLSceneViewer: TGLSceneViewer
+    Left = 8
+    Top = 64
+    Width = 256
+    Height = 256
+    Camera = GLCamera1
+    Buffer.Lighting = False
+    FieldOfView = 137.326278686523400000
+    PenAsTouch = False
+    TabOrder = 2
+  end
+  object RBPenWidth1: TRadioButton
+    Left = 432
+    Top = 8
+    Width = 89
+    Height = 17
+    Caption = 'Pen Width = 1'
+    Checked = True
+    TabOrder = 3
+    TabStop = True
+  end
+  object RBPenWidth2: TRadioButton
+    Left = 432
+    Top = 24
+    Width = 89
+    Height = 17
+    Caption = 'Pen Width = 2'
+    TabOrder = 4
+  end
+  object BUArc: TButton
+    Left = 168
+    Top = 35
+    Width = 73
+    Height = 25
+    Caption = '20k Arcs'
+    TabOrder = 8
+    OnClick = BUArcClick
+  end
+  object BUPoints: TButton
+    Left = 248
+    Top = 8
+    Width = 73
+    Height = 25
+    Caption = '200k Points'
+    TabOrder = 5
+    OnClick = BUPointsClick
+  end
+  object BURects: TButton
+    Left = 168
+    Top = 8
+    Width = 73
+    Height = 25
+    Caption = '20k Rects'
+    TabOrder = 6
+    OnClick = BURectsClick
+  end
+  object BUTextOut: TButton
+    Left = 328
+    Top = 8
+    Width = 73
+    Height = 25
+    Caption = '20k TextOut'
+    TabOrder = 7
+    OnClick = BUTextOutClick
+  end
+  object GLScene1: TGLScene
+    Left = 16
+    Top = 72
+    object GLDirectOpenGL1: TGLDirectOpenGL
+      UseBuildList = False
+      OnRender = GLDirectOpenGL1Render
+      Blend = False
+    end
+    object GLCamera1: TGLCamera
+      DepthOfView = 100.000000000000000000
+      FocalLength = 50.000000000000000000
+    end
+  end
+  object WindowsBitmapFont: TGLWindowsBitmapFont
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWhite
+    Font.Height = -11
+    Font.Name = 'Arial'
+    Font.Style = []
+    Left = 96
+    Top = 72
+  end
+end

+ 290 - 290
Demos/Delphi/bench/canvas/Unit1.pas → Demos/Delphi/bench/CanvasFm.pas

@@ -1,290 +1,290 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Classes,
-  System.Math,
-  System.Types,
-  Vcl.Graphics,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.Dialogs,
-  Vcl.ExtCtrls,
-  Vcl.StdCtrls,
-
-  
-  GLS.Scene,
-  GLS.SceneViewer,
-  GLS.BitmapFont,
-  GLS.WindowsFont,
-  GLS.Coordinates,
- 
-  GLS.BaseClasses,
-  GLS.Canvas,
-  GLS.Texture,
-  GLS.RenderContextInfo,
-  GLS.Utils;
-
-type
-  TForm1 = class(TForm)
-    BULines: TButton;
-    BUEllipses: TButton;
-    GLSceneViewer: TGLSceneViewer;
-    PaintBox: TPaintBox;
-    LAGLCanvas: TLabel;
-    LAGDI: TLabel;
-    Bevel1: TBevel;
-    GLScene1: TGLScene;
-    GLCamera1: TGLCamera;
-    RBPenWidth1: TRadioButton;
-    RBPenWidth2: TRadioButton;
-    BUPoints: TButton;
-    BURects: TButton;
-    BUTextOut: TButton;
-    WindowsBitmapFont: TGLWindowsBitmapFont;
-    GLDirectOpenGL1: TGLDirectOpenGL;
-    procedure BULinesClick(Sender: TObject);
-    procedure BUEllipsesClick(Sender: TObject);
-    procedure BUPointsClick(Sender: TObject);
-    procedure BURectsClick(Sender: TObject);
-    procedure BUTextOutClick(Sender: TObject);
-    procedure GLDirectOpenGL1Render(Sender: TObject;
-      var rci: TGLRenderContextInfo);
-    procedure BUArcClick(Sender: TObject);
-  private
-     
-    procedure PaintTheBox;
-    procedure Bench;
-  public
-     
-  end;
-
-var
-  Form1: TForm1;
-
-implementation
-
-{$R *.dfm}
-
-type
-  TWhat = (wLines, wEllipses, wRects, wPoints, wTextOut, wArcs);
-
-var
-  vWhat: TWhat;
-  vPenWidth: Integer;
-
-const
-  cNbLines = 20000;
-  cNbEllipses = 20000;
-  cNbRects = 5000;
-  cNbPoints = 200000;
-  cNbTextOuts = 20000;
-  cNbArcs = 20000;
-
-procedure TForm1.BULinesClick(Sender: TObject);
-begin
-  vWhat := wLines;
-  Bench;
-end;
-
-procedure TForm1.BUArcClick(Sender: TObject);
-begin
-  vWhat := wArcs;
-  Bench;
-end;
-
-procedure TForm1.BUEllipsesClick(Sender: TObject);
-begin
-  vWhat := wEllipses;
-  Bench;
-end;
-
-procedure TForm1.BURectsClick(Sender: TObject);
-begin
-  vWhat := wRects;
-  Bench;
-end;
-
-procedure TForm1.BUPointsClick(Sender: TObject);
-begin
-  vWhat := wPoints;
-  Bench;
-end;
-
-procedure TForm1.BUTextOutClick(Sender: TObject);
-begin
-  vWhat := wTextOut;
-  Bench;
-end;
-
-procedure TForm1.Bench;
-var
-  t: Int64;
-begin
-  if RBPenWidth1.Checked then
-    vPenWidth := 1
-  else
-    vPenWidth := 2;
-
-  Application.ProcessMessages;
-  RandSeed := 0;
-
-  t := StartPrecisionTimer;
-  GLSceneViewer.Refresh;
-  LAGLCanvas.Caption := Format('GLCanvas: %.2f msec',
-    [StopPrecisionTimer(t) * 1000]);
-
-  Application.ProcessMessages;
-  RandSeed := 0;
-
-  t := StartPrecisionTimer;
-  PaintTheBox;
-  LAGDI.Caption := Format('GDI: %.1f msec', [StopPrecisionTimer(t) * 1000]);
-end;
-
-procedure TForm1.GLDirectOpenGL1Render(Sender: TObject;
-  var rci: TGLRenderContextInfo);
-var
-  i, x, y: Integer;
-  glc: TGLCanvas;
-  r: TRect;
-  color: TColor;
-begin
-  glc := TGLCanvas.Create(256, 256);
-  with glc do
-  begin
-    PenWidth := vPenWidth;
-    case vWhat of
-      wLines:
-        begin
-          for i := 1 to cNbLines do
-          begin
-            PenColor := Random(256 * 256 * 256);
-            MoveTo(Random(256), Random(256));
-            LineTo(Random(256), Random(256));
-          end;
-        end;
-      wEllipses:
-        for i := 1 to cNbEllipses do
-        begin
-          PenColor := Random(256 * 256 * 256);
-          EllipseBB(Random(256), Random(256), Random(256), Random(256));
-        end;
-      wRects:
-        for i := 1 to cNbRects do
-        begin
-          PenColor := Random(256 * 256 * 256);
-          r := Rect(Random(256), Random(256), Random(256), Random(256));
-          FillRect(r.Left, r.Top, r.Right, r.Bottom);
-        end;
-      wPoints:
-        begin
-          for i := 1 to cNbPoints do
-          begin
-            PenColor := Random(256 * 256 * 256);
-            PlotPixel(Random(256), Random(256));
-          end;
-        end;
-      wTextOut:
-        begin
-          for i := 1 to cNbTextOuts do
-          begin
-            color := Random(256 * 256 * 256);
-            x := Random(256);
-            y := Random(256);
-            WindowsBitmapFont.TextOut(rci, x, y, 'Hello', color);
-          end;
-        end;
-      wArcs:
-        begin
-          for i := 1 to cNbEllipses do
-          begin
-            PenColor := Random(256 * 256 * 256);
-            Arc(Random(256), Random(256), Random(256), Random(256), Random(256),
-              Random(256), Random(256), Random(256))
-          end;
-        end;
-    end;
-  end;
-  glc.Free;
-end;
-
-procedure TForm1.PaintTheBox;
-var
-  i, x, y: Integer;
-  r: TRect;
-  b: TBitmap;
-begin
-  // to be fair, use offscreen painting...
-  b := TBitmap.Create;
-  b.Width := 256;
-  b.Height := 256;
-  with b.Canvas do
-  begin
-    Brush.Style := bsClear;
-    Pen.Width := vPenWidth;
-    case vWhat of
-      wLines:
-        begin
-          for i := 1 to cNbLines do
-          begin
-            Pen.color := Random(256 * 256 * 256);
-            MoveTo(Random(256), Random(256));
-            LineTo(Random(256), Random(256));
-          end;
-        end;
-      wEllipses:
-        begin
-          for i := 1 to cNbEllipses do
-          begin
-            Pen.color := Random(256 * 256 * 256);
-            Ellipse(Random(256), Random(256), Random(256), Random(256));
-          end;
-        end;
-      wRects:
-        begin
-          Brush.Style := bsSolid;
-          for i := 1 to cNbRects do
-          begin
-            Brush.color := Random(256 * 256 * 256);
-            r := Rect(Random(256), Random(256), Random(256), Random(256));
-            FillRect(r);
-          end;
-        end;
-      wPoints:
-        begin
-          for i := 1 to cNbPoints do
-          begin
-            Pixels[Random(256), Random(256)] := Random(256 * 256 * 256);
-          end;
-        end;
-      wTextOut:
-        begin
-          Font := WindowsBitmapFont.Font;
-          for i := 1 to cNbTextOuts do
-          begin
-            Font.color := Random(256 * 256 * 256);
-            x := Random(256);
-            y := Random(256);
-            TextOut(x, y, 'Hello');
-          end
-        end;
-      wArcs:
-        begin
-          for i := 1 to cNbEllipses do
-          begin
-            Pen.color := Random(256 * 256 * 256);
-            Arc(Random(256), Random(256), Random(256), Random(256), Random(256),
-              Random(256), Random(256), Random(256))
-          end;
-        end;
-    end;
-  end;
-  PaintBox.Canvas.Draw(0, 0, b);
-  b.Free;
-end;
-
-end.
+unit CanvasFm;
+
+interface
+
+uses
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Classes,
+  System.Math,
+  System.Types,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.ExtCtrls,
+  Vcl.StdCtrls,
+
+  
+  GLS.Scene,
+  GLS.SceneViewer,
+  GLS.BitmapFont,
+  GLS.WindowsFont,
+  GLS.Coordinates,
+ 
+  GLS.BaseClasses,
+  GLS.Canvas,
+  GLS.Texture,
+  GLS.RenderContextInfo,
+  GLS.Utils;
+
+type
+  TFormCanvas = class(TForm)
+    BULines: TButton;
+    BUEllipses: TButton;
+    GLSceneViewer: TGLSceneViewer;
+    PaintBox: TPaintBox;
+    LAGLCanvas: TLabel;
+    LAGDI: TLabel;
+    Bevel1: TBevel;
+    GLScene1: TGLScene;
+    GLCamera1: TGLCamera;
+    RBPenWidth1: TRadioButton;
+    RBPenWidth2: TRadioButton;
+    BUPoints: TButton;
+    BURects: TButton;
+    BUTextOut: TButton;
+    WindowsBitmapFont: TGLWindowsBitmapFont;
+    GLDirectOpenGL1: TGLDirectOpenGL;
+    procedure BULinesClick(Sender: TObject);
+    procedure BUEllipsesClick(Sender: TObject);
+    procedure BUPointsClick(Sender: TObject);
+    procedure BURectsClick(Sender: TObject);
+    procedure BUTextOutClick(Sender: TObject);
+    procedure GLDirectOpenGL1Render(Sender: TObject;
+      var rci: TGLRenderContextInfo);
+    procedure BUArcClick(Sender: TObject);
+  private
+     
+    procedure PaintTheBox;
+    procedure Bench;
+  public
+     
+  end;
+
+var
+  FormCanvas: TFormCanvas;
+
+implementation
+
+{$R *.dfm}
+
+type
+  TWhat = (wLines, wEllipses, wRects, wPoints, wTextOut, wArcs);
+
+var
+  vWhat: TWhat;
+  vPenWidth: Integer;
+
+const
+  cNbLines = 20000;
+  cNbEllipses = 20000;
+  cNbRects = 5000;
+  cNbPoints = 200000;
+  cNbTextOuts = 20000;
+  cNbArcs = 20000;
+
+procedure TFormCanvas.BULinesClick(Sender: TObject);
+begin
+  vWhat := wLines;
+  Bench;
+end;
+
+procedure TFormCanvas.BUArcClick(Sender: TObject);
+begin
+  vWhat := wArcs;
+  Bench;
+end;
+
+procedure TFormCanvas.BUEllipsesClick(Sender: TObject);
+begin
+  vWhat := wEllipses;
+  Bench;
+end;
+
+procedure TFormCanvas.BURectsClick(Sender: TObject);
+begin
+  vWhat := wRects;
+  Bench;
+end;
+
+procedure TFormCanvas.BUPointsClick(Sender: TObject);
+begin
+  vWhat := wPoints;
+  Bench;
+end;
+
+procedure TFormCanvas.BUTextOutClick(Sender: TObject);
+begin
+  vWhat := wTextOut;
+  Bench;
+end;
+
+procedure TFormCanvas.Bench;
+var
+  t: Int64;
+begin
+  if RBPenWidth1.Checked then
+    vPenWidth := 1
+  else
+    vPenWidth := 2;
+
+  Application.ProcessMessages;
+  RandSeed := 0;
+
+  t := StartPrecisionTimer;
+  GLSceneViewer.Refresh;
+  LAGLCanvas.Caption := Format('GLCanvas: %.2f msec',
+    [StopPrecisionTimer(t) * 1000]);
+
+  Application.ProcessMessages;
+  RandSeed := 0;
+
+  t := StartPrecisionTimer;
+  PaintTheBox;
+  LAGDI.Caption := Format('GDI: %.1f msec', [StopPrecisionTimer(t) * 1000]);
+end;
+
+procedure TFormCanvas.GLDirectOpenGL1Render(Sender: TObject;
+  var rci: TGLRenderContextInfo);
+var
+  i, x, y: Integer;
+  glc: TGLCanvas;
+  r: TRect;
+  color: TColor;
+begin
+  glc := TGLCanvas.Create(256, 256);
+  with glc do
+  begin
+    PenWidth := vPenWidth;
+    case vWhat of
+      wLines:
+        begin
+          for i := 1 to cNbLines do
+          begin
+            PenColor := Random(256 * 256 * 256);
+            MoveTo(Random(256), Random(256));
+            LineTo(Random(256), Random(256));
+          end;
+        end;
+      wEllipses:
+        for i := 1 to cNbEllipses do
+        begin
+          PenColor := Random(256 * 256 * 256);
+          EllipseBB(Random(256), Random(256), Random(256), Random(256));
+        end;
+      wRects:
+        for i := 1 to cNbRects do
+        begin
+          PenColor := Random(256 * 256 * 256);
+          r := Rect(Random(256), Random(256), Random(256), Random(256));
+          FillRect(r.Left, r.Top, r.Right, r.Bottom);
+        end;
+      wPoints:
+        begin
+          for i := 1 to cNbPoints do
+          begin
+            PenColor := Random(256 * 256 * 256);
+            PlotPixel(Random(256), Random(256));
+          end;
+        end;
+      wTextOut:
+        begin
+          for i := 1 to cNbTextOuts do
+          begin
+            color := Random(256 * 256 * 256);
+            x := Random(256);
+            y := Random(256);
+            WindowsBitmapFont.TextOut(rci, x, y, 'Hello', color);
+          end;
+        end;
+      wArcs:
+        begin
+          for i := 1 to cNbEllipses do
+          begin
+            PenColor := Random(256 * 256 * 256);
+            Arc(Random(256), Random(256), Random(256), Random(256), Random(256),
+              Random(256), Random(256), Random(256))
+          end;
+        end;
+    end;
+  end;
+  glc.Free;
+end;
+
+procedure TFormCanvas.PaintTheBox;
+var
+  i, x, y: Integer;
+  r: TRect;
+  b: TBitmap;
+begin
+  // to be fair, use offscreen painting...
+  b := TBitmap.Create;
+  b.Width := 256;
+  b.Height := 256;
+  with b.Canvas do
+  begin
+    Brush.Style := bsClear;
+    Pen.Width := vPenWidth;
+    case vWhat of
+      wLines:
+        begin
+          for i := 1 to cNbLines do
+          begin
+            Pen.color := Random(256 * 256 * 256);
+            MoveTo(Random(256), Random(256));
+            LineTo(Random(256), Random(256));
+          end;
+        end;
+      wEllipses:
+        begin
+          for i := 1 to cNbEllipses do
+          begin
+            Pen.color := Random(256 * 256 * 256);
+            Ellipse(Random(256), Random(256), Random(256), Random(256));
+          end;
+        end;
+      wRects:
+        begin
+          Brush.Style := bsSolid;
+          for i := 1 to cNbRects do
+          begin
+            Brush.color := Random(256 * 256 * 256);
+            r := Rect(Random(256), Random(256), Random(256), Random(256));
+            FillRect(r);
+          end;
+        end;
+      wPoints:
+        begin
+          for i := 1 to cNbPoints do
+          begin
+            Pixels[Random(256), Random(256)] := Random(256 * 256 * 256);
+          end;
+        end;
+      wTextOut:
+        begin
+          Font := WindowsBitmapFont.Font;
+          for i := 1 to cNbTextOuts do
+          begin
+            Font.color := Random(256 * 256 * 256);
+            x := Random(256);
+            y := Random(256);
+            TextOut(x, y, 'Hello');
+          end
+        end;
+      wArcs:
+        begin
+          for i := 1 to cNbEllipses do
+          begin
+            Pen.color := Random(256 * 256 * 256);
+            Arc(Random(256), Random(256), Random(256), Random(256), Random(256),
+              Random(256), Random(256), Random(256))
+          end;
+        end;
+    end;
+  end;
+  PaintBox.Canvas.Draw(0, 0, b);
+  b.Free;
+end;
+
+end.

BIN
Demos/Delphi/bench/MegaGlasscube.jpg


+ 60 - 60
Demos/Delphi/bench/megacube/Megacube.dpr → Demos/Delphi/bench/Megacube.dpr

@@ -1,60 +1,60 @@
-{ : This sample is basicly a bench for GLScene.
-
-  A fair number of TGLCube are created and rendered (for cSize=5, that's about
-  1331 cubes, 7986 polygons or 15972 triangles). Only one light and basic
-  shading is used, no texture here, the aim is to test the performance of
-  GLScene and T&L, not	the fillrate.
-
-  Results :
-
-  Size	 Triangles     FPS	    CPU      OpenGL     ColorDepth
-
-
-  5      15972     174.9     K7-2200+   GF3 Ti200     32Bits   Amalgamate = False
-  --- 07/01/04 --- 2004 bench
-  5      15972     200.5     K7-1800+   GF2 Pro       32Bits   Amalgamate = True
-  5      15972     158.6     K7-1800+   GF2 Pro       32Bits
-  --- 29/11/02 --- Long time no bench, added 'Amalgamate' score
-  5      15972     139.3     K7-1145    GF2 Pro       32Bits
-  5      15972      33.6     Du-800     TNT2 M64      32Bits
-  --- 26/01/02 --- XOpenGL flexes its muscles, more memory optimizations
-  5      15972     110.4     K7-1145    GF2 Pro       32Bits
-  5      15972      30.1     Du-800     TNT2 M64      32Bits
-  --- 23/01/02 --- Several structural optimizations (memory use & access)
-  5      15972      92.2     K7-1145    GF2 Pro       32Bits
-  --- 20/01/02 --- Long time no bench, fair improvement though :)
-  5      15972      80.1     K7-1066    GF2 Pro       32Bits
-  --- 04/09/01 --- Internal changes (buffers, contexts...)
-  5      15972      64.1     K7-1066    GF2 Pro       32Bits
-  --- 11/08/01 --- GLScene v0.8.3wip
-  5      15972      20.1     Du-800     V3 2000       16Bits
-  --- 12/03/01 --- GLScene v0.8.2
-  5      15972      36.4     K7-500   GeForce-6.50    32Bits
-  --- 05/02/01 --- Cube build list and SetGLMaterialColors boost
-  5      15972      25.8     K7-500   GeForce-5.33    32Bits
-  --- 13/01/01 --- Long time no bench
-  5      15972       7.7     K6-400     V3 2000       16Bits
-  --- 20/06/00 --- Geometry.pas optimizations
-  5      15972      17.2     K7-500     V3 2000       16Bits
-  --- 24/03/00 --- PolygonMode & Color cacheing optimization
-  5      15972      15.5     K7-500     V3 2000       16Bits
-  5      15972       5.9     K6-400     V3 3000       16Bits
-  5      15972       4.0     K6-400      MS NT4       24Bits
-  --- 22/03/00 --- Set/UnSet states optimization
-  5      15972       5.5     K6-400     V3 3000       16Bits
-  5      15972       3.6     K6-400      MS NT4       24Bits
-  --- 22/03/00 --- Created the bench
-}
-program Megacube;
-
-uses
-  Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.RES}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+(*
+  This sample is basicly a bench for GLScene.
+  A fair number of TGLCube are created and rendered (for cSize=5, that's about
+  1331 cubes, 7986 polygons or 15972 triangles). Only one light and basic
+  shading is used, no texture here, the aim is to test the performance of
+  GLScene and T&L, not	the fillrate.
+
+  Results :
+
+  Size	 Triangles     FPS	    CPU      OpenGL     ColorDepth
+
+
+  5      15972     174.9     K7-2200+   GF3 Ti200     32Bits   Amalgamate = False
+  --- 07/01/04 --- 2004 bench
+  5      15972     200.5     K7-1800+   GF2 Pro       32Bits   Amalgamate = True
+  5      15972     158.6     K7-1800+   GF2 Pro       32Bits
+  --- 29/11/02 --- Long time no bench, added 'Amalgamate' score
+  5      15972     139.3     K7-1145    GF2 Pro       32Bits
+  5      15972      33.6     Du-800     TNT2 M64      32Bits
+  --- 26/01/02 --- XOpenGL flexes its muscles, more memory optimizations
+  5      15972     110.4     K7-1145    GF2 Pro       32Bits
+  5      15972      30.1     Du-800     TNT2 M64      32Bits
+  --- 23/01/02 --- Several structural optimizations (memory use & access)
+  5      15972      92.2     K7-1145    GF2 Pro       32Bits
+  --- 20/01/02 --- Long time no bench, fair improvement though :)
+  5      15972      80.1     K7-1066    GF2 Pro       32Bits
+  --- 04/09/01 --- Internal changes (buffers, contexts...)
+  5      15972      64.1     K7-1066    GF2 Pro       32Bits
+  --- 11/08/01 --- GLScene v0.8.3wip
+  5      15972      20.1     Du-800     V3 2000       16Bits
+  --- 12/03/01 --- GLScene v0.8.2
+  5      15972      36.4     K7-500   GeForce-6.50    32Bits
+  --- 05/02/01 --- Cube build list and SetGLMaterialColors boost
+  5      15972      25.8     K7-500   GeForce-5.33    32Bits
+  --- 13/01/01 --- Long time no bench
+  5      15972       7.7     K6-400     V3 2000       16Bits
+  --- 20/06/00 --- Geometry.pas optimizations
+  5      15972      17.2     K7-500     V3 2000       16Bits
+  --- 24/03/00 --- PolygonMode & Color cacheing optimization
+  5      15972      15.5     K7-500     V3 2000       16Bits
+  5      15972       5.9     K6-400     V3 3000       16Bits
+  5      15972       4.0     K6-400      MS NT4       24Bits
+  --- 22/03/00 --- Set/UnSet states optimization
+  5      15972       5.5     K6-400     V3 3000       16Bits
+  5      15972       3.6     K6-400      MS NT4       24Bits
+  --- 22/03/00 --- Created the bench
+*)
+program Megacube;
+
+uses
+  Forms,
+  MegacubeFm in 'MegacubeFm.pas';
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TFormMegacube, FormMegacube);
+  Application.Run;
+end.

+ 873 - 0
Demos/Delphi/bench/Megacube.dproj

@@ -0,0 +1,873 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{C761CEA6-AAC1-4C9A-9B90-2968CB94BBBB}</ProjectGuid>
+        <MainSource>Megacube.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
+        <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>
+        <DCC_K>false</DCC_K>
+        <SanitizedProjectName>Megacube</SanitizedProjectName>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_F>false</DCC_F>
+        <DCC_ImageBase>00400000</DCC_ImageBase>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_Optimize>false</DCC_Optimize>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="MegacubeFm.pas">
+            <Form>;
+
+{$R *.RES</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">Megacube.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k260.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp260.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k260.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp260.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="Win32\Debug\Megacube.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>Megacube.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

BIN
Demos/Delphi/bench/Megacube.jpg


+ 78 - 77
Demos/Delphi/bench/megacube/Unit1.dfm → Demos/Delphi/bench/MegacubeFm.dfm

@@ -1,77 +1,78 @@
-object Form1: TForm1
-  Left = 198
-  Top = 107
-  Caption = 'Megacube'
-  ClientHeight = 355
-  ClientWidth = 474
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  OldCreateOrder = False
-  Position = poScreenCenter
-  OnCreate = FormCreate
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 0
-    Top = 0
-    Width = 474
-    Height = 355
-    Camera = GLCamera1
-    Buffer.BackgroundColor = clBlack
-    FieldOfView = 148.535995483398400000
-    Align = alClient
-    TabOrder = 0
-  end
-  object GLScene1: TGLScene
-    ObjectsSorting = osNone
-    OnProgress = GLCadencer1Progress
-    Left = 24
-    Top = 8
-    object DummyCube1: TGLDummyCube
-      ObjectsSorting = osRenderBlendedLast
-      CubeSize = 10.000000000000000000
-    end
-    object GLLightSource1: TGLLightSource
-      ConstAttenuation = 1.000000000000000000
-      Position.Coordinates = {0000C842000048420000C8420000803F}
-      LightStyle = lsOmni
-      SpotCutOff = 180.000000000000000000
-    end
-    object GLCamera1: TGLCamera
-      DepthOfView = 500.000000000000000000
-      FocalLength = 50.000000000000000000
-      TargetObject = DummyCube1
-      Position.Coordinates = {000048420000C8410000C8420000803F}
-    end
-  end
-  object GLCadencer1: TGLCadencer
-    Scene = GLScene1
-    OnProgress = GLCadencer1Progress
-    Left = 96
-    Top = 8
-  end
-  object GLSimpleNavigation1: TGLSimpleNavigation
-    Form = Owner
-    GLSceneViewer = GLSceneViewer1
-    FormCaption = 'Megacube - %FPS'
-    KeyCombinations = <
-      item
-        ShiftState = [ssLeft, ssRight]
-        Action = snaZoom
-      end
-      item
-        ShiftState = [ssLeft]
-        Action = snaMoveAroundTarget
-      end
-      item
-        ShiftState = [ssRight]
-        Action = snaMoveAroundTarget
-      end>
-    Left = 232
-    Top = 8
-  end
-end
+object FormMegacube: TFormMegacube
+  Left = 198
+  Top = 107
+  Caption = 'Megacube'
+  ClientHeight = 355
+  ClientWidth = 474
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 0
+    Top = 0
+    Width = 474
+    Height = 355
+    Camera = GLCamera1
+    Buffer.BackgroundColor = clBlack
+    FieldOfView = 148.535995483398400000
+    PenAsTouch = False
+    Align = alClient
+    TabOrder = 0
+  end
+  object GLScene1: TGLScene
+    ObjectsSorting = osNone
+    OnProgress = GLCadencer1Progress
+    Left = 24
+    Top = 8
+    object DummyCube1: TGLDummyCube
+      ObjectsSorting = osRenderBlendedLast
+      CubeSize = 10.000000000000000000
+    end
+    object GLLightSource1: TGLLightSource
+      ConstAttenuation = 1.000000000000000000
+      Position.Coordinates = {0000C842000048420000C8420000803F}
+      LightStyle = lsOmni
+      SpotCutOff = 180.000000000000000000
+    end
+    object GLCamera1: TGLCamera
+      DepthOfView = 500.000000000000000000
+      FocalLength = 50.000000000000000000
+      TargetObject = DummyCube1
+      Position.Coordinates = {000048420000C8410000C8420000803F}
+    end
+  end
+  object GLCadencer1: TGLCadencer
+    Scene = GLScene1
+    OnProgress = GLCadencer1Progress
+    Left = 96
+    Top = 8
+  end
+  object GLSimpleNavigation1: TGLSimpleNavigation
+    Form = Owner
+    GLSceneViewer = GLSceneViewer1
+    FormCaption = 'Megacube - %FPS'
+    KeyCombinations = <
+      item
+        ShiftState = [ssLeft, ssRight]
+        Action = snaZoom
+      end
+      item
+        ShiftState = [ssLeft]
+        Action = snaMoveAroundTarget
+      end
+      item
+        ShiftState = [ssRight]
+        Action = snaMoveAroundTarget
+      end>
+    Left = 232
+    Top = 8
+  end
+end

+ 90 - 90
Demos/Delphi/bench/megacube/Unit1.pas → Demos/Delphi/bench/MegacubeFm.pas

@@ -1,90 +1,90 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Classes,
-  Vcl.Graphics,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.ExtCtrls,
-
-  
-  GLS.Scene,
-  GLS.Objects,
-  GLS.VectorGeometry,
-  GLS.Texture,
-  GLS.Cadencer,
-  GLS.VectorTypes,
-  GLS.SceneViewer,
-  GLS.Color,
-  GLS.Coordinates,
-  GLS.BaseClasses,
-  GLS.SimpleNavigation;
-
-type
-  TForm1 = class(TForm)
-    GLSceneViewer1: TGLSceneViewer;
-    GLScene1: TGLScene;
-    GLCamera1: TGLCamera;
-    DummyCube1: TGLDummyCube;
-    GLLightSource1: TGLLightSource;
-    GLCadencer1: TGLCadencer;
-    GLSimpleNavigation1: TGLSimpleNavigation;
-    procedure FormCreate(Sender: TObject);
-    procedure GLCadencer1Progress(Sender: TObject;
-      const deltaTime, newTime: Double);
-  private
-  end;
-
-var
-  Form1: TForm1;
-
-implementation
-
-{$R *.DFM}
-
-const
-  cSize = 10;
-
-procedure TForm1.FormCreate(Sender: TObject);
-var
-  x, y, z: Integer;
-  cube: TGLCube;
-  factor, cubeSize: Single;
-begin
-  // bench only creation and 1st render (with lists builds, etc...)
-  factor := 70 / (cSize * 2 + 1);
-  cubeSize := 0.4 * factor;
-  for x := -cSize to cSize do
-    for y := -cSize to cSize do
-      for z := -cSize to cSize do
-      begin
-        cube := TGLCube(DummyCube1.AddNewChild(TGLCube));
-        cube.Position.AsVector := PointMake(factor * x, factor * y, factor * z);
-        cube.CubeWidth := cubeSize;
-        cube.CubeHeight := cubeSize;
-        cube.CubeDepth := cubeSize;
-        with cube.Material.FrontProperties do
-        begin
-          Diffuse.Color := VectorLerp(clrYellow, clrRed, (x * x + y * y + z * z)
-            / (cSize * cSize * 3));
-
-          // uncomment following lines to stress OpenGL with more color changes calls
-
-           Ambient.Color:=VectorLerp(clrYellow, clrRed, (x*x+y*y+z*z)/(cSize*cSize*3));
-           Emission.Color:=VectorLerp(clrYellow, clrRed, (x*x+y*y+z*z)/(cSize*cSize*3));
-           Specular.Color:=VectorLerp(clrYellow, clrRed, (x*x+y*y+z*z)/(cSize*cSize*3));
-        end;
-      end;
-end;
-
-procedure TForm1.GLCadencer1Progress(Sender: TObject;
-  const deltaTime, newTime: Double);
-begin
-  DummyCube1.TurnAngle := 90 * newTime; // 90° per second
-end;
-
-end.
+unit MegacubeFm;
+
+interface
+
+uses
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.ExtCtrls,
+
+  
+  GLS.Scene,
+  GLS.Objects,
+  GLS.VectorGeometry,
+  GLS.Texture,
+  GLS.Cadencer,
+  GLS.VectorTypes,
+  GLS.SceneViewer,
+  GLS.Color,
+  GLS.Coordinates,
+  GLS.BaseClasses,
+  GLS.SimpleNavigation;
+
+type
+  TFormMegacube = class(TForm)
+    GLSceneViewer1: TGLSceneViewer;
+    GLScene1: TGLScene;
+    GLCamera1: TGLCamera;
+    DummyCube1: TGLDummyCube;
+    GLLightSource1: TGLLightSource;
+    GLCadencer1: TGLCadencer;
+    GLSimpleNavigation1: TGLSimpleNavigation;
+    procedure FormCreate(Sender: TObject);
+    procedure GLCadencer1Progress(Sender: TObject;
+      const deltaTime, newTime: Double);
+  private
+  end;
+
+var
+  FormMegacube: TFormMegacube;
+
+implementation
+
+{$R *.DFM}
+
+const
+  cSize = 10;
+
+procedure TFormMegacube.FormCreate(Sender: TObject);
+var
+  x, y, z: Integer;
+  cube: TGLCube;
+  factor, cubeSize: Single;
+begin
+  // bench only creation and 1st render (with lists builds, etc...)
+  factor := 70 / (cSize * 2 + 1);
+  cubeSize := 0.4 * factor;
+  for x := -cSize to cSize do
+    for y := -cSize to cSize do
+      for z := -cSize to cSize do
+      begin
+        cube := TGLCube(DummyCube1.AddNewChild(TGLCube));
+        cube.Position.AsVector := PointMake(factor * x, factor * y, factor * z);
+        cube.CubeWidth := cubeSize;
+        cube.CubeHeight := cubeSize;
+        cube.CubeDepth := cubeSize;
+        with cube.Material.FrontProperties do
+        begin
+          Diffuse.Color := VectorLerp(clrYellow, clrRed, (x * x + y * y + z * z)
+            / (cSize * cSize * 3));
+
+          // uncomment following lines to stress OpenGL with more color changes calls
+
+           Ambient.Color:=VectorLerp(clrYellow, clrRed, (x*x+y*y+z*z)/(cSize*cSize*3));
+           Emission.Color:=VectorLerp(clrYellow, clrRed, (x*x+y*y+z*z)/(cSize*cSize*3));
+           Specular.Color:=VectorLerp(clrYellow, clrRed, (x*x+y*y+z*z)/(cSize*cSize*3));
+        end;
+      end;
+end;
+
+procedure TFormMegacube.GLCadencer1Progress(Sender: TObject;
+  const deltaTime, newTime: Double);
+begin
+  DummyCube1.TurnAngle := 90 * newTime; // 90° per second
+end;
+
+end.

+ 76 - 75
Demos/Delphi/bench/megaglasscube/Unit1.dfm → Demos/Delphi/bench/MegaglassCubeFm.dfm

@@ -1,75 +1,76 @@
-object Form1: TForm1
-  Left = 198
-  Top = 107
-  Caption = 'Megaglasscube'
-  ClientHeight = 350
-  ClientWidth = 498
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  OldCreateOrder = False
-  OnCreate = FormCreate
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 0
-    Top = 0
-    Width = 498
-    Height = 350
-    Camera = GLCamera1
-    Buffer.BackgroundColor = clBlack
-    FieldOfView = 148.109207153320300000
-    Align = alClient
-    TabOrder = 0
-  end
-  object GLScene1: TGLScene
-    ObjectsSorting = osNone
-    Left = 8
-    Top = 8
-    object DummyCube1: TGLDummyCube
-      ObjectsSorting = osRenderBlendedLast
-      CubeSize = 10.000000000000000000
-    end
-    object GLLightSource1: TGLLightSource
-      ConstAttenuation = 1.000000000000000000
-      Position.Coordinates = {0000C842000048420000C8420000803F}
-      LightStyle = lsOmni
-      SpotCutOff = 180.000000000000000000
-    end
-    object GLCamera1: TGLCamera
-      DepthOfView = 500.000000000000000000
-      FocalLength = 50.000000000000000000
-      TargetObject = DummyCube1
-      Position.Coordinates = {000048420000C8410000C8420000803F}
-    end
-  end
-  object GLCadencer1: TGLCadencer
-    Scene = GLScene1
-    OnProgress = GLCadencer1Progress
-    Left = 88
-    Top = 8
-  end
-  object GLSimpleNavigation1: TGLSimpleNavigation
-    Form = Owner
-    GLSceneViewer = GLSceneViewer1
-    FormCaption = 'Megaglasscube - %FPS'
-    KeyCombinations = <
-      item
-        ShiftState = [ssLeft, ssRight]
-        Action = snaZoom
-      end
-      item
-        ShiftState = [ssLeft]
-        Action = snaMoveAroundTarget
-      end
-      item
-        ShiftState = [ssRight]
-        Action = snaMoveAroundTarget
-      end>
-    Left = 184
-    Top = 8
-  end
-end
+object FormMegaglasscube: TFormMegaglasscube
+  Left = 198
+  Top = 107
+  Caption = 'Megaglasscube'
+  ClientHeight = 350
+  ClientWidth = 498
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 0
+    Top = 0
+    Width = 498
+    Height = 350
+    Camera = GLCamera1
+    Buffer.BackgroundColor = clBlack
+    FieldOfView = 148.109207153320300000
+    PenAsTouch = False
+    Align = alClient
+    TabOrder = 0
+  end
+  object GLScene1: TGLScene
+    ObjectsSorting = osNone
+    Left = 8
+    Top = 8
+    object DummyCube1: TGLDummyCube
+      ObjectsSorting = osRenderBlendedLast
+      CubeSize = 10.000000000000000000
+    end
+    object GLLightSource1: TGLLightSource
+      ConstAttenuation = 1.000000000000000000
+      Position.Coordinates = {0000C842000048420000C8420000803F}
+      LightStyle = lsOmni
+      SpotCutOff = 180.000000000000000000
+    end
+    object GLCamera1: TGLCamera
+      DepthOfView = 500.000000000000000000
+      FocalLength = 50.000000000000000000
+      TargetObject = DummyCube1
+      Position.Coordinates = {000048420000C8410000C8420000803F}
+    end
+  end
+  object GLCadencer1: TGLCadencer
+    Scene = GLScene1
+    OnProgress = GLCadencer1Progress
+    Left = 88
+    Top = 8
+  end
+  object GLSimpleNavigation1: TGLSimpleNavigation
+    Form = Owner
+    GLSceneViewer = GLSceneViewer1
+    FormCaption = 'Megaglasscube - %FPS'
+    KeyCombinations = <
+      item
+        ShiftState = [ssLeft, ssRight]
+        Action = snaZoom
+      end
+      item
+        ShiftState = [ssLeft]
+        Action = snaMoveAroundTarget
+      end
+      item
+        ShiftState = [ssRight]
+        Action = snaMoveAroundTarget
+      end>
+    Left = 184
+    Top = 8
+  end
+end

+ 92 - 92
Demos/Delphi/bench/megaglasscube/Unit1.pas → Demos/Delphi/bench/MegaglassCubeFm.pas

@@ -1,92 +1,92 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Classes,
-  Vcl.Graphics,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.ExtCtrls,
-  
-  GLS.Scene,
-  GLS.Objects,
-  GLS.VectorGeometry,
-  GLS.Texture,
-  GLS.Cadencer,
-  GLS.VectorTypes,
-  GLS.SceneViewer,
-  GLS.Color,
- 
-  GLS.Coordinates,
-  GLS.Material,
-  GLS.SimpleNavigation,
-  GLS.BaseClasses;
-
-type
-  TForm1 = class(TForm)
-	 GLSceneViewer1: TGLSceneViewer;
-	 GLScene1: TGLScene;
-	 GLCamera1: TGLCamera;
-	 DummyCube1: TGLDummyCube;
-	 GLLightSource1: TGLLightSource;
-   GLCadencer1: TGLCadencer;
-   GLSimpleNavigation1: TGLSimpleNavigation;
-	 procedure FormCreate(Sender: TObject);
-   procedure GLCadencer1Progress(Sender: TObject;
-     const deltaTime, newTime: Double);
-  private
-     
-  public
-     
-  end;
-
-var
-  Form1: TForm1;
-
-implementation
-
-{$R *.DFM}
-
-const
-	cSize = 5;
-
-procedure TForm1.FormCreate(Sender: TObject);
-var
-	x, y, z : Integer;
-	cube : TGLCube;
-	factor, cubeSize : Single;
-  Color : TColor;
-begin
-	// bench only creation and 1st render (with lists builds, etc...)
-	factor:=70/(cSize*2+1);
-	cubeSize:=0.4*factor;
-	for x := -cSize to cSize do
-    for y := -cSize to cSize do
-      for z := -cSize to cSize do
-      begin
-        cube := TGLCube(DummyCube1.AddNewChild(TGLCube));
-        cube.Position.AsVector := PointMake(factor * x, factor * y, factor * z);
-        cube.CubeWidth := cubeSize;
-        cube.CubeHeight := cubeSize;
-        cube.CubeDepth := cubeSize;
-        cube.Material.BlendingMode := bmTransparency;
-        with cube.Material.FrontProperties do
-        begin
-          Color := Random(1);
-          Diffuse.Color := VectorLerp(clrBlue, clrWhite, (x * x + y * y + z * z)
-            / (cSize * cSize * 3));
-          Diffuse.Alpha := 0.5;
-        end;
-      end;
-end;
-
-procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime,
-  newTime: Double);
-begin
-	DummyCube1.TurnAngle:=90*newTime; // 90° per second
-end;
-
-end.
+unit MegaglassCubeFm;
+
+interface
+
+uses
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.ExtCtrls,
+  
+  GLS.Scene,
+  GLS.Objects,
+  GLS.VectorGeometry,
+  GLS.Texture,
+  GLS.Cadencer,
+  GLS.VectorTypes,
+  GLS.SceneViewer,
+  GLS.Color,
+ 
+  GLS.Coordinates,
+  GLS.Material,
+  GLS.SimpleNavigation,
+  GLS.BaseClasses;
+
+type
+  TFormMegaglasscube = class(TForm)
+	 GLSceneViewer1: TGLSceneViewer;
+	 GLScene1: TGLScene;
+	 GLCamera1: TGLCamera;
+	 DummyCube1: TGLDummyCube;
+	 GLLightSource1: TGLLightSource;
+   GLCadencer1: TGLCadencer;
+   GLSimpleNavigation1: TGLSimpleNavigation;
+	 procedure FormCreate(Sender: TObject);
+   procedure GLCadencer1Progress(Sender: TObject;
+     const deltaTime, newTime: Double);
+  private
+     
+  public
+     
+  end;
+
+var
+  FormMegaglasscube: TFormMegaglasscube;
+
+implementation
+
+{$R *.DFM}
+
+const
+	cSize = 5;
+
+procedure TFormMegaglasscube.FormCreate(Sender: TObject);
+var
+	x, y, z : Integer;
+	cube : TGLCube;
+	factor, cubeSize : Single;
+  Color : TColor;
+begin
+	// bench only creation and 1st render (with lists builds, etc...)
+	factor:=70/(cSize*2+1);
+	cubeSize:=0.4*factor;
+	for x := -cSize to cSize do
+    for y := -cSize to cSize do
+      for z := -cSize to cSize do
+      begin
+        cube := TGLCube(DummyCube1.AddNewChild(TGLCube));
+        cube.Position.AsVector := PointMake(factor * x, factor * y, factor * z);
+        cube.CubeWidth := cubeSize;
+        cube.CubeHeight := cubeSize;
+        cube.CubeDepth := cubeSize;
+        cube.Material.BlendingMode := bmTransparency;
+        with cube.Material.FrontProperties do
+        begin
+          Color := Random(1);
+          Diffuse.Color := VectorLerp(clrBlue, clrWhite, (x * x + y * y + z * z)
+            / (cSize * cSize * 3));
+          Diffuse.Alpha := 0.5;
+        end;
+      end;
+end;
+
+procedure TFormMegaglasscube.GLCadencer1Progress(Sender: TObject; const deltaTime,
+  newTime: Double);
+begin
+	DummyCube1.TurnAngle:=90*newTime; // 90° per second
+end;
+
+end.

+ 34 - 34
Demos/Delphi/bench/megaglasscube/Megaglasscube.dpr → Demos/Delphi/bench/Megaglasscube.dpr

@@ -1,34 +1,34 @@
-{: A variation of the magacube bench for testing sorting.
-
-	The cubes in this sample are transparent, and as such need to be depth-sorted
-   to render correctly, this uses an alternate sorting code which this benchmark
-   helps testing. The sorting mode is osRenderBlended last, which isn't the most
-   efficient for that particular case (as a matter of fact, this bench is a worst
-   case situation for osRenderBlendedLast), osRenderFarthestFirst would be more
-   suited since all the objets must be sorted (osRenderBlendedLast attempts
-   ta take advantange of the fact that only a fraction of the objects must be
-   depth-sorted, which is a disadvantage if most of them must be sorted).
-
-	Results :
-
-	Size	 Triangles     FPS	    CPU      OpenGL     ColorDepth
-
-	  5      15972      90.0     K7-1145    GF2 Pro       32Bits (vs 139.3 for megacube)
-	  5      15972      27.6     Du-800     TNT2 M64      32Bits
-   --- 26/01/02 --- Sorting optims, XOpenGL change
-	  5      15972      68.2     K7-1145    GF2 Pro       32Bits (vs 110.4 for megacube)
-   --- 26/01/02 --- Introduced bench
-}
-program Megaglasscube;
-
-uses
-  Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.RES}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+{: A variation of the magacube bench for testing sorting.
+
+	The cubes in this sample are transparent, and as such need to be depth-sorted
+   to render correctly, this uses an alternate sorting code which this benchmark
+   helps testing. The sorting mode is osRenderBlended last, which isn't the most
+   efficient for that particular case (as a matter of fact, this bench is a worst
+   case situation for osRenderBlendedLast), osRenderFarthestFirst would be more
+   suited since all the objets must be sorted (osRenderBlendedLast attempts
+   ta take advantange of the fact that only a fraction of the objects must be
+   depth-sorted, which is a disadvantage if most of them must be sorted).
+
+	Results :
+
+	Size	 Triangles     FPS	    CPU      OpenGL     ColorDepth
+
+	  5      15972      90.0     K7-1145    GF2 Pro       32Bits (vs 139.3 for megacube)
+	  5      15972      27.6     Du-800     TNT2 M64      32Bits
+   --- 26/01/02 --- Sorting optims, XOpenGL change
+	  5      15972      68.2     K7-1145    GF2 Pro       32Bits (vs 110.4 for megacube)
+   --- 26/01/02 --- Introduced bench
+}
+program Megaglasscube;
+
+uses
+  Forms,
+  MegaglassCubeFm in 'MegaglassCubeFm.pas' {FormMegaglasscube};
+
+{$R *.RES}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TFormMegaglasscube, FormMegaglasscube);
+  Application.Run;
+end.

+ 873 - 0
Demos/Delphi/bench/Megaglasscube.dproj

@@ -0,0 +1,873 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{874301D9-5B32-4D2A-819E-3E2718C3403E}</ProjectGuid>
+        <MainSource>Megaglasscube.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
+        <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>
+        <DCC_K>false</DCC_K>
+        <SanitizedProjectName>Megaglasscube</SanitizedProjectName>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_F>false</DCC_F>
+        <DCC_ImageBase>00400000</DCC_ImageBase>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_Optimize>false</DCC_Optimize>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="MegaglassCubeFm.pas">
+            <Form>FormMegaglasscube</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">Megaglasscube.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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="Win32\Debug\Megaglasscube.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>Megaglasscube.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

+ 21 - 21
Demos/Delphi/bench/smoking/smoking.dpr → Demos/Delphi/bench/Smoking.dpr

@@ -1,21 +1,21 @@
-{: Benchmark and stress test for PFX.
-
-  Fires are made of additively blended particles, smoke of transparently
-  blended ones. Smokes of distinct fires should hide each other, and smoke
-  in a particular fire should hide its top flames a bit.
-
-  02/03/2005 - GF3 / AXP 2 GHz - 53 FPS
-}
-program smoking;
-
-uses
-  Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.res}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+{: Benchmark and stress test for PFX.
+
+  Fires are made of additively blended particles, smoke of transparently
+  blended ones. Smokes of distinct fires should hide each other, and smoke
+  in a particular fire should hide its top flames a bit.
+
+  02/03/2005 - GF3 / AXP 2 GHz - 53 FPS
+}
+program Smoking;
+
+uses
+  Forms,
+  SmokingFm in 'SmokingFm.pas' {Form1};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TForm1, Form1);
+  Application.Run;
+end.

+ 873 - 0
Demos/Delphi/bench/Smoking.dproj

@@ -0,0 +1,873 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{7DBBD7A9-D53A-4341-899F-E0A0A6F96528}</ProjectGuid>
+        <MainSource>Smoking.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
+        <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>
+        <DCC_K>false</DCC_K>
+        <SanitizedProjectName>smoking</SanitizedProjectName>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_F>false</DCC_F>
+        <DCC_ImageBase>00400000</DCC_ImageBase>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_Optimize>false</DCC_Optimize>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="SmokingFm.pas">
+            <Form>Form1</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">Smoking.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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="Win32\Debug\Smoking.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>Smoking.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

BIN
Demos/Delphi/bench/Smoking.jpg


+ 183 - 182
Demos/Delphi/bench/smoking/Unit1.dfm → Demos/Delphi/bench/SmokingFm.dfm

@@ -1,182 +1,183 @@
-object Form1: TForm1
-  Left = 170
-  Top = 57
-  Caption = 'Smoking'
-  ClientHeight = 382
-  ClientWidth = 529
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  OldCreateOrder = False
-  Position = poScreenCenter
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer: TGLSceneViewer
-    Left = 0
-    Top = 0
-    Width = 529
-    Height = 347
-    Camera = GLCamera
-    Buffer.BackgroundColor = clBlack
-    FieldOfView = 147.847686767578100000
-    Align = alClient
-    TabOrder = 0
-  end
-  object Panel1: TPanel
-    Left = 0
-    Top = 347
-    Width = 529
-    Height = 35
-    Align = alBottom
-    Caption = 'FPS'
-    TabOrder = 1
-  end
-  object GLScene: TGLScene
-    Left = 24
-    Top = 8
-    object DCFire1: TGLDummyCube
-      Position.Coordinates = {000040C000000000000000000000803F}
-      CubeSize = 1.000000000000000000
-      EffectsData = {
-        0458434F4C02010202061254474C536F75726365504658456666656374020202
-        001200000000020002000608466C616D65504658050000000000000080FF3F02
-        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
-        0500000000000AD7A3F83F020002000905000000000000000000000802000200
-        020202001200000000020002000608536D6F6B65504658050000000000000080
-        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
-        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
-        00}
-    end
-    object DCFire2: TGLDummyCube
-      CubeSize = 1.000000000000000000
-      EffectsData = {
-        0458434F4C02010202061254474C536F75726365504658456666656374020202
-        001200000000020002000608466C616D65504658050000000000000080FF3F02
-        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
-        0500000000000AD7A3F83F020002000905000000000000000000000802000200
-        020202001200000000020002000608536D6F6B65504658050000000000000080
-        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
-        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
-        00}
-    end
-    object DCFire3: TGLDummyCube
-      Position.Coordinates = {0000404000000000000000000000803F}
-      CubeSize = 1.000000000000000000
-      EffectsData = {
-        0458434F4C02010202061254474C536F75726365504658456666656374020202
-        001200000000020002000608466C616D65504658050000000000000080FF3F02
-        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
-        0500000000000AD7A3F83F020002000905000000000000000000000802000200
-        020202001200000000020002000608536D6F6B65504658050000000000000080
-        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
-        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
-        00}
-    end
-    object DCFire4: TGLDummyCube
-      Position.Coordinates = {0000000000000000000040400000803F}
-      CubeSize = 1.000000000000000000
-      EffectsData = {
-        0458434F4C02010202061254474C536F75726365504658456666656374020202
-        001200000000020002000608466C616D65504658050000000000000080FF3F02
-        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
-        0500000000000AD7A3F83F020002000905000000000000000000000802000200
-        020202001200000000020002000608536D6F6B65504658050000000000000080
-        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
-        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
-        00}
-    end
-    object DCFire5: TGLDummyCube
-      Position.Coordinates = {0000000000000000000040C00000803F}
-      CubeSize = 1.000000000000000000
-      EffectsData = {
-        0458434F4C02010202061254474C536F75726365504658456666656374020202
-        001200000000020002000608466C616D65504658050000000000000080FF3F02
-        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
-        0500000000000AD7A3F83F020002000905000000000000000000000802000200
-        020202001200000000020002000608536D6F6B65504658050000000000000080
-        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
-        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
-        00}
-    end
-    object ParticleFXRenderer: TGLParticleFXRenderer
-      BlendingMode = bmTransparency
-    end
-    object DCTarget: TGLDummyCube
-      Position.Coordinates = {0000000000000040000000000000803F}
-      CubeSize = 1.000000000000000000
-    end
-    object GLCamera: TGLCamera
-      DepthOfView = 100.000000000000000000
-      FocalLength = 50.000000000000000000
-      TargetObject = DCTarget
-      Position.Coordinates = {00004040000040400000A0400000803F}
-    end
-  end
-  object SmokePFX: TGLPerlinPFXManager
-    Cadencer = GLCadencer
-    Renderer = ParticleFXRenderer
-    Acceleration.Coordinates = {000000000000803F0000000000000000}
-    Friction = 1.000000000000000000
-    BlendingMode = bmTransparency
-    Smoothness = 1.000000000000000000
-    Brightness = 1.000000000000000000
-    Gamma = 1.000000000000000000
-    ParticleSize = 0.500000000000000000
-    ColorInner.Color = {0000803F0000803F0000803F00000000}
-    ColorOuter.Color = {0000803F0000803F0000803F00000000}
-    LifeColors = <
-      item
-        ColorInner.Color = {0000803F0000803F0000803F00000000}
-        ColorOuter.Color = {0000803F0000803F0000803F00000000}
-        LifeTime = 0.750000000000000000
-        SizeScale = 1.000000000000000000
-      end
-      item
-        ColorInner.Color = {0000803F0000803F0000803F9A99993E}
-        ColorOuter.Color = {0000803F0000803F0000803F00000000}
-        LifeTime = 3.000000000000000000
-        SizeScale = 2.000000000000000000
-      end
-      item
-        ColorInner.Color = {0000803F0000803F0000803F00000000}
-        ColorOuter.Color = {0000803F0000803F0000803F00000000}
-        LifeTime = 5.000000000000000000
-        SizeScale = 3.000000000000000000
-      end>
-    Left = 96
-    Top = 8
-  end
-  object FlamePFX: TGLCustomSpritePFXManager
-    Cadencer = GLCadencer
-    Renderer = ParticleFXRenderer
-    Acceleration.Coordinates = {000000000000803F0000000000000000}
-    Friction = 1.000000000000000000
-    ShareSprites = SmokePFX
-    ParticleSize = 0.200000002980232200
-    ColorInner.Color = {0000803F0000803F000000000000003F}
-    ColorOuter.Color = {0000803F0000803F0000000000000000}
-    LifeColors = <
-      item
-        ColorInner.Color = {0000803F0000803F0000000000000000}
-        ColorOuter.Color = {0000803F000000000000000000000000}
-        LifeTime = 2.000000000000000000
-        SizeScale = 1.000000000000000000
-      end>
-    Left = 96
-    Top = 88
-  end
-  object GLCadencer: TGLCadencer
-    Scene = GLScene
-    OnProgress = GLCadencerProgress
-    Left = 24
-    Top = 88
-  end
-  object Timer: TTimer
-    OnTimer = TimerTimer
-    Left = 192
-    Top = 8
-  end
-end
+object Form1: TForm1
+  Left = 170
+  Top = 57
+  Caption = 'Smoking'
+  ClientHeight = 382
+  ClientWidth = 529
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  Position = poScreenCenter
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer: TGLSceneViewer
+    Left = 0
+    Top = 0
+    Width = 529
+    Height = 347
+    Camera = GLCamera
+    Buffer.BackgroundColor = clBlack
+    FieldOfView = 147.847686767578100000
+    PenAsTouch = False
+    Align = alClient
+    TabOrder = 0
+  end
+  object Panel1: TPanel
+    Left = 0
+    Top = 347
+    Width = 529
+    Height = 35
+    Align = alBottom
+    Caption = 'FPS'
+    TabOrder = 1
+  end
+  object GLScene: TGLScene
+    Left = 24
+    Top = 8
+    object DCFire1: TGLDummyCube
+      Position.Coordinates = {000040C000000000000000000000803F}
+      CubeSize = 1.000000000000000000
+      EffectsData = {
+        0458434F4C02010202061254474C536F75726365504658456666656374020202
+        001200000000020002000608466C616D65504658050000000000000080FF3F02
+        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
+        0500000000000AD7A3F83F020002000905000000000000000000000802000200
+        020202001200000000020002000608536D6F6B65504658050000000000000080
+        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
+        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
+        00}
+    end
+    object DCFire2: TGLDummyCube
+      CubeSize = 1.000000000000000000
+      EffectsData = {
+        0458434F4C02010202061254474C536F75726365504658456666656374020202
+        001200000000020002000608466C616D65504658050000000000000080FF3F02
+        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
+        0500000000000AD7A3F83F020002000905000000000000000000000802000200
+        020202001200000000020002000608536D6F6B65504658050000000000000080
+        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
+        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
+        00}
+    end
+    object DCFire3: TGLDummyCube
+      Position.Coordinates = {0000404000000000000000000000803F}
+      CubeSize = 1.000000000000000000
+      EffectsData = {
+        0458434F4C02010202061254474C536F75726365504658456666656374020202
+        001200000000020002000608466C616D65504658050000000000000080FF3F02
+        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
+        0500000000000AD7A3F83F020002000905000000000000000000000802000200
+        020202001200000000020002000608536D6F6B65504658050000000000000080
+        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
+        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
+        00}
+    end
+    object DCFire4: TGLDummyCube
+      Position.Coordinates = {0000000000000000000040400000803F}
+      CubeSize = 1.000000000000000000
+      EffectsData = {
+        0458434F4C02010202061254474C536F75726365504658456666656374020202
+        001200000000020002000608466C616D65504658050000000000000080FF3F02
+        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
+        0500000000000AD7A3F83F020002000905000000000000000000000802000200
+        020202001200000000020002000608536D6F6B65504658050000000000000080
+        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
+        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
+        00}
+    end
+    object DCFire5: TGLDummyCube
+      Position.Coordinates = {0000000000000000000040C00000803F}
+      CubeSize = 1.000000000000000000
+      EffectsData = {
+        0458434F4C02010202061254474C536F75726365504658456666656374020202
+        001200000000020002000608466C616D65504658050000000000000080FF3F02
+        06020008020008020008050000000000CDCCCCFC3F050000000000CDCCCCFB3F
+        0500000000000AD7A3F83F020002000905000000000000000000000802000200
+        020202001200000000020002000608536D6F6B65504658050000000000000080
+        FF3F0206020008020008020008050000000000CDCCCCFC3F050000000000CDCC
+        CCFB3F0500000000000AD7A3F83F020002000905000000000000000000000802
+        00}
+    end
+    object ParticleFXRenderer: TGLParticleFXRenderer
+      BlendingMode = bmTransparency
+    end
+    object DCTarget: TGLDummyCube
+      Position.Coordinates = {0000000000000040000000000000803F}
+      CubeSize = 1.000000000000000000
+    end
+    object GLCamera: TGLCamera
+      DepthOfView = 100.000000000000000000
+      FocalLength = 50.000000000000000000
+      TargetObject = DCTarget
+      Position.Coordinates = {00004040000040400000A0400000803F}
+    end
+  end
+  object SmokePFX: TGLPerlinPFXManager
+    Cadencer = GLCadencer
+    Renderer = ParticleFXRenderer
+    Acceleration.Coordinates = {000000000000803F0000000000000000}
+    Friction = 1.000000000000000000
+    BlendingMode = bmTransparency
+    Smoothness = 1.000000000000000000
+    Brightness = 1.000000000000000000
+    Gamma = 1.000000000000000000
+    ParticleSize = 0.500000000000000000
+    ColorInner.Color = {0000803F0000803F0000803F00000000}
+    ColorOuter.Color = {0000803F0000803F0000803F00000000}
+    LifeColors = <
+      item
+        ColorInner.Color = {0000803F0000803F0000803F00000000}
+        ColorOuter.Color = {0000803F0000803F0000803F00000000}
+        LifeTime = 0.750000000000000000
+        SizeScale = 1.000000000000000000
+      end
+      item
+        ColorInner.Color = {0000803F0000803F0000803F9A99993E}
+        ColorOuter.Color = {0000803F0000803F0000803F00000000}
+        LifeTime = 3.000000000000000000
+        SizeScale = 2.000000000000000000
+      end
+      item
+        ColorInner.Color = {0000803F0000803F0000803F00000000}
+        ColorOuter.Color = {0000803F0000803F0000803F00000000}
+        LifeTime = 5.000000000000000000
+        SizeScale = 3.000000000000000000
+      end>
+    Left = 96
+    Top = 8
+  end
+  object FlamePFX: TGLCustomSpritePFXManager
+    Cadencer = GLCadencer
+    Renderer = ParticleFXRenderer
+    Acceleration.Coordinates = {000000000000803F0000000000000000}
+    Friction = 1.000000000000000000
+    ShareSprites = SmokePFX
+    ParticleSize = 0.200000002980232200
+    ColorInner.Color = {0000803F0000803F000000000000003F}
+    ColorOuter.Color = {0000803F0000803F0000000000000000}
+    LifeColors = <
+      item
+        ColorInner.Color = {0000803F0000803F0000000000000000}
+        ColorOuter.Color = {0000803F000000000000000000000000}
+        LifeTime = 2.000000000000000000
+        SizeScale = 1.000000000000000000
+      end>
+    Left = 96
+    Top = 88
+  end
+  object GLCadencer: TGLCadencer
+    Scene = GLScene
+    OnProgress = GLCadencerProgress
+    Left = 24
+    Top = 88
+  end
+  object Timer: TTimer
+    OnTimer = TimerTimer
+    Left = 192
+    Top = 8
+  end
+end

+ 71 - 71
Demos/Delphi/bench/smoking/Unit1.pas → Demos/Delphi/bench/SmokingFm.pas

@@ -1,71 +1,71 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Classes,
-  Vcl.Graphics,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.Dialogs,
-  Vcl.ExtCtrls,
-
-  
-  GLS.Cadencer, 
-  GLS.ParticleFX, 
-  GLS.PerlinPFX, 
-  GLS.Scene, 
-  GLS.Objects,
-  GLS.SceneViewer, 
-  GLS.Coordinates, 
-  GLS.SimpleNavigation, 
-  GLS.BaseClasses;
-
-type
-  TForm1 = class(TForm)
-    GLSceneViewer: TGLSceneViewer;
-    GLScene: TGLScene;
-    GLCamera: TGLCamera;
-    DCFire1: TGLDummyCube;
-    ParticleFXRenderer: TGLParticleFXRenderer;
-    SmokePFX: TGLPerlinPFXManager;
-    FlamePFX: TGLCustomSpritePFXManager;
-    GLCadencer: TGLCadencer;
-    DCTarget: TGLDummyCube;
-    Timer: TTimer;
-    Panel1: TPanel;
-    procedure GLCadencerProgress(Sender: TObject; const deltaTime,
-      newTime: Double);
-    procedure TimerTimer(Sender: TObject);
-  private
-     
-  public
-     
-  end;
-
-var
-  Form1: TForm1;
-
-implementation
-
-{$R *.dfm}
-
-procedure TForm1.GLCadencerProgress(Sender: TObject; const deltaTime,
-  newTime: Double);
-begin
-   SmokePFX.Rotation:=newTime;
-   GLSceneViewer.Invalidate;
-end;
-
-procedure TForm1.TimerTimer(Sender: TObject);
-begin
-   Panel1.Caption := GLSceneViewer.FramesPerSecondText
-            +Format(' - %d Particles - %.3f ms Sort',
-                    [SmokePFX.ParticleCount+FlamePFX.ParticleCount,
-                     ParticleFXRenderer.LastSortTime]);
-   GLSceneViewer.ResetPerformanceMonitor;
-end;
-
-end.
+unit SmokingFm;
+
+interface
+
+uses
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.ExtCtrls,
+
+  
+  GLS.Cadencer, 
+  GLS.ParticleFX, 
+  GLS.PerlinPFX, 
+  GLS.Scene, 
+  GLS.Objects,
+  GLS.SceneViewer, 
+  GLS.Coordinates, 
+  GLS.SimpleNavigation, 
+  GLS.BaseClasses;
+
+type
+  TForm1 = class(TForm)
+    GLSceneViewer: TGLSceneViewer;
+    GLScene: TGLScene;
+    GLCamera: TGLCamera;
+    DCFire1: TGLDummyCube;
+    ParticleFXRenderer: TGLParticleFXRenderer;
+    SmokePFX: TGLPerlinPFXManager;
+    FlamePFX: TGLCustomSpritePFXManager;
+    GLCadencer: TGLCadencer;
+    DCTarget: TGLDummyCube;
+    Timer: TTimer;
+    Panel1: TPanel;
+    procedure GLCadencerProgress(Sender: TObject; const deltaTime,
+      newTime: Double);
+    procedure TimerTimer(Sender: TObject);
+  private
+     
+  public
+     
+  end;
+
+var
+  Form1: TForm1;
+
+implementation
+
+{$R *.dfm}
+
+procedure TForm1.GLCadencerProgress(Sender: TObject; const deltaTime,
+  newTime: Double);
+begin
+   SmokePFX.Rotation:=newTime;
+   GLSceneViewer.Invalidate;
+end;
+
+procedure TForm1.TimerTimer(Sender: TObject);
+begin
+   Panel1.Caption := GLSceneViewer.FramesPerSecondText
+            +Format(' - %d Particles - %.3f ms Sort',
+                    [SmokePFX.ParticleCount+FlamePFX.ParticleCount,
+                     ParticleFXRenderer.LastSortTime]);
+   GLSceneViewer.ResetPerformanceMonitor;
+end;
+
+end.

+ 36 - 36
Demos/Delphi/bench/volcano/volcano.dpr → Demos/Delphi/bench/Volcano.dpr

@@ -1,36 +1,36 @@
-{: Scene-wide Particles FX bench.
-
-   Originally planned for the specials FX, but become a bench due to lack of
-   time to improve graphics ;)<br>
-   This is quite a brute-force situation for the Particles FX Renderer, two
-   systems are present (Red an Blue) but Red contains the bulk of the particles.
-
-   Benchmark results (default win size, "Inferno" mode, ie. approx 7000 particles):
-
-   CPU               Graphics          Colors      FPS         Sort Time
-   AXP 2200+         GF3 Ti200         32 bits    126.0        0.82 msec
-   --- 26/05/04 - Long time no bench
-   TBird 1.1GHz      GeForce2 Pro      32 bits    103.8        2.60 msec
-   Duron 800MHz      TNT2 M64          32 bits     16.7        3.92 msec
-   --- 27/01/02 - ZWrite=False in the PFX Renderer, minor optims
-   TBird 1.1GHz      GeForce2 Pro      32 bits     91.7        2.86 msec
-   Duron 800MHz      TNT2 M64          32 bits     12.2        4.45 msec
-   --- 20/01/02 - Optimized PFX (sort) and TGLPolygonPFXManager (rendering)
-   TBird 1.1Ghz      GeForce2 Pro      32 bits     65.5        3.66 msec
-   Duron 800MHz      Voodoo3 NT4       16 bits      7.4        5.52 msec
-   --- 09/09/01 - Created Benchmark
-
-}
-program volcano;
-
-uses
-  Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.res}
-
-begin
-  Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+{: Scene-wide Particles FX bench.
+
+   Originally planned for the specials FX, but become a bench due to lack of
+   time to improve graphics ;)<br>
+   This is quite a brute-force situation for the Particles FX Renderer, two
+   systems are present (Red an Blue) but Red contains the bulk of the particles.
+
+   Benchmark results (default win size, "Inferno" mode, ie. approx 7000 particles):
+
+   CPU               Graphics          Colors      FPS         Sort Time
+   AXP 2200+         GF3 Ti200         32 bits    126.0        0.82 msec
+   --- 26/05/04 - Long time no bench
+   TBird 1.1GHz      GeForce2 Pro      32 bits    103.8        2.60 msec
+   Duron 800MHz      TNT2 M64          32 bits     16.7        3.92 msec
+   --- 27/01/02 - ZWrite=False in the PFX Renderer, minor optims
+   TBird 1.1GHz      GeForce2 Pro      32 bits     91.7        2.86 msec
+   Duron 800MHz      TNT2 M64          32 bits     12.2        4.45 msec
+   --- 20/01/02 - Optimized PFX (sort) and TGLPolygonPFXManager (rendering)
+   TBird 1.1Ghz      GeForce2 Pro      32 bits     65.5        3.66 msec
+   Duron 800MHz      Voodoo3 NT4       16 bits      7.4        5.52 msec
+   --- 09/09/01 - Created Benchmark
+
+}
+program Volcano;
+
+uses
+  Forms,
+  VolcanoFm in 'VolcanoFm.pas' {FormVolcano};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.CreateForm(TFormVolcano, FormVolcano);
+  Application.Run;
+end.

+ 869 - 0
Demos/Delphi/bench/Volcano.dproj

@@ -0,0 +1,869 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{1C2D9656-F9B4-499A-9319-3788D1D751AA}</ProjectGuid>
+        <MainSource>Volcano.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
+        <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>
+        <DCC_K>false</DCC_K>
+        <SanitizedProjectName>volcano</SanitizedProjectName>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_F>false</DCC_F>
+        <DCC_ImageBase>00400000</DCC_ImageBase>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_Optimize>false</DCC_Optimize>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="VolcanoFm.pas">
+            <Form>FormVolcano</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">Volcano.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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="Win32\Debug\Volcano.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>Volcano.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

BIN
Demos/Delphi/bench/Volcano.jpg


+ 148 - 147
Demos/Delphi/bench/volcano/Unit1.dfm → Demos/Delphi/bench/VolcanoFm.dfm

@@ -1,147 +1,148 @@
-object Form1: TForm1
-  Left = 171
-  Top = 95
-  Caption = 'Volcano'
-  ClientHeight = 315
-  ClientWidth = 460
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'MS Sans Serif'
-  Font.Style = []
-  OldCreateOrder = False
-  OnCreate = FormCreate
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 0
-    Top = 0
-    Width = 376
-    Height = 288
-    Camera = GLCamera1
-    Buffer.BackgroundColor = clBlack
-    FieldOfView = 141.703720092773400000
-    Align = alClient
-    TabOrder = 0
-  end
-  object RadioGroup1: TRadioGroup
-    Left = 376
-    Top = 0
-    Width = 84
-    Height = 288
-    Align = alRight
-    Caption = 'Mode'
-    ItemIndex = 1
-    Items.Strings = (
-      'Sleepy'
-      'Gentle'
-      'Average'
-      'Restless'
-      'Angry'
-      'Inferno')
-    TabOrder = 1
-    OnClick = RadioGroup1Click
-  end
-  object Panel1: TPanel
-    Left = 0
-    Top = 288
-    Width = 460
-    Height = 27
-    Align = alBottom
-    Caption = 'FPS'
-    TabOrder = 2
-  end
-  object GLScene1: TGLScene
-    Left = 24
-    Top = 16
-    object DCVolcano: TGLDummyCube
-      CubeSize = 1.000000000000000000
-      BehavioursData = {
-        0458434F4C02010201060B54474C42496E65727469610200060E53696D706C65
-        20496E657274696102000200050000000000000080FF3F020008050000000000
-        0000B40540050000000000000000000005000000000000000000000902000802
-        0008}
-      EffectsData = {
-        0458434F4C02010201061254474C536F75726365504658456666656374020202
-        00120000000002000200060A504658566F6C63616E6F050000000000000080FF
-        3F02060200090000000000004040000000000000000002000802000805000000
-        0000000080FF3F050000000000CDCCCCFC3F0500000000008FC2F5F83F020002
-        00090500000000000000000000080200}
-      object Sphere1: TGLSphere
-        Material.FrontProperties.Diffuse.Color = {00000000000000000000803F0000803F}
-        Material.FrontProperties.Emission.Color = {00000000000000008180003F0000803F}
-        Position.Coordinates = {0000000000000040000000400000803F}
-        Radius = 0.300000011920929000
-        Slices = 12
-        Stacks = 12
-        EffectsData = {
-          0458434F4C02010201061254474C536F75726365504658456666656374020202
-          001200000000020002000607504658426C7565050000000000000080FF3F0206
-          020008020008020008050000000000CDCCCCFB3F050000000000CDCCCCFB3F05
-          0000000000CDCCCCFB3F02000200090500000000000000000000080200}
-      end
-    end
-    object PFXRenderer: TGLParticleFXRenderer
-    end
-    object GLLightSource1: TGLLightSource
-      ConstAttenuation = 1.000000000000000000
-      Position.Coordinates = {0000204100002041000000000000803F}
-      SpotCutOff = 180.000000000000000000
-    end
-    object DCCamera: TGLDummyCube
-      Position.Coordinates = {0000000000004040000000000000803F}
-      CubeSize = 1.000000000000000000
-      object GLCamera1: TGLCamera
-        DepthOfView = 30.000000000000000000
-        FocalLength = 50.000000000000000000
-        TargetObject = DCCamera
-        Position.Coordinates = {00002041000000410000C0400000803F}
-      end
-    end
-  end
-  object PFXVolcano: TGLPolygonPFXManager
-    Cadencer = GLCadencer1
-    Renderer = PFXRenderer
-    Acceleration.Coordinates = {00000000000080BF0000000000000000}
-    Friction = 1.000000000000000000
-    NbSides = 7
-    ParticleSize = 0.250000000000000000
-    ColorOuter.Color = {0000803F000000000000000000000000}
-    LifeColors = <
-      item
-        ColorInner.Color = {0000803F000000000000000000000000}
-        LifeTime = 7.000000000000000000
-        SizeScale = 1.000000000000000000
-      end>
-    Left = 96
-    Top = 16
-  end
-  object GLCadencer1: TGLCadencer
-    Scene = GLScene1
-    OnProgress = GLCadencer1Progress
-    Left = 96
-    Top = 72
-  end
-  object Timer1: TTimer
-    OnTimer = Timer1Timer
-    Left = 248
-    Top = 16
-  end
-  object PFXBlue: TGLPolygonPFXManager
-    Cadencer = GLCadencer1
-    Renderer = PFXRenderer
-    Friction = 1.000000000000000000
-    ParticleSize = 0.550000011920929000
-    ColorInner.Color = {00000000000000000000803F0000803F}
-    ColorOuter.Color = {00000000000000001283203F00000000}
-    LifeColors = <
-      item
-        ColorInner.Color = {0000803F0000803F0000803F00000000}
-        LifeTime = 3.000000000000000000
-        SizeScale = 1.000000000000000000
-      end>
-    Left = 24
-    Top = 72
-  end
-end
+object FormVolcano: TFormVolcano
+  Left = 171
+  Top = 95
+  Caption = 'Volcano'
+  ClientHeight = 315
+  ClientWidth = 460
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'MS Sans Serif'
+  Font.Style = []
+  OldCreateOrder = False
+  OnCreate = FormCreate
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 0
+    Top = 0
+    Width = 376
+    Height = 288
+    Camera = GLCamera1
+    Buffer.BackgroundColor = clBlack
+    FieldOfView = 141.703720092773400000
+    PenAsTouch = False
+    Align = alClient
+    TabOrder = 0
+  end
+  object RadioGroup1: TRadioGroup
+    Left = 376
+    Top = 0
+    Width = 84
+    Height = 288
+    Align = alRight
+    Caption = 'Mode'
+    ItemIndex = 1
+    Items.Strings = (
+      'Sleepy'
+      'Gentle'
+      'Average'
+      'Restless'
+      'Angry'
+      'Inferno')
+    TabOrder = 1
+    OnClick = RadioGroup1Click
+  end
+  object Panel1: TPanel
+    Left = 0
+    Top = 288
+    Width = 460
+    Height = 27
+    Align = alBottom
+    Caption = 'FPS'
+    TabOrder = 2
+  end
+  object GLScene1: TGLScene
+    Left = 24
+    Top = 16
+    object DCVolcano: TGLDummyCube
+      CubeSize = 1.000000000000000000
+      BehavioursData = {
+        0458434F4C02010201060B54474C42496E65727469610200060E53696D706C65
+        20496E657274696102000200050000000000000080FF3F020008050000000000
+        0000B40540050000000000000000000005000000000000000000000902000802
+        0008}
+      EffectsData = {
+        0458434F4C02010201061254474C536F75726365504658456666656374020202
+        00120000000002000200060A504658566F6C63616E6F050000000000000080FF
+        3F02060200090000000000004040000000000000000002000802000805000000
+        0000000080FF3F050000000000CDCCCCFC3F0500000000008FC2F5F83F020002
+        00090500000000000000000000080200}
+      object Sphere1: TGLSphere
+        Material.FrontProperties.Diffuse.Color = {00000000000000000000803F0000803F}
+        Material.FrontProperties.Emission.Color = {00000000000000008180003F0000803F}
+        Position.Coordinates = {0000000000000040000000400000803F}
+        Radius = 0.300000011920929000
+        Slices = 12
+        Stacks = 12
+        EffectsData = {
+          0458434F4C02010201061254474C536F75726365504658456666656374020202
+          001200000000020002000607504658426C7565050000000000000080FF3F0206
+          020008020008020008050000000000CDCCCCFB3F050000000000CDCCCCFB3F05
+          0000000000CDCCCCFB3F02000200090500000000000000000000080200}
+      end
+    end
+    object PFXRenderer: TGLParticleFXRenderer
+    end
+    object GLLightSource1: TGLLightSource
+      ConstAttenuation = 1.000000000000000000
+      Position.Coordinates = {0000204100002041000000000000803F}
+      SpotCutOff = 180.000000000000000000
+    end
+    object DCCamera: TGLDummyCube
+      Position.Coordinates = {0000000000004040000000000000803F}
+      CubeSize = 1.000000000000000000
+      object GLCamera1: TGLCamera
+        DepthOfView = 30.000000000000000000
+        FocalLength = 50.000000000000000000
+        TargetObject = DCCamera
+        Position.Coordinates = {00002041000000410000C0400000803F}
+      end
+    end
+  end
+  object PFXVolcano: TGLPolygonPFXManager
+    Cadencer = GLCadencer1
+    Renderer = PFXRenderer
+    Acceleration.Coordinates = {00000000000080BF0000000000000000}
+    Friction = 1.000000000000000000
+    NbSides = 7
+    ParticleSize = 0.250000000000000000
+    ColorOuter.Color = {0000803F000000000000000000000000}
+    LifeColors = <
+      item
+        ColorInner.Color = {0000803F000000000000000000000000}
+        LifeTime = 7.000000000000000000
+        SizeScale = 1.000000000000000000
+      end>
+    Left = 96
+    Top = 16
+  end
+  object GLCadencer1: TGLCadencer
+    Scene = GLScene1
+    OnProgress = GLCadencer1Progress
+    Left = 96
+    Top = 72
+  end
+  object Timer1: TTimer
+    OnTimer = Timer1Timer
+    Left = 248
+    Top = 16
+  end
+  object PFXBlue: TGLPolygonPFXManager
+    Cadencer = GLCadencer1
+    Renderer = PFXRenderer
+    Friction = 1.000000000000000000
+    ParticleSize = 0.550000011920929000
+    ColorInner.Color = {00000000000000000000803F0000803F}
+    ColorOuter.Color = {00000000000000001283203F00000000}
+    LifeColors = <
+      item
+        ColorInner.Color = {0000803F0000803F0000803F00000000}
+        LifeTime = 3.000000000000000000
+        SizeScale = 1.000000000000000000
+      end>
+    Left = 24
+    Top = 72
+  end
+end

+ 93 - 96
Demos/Delphi/bench/volcano/Unit1.pas → Demos/Delphi/bench/VolcanoFm.pas

@@ -1,97 +1,94 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Classes,
-  Vcl.Graphics,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.Dialogs,
-  Vcl.ExtCtrls,
-  Vcl.StdCtrls,
-
-  
-  GLS.Scene,
-  GLS.Objects,
-  GLS.ParticleFX,
-  GLS.Cadencer,
-  GLS.Behaviours,
-  GLS.SceneViewer,
- 
-  GLS.Coordinates,
-  GLS.BaseClasses;
-
-type
-  TForm1 = class(TForm)
-    GLSceneViewer1: TGLSceneViewer;
-    GLScene1: TGLScene;
-    GLCamera1: TGLCamera;
-    DCVolcano: TGLDummyCube;
-    PFXVolcano: TGLPolygonPFXManager;
-    GLCadencer1: TGLCadencer;
-    PFXRenderer: TGLParticleFXRenderer;
-    Timer1: TTimer;
-    Sphere1: TGLSphere;
-    GLLightSource1: TGLLightSource;
-    PFXBlue: TGLPolygonPFXManager;
-    DCCamera: TGLDummyCube;
-    RadioGroup1: TRadioGroup;
-    Panel1: TPanel;
-    procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
-      newTime: Double);
-    procedure Timer1Timer(Sender: TObject);
-    procedure RadioGroup1Click(Sender: TObject);
-    procedure FormCreate(Sender: TObject);
-  private
-     
-  public
-     
-  end;
-
-var
-  Form1: TForm1;
-
-implementation
-
-{$R *.dfm}
-
-procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime,
-  newTime: Double);
-begin
-   GLSceneViewer1.Invalidate;
-end;
-
-procedure TForm1.Timer1Timer(Sender: TObject);
-begin
-   Panel1.Caption:=Format('%.1f FPS - %3d Particles - Depth Sort: %.2f msec',
-                   [GLSceneViewer1.FramesPerSecond,
-                    PFXVolcano.Particles.ItemCount+PFXBlue.Particles.ItemCount,
-                    PFXRenderer.LastSortTime]);
-   GLSceneViewer1.ResetPerformanceMonitor;
-end;
-
-procedure TForm1.RadioGroup1Click(Sender: TObject);
-var
-   source : TGLSourcePFXEffect;
-begin
-   source:=GetOrCreateSourcePFX(DCVolcano);
-   case RadioGroup1.ItemIndex of
-      0 : source.ParticleInterval:=0.1;
-      1 : source.ParticleInterval:=0.05;
-      2 : source.ParticleInterval:=0.02;
-      3 : source.ParticleInterval:=0.01;
-      4 : source.ParticleInterval:=0.005;
-      5 : source.ParticleInterval:=0.001;
-   end;
-end;
-
-procedure TForm1.FormCreate(Sender: TObject);
-begin
-   RadioGroup1Click(Self);
-end;
-
-end.
+unit VolcanoFm;
+
+interface
+
+uses
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.ExtCtrls,
+  Vcl.StdCtrls,
+
+  
+  GLS.Scene,
+  GLS.Objects,
+  GLS.ParticleFX,
+  GLS.Cadencer,
+  GLS.Behaviours,
+  GLS.SceneViewer,
+ 
+  GLS.Coordinates,
+  GLS.BaseClasses;
+
+type
+  TFormVolcano = class(TForm)
+    GLSceneViewer1: TGLSceneViewer;
+    GLScene1: TGLScene;
+    GLCamera1: TGLCamera;
+    DCVolcano: TGLDummyCube;
+    PFXVolcano: TGLPolygonPFXManager;
+    GLCadencer1: TGLCadencer;
+    PFXRenderer: TGLParticleFXRenderer;
+    Timer1: TTimer;
+    Sphere1: TGLSphere;
+    GLLightSource1: TGLLightSource;
+    PFXBlue: TGLPolygonPFXManager;
+    DCCamera: TGLDummyCube;
+    RadioGroup1: TRadioGroup;
+    Panel1: TPanel;
+    procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
+      newTime: Double);
+    procedure Timer1Timer(Sender: TObject);
+    procedure RadioGroup1Click(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+  private
+  end;
+
+var
+  FormVolcano: TFormVolcano;
+
+implementation
+
+{$R *.dfm}
+
+procedure TFormVolcano.GLCadencer1Progress(Sender: TObject; const deltaTime,
+  newTime: Double);
+begin
+   GLSceneViewer1.Invalidate;
+end;
+
+procedure TFormVolcano.Timer1Timer(Sender: TObject);
+begin
+   Panel1.Caption:=Format('%.1f FPS - %3d Particles - Depth Sort: %.2f msec',
+                   [GLSceneViewer1.FramesPerSecond,
+                    PFXVolcano.Particles.ItemCount+PFXBlue.Particles.ItemCount,
+                    PFXRenderer.LastSortTime]);
+   GLSceneViewer1.ResetPerformanceMonitor;
+end;
+
+procedure TFormVolcano.RadioGroup1Click(Sender: TObject);
+var
+   source : TGLSourcePFXEffect;
+begin
+   source:=GetOrCreateSourcePFX(DCVolcano);
+   case RadioGroup1.ItemIndex of
+      0 : source.ParticleInterval:=0.1;
+      1 : source.ParticleInterval:=0.05;
+      2 : source.ParticleInterval:=0.02;
+      3 : source.ParticleInterval:=0.01;
+      4 : source.ParticleInterval:=0.005;
+      5 : source.ParticleInterval:=0.001;
+   end;
+end;
+
+procedure TFormVolcano.FormCreate(Sender: TObject);
+begin
+   RadioGroup1Click(Self);
+end;
+
+end.
  

+ 14 - 14
Demos/Delphi/bench/whirlwind/Whirlwind.dpr → Demos/Delphi/bench/Whirlwind.dpr

@@ -1,14 +1,14 @@
-program Whirlwind;
-
-uses
-  Vcl.Forms,
-  Unit1 in 'Unit1.pas' {Form1};
-
-{$R *.res}
-
-begin
-  Application.Initialize;
-  Application.MainFormOnTaskbar := True;
-  Application.CreateForm(TForm1, Form1);
-  Application.Run;
-end.
+program Whirlwind;
+
+uses
+  Vcl.Forms,
+  WhirlwindFm in 'WhirlwindFm.pas' {FormWhirlwind};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.MainFormOnTaskbar := True;
+  Application.CreateForm(TFormWhirlwind, FormWhirlwind);
+  Application.Run;
+end.

+ 873 - 0
Demos/Delphi/bench/Whirlwind.dproj

@@ -0,0 +1,873 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{BBA25918-30E3-445F-947F-359039607BCD}</ProjectGuid>
+        <MainSource>Whirlwind.dpr</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <TargetedPlatforms>3</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <FrameworkType>VCL</FrameworkType>
+        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
+        <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>
+        <DCC_K>false</DCC_K>
+        <SanitizedProjectName>Whirlwind</SanitizedProjectName>
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
+        <DCC_F>false</DCC_F>
+        <DCC_ImageBase>00400000</DCC_ImageBase>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+    </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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
+        <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>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_Optimize>false</DCC_Optimize>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
+        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="WhirlwindFm.pas">
+            <Form>FormWhirlwind</Form>
+        </DCCReference>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">Whirlwind.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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="Win32\Debug\Whirlwind.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>Whirlwind.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="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>
+                </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>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <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>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <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>
+                </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="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="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="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <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="Win32">
+                        <Operation>0</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_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="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_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_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="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <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="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>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <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>
+                </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>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</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="Win32">
+                        <Operation>0</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="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX64" 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>

BIN
Demos/Delphi/bench/Whirlwind.jpg


+ 82 - 82
Demos/Delphi/bench/whirlwind/Unit1.dfm → Demos/Delphi/bench/WhirlwindFm.dfm

@@ -1,82 +1,82 @@
-object Form1: TForm1
-  Left = 0
-  Top = 0
-  Caption = 'Whirlwind'
-  ClientHeight = 296
-  ClientWidth = 441
-  Color = clBtnFace
-  Font.Charset = DEFAULT_CHARSET
-  Font.Color = clWindowText
-  Font.Height = -11
-  Font.Name = 'Tahoma'
-  Font.Style = []
-  OldCreateOrder = False
-  PixelsPerInch = 96
-  TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
-    Left = 0
-    Top = 0
-    Width = 441
-    Height = 268
-    Camera = GLCamera1
-    Buffer.BackgroundColor = clBlack
-    FieldOfView = 158.863967895507800000
-    PenAsTouch = False
-    Align = alClient
-    OnMouseDown = GLSceneViewer1MouseDown
-    OnMouseMove = GLSceneViewer1MouseMove
-    TabOrder = 0
-  end
-  object Panel1: TPanel
-    Left = 0
-    Top = 268
-    Width = 441
-    Height = 28
-    Align = alBottom
-    Caption = 'FPS'
-    TabOrder = 1
-  end
-  object Timer1: TTimer
-    Interval = 10000
-    OnTimer = Timer1Timer
-    Left = 152
-    Top = 40
-  end
-  object GLCadencer1: TGLCadencer
-    Scene = GLScene1
-    OnProgress = GLCadencer1Progress
-    Left = 64
-    Top = 104
-  end
-  object GLScene1: TGLScene
-    Left = 64
-    Top = 40
-    object GLParticles1: TGLParticles
-      ObjectsSorting = osNone
-      CubeSize = 1.000000000000000000
-      ParticlePoolSize = 10
-      OnActivateParticle = GLParticles1ActivateParticle
-      object DummyCube1: TGLDummyCube
-        CubeSize = 1.000000000000000000
-        BehavioursData = {
-          0458434F4C02010201060B54474C42496E657274696102001200000000020002
-          00050000000000000080FF3F0200080500000000000000000000050000000000
-          0000000000050000000000000000000008020008020008}
-        object Sprite1: TGLSprite
-          Material.FrontProperties.Ambient.Color = {0000000000000000000000000000803F}
-          Material.FrontProperties.Diffuse.Color = {0000000000000000000000000000803F}
-          Material.FrontProperties.Emission.Color = {0000803F0000803F0000803F0000803F}
-          Width = 0.100000001490116100
-          Height = 0.100000001490116100
-          Rotation = 0.000000000000000000
-        end
-      end
-    end
-    object GLCamera1: TGLCamera
-      DepthOfView = 100.000000000000000000
-      FocalLength = 25.000000000000000000
-      TargetObject = GLParticles1
-      Position.Coordinates = {0000204100004040000000000000803F}
-    end
-  end
-end
+object FormWhirlwind: TFormWhirlwind
+  Left = 0
+  Top = 0
+  Caption = 'Whirlwind'
+  ClientHeight = 296
+  ClientWidth = 441
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -11
+  Font.Name = 'Tahoma'
+  Font.Style = []
+  OldCreateOrder = False
+  PixelsPerInch = 96
+  TextHeight = 13
+  object GLSceneViewer1: TGLSceneViewer
+    Left = 0
+    Top = 0
+    Width = 441
+    Height = 268
+    Camera = GLCamera1
+    Buffer.BackgroundColor = clBlack
+    FieldOfView = 158.863967895507800000
+    PenAsTouch = False
+    Align = alClient
+    OnMouseDown = GLSceneViewer1MouseDown
+    OnMouseMove = GLSceneViewer1MouseMove
+    TabOrder = 0
+  end
+  object Panel1: TPanel
+    Left = 0
+    Top = 268
+    Width = 441
+    Height = 28
+    Align = alBottom
+    Caption = 'FPS'
+    TabOrder = 1
+  end
+  object Timer1: TTimer
+    Interval = 10000
+    OnTimer = Timer1Timer
+    Left = 152
+    Top = 40
+  end
+  object GLCadencer1: TGLCadencer
+    Scene = GLScene1
+    OnProgress = GLCadencer1Progress
+    Left = 64
+    Top = 104
+  end
+  object GLScene1: TGLScene
+    Left = 64
+    Top = 40
+    object GLParticles1: TGLParticles
+      ObjectsSorting = osNone
+      CubeSize = 1.000000000000000000
+      ParticlePoolSize = 10
+      OnActivateParticle = GLParticles1ActivateParticle
+      object DummyCube1: TGLDummyCube
+        CubeSize = 1.000000000000000000
+        BehavioursData = {
+          0458434F4C02010201060B54474C42496E657274696102001200000000020002
+          00050000000000000080FF3F0200080500000000000000000000050000000000
+          0000000000050000000000000000000008020008020008}
+        object Sprite1: TGLSprite
+          Material.FrontProperties.Ambient.Color = {0000000000000000000000000000803F}
+          Material.FrontProperties.Diffuse.Color = {0000000000000000000000000000803F}
+          Material.FrontProperties.Emission.Color = {0000803F0000803F0000803F0000803F}
+          Width = 0.100000001490116100
+          Height = 0.100000001490116100
+          Rotation = 0.000000000000000000
+        end
+      end
+    end
+    object GLCamera1: TGLCamera
+      DepthOfView = 100.000000000000000000
+      FocalLength = 25.000000000000000000
+      TargetObject = GLParticles1
+      Position.Coordinates = {0000204100004040000000000000803F}
+    end
+  end
+end

+ 120 - 120
Demos/Delphi/bench/whirlwind/Unit1.pas → Demos/Delphi/bench/WhirlwindFm.pas

@@ -1,120 +1,120 @@
-unit Unit1;
-
-interface
-
-uses
-  Winapi.Windows,
-  Winapi.Messages,
-  Winapi.OpenGL,
-  System.SysUtils,
-  System.Math,
-  System.Variants,
-  System.Classes,
-  Vcl.Graphics,
-  Vcl.Controls,
-  Vcl.Forms,
-  Vcl.Dialogs,
-  Vcl.ExtCtrls,
-
-  
- 
-  GLS.BaseClasses,
-  GLS.Scene,
-  GLS.PersistentClasses,
-  GLS.VectorGeometry,
-  GLS.SceneViewer,
-  GLS.Particles,
-  GLS.Cadencer,
-  GLS.Objects,
-  GLS.Coordinates,
-  GLS.Behaviours;
-
-type
-  TForm1 = class(TForm)
-    GLSceneViewer1: TGLSceneViewer;
-    Panel1: TPanel;
-    Timer1: TTimer;
-    GLCadencer1: TGLCadencer;
-    GLScene1: TGLScene;
-    GLParticles1: TGLParticles;
-    DummyCube1: TGLDummyCube;
-    Sprite1: TGLSprite;
-    GLCamera1: TGLCamera;
-    procedure Timer1Timer(Sender: TObject);
-    procedure GLDummyCube1Progress(Sender: TObject; const deltaTime,
-      newTime: Double);
-    procedure GLParticles1ActivateParticle(Sender: TObject;
-      particle: TGLBaseSceneObject);
-    procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
-      newTime: Double);
-    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X,
-      Y: Integer);
-    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
-      Shift: TShiftState; X, Y: Integer);
-  private
-     
-    mx, my : Integer;
-  public
-     
-  end;
-
-var
-  Form1: TForm1;
-
-implementation
-
-{$R *.dfm}
-
-procedure TForm1.GLParticles1ActivateParticle(Sender: TObject;
-  particle: TGLBaseSceneObject);
-var
-	r, alpha, cr, sr : Single;
-begin
-	with particle do begin
-		alpha:=Random*2*PI;
-		r:=2*Random;
-      SinCosine(alpha, r*r, sr, cr);
-		Children[0].Position.SetPoint(sr, 3*r-3, cr);
-		GetOrCreateInertia(particle).TurnSpeed:=Random(30);
-		TGLCustomSceneObject(particle).TagFloat:=GLCadencer1.CurrentTime;
-	end;
-end;
-
-procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
-  Shift: TShiftState; X, Y: Integer);
-begin
-   mx:=x; my:=y;
-end;
-
-procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X,
-  Y: Integer);
-begin
-   if Shift<>[] then begin
-      GLCamera1.MoveAroundTarget(my-y, mx-x);
-      mx:=x; my:=y;
-   end;
-end;
-
-procedure TForm1.GLDummyCube1Progress(Sender: TObject; const deltaTime,
-  newTime: Double);
-begin
-	with TGLCustomSceneObject(Sender) do begin
-		if newTime-TagFloat>3 then
-			GLParticles1.KillParticle(TGLCustomSceneObject(Sender));
-	end;
-end;
-
-procedure TForm1.Timer1Timer(Sender: TObject);
-begin
-	Panel1.Caption:=Format('%d particles, %.1f FPS',
-						 [GLParticles1.Count, GLSceneViewer1.FramesPerSecond]);
-	GLSceneViewer1.ResetPerformanceMonitor;
-end;
-
-procedure TForm1.GLCadencer1Progress(Sender: TObject; const deltaTime,
-  newTime: Double);
-begin
-	GLParticles1.CreateParticle;
-end;
-
-end.
+unit WhirlwindFm;
+
+interface
+
+uses
+  Winapi.Windows,
+  Winapi.Messages,
+  Winapi.OpenGL,
+  System.SysUtils,
+  System.Math,
+  System.Variants,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.ExtCtrls,
+
+  
+ 
+  GLS.BaseClasses,
+  GLS.Scene,
+  GLS.PersistentClasses,
+  GLS.VectorGeometry,
+  GLS.SceneViewer,
+  GLS.Particles,
+  GLS.Cadencer,
+  GLS.Objects,
+  GLS.Coordinates,
+  GLS.Behaviours;
+
+type
+  TFormWhirlwind = class(TForm)
+    GLSceneViewer1: TGLSceneViewer;
+    Panel1: TPanel;
+    Timer1: TTimer;
+    GLCadencer1: TGLCadencer;
+    GLScene1: TGLScene;
+    GLParticles1: TGLParticles;
+    DummyCube1: TGLDummyCube;
+    Sprite1: TGLSprite;
+    GLCamera1: TGLCamera;
+    procedure Timer1Timer(Sender: TObject);
+    procedure GLDummyCube1Progress(Sender: TObject; const deltaTime,
+      newTime: Double);
+    procedure GLParticles1ActivateParticle(Sender: TObject;
+      particle: TGLBaseSceneObject);
+    procedure GLCadencer1Progress(Sender: TObject; const deltaTime,
+      newTime: Double);
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X,
+      Y: Integer);
+    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+  private
+     
+    mx, my : Integer;
+  public
+     
+  end;
+
+var
+  FormWhirlwind: TFormWhirlwind;
+
+implementation
+
+{$R *.dfm}
+
+procedure TFormWhirlwind.GLParticles1ActivateParticle(Sender: TObject;
+  particle: TGLBaseSceneObject);
+var
+	r, alpha, cr, sr : Single;
+begin
+	with particle do begin
+		alpha:=Random*2*PI;
+		r:=2*Random;
+      SinCosine(alpha, r*r, sr, cr);
+		Children[0].Position.SetPoint(sr, 3*r-3, cr);
+		GetOrCreateInertia(particle).TurnSpeed:=Random(30);
+		TGLCustomSceneObject(particle).TagFloat:=GLCadencer1.CurrentTime;
+	end;
+end;
+
+procedure TFormWhirlwind.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
+begin
+   mx:=x; my:=y;
+end;
+
+procedure TFormWhirlwind.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X,
+  Y: Integer);
+begin
+   if Shift<>[] then begin
+      GLCamera1.MoveAroundTarget(my-y, mx-x);
+      mx:=x; my:=y;
+   end;
+end;
+
+procedure TFormWhirlwind.GLDummyCube1Progress(Sender: TObject; const deltaTime,
+  newTime: Double);
+begin
+	with TGLCustomSceneObject(Sender) do begin
+		if newTime-TagFloat>3 then
+			GLParticles1.KillParticle(TGLCustomSceneObject(Sender));
+	end;
+end;
+
+procedure TFormWhirlwind.Timer1Timer(Sender: TObject);
+begin
+	Panel1.Caption:=Format('%d particles, %.1f FPS',
+						 [GLParticles1.Count, GLSceneViewer1.FramesPerSecond]);
+	GLSceneViewer1.ResetPerformanceMonitor;
+end;
+
+procedure TFormWhirlwind.GLCadencer1Progress(Sender: TObject; const deltaTime,
+  newTime: Double);
+begin
+	GLParticles1.CreateParticle;
+end;
+
+end.

+ 96 - 0
Demos/Delphi/bench/aBench.groupproj

@@ -0,0 +1,96 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{341965AB-200C-4FBA-929C-1BDB8FFE4F34}</ProjectGuid>
+    </PropertyGroup>
+    <ItemGroup>
+        <Projects Include="Canvas.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="Megacube.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="Megaglasscube.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="Smoking.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="Volcano.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="Whirlwind.dproj">
+            <Dependencies/>
+        </Projects>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Default.Personality.12</Borland.Personality>
+        <Borland.ProjectType/>
+        <BorlandProject>
+            <Default.Personality/>
+        </BorlandProject>
+    </ProjectExtensions>
+    <Target Name="Canvas">
+        <MSBuild Projects="Canvas.dproj"/>
+    </Target>
+    <Target Name="Canvas:Clean">
+        <MSBuild Projects="Canvas.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="Canvas:Make">
+        <MSBuild Projects="Canvas.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="Megacube">
+        <MSBuild Projects="Megacube.dproj"/>
+    </Target>
+    <Target Name="Megacube:Clean">
+        <MSBuild Projects="Megacube.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="Megacube:Make">
+        <MSBuild Projects="Megacube.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="Megaglasscube">
+        <MSBuild Projects="Megaglasscube.dproj"/>
+    </Target>
+    <Target Name="Megaglasscube:Clean">
+        <MSBuild Projects="Megaglasscube.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="Megaglasscube:Make">
+        <MSBuild Projects="Megaglasscube.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="Smoking">
+        <MSBuild Projects="Smoking.dproj"/>
+    </Target>
+    <Target Name="Smoking:Clean">
+        <MSBuild Projects="Smoking.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="Smoking:Make">
+        <MSBuild Projects="Smoking.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="Volcano">
+        <MSBuild Projects="Volcano.dproj"/>
+    </Target>
+    <Target Name="Volcano:Clean">
+        <MSBuild Projects="Volcano.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="Volcano:Make">
+        <MSBuild Projects="Volcano.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="Whirlwind">
+        <MSBuild Projects="Whirlwind.dproj"/>
+    </Target>
+    <Target Name="Whirlwind:Clean">
+        <MSBuild Projects="Whirlwind.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="Whirlwind:Make">
+        <MSBuild Projects="Whirlwind.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="Build">
+        <CallTarget Targets="Canvas;Megacube;Megaglasscube;Smoking;Volcano;Whirlwind"/>
+    </Target>
+    <Target Name="Clean">
+        <CallTarget Targets="Canvas:Clean;Megacube:Clean;Megaglasscube:Clean;Smoking:Clean;Volcano:Clean;Whirlwind:Clean"/>
+    </Target>
+    <Target Name="Make">
+        <CallTarget Targets="Canvas:Make;Megacube:Make;Megaglasscube:Make;Smoking:Make;Volcano:Make;Whirlwind:Make"/>
+    </Target>
+    <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
+</Project>

+ 6 - 6
Demos/Delphi/bench/bench.htm → Demos/Delphi/bench/aBench.htm

@@ -13,36 +13,36 @@ style="tab-interval:35.4pt">
 <p class="MsoPlainText"><font size="4" face="Courier New"><b>Benchmarks&nbsp;:</b></font></p>
 
 <ul>
-    <li><a href="megacube/megacube.dpr"><b>megacube</b></a><b>&nbsp;:</b><ul>
+    <li><a href="megacube.dpr"><b>megacube</b></a><b>&nbsp;:</b><ul>
             <li>a high number of shaded cubes arranged in a cubic
                 array</li>
             <li>allows benchmarking raw geometrical and T&amp;L
                 power (no texturing here)</li>
         </ul>
     </li>
-    <li><a href="megaglasscube/megaglasscube.dpr"><b>megaglasscube</b></a><b>&nbsp;:</b><ul>
+    <li><a href="megaglasscube.dpr"><b>megaglasscube</b></a><b>&nbsp;:</b><ul>
             <li>a high number of shaded transparent cubes arranged in a cubic
                 array</li>
             <li>same use as megacube but with emphasis on transparency and depth sorting</li>
         </ul>
     </li>
-    <li><a href="volcano/volcano.dpr"><b>volcano</b></a><b>&nbsp;:</b><ul>
+    <li><a href="volcano.dpr"><b>volcano</b></a><b>&nbsp;:</b><ul>
             <li>volcano-like particle systems using ParticleFX</li>
             <li>benchmarking of PFX and depth sorting (PFX is a scene-wide blended particles system)</li>
         </ul>
     </li>
-    <li><a href="smoking/smoking.dpr"><b>smoking</b></a><b>&nbsp;:</b><ul>
+    <li><a href="smoking.dpr"><b>smoking</b></a><b>&nbsp;:</b><ul>
             <li>several heavily smoking fire PFXs</li>
             <li>benchmarking of PFX sprites, depth sorting and intertwined additive/transparently blended PFXs</li>
         </ul>
     </li>
-    <li><a href="whirlwind/whirlwind.dpr"><b>whirlwind</b></a><b>&nbsp;:</b><ul>
+    <li><a href="whirlwind.dpr"><b>whirlwind</b></a><b>&nbsp;:</b><ul>
             <li>a whirlwind-shaped particle systems (via TGLParticles, looks ugly)</li>
             <li>allows benchmarking particle systems and GLScene
                 object management (not even shading is used here)</li>
         </ul>
     </li>
-    <li><a href="canvas/canvas.dpr"><b>canvas</b></a><b>&nbsp;:</b><ul>
+    <li><a href="canvas.dpr"><b>canvas</b></a><b>&nbsp;:</b><ul>
             <li>drawing 2D with TGLCanvas in a scene viewer</li>
             <li>allows benchmarking TGLCanvas performance vs GDI (hardware-acceleration on both sides if available)</li>
         </ul>

+ 0 - 157
Demos/Delphi/bench/canvas/canvas.dproj

@@ -1,157 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{323318E3-CFBB-4AE1-8EED-9707B34527D4}</ProjectGuid>
-        <MainSource>canvas.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
-        <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>
-        <DCC_K>false</DCC_K>
-        <SanitizedProjectName>canvas</SanitizedProjectName>
-        <DCC_E>false</DCC_E>
-        <DCC_N>false</DCC_N>
-        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
-        <DCC_F>false</DCC_F>
-        <DCC_ImageBase>00400000</DCC_ImageBase>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-        <DCC_Optimize>false</DCC_Optimize>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">canvas.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 0 - 167
Demos/Delphi/bench/megacube/Megacube.dproj

@@ -1,167 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{C761CEA6-AAC1-4C9A-9B90-2968CB94BBBB}</ProjectGuid>
-        <MainSource>Megacube.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
-        <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>
-        <DCC_K>false</DCC_K>
-        <SanitizedProjectName>Megacube</SanitizedProjectName>
-        <DCC_E>false</DCC_E>
-        <DCC_N>false</DCC_N>
-        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
-        <DCC_F>false</DCC_F>
-        <DCC_ImageBase>00400000</DCC_ImageBase>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-        <DCC_Optimize>false</DCC_Optimize>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">Megacube.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 0 - 167
Demos/Delphi/bench/megaglasscube/Megaglasscube.dproj

@@ -1,167 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{874301D9-5B32-4D2A-819E-3E2718C3403E}</ProjectGuid>
-        <MainSource>Megaglasscube.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
-        <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>
-        <DCC_K>false</DCC_K>
-        <SanitizedProjectName>Megaglasscube</SanitizedProjectName>
-        <DCC_E>false</DCC_E>
-        <DCC_N>false</DCC_N>
-        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
-        <DCC_F>false</DCC_F>
-        <DCC_ImageBase>00400000</DCC_ImageBase>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-        <DCC_Optimize>false</DCC_Optimize>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">Megaglasscube.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 0 - 167
Demos/Delphi/bench/smoking/smoking.dproj

@@ -1,167 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{7DBBD7A9-D53A-4341-899F-E0A0A6F96528}</ProjectGuid>
-        <MainSource>smoking.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
-        <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>
-        <DCC_K>false</DCC_K>
-        <SanitizedProjectName>smoking</SanitizedProjectName>
-        <DCC_E>false</DCC_E>
-        <DCC_N>false</DCC_N>
-        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
-        <DCC_F>false</DCC_F>
-        <DCC_ImageBase>00400000</DCC_ImageBase>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-        <DCC_Optimize>false</DCC_Optimize>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">smoking.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 0 - 163
Demos/Delphi/bench/volcano/volcano.dproj

@@ -1,163 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{1C2D9656-F9B4-499A-9319-3788D1D751AA}</ProjectGuid>
-        <MainSource>volcano.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
-        <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>
-        <DCC_K>false</DCC_K>
-        <SanitizedProjectName>volcano</SanitizedProjectName>
-        <DCC_E>false</DCC_E>
-        <DCC_N>false</DCC_N>
-        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
-        <DCC_F>false</DCC_F>
-        <DCC_ImageBase>00400000</DCC_ImageBase>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-        <DCC_Optimize>false</DCC_Optimize>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">volcano.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 0 - 167
Demos/Delphi/bench/whirlwind/Whirlwind.dproj

@@ -1,167 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-    <PropertyGroup>
-        <ProjectGuid>{BBA25918-30E3-445F-947F-359039607BCD}</ProjectGuid>
-        <MainSource>Whirlwind.dpr</MainSource>
-        <Base>True</Base>
-        <Config Condition="'$(Config)'==''">Debug</Config>
-        <TargetedPlatforms>3</TargetedPlatforms>
-        <AppType>Application</AppType>
-        <FrameworkType>VCL</FrameworkType>
-        <ProjectVersion>19.0</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)'=='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_S>false</DCC_S>
-        <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>
-        <DCC_K>false</DCC_K>
-        <SanitizedProjectName>Whirlwind</SanitizedProjectName>
-        <DCC_E>false</DCC_E>
-        <DCC_N>false</DCC_N>
-        <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace)</DCC_Namespace>
-        <DCC_F>false</DCC_F>
-        <DCC_ImageBase>00400000</DCC_ImageBase>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Base_Win32)'!=''">
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <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_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
-    </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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <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>
-        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1)'!=''">
-        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
-        <DCC_DebugInformation>0</DCC_DebugInformation>
-        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
-        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2)'!=''">
-        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
-        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
-        <DCC_Optimize>false</DCC_Optimize>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
-    </PropertyGroup>
-    <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
-        <BT_BuildType>Debug</BT_BuildType>
-        <VerInfo_Locale>1033</VerInfo_Locale>
-        <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
-        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <DCC_DcuOutput>.\$(Platform)\$(Config)</DCC_DcuOutput>
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
-        <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>
-        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
-    </PropertyGroup>
-    <ItemGroup>
-        <DelphiCompile Include="$(MainSource)">
-            <MainSource>MainSource</MainSource>
-        </DelphiCompile>
-        <DCCReference Include="Unit1.pas">
-            <Form>Form1</Form>
-        </DCCReference>
-        <BuildConfiguration Include="Debug">
-            <Key>Cfg_2</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Base">
-            <Key>Base</Key>
-        </BuildConfiguration>
-        <BuildConfiguration Include="Release">
-            <Key>Cfg_1</Key>
-            <CfgParent>Base</CfgParent>
-        </BuildConfiguration>
-    </ItemGroup>
-    <ProjectExtensions>
-        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
-        <Borland.ProjectType/>
-        <BorlandProject>
-            <Delphi.Personality>
-                <Source>
-                    <Source Name="MainSource">Whirlwind.dpr</Source>
-                </Source>
-                <Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Physics_DT.bpl">GLScene Physics Managers</Excluded_Packages>
-                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\21.0\Bpl\GLScene_Sounds_DT.bpl">GLScene Sound Managers</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.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>
-        </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')"/>
-</Project>

+ 2 - 2
Demos/Delphi/cgshaders/CgBombShader.dpr

@@ -11,12 +11,12 @@ program CgBombShader;
 
 uses
   Forms,
-  fBombShader in 'fBombShader.pas' {Form1};
+  CgBombShaderFm in 'CgBombShaderFm.pas' {FormCgBombShader};
 
 {$R *.res}
 
 begin
   Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
+  Application.CreateForm(TFormCgBombShader, FormCgBombShader);
   Application.Run;
 end.

+ 2 - 2
Demos/Delphi/cgshaders/CgBombShader.dproj

@@ -122,8 +122,8 @@
         <DelphiCompile Include="$(MainSource)">
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
-        <DCCReference Include="fBombShader.pas">
-            <Form>Form1</Form>
+        <DCCReference Include="CgBombShaderFm.pas">
+            <Form>FormCgBombShader</Form>
         </DCCReference>
         <BuildConfiguration Include="Debug">
             <Key>Cfg_2</Key>

BIN
Demos/Delphi/cgshaders/CgBombShader.jpg


+ 1 - 2
Demos/Delphi/cgshaders/fBombShader.dfm → Demos/Delphi/cgshaders/CgBombShaderFm.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormCgBombShader: TFormCgBombShader
   Left = 387
   Top = 217
   Caption = 'Cg Bomb Shader'
@@ -13,7 +13,6 @@ object Form1: TForm1
   KeyPreview = True
   OldCreateOrder = False
   Position = poScreenCenter
-  WindowState = wsMaximized
   OnCreate = FormCreate
   PixelsPerInch = 96
   TextHeight = 13

+ 24 - 23
Demos/Delphi/cgshaders/fBombShader.pas → Demos/Delphi/cgshaders/CgBombShaderFm.pas

@@ -1,4 +1,4 @@
-unit fBombShader;
+unit CgBombShaderFm;
 
 interface
 
@@ -24,19 +24,20 @@ uses
   GLS.VectorFileObjects,
   GLS.File3DS,
   GLS.Graph,
-  CGs.BombShader,
   GLS.Material,
   GLS.VectorGeometry,
+  GLS.Coordinates,
+  GLS.BaseClasses,
+  GLS.Utils,
 
   // Formats
   GLS.FileMD2,
- 
-  GLS.Coordinates,
-  GLS.BaseClasses,
-  GLS.Utils;
+
+
+  Cg.BombShader;
 
 type
-  TForm1 = class(TForm)
+  TFormCgBombShader = class(TForm)
     GLScene1: TGLScene;
     GLCamera1: TGLCamera;
     GLLightSource1: TGLLightSource;
@@ -94,14 +95,14 @@ type
   end;
 
 var
-  Form1:    TForm1;
+  FormCgBombShader:    TFormCgBombShader;
   MyShader: TCgBombShader;
 
 implementation
 
 {$R *.dfm}
 
-procedure TForm1.FormCreate(Sender: TObject);
+procedure TFormCgBombShader.FormCreate(Sender: TObject);
 begin
   // First load models from media directory
   SetGLSceneMediaDir();
@@ -133,17 +134,17 @@ begin
 end;
 
 
-procedure TForm1.ComboBox1Change(Sender: TObject);
+procedure TFormCgBombShader.ComboBox1Change(Sender: TObject);
 begin
   Myshader.GradientTexture := GLMaterialLibrary1.LibMaterialByName(ComboBox1.Text).Material.Texture;
 end;
 
-procedure TForm1.GLCadencer1Progress(Sender: TObject; const DeltaTime, newTime: Double);
+procedure TFormCgBombShader.GLCadencer1Progress(Sender: TObject; const DeltaTime, newTime: Double);
 begin
   GLSceneViewer1.Invalidate();
 end;
 
-procedure TForm1.ResetPositions;
+procedure TFormCgBombShader.ResetPositions;
 begin
   TrackBar1.Position := Round(InterpolateCombinedSafe(0.01, 10, Myshader.Displacement, 0, 100, 1, itLinear));
   TrackBar2.Position := Round(InterpolateCombinedSafe(-0.13, 10, Myshader.Sharpness, 0, 100, 1, itLinear));
@@ -156,7 +157,7 @@ begin
   TrackBar9.Position := Round(InterpolateCombinedSafe(0, 2, Myshader.GradientTextureShare, 0, 100, 1, itLinear));
 end;
 
-procedure TForm1.CheckBox1Click(Sender: TObject);
+procedure TFormCgBombShader.CheckBox1Click(Sender: TObject);
 begin
   GLActor1.Visible := CheckBox1.Checked;
   ffTeapot.Visible := CheckBox2.Checked;
@@ -164,54 +165,54 @@ begin
   ffSphere2.Visible := CheckBox4.Checked;
 end;
 
-procedure TForm1.ShaderEnabledCheckBoxClick(Sender: TObject);
+procedure TFormCgBombShader.ShaderEnabledCheckBoxClick(Sender: TObject);
 begin
   MyShader.Enabled := ShaderEnabledCheckBox.Checked;
 end;
 
-procedure TForm1.TrackBar1Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar1Change(Sender: TObject);
 begin
   if Myshader = nil then
     Exit;
   Myshader.Displacement := InterpolateCombinedSafe(0, 100, TrackBar1.Position, 0.01, 10, 1, itLinear);
 end;
 
-procedure TForm1.TrackBar2Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar2Change(Sender: TObject);
 begin
   Myshader.Sharpness := InterpolateCombinedSafe(0, 100, TrackBar2.Position, -0.13, 10, 1, itLinear);
 end;
 
-procedure TForm1.TrackBar3Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar3Change(Sender: TObject);
 begin
   Myshader.ColorSharpness := InterpolateCombinedSafe(0, 100, TrackBar3.Position, 0.01, 6, 1, itLinear);
 end;
 
-procedure TForm1.TrackBar4Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar4Change(Sender: TObject);
 begin
   Myshader.Speed := InterpolateCombinedSafe(0, 100, TrackBar4.Position, 0.1, 1, 1, itLinear);
 end;
 
-procedure TForm1.TrackBar5Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar5Change(Sender: TObject);
 begin
   Myshader.TurbDensity := InterpolateCombinedSafe(0, 100, TrackBar5.Position, 0.1, 8, 1, itLinear);
 end;
 
-procedure TForm1.TrackBar6Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar6Change(Sender: TObject);
 begin
   Myshader.ColorRange := InterpolateCombinedSafe(0, 100, TrackBar6.Position, -0.5, 0.5, 1, itLinear);
 end;
 
-procedure TForm1.TrackBar7Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar7Change(Sender: TObject);
 begin
   Myshader.Alpha := InterpolateCombinedSafe(0, 100, TrackBar7.Position, 0, 1, 1, itLinear);
 end;
 
-procedure TForm1.TrackBar8Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar8Change(Sender: TObject);
 begin
   Myshader.MainTextureShare := InterpolateCombinedSafe(0, 100, TrackBar8.Position, 0, 2, 1, itLinear);
 end;
 
-procedure TForm1.TrackBar9Change(Sender: TObject);
+procedure TFormCgBombShader.TrackBar9Change(Sender: TObject);
 begin
   Myshader.GradientTextureShare := InterpolateCombinedSafe(0, 100, TrackBar9.Position, 0, 2, 1, itLinear);
 end;

+ 1 - 1
Demos/Delphi/cgshaders/CgCellShader.dpr

@@ -22,7 +22,7 @@ program CgCellShader;
 
 uses
   Forms,
-  fCgCellShader in 'fCgCellShader.pas' {FormCellShading};
+  CgCellShaderFm in 'CgCellShaderFm.pas' {FormCellShading};
 
 {$R *.res}
 

+ 12 - 12
Demos/Delphi/cgshaders/CgCellShader.dproj

@@ -121,11 +121,11 @@
         <DelphiCompile Include="$(MainSource)">
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
-        <DCCReference Include="fCgCellShader.pas">
+        <DCCReference Include="CgCellShaderFm.pas">
             <Form>FormCellShading</Form>
         </DCCReference>
-        <None Include="..\..\..\..\media\Shaders\cellshading_fp.cg"/>
-        <None Include="..\..\..\..\media\Shaders\cellshading_vp.cg"/>
+        <None Include="D:\media\Shaders\cellshading_fp.cg"/>
+        <None Include="D:\media\Shaders\cellshading_vp.cg"/>
         <BuildConfiguration Include="Debug">
             <Key>Cfg_2</Key>
             <CfgParent>Base</CfgParent>
@@ -158,6 +158,12 @@
                 <Platform value="Win64">False</Platform>
             </Platforms>
             <Deployment Version="3">
+                <DeployFile LocalName="..\..\..\..\media\Shaders\cellshading_vp.cg" Configuration="Debug" Class="ProjectFile">
+                    <Platform Name="Win32">
+                        <RemoteDir>.\</RemoteDir>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
                 <DeployFile LocalName="Shaders\cellshading_fp.cg" Configuration="Debug" Class="ProjectFile">
                     <Platform Name="Win64">
                         <RemoteDir>.\</RemoteDir>
@@ -176,21 +182,15 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="Win64\Debug\CgCellShader.exe" Configuration="Debug" Class="ProjectOutput">
-                    <Platform Name="Win64">
-                        <RemoteName>CgCellShader.exe</RemoteName>
-                        <Overwrite>true</Overwrite>
-                    </Platform>
-                </DeployFile>
                 <DeployFile LocalName="Win32\Debug\CgCellShader.exe" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win32">
                         <RemoteName>CgCellShader.exe</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName="..\..\..\..\media\Shaders\cellshading_vp.cg" Configuration="Debug" Class="ProjectFile">
-                    <Platform Name="Win32">
-                        <RemoteDir>.\</RemoteDir>
+                <DeployFile LocalName="Win64\Debug\CgCellShader.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win64">
+                        <RemoteName>CgCellShader.exe</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>

Некоторые файлы не были показаны из-за большого количества измененных файлов