فهرست منبع

Fixed gls.utils and c++ demos

gitflic-user 2 سال پیش
والد
کامیت
b54e7b5721
96فایلهای تغییر یافته به همراه3521 افزوده شده و 545 حذف شده
  1. 49 7
      Examples/Demos/bench/BenchC.cbproj
  2. 8 2
      Examples/Demos/bench/BenchC.cpp
  3. 8 2
      Examples/Demos/bench/BenchD.dpr
  4. 25 2
      Examples/Demos/bench/BenchD.dproj
  5. 28 28
      Examples/Demos/bench/bench.groupproj
  6. 30 33
      Examples/Demos/bench/canvas/fCanvasC.cpp
  7. 1 1
      Examples/Demos/bench/canvas/fCanvasC.dfm
  8. 4 3
      Examples/Demos/bench/canvas/fCanvasC.h
  9. 3 3
      Examples/Demos/bench/canvas/fCanvasD.dfm
  10. 93 2
      Examples/Demos/bench/fBenchC.cpp
  11. 73 3
      Examples/Demos/bench/fBenchC.dfm
  12. 26 3
      Examples/Demos/bench/fBenchC.h
  13. 73 3
      Examples/Demos/bench/fBenchD.dfm
  14. 106 5
      Examples/Demos/bench/fBenchD.pas
  15. 1 1
      Examples/Demos/bench/megacube/MegaCubeC.cbproj
  16. 2 2
      Examples/Demos/bench/megacube/MegaCubeC.cpp
  17. 9 8
      Examples/Demos/bench/megacube/fMegaCubeC.cpp
  18. 1 1
      Examples/Demos/bench/megacube/fMegaCubeC.dfm
  19. 3 3
      Examples/Demos/bench/megacube/fMegaCubeC.h
  20. 20 8
      Examples/Demos/bench/megaglasscube/MegaglassC.cbproj
  21. 2 2
      Examples/Demos/bench/megaglasscube/MegaglassC.cpp
  22. 2 2
      Examples/Demos/bench/megaglasscube/MegaglassD.dpr
  23. 6 6
      Examples/Demos/bench/megaglasscube/MegaglassD.dproj
  24. 4 4
      Examples/Demos/bench/megaglasscube/fMegaglassC.cpp
  25. 1 1
      Examples/Demos/bench/megaglasscube/fMegaglassC.dfm
  26. 5 5
      Examples/Demos/bench/megaglasscube/fMegaglassC.h
  27. 0 0
      Examples/Demos/bench/megaglasscube/fMegaglassD.dfm
  28. 1 1
      Examples/Demos/bench/megaglasscube/fMegaglassD.pas
  29. 4 4
      Examples/Demos/bench/smoking/SmokingC.cbproj
  30. 2 2
      Examples/Demos/bench/smoking/SmokingC.cpp
  31. 2 2
      Examples/Demos/bench/smoking/SmokingD.dpr
  32. 1 1
      Examples/Demos/bench/smoking/SmokingD.dproj
  33. 9 7
      Examples/Demos/bench/smoking/fSmokingC.cpp
  34. 1 1
      Examples/Demos/bench/smoking/fSmokingC.dfm
  35. 5 5
      Examples/Demos/bench/smoking/fSmokingC.h
  36. 11 20
      Examples/Demos/bench/smoking/fSmokingD.dfm
  37. 4 4
      Examples/Demos/bench/smoking/fSmokingD.pas
  38. 4 4
      Examples/Demos/bench/volcano/VolcanoC.cbproj
  39. 2 2
      Examples/Demos/bench/volcano/VolcanoC.cpp
  40. 10 7
      Examples/Demos/bench/volcano/fVolcanoC.cpp
  41. 1 3
      Examples/Demos/bench/volcano/fVolcanoC.dfm
  42. 5 5
      Examples/Demos/bench/volcano/fVolcanoC.h
  43. 1 1
      Examples/Demos/bench/whirlwind/WhirlwindC.cbproj
  44. 2 2
      Examples/Demos/bench/whirlwind/WhirlwindC.cpp
  45. 2 2
      Examples/Demos/bench/whirlwind/WhirlwindD.dpr
  46. 1 1
      Examples/Demos/bench/whirlwind/WhirlwindD.dproj
  47. 12 9
      Examples/Demos/bench/whirlwind/fWhirlC.cpp
  48. 11 20
      Examples/Demos/bench/whirlwind/fWhirlC.dfm
  49. 3 3
      Examples/Demos/bench/whirlwind/fWhirlC.h
  50. 15 20
      Examples/Demos/bench/whirlwind/fWhirlD.dfm
  51. 20 8
      Examples/Demos/bench/whirlwind/fWhirlD.pas
  52. 11 6
      Examples/Demos/collisions/octree/fOctreeD.pas
  53. 1092 0
      Examples/Demos/extrusion/ExtrusionC.cbproj
  54. 40 0
      Examples/Demos/extrusion/ExtrusionC.cpp
  55. 19 0
      Examples/Demos/extrusion/ExtrusionD.dpr
  56. 986 0
      Examples/Demos/extrusion/ExtrusionD.dproj
  57. 13 8
      Examples/Demos/extrusion/bendingcyl/fBendingC.cpp
  58. 1 1
      Examples/Demos/extrusion/bendingcyl/fBendingC.dfm
  59. 3 3
      Examples/Demos/extrusion/bendingcyl/fBendingC.h
  60. 1 1
      Examples/Demos/extrusion/cutoutstar/CutoutstarC.cbproj
  61. 2 2
      Examples/Demos/extrusion/cutoutstar/CutoutstarC.cpp
  62. 8 6
      Examples/Demos/extrusion/cutoutstar/fCutoutstarC.cpp
  63. 1 1
      Examples/Demos/extrusion/cutoutstar/fCutoutstarC.dfm
  64. 3 3
      Examples/Demos/extrusion/cutoutstar/fCutoutstarC.h
  65. 34 10
      Examples/Demos/extrusion/extrusion.groupproj
  66. 94 0
      Examples/Demos/extrusion/fExtrusionC.cpp
  67. 82 0
      Examples/Demos/extrusion/fExtrusionC.dfm
  68. 43 0
      Examples/Demos/extrusion/fExtrusionC.h
  69. 82 0
      Examples/Demos/extrusion/fExtrusionD.dfm
  70. 113 0
      Examples/Demos/extrusion/fExtrusionD.pas
  71. 14 14
      Examples/Demos/extrusion/nutsnbolts/NutsnBoltsC.cbproj
  72. 2 2
      Examples/Demos/extrusion/nutsnbolts/NutsnBoltsC.cpp
  73. 8 6
      Examples/Demos/extrusion/nutsnbolts/fNutsnBoltsC.cpp
  74. 1 3
      Examples/Demos/extrusion/nutsnbolts/fNutsnBoltsC.dfm
  75. 5 5
      Examples/Demos/extrusion/nutsnbolts/fNutsnBoltsC.h
  76. 1 1
      Examples/Demos/extrusion/pawn/PawnC.cbproj
  77. 2 2
      Examples/Demos/extrusion/pawn/PawnC.cpp
  78. 15 14
      Examples/Demos/extrusion/pawn/fPawnC.cpp
  79. 13 10
      Examples/Demos/extrusion/pawn/fPawnC.dfm
  80. 3 3
      Examples/Demos/extrusion/pawn/fPawnC.h
  81. 4 4
      Examples/Demos/extrusion/tentacles/TentacleC.cbproj
  82. 2 2
      Examples/Demos/extrusion/tentacles/TentacleC.cpp
  83. 12 10
      Examples/Demos/extrusion/tentacles/fTentaclesC.cpp
  84. 1 3
      Examples/Demos/extrusion/tentacles/fTentaclesC.dfm
  85. 5 5
      Examples/Demos/extrusion/tentacles/fTentaclesC.h
  86. 1 1
      Examples/Demos/graph/GraphC.cbproj
  87. 2 2
      Examples/Demos/graph/GraphC.cpp
  88. 13 30
      Examples/Demos/graph/fGraphC.cpp
  89. 1 6
      Examples/Demos/graph/fGraphC.dfm
  90. 12 4
      Examples/Demos/graph/fGraphC.h
  91. 0 2
      Examples/Demos/graph/fGraphD.dfm
  92. 0 24
      Examples/Demos/graph/fGraphD.pas
  93. 55 55
      Examples/Demos/graph/graph.groupproj
  94. 1 0
      Examples/Demos/graph/splines/fSplinesC.dfm
  95. BIN
      Installation.pdf
  96. 8 22
      Source/GLS.Utils.pas

+ 49 - 7
Examples/Demos/bench/BenchC.cbproj

@@ -56,14 +56,14 @@
         <ILINK_TranslatedLibraryPath>$(BDSLIB)\$(PLATFORM)\release\$(LANGDIR);$(ILINK_TranslatedLibraryPath)</ILINK_TranslatedLibraryPath>
         <ProjectType>CppVCLApplication</ProjectType>
         <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
-        <AllPackageLibs>rtl.lib;vcl.lib</AllPackageLibs>
+        <AllPackageLibs>rtl.lib;vcl.lib;GLScene_RT.lib;xmlrtl.lib;vclimg.lib</AllPackageLibs>
         <_TCHARMapping>wchar_t</_TCHARMapping>
         <Multithreaded>true</Multithreaded>
         <Icon_MainIcon>$(BDS)\bin\cbuilder_PROJECTICON.ico</Icon_MainIcon>
         <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>
-        <IncludePath>D:\GLScene\Examples\Demos\bench\;$(IncludePath)</IncludePath>
-        <ILINK_LibraryPath>D:\GLScene\Examples\Demos\bench\;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+        <IncludePath>whirlwind\;volcano\;smoking\;megaglasscube\;megacube\;canvas\;D:\GLScene\Examples\Demos\bench\;$(IncludePath)</IncludePath>
+        <ILINK_LibraryPath>whirlwind\;volcano\;smoking\;megaglasscube\;megacube\;canvas\;D:\GLScene\Examples\Demos\bench\;$(ILINK_LibraryPath)</ILINK_LibraryPath>
         <SanitizedProjectName>BenchC</SanitizedProjectName>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
@@ -108,7 +108,7 @@
         <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
         <BCC_UseClassicCompiler>false</BCC_UseClassicCompiler>
         <ILINK_LibraryPath>$(BDSLIB)\$(PLATFORM)$(CC_SUFFIX)\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
-        <LinkPackageImports>rtl.bpi;vcl.bpi</LinkPackageImports>
+        <LinkPackageImports>rtl.bpi;vcl.bpi;GLScene_RT.bpi;xmlrtl.bpi;vclimg.bpi</LinkPackageImports>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_Locale>1033</VerInfo_Locale>
     </PropertyGroup>
@@ -125,13 +125,55 @@
         <CppCompile Include="BenchC.cpp">
             <BuildOrder>0</BuildOrder>
         </CppCompile>
+        <CppCompile Include="canvas\fCanvasC.cpp">
+            <Form>FormCanvas</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>canvas\fCanvasC.h</DependentOn>
+            <BuildOrder>2</BuildOrder>
+        </CppCompile>
         <CppCompile Include="fBenchC.cpp">
-            <Form>FormBenchC</Form>
+            <Form>frmBench</Form>
             <FormType>dfm</FormType>
             <DependentOn>fBenchC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
         </CppCompile>
+        <CppCompile Include="megacube\fMegaCubeC.cpp">
+            <Form>Form1</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>megacube\fMegaCubeC.h</DependentOn>
+            <BuildOrder>3</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="megaglasscube\fMegaglassC.cpp">
+            <Form>FormMegaglasscube</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>megaglasscube\fMegaglassC.h</DependentOn>
+            <BuildOrder>4</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="smoking\fSmokingC.cpp">
+            <Form>FormSmoking</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>smoking\fSmokingC.h</DependentOn>
+            <BuildOrder>5</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="volcano\fVolcanoC.cpp">
+            <Form>FormVolcano</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>volcano\fVolcanoC.h</DependentOn>
+            <BuildOrder>6</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="whirlwind\fWhirlC.cpp">
+            <Form>FormWhirl</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>whirlwind\fWhirlC.h</DependentOn>
+            <BuildOrder>7</BuildOrder>
+        </CppCompile>
+        <FormResources Include="megaglasscube\fMegaglassC.dfm"/>
+        <FormResources Include="smoking\fSmokingC.dfm"/>
+        <FormResources Include="volcano\fVolcanoC.dfm"/>
+        <FormResources Include="whirlwind\fWhirlC.dfm"/>
+        <FormResources Include="canvas\fCanvasC.dfm"/>
         <FormResources Include="fBenchC.dfm"/>
+        <FormResources Include="megacube\fMegaCubeC.dfm"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>
@@ -219,13 +261,13 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName=".\Win32\Debug\BenchC.exe" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName="BenchC.exe" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win32">
                         <RemoteName>BenchC.exe</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName=".\Win32\Debug\BenchC.tds" Configuration="Debug" Class="DebugSymbols">
+                <DeployFile LocalName="BenchC.tds" Configuration="Debug" Class="DebugSymbols">
                     <Platform Name="Win32">
                         <RemoteName>BenchC.tds</RemoteName>
                         <Overwrite>true</Overwrite>

+ 8 - 2
Examples/Demos/bench/BenchC.cpp

@@ -4,7 +4,13 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fBenchC.cpp", FormBenchC);
+USEFORM("megaglasscube\fMegaglassC.cpp", FormMegaglasscube);
+USEFORM("smoking\fSmokingC.cpp", FormSmoking);
+USEFORM("volcano\fVolcanoC.cpp", FormVolcano);
+USEFORM("whirlwind\fWhirlC.cpp", FormWhirl);
+USEFORM("canvas\fCanvasC.cpp", FormCanvas);
+USEFORM("fBenchC.cpp", frmBench);
+USEFORM("megacube\fMegaCubeC.cpp", FormMegacube);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +18,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TFormBenchC), &FormBenchC);
+		Application->CreateForm(__classid(TfrmBench), &frmBench);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 8 - 2
Examples/Demos/bench/BenchD.dpr

@@ -2,13 +2,19 @@ program BenchD;
 
 uses
   Vcl.Forms,
-  fBenchD in 'fBenchD.pas' {FormBenchD};
+  fBenchD in 'fBenchD.pas' {frmBench},
+  fCanvasD in 'canvas\fCanvasD.pas' {FormCanvas},
+  fMegaCubeD in 'megacube\fMegaCubeD.pas' {FormMegacube},
+  fMegaglassD in 'megaglasscube\fMegaglassD.pas' {FormMegaglasscube},
+  fSmokingD in 'smoking\fSmokingD.pas' {FormSmoking},
+  fVolcanoD in 'volcano\fVolcanoD.pas' {FormVolcano},
+  fWhirlD in 'whirlwind\fWhirlD.pas' {FormWhirl};
 
 {$R *.res}
 
 begin
   Application.Initialize;
   Application.MainFormOnTaskbar := True;
-  Application.CreateForm(TFormBenchD, FormBenchD);
+  Application.CreateForm(TfrmBench, frmBench);
   Application.Run;
 end.

+ 25 - 2
Examples/Demos/bench/BenchD.dproj

@@ -46,7 +46,6 @@
         <Base>true</Base>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base)'!=''">
-        <DCC_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
         <DCC_E>false</DCC_E>
         <DCC_N>false</DCC_N>
         <DCC_S>false</DCC_S>
@@ -103,7 +102,31 @@
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
         <DCCReference Include="fBenchD.pas">
-            <Form>FormBenchD</Form>
+            <Form>frmBench</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="canvas\fCanvasD.pas">
+            <Form>FormCanvas</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="megacube\fMegaCubeD.pas">
+            <Form>FormMegacube</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="megaglasscube\fMegaglassD.pas">
+            <Form>FormMegaglasscube</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="smoking\fSmokingD.pas">
+            <Form>FormSmoking</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="volcano\fVolcanoD.pas">
+            <Form>FormVolcano</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="whirlwind\fWhirlD.pas">
+            <Form>FormWhirl</Form>
             <FormType>dfm</FormType>
         </DCCReference>
         <BuildConfiguration Include="Base">

+ 28 - 28
Examples/Demos/bench/bench.groupproj

@@ -3,10 +3,10 @@
         <ProjectGuid>{503B7578-1619-4BE5-ABDF-7CA291825FFD}</ProjectGuid>
     </PropertyGroup>
     <ItemGroup>
-        <Projects Include="BenchC.cbproj">
+        <Projects Include="BenchD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="BenchD.dproj">
+        <Projects Include="BenchC.cbproj">
             <Dependencies/>
         </Projects>
         <Projects Include="canvas\CanvasD.dproj">
@@ -21,10 +21,10 @@
         <Projects Include="megacube\MegaCubeC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="megaglasscube\MegaglasscubeD.dproj">
+        <Projects Include="megaglasscube\MegaglassD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="megaglasscube\MegaGlassCubeC.cbproj">
+        <Projects Include="megaglasscube\MegaglassC.cbproj">
             <Dependencies/>
         </Projects>
         <Projects Include="smoking\SmokingD.dproj">
@@ -53,15 +53,6 @@
             <Default.Personality/>
         </BorlandProject>
     </ProjectExtensions>
-    <Target Name="BenchC">
-        <MSBuild Projects="BenchC.cbproj"/>
-    </Target>
-    <Target Name="BenchC:Clean">
-        <MSBuild Projects="BenchC.cbproj" Targets="Clean"/>
-    </Target>
-    <Target Name="BenchC:Make">
-        <MSBuild Projects="BenchC.cbproj" Targets="Make"/>
-    </Target>
     <Target Name="BenchD">
         <MSBuild Projects="BenchD.dproj"/>
     </Target>
@@ -71,6 +62,15 @@
     <Target Name="BenchD:Make">
         <MSBuild Projects="BenchD.dproj" Targets="Make"/>
     </Target>
+    <Target Name="BenchC">
+        <MSBuild Projects="BenchC.cbproj"/>
+    </Target>
+    <Target Name="BenchC:Clean">
+        <MSBuild Projects="BenchC.cbproj" Targets="Clean"/>
+    </Target>
+    <Target Name="BenchC:Make">
+        <MSBuild Projects="BenchC.cbproj" Targets="Make"/>
+    </Target>
     <Target Name="CanvasD">
         <MSBuild Projects="canvas\CanvasD.dproj"/>
     </Target>
@@ -107,23 +107,23 @@
     <Target Name="MegaCubeC:Make">
         <MSBuild Projects="megacube\MegaCubeC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="MegaglasscubeD">
-        <MSBuild Projects="megaglasscube\MegaglasscubeD.dproj"/>
+    <Target Name="MegaglassD">
+        <MSBuild Projects="megaglasscube\MegaglassD.dproj"/>
     </Target>
-    <Target Name="MegaglasscubeD:Clean">
-        <MSBuild Projects="megaglasscube\MegaglasscubeD.dproj" Targets="Clean"/>
+    <Target Name="MegaglassD:Clean">
+        <MSBuild Projects="megaglasscube\MegaglassD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="MegaglasscubeD:Make">
-        <MSBuild Projects="megaglasscube\MegaglasscubeD.dproj" Targets="Make"/>
+    <Target Name="MegaglassD:Make">
+        <MSBuild Projects="megaglasscube\MegaglassD.dproj" Targets="Make"/>
     </Target>
-    <Target Name="MegaGlassCubeC">
-        <MSBuild Projects="megaglasscube\MegaGlassCubeC.cbproj"/>
+    <Target Name="MegaglassC">
+        <MSBuild Projects="megaglasscube\MegaglassC.cbproj"/>
     </Target>
-    <Target Name="MegaGlassCubeC:Clean">
-        <MSBuild Projects="megaglasscube\MegaGlassCubeC.cbproj" Targets="Clean"/>
+    <Target Name="MegaglassC:Clean">
+        <MSBuild Projects="megaglasscube\MegaglassC.cbproj" Targets="Clean"/>
     </Target>
-    <Target Name="MegaGlassCubeC:Make">
-        <MSBuild Projects="megaglasscube\MegaGlassCubeC.cbproj" Targets="Make"/>
+    <Target Name="MegaglassC:Make">
+        <MSBuild Projects="megaglasscube\MegaglassC.cbproj" Targets="Make"/>
     </Target>
     <Target Name="SmokingD">
         <MSBuild Projects="smoking\SmokingD.dproj"/>
@@ -180,13 +180,13 @@
         <MSBuild Projects="whirlwind\WhirlwindC.cbproj" Targets="Make"/>
     </Target>
     <Target Name="Build">
-        <CallTarget Targets="BenchC;BenchD;CanvasD;CanvasC;MegacubeD;MegaCubeC;MegaglasscubeD;MegaGlassCubeC;SmokingD;SmokingC;VolcanoD;VolcanoC;WhirlwindD;WhirlwindC"/>
+        <CallTarget Targets="BenchD;BenchC;CanvasD;CanvasC;MegacubeD;MegaCubeC;MegaglassD;MegaglassC;SmokingD;SmokingC;VolcanoD;VolcanoC;WhirlwindD;WhirlwindC"/>
     </Target>
     <Target Name="Clean">
-        <CallTarget Targets="BenchC:Clean;BenchD:Clean;CanvasD:Clean;CanvasC:Clean;MegacubeD:Clean;MegaCubeC:Clean;MegaglasscubeD:Clean;MegaGlassCubeC:Clean;SmokingD:Clean;SmokingC:Clean;VolcanoD:Clean;VolcanoC:Clean;WhirlwindD:Clean;WhirlwindC:Clean"/>
+        <CallTarget Targets="BenchD:Clean;BenchC:Clean;CanvasD:Clean;CanvasC:Clean;MegacubeD:Clean;MegaCubeC:Clean;MegaglassD:Clean;MegaglassC:Clean;SmokingD:Clean;SmokingC:Clean;VolcanoD:Clean;VolcanoC:Clean;WhirlwindD:Clean;WhirlwindC:Clean"/>
     </Target>
     <Target Name="Make">
-        <CallTarget Targets="BenchC:Make;BenchD:Make;CanvasD:Make;CanvasC:Make;MegacubeD:Make;MegaCubeC:Make;MegaglasscubeD:Make;MegaGlassCubeC:Make;SmokingD:Make;SmokingC:Make;VolcanoD:Make;VolcanoC:Make;WhirlwindD:Make;WhirlwindC:Make"/>
+        <CallTarget Targets="BenchD:Make;BenchC:Make;CanvasD:Make;CanvasC:Make;MegacubeD:Make;MegaCubeC:Make;MegaglassD:Make;MegaglassC:Make;SmokingD:Make;SmokingC:Make;VolcanoD:Make;VolcanoC:Make;WhirlwindD:Make;WhirlwindC:Make"/>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 30 - 33
Examples/Demos/bench/canvas/fCanvasC.cpp

@@ -7,6 +7,7 @@
 #include "fCanvasC.h"
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
+
 #pragma link "GLS.BitmapFont"
 #pragma link "GLS.Coordinates"
 
@@ -15,7 +16,7 @@
 #pragma link "GLS.WindowsFont"
 
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormCanvas *FormCanvas;
 
 enum
   TWhat {wLines=0, wEllipses=1, wRects, wPoints, wTextOut, wArcs};
@@ -38,57 +39,54 @@ const int
 
 
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormCanvas::TFormCanvas(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::BULinesClick(TObject *Sender)
+void __fastcall TFormCanvas::BULinesClick(TObject *Sender)
 {
    vWhat = wLines;
    Bench();
 }
 
-void __fastcall TForm1::BUEllipsesClick(TObject *Sender)
+void __fastcall TFormCanvas::BUEllipsesClick(TObject *Sender)
 {
    vWhat = wEllipses;
    Bench();
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::BUArcClick(TObject *Sender)
+void __fastcall TFormCanvas::BUArcClick(TObject *Sender)
 {
    vWhat = wArcs;
    Bench();
 }
 
 //---------------------------------------------------------------------------
-
-void __fastcall TForm1::BURectsClick(TObject *Sender)
+void __fastcall TFormCanvas::BURectsClick(TObject *Sender)
 {
    vWhat = wRects;
    Bench();
 }
 
 //---------------------------------------------------------------------------
-
-void __fastcall TForm1::BUPointsClick(TObject *Sender)
+void __fastcall TFormCanvas::BUPointsClick(TObject *Sender)
 {
    vWhat = wPoints;
    Bench();
 }
 //---------------------------------------------------------------------------
-
-void __fastcall TForm1::BUTextOutClick(TObject *Sender)
+void __fastcall TFormCanvas::BUTextOutClick(TObject *Sender)
 {
    vWhat = wTextOut;
    Bench();
 }
 
 //---------------------------------------------------------------------------
-void TForm1::Bench()
+void TFormCanvas::Bench()
 {
-   __int64 t;
+   __int64 t; // TVarRec t;
    if (RBPenWidth1->Checked)
 	  vPenWidth =1;
    else vPenWidth =2;
@@ -98,21 +96,20 @@ void TForm1::Bench()
 
    t = StartPrecisionTimer();
    GLSceneViewer->Refresh();
-   LAGLCanvas->Caption = Format("GLCanvas: %.2f msec",
-	  ARRAYOFCONST((StopPrecisionTimer(t)*1000)));
+///   LAGLCanvas->Caption = Format("GLCanvas: %.2f msec", ARRAYOFCONST((StopPrecisionTimer(t)*1000)));
+
 
    Application->ProcessMessages();
    RandSeed = 0;
 
    t = StartPrecisionTimer();
    PaintTheBox();
-   LAGDI->Caption = Format("GDI: %.1f msec",
-	   ARRAYOFCONST((StopPrecisionTimer(t)*1000)));
+///   LAGDI->Caption = Format("GDI: %.1f msec",  ARRAYOFCONST((StopPrecisionTimer(t)*1000)));
 }
 
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLDirectOpenGL1Render(TObject *Sender, TGLRenderContextInfo &rci)
+void __fastcall TFormCanvas::GLDirectOpenGL1Render(TObject *Sender, TGLRenderContextInfo &rci)
 
 {
    int i, x, y;
@@ -126,31 +123,31 @@ void __fastcall TForm1::GLDirectOpenGL1Render(TObject *Sender, TGLRenderContextI
    switch (vWhat) {
 	 case wLines :
 			for (i=1; i< cNbLines; i++) {
-			   glc->PenColor = Random(256*256*256);
-			   glc->MoveTo(Random(256), Random(256));
+			   glc->PenColor = clRed; // Random(256*256*256);
+			   glc->MoveTo(random(256), random(256));
 			   glc->LineTo(Random(256), Random(256));
 			}
 	 case wEllipses :
 			for (i =1; i<cNbEllipses; i++){
-			   glc->PenColor = Random(256*256*256);
+			   glc->PenColor = clGreen; // Random(256*256*256);
 			   glc->EllipseBB(Random(256), Random(256),
 					   Random(256), Random(256));
 			}
 	 case wRects :{
 			for (i =1; i< cNbRects; i++) {
-			   glc->PenColor = Random(256*256*256);
+			   glc->PenColor = clBlue; // Random(256*256*256);
 			   r = Rect(Random(256), Random(256),
 					   Random(256), Random(256));
 			   glc->FillRect((int)r.left, (int)r.top, (int)r.right, (int)r.bottom);
 			}
 		 }
 	 case wPoints : for (i=1; i<cNbPoints; i++) {
-			 glc->PenColor = Random(256*256*256);
+			 glc->PenColor = clGray; // Random(256*256*256);
 			 glc->PlotPixel(Random(256), Random(256));
 			 }
 	 case wTextOut : {
 			for (i=1; i<cNbTextOuts; i++) {
-			   Color = Random(256*256*256);
+			   Color = clMaroon; // Random(256*256*256);
 			   x = Random(256);
 			   y = Random(256);
 //	   WindowsBitmapFont->TextOut(rci, x, y, "Hello", Color);
@@ -159,7 +156,7 @@ void __fastcall TForm1::GLDirectOpenGL1Render(TObject *Sender, TGLRenderContextI
 		 }
 	  case wArcs :
 		for (i = 1; i< cNbEllipses; i++) {
-		   glc->PenColor = Random(256*256*256);
+		   glc->PenColor = clCream; // Random(256*256*256);
 		   glc->Arc(
 				   Random(256), Random(256),
 				   Random(256), Random(256),
@@ -170,7 +167,7 @@ void __fastcall TForm1::GLDirectOpenGL1Render(TObject *Sender, TGLRenderContextI
   delete glc;
 }
 //---------------------------------------------------------------------------
-void TForm1::PaintTheBox()
+void TFormCanvas::PaintTheBox()
 {
    int i, x, y;
    TRect r;
@@ -183,32 +180,32 @@ void TForm1::PaintTheBox()
    b->Canvas->Pen->Width = vPenWidth;
 	  switch (vWhat) {
 		case wLines :	for (i=1; i< cNbLines; i++) {
-			   b->Canvas->Pen->Color = Random(256*256*256);
+			   b->Canvas->Pen->Color = clRed; // Random(256*256*256);
 			   b->Canvas->MoveTo(Random(256), Random(256));
 			   b->Canvas->LineTo(Random(256), Random(256));
 			}
 		case wEllipses :
 			for (i =1; i<cNbEllipses; i++){
-			   b->Canvas->Pen->Color = Random(256*256*256);
+			   b->Canvas->Pen->Color = clGreen; // Random(256*256*256);
 			   b->Canvas->Ellipse(Random(256), Random(256),
 					   Random(256), Random(256));
 			}
 		case wRects : {
 			b->Canvas->Brush->Style = bsSolid;
 			for (i =1; i< cNbRects; i++) {
-			   b->Canvas->Brush->Color = Random(256*256*256);
+			   b->Canvas->Brush->Color = clBlue; // Random(256*256*256);
 			   r = Rect(Random(256), Random(256),
 					   Random(256), Random(256));
 			   b->Canvas->FillRect(r);
 			}
 		 }
 		 case wPoints : for (i=1; i<cNbPoints; i++)
-			   b->Canvas->Pixels[Random(256)][Random(256)] =
-				 Random(256*256*256);
+			   b->Canvas->Pixels[Random(256)][Random(256)] = clGray; // Random(256*256*256);
+
 		 case wTextOut : {
 			Font = WindowsBitmapFont->Font;
 			for (i=1; i<cNbTextOuts; i++) {
-			   Font->Color = Random(256*256*256);
+			   Font->Color = clMaroon; // Random(256*256*256);
 			   x = Random(256);
 			   y = Random(256);
 			   b->Canvas->TextOutW(x, y, "Hello");
@@ -216,7 +213,7 @@ void TForm1::PaintTheBox()
 		 }
 		 case wArcs :
 			for (i = 1; i< cNbEllipses; i++) {
-			   b->Canvas->Pen->Color = Random(256*256*256);
+			   b->Canvas->Pen->Color = clCream; // Random(256*256*256);
 			   b->Canvas->Arc(
 				   Random(256), Random(256),
 				   Random(256), Random(256),

+ 1 - 1
Examples/Demos/bench/canvas/fCanvasC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormCanvas: TFormCanvas
   Left = 0
   Top = 0
   Caption = 'Canvas'

+ 4 - 3
Examples/Demos/bench/canvas/fCanvasC.h

@@ -4,6 +4,7 @@
 #define fCanvasCH
 //---------------------------------------------------------------------------
 #include <System.Classes.hpp>
+#include <System.Uitypes.hpp>
 #include <Vcl.Controls.hpp>
 #include <Vcl.StdCtrls.hpp>
 #include <Vcl.Forms.hpp>
@@ -20,7 +21,7 @@
 #include "GLS.BaseClasses.hpp"
 
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormCanvas : public TForm
 {
 __published:	// IDE-managed Components
 	TBevel *Bevel1;
@@ -54,9 +55,9 @@ private:	// User declarations
 	void Bench();
 
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormCanvas(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormCanvas *FormCanvas;
 //---------------------------------------------------------------------------
 #endif

+ 3 - 3
Examples/Demos/bench/canvas/fCanvasD.dfm

@@ -1,10 +1,10 @@
 object FormCanvas: TFormCanvas
   Left = 151
   Top = 105
-  BorderStyle = bsDialog
+  BorderStyle = bsSizeToolWin
   Caption = 'GLCanvas vs GDI'
-  ClientHeight = 329
-  ClientWidth = 537
+  ClientHeight = 338
+  ClientWidth = 543
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText

+ 93 - 2
Examples/Demos/bench/fBenchC.cpp

@@ -4,13 +4,104 @@
 #pragma hdrstop
 
 #include "fBenchC.h"
+
+#pragma link "fCanvasC"
+#pragma link "fMegaCubeC"
+#pragma link "fMegaglassC"
+#pragma link "fSmokingC"
+#pragma link "fVolcanoC"
+#pragma link "fWhirlC"
+
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma resource "*.dfm"
-TFormBenchC *FormBenchC;
+TfrmBench *frmBench;
 //---------------------------------------------------------------------------
-__fastcall TFormBenchC::TFormBenchC(TComponent* Owner)
+__fastcall TfrmBench::TfrmBench(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
+void __fastcall TfrmBench::FormCreate(TObject *Sender)
+{
+   // Canvas
+  FormCanvas = new TFormCanvas(tsCanvas);
+  FormCanvas->Parent = tsCanvas;
+  FormCanvas->Align = alClient;
+  FormCanvas->BorderStyle = bsNone;
+  FormCanvas->GLSceneViewer->Height = 256;
+  FormCanvas->GLSceneViewer->Width = 256;
+  FormCanvas->Show();
+
+  // Megacube
+  FormMegacube = new TFormMegacube(tsMegacube);
+  FormMegacube->Parent = tsMegacube;
+  FormMegacube->Align = alClient;
+  FormMegacube->BorderStyle = bsNone;
+  FormMegacube->Show();
+
+  // Megaglasscube
+  FormMegaglasscube = new TFormMegaglasscube(tsMegaglasscube);
+  FormMegaglasscube->Parent = tsMegaglasscube;
+  FormMegaglasscube->Align = alClient;
+  FormMegaglasscube->BorderStyle = bsNone;
+  FormMegaglasscube->Show();
+
+   // Smoking
+  FormSmoking = new TFormSmoking(tsSmoking);
+  FormSmoking->Parent = tsSmoking;
+  FormSmoking->Align = alClient;
+  FormSmoking->BorderStyle = bsNone;
+  FormSmoking->Show();
+
+  // Volcano
+  FormVolcano = new TFormVolcano(tsVolcano);
+  FormVolcano->Parent = tsVolcano;
+  FormVolcano->Align = alClient;
+  FormVolcano->BorderStyle = bsNone;
+  FormVolcano->Show();
+
+  // Whirlwind
+  FormWhirl = new TFormWhirl(tsWhirlwind);
+  FormWhirl->Parent = tsWhirlwind;
+  FormWhirl->Align = alClient;
+  FormWhirl->BorderStyle = bsNone;
+  FormWhirl->Show();
+
+}
+
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmBench::FormShow(TObject *Sender)
+{
+  PageControl->ActivePage = tsCanvas;
+}
+
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmBench::tvBenchClick(TObject *Sender)
+{
+   switch (tvBench->Selected->Index) {
+	case 0: {
+	  PageControl->ActivePage = tsCanvas; break;
+	}
+	case 1: {
+	  PageControl->ActivePage = tsMegacube; break;
+	}
+	case 2: {
+	  PageControl->ActivePage = tsMegaglasscube; break;
+	}
+	case 3: {
+	  PageControl->ActivePage = tsSmoking; break;
+	}
+	case 4: {
+	  PageControl->ActivePage = tsVolcano; break;
+	}
+	default: {
+	  PageControl->ActivePage = tsWhirlwind; break;
+	}
+   }
+
+}
+//---------------------------------------------------------------------------
+

+ 73 - 3
Examples/Demos/bench/fBenchC.dfm

@@ -1,14 +1,84 @@
-object FormBenchC: TFormBenchC
+object frmBench: TfrmBench
   Left = 0
   Top = 0
   Caption = 'Bench C'
-  ClientHeight = 433
-  ClientWidth = 622
+  ClientHeight = 571
+  ClientWidth = 840
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -12
   Font.Name = 'Segoe UI'
   Font.Style = []
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
   TextHeight = 15
+  object PanelLeft: TPanel
+    Left = 0
+    Top = 0
+    Width = 129
+    Height = 571
+    Align = alLeft
+    TabOrder = 0
+    object tvBench: TTreeView
+      Left = 1
+      Top = 1
+      Width = 127
+      Height = 569
+      Align = alClient
+      Indent = 19
+      TabOrder = 0
+      OnClick = tvBenchClick
+      Items.NodeData = {
+        03060000002A0000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+        00000000000106430061006E007600610073002E0000000000000000000000FF
+        FFFFFFFFFFFFFF00000000000000000000000001084D00650067006100630075
+        0062006500380000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+        0000000000010D4D0065006700610067006C0061007300730063007500620065
+        002C0000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+        00010753006D006F006B0069006E0067002C0000000000000000000000FFFFFF
+        FFFFFFFFFF000000000000000000000000010756006F006C00630061006E006F
+        00300000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+        00010957006800690072006C00770069006E006400}
+    end
+  end
+  object PageControl: TPageControl
+    Left = 129
+    Top = 0
+    Width = 711
+    Height = 571
+    ActivePage = tsCanvas
+    Align = alClient
+    TabOrder = 1
+    object tsCanvas: TTabSheet
+      Caption = 'Canvas'
+      TabVisible = False
+    end
+    object tsMegacube: TTabSheet
+      Caption = 'Megacube'
+      ImageIndex = 1
+      TabVisible = False
+    end
+    object tsMegaglasscube: TTabSheet
+      Caption = 'Megaglasscube'
+      ImageIndex = 2
+      TabVisible = False
+    end
+    object tsSmoking: TTabSheet
+      Caption = 'Smoking'
+      ImageIndex = 3
+      TabVisible = False
+    end
+    object tsVolcano: TTabSheet
+      Caption = 'Volcano'
+      ImageIndex = 4
+      TabVisible = False
+    end
+    object tsWhirlwind: TTabSheet
+      Caption = 'Whirlwind'
+      ImageIndex = 5
+      TabVisible = False
+    end
+  end
 end

+ 26 - 3
Examples/Demos/bench/fBenchC.h

@@ -7,15 +7,38 @@
 #include <Vcl.Controls.hpp>
 #include <Vcl.StdCtrls.hpp>
 #include <Vcl.Forms.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ExtCtrls.hpp>
+
+#include "fCanvasC.h"
+#include "fMegaCubeC.h"
+#include "fMegaglassC.h"
+#include "fSmokingC.h"
+#include "fVolcanoC.h"
+#include "fWhirlC.h"
+
+
 //---------------------------------------------------------------------------
-class TFormBenchC : public TForm
+class TfrmBench : public TForm
 {
 __published:	// IDE-managed Components
+	TPanel *PanelLeft;
+	TTreeView *tvBench;
+	TPageControl *PageControl;
+	TTabSheet *tsCanvas;
+	TTabSheet *tsMegacube;
+	TTabSheet *tsMegaglasscube;
+	TTabSheet *tsSmoking;
+	TTabSheet *tsVolcano;
+	TTabSheet *tsWhirlwind;
+	void __fastcall FormCreate(TObject *Sender);
+	void __fastcall tvBenchClick(TObject *Sender);
+	void __fastcall FormShow(TObject *Sender);
 private:	// User declarations
 public:		// User declarations
-	__fastcall TFormBenchC(TComponent* Owner);
+	__fastcall TfrmBench(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TFormBenchC *FormBenchC;
+extern PACKAGE TfrmBench *frmBench;
 //---------------------------------------------------------------------------
 #endif

+ 73 - 3
Examples/Demos/bench/fBenchD.dfm

@@ -1,14 +1,84 @@
-object FormBenchD: TFormBenchD
+object frmBench: TfrmBench
   Left = 0
   Top = 0
   Caption = 'Bench D'
-  ClientHeight = 433
-  ClientWidth = 622
+  ClientHeight = 566
+  ClientWidth = 890
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -12
   Font.Name = 'Segoe UI'
   Font.Style = []
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
   TextHeight = 15
+  object PanelLeft: TPanel
+    Left = 0
+    Top = 0
+    Width = 129
+    Height = 566
+    Align = alLeft
+    TabOrder = 0
+    object tvBench: TTreeView
+      Left = 1
+      Top = 1
+      Width = 127
+      Height = 564
+      Align = alClient
+      Indent = 19
+      TabOrder = 0
+      OnClick = tvBenchClick
+      Items.NodeData = {
+        03060000002A0000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+        00000000000106430061006E007600610073002E0000000000000000000000FF
+        FFFFFFFFFFFFFF00000000000000000000000001084D00650067006100630075
+        0062006500380000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+        0000000000010D4D0065006700610067006C0061007300730063007500620065
+        002C0000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+        00010753006D006F006B0069006E0067002C0000000000000000000000FFFFFF
+        FFFFFFFFFF000000000000000000000000010756006F006C00630061006E006F
+        00300000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+        00010957006800690072006C00770069006E006400}
+    end
+  end
+  object PageControl: TPageControl
+    Left = 129
+    Top = 0
+    Width = 761
+    Height = 566
+    ActivePage = tsCanvas
+    Align = alClient
+    TabOrder = 1
+    object tsCanvas: TTabSheet
+      Caption = 'Canvas'
+      TabVisible = False
+    end
+    object tsMegacube: TTabSheet
+      Caption = 'Megacube'
+      ImageIndex = 1
+      TabVisible = False
+    end
+    object tsMegaglasscube: TTabSheet
+      Caption = 'Megaglasscube'
+      ImageIndex = 2
+      TabVisible = False
+    end
+    object tsSmoking: TTabSheet
+      Caption = 'Smoking'
+      ImageIndex = 3
+      TabVisible = False
+    end
+    object tsVolcano: TTabSheet
+      Caption = 'Volcano'
+      ImageIndex = 4
+      TabVisible = False
+    end
+    object tsWhirlwind: TTabSheet
+      Caption = 'Whirlwind'
+      ImageIndex = 5
+      TabVisible = False
+    end
+  end
 end

+ 106 - 5
Examples/Demos/bench/fBenchD.pas

@@ -11,21 +11,122 @@ uses
   Vcl.Graphics,
   Vcl.Controls,
   Vcl.Forms,
-  Vcl.Dialogs;
+  Vcl.Dialogs,
+  Vcl.Menus,
+  Vcl.ComCtrls,
+  Vcl.ExtCtrls,
+
+  fCanvasD,
+  fMegacubeD,
+  fMegaglassD,
+  fSmokingD,
+  fVolcanoD,
+  fWhirlD;
 
 type
-  TFormBenchD = class(TForm)
+  TfrmBench = class(TForm)
+    PanelLeft: TPanel;
+    tvBench: TTreeView;
+    PageControl: TPageControl;
+    tsCanvas: TTabSheet;
+    tsMegacube: TTabSheet;
+    tsMegaglasscube: TTabSheet;
+    tsSmoking: TTabSheet;
+    tsVolcano: TTabSheet;
+    tsWhirlwind: TTabSheet;
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure tvBenchClick(Sender: TObject);
   private
-    { Private declarations }
+
   public
-    { Public declarations }
+
   end;
 
 var
-  FormBenchD: TFormBenchD;
+  frmBench: TfrmBench;
 
+//----------------------------------------------------------------------
 implementation
+//----------------------------------------------------------------------
 
 {$R *.dfm}
 
+procedure TfrmBench.FormCreate(Sender: TObject);
+begin
+   // Canvas
+  FormCanvas := TFormCanvas.Create(tsCanvas);
+  FormCanvas.Parent := tsCanvas;
+  FormCanvas.Align := alClient;
+  FormCanvas.BorderStyle := bsNone;
+  FormCanvas.GLSceneViewer.Height := 256;
+  FormCanvas.GLSceneViewer.Width := 256;
+  FormCanvas.Show;
+
+  // Megacube
+  FormMegacube := TFormMegacube.Create(tsMegacube);
+  FormMegacube.Parent := tsMegacube;
+  FormMegacube.Align := alClient;
+  FormMegacube.BorderStyle := bsNone;
+  FormMegacube.Show;
+
+  // Megaglasscube
+  FormMegaglasscube := TFormMegaglasscube.Create(tsMegaglasscube);
+  FormMegaglasscube.Parent := tsMegaglasscube;
+  FormMegaglasscube.Align := alClient;
+  FormMegaglasscube.BorderStyle := bsNone;
+  FormMegaglasscube.Show;
+
+   // Smoking
+  FormSmoking := TFormSmoking.Create(tsSmoking);
+  FormSmoking.Parent := tsSmoking;
+  FormSmoking.Align := alClient;
+  FormSmoking.BorderStyle := bsNone;
+  FormSmoking.Show;
+
+  // Volcano
+  FormVolcano := TFormVolcano.Create(tsVolcano);
+  FormVolcano.Parent := tsVolcano;
+  FormVolcano.Align := alClient;
+  FormVolcano.BorderStyle := bsNone;
+  FormVolcano.Show;
+
+  // Whirlwind
+  FormWhirl := TFormWhirl.Create(tsWhirlwind);
+  FormWhirl.Parent := tsWhirlwind;
+  FormWhirl.Align := alClient;
+  FormWhirl.BorderStyle := bsNone;
+  FormWhirl.Show;
+
+end;
+
+//----------------------------------------------------------------------
+
+procedure TfrmBench.FormShow(Sender: TObject);
+begin
+   PageControl.ActivePage := tsCanvas;
+end;
+
+//----------------------------------------------------------------------
+
+procedure TfrmBench.tvBenchClick(Sender: TObject);
+begin
+  tvBench.Items[0].DropHighlighted := False;
+   case tvBench.Selected.Index of
+    0:
+      PageControl.ActivePage := tsCanvas;
+    1:
+      PageControl.ActivePage := tsMegacube;
+    2:
+      PageControl.ActivePage := tsMegaglasscube;
+    3:
+      PageControl.ActivePage := tsSmoking;
+    4:
+      PageControl.ActivePage := tsVolcano;
+    5:
+      PageControl.ActivePage := tsWhirlwind;
+  end;
+end;
+
+
 end.

+ 1 - 1
Examples/Demos/bench/megacube/MegaCubeC.cbproj

@@ -123,7 +123,7 @@
     </PropertyGroup>
     <ItemGroup>
         <CppCompile Include="fMegaCubeC.cpp">
-            <Form>Form1</Form>
+            <Form>FormMegacube</Form>
             <FormType>dfm</FormType>
             <DependentOn>fMegaCubeC.h</DependentOn>
             <BuildOrder>2</BuildOrder>

+ 2 - 2
Examples/Demos/bench/megacube/MegaCubeC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fMegaCubeC.cpp", Form1);
+USEFORM("fMegaCubeC.cpp", FormMegacube);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TForm1), &Form1);
+		Application->CreateForm(__classid(TFormMegacube), &FormMegacube);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 9 - 8
Examples/Demos/bench/megacube/fMegaCubeC.cpp

@@ -15,18 +15,19 @@
 #pragma link "GLS.SimpleNavigation"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormMegacube *FormMegacube;
+
+const int
+  cSize = 5;
+
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormMegacube::TFormMegacube(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 
-const int
-  cSize = 5;
-
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TFormMegacube::FormCreate(TObject *Sender)
 {
   int x, y, z;
   TGLCube *cube;
@@ -45,7 +46,7 @@ void __fastcall TForm1::FormCreate(TObject *Sender)
 		cube->CubeHeight = cubeSize;
 		cube->CubeDepth = cubeSize;
 		cube->Material->FrontProperties->Diffuse->Color =
-  		  VectorLerp(clrYellow, clrRed, (float)(x * x + y * y + z * z)/(cSize * cSize * 3));
+		  VectorLerp(clrYellow, clrRed, (float)(x * x + y * y + z * z)/(cSize * cSize * 3));
 
 	  // uncomment following lines to stress OpenGL with more color changes calls
 
@@ -55,7 +56,7 @@ void __fastcall TForm1::FormCreate(TObject *Sender)
 	  }
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
+void __fastcall TFormMegacube::GLCadencer1Progress(TObject *Sender, const double deltaTime,
           const double newTime)
 {
   DummyCube1->TurnAngle = 90 * newTime; // 90° per second

+ 1 - 1
Examples/Demos/bench/megacube/fMegaCubeC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormMegacube: TFormMegacube
   Left = 0
   Top = 0
   Caption = 'Mega Cube'

+ 3 - 3
Examples/Demos/bench/megacube/fMegaCubeC.h

@@ -20,7 +20,7 @@
 #include "GLS.SceneViewer.hpp"
 #include <Vcl.Menus.hpp>
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormMegacube : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -35,9 +35,9 @@ __published:	// IDE-managed Components
 
 private:	// User declarations
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormMegacube(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormMegacube *FormMegacube;
 //---------------------------------------------------------------------------
 #endif

+ 20 - 8
Examples/Demos/bench/megaglasscube/MegaGlassCubeC.cbproj → Examples/Demos/bench/megaglasscube/MegaglassC.cbproj

@@ -4,7 +4,7 @@
         <ProjectVersion>19.4</ProjectVersion>
         <FrameworkType>VCL</FrameworkType>
         <AppType>Application</AppType>
-        <MainSource>MegaGlassCubeC.cpp</MainSource>
+        <MainSource>MegaglassC.cpp</MainSource>
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Debug</Config>
         <Platform Condition="'$(Platform)'==''">Win32</Platform>
@@ -58,7 +58,7 @@
         <Base>true</Base>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base)'!=''">
-        <SanitizedProjectName>MegaGlassCubeC</SanitizedProjectName>
+        <SanitizedProjectName>MegaglassC</SanitizedProjectName>
         <ProjectType>CppVCLApplication</ProjectType>
         <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
         <Icon_MainIcon>$(BDS)\bin\cbuilder_PROJECTICON.ico</Icon_MainIcon>
@@ -136,16 +136,16 @@
         <Defines>NDEBUG;$(Defines)</Defines>
     </PropertyGroup>
     <ItemGroup>
-        <CppCompile Include="fMainC.cpp">
-            <Form>Form1</Form>
+        <CppCompile Include="fMegaglassC.cpp">
+            <Form>FormMegaglasscube</Form>
             <FormType>dfm</FormType>
-            <DependentOn>fMainC.h</DependentOn>
+            <DependentOn>fMegaglassC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
         </CppCompile>
-        <CppCompile Include="MegaGlassCubeC.cpp">
+        <CppCompile Include="MegaglassC.cpp">
             <BuildOrder>0</BuildOrder>
         </CppCompile>
-        <FormResources Include="fMainC.dfm"/>
+        <FormResources Include="fMegaglassC.dfm"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>
@@ -164,7 +164,7 @@
         <BorlandProject>
             <CPlusPlusBuilder.Personality>
                 <Source>
-                    <Source Name="MainSource">MegaGlassCubeC.cpp</Source>
+                    <Source Name="MainSource">MegaglassC.cpp</Source>
                 </Source>
                 <VersionInfo>
                     <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
@@ -337,6 +337,18 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
+                <DeployFile LocalName=".\Win32\Debug\MegaglassC.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>MegaglassC.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName=".\Win32\Debug\MegaglassC.tds" Configuration="Debug" Class="DebugSymbols">
+                    <Platform Name="Win32">
+                        <RemoteName>MegaglassC.tds</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
                 <DeployFile LocalName=".\Win32\Debug\MegaGlassCube.exe" Configuration="Debug" Class="ProjectOutput"/>
                 <DeployFile LocalName=".\Win32\Debug\MegaGlassCube.tds" Configuration="Debug" Class="DebugSymbols"/>
                 <DeployClass Name="AdditionalDebugSymbols">

+ 2 - 2
Examples/Demos/extrusion/nutsnbolts/NutsnboltC.cpp → Examples/Demos/bench/megaglasscube/MegaglassC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fNutsnboltC.cpp", Form1);
+USEFORM("fMegaglassC.cpp", FormMegaglasscube);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TForm1), &Form1);
+		Application->CreateForm(__classid(TFormMegaglasscube), &FormMegaglasscube);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 2 - 2
Examples/Demos/bench/megaglasscube/MegaglasscubeD.dpr → Examples/Demos/bench/megaglasscube/MegaglassD.dpr

@@ -19,11 +19,11 @@
 	  5      15972      68.2     K7-1145    GF2 Pro       32Bits (vs 110.4 for megacube)
    --- 26/01/02 --- Introduced bench
 }
-program MegaglasscubeD;
+program MegaglassD;
 
 uses
   Forms,
-  fMegaglassCubeD in 'fMegaglassCubeD.pas' {FormMegaglasscube};
+  fMegaglassD in 'fMegaglassD.pas' {FormMegaglasscube};
 
 {$R *.RES}
 

+ 6 - 6
Examples/Demos/bench/megaglasscube/MegaglasscubeD.dproj → Examples/Demos/bench/megaglasscube/MegaglassD.dproj

@@ -1,7 +1,7 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <PropertyGroup>
         <ProjectGuid>{874301D9-5B32-4D2A-819E-3E2718C3403E}</ProjectGuid>
-        <MainSource>MegaglasscubeD.dpr</MainSource>
+        <MainSource>MegaglassD.dpr</MainSource>
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Debug</Config>
         <TargetedPlatforms>3</TargetedPlatforms>
@@ -56,7 +56,7 @@
         <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>MegaglasscubeD</SanitizedProjectName>
+        <SanitizedProjectName>MegaglassD</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>
@@ -123,7 +123,7 @@
         <DelphiCompile Include="$(MainSource)">
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
-        <DCCReference Include="fMegaglassCubeD.pas">
+        <DCCReference Include="fMegaglassD.pas">
             <Form>FormMegaglasscube</Form>
         </DCCReference>
         <BuildConfiguration Include="Base">
@@ -144,7 +144,7 @@
         <BorlandProject>
             <Delphi.Personality>
                 <Source>
-                    <Source Name="MainSource">MegaglasscubeD.dpr</Source>
+                    <Source Name="MainSource">MegaglassD.dpr</Source>
                 </Source>
                 <Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
@@ -158,9 +158,9 @@
                 <Platform value="Win64">True</Platform>
             </Platforms>
             <Deployment Version="3">
-                <DeployFile LocalName="Win32\Debug\MegaglasscubeD.exe" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName="Win32\Debug\MegaglassD.exe" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win32">
-                        <RemoteName>MegaglasscubeD.exe</RemoteName>
+                        <RemoteName>MegaglassD.exe</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>

+ 4 - 4
Examples/Demos/bench/megaglasscube/fMainC.cpp → Examples/Demos/bench/megaglasscube/fMegaglassC.cpp

@@ -4,7 +4,7 @@
 #include <tchar.h>
 #pragma hdrstop
 
-#include "fMainC.h"
+#include "fMegaglassC.h"
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma link "GLS.BaseClasses"
@@ -16,13 +16,13 @@
 #pragma link "GLS.SimpleNavigation"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormMegaglasscube *FormMegaglasscube;
 
 const int
   cSize = 10;
 
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormMegaglasscube::TFormMegaglasscube(TComponent* Owner)
 	: TForm(Owner)
 {
   int x, y, z;
@@ -49,7 +49,7 @@ __fastcall TForm1::TForm1(TComponent* Owner)
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
+void __fastcall TFormMegaglasscube::GLCadencer1Progress(TObject *Sender, const double deltaTime,
 		  const double newTime)
 {
   DummyCube1->TurnAngle = 90 * newTime; // 90° per second

+ 1 - 1
Examples/Demos/bench/megaglasscube/fMainC.dfm → Examples/Demos/bench/megaglasscube/fMegaglassC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormMegaglasscube: TFormMegaglasscube
   Left = 0
   Top = 0
   Caption = 'Mega Glass Cube'

+ 5 - 5
Examples/Demos/bench/megaglasscube/fMainC.h → Examples/Demos/bench/megaglasscube/fMegaglassC.h

@@ -1,7 +1,7 @@
 //---------------------------------------------------------------------------
 
-#ifndef fMainCH
-#define fMainCH
+#ifndef fMegaglassCH
+#define fMegaglassCH
 //---------------------------------------------------------------------------
 #include <System.Classes.hpp>
 #include <Vcl.Controls.hpp>
@@ -16,7 +16,7 @@
 #include "GLS.SimpleNavigation.hpp"
 #include "GLS.SceneViewer.hpp"
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormMegaglasscube : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -30,9 +30,9 @@ __published:	// IDE-managed Components
 
 private:	// User declarations
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormMegaglasscube(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormMegaglasscube *FormMegaglasscube;
 //---------------------------------------------------------------------------
 #endif

+ 0 - 0
Examples/Demos/bench/megaglasscube/fMegaglassCubeD.dfm → Examples/Demos/bench/megaglasscube/fMegaglassD.dfm


+ 1 - 1
Examples/Demos/bench/megaglasscube/fMegaglassCubeD.pas → Examples/Demos/bench/megaglasscube/fMegaglassD.pas

@@ -1,4 +1,4 @@
-unit fMegaglassCubeD;
+unit fMegaglassD;
 
 interface
 

+ 4 - 4
Examples/Demos/bench/smoking/SmokingC.cbproj

@@ -147,16 +147,16 @@
         <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
     </PropertyGroup>
     <ItemGroup>
-        <CppCompile Include="fMainC.cpp">
-            <Form>Form1</Form>
+        <CppCompile Include="fSmokingC.cpp">
+            <Form>FormSmoking</Form>
             <FormType>dfm</FormType>
-            <DependentOn>fMainC.h</DependentOn>
+            <DependentOn>fSmokingC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
         </CppCompile>
         <CppCompile Include="SmokingC.cpp">
             <BuildOrder>0</BuildOrder>
         </CppCompile>
-        <FormResources Include="fMainC.dfm"/>
+        <FormResources Include="fSmokingC.dfm"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>

+ 2 - 2
Examples/Demos/bench/smoking/SmokingC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fMainC.cpp", Form1);
+USEFORM("fSmokingC.cpp", FormSmoking);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TForm1), &Form1);
+		Application->CreateForm(__classid(TFormSmoking), &FormSmoking);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 2 - 2
Examples/Demos/bench/smoking/SmokingD.dpr

@@ -10,12 +10,12 @@ program SmokingD;
 
 uses
   Forms,
-  fSmokingD in 'fSmokingD.pas' {Form1};
+  fSmokingD in 'fSmokingD.pas' {FormSmoking};
 
 {$R *.res}
 
 begin
   Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
+  Application.CreateForm(TFormSmoking, FormSmoking);
   Application.Run;
 end.

+ 1 - 1
Examples/Demos/bench/smoking/SmokingD.dproj

@@ -124,7 +124,7 @@
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
         <DCCReference Include="fSmokingD.pas">
-            <Form>Form1</Form>
+            <Form>FormSmoking</Form>
         </DCCReference>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>

+ 9 - 7
Examples/Demos/bench/smoking/fMainC.cpp → Examples/Demos/bench/smoking/fSmokingC.cpp

@@ -4,7 +4,7 @@
 #include <tchar.h>
 #pragma hdrstop
 
-#include "fMainC.h"
+#include "fSmokingC.h"
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma link "GLS.BaseClasses"
@@ -17,26 +17,28 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormSmoking *FormSmoking;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormSmoking::TFormSmoking(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLCadencerProgress(TObject *Sender, const double deltaTime,
+void __fastcall TFormSmoking::GLCadencerProgress(TObject *Sender, const double deltaTime,
           const double newTime)
 {
   SmokePFX->Rotation = newTime;
   GLSceneViewer->Invalidate();
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::TimerTimer(TObject *Sender)
+void __fastcall TFormSmoking::TimerTimer(TObject *Sender)
 {
-   Panel1->Caption =
-	Format("%.1f FPS",
+   /*
+   Panel1->Caption = Format("%.1f FPS",
 	ARRAYOFCONST((GLSceneViewer->FramesPerSecond(), SmokePFX->ParticleCount()+FlamePFX->ParticleCount(),
 					 ParticleFXRenderer->LastSortTime)));
+   */
+   Panel1->Caption = GLSceneViewer->FramesPerSecond();
    GLSceneViewer->ResetPerformanceMonitor();
 }
 //---------------------------------------------------------------------------

+ 1 - 1
Examples/Demos/bench/smoking/fMainC.dfm → Examples/Demos/bench/smoking/fSmokingC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormSmoking: TFormSmoking
   Left = 0
   Top = 0
   Caption = 'Smoking'

+ 5 - 5
Examples/Demos/bench/smoking/fMainC.h → Examples/Demos/bench/smoking/fSmokingC.h

@@ -1,7 +1,7 @@
 //---------------------------------------------------------------------------
 
-#ifndef fMainCH
-#define fMainCH
+#ifndef fSmokingCH
+#define fSmokingCH
 //---------------------------------------------------------------------------
 #include <System.Classes.hpp>
 #include <Vcl.Controls.hpp>
@@ -18,7 +18,7 @@
 #include "GLS.SceneViewer.hpp"
 #include <Vcl.ExtCtrls.hpp>
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormSmoking : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer;
@@ -41,9 +41,9 @@ __published:	// IDE-managed Components
 
 private:	// User declarations
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormSmoking(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormSmoking *FormSmoking;
 //---------------------------------------------------------------------------
 #endif

+ 11 - 20
Examples/Demos/bench/smoking/fSmokingD.dfm

@@ -1,43 +1,34 @@
-object Form1: TForm1
+object FormSmoking: TFormSmoking
   Left = 170
   Top = 57
   Caption = 'Smoking'
-  ClientHeight = 478
-  ClientWidth = 661
+  ClientHeight = 382
+  ClientWidth = 529
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Position = poScreenCenter
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 661
-    Height = 434
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 529
+    Height = 347
     Camera = GLCamera
     Buffer.BackgroundColor = clBlack
-    FieldOfView = 154.049331665039100000
+    FieldOfView = 147.847686767578100000
     PenAsTouch = False
     Align = alClient
     TabOrder = 0
   end
   object Panel1: TPanel
     Left = 0
-    Top = 434
-    Width = 661
-    Height = 44
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Top = 347
+    Width = 529
+    Height = 35
     Align = alBottom
     Caption = 'FPS'
     TabOrder = 1

+ 4 - 4
Examples/Demos/bench/smoking/fSmokingD.pas

@@ -24,7 +24,7 @@ uses
   GLS.BaseClasses;
 
 type
-  TForm1 = class(TForm)
+  TFormSmoking = class(TForm)
     GLSceneViewer: TGLSceneViewer;
     GLScene: TGLScene;
     GLCamera: TGLCamera;
@@ -46,20 +46,20 @@ type
   end;
 
 var
-  Form1: TForm1;
+  FormSmoking: TFormSmoking;
 
 implementation
 
 {$R *.dfm}
 
-procedure TForm1.GLCadencerProgress(Sender: TObject; const deltaTime,
+procedure TFormSmoking.GLCadencerProgress(Sender: TObject; const deltaTime,
   newTime: Double);
 begin
    SmokePFX.Rotation:=newTime;
    GLSceneViewer.Invalidate;
 end;
 
-procedure TForm1.TimerTimer(Sender: TObject);
+procedure TFormSmoking.TimerTimer(Sender: TObject);
 begin
    Panel1.Caption := GLSceneViewer.FramesPerSecondText
             +Format(' - %d Particles - %.3f ms Sort',

+ 4 - 4
Examples/Demos/bench/volcano/VolcanoC.cbproj

@@ -136,16 +136,16 @@
         <Defines>NDEBUG;$(Defines)</Defines>
     </PropertyGroup>
     <ItemGroup>
-        <CppCompile Include="fMainC.cpp">
-            <Form>Form1</Form>
+        <CppCompile Include="fVolcanoC.cpp">
+            <Form>FormVolcano</Form>
             <FormType>dfm</FormType>
-            <DependentOn>fMainC.h</DependentOn>
+            <DependentOn>fVolcanoC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
         </CppCompile>
         <CppCompile Include="VolcanoC.cpp">
             <BuildOrder>0</BuildOrder>
         </CppCompile>
-        <FormResources Include="fMainC.dfm"/>
+        <FormResources Include="fVolcanoC.dfm"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>

+ 2 - 2
Examples/Demos/bench/volcano/VolcanoC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fMainC.cpp", Form1);
+USEFORM("fVolcanoC.cpp", FormVolcano);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TForm1), &Form1);
+		Application->CreateForm(__classid(TFormVolcano), &FormVolcano);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 10 - 7
Examples/Demos/bench/volcano/fMainC.cpp → Examples/Demos/bench/volcano/fVolcanoC.cpp

@@ -4,7 +4,7 @@
 #include <tchar.h>
 #pragma hdrstop
 
-#include "fMainC.h"
+#include "fVolcanoC.h"
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma link "GLS.BaseClasses"
@@ -17,19 +17,19 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormVolcano *FormVolcano;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormVolcano::TFormVolcano(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TFormVolcano::FormCreate(TObject *Sender)
 {
    RadioGroup1Click(Sender);
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
+void __fastcall TFormVolcano::RadioGroup1Click(TObject *Sender)
 {
    TGLSourcePFXEffect *source;
 
@@ -47,17 +47,20 @@ void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
 
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
+void __fastcall TFormVolcano::GLCadencer1Progress(TObject *Sender, const double deltaTime,
           const double newTime)
 {
    GLSceneViewer1->Invalidate();
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TFormVolcano::Timer1Timer(TObject *Sender)
 {
+/*
    Panel1->Caption = Format("%.1f FPS - %3d Particles - Depth Sort: %.2f msec",
    ARRAYOFCONST((GLSceneViewer1->FramesPerSecond(), PFXVolcano->Particles->ItemCount()+PFXBlue->Particles->ItemCount(),
 					 PFXRenderer->LastSortTime)));
+*/
+   Panel1->Caption = GLSceneViewer1->FramesPerSecond();
    GLSceneViewer1->ResetPerformanceMonitor();
 
 }

+ 1 - 3
Examples/Demos/bench/volcano/fMainC.dfm → Examples/Demos/bench/volcano/fVolcanoC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormVolcano: TFormVolcano
   Left = 0
   Top = 0
   Caption = 'Volcano'
@@ -10,9 +10,7 @@ object Form1: TForm1
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
-  OldCreateOrder = False
   OnCreate = FormCreate
-  PixelsPerInch = 96
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0

+ 5 - 5
Examples/Demos/bench/volcano/fMainC.h → Examples/Demos/bench/volcano/fVolcanoC.h

@@ -1,7 +1,7 @@
 //---------------------------------------------------------------------------
 
-#ifndef fMainCH
-#define fMainCH
+#ifndef fVolcanoCH
+#define fVolcanoCH
 //---------------------------------------------------------------------------
 #include <System.Classes.hpp>
 #include <Vcl.Controls.hpp>
@@ -18,7 +18,7 @@
 #include "GLS.SceneViewer.hpp"
 #include <Vcl.ExtCtrls.hpp>
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormVolcano : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -42,9 +42,9 @@ __published:	// IDE-managed Components
 
 private:	// User declarations
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormVolcano(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormVolcano *FormVolcano;
 //---------------------------------------------------------------------------
 #endif

+ 1 - 1
Examples/Demos/bench/whirlwind/WhirlwindC.cbproj

@@ -144,7 +144,7 @@
     </PropertyGroup>
     <ItemGroup>
         <CppCompile Include="fWhirlC.cpp">
-            <Form>FormWhirlC</Form>
+            <Form>FormWhirl</Form>
             <FormType>dfm</FormType>
             <DependentOn>fWhirlC.h</DependentOn>
             <BuildOrder>2</BuildOrder>

+ 2 - 2
Examples/Demos/bench/whirlwind/WhirlwindC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fWhirlC.cpp", FormWhirlC);
+USEFORM("fWhirlC.cpp", FormWhirl);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TFormWhirlC), &FormWhirlC);
+		Application->CreateForm(__classid(TFormWhirl), &FormWhirl);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 2 - 2
Examples/Demos/bench/whirlwind/WhirlwindD.dpr

@@ -2,13 +2,13 @@ program WhirlwindD;
 
 uses
   Vcl.Forms,
-  fWhirlD in 'fWhirlD.pas' {FormWhirlD};
+  fWhirlD in 'fWhirlD.pas' {FormWhirl};
 
 {$R *.res}
 
 begin
   Application.Initialize;
   Application.MainFormOnTaskbar := True;
-  Application.CreateForm(TFormWhirlD, FormWhirlD);
+  Application.CreateForm(TFormWhirl, FormWhirl);
   Application.Run;
 end.

+ 1 - 1
Examples/Demos/bench/whirlwind/WhirlwindD.dproj

@@ -124,7 +124,7 @@
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
         <DCCReference Include="fWhirlD.pas">
-            <Form>FormWhirlD</Form>
+            <Form>FormWhirl</Form>
         </DCCReference>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>

+ 12 - 9
Examples/Demos/bench/whirlwind/fWhirlC.cpp

@@ -21,15 +21,15 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TFormWhirlC *FormWhirlC;
+TFormWhirl *FormWhirl;
 //---------------------------------------------------------------------------
-__fastcall TFormWhirlC::TFormWhirlC(TComponent* Owner)
+__fastcall TFormWhirl::TFormWhirl(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TFormWhirlC::GLParticles1ActivateParticle(TObject *Sender, TGLBaseSceneObject *particle)
+void __fastcall TFormWhirl::GLParticles1ActivateParticle(TObject *Sender, TGLBaseSceneObject *particle)
 
 {
 	float r, alpha, cr, sr;
@@ -43,14 +43,14 @@ void __fastcall TFormWhirlC::GLParticles1ActivateParticle(TObject *Sender, TGLBa
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TFormWhirlC::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
+void __fastcall TFormWhirl::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
 		  TShiftState Shift, int X, int Y)
 {
   mx = X; my = Y;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TFormWhirlC::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
+void __fastcall TFormWhirl::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
 		  int X, int Y)
 {
   if (Shift.Contains(ssLeft))
@@ -61,7 +61,7 @@ void __fastcall TFormWhirlC::GLSceneViewer1MouseMove(TObject *Sender, TShiftStat
 //---------------------------------------------------------------------------
 
 
-void __fastcall TFormWhirlC::GLDummyCube1Progress(TObject *Sender, const double deltaTime,
+void __fastcall TFormWhirl::GLDummyCube1Progress(TObject *Sender, const double deltaTime,
           const double newTime)
 {
   if (newTime-(GLParticles1->TagFloat)>3)
@@ -70,17 +70,20 @@ void __fastcall TFormWhirlC::GLDummyCube1Progress(TObject *Sender, const double
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TFormWhirlC::GLCadencer1Progress(TObject *Sender, const double deltaTime,
+void __fastcall TFormWhirl::GLCadencer1Progress(TObject *Sender, const double deltaTime,
           const double newTime)
 {
   GLParticles1->CreateParticle();
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TFormWhirlC::Timer1Timer(TObject *Sender)
+void __fastcall TFormWhirl::Timer1Timer(TObject *Sender)
 {
-  Panel1->Caption = Format("%d particles, %.1f FPS",
+/*
+   Panel1->Caption = Format("%d particles, %.1f FPS",
 	  ARRAYOFCONST((GLParticles1->Count, GLSceneViewer1->FramesPerSecond())));
+*/
+   Panel1->Caption = GLSceneViewer1->FramesPerSecond();
    GLSceneViewer1->ResetPerformanceMonitor();
 }
 //---------------------------------------------------------------------------

+ 11 - 20
Examples/Demos/bench/whirlwind/fWhirlC.dfm

@@ -1,31 +1,26 @@
-object FormWhirlC: TFormWhirlC
+object FormWhirl: TFormWhirl
   Left = 0
   Top = 0
   Caption = 'Whirlwind'
-  ClientHeight = 370
-  ClientWidth = 586
+  ClientHeight = 296
+  ClientWidth = 469
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
   Position = poScreenCenter
-  PixelsPerInch = 120
-  TextHeight = 17
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 586
-    Height = 335
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 469
+    Height = 268
     Camera = GLCamera1
     Buffer.BackgroundColor = clBlack
     Buffer.DepthTest = False
-    FieldOfView = 163.022109985351600000
+    FieldOfView = 158.863967895507800000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
@@ -34,13 +29,9 @@ object FormWhirlC: TFormWhirlC
   end
   object Panel1: TPanel
     Left = 0
-    Top = 335
-    Width = 586
-    Height = 35
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Top = 268
+    Width = 469
+    Height = 28
     Align = alBottom
     Caption = 'FPS'
     TabOrder = 1

+ 3 - 3
Examples/Demos/bench/whirlwind/fWhirlC.h

@@ -18,7 +18,7 @@
 #include "GLS.SceneViewer.hpp"
 #include <Vcl.ExtCtrls.hpp>
 //---------------------------------------------------------------------------
-class TFormWhirlC : public TForm
+class TFormWhirl : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -45,9 +45,9 @@ __published:	// IDE-managed Components
 private:	// User declarations
     int mx, my;
 public:		// User declarations
-	__fastcall TFormWhirlC(TComponent* Owner);
+	__fastcall TFormWhirl(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TFormWhirlC *FormWhirlC;
+extern PACKAGE TFormWhirl *FormWhirl;
 //---------------------------------------------------------------------------
 #endif

+ 15 - 20
Examples/Demos/bench/whirlwind/fWhirlD.dfm

@@ -1,48 +1,43 @@
-object FormWhirlD: TFormWhirlD
+object FormWhirl: TFormWhirl
   Left = 0
   Top = 0
   Caption = 'Whirlwind'
-  ClientHeight = 370
-  ClientWidth = 551
+  ClientHeight = 378
+  ClientWidth = 513
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
   Position = poScreenCenter
-  PixelsPerInch = 120
-  TextHeight = 17
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 551
-    Height = 335
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 513
+    Height = 350
     Camera = GLCamera1
     Buffer.BackgroundColor = clBlack
-    FieldOfView = 163.022109985351600000
+    FieldOfView = 163.739791870117200000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
+    ExplicitWidth = 472
+    ExplicitHeight = 301
   end
   object Panel1: TPanel
     Left = 0
-    Top = 335
-    Width = 551
-    Height = 35
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Top = 350
+    Width = 513
+    Height = 28
     Align = alBottom
     Caption = 'FPS'
     TabOrder = 1
+    ExplicitTop = 268
+    ExplicitWidth = 441
   end
   object Timer1: TTimer
     Interval = 10000

+ 20 - 8
Examples/Demos/bench/whirlwind/fWhirlD.pas

@@ -28,7 +28,7 @@ uses
   GLS.Behaviours;
 
 type
-  TFormWhirlD = class(TForm)
+  TFormWhirl = class(TForm)
     GLSceneViewer1: TGLSceneViewer;
     Panel1: TPanel;
     Timer1: TTimer;
@@ -56,13 +56,15 @@ type
   end;
 
 var
-  FormWhirlD: TFormWhirlD;
+  FormWhirl: TFormWhirl;
 
+//----------------------------------------------------------------------
 implementation
+//----------------------------------------------------------------------
 
 {$R *.dfm}
 
-procedure TFormWhirlD.GLParticles1ActivateParticle(Sender: TObject;
+procedure TFormWhirl.GLParticles1ActivateParticle(Sender: TObject;
   Particle: TGLBaseSceneObject);
 var
   r, alpha, cr, sr: Single;
@@ -75,14 +77,18 @@ begin
   TGLCustomSceneObject(Particle).TagFloat := GLCadencer1.CurrentTime;
 end;
 
-procedure TFormWhirlD.GLSceneViewer1MouseDown(Sender: TObject;
+//----------------------------------------------------------------------
+
+procedure TFormWhirl.GLSceneViewer1MouseDown(Sender: TObject;
   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 begin
   mx := X;
   my := Y;
 end;
 
-procedure TFormWhirlD.GLSceneViewer1MouseMove(Sender: TObject;
+//----------------------------------------------------------------------
+
+procedure TFormWhirl.GLSceneViewer1MouseMove(Sender: TObject;
   Shift: TShiftState; X, Y: Integer);
 begin
   if Shift <> [] then
@@ -93,7 +99,9 @@ begin
   end;
 end;
 
-procedure TFormWhirlD.GLDummyCube1Progress(Sender: TObject;
+//----------------------------------------------------------------------
+
+procedure TFormWhirl.GLDummyCube1Progress(Sender: TObject;
   const deltaTime, newTime: Double);
 begin
   with TGLCustomSceneObject(Sender) do
@@ -103,14 +111,18 @@ begin
   end;
 end;
 
-procedure TFormWhirlD.Timer1Timer(Sender: TObject);
+//----------------------------------------------------------------------
+
+procedure TFormWhirl.Timer1Timer(Sender: TObject);
 begin
   Panel1.Caption := Format('%d particles, %.1f FPS',
     [GLParticles1.Count, GLSceneViewer1.FramesPerSecond]);
   GLSceneViewer1.ResetPerformanceMonitor;
 end;
 
-procedure TFormWhirlD.GLCadencer1Progress(Sender: TObject;
+//----------------------------------------------------------------------
+
+procedure TFormWhirl.GLCadencer1Progress(Sender: TObject;
   const deltaTime, newTime: Double);
 begin
   GLParticles1.CreateParticle;

+ 11 - 6
Examples/Demos/collisions/octree/fOctreeD.pas

@@ -58,32 +58,29 @@ type
       newTime: Double);
     procedure Timer1Timer(Sender: TObject);
   private
-     
   public
-     
     mousex, mousey: integer;
   end;
 
 var
   FormOctreedemo: TFormOctreedemo;
 
+//---------------------------------------------------------------------
 implementation
+//---------------------------------------------------------------------
 
 {$R *.dfm}
 
 procedure TFormOctreedemo.FormCreate(Sender: TObject);
-var
-   t : Int64;
 begin
    // Load high poly mesh (10,000 triangles).
    var Path: TFileName := GetCurrentAssetPath();
    SetCurrentDir(Path  + '\model');
    FreeForm1.LoadFromFile('HighPolyObject.3ds');
 
-   t:=StartPrecisionTimer;
+   var t: Int64 := StartPrecisionTimer;
 
    FreeForm1.BuildOctree;
-
    LABuild.Caption:=Format('Build time: %.3f ms', [StopPrecisionTimer(t)*1000]);
 
    with FreeForm1.Octree do begin
@@ -96,6 +93,8 @@ begin
    mousey:= -1;
 end;
 
+//---------------------------------------------------------------------
+
 procedure TFormOctreedemo.GLSceneViewer2MouseDown(Sender: TObject;
   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 var
@@ -126,6 +125,8 @@ begin
    Label5.Hint:=Format('Intersect Time: %.3f ms', [StopPrecisionTimer(t)*1000]);
 end;
 
+//---------------------------------------------------------------------
+
 procedure TFormOctreedemo.GLSceneViewer2MouseMove(Sender: TObject;
   Shift: TShiftState; X, Y: Integer);
 begin
@@ -133,6 +134,8 @@ begin
    mousey:=y;
 end;
 
+//---------------------------------------------------------------------
+
 procedure TFormOctreedemo.GLCadencer1Progress(Sender: TObject; const deltaTime,
   newTime: Double);
 begin
@@ -142,6 +145,8 @@ begin
    FreeForm1.RollAngle:=5*newTime; // 45° per second
 end;
 
+//---------------------------------------------------------------------
+
 procedure TFormOctreedemo.Timer1Timer(Sender: TObject);
 begin
    // Show FPS Rating

+ 1092 - 0
Examples/Demos/extrusion/ExtrusionC.cbproj

@@ -0,0 +1,1092 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{C1439671-A210-45B5-A545-F87FDE80E4B5}</ProjectGuid>
+        <ProjectVersion>19.4</ProjectVersion>
+        <FrameworkType>VCL</FrameworkType>
+        <AppType>Application</AppType>
+        <MainSource>ExtrusionC.cpp</MainSource>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <Platform Condition="'$(Platform)'==''">Win32</Platform>
+        <CC_Suffix Condition="'$(CC_Suffix)'==''">c</CC_Suffix>
+        <TargetedPlatforms>1</TargetedPlatforms>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
+        <Base_Win32>true</Base_Win32>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
+        <Base_Win64>true</Base_Win64>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+        <Cfg_1>true</Cfg_1>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
+        <Cfg_1_Win32>true</Cfg_1_Win32>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+        <Cfg_2>true</Cfg_2>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
+        <Cfg_2_Win32>true</Cfg_2_Win32>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base)'!=''">
+        <DCC_CBuilderOutput>JPHNE</DCC_CBuilderOutput>
+        <DynamicRTL>true</DynamicRTL>
+        <UsePackages>true</UsePackages>
+        <IntermediateOutputDir>.\$(Platform)\$(Config)</IntermediateOutputDir>
+        <FinalOutputDir>.\$(Platform)\$(Config)</FinalOutputDir>
+        <BCC_wpar>false</BCC_wpar>
+        <BCC_OptimizeForSpeed>true</BCC_OptimizeForSpeed>
+        <BCC_ExtendedErrorInfo>true</BCC_ExtendedErrorInfo>
+        <ILINK_TranslatedLibraryPath>$(BDSLIB)\$(PLATFORM)\release\$(LANGDIR);$(ILINK_TranslatedLibraryPath)</ILINK_TranslatedLibraryPath>
+        <ProjectType>CppVCLApplication</ProjectType>
+        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
+        <AllPackageLibs>rtl.lib;vcl.lib;GLScene_RT.lib;xmlrtl.lib;vclimg.lib</AllPackageLibs>
+        <_TCHARMapping>wchar_t</_TCHARMapping>
+        <Multithreaded>true</Multithreaded>
+        <Icon_MainIcon>$(BDS)\bin\cbuilder_PROJECTICON.ico</Icon_MainIcon>
+        <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>
+        <IncludePath>tentacles\;pawn\;nutsnbolts\;cutoutstar\;bendingcyl\;D:\GLScene\Examples\Demos\extrusion\;$(IncludePath)</IncludePath>
+        <ILINK_LibraryPath>tentacles\;pawn\;nutsnbolts\;cutoutstar\;bendingcyl\;D:\GLScene\Examples\Demos\extrusion\;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+        <SanitizedProjectName>ExtrusionC</SanitizedProjectName>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <PackageImports>adortl;appanalytics;bcbie;bcbsmp;bdertl;bindcomp;bindcompdbx;bindcompfmx;bindcompvcl;bindcompvclsmp;bindcompvclwinx;bindengine;CloudService;CustomIPTransport;DataSnapClient;DataSnapCommon;DataSnapConnectors;DatasnapConnectorsFreePascal;DataSnapFireDAC;DataSnapIndy10ServerTransport;DataSnapNativeClient;DataSnapProviderClient;DataSnapServer;DataSnapServerMidas;dbexpress;dbrtl;dbxcds;DbxClientDriver;DbxCommonDriver;DBXDb2Driver;DBXFirebirdDriver;DBXInformixDriver;DBXInterBaseDriver;DBXMSSQLDriver;DBXMySQLDriver;DBXOdbcDriver;DBXOracleDriver;DBXSqliteDriver;DBXSybaseASADriver;DBXSybaseASEDriver;dsnap;dsnapcon;dsnapxml;emsclient;emsclientfiredac;emsedge;emshosting;emsserverresource;FireDAC;FireDACADSDriver;FireDACASADriver;FireDACCommon;FireDACCommonDriver;FireDACCommonODBC;FireDACDb2Driver;FireDACDBXDriver;FireDACDSDriver;FireDACIBDriver;FireDACInfxDriver;FireDACMongoDBDriver;FireDACMSAccDriver;FireDACMSSQLDriver;FireDACMySQLDriver;FireDACODBCDriver;FireDACOracleDriver;FireDACPgDriver;FireDACSqliteDriver;FireDACTDataDriver;fmx;fmxase;FMXComponentEd;FMXComponents;fmxdae;fmxFireDAC;fmxobj;FMXTee;FmxTeeUI;GBE3D;GLScene_Cg_RT;GLScene_GPU_RT;GLScene_Physics_RT;GLScene_RT;GLScene_Sounds_RT;GR32_DT;GR32_RT;IndyCore;IndyIPClient;IndyIPCommon;IndyIPServer;IndyProtocols;IndySystem;inet;inetdb;inetdbxpress;RESTBackendComponents;RESTComponents;rtl;soapmidas;soaprtl;soapserver;Tee;TeeDB;TeeUI;tethering;vcl;vclactnband;vcldb;vcldbx;vcldsnap;vcledge;vclFireDAC;vclie;vclimg;VCLRESTComponents;VclSmp;vcltouch;vclwinx;vclx;xmlrtl;$(PackageImports)</PackageImports>
+        <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>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <PackageImports>adortl;appanalytics;bcbie;bcbsmp;bindcomp;bindcompdbx;bindcompfmx;bindcompvcl;bindcompvclsmp;bindcompvclwinx;bindengine;CloudService;CustomIPTransport;DataSnapClient;DataSnapCommon;DataSnapConnectors;DatasnapConnectorsFreePascal;DataSnapFireDAC;DataSnapIndy10ServerTransport;DataSnapNativeClient;DataSnapProviderClient;DataSnapServer;DataSnapServerMidas;dbexpress;dbrtl;dbxcds;DbxClientDriver;DbxCommonDriver;DBXDb2Driver;DBXFirebirdDriver;DBXInformixDriver;DBXInterBaseDriver;DBXMSSQLDriver;DBXMySQLDriver;DBXOdbcDriver;DBXOracleDriver;DBXSqliteDriver;DBXSybaseASADriver;DBXSybaseASEDriver;dsnap;dsnapcon;dsnapxml;emsclient;emsclientfiredac;emsedge;emshosting;emsserverresource;FireDAC;FireDACADSDriver;FireDACASADriver;FireDACCommon;FireDACCommonDriver;FireDACCommonODBC;FireDACDb2Driver;FireDACDBXDriver;FireDACDSDriver;FireDACIBDriver;FireDACInfxDriver;FireDACMongoDBDriver;FireDACMSAccDriver;FireDACMSSQLDriver;FireDACMySQLDriver;FireDACODBCDriver;FireDACOracleDriver;FireDACPgDriver;FireDACSqliteDriver;FireDACTDataDriver;fmx;fmxase;fmxdae;fmxFireDAC;fmxobj;FMXTee;FmxTeeUI;GBE3D;GLScene_RT;GR32_RT;IndyCore;IndyIPClient;IndyIPCommon;IndyIPServer;IndyProtocols;IndySystem;inet;inetdb;inetdbxpress;RESTBackendComponents;RESTComponents;rtl;soapmidas;soaprtl;soapserver;Tee;TeeDB;TeeUI;tethering;vcl;vclactnband;vcldb;vcldsnap;vcledge;vclFireDAC;vclie;vclimg;VCLRESTComponents;VclSmp;vcltouch;vclwinx;vclx;xmlrtl;$(PackageImports)</PackageImports>
+        <IncludePath>$(BDSINCLUDE)\windows\vcl;$(IncludePath)</IncludePath>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <BCC_OptimizeForSpeed>false</BCC_OptimizeForSpeed>
+        <BCC_DisableOptimizations>true</BCC_DisableOptimizations>
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+        <Defines>_DEBUG;$(Defines)</Defines>
+        <BCC_InlineFunctionExpansion>false</BCC_InlineFunctionExpansion>
+        <BCC_UseRegisterVariables>None</BCC_UseRegisterVariables>
+        <DCC_Define>DEBUG</DCC_Define>
+        <BCC_DebugLineNumbers>true</BCC_DebugLineNumbers>
+        <TASM_DisplaySourceLines>true</TASM_DisplaySourceLines>
+        <BCC_StackFrames>true</BCC_StackFrames>
+        <ILINK_FullDebugInfo>true</ILINK_FullDebugInfo>
+        <TASM_Debugging>Full</TASM_Debugging>
+        <BCC_SourceDebuggingOn>true</BCC_SourceDebuggingOn>
+        <BCC_EnableCPPExceptions>true</BCC_EnableCPPExceptions>
+        <BCC_DisableFramePtrElimOpt>true</BCC_DisableFramePtrElimOpt>
+        <BCC_DisableSpellChecking>true</BCC_DisableSpellChecking>
+        <CLANG_UnwindTables>true</CLANG_UnwindTables>
+        <ILINK_LibraryPath>$(BDSLIB)\$(PLATFORM)\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+        <ILINK_TranslatedLibraryPath>$(BDSLIB)\$(PLATFORM)\debug\$(LANGDIR);$(ILINK_TranslatedLibraryPath)</ILINK_TranslatedLibraryPath>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+        <BCC_UseClassicCompiler>false</BCC_UseClassicCompiler>
+        <ILINK_LibraryPath>$(BDSLIB)\$(PLATFORM)$(CC_SUFFIX)\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+        <LinkPackageImports>rtl.bpi;vcl.bpi;GLScene_RT.bpi;xmlrtl.bpi;vclimg.bpi</LinkPackageImports>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <Defines>NDEBUG;$(Defines)</Defines>
+        <TASM_Debugging>None</TASM_Debugging>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+        <BCC_UseClassicCompiler>false</BCC_UseClassicCompiler>
+    </PropertyGroup>
+    <ItemGroup>
+        <CppCompile Include="bendingcyl\fBendingC.cpp">
+            <Form>FormBending</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>bendingcyl\fBendingC.h</DependentOn>
+            <BuildOrder>2</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="cutoutstar\fCutoutstarC.cpp">
+            <Form>FormCutoutstar</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>cutoutstar\fCutoutstarC.h</DependentOn>
+            <BuildOrder>3</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="ExtrusionC.cpp">
+            <BuildOrder>0</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="fExtrusionC.cpp">
+            <Form>frmExtrusionC</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>fExtrusionC.h</DependentOn>
+            <BuildOrder>2</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="nutsnbolts\fNutsnBoltsC.cpp">
+            <Form>FormNutsnBolts</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>nutsnbolts\fNutsnBoltsC.h</DependentOn>
+            <BuildOrder>4</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="pawn\fPawnC.cpp">
+            <Form>FormPawn</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>pawn\fPawnC.h</DependentOn>
+            <BuildOrder>5</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="tentacles\fTentaclesC.cpp">
+            <Form>FormTentacles</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>tentacles\fTentaclesC.h</DependentOn>
+            <BuildOrder>6</BuildOrder>
+        </CppCompile>
+        <FormResources Include="fExtrusionC.dfm"/>
+        <FormResources Include="bendingcyl\fBendingC.dfm"/>
+        <FormResources Include="cutoutstar\fCutoutstarC.dfm"/>
+        <FormResources Include="nutsnbolts\fNutsnBoltsC.dfm"/>
+        <FormResources Include="pawn\fPawnC.dfm"/>
+        <FormResources Include="tentacles\fTentaclesC.dfm"/>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>CPlusPlusBuilder.Personality.12</Borland.Personality>
+        <Borland.ProjectType>CppVCLApplication</Borland.ProjectType>
+        <BorlandProject>
+            <CPlusPlusBuilder.Personality>
+                <ProjectProperties>
+                    <ProjectProperties Name="AutoShowDeps">False</ProjectProperties>
+                    <ProjectProperties Name="ManagePaths">True</ProjectProperties>
+                    <ProjectProperties Name="VerifyPackages">True</ProjectProperties>
+                    <ProjectProperties Name="IndexFiles">False</ProjectProperties>
+                </ProjectProperties>
+                <Source>
+                    <Source Name="MainSource">ExtrusionC.cpp</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GBComps.bpl">Geoblock - Components</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GEdgeIO.bpl">File C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GEdgeIO.bpl not found</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GEdgeIODB.bpl">File C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GEdgeIODB.bpl not found</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp280.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k280.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp280.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                </Excluded_Packages>
+            </CPlusPlusBuilder.Personality>
+            <Deployment Version="3">
+                <DeployFile Condition="'$(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\cc64280.dll" Class="DependencyModule">
+                    <Platform Name="Win64">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin64\cc64280mt.dll" Class="DependencyModule">
+                    <Platform Name="Win64">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile Condition="'$(UsingDelphiRTL)'=='true'" LocalName="$(BDS)\bin\borlndmm.dll" Class="DependencyModule">
+                    <Platform Name="Win32">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32280.dll" Class="DependencyModule">
+                    <Platform Name="Win32">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32280mt.dll" Class="DependencyModule">
+                    <Platform Name="Win32">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'!='true'" LocalName="$(BDS)\bin\cc32c280.dll" Class="DependencyModule">
+                    <Platform Name="Win32">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile Condition="'$(DynamicRTL)'=='true' And '$(Multithreaded)'=='true'" LocalName="$(BDS)\bin\cc32c280mt.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\osx32\libcgstl.dylib" Class="DependencyModule">
+                    <Platform Name="OSX32">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName=".\Win32\Debug\ExtrusionC.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>ExtrusionC.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName=".\Win32\Debug\ExtrusionC.tds" Configuration="Debug" Class="DebugSymbols">
+                    <Platform Name="Win32">
+                        <RemoteName>ExtrusionC.tds</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployClass Name="AdditionalDebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidClasses">
+                    <Platform Name="Android">
+                        <RemoteDir>classes</RemoteDir>
+                        <Operation>64</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>classes</RemoteDir>
+                        <Operation>64</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidFileProvider">
+                    <Platform Name="Android">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidGDBServer">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeArmeabiFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput_Android32">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_Colors">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon144">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon192">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage426">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-small</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-small</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage640">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-large</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-large</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_Strings">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyFramework">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyModule">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.dll;.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="DependencyPackage">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iOS_AppStore1024">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_AppIcon152">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_AppIcon167">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_LaunchDark2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Notification40">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Setting58">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_SpotLight80">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_AppIcon120">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_AppIcon180">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch3x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_LaunchDark2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_LaunchDark3x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Notification40">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Notification60">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Setting58">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Setting87">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Spotlight120">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Spotlight80">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSDeviceDebug">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSEntitlements">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSInfoPList">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSLaunchScreen">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
+                        <Operation>64</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
+                        <Operation>64</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSResource">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXDebug">
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXInfoPList">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXResource">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Linux64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOutput_Android32">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectUWPManifest">
+                    <Platform Name="Win32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_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="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+            </Deployment>
+            <Platforms>
+                <Platform value="Win32">True</Platform>
+                <Platform value="Win64">False</Platform>
+            </Platforms>
+        </BorlandProject>
+        <ProjectFileVersion>12</ProjectFileVersion>
+    </ProjectExtensions>
+    <Import Project="$(BDS)\Bin\CodeGear.Cpp.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Cpp.Targets')"/>
+    <Import Project="$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj" Condition="Exists('$(APPDATA)\Embarcadero\$(BDSAPPDATABASEDIR)\$(PRODUCTVERSION)\UserTools.proj')"/>
+    <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
+</Project>

+ 40 - 0
Examples/Demos/extrusion/ExtrusionC.cpp

@@ -0,0 +1,40 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+#include <tchar.h>
+//---------------------------------------------------------------------------
+USEFORM("fExtrusionC.cpp", frmExtrusionC);
+USEFORM("bendingcyl\fBendingC.cpp", FormBending);
+USEFORM("cutoutstar\fCutoutstarC.cpp", FormCutoutstar);
+USEFORM("nutsnbolts\fNutsnBoltsC.cpp", FormNutsnBolts);
+USEFORM("pawn\fPawnC.cpp", FormPawn);
+USEFORM("tentacles\fTentaclesC.cpp", FormTentacles);
+//---------------------------------------------------------------------------
+int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
+{
+	try
+	{
+		Application->Initialize();
+		Application->MainFormOnTaskBar = true;
+		Application->CreateForm(__classid(TfrmExtrusionC), &frmExtrusionC);
+		Application->Run();
+	}
+	catch (Exception &exception)
+	{
+		Application->ShowException(&exception);
+	}
+	catch (...)
+	{
+		try
+		{
+			throw Exception("");
+		}
+		catch (Exception &exception)
+		{
+			Application->ShowException(&exception);
+		}
+	}
+	return 0;
+}
+//---------------------------------------------------------------------------

+ 19 - 0
Examples/Demos/extrusion/ExtrusionD.dpr

@@ -0,0 +1,19 @@
+program ExtrusionD;
+
+uses
+  Vcl.Forms,
+  fExtrusionD in 'fExtrusionD.pas' {frmExtrusionD},
+  fBendingD in 'bendingcyl\fBendingD.pas' {FormBendingCyl},
+  fCutoutStarD in 'cutoutstar\fCutoutStarD.pas' {FormCutoutStar},
+  fNutsnBoltsD in 'nutsnbolts\fNutsnBoltsD.pas' {FormNutsnBolts},
+  fPawnD in 'pawn\fPawnD.pas' {FormPawn},
+  fTentaclesD in 'tentacles\fTentaclesD.pas' {FormTentacles};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.MainFormOnTaskbar := True;
+  Application.CreateForm(TfrmExtrusionD, frmExtrusionD);
+  Application.Run;
+end.

+ 986 - 0
Examples/Demos/extrusion/ExtrusionD.dproj

@@ -0,0 +1,986 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{41A12C4F-C41D-4C67-87B8-48A4238E0BD2}</ProjectGuid>
+        <ProjectVersion>19.4</ProjectVersion>
+        <FrameworkType>VCL</FrameworkType>
+        <Base>True</Base>
+        <Config Condition="'$(Config)'==''">Debug</Config>
+        <Platform Condition="'$(Platform)'==''">Win32</Platform>
+        <TargetedPlatforms>1</TargetedPlatforms>
+        <AppType>Application</AppType>
+        <MainSource>ExtrusionD.dpr</MainSource>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Base' or '$(Base)'!=''">
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Base)'=='true') or '$(Base_Win32)'!=''">
+        <Base_Win32>true</Base_Win32>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Base)'=='true') or '$(Base_Win64)'!=''">
+        <Base_Win64>true</Base_Win64>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Debug' or '$(Cfg_1)'!=''">
+        <Cfg_1>true</Cfg_1>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
+        <Cfg_1_Win32>true</Cfg_1_Win32>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Config)'=='Release' or '$(Cfg_2)'!=''">
+        <Cfg_2>true</Cfg_2>
+        <CfgParent>Base</CfgParent>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_2)'=='true') or '$(Cfg_2_Win32)'!=''">
+        <Cfg_2_Win32>true</Cfg_2_Win32>
+        <CfgParent>Cfg_2</CfgParent>
+        <Cfg_2>true</Cfg_2>
+        <Base>true</Base>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base)'!=''">
+        <DCC_E>false</DCC_E>
+        <DCC_N>false</DCC_N>
+        <DCC_S>false</DCC_S>
+        <DCC_F>false</DCC_F>
+        <DCC_K>false</DCC_K>
+        <DCC_Namespace>System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace)</DCC_Namespace>
+        <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>ExtrusionD</SanitizedProjectName>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win32)'!=''">
+        <DCC_UsePackage>GLScene_Cg_RT;FMXComponents;vclwinx;DataSnapServer;bdertl;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;GR32_DT;FMXComponentEd;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;vcldb;GLScene_GPU_RT;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;GLScene_Physics_RT;GR32_RT;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;GLScene_Sounds_RT;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;GBE3D;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;vcldbx;GLScene_RT;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
+        <DCC_Namespace>Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
+        <BT_BuildType>Debug</BT_BuildType>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Base_Win64)'!=''">
+        <DCC_UsePackage>vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;vcldb;vclFireDAC;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;GR32_RT;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;GBE3D;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;GLScene_RT;soapserver;FireDACIBDriver;$(DCC_UsePackage)</DCC_UsePackage>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1)'!=''">
+        <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define>
+        <DCC_DebugDCUs>true</DCC_DebugDCUs>
+        <DCC_Optimize>false</DCC_Optimize>
+        <DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
+        <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
+        <DCC_RemoteDebug>true</DCC_RemoteDebug>
+        <DCC_IntegerOverflowCheck>true</DCC_IntegerOverflowCheck>
+        <DCC_RangeChecking>true</DCC_RangeChecking>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <DCC_RemoteDebug>false</DCC_RemoteDebug>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2)'!=''">
+        <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
+        <DCC_Define>RELEASE;$(DCC_Define)</DCC_Define>
+        <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
+        <DCC_DebugInformation>0</DCC_DebugInformation>
+    </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_2_Win32)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+    </PropertyGroup>
+    <ItemGroup>
+        <DelphiCompile Include="$(MainSource)">
+            <MainSource>MainSource</MainSource>
+        </DelphiCompile>
+        <DCCReference Include="fExtrusionD.pas">
+            <Form>frmExtrusionD</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="bendingcyl\fBendingD.pas">
+            <Form>FormBendingCyl</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="cutoutstar\fCutoutStarD.pas">
+            <Form>FormCutoutStar</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="nutsnbolts\fNutsnBoltsD.pas">
+            <Form>FormNutsnBolts</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="pawn\fPawnD.pas">
+            <Form>FormPawn</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="tentacles\fTentaclesD.pas">
+            <Form>FormTentacles</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <BuildConfiguration Include="Base">
+            <Key>Base</Key>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Debug">
+            <Key>Cfg_1</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+        <BuildConfiguration Include="Release">
+            <Key>Cfg_2</Key>
+            <CfgParent>Base</CfgParent>
+        </BuildConfiguration>
+    </ItemGroup>
+    <ProjectExtensions>
+        <Borland.Personality>Delphi.Personality.12</Borland.Personality>
+        <Borland.ProjectType>Application</Borland.ProjectType>
+        <BorlandProject>
+            <Delphi.Personality>
+                <Source>
+                    <Source Name="MainSource">ExtrusionD.dpr</Source>
+                </Source>
+                <Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GBComps.bpl">Geoblock - Components</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GEdgeIO.bpl">File C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GEdgeIO.bpl not found</Excluded_Packages>
+                    <Excluded_Packages Name="C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GEdgeIODB.bpl">File C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\GEdgeIODB.bpl not found</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp280.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k280.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp280.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                </Excluded_Packages>
+            </Delphi.Personality>
+            <Deployment Version="3">
+                <DeployFile LocalName="ExtrusionD.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>ExtrusionD.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployClass Name="AdditionalDebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidClasses">
+                    <Platform Name="Android">
+                        <RemoteDir>classes</RemoteDir>
+                        <Operation>64</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>classes</RemoteDir>
+                        <Operation>64</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidFileProvider">
+                    <Platform Name="Android">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\xml</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidGDBServer">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeArmeabiFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeArmeabiv7aFile">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidLibnativeMipsFile">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\mips</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidServiceOutput_Android32">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashImageDef">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStyles">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="AndroidSplashStylesV21">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values-v21</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_Colors">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_DefaultAppIcon">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon144">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon192">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-ldpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_LauncherIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon24">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-mdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon36">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-hdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon48">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon72">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_NotificationIcon96">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xxxhdpi</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage426">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-small</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-small</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage470">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-normal</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage640">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-large</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-large</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_SplashImage960">
+                    <Platform Name="Android">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\drawable-xlarge</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="Android_Strings">
+                    <Platform Name="Android">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>res\values</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DebugSymbols">
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyFramework">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.framework</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="DependencyModule">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.dll;.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="DependencyPackage">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                        <Extensions>.dylib</Extensions>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                        <Extensions>.bpl</Extensions>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="File">
+                    <Platform Name="Android">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\Resources\StartUp\</RemoteDir>
+                        <Operation>0</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iOS_AppStore1024">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_AppIcon152">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_AppIcon167">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Launch2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_LaunchDark2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Notification40">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_Setting58">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPad_SpotLight80">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_AppIcon120">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_AppIcon180">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Launch3x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_LaunchDark2x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_LaunchDark3x">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Notification40">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Notification60">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Setting58">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Setting87">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Spotlight120">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="iPhone_Spotlight80">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectAndroidManifest">
+                    <Platform Name="Android">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSDeviceDebug">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSEntitlements">
+                    <Platform Name="iOSDevice32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSInfoPList">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSLaunchScreen">
+                    <Platform Name="iOSDevice64">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
+                        <Operation>64</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <RemoteDir>..\$(PROJECTNAME).launchscreen</RemoteDir>
+                        <Operation>64</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectiOSResource">
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXDebug">
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXEntitlements">
+                    <Platform Name="OSX32">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>..\</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXInfoPList">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOSXResource">
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\Resources</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Required="true" Name="ProjectOutput">
+                    <Platform Name="Android">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\arm64-v8a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSDevice64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="iOSSimulator">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Linux64">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX32">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSX64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="OSXARM64">
+                        <RemoteDir>Contents\MacOS</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win32">
+                        <Operation>0</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectOutput_Android32">
+                    <Platform Name="Android64">
+                        <RemoteDir>library\lib\armeabi-v7a</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="ProjectUWPManifest">
+                    <Platform Name="Win32">
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_DelphiLogo150">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <DeployClass Name="UWP_DelphiLogo44">
+                    <Platform Name="Win32">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                    <Platform Name="Win64">
+                        <RemoteDir>Assets</RemoteDir>
+                        <Operation>1</Operation>
+                    </Platform>
+                </DeployClass>
+                <ProjectRoot Platform="Android" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Android64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="iOSDevice32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="iOSSimulator" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Linux64" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="OSX32" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="OSX64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="OSXARM64" Name="$(PROJECTNAME).app"/>
+                <ProjectRoot Platform="Win32" Name="$(PROJECTNAME)"/>
+                <ProjectRoot Platform="Win64" Name="$(PROJECTNAME)"/>
+            </Deployment>
+            <Platforms>
+                <Platform value="Win32">True</Platform>
+                <Platform value="Win64">False</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')"/>
+    <Import Project="$(MSBuildProjectName).deployproj" Condition="Exists('$(MSBuildProjectName).deployproj')"/>
+</Project>

+ 13 - 8
Examples/Demos/extrusion/bendingcyl/fBendingC.cpp

@@ -3,6 +3,7 @@
 #include <vcl.h>
 #include <tchar.h>
 #include <math.h>
+#include <string.h>
 
 #pragma hdrstop
 
@@ -18,17 +19,17 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormBending *FormBending;
 
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormBending::TFormBending(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
 
 
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
+void __fastcall TFormBending::GLCadencer1Progress(TObject *Sender, const double deltaTime,
 		  const double newTime)
 {
    Pipe1->Nodes->Items[2]->X = 1*sin(newTime*5); //used 5 instead of  M_PI/180 or cPIdiv180
@@ -46,7 +47,7 @@ void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaT
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::CBSplineClick(TObject *Sender)
+void __fastcall TFormBending::CBSplineClick(TObject *Sender)
 {
    if (CBSpline->Checked)
 	  Pipe1->SplineMode = lsmCubicSpline;
@@ -54,13 +55,13 @@ void __fastcall TForm1::CBSplineClick(TObject *Sender)
 	  Pipe1->SplineMode = lsmLines;
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
+void __fastcall TFormBending::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
 		  TShiftState Shift, int X, int Y)
 {
  my = X; my = Y;
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
+void __fastcall TFormBending::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
 		  int X, int Y)
 {
   if (Shift.Contains(ssLeft))
@@ -69,11 +70,15 @@ void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shi
 }
 //---------------------------------------------------------------------------
 
-
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TFormBending::Timer1Timer(TObject *Sender)
 {
+/*
   PanelFPS->Caption = Format("%d Triangles, %.1f FPS",
 	 ARRAYOFCONST((Pipe1->TriangleCount, GLSceneViewer1->FramesPerSecond())));
+*/
+  String s1 = Pipe1->TriangleCount;
+  String s2 = GLSceneViewer1->FramesPerSecond();
+  PanelFPS->Caption = s1 + " " + s2;
   GLSceneViewer1->ResetPerformanceMonitor();
 }
 //---------------------------------------------------------------------------

+ 1 - 1
Examples/Demos/extrusion/bendingcyl/fBendingC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormBending: TFormBending
   Left = 0
   Top = 0
   Caption = 'Bending Cylinder'

+ 3 - 3
Examples/Demos/extrusion/bendingcyl/fBendingC.h

@@ -21,7 +21,7 @@
 #include "GLS.Spline.hpp"
 
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormBending : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -47,9 +47,9 @@ __published:	// IDE-managed Components
 private:	// User declarations
 	int mx, my;
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormBending(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormBending *FormBending;
 //---------------------------------------------------------------------------
 #endif

+ 1 - 1
Examples/Demos/extrusion/cutoutstar/CutoutstarC.cbproj

@@ -142,7 +142,7 @@
             <BuildOrder>0</BuildOrder>
         </CppCompile>
         <CppCompile Include="fCutoutstarC.cpp">
-            <Form>Form1</Form>
+            <Form>FormCutoutstar</Form>
             <FormType>dfm</FormType>
             <DependentOn>fCutoutstarC.h</DependentOn>
             <BuildOrder>2</BuildOrder>

+ 2 - 2
Examples/Demos/extrusion/cutoutstar/CutoutstarC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fCutoutstarC.cpp", Form1);
+USEFORM("fCutoutstarC.cpp", FormCutoutstar);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TForm1), &Form1);
+		Application->CreateForm(__classid(TFormCutoutstar), &FormCutoutstar);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 8 - 6
Examples/Demos/extrusion/cutoutstar/fCutoutstarC.cpp

@@ -19,14 +19,14 @@
 
 
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormCutoutstar *FormCutoutstar;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormCutoutstar::TFormCutoutstar(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TFormCutoutstar::FormCreate(TObject *Sender)
 {
    int i;
    float r, x, y;
@@ -47,7 +47,7 @@ void __fastcall TForm1::FormCreate(TObject *Sender)
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
+void __fastcall TFormCutoutstar::GLCadencer1Progress(TObject *Sender, const double deltaTime,
 		  const double newTime)
 {
    float x, y;
@@ -67,11 +67,13 @@ void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaT
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TFormCutoutstar::Timer1Timer(TObject *Sender)
 {
-   // Standard FPS counter
+/*
    PanelFPS->Caption = Format("%.1f FPS",
 	 ARRAYOFCONST((GLSceneViewer1->FramesPerSecond())));
+*/
+   PanelFPS->Caption = GLSceneViewer1->FramesPerSecond();
    GLSceneViewer1->ResetPerformanceMonitor();
 }
 //---------------------------------------------------------------------------

+ 1 - 1
Examples/Demos/extrusion/cutoutstar/fCutoutstarC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormCutoutstar: TFormCutoutstar
   Left = 0
   Top = 0
   Caption = 'Cutout Star'

+ 3 - 3
Examples/Demos/extrusion/cutoutstar/fCutoutstarC.h

@@ -19,7 +19,7 @@
 #include "GLS.Nodes.hpp"
 
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormCutoutstar : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -36,9 +36,9 @@ __published:	// IDE-managed Components
 
 private:	// User declarations
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormCutoutstar(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormCutoutstar *FormCutoutstar;
 //---------------------------------------------------------------------------
 #endif

+ 34 - 10
Examples/Demos/extrusion/extrusion.groupproj

@@ -3,6 +3,12 @@
         <ProjectGuid>{D71908F6-3D2B-4A41-9B43-C56E0586929C}</ProjectGuid>
     </PropertyGroup>
     <ItemGroup>
+        <Projects Include="ExtrusionD.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="ExtrusionC.cbproj">
+            <Dependencies/>
+        </Projects>
         <Projects Include="bendingcyl\BendingD.dproj">
             <Dependencies/>
         </Projects>
@@ -18,7 +24,7 @@
         <Projects Include="nutsnbolts\NutsnBoltsD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="nutsnbolts\NutsnboltC.cbproj">
+        <Projects Include="nutsnbolts\NutsnBoltsC.cbproj">
             <Dependencies/>
         </Projects>
         <Projects Include="pawn\PawnD.dproj">
@@ -41,6 +47,24 @@
             <Default.Personality/>
         </BorlandProject>
     </ProjectExtensions>
+    <Target Name="ExtrusionD">
+        <MSBuild Projects="ExtrusionD.dproj"/>
+    </Target>
+    <Target Name="ExtrusionD:Clean">
+        <MSBuild Projects="ExtrusionD.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="ExtrusionD:Make">
+        <MSBuild Projects="ExtrusionD.dproj" Targets="Make"/>
+    </Target>
+    <Target Name="ExtrusionC">
+        <MSBuild Projects="ExtrusionC.cbproj"/>
+    </Target>
+    <Target Name="ExtrusionC:Clean">
+        <MSBuild Projects="ExtrusionC.cbproj" Targets="Clean"/>
+    </Target>
+    <Target Name="ExtrusionC:Make">
+        <MSBuild Projects="ExtrusionC.cbproj" Targets="Make"/>
+    </Target>
     <Target Name="BendingD">
         <MSBuild Projects="bendingcyl\BendingD.dproj"/>
     </Target>
@@ -86,14 +110,14 @@
     <Target Name="NutsnBoltsD:Make">
         <MSBuild Projects="nutsnbolts\NutsnBoltsD.dproj" Targets="Make"/>
     </Target>
-    <Target Name="NutsnboltC">
-        <MSBuild Projects="nutsnbolts\NutsnboltC.cbproj"/>
+    <Target Name="NutsnBoltsC">
+        <MSBuild Projects="nutsnbolts\NutsnBoltsC.cbproj"/>
     </Target>
-    <Target Name="NutsnboltC:Clean">
-        <MSBuild Projects="nutsnbolts\NutsnboltC.cbproj" Targets="Clean"/>
+    <Target Name="NutsnBoltsC:Clean">
+        <MSBuild Projects="nutsnbolts\NutsnBoltsC.cbproj" Targets="Clean"/>
     </Target>
-    <Target Name="NutsnboltC:Make">
-        <MSBuild Projects="nutsnbolts\NutsnboltC.cbproj" Targets="Make"/>
+    <Target Name="NutsnBoltsC:Make">
+        <MSBuild Projects="nutsnbolts\NutsnBoltsC.cbproj" Targets="Make"/>
     </Target>
     <Target Name="PawnD">
         <MSBuild Projects="pawn\PawnD.dproj"/>
@@ -132,13 +156,13 @@
         <MSBuild Projects="tentacles\TentacleC.cbproj" Targets="Make"/>
     </Target>
     <Target Name="Build">
-        <CallTarget Targets="BendingD;BendingC;CutoutStarD;CutoutstarC;NutsnBoltsD;NutsnboltC;PawnD;PawnC;TentaclesD;TentacleC"/>
+        <CallTarget Targets="ExtrusionD;ExtrusionC;BendingD;BendingC;CutoutStarD;CutoutstarC;NutsnBoltsD;NutsnBoltsC;PawnD;PawnC;TentaclesD;TentacleC"/>
     </Target>
     <Target Name="Clean">
-        <CallTarget Targets="BendingD:Clean;BendingC:Clean;CutoutStarD:Clean;CutoutstarC:Clean;NutsnBoltsD:Clean;NutsnboltC:Clean;PawnD:Clean;PawnC:Clean;TentaclesD:Clean;TentacleC:Clean"/>
+        <CallTarget Targets="ExtrusionD:Clean;ExtrusionC:Clean;BendingD:Clean;BendingC:Clean;CutoutStarD:Clean;CutoutstarC:Clean;NutsnBoltsD:Clean;NutsnBoltsC:Clean;PawnD:Clean;PawnC:Clean;TentaclesD:Clean;TentacleC:Clean"/>
     </Target>
     <Target Name="Make">
-        <CallTarget Targets="BendingD:Make;BendingC:Make;CutoutStarD:Make;CutoutstarC:Make;NutsnBoltsD:Make;NutsnboltC:Make;PawnD:Make;PawnC:Make;TentaclesD:Make;TentacleC:Make"/>
+        <CallTarget Targets="ExtrusionD:Make;ExtrusionC:Make;BendingD:Make;BendingC:Make;CutoutStarD:Make;CutoutstarC:Make;NutsnBoltsD:Make;NutsnBoltsC:Make;PawnD:Make;PawnC:Make;TentaclesD:Make;TentacleC:Make"/>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 94 - 0
Examples/Demos/extrusion/fExtrusionC.cpp

@@ -0,0 +1,94 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "fExtrusionC.h"
+
+#pragma link "fBendingC"
+#pragma link "fCutoutStarC"
+#pragma link "fNutsnBoltsC"
+#pragma link "fPawnC"
+#pragma link "fTentaclesC"
+
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TfrmExtrusionC *frmExtrusionC;
+//---------------------------------------------------------------------------
+__fastcall TfrmExtrusionC::TfrmExtrusionC(TComponent* Owner)
+	: TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+void __fastcall TfrmExtrusionC::FormCreate(TObject *Sender)
+{
+  // Bending
+  FormBending = new TFormBending(tsBending);
+  FormBending->Parent = tsBending;
+  FormBending->Align = alClient;
+  FormBending->BorderStyle = bsNone;
+  FormBending->Show();
+
+  // Cutoutstar
+  FormCutoutstar = new TFormCutoutstar(tsCutoutStar);
+  FormCutoutstar->Parent = tsCutoutStar;
+  FormCutoutstar->Align = alClient;
+  FormCutoutstar->BorderStyle = bsNone;
+  FormCutoutstar->Show();
+
+  // NutsnBolts
+  FormNutsnBolts = new TFormNutsnBolts(tsNutsnBolts);
+  FormNutsnBolts->Parent = tsNutsnBolts;
+  FormNutsnBolts->Align = alClient;
+  FormNutsnBolts->BorderStyle = bsNone;
+  FormNutsnBolts->Show();
+
+  // Pawn
+  FormPawn = new TFormPawn(tsPawn);
+  FormPawn->Parent = tsPawn;
+  FormPawn->Align = alClient;
+  FormPawn->BorderStyle = bsNone;
+  FormPawn->Show();
+
+  // Tentacles
+  FormTentacles = new TFormTentacles(tsTentacles);
+  FormTentacles->Parent = tsTentacles;
+  FormTentacles->Align = alClient;
+  FormTentacles->BorderStyle = bsNone;
+  FormTentacles->Show();
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmExtrusionC::tvExtrusionClick(TObject *Sender)
+{
+   switch (tvExtrusion->Selected->Index) {
+	case 0: {
+	  PageControl->ActivePage = tsBending; break;
+	}
+	case 1: {
+	  PageControl->ActivePage = tsCutoutStar; break;
+	}
+	case 2: {
+	  PageControl->ActivePage = tsNutsnBolts; break;
+	}
+	case 3: {
+	  PageControl->ActivePage = tsPawn; break;
+	}
+	case 4: {
+	  PageControl->ActivePage = tsTentacles; break;
+	}
+	default: {
+	  PageControl->ActivePage = tsBending; break;
+	}
+   }
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmExtrusionC::FormShow(TObject *Sender)
+{
+  PageControl->ActivePage = tsBending;
+}
+//---------------------------------------------------------------------------
+

+ 82 - 0
Examples/Demos/extrusion/fExtrusionC.dfm

@@ -0,0 +1,82 @@
+object frmExtrusionC: TfrmExtrusionC
+  Left = 0
+  Top = 0
+  Caption = 'Extrusion C'
+  ClientHeight = 541
+  ClientWidth = 746
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -12
+  Font.Name = 'Segoe UI'
+  Font.Style = []
+  Menu = MainMenu
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
+  TextHeight = 15
+  object PanelLeft: TPanel
+    Left = 0
+    Top = 0
+    Width = 129
+    Height = 541
+    Align = alLeft
+    TabOrder = 0
+    object tvExtrusion: TTreeView
+      Left = 1
+      Top = 1
+      Width = 127
+      Height = 539
+      Align = alClient
+      Indent = 19
+      TabOrder = 0
+      OnClick = tvExtrusionClick
+      Items.NodeData = {
+        03050000002C0000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+        00000000000107420065006E00640069006E0067003200000000000000000000
+        00FFFFFFFFFFFFFFFF000000000000000000000000010A4300750074006F0075
+        0074005300740061007200320000000000000000000000FFFFFFFFFFFFFFFF00
+        0000000000000000000000010A4E007500740073006E0042006F006C00740073
+        00260000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+        0001045000610077006E00300000000000000000000000FFFFFFFFFFFFFFFF00
+        00000000000000000000000109540065006E007400610063006C0065007300}
+    end
+  end
+  object PageControl: TPageControl
+    Left = 129
+    Top = 0
+    Width = 617
+    Height = 541
+    ActivePage = tsTentacles
+    Align = alClient
+    TabOrder = 1
+    object tsBending: TTabSheet
+      Caption = 'Bending'
+      TabVisible = False
+    end
+    object tsCutoutStar: TTabSheet
+      Caption = 'CutoutStar'
+      ImageIndex = 1
+      TabVisible = False
+    end
+    object tsNutsnBolts: TTabSheet
+      Caption = 'NutsnBolts'
+      ImageIndex = 2
+      TabVisible = False
+    end
+    object tsPawn: TTabSheet
+      Caption = 'Pawn'
+      ImageIndex = 3
+      TabVisible = False
+    end
+    object tsTentacles: TTabSheet
+      Caption = 'Tentacles'
+      ImageIndex = 4
+      TabVisible = False
+    end
+  end
+  object MainMenu: TMainMenu
+    Left = 340
+    Top = 80
+  end
+end

+ 43 - 0
Examples/Demos/extrusion/fExtrusionC.h

@@ -0,0 +1,43 @@
+//---------------------------------------------------------------------------
+
+#ifndef fExtrusionCH
+#define fExtrusionCH
+//---------------------------------------------------------------------------
+#include <System.Classes.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.Forms.hpp>
+#include <Vcl.ComCtrls.hpp>
+#include <Vcl.ExtCtrls.hpp>
+#include <Vcl.Menus.hpp>
+
+#include "fBendingC.h"
+#include "fCutoutStarC.h"
+#include "fNutsnBoltsC.h"
+#include "fPawnC.h"
+#include "fTentaclesC.h"
+
+//---------------------------------------------------------------------------
+class TfrmExtrusionC : public TForm
+{
+__published:	// IDE-managed Components
+	TPanel *PanelLeft;
+	TTreeView *tvExtrusion;
+	TPageControl *PageControl;
+	TTabSheet *tsBending;
+	TTabSheet *tsCutoutStar;
+	TTabSheet *tsNutsnBolts;
+	TTabSheet *tsPawn;
+	TTabSheet *tsTentacles;
+	TMainMenu *MainMenu;
+	void __fastcall FormCreate(TObject *Sender);
+	void __fastcall tvExtrusionClick(TObject *Sender);
+	void __fastcall FormShow(TObject *Sender);
+private:	// User declarations
+public:		// User declarations
+	__fastcall TfrmExtrusionC(TComponent* Owner);
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TfrmExtrusionC *frmExtrusionC;
+//---------------------------------------------------------------------------
+#endif

+ 82 - 0
Examples/Demos/extrusion/fExtrusionD.dfm

@@ -0,0 +1,82 @@
+object frmExtrusionD: TfrmExtrusionD
+  Left = 0
+  Top = 0
+  Caption = 'Extrusion D'
+  ClientHeight = 558
+  ClientWidth = 858
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -12
+  Font.Name = 'Segoe UI'
+  Font.Style = []
+  Menu = MainMenu
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnShow = FormShow
+  TextHeight = 15
+  object PanelLeft: TPanel
+    Left = 0
+    Top = 0
+    Width = 129
+    Height = 558
+    Align = alLeft
+    TabOrder = 0
+    object tvExtrusion: TTreeView
+      Left = 1
+      Top = 1
+      Width = 127
+      Height = 556
+      Align = alClient
+      Indent = 19
+      TabOrder = 0
+      OnClick = tvExtrusionClick
+      Items.NodeData = {
+        03050000002C0000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+        00000000000107420065006E00640069006E0067003200000000000000000000
+        00FFFFFFFFFFFFFFFF000000000000000000000000010A4300750074006F0075
+        0074005300740061007200320000000000000000000000FFFFFFFFFFFFFFFF00
+        0000000000000000000000010A4E007500740073006E0042006F006C00740073
+        00260000000000000000000000FFFFFFFFFFFFFFFF0000000000000000000000
+        0001045000610077006E00300000000000000000000000FFFFFFFFFFFFFFFF00
+        00000000000000000000000109540065006E007400610063006C0065007300}
+    end
+  end
+  object PageControl: TPageControl
+    Left = 129
+    Top = 0
+    Width = 729
+    Height = 558
+    ActivePage = tsTentacles
+    Align = alClient
+    TabOrder = 1
+    object tsBending: TTabSheet
+      Caption = 'Bending'
+      TabVisible = False
+    end
+    object tsCutoutStar: TTabSheet
+      Caption = 'CutoutStar'
+      ImageIndex = 1
+      TabVisible = False
+    end
+    object tsNutsnBolts: TTabSheet
+      Caption = 'NutsnBolts'
+      ImageIndex = 2
+      TabVisible = False
+    end
+    object tsPawn: TTabSheet
+      Caption = 'Pawn'
+      ImageIndex = 3
+      TabVisible = False
+    end
+    object tsTentacles: TTabSheet
+      Caption = 'Tentacles'
+      ImageIndex = 4
+      TabVisible = False
+    end
+  end
+  object MainMenu: TMainMenu
+    Left = 425
+    Top = 100
+  end
+end

+ 113 - 0
Examples/Demos/extrusion/fExtrusionD.pas

@@ -0,0 +1,113 @@
+unit fExtrusionD;
+
+interface
+
+uses
+  Winapi.Windows,
+  Winapi.Messages,
+  System.SysUtils,
+  System.Variants,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.Menus,
+  Vcl.ComCtrls,
+  Vcl.ExtCtrls,
+
+  fBendingD,
+  fCutoutStarD,
+  fNutsnBoltsD,
+  fPawnD,
+  fTentaclesD;
+
+type
+  TfrmExtrusionD = class(TForm)
+    PanelLeft: TPanel;
+    tvExtrusion: TTreeView;
+    PageControl: TPageControl;
+    tsBending: TTabSheet;
+    tsCutoutStar: TTabSheet;
+    tsNutsnBolts: TTabSheet;
+    tsPawn: TTabSheet;
+    tsTentacles: TTabSheet;
+    MainMenu: TMainMenu;
+    procedure tvExtrusionClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+  private
+  public
+  end;
+
+var
+  frmExtrusionD: TfrmExtrusionD;
+
+//--------------------------------------------------------------
+implementation
+//--------------------------------------------------------------
+{$R *.dfm}
+
+procedure TfrmExtrusionD.FormCreate(Sender: TObject);
+begin
+  // Bending
+  FormBendingCyl := TFormBendingCyl.Create(tsBending);
+  FormBendingCyl.Parent := tsBending;
+  FormBendingCyl.Align := alClient;
+  FormBendingCyl.BorderStyle := bsNone;
+  FormBendingCyl.Show;
+
+  // CutoutStar
+  FormCutoutStar := TFormCutoutStar.Create(tsCutoutStar);
+  FormCutoutStar.Parent := tsCutoutStar;
+  FormCutoutStar.Align := alClient;
+  FormCutoutStar.BorderStyle := bsNone;
+  FormCutoutStar.Show;
+
+  // NutsnBolts
+  FormNutsnBolts := TFormNutsnBolts.Create(tsNutsnBolts);
+  FormNutsnBolts.Parent := tsNutsnBolts;
+  FormNutsnBolts.Align := alClient;
+  FormNutsnBolts.BorderStyle := bsNone;
+  FormNutsnBolts.Show;
+
+  // Pawn
+  FormPawn := TFormPawn.Create(tsPawn);
+  FormPawn.Parent := tsPawn;
+  FormPawn.Align := alClient;
+  FormPawn.BorderStyle := bsNone;
+  FormPawn.Show;
+
+  // Tentacles
+  FormTentacles := TFormTentacles.Create(tsTentacles);
+  FormTentacles.Parent := tsTentacles;
+  FormTentacles.Align := alClient;
+  FormTentacles.BorderStyle := bsNone;
+  FormTentacles.Show;
+end;
+
+//--------------------------------------------------------------
+
+procedure TfrmExtrusionD.FormShow(Sender: TObject);
+begin
+  PageControl.ActivePage := tsBending; //tsPawn;
+end;
+
+procedure TfrmExtrusionD.tvExtrusionClick(Sender: TObject);
+begin
+   tvExtrusion.Items[0].DropHighlighted := False;
+   case tvExtrusion.Selected.Index of
+    0:
+      PageControl.ActivePage := tsBending;
+    1:
+      PageControl.ActivePage := tsCutoutStar;
+    2:
+      PageControl.ActivePage := tsNutsnBolts;
+    3:
+      PageControl.ActivePage := tsPawn;
+    4:
+      PageControl.ActivePage := tsTentacles;
+  end;
+end;
+
+end.

+ 14 - 14
Examples/Demos/extrusion/nutsnbolts/NutsnboltC.cbproj → Examples/Demos/extrusion/nutsnbolts/NutsnBoltsC.cbproj

@@ -4,7 +4,7 @@
         <ProjectVersion>19.4</ProjectVersion>
         <FrameworkType>VCL</FrameworkType>
         <AppType>Application</AppType>
-        <MainSource>NutsnboltC.cpp</MainSource>
+        <MainSource>NutsnBoltsC.cpp</MainSource>
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Debug</Config>
         <Platform Condition="'$(Platform)'==''">Win32</Platform>
@@ -58,7 +58,7 @@
         <Base>true</Base>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base)'!=''">
-        <SanitizedProjectName>NutsnboltC</SanitizedProjectName>
+        <SanitizedProjectName>NutsnBoltsC</SanitizedProjectName>
         <Icon_MainIcon>$(BDS)\bin\cbuilder_PROJECTICON.ico</Icon_MainIcon>
         <Multithreaded>true</Multithreaded>
         <AllPackageLibs>rtl.lib;vcl.lib;fmx.lib;xmlrtl.lib;vclimg.lib;GLScene_RT.lib</AllPackageLibs>
@@ -140,16 +140,16 @@
         <Defines>NDEBUG;$(Defines)</Defines>
     </PropertyGroup>
     <ItemGroup>
-        <CppCompile Include="fNutsnboltC.cpp">
-            <Form>Form1</Form>
+        <CppCompile Include="fNutsnBoltsC.cpp">
+            <Form>FormNutsnBolts</Form>
             <FormType>dfm</FormType>
-            <DependentOn>fNutsnboltC.h</DependentOn>
+            <DependentOn>fNutsnBoltsC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
         </CppCompile>
-        <CppCompile Include="NutsnboltC.cpp">
+        <CppCompile Include="NutsnBoltsC.cpp">
             <BuildOrder>0</BuildOrder>
         </CppCompile>
-        <FormResources Include="fNutsnboltC.dfm"/>
+        <FormResources Include="fNutsnBoltsC.dfm"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>
@@ -168,7 +168,7 @@
         <BorlandProject>
             <CPlusPlusBuilder.Personality>
                 <Source>
-                    <Source Name="MainSource">NutsnboltC.cpp</Source>
+                    <Source Name="MainSource">NutsnBoltsC.cpp</Source>
                 </Source>
                 <VersionInfo>
                     <VersionInfo Name="IncludeVerInfo">False</VersionInfo>
@@ -347,20 +347,20 @@
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName=".\Win32\Debug\NutsnboltC.exe" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName=".\Win32\Debug\Nutsnbolts.exe" Configuration="Debug" Class="ProjectOutput"/>
+                <DeployFile LocalName=".\Win32\Debug\Nutsnbolts.tds" Configuration="Debug" Class="DebugSymbols"/>
+                <DeployFile LocalName=".\Win32\Debug\NutsnBoltsC.exe" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win32">
-                        <RemoteName>NutsnboltC.exe</RemoteName>
+                        <RemoteName>NutsnBoltsC.exe</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName=".\Win32\Debug\NutsnboltC.tds" Configuration="Debug" Class="DebugSymbols">
+                <DeployFile LocalName=".\Win32\Debug\NutsnBoltsC.tds" Configuration="Debug" Class="DebugSymbols">
                     <Platform Name="Win32">
-                        <RemoteName>NutsnboltC.tds</RemoteName>
+                        <RemoteName>NutsnBoltsC.tds</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>
-                <DeployFile LocalName=".\Win32\Debug\Nutsnbolts.exe" Configuration="Debug" Class="ProjectOutput"/>
-                <DeployFile LocalName=".\Win32\Debug\Nutsnbolts.tds" Configuration="Debug" Class="DebugSymbols"/>
                 <DeployClass Name="AdditionalDebugSymbols">
                     <Platform Name="iOSSimulator">
                         <Operation>1</Operation>

+ 2 - 2
Examples/Demos/bench/megaglasscube/MegaGlassCubeC.cpp → Examples/Demos/extrusion/nutsnbolts/NutsnBoltsC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fMainC.cpp", Form1);
+USEFORM("fNutsnBoltsC.cpp", FormNutsnBolts);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TForm1), &Form1);
+		Application->CreateForm(__classid(TFormNutsnBolts), &FormNutsnBolts);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 8 - 6
Examples/Demos/extrusion/nutsnbolts/fNutsnboltC.cpp → Examples/Demos/extrusion/nutsnbolts/fNutsnBoltsC.cpp

@@ -4,7 +4,7 @@
 #include <tchar.h>
 #pragma hdrstop
 
-#include "fNutsnboltC.h"
+#include "fNutsnBoltsC.h"
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma link "GLS.BaseClasses"
@@ -15,27 +15,29 @@
 #pragma link "GLS.Objects"
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
+
+
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormNutsnBolts *FormNutsnBolts;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormNutsnBolts::TFormNutsnBolts(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
+void __fastcall TFormNutsnBolts::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
 		  TPoint &MousePos, bool &Handled)
 {
   GLCamera1->AdjustDistanceToTarget(Power(1.05, WheelDelta / 120));
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
+void __fastcall TFormNutsnBolts::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
 		  TShiftState Shift, int X, int Y)
 {
   mx = X; my = Y;
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
+void __fastcall TFormNutsnBolts::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
 		  int X, int Y)
 {
    if (Shift.Contains(ssLeft))

+ 1 - 3
Examples/Demos/extrusion/nutsnbolts/fNutsnboltC.dfm → Examples/Demos/extrusion/nutsnbolts/fNutsnBoltsC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormNutsnBolts: TFormNutsnBolts
   Left = 0
   Top = 0
   Caption = 'Nuts and Bolts'
@@ -10,10 +10,8 @@ object Form1: TForm1
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
-  OldCreateOrder = False
   Position = poScreenCenter
   OnMouseWheel = FormMouseWheel
-  PixelsPerInch = 96
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0

+ 5 - 5
Examples/Demos/extrusion/nutsnbolts/fNutsnboltC.h → Examples/Demos/extrusion/nutsnbolts/fNutsnBoltsC.h

@@ -1,7 +1,7 @@
 //---------------------------------------------------------------------------
 
-#ifndef fNutsnboltCH
-#define fNutsnboltCH
+#ifndef fNutsnBoltsCH
+#define fNutsnBoltsCH
 //---------------------------------------------------------------------------
 #include <System.Classes.hpp>
 #include <Vcl.Controls.hpp>
@@ -16,7 +16,7 @@
 #include "GLS.Scene.hpp"
 #include "GLS.SceneViewer.hpp"
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormNutsnBolts : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -41,9 +41,9 @@ __published:	// IDE-managed Components
 private:	// User declarations
     int mx, my;
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormNutsnBolts(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormNutsnBolts *FormNutsnBolts;
 //---------------------------------------------------------------------------
 #endif

+ 1 - 1
Examples/Demos/extrusion/pawn/PawnC.cbproj

@@ -139,7 +139,7 @@
     </PropertyGroup>
     <ItemGroup>
         <CppCompile Include="fPawnC.cpp">
-            <Form>Form1</Form>
+            <Form>FormPawn</Form>
             <FormType>dfm</FormType>
             <DependentOn>fPawnC.h</DependentOn>
             <BuildOrder>2</BuildOrder>

+ 2 - 2
Examples/Demos/extrusion/pawn/PawnC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fPawnC.cpp", Form1);
+USEFORM("fPawnC.cpp", FormPawn);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TForm1), &Form1);
+		Application->CreateForm(__classid(TFormPawn), &FormPawn);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 15 - 14
Examples/Demos/extrusion/pawn/fPawnC.cpp

@@ -15,20 +15,21 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormPawn *FormPawn;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormPawn::TFormPawn(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TFormPawn::FormCreate(TObject *Sender)
 {
-  TFileName Path = GetCurrentAssetPath();
+  TFileName PathToData = GetCurrentAssetPath();
+  SetCurrentDir(PathToData + "\\texture");
   RotationSolid1->Material->Texture->Image->LoadFromFile("ashwood.jpg");
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::CheckBox1Click(TObject *Sender)
+void __fastcall TFormPawn::CheckBox1Click(TObject *Sender)
 {
    if (CheckBox1->Checked)
 	  RotationSolid1->SplineMode = lsmCubicSpline;
@@ -36,7 +37,7 @@ void __fastcall TForm1::CheckBox1Click(TObject *Sender)
       RotationSolid1->SplineMode = lsmLines;
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::CheckBox2Click(TObject *Sender)
+void __fastcall TFormPawn::CheckBox2Click(TObject *Sender)
 {
   if (CheckBox2->Checked)
 	  RotationSolid1->Normals = nsSmooth;
@@ -44,13 +45,13 @@ void __fastcall TForm1::CheckBox2Click(TObject *Sender)
 	  RotationSolid1->Normals = nsFlat;
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::CheckBox3Click(TObject *Sender)
+void __fastcall TFormPawn::CheckBox3Click(TObject *Sender)
 {
    RotationSolid1->Material->Texture->Disabled = !CheckBox3->Checked;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::CheckBox4Click(TObject *Sender)
+void __fastcall TFormPawn::CheckBox4Click(TObject *Sender)
 {
   if (CheckBox4->Checked)
 	RotationSolid1->Material->Texture->TextureMode = tmModulate;
@@ -58,7 +59,7 @@ void __fastcall TForm1::CheckBox4Click(TObject *Sender)
     RotationSolid1->Material->Texture->TextureMode = tmDecal;
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::TrackBar1Change(TObject *Sender)
+void __fastcall TFormPawn::TrackBar1Change(TObject *Sender)
 {
    RotationSolid1->StopAngle = TrackBar1->Position;
    if (TrackBar1->Position==360)
@@ -69,32 +70,32 @@ void __fastcall TForm1::TrackBar1Change(TObject *Sender)
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::TrackBar2Change(TObject *Sender)
+void __fastcall TFormPawn::TrackBar2Change(TObject *Sender)
 {
   RotationSolid1->Slices = TrackBar2->Position;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::TrackBar3Change(TObject *Sender)
+void __fastcall TFormPawn::TrackBar3Change(TObject *Sender)
 {
    RotationSolid1->Division = TrackBar3->Position;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TFormPawn::Timer1Timer(TObject *Sender)
 {
   LabelTri->Caption = Format("%d Triangles", ARRAYOFCONST((RotationSolid1->TriangleCount)));
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
+void __fastcall TFormPawn::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
           TShiftState Shift, int X, int Y)
 {
    mx = X; my = Y;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
+void __fastcall TFormPawn::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
           int X, int Y)
 {
    if (Shift.Contains(ssLeft))

+ 13 - 10
Examples/Demos/extrusion/pawn/fPawnC.dfm

@@ -1,40 +1,43 @@
-object Form1: TForm1
+object FormPawn: TFormPawn
   Left = 0
   Top = 0
   Caption = 'Pawn'
-  ClientHeight = 403
-  ClientWidth = 548
+  ClientHeight = 426
+  ClientWidth = 614
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
-  OldCreateOrder = False
+  Position = poScreenCenter
   OnCreate = FormCreate
-  PixelsPerInch = 96
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 419
-    Height = 403
+    Width = 485
+    Height = 426
     Camera = GLCamera1
     Buffer.BackgroundColor = clBackground
-    FieldOfView = 152.128311157226600000
+    FieldOfView = 153.578933715820300000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
+    ExplicitWidth = 419
+    ExplicitHeight = 404
   end
   object Panel1: TPanel
-    Left = 419
+    Left = 485
     Top = 0
     Width = 129
-    Height = 403
+    Height = 426
     Align = alRight
     TabOrder = 1
+    ExplicitLeft = 419
+    ExplicitHeight = 403
     object Label1: TLabel
       Left = 23
       Top = 8

+ 3 - 3
Examples/Demos/extrusion/pawn/fPawnC.h

@@ -20,7 +20,7 @@
 #include "Jpeg.hpp"
 
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormPawn : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -59,9 +59,9 @@ __published:	// IDE-managed Components
 private:	// User declarations
     int mx,my;
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormPawn(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormPawn *FormPawn;
 //---------------------------------------------------------------------------
 #endif

+ 4 - 4
Examples/Demos/extrusion/tentacles/TentacleC.cbproj

@@ -138,16 +138,16 @@
         <Defines>NDEBUG;$(Defines)</Defines>
     </PropertyGroup>
     <ItemGroup>
-        <CppCompile Include="fTentacleC.cpp">
-            <Form>Form1</Form>
+        <CppCompile Include="fTentaclesC.cpp">
+            <Form>FormTentacles</Form>
             <FormType>dfm</FormType>
-            <DependentOn>fTentacleC.h</DependentOn>
+            <DependentOn>fTentaclesC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
         </CppCompile>
         <CppCompile Include="TentacleC.cpp">
             <BuildOrder>0</BuildOrder>
         </CppCompile>
-        <FormResources Include="fTentacleC.dfm"/>
+        <FormResources Include="fTentaclesC.dfm"/>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
         </BuildConfiguration>

+ 2 - 2
Examples/Demos/extrusion/tentacles/TentacleC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fTentacleC.cpp", Form1);
+USEFORM("fTentaclesC.cpp", FormTentacles);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 {
@@ -12,7 +12,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TForm1), &Form1);
+		Application->CreateForm(__classid(TFormTentacles), &FormTentacles);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 12 - 10
Examples/Demos/extrusion/tentacles/fTentacleC.cpp → Examples/Demos/extrusion/tentacles/fTentaclesC.cpp

@@ -6,7 +6,7 @@
 
 #pragma hdrstop
 
-#include "fTentacleC.h"
+#include "fTentaclesC.h"
 // ---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma link "GLS.BaseClasses"
@@ -18,14 +18,14 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1* Form1;
+TFormTentacles* FormTentacles;
 
 // ---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {}
+__fastcall TFormTentacles::TFormTentacles(TComponent* Owner) : TForm(Owner) {}
 // ---------------------------------------------------------------------------
 const int cNbNodes = 32;
 
-void __fastcall TForm1::FormCreate(TObject* Sender)
+void __fastcall TFormTentacles::FormCreate(TObject* Sender)
 {
 	int i, k;
     TGLPipe* pipe;
@@ -50,7 +50,7 @@ void __fastcall TForm1::FormCreate(TObject* Sender)
 }
 
 // ---------------------------------------------------------------------------
-void __fastcall TForm1::GLCadencer1Progress(
+void __fastcall TFormTentacles::GLCadencer1Progress(
     TObject* Sender, const double deltaTime, const double newTime)
 {
     int i, k;
@@ -77,15 +77,17 @@ void __fastcall TForm1::GLCadencer1Progress(
             }
             pipe->Nodes->EndUpdate();
         }
-    Sphere1->Radius = 1.4 + Sin(2 * t) * 0.1;
+	Sphere1->Radius = 1.4 + Sin(2 * t) * 0.1;
 }
 
 // ---------------------------------------------------------------------------
-void __fastcall TForm1::Timer1Timer(TObject* Sender)
+void __fastcall TFormTentacles::Timer1Timer(TObject* Sender)
 {
-    // standard FPS counter
-    PanelFPS->Caption =
-        Format("%.1f FPS", ARRAYOFCONST((GLSceneViewer1->FramesPerSecond())));
+/*
+	PanelFPS->Caption =
+		Format("%.1f FPS", ARRAYOFCONST((GLSceneViewer1->FramesPerSecond())));
+*/
+	PanelFPS->Caption = GLSceneViewer1->FramesPerSecond();
     GLSceneViewer1->ResetPerformanceMonitor();
 }
 // ---------------------------------------------------------------------------

+ 1 - 3
Examples/Demos/extrusion/tentacles/fTentacleC.dfm → Examples/Demos/extrusion/tentacles/fTentaclesC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormTentacles: TFormTentacles
   Left = 0
   Top = 0
   Caption = 'Tentacles'
@@ -24,8 +24,6 @@ object Form1: TForm1
     PenAsTouch = False
     Align = alClient
     TabOrder = 0
-    ExplicitWidth = 663
-    ExplicitHeight = 446
   end
   object PanelFPS: TPanel
     Left = 208

+ 5 - 5
Examples/Demos/extrusion/tentacles/fTentacleC.h → Examples/Demos/extrusion/tentacles/fTentaclesC.h

@@ -1,7 +1,7 @@
 //---------------------------------------------------------------------------
 
-#ifndef fTentacleCH
-#define fTentacleCH
+#ifndef fTentaclesCH
+#define fTentaclesCH
 //---------------------------------------------------------------------------
 #include <System.Classes.hpp>
 #include <Vcl.Controls.hpp>
@@ -21,7 +21,7 @@
 #include "GLS.Coordinates.hpp"
 #include "GLS.BaseClasses.hpp"
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormTentacles : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -45,9 +45,9 @@ __published:	// IDE-managed Components
 
 private:	// User declarations
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormTentacles(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormTentacles *FormTentacles;
 //---------------------------------------------------------------------------
 #endif

+ 1 - 1
Examples/Demos/graph/GraphC.cbproj

@@ -125,7 +125,7 @@
     </PropertyGroup>
     <ItemGroup>
         <CppCompile Include="fGraphC.cpp">
-            <Form>FormGraphC</Form>
+            <Form>FormGraph</Form>
             <FormType>dfm</FormType>
             <DependentOn>fGraphC.h</DependentOn>
             <BuildOrder>2</BuildOrder>

+ 2 - 2
Examples/Demos/graph/GraphC.cpp

@@ -8,7 +8,7 @@ USEFORM("points\fPointsC.cpp", FormPoints);
 USEFORM("projection\fProjectionC.cpp", FormProjection);
 USEFORM("splines\fSplinesC.cpp", FormSplines);
 USEFORM("heightfield\fHeightfieldC.cpp", Form1);
-USEFORM("fGraphC.cpp", FormGraphC);
+USEFORM("fGraphC.cpp", FormGraph);
 USEFORM("fxy\fFxyC.cpp", FormPlot);
 //---------------------------------------------------------------------------
 int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
@@ -17,7 +17,7 @@ int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
 	{
 		Application->Initialize();
 		Application->MainFormOnTaskBar = true;
-		Application->CreateForm(__classid(TFormGraphC), &FormGraphC);
+		Application->CreateForm(__classid(TFormGraph), &FormGraph);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 13 - 30
Examples/Demos/graph/fGraphC.cpp

@@ -1,31 +1,32 @@
 //---------------------------------------------------------------------------
 
 #include <vcl.h>
+
 #pragma hdrstop
 
 #include "fGraphC.h"
-#include "fFxyC.h"
-#include "fHeightFieldC.h"
-#include "fPointsC.h"
-#include "fProjectionC.h"
-#include "fSplinesC.h"
+
+#pragma link "fFxyC"
+#pragma link "fHeightFieldC"
+#pragma link "fPointsC"
+#pragma link "fProjectionC"
+#pragma link "fSplinesC"
+
 
 //---------------------------------------------------------------------------
 #pragma package(smart_init)
 #pragma resource "*.dfm"
-TFormGraphC *FormGraphC;
+TFormGraph *FormGraph;
 //---------------------------------------------------------------------------
-__fastcall TFormGraphC::TFormGraphC(TComponent* Owner)
+__fastcall TFormGraph::TFormGraph(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TFormGraphC::FormCreate(TObject *Sender)
+void __fastcall TFormGraph::FormCreate(TObject *Sender)
 {
   // Fxy
   FormFxy = new TFormFxy(tsFxy);
-  FormFxy->Top = 10;
-  FormFxy->Left = 10;
   FormFxy->Parent = tsFxy;
   FormFxy->Align = alClient;
   FormFxy->BorderStyle = bsNone;
@@ -33,8 +34,6 @@ void __fastcall TFormGraphC::FormCreate(TObject *Sender)
 
   // HeightField
   FormHeightField = new TFormHeightField(tsHeightField);
-  FormHeightField->Top = 10;
-  FormHeightField->Left = 10;
   FormHeightField->Parent = tsHeightField;
   FormHeightField->Align = alClient;
   FormHeightField->BorderStyle = bsNone;
@@ -42,8 +41,6 @@ void __fastcall TFormGraphC::FormCreate(TObject *Sender)
 
   // Points
   FormPoints = new TFormPoints(tsPoints);
-  FormPoints->Top = 10;
-  FormPoints->Left = 10;
   FormPoints->Parent = tsPoints;
   FormPoints->Align = alClient;
   FormPoints->BorderStyle = bsNone;
@@ -51,8 +48,6 @@ void __fastcall TFormGraphC::FormCreate(TObject *Sender)
 
    // Projection
   FormProjection = new TFormProjection(tsProjection);
-  FormProjection->Top = 10;
-  FormProjection->Left = 10;
   FormProjection->Parent = tsProjection;
   FormProjection->Align = alClient;
   FormProjection->BorderStyle = bsNone;
@@ -60,8 +55,6 @@ void __fastcall TFormGraphC::FormCreate(TObject *Sender)
 
   // Splines
   FormSplines = new TFormSplines(tsSplines);
-  FormSplines->Top = 10;
-  FormSplines->Left = 10;
   FormSplines->Parent = tsSplines;
   FormSplines->Align = alClient;
   FormSplines->BorderStyle = bsNone;
@@ -69,13 +62,13 @@ void __fastcall TFormGraphC::FormCreate(TObject *Sender)
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TFormGraphC::FormShow(TObject *Sender)
+void __fastcall TFormGraph::FormShow(TObject *Sender)
 {
   PageControl->ActivePage = tsFxy;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TFormGraphC::tvGraphClick(TObject *Sender)
+void __fastcall TFormGraph::tvGraphClick(TObject *Sender)
 {
   ///tvGraph->Items[0]->DropHighlighted = false;
    switch (tvGraph->Selected->Index) {
@@ -98,17 +91,7 @@ void __fastcall TFormGraphC::tvGraphClick(TObject *Sender)
 	  PageControl->ActivePage = tsFxy; break;
 	}
    }
-
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TFormGraphC::FormDestroy(TObject *Sender)
-{
-  FormFxy->Free();
-  FormHeightField->Free();
-  FormPoints->Free();
-  FormProjection->Free();
-  FormSplines->Free();
-}
-//---------------------------------------------------------------------------
 

+ 1 - 6
Examples/Demos/graph/fGraphC.dfm

@@ -1,4 +1,4 @@
-object FormGraphC: TFormGraphC
+object FormGraph: TFormGraph
   Left = 0
   Top = 0
   Caption = 'Graph C'
@@ -13,7 +13,6 @@ object FormGraphC: TFormGraphC
   Menu = MainMenu
   Position = poScreenCenter
   OnCreate = FormCreate
-  OnDestroy = FormDestroy
   OnShow = FormShow
   TextHeight = 15
   object PanelLeft: TPanel
@@ -23,7 +22,6 @@ object FormGraphC: TFormGraphC
     Height = 571
     Align = alLeft
     TabOrder = 0
-    ExplicitHeight = 512
     object tvGraph: TTreeView
       Left = 1
       Top = 1
@@ -42,7 +40,6 @@ object FormGraphC: TFormGraphC
         FFFFFFFFFF000000000000000000000000010A500072006F006A006500630074
         0069006F006E002C0000000000000000000000FFFFFFFFFFFFFFFF0000000000
         000000000000000107530070006C0069006E0065007300}
-      ExplicitHeight = 510
     end
   end
   object PageControl: TPageControl
@@ -52,8 +49,6 @@ object FormGraphC: TFormGraphC
     Height = 571
     Align = alClient
     TabOrder = 1
-    ExplicitWidth = 608
-    ExplicitHeight = 512
     object tsFxy: TTabSheet
       Caption = 'Fxy'
       TabVisible = False

+ 12 - 4
Examples/Demos/graph/fGraphC.h

@@ -10,8 +10,17 @@
 #include <Vcl.ComCtrls.hpp>
 #include <Vcl.ExtCtrls.hpp>
 #include <Vcl.Menus.hpp>
+
+#include "fGraphC.h"
+#include "fFxyC.h"
+#include "fHeightFieldC.h"
+#include "fPointsC.h"
+#include "fProjectionC.h"
+#include "fSplinesC.h"
+
+
 //---------------------------------------------------------------------------
-class TFormGraphC : public TForm
+class TFormGraph : public TForm
 {
 __published:	// IDE-managed Components
 	TPanel *PanelLeft;
@@ -26,12 +35,11 @@ __published:	// IDE-managed Components
 	void __fastcall FormCreate(TObject *Sender);
 	void __fastcall FormShow(TObject *Sender);
 	void __fastcall tvGraphClick(TObject *Sender);
-	void __fastcall FormDestroy(TObject *Sender);
 private:	// User declarations
 public:		// User declarations
-	__fastcall TFormGraphC(TComponent* Owner);
+	__fastcall TFormGraph(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TFormGraphC *FormGraphC;
+extern PACKAGE TFormGraph *FormGraph;
 //---------------------------------------------------------------------------
 #endif

+ 0 - 2
Examples/Demos/graph/fGraphD.dfm

@@ -13,7 +13,6 @@ object FormGraphD: TFormGraphD
   Menu = MainMenu
   Position = poScreenCenter
   OnCreate = FormCreate
-  OnDestroy = FormDestroy
   OnShow = FormShow
   TextHeight = 15
   object PanelLeft: TPanel
@@ -51,7 +50,6 @@ object FormGraphD: TFormGraphD
     ActivePage = tsProjection
     Align = alClient
     TabOrder = 1
-    ExplicitWidth = 608
     object tsFxy: TTabSheet
       Caption = 'Fxy'
       TabVisible = False

+ 0 - 24
Examples/Demos/graph/fGraphD.pas

@@ -36,11 +36,8 @@ type
     procedure tvGraphClick(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure FormShow(Sender: TObject);
-    procedure FormDestroy(Sender: TObject);
   private
-
   public
-
   end;
 
 var
@@ -54,8 +51,6 @@ procedure TFormGraphD.FormCreate(Sender: TObject);
 begin
   // Fxy
   FormFxy := TFormFxy.Create(tsFxy);
-  FormFxy.Top := 10;
-  FormFxy.Left := 10;
   FormFxy.Parent := tsFxy;
   FormFxy.Align := alClient;
   FormFxy.BorderStyle := bsNone;
@@ -63,8 +58,6 @@ begin
 
   // HeightField
   FormHeightField := TFormHeightField.Create(tsHeightField);
-  FormHeightField.Top := 10;
-  FormHeightField.Left := 10;
   FormHeightField.Parent := tsHeightField;
   FormHeightField.Align := alClient;
   FormHeightField.BorderStyle := bsNone;
@@ -72,8 +65,6 @@ begin
 
   // Points
   FormPoints := TFormPoints.Create(tsPoints);
-  FormPoints.Top := 10;
-  FormPoints.Left := 10;
   FormPoints.Parent := tsPoints;
   FormPoints.Align := alClient;
   FormPoints.BorderStyle := bsNone;
@@ -81,8 +72,6 @@ begin
 
    // Projection
   FormProjection := TFormProjection.Create(tsProjection);
-  FormProjection.Top := 10;
-  FormProjection.Left := 10;
   FormProjection.Parent := tsProjection;
   FormProjection.Align := alClient;
   FormProjection.BorderStyle := bsNone;
@@ -90,13 +79,10 @@ begin
 
   // Splines
   FormSplines := TFormSplines.Create(tsSplines);
-  FormSplines.Top := 10;
-  FormSplines.Left := 10;
   FormSplines.Parent := tsSplines;
   FormSplines.Align := alClient;
   FormSplines.BorderStyle := bsNone;
   FormSplines.Show;
-
 end;
 
 procedure TFormGraphD.FormShow(Sender: TObject);
@@ -121,14 +107,4 @@ begin
   end;
 end;
 
-procedure TFormGraphD.FormDestroy(Sender: TObject);
-begin
-  FormFxy.Free;
-  FormHeightField.Free;
-  FormPoints.Free;
-  FormProjection.Free;
-  FormSplines.Free;
-end;
-
-
 end.

+ 55 - 55
Examples/Demos/graph/graph.groupproj

@@ -3,37 +3,37 @@
         <ProjectGuid>{E0C70AF5-D1F7-41A0-A60F-F71B530ED67A}</ProjectGuid>
     </PropertyGroup>
     <ItemGroup>
+        <Projects Include="GraphD.dproj">
+            <Dependencies/>
+        </Projects>
         <Projects Include="GraphC.cbproj">
             <Dependencies/>
         </Projects>
         <Projects Include="fxy\FxyC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="points\PointsC.cbproj">
+        <Projects Include="fxy\FxyD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="heightfield\HeightfieldC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="projection\ProjectionC.cbproj">
-            <Dependencies/>
-        </Projects>
-        <Projects Include="splines\SplinesC.cbproj">
+        <Projects Include="heightfield\HeightFieldD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="GraphD.dproj">
+        <Projects Include="points\PointsC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="fxy\FxyD.dproj">
+        <Projects Include="points\PointsD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="heightfield\HeightFieldD.dproj">
+        <Projects Include="projection\ProjectionC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="points\PointsD.dproj">
+        <Projects Include="projection\ProjectionD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="projection\ProjectionD.dproj">
+        <Projects Include="splines\SplinesC.cbproj">
             <Dependencies/>
         </Projects>
         <Projects Include="splines\SplinesD.dproj">
@@ -47,6 +47,15 @@
             <Default.Personality/>
         </BorlandProject>
     </ProjectExtensions>
+    <Target Name="GraphD">
+        <MSBuild Projects="GraphD.dproj"/>
+    </Target>
+    <Target Name="GraphD:Clean">
+        <MSBuild Projects="GraphD.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="GraphD:Make">
+        <MSBuild Projects="GraphD.dproj" Targets="Make"/>
+    </Target>
     <Target Name="GraphC">
         <MSBuild Projects="GraphC.cbproj"/>
     </Target>
@@ -65,14 +74,14 @@
     <Target Name="FxyC:Make">
         <MSBuild Projects="fxy\FxyC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="PointsC">
-        <MSBuild Projects="points\PointsC.cbproj"/>
+    <Target Name="FxyD">
+        <MSBuild Projects="fxy\FxyD.dproj"/>
     </Target>
-    <Target Name="PointsC:Clean">
-        <MSBuild Projects="points\PointsC.cbproj" Targets="Clean"/>
+    <Target Name="FxyD:Clean">
+        <MSBuild Projects="fxy\FxyD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="PointsC:Make">
-        <MSBuild Projects="points\PointsC.cbproj" Targets="Make"/>
+    <Target Name="FxyD:Make">
+        <MSBuild Projects="fxy\FxyD.dproj" Targets="Make"/>
     </Target>
     <Target Name="HeightfieldC">
         <MSBuild Projects="heightfield\HeightfieldC.cbproj"/>
@@ -83,42 +92,6 @@
     <Target Name="HeightfieldC:Make">
         <MSBuild Projects="heightfield\HeightfieldC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="ProjectionC">
-        <MSBuild Projects="projection\ProjectionC.cbproj"/>
-    </Target>
-    <Target Name="ProjectionC:Clean">
-        <MSBuild Projects="projection\ProjectionC.cbproj" Targets="Clean"/>
-    </Target>
-    <Target Name="ProjectionC:Make">
-        <MSBuild Projects="projection\ProjectionC.cbproj" Targets="Make"/>
-    </Target>
-    <Target Name="SplinesC">
-        <MSBuild Projects="splines\SplinesC.cbproj"/>
-    </Target>
-    <Target Name="SplinesC:Clean">
-        <MSBuild Projects="splines\SplinesC.cbproj" Targets="Clean"/>
-    </Target>
-    <Target Name="SplinesC:Make">
-        <MSBuild Projects="splines\SplinesC.cbproj" Targets="Make"/>
-    </Target>
-    <Target Name="GraphD">
-        <MSBuild Projects="GraphD.dproj"/>
-    </Target>
-    <Target Name="GraphD:Clean">
-        <MSBuild Projects="GraphD.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="GraphD:Make">
-        <MSBuild Projects="GraphD.dproj" Targets="Make"/>
-    </Target>
-    <Target Name="FxyD">
-        <MSBuild Projects="fxy\FxyD.dproj"/>
-    </Target>
-    <Target Name="FxyD:Clean">
-        <MSBuild Projects="fxy\FxyD.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="FxyD:Make">
-        <MSBuild Projects="fxy\FxyD.dproj" Targets="Make"/>
-    </Target>
     <Target Name="HeightFieldD">
         <MSBuild Projects="heightfield\HeightFieldD.dproj"/>
     </Target>
@@ -128,6 +101,15 @@
     <Target Name="HeightFieldD:Make">
         <MSBuild Projects="heightfield\HeightFieldD.dproj" Targets="Make"/>
     </Target>
+    <Target Name="PointsC">
+        <MSBuild Projects="points\PointsC.cbproj"/>
+    </Target>
+    <Target Name="PointsC:Clean">
+        <MSBuild Projects="points\PointsC.cbproj" Targets="Clean"/>
+    </Target>
+    <Target Name="PointsC:Make">
+        <MSBuild Projects="points\PointsC.cbproj" Targets="Make"/>
+    </Target>
     <Target Name="PointsD">
         <MSBuild Projects="points\PointsD.dproj"/>
     </Target>
@@ -137,6 +119,15 @@
     <Target Name="PointsD:Make">
         <MSBuild Projects="points\PointsD.dproj" Targets="Make"/>
     </Target>
+    <Target Name="ProjectionC">
+        <MSBuild Projects="projection\ProjectionC.cbproj"/>
+    </Target>
+    <Target Name="ProjectionC:Clean">
+        <MSBuild Projects="projection\ProjectionC.cbproj" Targets="Clean"/>
+    </Target>
+    <Target Name="ProjectionC:Make">
+        <MSBuild Projects="projection\ProjectionC.cbproj" Targets="Make"/>
+    </Target>
     <Target Name="ProjectionD">
         <MSBuild Projects="projection\ProjectionD.dproj"/>
     </Target>
@@ -146,6 +137,15 @@
     <Target Name="ProjectionD:Make">
         <MSBuild Projects="projection\ProjectionD.dproj" Targets="Make"/>
     </Target>
+    <Target Name="SplinesC">
+        <MSBuild Projects="splines\SplinesC.cbproj"/>
+    </Target>
+    <Target Name="SplinesC:Clean">
+        <MSBuild Projects="splines\SplinesC.cbproj" Targets="Clean"/>
+    </Target>
+    <Target Name="SplinesC:Make">
+        <MSBuild Projects="splines\SplinesC.cbproj" Targets="Make"/>
+    </Target>
     <Target Name="SplinesD">
         <MSBuild Projects="splines\SplinesD.dproj"/>
     </Target>
@@ -156,13 +156,13 @@
         <MSBuild Projects="splines\SplinesD.dproj" Targets="Make"/>
     </Target>
     <Target Name="Build">
-        <CallTarget Targets="GraphC;FxyC;PointsC;HeightfieldC;ProjectionC;SplinesC;GraphD;FxyD;HeightFieldD;PointsD;ProjectionD;SplinesD"/>
+        <CallTarget Targets="GraphD;GraphC;FxyC;FxyD;HeightfieldC;HeightFieldD;PointsC;PointsD;ProjectionC;ProjectionD;SplinesC;SplinesD"/>
     </Target>
     <Target Name="Clean">
-        <CallTarget Targets="GraphC:Clean;FxyC:Clean;PointsC:Clean;HeightfieldC:Clean;ProjectionC:Clean;SplinesC:Clean;GraphD:Clean;FxyD:Clean;HeightFieldD:Clean;PointsD:Clean;ProjectionD:Clean;SplinesD:Clean"/>
+        <CallTarget Targets="GraphD:Clean;GraphC:Clean;FxyC:Clean;FxyD:Clean;HeightfieldC:Clean;HeightFieldD:Clean;PointsC:Clean;PointsD:Clean;ProjectionC:Clean;ProjectionD:Clean;SplinesC:Clean;SplinesD:Clean"/>
     </Target>
     <Target Name="Make">
-        <CallTarget Targets="GraphC:Make;FxyC:Make;PointsC:Make;HeightfieldC:Make;ProjectionC:Make;SplinesC:Make;GraphD:Make;FxyD:Make;HeightFieldD:Make;PointsD:Make;ProjectionD:Make;SplinesD:Make"/>
+        <CallTarget Targets="GraphD:Make;GraphC:Make;FxyC:Make;FxyD:Make;HeightfieldC:Make;HeightFieldD:Make;PointsC:Make;PointsD:Make;ProjectionC:Make;ProjectionD:Make;SplinesC:Make;SplinesD:Make"/>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 1 - 0
Examples/Demos/graph/splines/fSplinesC.dfm

@@ -51,6 +51,7 @@ object FormSplines: TFormSplines
         end>
       NodesAspect = lnaCube
       NodeSize = 0.500000000000000000
+      SplineMode = lsmBezierSpline
       Options = [loUseNodeColorForLines]
     end
     object GLCamera1: TGLCamera

BIN
Installation.pdf


+ 8 - 22
Source/GLS.Utils.pas

@@ -38,8 +38,6 @@ var
   IsDesignTime: Boolean = False;
   vProjectTargetName: TProjectTargetNameFunc;
 
-// Sets a current dir to asset
-procedure SetCurrentDirToAsset();
 // Get a current path to asset
 function GetCurrentAssetPath(): TFileName;
 
@@ -639,29 +637,17 @@ begin
   end;
 end;
 
-procedure SetCurrentDirToAsset();
-var
-  path: TFileName;
-  p: Integer;
-begin
-  path := LowerCase(ExtractFilePath(ParamStr(0)));
-  p := Pos('glscene', path);
-  Delete(path, p + 7, Length(path));
-  path := IncludeTrailingPathDelimiter(path) + 'assets';
-  SetCurrentDir(path);
-end;
-
 function GetCurrentAssetPath(): TFileName;
 var
-  path: TFileName;
-  p: Integer;
+  Path: TFileName;
+  N: Integer;
 begin
-  path := LowerCase(ExtractFilePath(ParamStr(0)));
-  p := Pos('glscene', path);
-  Delete(path, p + 7, Length(path));
-  path := IncludeTrailingPathDelimiter(path) + 'assets';
-  SetCurrentDir(path);
-  Result := path;
+  Path := LowerCase(ExtractFilePath(ParamStr(0)));
+  N := Pos('examples', Path); // if 'glscene' dirname then N + 7
+  Delete(Path, N, Length(path));
+  Path := IncludeTrailingPathDelimiter(Path) + 'assets';
+  SetCurrentDir(Path);
+  Result := Path;
 end;
 
 procedure RaiseLastOSError;