瀏覽代碼

Added treeview for graph demos

[email protected] 2 年之前
父節點
當前提交
9278fc8bc1
共有 100 個文件被更改,包括 7747 次插入1256 次删除
  1. 176 0
      Assets/Shader/CloudTen.fp
  2. 0 0
      Assets/Texture/EarthTex.jpg
  3. 2 1
      Examples/AdvDemos/Archipelago/Readme.txt
  4. 1055 0
      Examples/Demos/bench/BenchC.cbproj
  5. 35 0
      Examples/Demos/bench/BenchC.cpp
  6. 14 0
      Examples/Demos/bench/BenchD.dpr
  7. 967 0
      Examples/Demos/bench/BenchD.dproj
  8. 27 3
      Examples/Demos/bench/bench.groupproj
  9. 1 0
      Examples/Demos/bench/canvas/fCanvasD.dfm
  10. 18 1
      Examples/Demos/bench/canvas/fCanvasD.pas
  11. 16 0
      Examples/Demos/bench/fBenchC.cpp
  12. 14 0
      Examples/Demos/bench/fBenchC.dfm
  13. 21 0
      Examples/Demos/bench/fBenchC.h
  14. 14 0
      Examples/Demos/bench/fBenchD.dfm
  15. 31 0
      Examples/Demos/bench/fBenchD.pas
  16. 62 119
      Examples/Demos/extrusion/pawn/fPawnD.dfm
  17. 36 34
      Examples/Demos/extrusion/pawn/fPawnD.pas
  18. 56 55
      Examples/Demos/extrusion/tentacles/fTentacleC.cpp
  19. 14 20
      Examples/Demos/extrusion/tentacles/fTentacleC.dfm
  20. 1 0
      Examples/Demos/extrusion/tentacles/fTentaclesD.dfm
  21. 11 14
      Examples/Demos/extrusion/tentacles/fTentaclesD.pas
  22. 5 3
      Examples/Demos/glslshaders/BumpShader/fBumpShaderC.cpp
  23. 19 9
      Examples/Demos/glslshaders/BumpShader/fBumpShaderD.dfm
  24. 4 2
      Examples/Demos/glslshaders/BumpShader/fBumpShaderD.pas
  25. 1092 0
      Examples/Demos/graph/GraphC.cbproj
  26. 40 0
      Examples/Demos/graph/GraphC.cpp
  27. 19 0
      Examples/Demos/graph/GraphD.dpr
  28. 986 0
      Examples/Demos/graph/GraphD.dproj
  29. 114 0
      Examples/Demos/graph/fGraphC.cpp
  30. 86 0
      Examples/Demos/graph/fGraphC.dfm
  31. 37 0
      Examples/Demos/graph/fGraphC.h
  32. 84 0
      Examples/Demos/graph/fGraphD.dfm
  33. 134 0
      Examples/Demos/graph/fGraphD.pas
  34. 1 1
      Examples/Demos/graph/fxy/FxyC.cbproj
  35. 2 2
      Examples/Demos/graph/fxy/FxyC.cpp
  36. 16 16
      Examples/Demos/graph/fxy/fFxyC.cpp
  37. 4 6
      Examples/Demos/graph/fxy/fFxyC.dfm
  38. 3 3
      Examples/Demos/graph/fxy/fFxyC.h
  39. 12 7
      Examples/Demos/graph/fxy/fFxyD.dfm
  40. 2 1
      Examples/Demos/graph/fxy/fFxyD.pas
  41. 74 50
      Examples/Demos/graph/graph.groupproj
  42. 9 5
      Examples/Demos/graph/heightfield/HeightfieldC.cbproj
  43. 2 2
      Examples/Demos/graph/heightfield/HeightfieldC.cpp
  44. 109 95
      Examples/Demos/graph/heightfield/fHeightfieldC.cpp
  45. 14 13
      Examples/Demos/graph/heightfield/fHeightfieldC.dfm
  46. 6 6
      Examples/Demos/graph/heightfield/fHeightfieldC.h
  47. 15 3
      Examples/Demos/graph/points/PointsC.cbproj
  48. 2 2
      Examples/Demos/graph/points/PointsC.cpp
  49. 11 11
      Examples/Demos/graph/points/fPointsC.cpp
  50. 1 4
      Examples/Demos/graph/points/fPointsC.dfm
  51. 3 3
      Examples/Demos/graph/points/fPointsC.h
  52. 15 3
      Examples/Demos/graph/projection/ProjectionC.cbproj
  53. 2 2
      Examples/Demos/graph/projection/ProjectionC.cpp
  54. 7 7
      Examples/Demos/graph/projection/fProjectionC.cpp
  55. 1 1
      Examples/Demos/graph/projection/fProjectionC.dfm
  56. 3 3
      Examples/Demos/graph/projection/fProjectionC.h
  57. 1 1
      Examples/Demos/graph/splines/SplinesC.cbproj
  58. 2 2
      Examples/Demos/graph/splines/SplinesC.cpp
  59. 2 2
      Examples/Demos/graph/splines/SplinesD.dpr
  60. 1 1
      Examples/Demos/graph/splines/SplinesD.dproj
  61. 6 6
      Examples/Demos/graph/splines/fSplinesC.cpp
  62. 1 1
      Examples/Demos/graph/splines/fSplinesC.dfm
  63. 3 3
      Examples/Demos/graph/splines/fSplinesC.h
  64. 11 13
      Examples/Demos/graph/splines/fSplinesD.dfm
  65. 5 5
      Examples/Demos/graph/splines/fSplinesD.pas
  66. 10 6
      Examples/Demos/materials/MaterialScript/fMatScriptC.cpp
  67. 25 7
      Examples/Demos/materials/MaterialScript/fMatScriptC.dfm
  68. 7 4
      Examples/Demos/materials/MaterialScript/fMatScriptC.h
  69. 2 0
      Examples/Demos/materials/MaterialScript/fMatScriptD.dfm
  70. 7 5
      Examples/Demos/materials/MaterialScript/fMatScriptD.pas
  71. 98 86
      Examples/Demos/materials/materials.groupproj
  72. 59 0
      Examples/Demos/materials/mirror/MirrorD.deployproj
  73. 8 8
      Examples/Demos/materials/mirror/MirrorD.dpr
  74. 41 4
      Examples/Demos/materials/mirror/MirrorD.dproj
  75. 1 0
      Examples/Demos/materials/proceduralclouds/fProcCloudsC.cpp
  76. 1 0
      Examples/Demos/materials/proceduralclouds/fProcCloudsC.dfm
  77. 2 1
      Examples/Demos/materials/proceduralclouds/fProcCloudsD.dfm
  78. 17 2
      Examples/Demos/materials/proceduralclouds/fProcCloudsD.pas
  79. 1046 0
      Examples/Demos/materials/texcombine/TexCombineC.cbproj
  80. 35 0
      Examples/Demos/materials/texcombine/TexCombineC.cpp
  81. 88 0
      Examples/Demos/materials/texcombine/fTexCombineC.cpp
  82. 291 0
      Examples/Demos/materials/texcombine/fTexCombineC.dfm
  83. 65 0
      Examples/Demos/materials/texcombine/fTexCombineC.h
  84. 97 176
      Examples/Demos/materials/texcombine/fTexCombineD.dfm
  85. 9 11
      Examples/Demos/materials/texcombine/fTexCombineD.pas
  86. 1 1
      Examples/Demos/materials/texformat/TexFormatC.cbproj
  87. 2 2
      Examples/Demos/materials/texformat/TexFormatC.cpp
  88. 80 67
      Examples/Demos/materials/texformat/fTexFormatC.cpp
  89. 68 132
      Examples/Demos/materials/texformat/fTexFormatC.dfm
  90. 4 3
      Examples/Demos/materials/texformat/fTexFormatC.h
  91. 66 131
      Examples/Demos/materials/texformat/fTexFormatD.dfm
  92. 3 4
      Examples/Demos/materials/texformat/fTexFormatD.pas
  93. 12 10
      Examples/Demos/materials/transparency/fTransparancyC.dfm
  94. 3 5
      Examples/Demos/movements/SmoothNavigator/SmoothNaviD.dpr
  95. 2 2
      Examples/Demos/utilities/HTFUtils/HTFPackD.dpr
  96. 6 6
      Examples/Demos/utilities/HTFUtils/HTFPackD.dproj
  97. 0 0
      Examples/Demos/utilities/HTFUtils/fHTFpackD.dfm
  98. 1 1
      Examples/Demos/utilities/HTFUtils/fHTFpackD.pas
  99. 19 18
      Examples/Demos/utilities/HTFUtils/fViewerD.dfm
  100. 34 23
      Examples/Demos/utilities/HTFUtils/fViewerD.pas

+ 176 - 0
Assets/Shader/CloudTen.fp

@@ -0,0 +1,176 @@
+//Cloud Ten
+//by nimitz 2015 (twitter: @stormoid)
+//License Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License
+// Contact the author for other licensing options
+// https://www.shadertoy.com/view/XtS3DD
+
+#define time iTime
+mat2 mm2(in float a){float c = cos(a), s = sin(a);return mat2(c,s,-s,c);}
+float noise(float t){return textureLod(iChannel0,vec2(t,.0)/iChannelResolution[0].xy,0.0).x;}
+float moy = 0.;
+
+float noise(in vec3 p)
+{
+    vec3 ip = floor(p);
+    vec3 fp = fract(p);
+	fp = fp*fp*(3.0-2.0*fp);
+	vec2 tap = (ip.xy+vec2(37.0,17.0)*ip.z) + fp.xy;
+	vec2 rz = textureLod( iChannel0, (tap+0.5)/256.0, 0.0 ).yx;
+	return mix( rz.x, rz.y, fp.z );
+}
+
+float fbm(in vec3 x)
+{
+    float rz = 0.;
+    float a = .35;
+    for (int i = 0; i<2; i++)
+    {
+        rz += noise(x)*a;
+        a*=.35;
+        x*= 4.;
+    }
+    return rz;
+}
+
+float path(in float x){ return sin(x*0.01-3.1415)*28.+6.5; }
+float map(vec3 p){
+    return p.y*0.07 + (fbm(p*0.3)-0.1) + sin(p.x*0.24 + sin(p.z*.01)*7.)*0.22+0.15 + sin(p.z*0.08)*0.05;
+}
+
+float march(in vec3 ro, in vec3 rd)
+{
+    float precis = .3;
+    float h= 1.;
+    float d = 0.;
+    for( int i=0; i<17; i++ )
+    {
+        if( abs(h)<precis || d>70. ) break;
+        d += h;
+        vec3 pos = ro+rd*d;
+        pos.y += .5;
+	    float res = map(pos)*7.;
+        h = res;
+    }
+	return d;
+}
+
+vec3 lgt = vec3(0);
+float mapV( vec3 p ){ return clamp(-map(p), 0., 1.);}
+vec4 marchV(in vec3 ro, in vec3 rd, in float t, in vec3 bgc)
+{
+	vec4 rz = vec4( 0.0 );
+	
+	for( int i=0; i<150; i++ )
+	{
+		if(rz.a > 0.99 || t > 200.) break;
+		
+		vec3 pos = ro + t*rd;
+        float den = mapV(pos);
+        
+        vec4 col = vec4(mix( vec3(.8,.75,.85), vec3(.0), den ),den);
+        col.xyz *= mix(bgc*bgc*2.5,  mix(vec3(0.1,0.2,0.55),vec3(.8,.85,.9),moy*0.4), clamp( -(den*40.+0.)*pos.y*.03-moy*0.5, 0., 1. ) );
+        col.rgb += clamp((1.-den*6.) + pos.y*0.13 +.55, 0., 1.)*0.35*mix(bgc,vec3(1),0.7); //Fringes
+        col += clamp(den*pos.y*.15, -.02, .0); //Depth occlusion
+        col *= smoothstep(0.2+moy*0.05,.0,mapV(pos+1.*lgt))*.85+0.15; //Shadows
+        
+		col.a *= .95;
+		col.rgb *= col.a;
+		rz = rz + col*(1.0 - rz.a);
+
+        t += max(.3,(2.-den*30.)*t*0.011);
+	}
+
+	return clamp(rz, 0., 1.);
+}
+
+float pent(in vec2 p){    
+    vec2 q = abs(p);
+    return max(max(q.x*1.176-p.y*0.385, q.x*0.727+p.y), -p.y*1.237)*1.;
+}
+
+vec3 lensFlare(vec2 p, vec2 pos)
+{
+	vec2 q = p-pos;
+    float dq = dot(q, q);
+    vec2 dist = p*(length(p))*0.75;
+	float ang = atan(q.x,q.y);
+    vec2 pp = mix(p, dist, 0.5);
+    float sz = 0.01;
+    float rz = pow(abs(fract(ang*.8+.12)-0.5),3.)*(noise(ang*15.))*0.5;
+    rz *= smoothstep(1.0, 0.0, dot(q,q));
+    rz *= smoothstep(0.0, 0.01, dot(q,q));
+    rz += max(1.0/(1.0 + 30.0*pent(dist + 0.8*pos)),.0)*0.17;
+	rz += clamp(sz-pow(pent(pp + 0.15*pos),1.55),.0, 1.)*5.0;
+	rz += clamp(sz-pow(pent(pp + 0.1*pos),2.4),.0, 1.)*4.0;
+	rz += clamp(sz-pow(pent(pp - 0.05*pos),1.2),.0, 1.)*4.0;
+    rz += clamp(sz-pow(pent((pp + .5*pos)),1.7),.0, 1.)*4.0;
+    rz += clamp(sz-pow(pent((pp + .3*pos)),1.9),.0, 1.)*3.0;
+    rz += clamp(sz-pow(pent((pp - .2*pos)),1.3),.0, 1.)*4.0;
+    return vec3(clamp(rz,0.,1.));
+}
+
+mat3 rot_x(float a){float sa = sin(a); float ca = cos(a); return mat3(1.,.0,.0,    .0,ca,sa,   .0,-sa,ca);}
+mat3 rot_y(float a){float sa = sin(a); float ca = cos(a); return mat3(ca,.0,sa,    .0,1.,.0,   -sa,.0,ca);}
+mat3 rot_z(float a){float sa = sin(a); float ca = cos(a); return mat3(ca,sa,.0,    -sa,ca,.0,  .0,.0,1.);}
+
+void mainImage( out vec4 fragColor, in vec2 fragCoord )
+{	
+    vec2 q = fragCoord.xy / iResolution.xy;
+    vec2 p = q - 0.5;
+	float asp =iResolution.x/iResolution.y;
+    p.x *= asp;
+	vec2 mo = iMouse.xy / iResolution.xy;
+	moy = mo.y;
+    float st = sin(time*0.3-1.3)*0.2;
+    vec3 ro = vec3(0.,-2.+sin(time*.3-1.)*2.,time*30.);
+    ro.x = path(ro.z);
+    vec3 ta = ro + vec3(0,0,1);
+    vec3 fw = normalize( ta - ro);
+    vec3 uu = normalize(cross( vec3(0.0,1.0,0.0), fw ));
+    vec3 vv = normalize(cross(fw,uu));
+    const float zoom = 1.;
+    vec3 rd = normalize( p.x*uu + p.y*vv + -zoom*fw );
+    
+    float rox = sin(time*0.2)*0.6+2.9;
+    rox += smoothstep(0.6,1.2,sin(time*0.25))*3.5;
+   	float roy = sin(time*0.5)*0.2;
+    mat3 rotation = rot_x(-roy)*rot_y(-rox+st*1.5)*rot_z(st);
+	mat3 inv_rotation = rot_z(-st)*rot_y(rox-st*1.5)*rot_x(roy);
+    rd *= rotation;
+    rd.y -= dot(p,p)*0.06;
+    rd = normalize(rd);
+    
+    vec3 col = vec3(0.);
+    lgt = normalize(vec3(-0.3,mo.y+0.1,1.));  
+    float rdl = clamp(dot(rd, lgt),0.,1.);
+  
+    vec3 hor = mix( vec3(.9,.6,.7)*0.35, vec3(.5,0.05,0.05), rdl );
+    hor = mix(hor, vec3(.5,.8,1),mo.y);
+    col += mix( vec3(.2,.2,.6), hor, exp2(-(1.+ 3.*(1.-rdl))*max(abs(rd.y),0.)) )*.6;
+    col += .8*vec3(1.,.9,.9)*exp2(rdl*650.-650.);
+    col += .3*vec3(1.,1.,0.1)*exp2(rdl*100.-100.);
+    col += .5*vec3(1.,.7,0.)*exp2(rdl*50.-50.);
+    col += .4*vec3(1.,0.,0.05)*exp2(rdl*10.-10.);  
+    vec3 bgc = col;
+    
+    float rz = march(ro,rd);
+    
+    if (rz < 70.)
+    {   
+        vec4 res = marchV(ro, rd, rz-5., bgc);
+    	col = col*(1.0-res.w) + res.xyz;
+    }
+    
+    vec3 proj = (-lgt*inv_rotation);
+    col += 1.4*vec3(0.7,0.7,0.4)*clamp(lensFlare(p,-proj.xy/proj.z*zoom)*proj.z,0., 1.);
+    
+    float g = smoothstep(0.03,.97,mo.x);
+    col = mix(mix(col,col.brg*vec3(1,0.75,1),clamp(g*2.,0.0,1.0)), col.bgr, clamp((g-0.5)*2.,0.0,1.));
+    
+	col = clamp(col, 0., 1.);
+    col = col*0.5 + 0.5*col*col*(3.0-2.0*col); //saturation
+    col = pow(col, vec3(0.416667))*1.055 - 0.055; //sRGB
+	col *= pow( 16.0*q.x*q.y*(1.0-q.x)*(1.0-q.y), 0.12 ); //Vign
+
+	fragColor = vec4( col, 1.0 );
+}

+ 0 - 0
Assets/Texture/Earth.jpg → Assets/Texture/EarthTex.jpg


+ 2 - 1
Examples/AdvDemos/Archipelago/Readme.txt

@@ -1,4 +1,5 @@
-Archipelago GLScene demo v2.2 (http://glscene.org)
+Archipelago demo v2.3 
+https://github.com/glscene/GLScene/tree/master/Examples/AdvDemos/Archipelago
 
 >>>>>> BEFORE starting the demo: <<<<<<
 

+ 1055 - 0
Examples/Demos/bench/BenchC.cbproj

@@ -0,0 +1,1055 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{A1659D39-7054-4893-9EA5-5698283820C4}</ProjectGuid>
+        <ProjectVersion>19.4</ProjectVersion>
+        <FrameworkType>VCL</FrameworkType>
+        <AppType>Application</AppType>
+        <MainSource>BenchC.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>
+        <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</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>
+        <SanitizedProjectName>BenchC</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</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="BenchC.cpp">
+            <BuildOrder>0</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="fBenchC.cpp">
+            <Form>FormBenchC</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>fBenchC.h</DependentOn>
+            <BuildOrder>2</BuildOrder>
+        </CppCompile>
+        <FormResources Include="fBenchC.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">BenchC.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\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">
+                    <Platform Name="Win32">
+                        <RemoteName>BenchC.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>

+ 35 - 0
Examples/Demos/bench/BenchC.cpp

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

+ 14 - 0
Examples/Demos/bench/BenchD.dpr

@@ -0,0 +1,14 @@
+program BenchD;
+
+uses
+  Vcl.Forms,
+  fBenchD in 'fBenchD.pas' {FormBenchD};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.MainFormOnTaskbar := True;
+  Application.CreateForm(TFormBenchD, FormBenchD);
+  Application.Run;
+end.

+ 967 - 0
Examples/Demos/bench/BenchD.dproj

@@ -0,0 +1,967 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{ADCDE751-2C93-4D66-A04E-189531A0BCD1}</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>BenchD.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_ExeOutput>.\$(Platform)\$(Config)</DCC_ExeOutput>
+        <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>BenchD</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="fBenchD.pas">
+            <Form>FormBenchD</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">BenchD.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="Win32\Debug\BenchD.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>BenchD.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>

+ 27 - 3
Examples/Demos/bench/bench.groupproj

@@ -3,6 +3,12 @@
         <ProjectGuid>{503B7578-1619-4BE5-ABDF-7CA291825FFD}</ProjectGuid>
     </PropertyGroup>
     <ItemGroup>
+        <Projects Include="BenchC.cbproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="BenchD.dproj">
+            <Dependencies/>
+        </Projects>
         <Projects Include="canvas\CanvasD.dproj">
             <Dependencies/>
         </Projects>
@@ -47,6 +53,24 @@
             <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>
+    <Target Name="BenchD:Clean">
+        <MSBuild Projects="BenchD.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="BenchD:Make">
+        <MSBuild Projects="BenchD.dproj" Targets="Make"/>
+    </Target>
     <Target Name="CanvasD">
         <MSBuild Projects="canvas\CanvasD.dproj"/>
     </Target>
@@ -156,13 +180,13 @@
         <MSBuild Projects="whirlwind\WhirlwindC.cbproj" Targets="Make"/>
     </Target>
     <Target Name="Build">
-        <CallTarget Targets="CanvasD;CanvasC;MegacubeD;MegaCubeC;MegaglasscubeD;MegaGlassCubeC;SmokingD;SmokingC;VolcanoD;VolcanoC;WhirlwindD;WhirlwindC"/>
+        <CallTarget Targets="BenchC;BenchD;CanvasD;CanvasC;MegacubeD;MegaCubeC;MegaglasscubeD;MegaGlassCubeC;SmokingD;SmokingC;VolcanoD;VolcanoC;WhirlwindD;WhirlwindC"/>
     </Target>
     <Target Name="Clean">
-        <CallTarget Targets="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="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"/>
     </Target>
     <Target Name="Make">
-        <CallTarget Targets="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="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"/>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 1 - 0
Examples/Demos/bench/canvas/fCanvasD.dfm

@@ -11,6 +11,7 @@ object FormCanvas: TFormCanvas
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
+  Position = poScreenCenter
   TextHeight = 13
   object PaintBox: TPaintBox
     Left = 272

+ 18 - 1
Examples/Demos/bench/canvas/fCanvasD.pas

@@ -55,7 +55,6 @@ type
       var rci: TGLRenderContextInfo);
     procedure BUArcClick(Sender: TObject);
   private
-
     procedure PaintTheBox;
     procedure Bench;
   public
@@ -84,6 +83,8 @@ const
   cNbTextOuts = 20000;
   cNbArcs = 20000;
 
+//-----------------------------------------------------------------
+
 procedure TFormCanvas.BULinesClick(Sender: TObject);
 begin
   vWhat := wLines;
@@ -91,17 +92,23 @@ begin
 end;
 
 
+//-----------------------------------------------------------------
+
 procedure TFormCanvas.BUEllipsesClick(Sender: TObject);
 begin
   vWhat := wEllipses;
   Bench;
 end;
+
+//-----------------------------------------------------------------
+
 procedure TFormCanvas.BUArcClick(Sender: TObject);
 begin
   vWhat := wArcs;
   Bench;
 end;
 
+//-----------------------------------------------------------------
 
 procedure TFormCanvas.BURectsClick(Sender: TObject);
 begin
@@ -109,18 +116,24 @@ begin
   Bench;
 end;
 
+//-----------------------------------------------------------------
+
 procedure TFormCanvas.BUPointsClick(Sender: TObject);
 begin
   vWhat := wPoints;
   Bench;
 end;
 
+//-----------------------------------------------------------------
+
 procedure TFormCanvas.BUTextOutClick(Sender: TObject);
 begin
   vWhat := wTextOut;
   Bench;
 end;
 
+//-----------------------------------------------------------------
+
 procedure TFormCanvas.Bench;
 var
   t: Int64;
@@ -146,6 +159,8 @@ begin
   lbGDI.Caption := Format('GDI: %.1f msec', [StopPrecisionTimer(t) * 1000]);
 end;
 
+//-----------------------------------------------------------------
+
 procedure TFormCanvas.GLDirectOpenGL1Render(Sender: TObject;
   var rci: TGLRenderContextInfo);
 var
@@ -210,6 +225,8 @@ begin
   GLCanvas.Free;
 end;
 
+//-----------------------------------------------------------------
+
 procedure TFormCanvas.PaintTheBox;
 var
   i, x, y: Integer;

+ 16 - 0
Examples/Demos/bench/fBenchC.cpp

@@ -0,0 +1,16 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "fBenchC.h"
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TFormBenchC *FormBenchC;
+//---------------------------------------------------------------------------
+__fastcall TFormBenchC::TFormBenchC(TComponent* Owner)
+	: TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------

+ 14 - 0
Examples/Demos/bench/fBenchC.dfm

@@ -0,0 +1,14 @@
+object FormBenchC: TFormBenchC
+  Left = 0
+  Top = 0
+  Caption = 'Bench C'
+  ClientHeight = 433
+  ClientWidth = 622
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -12
+  Font.Name = 'Segoe UI'
+  Font.Style = []
+  TextHeight = 15
+end

+ 21 - 0
Examples/Demos/bench/fBenchC.h

@@ -0,0 +1,21 @@
+//---------------------------------------------------------------------------
+
+#ifndef fBenchCH
+#define fBenchCH
+//---------------------------------------------------------------------------
+#include <System.Classes.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.Forms.hpp>
+//---------------------------------------------------------------------------
+class TFormBenchC : public TForm
+{
+__published:	// IDE-managed Components
+private:	// User declarations
+public:		// User declarations
+	__fastcall TFormBenchC(TComponent* Owner);
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TFormBenchC *FormBenchC;
+//---------------------------------------------------------------------------
+#endif

+ 14 - 0
Examples/Demos/bench/fBenchD.dfm

@@ -0,0 +1,14 @@
+object FormBenchD: TFormBenchD
+  Left = 0
+  Top = 0
+  Caption = 'Bench D'
+  ClientHeight = 433
+  ClientWidth = 622
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -12
+  Font.Name = 'Segoe UI'
+  Font.Style = []
+  TextHeight = 15
+end

+ 31 - 0
Examples/Demos/bench/fBenchD.pas

@@ -0,0 +1,31 @@
+unit fBenchD;
+
+interface
+
+uses
+  Winapi.Windows,
+  Winapi.Messages,
+  System.SysUtils,
+  System.Variants,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs;
+
+type
+  TFormBenchD = class(TForm)
+  private
+    { Private declarations }
+  public
+    { Public declarations }
+  end;
+
+var
+  FormBenchD: TFormBenchD;
+
+implementation
+
+{$R *.dfm}
+
+end.

+ 62 - 119
Examples/Demos/extrusion/pawn/fPawnD.dfm

@@ -3,30 +3,25 @@ object FormPawn: TFormPawn
   Top = 89
   BorderWidth = 3
   Caption = 'Pawn'
-  ClientHeight = 474
-  ClientWidth = 638
+  ClientHeight = 379
+  ClientWidth = 510
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   Position = poScreenCenter
   OnCreate = FormCreate
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 476
-    Height = 474
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 381
+    Height = 379
     Camera = GLCamera1
     Buffer.BackgroundColor = clBackground
-    FieldOfView = 156.173950195312500000
+    FieldOfView = 150.438476562500000000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
@@ -34,86 +29,58 @@ object FormPawn: TFormPawn
     TabOrder = 0
   end
   object Panel1: TPanel
-    Left = 476
+    Left = 381
     Top = 0
-    Width = 162
-    Height = 474
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 129
+    Height = 379
     Align = alRight
     TabOrder = 1
     object Label1: TLabel
-      Left = 29
-      Top = 10
-      Width = 75
-      Height = 24
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 23
+      Top = 8
+      Width = 59
+      Height = 18
       Caption = 'Options'
       Font.Charset = ANSI_CHARSET
       Font.Color = clWindowText
-      Font.Height = -20
+      Font.Height = -16
       Font.Name = 'Arial'
       Font.Style = [fsBold, fsItalic]
       ParentFont = False
     end
     object Label3: TLabel
-      Left = 48
-      Top = 186
-      Width = 37
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 38
+      Top = 149
+      Width = 28
+      Height = 13
       Caption = 'Slices'
     end
     object Label4: TLabel
-      Left = 50
-      Top = 256
-      Width = 55
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 40
+      Top = 205
+      Width = 42
+      Height = 13
       Caption = 'Divisions'
     end
     object Label2: TLabel
-      Left = 55
-      Top = 309
-      Width = 28
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 44
+      Top = 247
+      Width = 22
+      Height = 13
       Caption = 'Stop'
     end
     object LabelTri: TLabel
-      Left = 20
-      Top = 390
-      Width = 57
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 312
+      Width = 43
+      Height = 13
       Caption = 'Triangles'
     end
     object CheckBox1: TCheckBox
-      Left = 11
-      Top = 61
-      Width = 142
-      Height = 22
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 9
+      Top = 49
+      Width = 113
+      Height = 17
       Caption = 'Spline interpolation'
       Checked = True
       State = cbChecked
@@ -121,14 +88,10 @@ object FormPawn: TFormPawn
       OnClick = CheckBox1Click
     end
     object CheckBox2: TCheckBox
-      Left = 11
-      Top = 90
-      Width = 142
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 9
+      Top = 72
+      Width = 113
+      Height = 17
       Caption = 'Normals smoothing'
       Checked = True
       State = cbChecked
@@ -136,14 +99,10 @@ object FormPawn: TFormPawn
       OnClick = CheckBox2Click
     end
     object CheckBox3: TCheckBox
-      Left = 11
-      Top = 121
-      Width = 142
-      Height = 22
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 9
+      Top = 97
+      Width = 113
+      Height = 17
       Caption = 'Texture map'
       Checked = True
       State = cbChecked
@@ -151,14 +110,10 @@ object FormPawn: TFormPawn
       OnClick = CheckBox3Click
     end
     object CheckBox4: TCheckBox
-      Left = 11
-      Top = 150
-      Width = 142
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 9
+      Top = 120
+      Width = 113
+      Height = 17
       Caption = 'Modulate texture'
       Checked = True
       State = cbChecked
@@ -166,54 +121,42 @@ object FormPawn: TFormPawn
       OnClick = CheckBox4Click
     end
     object TrackBar2: TTrackBar
-      Left = 11
-      Top = 210
-      Width = 142
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 9
+      Top = 168
+      Width = 113
+      Height = 17
       Max = 64
       Min = 4
       Frequency = 16
       Position = 24
       TabOrder = 4
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar2Change
     end
     object TrackBar3: TTrackBar
-      Left = 11
-      Top = 280
-      Width = 142
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 9
+      Top = 224
+      Width = 113
+      Height = 17
       Max = 30
       Min = 1
       Frequency = 10
       Position = 10
       TabOrder = 5
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar3Change
     end
     object TrackBar1: TTrackBar
-      Left = 11
-      Top = 333
-      Width = 142
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 9
+      Top = 266
+      Width = 113
+      Height = 17
       Max = 360
       Min = 30
       Frequency = 45
       Position = 360
       TabOrder = 6
-      ThumbLength = 13
+      ThumbLength = 10
       OnChange = TrackBar1Change
     end
   end

+ 36 - 34
Examples/Demos/extrusion/pawn/fPawnD.pas

@@ -15,7 +15,6 @@ uses
   Vcl.ExtCtrls,
   Vcl.Imaging.JPeg,
 
-  
   GLS.Scene,
   GLS.Objects,
   GLS.Texture,
@@ -47,10 +46,9 @@ type
     Label2: TLabel;
     TrackBar1: TTrackBar;
     LabelTri: TLabel;
-    procedure GLSceneViewer1MouseDown(Sender: TObject;
-      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState;
+    procedure GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
       X, Y: Integer);
+    procedure GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure FormCreate(Sender: TObject);
     procedure CheckBox1Click(Sender: TObject);
     procedure CheckBox2Click(Sender: TObject);
@@ -61,10 +59,9 @@ type
     procedure TrackBar2Change(Sender: TObject);
     procedure TrackBar3Change(Sender: TObject);
   private
-     
+    PathToData: TFileName;
   public
-     
-    mx, my : Integer;
+    mx, my: Integer;
   end;
 
 var
@@ -76,72 +73,77 @@ implementation
 
 procedure TFormPawn.FormCreate(Sender: TObject);
 begin
-  var Path: TFileName := GetCurrentAssetPath();
-  SetCurrentDir(Path  + '\texture');
+  PathToData := GetCurrentAssetPath();
+  SetCurrentDir(PathToData + '\texture');
   RotationSolid1.Material.Texture.Image.LoadFromFile('ashwood.jpg');
 end;
 
 procedure TFormPawn.CheckBox1Click(Sender: TObject);
 begin
-   if CheckBox1.Checked then
-      RotationSolid1.SplineMode:=lsmCubicSpline
-   else RotationSolid1.SplineMode:=lsmLines;
+  if CheckBox1.Checked then
+    RotationSolid1.SplineMode := lsmCubicSpline
+  else
+    RotationSolid1.SplineMode := lsmLines;
 end;
 
 procedure TFormPawn.CheckBox2Click(Sender: TObject);
 begin
-   if CheckBox2.Checked then
-      RotationSolid1.Normals:=nsSmooth
-   else RotationSolid1.Normals:=nsFlat;
+  if CheckBox2.Checked then
+    RotationSolid1.Normals := nsSmooth
+  else
+    RotationSolid1.Normals := nsFlat;
 end;
 
 procedure TFormPawn.CheckBox3Click(Sender: TObject);
 begin
-   RotationSolid1.Material.Texture.Disabled:=not CheckBox3.Checked;
+  RotationSolid1.Material.Texture.Disabled := not CheckBox3.Checked;
 end;
 
 procedure TFormPawn.CheckBox4Click(Sender: TObject);
 begin
-   if CheckBox4.Checked then
-      RotationSolid1.Material.Texture.TextureMode:=tmModulate
-   else RotationSolid1.Material.Texture.TextureMode:=tmDecal;
+  if CheckBox4.Checked then
+    RotationSolid1.Material.Texture.TextureMode := tmModulate
+  else
+    RotationSolid1.Material.Texture.TextureMode := tmDecal;
 end;
 
 procedure TFormPawn.TrackBar1Change(Sender: TObject);
 begin
-   RotationSolid1.StopAngle:=TrackBar1.Position;
-   if TrackBar1.Position=360 then
-      RotationSolid1.Parts:=RotationSolid1.Parts-[rspStartPolygon, rspStopPolygon]
-   else RotationSolid1.Parts:=RotationSolid1.Parts+[rspStartPolygon, rspStopPolygon];
+  RotationSolid1.StopAngle := TrackBar1.Position;
+  if TrackBar1.Position = 360 then
+    RotationSolid1.Parts := RotationSolid1.Parts - [rspStartPolygon, rspStopPolygon]
+  else
+    RotationSolid1.Parts := RotationSolid1.Parts + [rspStartPolygon, rspStopPolygon];
 end;
 
 procedure TFormPawn.TrackBar2Change(Sender: TObject);
 begin
-   RotationSolid1.Slices:=TrackBar2.Position;
+  RotationSolid1.Slices := TrackBar2.Position;
 end;
 
 procedure TFormPawn.TrackBar3Change(Sender: TObject);
 begin
-   RotationSolid1.Division:=TrackBar3.Position;
+  RotationSolid1.Division := TrackBar3.Position;
 end;
 
 procedure TFormPawn.Timer1Timer(Sender: TObject);
 begin
-   LabelTri.Caption:=Format('%d Triangles', [RotationSolid1.TriangleCount]);
+  LabelTri.Caption := Format('%d Triangles', [RotationSolid1.TriangleCount]);
 end;
 
-procedure TFormPawn.GLSceneViewer1MouseDown(Sender: TObject;
-  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+procedure TFormPawn.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton;
+  Shift: TShiftState; X, Y: Integer);
 begin
-   mx:=x; my:=y;
+  mx := X;
+  my := Y;
 end;
 
-procedure TFormPawn.GLSceneViewer1MouseMove(Sender: TObject;
-  Shift: TShiftState; X, Y: Integer);
+procedure TFormPawn.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 begin
-   if Shift<>[] then
-      GLCamera1.MoveAroundTarget(my-y, mx-x);
-   mx:=x; my:=y;
+  if Shift <> [] then
+    GLCamera1.MoveAroundTarget(my - Y, mx - X);
+  mx := X;
+  my := Y;
 end;
 
 end.

+ 56 - 55
Examples/Demos/extrusion/tentacles/fTentacleC.cpp

@@ -18,75 +18,76 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TForm1* Form1;
 
 // ---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {
-}
+__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {}
 // ---------------------------------------------------------------------------
 const int cNbNodes = 32;
 
-void __fastcall TForm1::FormCreate(TObject *Sender) {
+void __fastcall TForm1::FormCreate(TObject* Sender)
+{
 	int i, k;
-	TGLPipe *pipe;
+    TGLPipe* pipe;
 
-	// prepare the TGLPipe objects (add node, set props...)
-	for (k = 0; k < DCBase->Count - 1; k++) {
-		if (dynamic_cast<TGLPipe*>(DCBase->Children[k])) {
+    // prepare the TGLPipe objects (add node, set props...)
+    for (k = 0; k < DCBase->Count - 1; k++) {
+        if (dynamic_cast<TGLPipe*>(DCBase->Children[k])) {
 			pipe = (TGLPipe*)(DCBase->Children[k]);
-			pipe->Nodes->Clear();
-			for (i = 0; i < cNbNodes - 1; i++)
-				pipe->Nodes->AddNode(0, i / 8, 0);
-			pipe->Radius = 0.1;
-			// enable per-node coloring in the TGLPipe
-			pipe->NodesColorMode = pncmDiffuse;
-			// divisions between nodes (for spline interpolation)
-			pipe->Division = 3;
-			// No geometry compilation/cacheing, render directly
-			// (geometry changes completely from frame to frame)
-			pipe->ObjectStyle = pipe->ObjectStyle << osDirectDraw;
-		}
-	}
+            pipe->Nodes->Clear();
+            for (i = 0; i < cNbNodes - 1; i++)
+                pipe->Nodes->AddNode(0, i / 8, 0);
+            pipe->Radius = 0.1;
+            // enable per-node coloring in the TGLPipe
+            pipe->NodesColorMode = pncmDiffuse;
+            // divisions between nodes (for spline interpolation)
+            pipe->Division = 3;
+            // No geometry compilation/cacheing, render directly
+            // (geometry changes completely from frame to frame)
+            pipe->ObjectStyle = pipe->ObjectStyle << osDirectDraw;
+        }
+    }
 }
 
 // ---------------------------------------------------------------------------
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender,
-	const double deltaTime, const double newTime) {
-	int i, k;
-	float t, t1, t2, r;
-	TGLPipe *pipe;
+void __fastcall TForm1::GLCadencer1Progress(
+    TObject* Sender, const double deltaTime, const double newTime)
+{
+    int i, k;
+    float t, t1, t2, r;
+    TGLPipe* pipe;
 
-	t = newTime;
-	for (k = 0; k < DCBase->Count - 1; k++)
-		if (dynamic_cast<TGLPipe*>(DCBase->Children[k])) {
-			pipe = (TGLPipe*)(DCBase->Children[k]);
-			pipe->Nodes->BeginUpdate();
-			for (i = 0; i < pipe->Nodes->Count - 1; i++) {
-				t1 = -t + i * 0.1 + k * (2 * M_PI) / 5;
-				// GLS.VectorGeometry::c2PI
-				r = (Sin(3 * t + k) + 2) * 0.5 *
-					((2 * i + pipe->Nodes->Count) / pipe->Nodes->Count);
-				pipe->Nodes->Items[i]->X = Cos(t1) * r;
-				pipe->Nodes->Items[i]->Z = Sin(t1) * r;
-				t2 = 2 * (t + i / (pipe->Nodes->Count - 1) + k);
-				pipe->Material->FrontProperties->Ambient->Color =
-					VectorLerp(clrAqua, clrYellow, Sin(t2));
-				pipe->Radius =
-					(1 + (Sin(t2) * 0.5)) * Ln((pipe->Nodes->Count - i)) * 0.5;
-			}
-			// don't search any hidden logic behind the formulaes below:
-			// they're just here to induce this sickening weirdo movement
-			pipe->Nodes->EndUpdate();
-		}
-	Sphere1->Radius = 1.4 + Sin(2 * t) * 0.1;
+    t = newTime;
+    for (k = 0; k < DCBase->Count - 1; k++)
+        if (dynamic_cast<TGLPipe*>(DCBase->Children[k])) {
+            pipe = (TGLPipe*)(DCBase->Children[k]);
+            pipe->Nodes->BeginUpdate();
+            for (i = 0; i < pipe->Nodes->Count - 1; i++) {
+              // don't search any hidden logic behind the formulaes below:
+              // they're just here to induce this sickening weirdo movement
+
+                t1 = -t + i * 0.1 + k * (2 * M_PI) / 5;
+                r = (Sin(3 * t + k) + 2) * 0.5 * ((2 * i + pipe->Nodes->Count) / pipe->Nodes->Count);
+                pipe->Nodes->Items[i]->X = Cos(t1) * r;
+                pipe->Nodes->Items[i]->Z = Sin(t1) * r;
+                t2 = 2 * (t + i / (pipe->Nodes->Count - 1) + k);
+                pipe->Material->FrontProperties->Ambient->Color =
+                    VectorLerp(clrAqua, clrYellow, Sin(t2));
+                pipe->Radius = (1 + (Sin(t2) * 0.5)) * Ln((pipe->Nodes->Count - i)) * 0.5;
+            }
+            pipe->Nodes->EndUpdate();
+        }
+    Sphere1->Radius = 1.4 + Sin(2 * t) * 0.1;
 }
 
 // ---------------------------------------------------------------------------
-void __fastcall TForm1::Timer1Timer(TObject *Sender) {
-	// standard FPS counter
-	PanelFPS->Caption =
-		Format("%.1f FPS", ARRAYOFCONST((GLSceneViewer1->FramesPerSecond())));
-	GLSceneViewer1->ResetPerformanceMonitor();
-
+void __fastcall TForm1::Timer1Timer(TObject* Sender)
+{
+    // standard FPS counter
+    PanelFPS->Caption =
+        Format("%.1f FPS", ARRAYOFCONST((GLSceneViewer1->FramesPerSecond())));
+    GLSceneViewer1->ResetPerformanceMonitor();
 }
 // ---------------------------------------------------------------------------
+
+

+ 14 - 20
Examples/Demos/extrusion/tentacles/fTentacleC.dfm

@@ -2,42 +2,36 @@ object Form1: TForm1
   Left = 0
   Top = 0
   Caption = 'Tentacles'
-  ClientHeight = 466
-  ClientWidth = 676
+  ClientHeight = 450
+  ClientWidth = 664
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
-  PixelsPerInch = 120
-  TextHeight = 17
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 676
-    Height = 466
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 664
+    Height = 450
     Camera = GLCamera1
     Buffer.BackgroundColor = clBlack
-    FieldOfView = 155.776901245117200000
+    FieldOfView = 154.942382812500000000
     PenAsTouch = False
     Align = alClient
     TabOrder = 0
+    ExplicitWidth = 663
+    ExplicitHeight = 446
   end
   object PanelFPS: TPanel
-    Left = 260
-    Top = 10
-    Width = 151
-    Height = 21
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 208
+    Top = 8
+    Width = 121
+    Height = 17
     Caption = 'FPS'
     TabOrder = 1
   end

+ 1 - 0
Examples/Demos/extrusion/tentacles/fTentaclesD.dfm

@@ -50,6 +50,7 @@ object FormTentacles: TFormTentacles
       end
       object Pipe1: TGLPipe
         Nodes = <>
+        SplineMode = lsmBezierSpline
         Radius = 1.000000000000000000
       end
       object Pipe2: TGLPipe

+ 11 - 14
Examples/Demos/extrusion/tentacles/fTentaclesD.pas

@@ -72,20 +72,17 @@ begin
     if (DCBase.Children[k] is TGLPipe) then
     begin
       pipe := TGLPipe(DCBase.Children[k]);
-      with pipe do
-      begin
-        Nodes.Clear;
-        for i := 1 to cNbNodes do
-          Nodes.AddNode(0, i / 8, 0);
-        Radius := 0.1;
-        // enable per-node coloring in the TGLPipe
-        NodesColorMode := pncmDiffuse;
-        // divisions between nodes (for spline interpolation)
-        Division := 3;
-        // No geometry compilation/cacheing, render directly
-        // (geometry changes completely from frame to frame)
-        ObjectStyle := ObjectStyle + [osDirectDraw];
-      end;
+      pipe.Nodes.Clear;
+      for i := 1 to cNbNodes do
+        pipe.Nodes.AddNode(0, i / 8, 0);
+      pipe.Radius := 0.1;
+      // enable per-node coloring in the TGLPipe
+      pipe.NodesColorMode := pncmDiffuse;
+      // divisions between nodes (for spline interpolation)
+      pipe.Division := 3;
+      // No geometry compilation/cacheing, render directly
+      // (geometry changes completely from frame to frame)
+      pipe.ObjectStyle := pipe.ObjectStyle + [osDirectDraw];
     end;
 end;
 

+ 5 - 3
Examples/Demos/glslshaders/BumpShader/fBumpShaderC.cpp

@@ -79,8 +79,9 @@ void __fastcall TForm1::FormCreate(TObject *Sender)
   Sphere_little->MeshObjects->BuildTangentSpace();
 
   // Then load textures
-  SetCurrentDir(Path + "\\texture");
+  SetCurrentDir(Path + "\\map");
   MaterialLibrary->LibMaterialByName("Earth")->Material->Texture->Image->LoadFromFile("Earth.jpg");
+  SetCurrentDir(Path + "\\texture");
   MaterialLibrary->LibMaterialByName("EarthNormals")->Material->Texture->Image->LoadFromFile("EarthNormals.jpg");
 
   // And cubemaps
@@ -189,10 +190,11 @@ void __fastcall TForm1::ViewerMouseDown(TObject *Sender, TMouseButton Button, TS
   mx = X;
   my = Y;
 }
+
 //---------------------------------------------------------------------------
 
 void __fastcall TForm1::ViewerMouseMove(TObject *Sender, TShiftState Shift, int X,
-          int Y)
+		  int Y)
 {
   if (Shift.Contains(ssRight) && Shift.Contains(ssLeft))
 	Camera->AdjustDistanceToTarget(Power(1.01, Y - my));
@@ -201,8 +203,8 @@ void __fastcall TForm1::ViewerMouseMove(TObject *Sender, TShiftState Shift, int
 	Camera->MoveAroundTarget(my - Y, mx - X);
   mx = X;
   my = Y;
-
 }
+
 //---------------------------------------------------------------------------
 
 void __fastcall TForm1::Timer1Timer(TObject *Sender)

+ 19 - 9
Examples/Demos/glslshaders/BumpShader/fBumpShaderD.dfm

@@ -2,8 +2,8 @@ object FormBumpShader: TFormBumpShader
   Left = 261
   Top = 176
   Caption = 'GLSL Bump Shader'
-  ClientHeight = 437
-  ClientWidth = 646
+  ClientHeight = 605
+  ClientWidth = 856
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
@@ -18,28 +18,32 @@ object FormBumpShader: TFormBumpShader
   object Viewer: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 475
-    Height = 437
+    Width = 685
+    Height = 605
     Camera = Camera
     Buffer.BackgroundColor = clBackground
     Buffer.ContextOptions = [roDoubleBuffer, roStencilBuffer, roRenderToWindow]
     Buffer.AntiAliasing = aaNone
     Buffer.DepthPrecision = dp24bits
     Buffer.ColorDepth = cd24bits
-    FieldOfView = 146.866317749023400000
+    FieldOfView = 155.745819091796900000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = ViewerMouseDown
     OnMouseMove = ViewerMouseMove
     TabOrder = 0
+    ExplicitWidth = 478
+    ExplicitHeight = 438
   end
   object Panel1: TPanel
-    Left = 475
+    Left = 685
     Top = 0
     Width = 171
-    Height = 437
+    Height = 605
     Align = alRight
     TabOrder = 1
+    ExplicitLeft = 475
+    ExplicitHeight = 437
     object LightMovingCheckBox: TCheckBox
       Left = 8
       Top = 8
@@ -163,6 +167,8 @@ object FormBumpShader: TFormBumpShader
         Material.FrontProperties.Diffuse.Color = {E6E5653F8180003DCDCC4C3F0000803F}
         Material.FrontProperties.Emission.Color = {F4F3733FEEED6D3F000000000000803F}
         Radius = 10.000000000000000000
+        Slices = 64
+        Stacks = 64
       end
     end
     object LightCube2: TGLDummyCube
@@ -182,6 +188,8 @@ object FormBumpShader: TFormBumpShader
         Material.FrontProperties.Diffuse.Color = {EAE9693FCDCC4C3FCDCC4C3F0000803F}
         Material.FrontProperties.Emission.Color = {F0EF6F3F00000000000000000000803F}
         Radius = 10.000000000000000000
+        Slices = 64
+        Stacks = 64
       end
     end
     object WorldCube: TGLDummyCube
@@ -238,14 +246,16 @@ object FormBumpShader: TFormBumpShader
         Up.Coordinates = {00000000000000000000803F00000000}
         Visible = False
         Radius = 50.000000000000000000
+        Slices = 64
+        Stacks = 64
       end
     end
     object Camera: TGLCamera
       DepthOfView = 500.000000000000000000
       FocalLength = 65.000000000000000000
-      TargetObject = GLXYZGrid1
+      TargetObject = WorldCube
       CameraStyle = csInfinitePerspective
-      Position.Coordinates = {0000000000007A43000048430000803F}
+      Position.Coordinates = {0000000000007A430000FA430000803F}
       Direction.Coordinates = {00000000000080BF0000000000000000}
       Up.Coordinates = {00000000000000000000803F00000000}
     end

+ 4 - 2
Examples/Demos/glslshaders/BumpShader/fBumpShaderD.pas

@@ -137,10 +137,12 @@ begin
   Sphere_little.MeshObjects.BuildTangentSpace;
 
   // Then load textures
+  SetCurrentDir(Path + '\map');
+  MaterialLibrary.LibMaterialByName('Earth').Material.Texture.Image.LoadFromFile('earth.jpg');
   SetCurrentDir(Path  + '\texture');
-  MaterialLibrary.LibMaterialByName('Earth').Material.Texture.Image.LoadFromFile('Earth.jpg');
-  MaterialLibrary.LibMaterialByName('EarthGross').Material.Texture.Image.LoadFromFile('EarthSpec.dds');
   MaterialLibrary.LibMaterialByName('EarthNormals').Material.Texture.Image.LoadFromFile('EarthNormals.jpg');
+  SetCurrentDir(Path  + '\cubemap');
+  MaterialLibrary.LibMaterialByName('EarthGross').Material.Texture.Image.LoadFromFile('EarthSpec.dds');
 
   // Create Shader
   MultiLightShader := TGLSLMLBumpShader.Create(Self);

+ 1092 - 0
Examples/Demos/graph/GraphC.cbproj

@@ -0,0 +1,1092 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{D8448091-C231-4687-9659-2F7E944AAA64}</ProjectGuid>
+        <ProjectVersion>19.4</ProjectVersion>
+        <FrameworkType>VCL</FrameworkType>
+        <AppType>Application</AppType>
+        <MainSource>GraphC.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>
+        <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>splines\;projection\;points\;heightfield\;fxy\;D:\GLScene\Examples\Demos\graph\;$(IncludePath)</IncludePath>
+        <ILINK_LibraryPath>splines\;projection\;points\;heightfield\;fxy\;D:\GLScene\Examples\Demos\graph\;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+        <SanitizedProjectName>GraphC</SanitizedProjectName>
+        <IntermediateOutputDir>.\$(Platform)\$(Config)</IntermediateOutputDir>
+        <FinalOutputDir>.\$(Platform)\$(Config)</FinalOutputDir>
+    </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="fGraphC.cpp">
+            <Form>FormGraphC</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>fGraphC.h</DependentOn>
+            <BuildOrder>2</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="fxy\fFxyC.cpp">
+            <Form>FormPlot</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>fxy\fFxyC.h</DependentOn>
+            <BuildOrder>2</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="GraphC.cpp">
+            <BuildOrder>0</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="heightfield\fHeightfieldC.cpp">
+            <Form>Form1</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>heightfield\fHeightfieldC.h</DependentOn>
+            <BuildOrder>3</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="points\fPointsC.cpp">
+            <Form>FormPoints</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>points\fPointsC.h</DependentOn>
+            <BuildOrder>4</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="projection\fProjectionC.cpp">
+            <Form>FormProjection</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>projection\fProjectionC.h</DependentOn>
+            <BuildOrder>5</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="splines\fSplinesC.cpp">
+            <Form>FormSplines</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>splines\fSplinesC.h</DependentOn>
+            <BuildOrder>6</BuildOrder>
+        </CppCompile>
+        <FormResources Include="points\fPointsC.dfm"/>
+        <FormResources Include="projection\fProjectionC.dfm"/>
+        <FormResources Include="splines\fSplinesC.dfm"/>
+        <FormResources Include="heightfield\fHeightfieldC.dfm"/>
+        <FormResources Include="fGraphC.dfm"/>
+        <FormResources Include="fxy\fFxyC.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">GraphC.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="GraphC.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>GraphC.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="GraphC.tds" Configuration="Debug" Class="DebugSymbols">
+                    <Platform Name="Win32">
+                        <RemoteName>GraphC.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/graph/GraphC.cpp

@@ -0,0 +1,40 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+#include <tchar.h>
+//---------------------------------------------------------------------------
+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("fxy\fFxyC.cpp", FormPlot);
+//---------------------------------------------------------------------------
+int WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
+{
+	try
+	{
+		Application->Initialize();
+		Application->MainFormOnTaskBar = true;
+		Application->CreateForm(__classid(TFormGraphC), &FormGraphC);
+		Application->Run();
+	}
+	catch (Exception &exception)
+	{
+		Application->ShowException(&exception);
+	}
+	catch (...)
+	{
+		try
+		{
+			throw Exception("");
+		}
+		catch (Exception &exception)
+		{
+			Application->ShowException(&exception);
+		}
+	}
+	return 0;
+}
+//---------------------------------------------------------------------------

+ 19 - 0
Examples/Demos/graph/GraphD.dpr

@@ -0,0 +1,19 @@
+program GraphD;
+
+uses
+  Vcl.Forms,
+  fGraphD in 'fGraphD.pas' {FormGraphD},
+  fFxyD in 'fxy\fFxyD.pas' {FormFxy},
+  fHeightFieldD in 'heightfield\fHeightFieldD.pas' {FormHeightField},
+  fPointsD in 'points\fPointsD.pas' {FormPoints},
+  fProjectionD in 'projection\fProjectionD.pas' {FormProjection},
+  fSplinesD in 'splines\fSplinesD.pas' {FormSplines};
+
+{$R *.res}
+
+begin
+  Application.Initialize;
+  Application.MainFormOnTaskbar := True;
+  Application.CreateForm(TFormGraphD, FormGraphD);
+  Application.Run;
+end.

+ 986 - 0
Examples/Demos/graph/GraphD.dproj

@@ -0,0 +1,986 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{ABD08787-34E3-4138-A745-1ACF8D832AF5}</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>GraphD.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>GraphD</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="fGraphD.pas">
+            <Form>FormGraphD</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="fxy\fFxyD.pas">
+            <Form>FormFxy</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="heightfield\fHeightFieldD.pas">
+            <Form>FormHeightField</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="points\fPointsD.pas">
+            <Form>FormPoints</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="projection\fProjectionD.pas">
+            <Form>FormProjection</Form>
+            <FormType>dfm</FormType>
+        </DCCReference>
+        <DCCReference Include="splines\fSplinesD.pas">
+            <Form>FormSplines</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">GraphD.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="GraphD.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>GraphD.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>

+ 114 - 0
Examples/Demos/graph/fGraphC.cpp

@@ -0,0 +1,114 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "fGraphC.h"
+#include "fFxyC.h"
+#include "fHeightFieldC.h"
+#include "fPointsC.h"
+#include "fProjectionC.h"
+#include "fSplinesC.h"
+
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma resource "*.dfm"
+TFormGraphC *FormGraphC;
+//---------------------------------------------------------------------------
+__fastcall TFormGraphC::TFormGraphC(TComponent* Owner)
+	: TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+void __fastcall TFormGraphC::FormCreate(TObject *Sender)
+{
+  // Fxy
+  FormFxy = new TFormFxy(tsFxy);
+  FormFxy->Top = 10;
+  FormFxy->Left = 10;
+  FormFxy->Parent = tsFxy;
+  FormFxy->Align = alClient;
+  FormFxy->BorderStyle = bsNone;
+  FormFxy->Show();
+
+  // HeightField
+  FormHeightField = new TFormHeightField(tsHeightField);
+  FormHeightField->Top = 10;
+  FormHeightField->Left = 10;
+  FormHeightField->Parent = tsHeightField;
+  FormHeightField->Align = alClient;
+  FormHeightField->BorderStyle = bsNone;
+  FormHeightField->Show();
+
+  // Points
+  FormPoints = new TFormPoints(tsPoints);
+  FormPoints->Top = 10;
+  FormPoints->Left = 10;
+  FormPoints->Parent = tsPoints;
+  FormPoints->Align = alClient;
+  FormPoints->BorderStyle = bsNone;
+  FormPoints->Show();
+
+   // Projection
+  FormProjection = new TFormProjection(tsProjection);
+  FormProjection->Top = 10;
+  FormProjection->Left = 10;
+  FormProjection->Parent = tsProjection;
+  FormProjection->Align = alClient;
+  FormProjection->BorderStyle = bsNone;
+  FormProjection->Show();
+
+  // Splines
+  FormSplines = new TFormSplines(tsSplines);
+  FormSplines->Top = 10;
+  FormSplines->Left = 10;
+  FormSplines->Parent = tsSplines;
+  FormSplines->Align = alClient;
+  FormSplines->BorderStyle = bsNone;
+  FormSplines->Show();
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TFormGraphC::FormShow(TObject *Sender)
+{
+  PageControl->ActivePage = tsFxy;
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TFormGraphC::tvGraphClick(TObject *Sender)
+{
+  ///tvGraph->Items[0]->DropHighlighted = false;
+   switch (tvGraph->Selected->Index) {
+	case 0: {
+	  PageControl->ActivePage = tsFxy; break;
+	}
+	case 1: {
+	  PageControl->ActivePage = tsHeightField; break;
+	}
+	case 2: {
+	  PageControl->ActivePage = tsPoints; break;
+	}
+	case 3: {
+	  PageControl->ActivePage = tsProjection; break;
+	}
+	case 4: {
+	  PageControl->ActivePage = tsSplines; break;
+	}
+	default: {
+	  PageControl->ActivePage = tsFxy; break;
+	}
+   }
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TFormGraphC::FormDestroy(TObject *Sender)
+{
+  FormFxy->Free();
+  FormHeightField->Free();
+  FormPoints->Free();
+  FormProjection->Free();
+  FormSplines->Free();
+}
+//---------------------------------------------------------------------------
+

+ 86 - 0
Examples/Demos/graph/fGraphC.dfm

@@ -0,0 +1,86 @@
+object FormGraphC: TFormGraphC
+  Left = 0
+  Top = 0
+  Caption = 'Graph C'
+  ClientHeight = 571
+  ClientWidth = 882
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -12
+  Font.Name = 'Segoe UI'
+  Font.Style = []
+  Menu = MainMenu
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  TextHeight = 15
+  object PanelLeft: TPanel
+    Left = 0
+    Top = 0
+    Width = 129
+    Height = 571
+    Align = alLeft
+    TabOrder = 0
+    ExplicitHeight = 512
+    object tvGraph: TTreeView
+      Left = 1
+      Top = 1
+      Width = 127
+      Height = 569
+      Align = alClient
+      Indent = 19
+      TabOrder = 0
+      OnClick = tvGraphClick
+      Items.NodeData = {
+        0305000000240000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+        00000000000103460078007900320000000000000000000000FFFFFFFFFFFFFF
+        FF000000000000000000000000010A480069006700680074004600690065006C
+        0064002A0000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
+        000000010650006F0069006E0074007300320000000000000000000000FFFFFF
+        FFFFFFFFFF000000000000000000000000010A500072006F006A006500630074
+        0069006F006E002C0000000000000000000000FFFFFFFFFFFFFFFF0000000000
+        000000000000000107530070006C0069006E0065007300}
+      ExplicitHeight = 510
+    end
+  end
+  object PageControl: TPageControl
+    Left = 129
+    Top = 0
+    Width = 753
+    Height = 571
+    Align = alClient
+    TabOrder = 1
+    ExplicitWidth = 608
+    ExplicitHeight = 512
+    object tsFxy: TTabSheet
+      Caption = 'Fxy'
+      TabVisible = False
+    end
+    object tsHeightField: TTabSheet
+      Caption = 'HeightField'
+      ImageIndex = 1
+      TabVisible = False
+    end
+    object tsPoints: TTabSheet
+      Caption = 'Points'
+      ImageIndex = 2
+      TabVisible = False
+    end
+    object tsProjection: TTabSheet
+      Caption = 'Projection'
+      ImageIndex = 3
+      TabVisible = False
+    end
+    object tsSplines: TTabSheet
+      Caption = 'Splines'
+      ImageIndex = 4
+      TabVisible = False
+    end
+  end
+  object MainMenu: TMainMenu
+    Left = 340
+    Top = 80
+  end
+end

+ 37 - 0
Examples/Demos/graph/fGraphC.h

@@ -0,0 +1,37 @@
+//---------------------------------------------------------------------------
+
+#ifndef fGraphCH
+#define fGraphCH
+//---------------------------------------------------------------------------
+#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>
+//---------------------------------------------------------------------------
+class TFormGraphC : public TForm
+{
+__published:	// IDE-managed Components
+	TPanel *PanelLeft;
+	TTreeView *tvGraph;
+	TPageControl *PageControl;
+	TTabSheet *tsFxy;
+	TTabSheet *tsHeightField;
+	TTabSheet *tsPoints;
+	TTabSheet *tsProjection;
+	TTabSheet *tsSplines;
+	TMainMenu *MainMenu;
+	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);
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TFormGraphC *FormGraphC;
+//---------------------------------------------------------------------------
+#endif

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

@@ -0,0 +1,84 @@
+object FormGraphD: TFormGraphD
+  Left = 0
+  Top = 0
+  Caption = 'Graph D'
+  ClientHeight = 544
+  ClientWidth = 902
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -12
+  Font.Name = 'Segoe UI'
+  Font.Style = []
+  Menu = MainMenu
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  OnDestroy = FormDestroy
+  OnShow = FormShow
+  TextHeight = 15
+  object PanelLeft: TPanel
+    Left = 0
+    Top = 0
+    Width = 129
+    Height = 544
+    Align = alLeft
+    TabOrder = 0
+    object tvGraph: TTreeView
+      Left = 1
+      Top = 1
+      Width = 127
+      Height = 542
+      Align = alClient
+      Indent = 19
+      TabOrder = 0
+      OnClick = tvGraphClick
+      Items.NodeData = {
+        0305000000240000000000000000000000FFFFFFFFFFFFFFFF00000000000000
+        00000000000103460078007900320000000000000000000000FFFFFFFFFFFFFF
+        FF000000000000000000000000010A480069006700680074004600690065006C
+        0064002A0000000000000000000000FFFFFFFFFFFFFFFF000000000000000000
+        000000010650006F0069006E0074007300320000000000000000000000FFFFFF
+        FFFFFFFFFF000000000000000000000000010A500072006F006A006500630074
+        0069006F006E002C0000000000000000000000FFFFFFFFFFFFFFFF0000000000
+        000000000000000107530070006C0069006E0065007300}
+    end
+  end
+  object PageControl: TPageControl
+    Left = 129
+    Top = 0
+    Width = 773
+    Height = 544
+    ActivePage = tsProjection
+    Align = alClient
+    TabOrder = 1
+    ExplicitWidth = 608
+    object tsFxy: TTabSheet
+      Caption = 'Fxy'
+      TabVisible = False
+    end
+    object tsHeightField: TTabSheet
+      Caption = 'HeightField'
+      ImageIndex = 1
+      TabVisible = False
+    end
+    object tsPoints: TTabSheet
+      Caption = 'Points'
+      ImageIndex = 2
+      TabVisible = False
+    end
+    object tsProjection: TTabSheet
+      Caption = 'Projection'
+      ImageIndex = 3
+      TabVisible = False
+    end
+    object tsSplines: TTabSheet
+      Caption = 'Splines'
+      ImageIndex = 4
+      TabVisible = False
+    end
+  end
+  object MainMenu: TMainMenu
+    Left = 272
+    Top = 64
+  end
+end

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

@@ -0,0 +1,134 @@
+unit fGraphD;
+
+interface
+
+uses
+  Winapi.Windows,
+  Winapi.Messages,
+  System.SysUtils,
+  System.Variants,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Controls,
+  Vcl.Forms,
+  Vcl.Dialogs,
+  Vcl.ExtCtrls,
+  Vcl.Menus,
+  Vcl.ComCtrls,
+
+  fFxyD,
+  fHeightFieldD,
+  fPointsD,
+  fProjectionD,
+  fSplinesD;
+
+type
+  TFormGraphD = class(TForm)
+    PanelLeft: TPanel;
+    tvGraph: TTreeView;
+    MainMenu: TMainMenu;
+    PageControl: TPageControl;
+    tsFxy: TTabSheet;
+    tsHeightField: TTabSheet;
+    tsPoints: TTabSheet;
+    tsProjection: TTabSheet;
+    tsSplines: TTabSheet;
+    procedure tvGraphClick(Sender: TObject);
+    procedure FormCreate(Sender: TObject);
+    procedure FormShow(Sender: TObject);
+    procedure FormDestroy(Sender: TObject);
+  private
+
+  public
+
+  end;
+
+var
+  FormGraphD: TFormGraphD;
+
+implementation
+
+{$R *.dfm}
+
+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;
+  FormFxy.Show;
+
+  // HeightField
+  FormHeightField := TFormHeightField.Create(tsHeightField);
+  FormHeightField.Top := 10;
+  FormHeightField.Left := 10;
+  FormHeightField.Parent := tsHeightField;
+  FormHeightField.Align := alClient;
+  FormHeightField.BorderStyle := bsNone;
+  FormHeightField.Show;
+
+  // Points
+  FormPoints := TFormPoints.Create(tsPoints);
+  FormPoints.Top := 10;
+  FormPoints.Left := 10;
+  FormPoints.Parent := tsPoints;
+  FormPoints.Align := alClient;
+  FormPoints.BorderStyle := bsNone;
+  FormPoints.Show;
+
+   // Projection
+  FormProjection := TFormProjection.Create(tsProjection);
+  FormProjection.Top := 10;
+  FormProjection.Left := 10;
+  FormProjection.Parent := tsProjection;
+  FormProjection.Align := alClient;
+  FormProjection.BorderStyle := bsNone;
+  FormProjection.Show;
+
+  // 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);
+begin
+  PageControl.ActivePage := tsFxy;
+end;
+
+procedure TFormGraphD.tvGraphClick(Sender: TObject);
+begin
+  tvGraph.Items[0].DropHighlighted := False;
+   case tvGraph.Selected.Index of
+    0:
+      PageControl.ActivePage := tsFxy;
+    1:
+      PageControl.ActivePage := tsHeightField;
+    2:
+      PageControl.ActivePage := tsPoints;
+    3:
+      PageControl.ActivePage := tsProjection;
+    4:
+      PageControl.ActivePage := tsSplines;
+  end;
+end;
+
+procedure TFormGraphD.FormDestroy(Sender: TObject);
+begin
+  FormFxy.Free;
+  FormHeightField.Free;
+  FormPoints.Free;
+  FormProjection.Free;
+  FormSplines.Free;
+end;
+
+
+end.

+ 1 - 1
Examples/Demos/graph/fxy/FxyC.cbproj

@@ -149,7 +149,7 @@
     </PropertyGroup>
     <ItemGroup>
         <CppCompile Include="fFxyC.cpp">
-            <Form>FormPlot</Form>
+            <Form>FormFxy</Form>
             <DependentOn>fFxyC.h</DependentOn>
             <BuildOrder>3</BuildOrder>
         </CppCompile>

+ 2 - 2
Examples/Demos/graph/fxy/FxyC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fFxyC.cpp", FormPlot);
+USEFORM("fFxyC.cpp", FormFxy);
 //---------------------------------------------------------------------------
 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(TFormPlot), &FormPlot);
+		Application->CreateForm(__classid(TFormFxy), &FormFxy);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 16 - 16
Examples/Demos/graph/fxy/fFxyC.cpp

@@ -15,14 +15,14 @@
 #pragma link "GLS.Coordinates"
 
 #pragma resource "*.dfm"
-TFormPlot* FormPlot;
+TFormFxy* FormFxy;
 
 //---------------------------------------------------------------------------
 
-__fastcall TFormPlot::TFormPlot(TComponent* Owner) : TForm(Owner) {}
+__fastcall TFormFxy::TFormFxy(TComponent* Owner) : TForm(Owner) {}
 
 //---------------------------------------------------------------------------
-void __fastcall TFormPlot::Formula0(const float x, const float y, float &z,
+void __fastcall TFormFxy::Formula0(const float x, const float y, float &z,
 	TVector4f &color, TTexPoint &texPoint)
 {
 	// 0ro formula
@@ -32,7 +32,7 @@ void __fastcall TFormPlot::Formula0(const float x, const float y, float &z,
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TFormPlot::Formula1(const float x, const float y, float &z,
+void __fastcall TFormFxy::Formula1(const float x, const float y, float &z,
 	TVector4f &color, TTexPoint &texPoint)
 {
 	// 1st formula
@@ -42,7 +42,7 @@ void __fastcall TFormPlot::Formula1(const float x, const float y, float &z,
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TFormPlot::Formula2(const float x, const float y, float &z,
+void __fastcall TFormFxy::Formula2(const float x, const float y, float &z,
 	TVector4f &color, TTexPoint &texPoint)
 {
 	// 2nd formula
@@ -52,7 +52,7 @@ void __fastcall TFormPlot::Formula2(const float x, const float y, float &z,
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TFormPlot::Formula3(const float x, const float y, float &z,
+void __fastcall TFormFxy::Formula3(const float x, const float y, float &z,
 	TVector4f &color, TTexPoint &texPoint)
 {
 	// 3rd formula
@@ -63,14 +63,14 @@ void __fastcall TFormPlot::Formula3(const float x, const float y, float &z,
 
 //---------------------------------------------------------------------------
 
-void __fastcall TFormPlot::FormCreate(TObject* Sender)
+void __fastcall TFormFxy::FormCreate(TObject* Sender)
 {
 	rgFormulaClick(Sender);
 }
 
 //---------------------------------------------------------------------------
 
-void __fastcall TFormPlot::chbCenterClick(TObject* Sender)
+void __fastcall TFormFxy::chbCenterClick(TObject* Sender)
 {
 	if (chbCenter->Checked) {
 		XZGrid->YSamplingScale->Origin = 0;
@@ -85,26 +85,26 @@ void __fastcall TFormPlot::chbCenterClick(TObject* Sender)
 
 //---------------------------------------------------------------------------
 
-void __fastcall TFormPlot::TrackBarYChange(TObject* Sender)
+void __fastcall TFormFxy::TrackBarYChange(TObject* Sender)
 {
 	XYGrid->ZSamplingScale->Origin = -((float)TrackBarY->Position / 10);
 }
 
 //---------------------------------------------------------------------------
 
-void __fastcall TFormPlot::TrackBarXChange(TObject* Sender)
+void __fastcall TFormFxy::TrackBarXChange(TObject* Sender)
 {
 	XZGrid->YSamplingScale->Origin = -((float)TrackBarX->Position / 10);
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TFormPlot::TrackBarZChange(TObject* Sender)
+void __fastcall TFormFxy::TrackBarZChange(TObject* Sender)
 {
 	YZGrid->XSamplingScale->Origin = -((float)TrackBarZ->Position / 10);
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TFormPlot::ViewerMouseDown(
+void __fastcall TFormFxy::ViewerMouseDown(
 	TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
 {
 	mx = X;
@@ -112,7 +112,7 @@ void __fastcall TFormPlot::ViewerMouseDown(
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TFormPlot::ViewerMouseMove(
+void __fastcall TFormFxy::ViewerMouseMove(
 	TObject* Sender, TShiftState Shift, int X, int Y)
 {
 	if (Shift.Contains(ssLeft))
@@ -124,7 +124,7 @@ void __fastcall TFormPlot::ViewerMouseMove(
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TFormPlot::FormMouseWheel(TObject* Sender, TShiftState Shift,
+void __fastcall TFormFxy::FormMouseWheel(TObject* Sender, TShiftState Shift,
 	int WheelDelta, TPoint &MousePos, bool &Handled)
 {
 	Camera->AdjustDistanceToTarget(Power(1.1, (WheelDelta / 120.0)));
@@ -132,7 +132,7 @@ void __fastcall TFormPlot::FormMouseWheel(TObject* Sender, TShiftState Shift,
 
 //---------------------------------------------------------------------------
 
-void __fastcall TFormPlot::rgFormulaClick(TObject *Sender)
+void __fastcall TFormFxy::rgFormulaClick(TObject *Sender)
 {
 	switch (rgFormula->ItemIndex) {
 		case 0:
@@ -153,7 +153,7 @@ void __fastcall TFormPlot::rgFormulaClick(TObject *Sender)
 
 //---------------------------------------------------------------------------
 
-void __fastcall TFormPlot::rgPolygonModeClick(TObject* Sender)
+void __fastcall TFormFxy::rgPolygonModeClick(TObject* Sender)
 {
 	switch (rgPolygonMode->ItemIndex) {
 		case 0:

+ 4 - 6
Examples/Demos/graph/fxy/fFxyC.dfm

@@ -1,4 +1,4 @@
-object FormPlot: TFormPlot
+object FormFxy: TFormFxy
   Left = 192
   Top = 121
   Caption = 'Fxy '
@@ -10,6 +10,7 @@ object FormPlot: TFormPlot
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
+  Position = poScreenCenter
   WindowState = wsMaximized
   OnCreate = FormCreate
   OnMouseWheel = FormMouseWheel
@@ -32,8 +33,6 @@ object FormPlot: TFormPlot
     OnMouseDown = ViewerMouseDown
     OnMouseMove = ViewerMouseMove
     TabOrder = 0
-    ExplicitWidth = 455
-    ExplicitHeight = 537
   end
   object Panel1: TPanel
     Left = 563
@@ -42,12 +41,11 @@ object FormPlot: TFormPlot
     Height = 564
     Align = alRight
     TabOrder = 1
-    ExplicitLeft = 579
     object LabelX: TLabel
       Left = 34
       Top = 48
-      Width = 15
-      Height = 19
+      Width = 7
+      Height = 13
       Margins.Left = 2
       Margins.Top = 2
       Margins.Right = 2

+ 3 - 3
Examples/Demos/graph/fxy/fFxyC.h

@@ -18,7 +18,7 @@
 #include <Vcl.ImgList.hpp>
 
 //---------------------------------------------------------------------------
-class TFormPlot : public TForm
+class TFormFxy : public TForm
 {
   __published: // IDE-managed Components
     TGLScene* GLScene1;
@@ -63,10 +63,10 @@ class TFormPlot : public TForm
 	void __fastcall Formula3(const float x, const float y, float &z,
         TVector4f &color, TTexPoint &texPoint);
   public: // User declarations
-    __fastcall TFormPlot(TComponent* Owner);
+    __fastcall TFormFxy(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TFormPlot* FormPlot;
+extern PACKAGE TFormFxy* FormFxy;
 //---------------------------------------------------------------------------
 #endif
 

+ 12 - 7
Examples/Demos/graph/fxy/fFxyD.dfm

@@ -3,9 +3,10 @@ object FormFxy: TFormFxy
   Top = 106
   BorderWidth = 4
   Caption = 'Fxy'
-  ClientHeight = 461
-  ClientWidth = 593
+  ClientHeight = 409
+  ClientWidth = 525
   Color = clBtnFace
+  DockSite = True
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
@@ -17,24 +18,28 @@ object FormFxy: TFormFxy
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 424
-    Height = 461
+    Width = 356
+    Height = 409
     Camera = GLCamera1
     Buffer.BackgroundColor = clTeal
-    FieldOfView = 118.950874328613300000
+    FieldOfView = 109.843315124511700000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
+    ExplicitWidth = 420
+    ExplicitHeight = 442
   end
   object Panel1: TPanel
-    Left = 424
+    Left = 356
     Top = 0
     Width = 169
-    Height = 461
+    Height = 409
     Align = alRight
     TabOrder = 1
+    ExplicitLeft = 424
+    ExplicitHeight = 461
     object Label1: TLabel
       Left = 46
       Top = 343

+ 2 - 1
Examples/Demos/graph/fxy/fFxyD.pas

@@ -22,7 +22,8 @@ uses
   GLS.SceneViewer,
 
   GLS.Coordinates,
-  GLS.BaseClasses, GLS.AsyncTimer;
+  GLS.BaseClasses,
+  GLS.AsyncTimer;
 
 type
   TFormFxy = class(TForm)

+ 74 - 50
Examples/Demos/graph/graph.groupproj

@@ -3,34 +3,40 @@
         <ProjectGuid>{E0C70AF5-D1F7-41A0-A60F-F71B530ED67A}</ProjectGuid>
     </PropertyGroup>
     <ItemGroup>
-        <Projects Include="fxy\FxyD.dproj">
+        <Projects Include="GraphC.cbproj">
             <Dependencies/>
         </Projects>
         <Projects Include="fxy\FxyC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="heightfield\HeightFieldD.dproj">
+        <Projects Include="points\PointsC.cbproj">
             <Dependencies/>
         </Projects>
         <Projects Include="heightfield\HeightfieldC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="points\PointsD.dproj">
+        <Projects Include="projection\ProjectionC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="points\PointsC.cbproj">
+        <Projects Include="splines\SplinesC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="projection\ProjectionD.dproj">
+        <Projects Include="GraphD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="projection\ProjectionC.cbproj">
+        <Projects Include="fxy\FxyD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="splines\SplinesD.dproj">
+        <Projects Include="heightfield\HeightFieldD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="splines\SplinesC.cbproj">
+        <Projects Include="points\PointsD.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="projection\ProjectionD.dproj">
+            <Dependencies/>
+        </Projects>
+        <Projects Include="splines\SplinesD.dproj">
             <Dependencies/>
         </Projects>
     </ItemGroup>
@@ -41,14 +47,14 @@
             <Default.Personality/>
         </BorlandProject>
     </ProjectExtensions>
-    <Target Name="FxyD">
-        <MSBuild Projects="fxy\FxyD.dproj"/>
+    <Target Name="GraphC">
+        <MSBuild Projects="GraphC.cbproj"/>
     </Target>
-    <Target Name="FxyD:Clean">
-        <MSBuild Projects="fxy\FxyD.dproj" Targets="Clean"/>
+    <Target Name="GraphC:Clean">
+        <MSBuild Projects="GraphC.cbproj" Targets="Clean"/>
     </Target>
-    <Target Name="FxyD:Make">
-        <MSBuild Projects="fxy\FxyD.dproj" Targets="Make"/>
+    <Target Name="GraphC:Make">
+        <MSBuild Projects="GraphC.cbproj" Targets="Make"/>
     </Target>
     <Target Name="FxyC">
         <MSBuild Projects="fxy\FxyC.cbproj"/>
@@ -59,14 +65,14 @@
     <Target Name="FxyC:Make">
         <MSBuild Projects="fxy\FxyC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="HeightFieldD">
-        <MSBuild Projects="heightfield\HeightFieldD.dproj"/>
+    <Target Name="PointsC">
+        <MSBuild Projects="points\PointsC.cbproj"/>
     </Target>
-    <Target Name="HeightFieldD:Clean">
-        <MSBuild Projects="heightfield\HeightFieldD.dproj" Targets="Clean"/>
+    <Target Name="PointsC:Clean">
+        <MSBuild Projects="points\PointsC.cbproj" Targets="Clean"/>
     </Target>
-    <Target Name="HeightFieldD:Make">
-        <MSBuild Projects="heightfield\HeightFieldD.dproj" Targets="Make"/>
+    <Target Name="PointsC:Make">
+        <MSBuild Projects="points\PointsC.cbproj" Targets="Make"/>
     </Target>
     <Target Name="HeightfieldC">
         <MSBuild Projects="heightfield\HeightfieldC.cbproj"/>
@@ -77,6 +83,51 @@
     <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>
+    <Target Name="HeightFieldD:Clean">
+        <MSBuild Projects="heightfield\HeightFieldD.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="HeightFieldD:Make">
+        <MSBuild Projects="heightfield\HeightFieldD.dproj" Targets="Make"/>
+    </Target>
     <Target Name="PointsD">
         <MSBuild Projects="points\PointsD.dproj"/>
     </Target>
@@ -86,15 +137,6 @@
     <Target Name="PointsD:Make">
         <MSBuild Projects="points\PointsD.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="ProjectionD">
         <MSBuild Projects="projection\ProjectionD.dproj"/>
     </Target>
@@ -104,15 +146,6 @@
     <Target Name="ProjectionD:Make">
         <MSBuild Projects="projection\ProjectionD.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="SplinesD">
         <MSBuild Projects="splines\SplinesD.dproj"/>
     </Target>
@@ -122,23 +155,14 @@
     <Target Name="SplinesD:Make">
         <MSBuild Projects="splines\SplinesD.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="Build">
-        <CallTarget Targets="FxyD;FxyC;HeightFieldD;HeightfieldC;PointsD;PointsC;ProjectionD;ProjectionC;SplinesD;SplinesC"/>
+        <CallTarget Targets="GraphC;FxyC;PointsC;HeightfieldC;ProjectionC;SplinesC;GraphD;FxyD;HeightFieldD;PointsD;ProjectionD;SplinesD"/>
     </Target>
     <Target Name="Clean">
-        <CallTarget Targets="FxyD:Clean;FxyC:Clean;HeightFieldD:Clean;HeightfieldC:Clean;PointsD:Clean;PointsC:Clean;ProjectionD:Clean;ProjectionC:Clean;SplinesD:Clean;SplinesC: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"/>
     </Target>
     <Target Name="Make">
-        <CallTarget Targets="FxyD:Make;FxyC:Make;HeightFieldD:Make;HeightfieldC:Make;PointsD:Make;PointsC:Make;ProjectionD:Make;ProjectionC:Make;SplinesD:Make;SplinesC: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"/>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 9 - 5
Examples/Demos/graph/heightfield/HeightfieldC.cbproj

@@ -130,6 +130,7 @@
         <BCC_IncludePath>..\..\..\..\Source;..\\include;$(BCC_IncludePath)</BCC_IncludePath>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <Defines>_DEBUG;$(Defines)</Defines>
@@ -150,7 +151,7 @@
     </PropertyGroup>
     <ItemGroup>
         <CppCompile Include="fHeightfieldC.cpp">
-            <Form>Form1</Form>
+            <Form>FormHeightField</Form>
             <FormType>dfm</FormType>
             <DependentOn>fHeightfieldC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
@@ -221,10 +222,13 @@
                     <ProjectProperties Name="IndexFiles">False</ProjectProperties>
                 </ProjectProperties>
                 <Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcboffice2k270.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\bcbofficexp270.bpl">Embarcadero C++Builder Office XP Servers Package</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dcloffice2k270.bpl">Microsoft Office 2000 Sample Automation Server Wrapper Components</Excluded_Packages>
-                    <Excluded_Packages Name="$(BDSBIN)\dclofficexp270.bpl">Microsoft Office XP Sample Automation Server Wrapper Components</Excluded_Packages>
+                    <Excluded_Packages 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">

+ 2 - 2
Examples/Demos/graph/heightfield/HeightfieldC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fHeightfieldC.cpp", Form1);
+USEFORM("fHeightfieldC.cpp", FormHeightField);
 //---------------------------------------------------------------------------
 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(TFormHeightField), &FormHeightField);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 109 - 95
Examples/Demos/graph/heightfield/fHeightfieldC.cpp

@@ -16,169 +16,183 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormHeightField* FormHeightField;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
-	: TForm(Owner)
+__fastcall TFormHeightField::TFormHeightField(TComponent* Owner) : TForm(Owner)
 {
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TFormHeightField::FormCreate(TObject* Sender)
 {
-   // start with first formula
-   HeightField1->OnGetHeight = Formula1;
-   // no per-vertex coloring
-   ComboBox1->ItemIndex = 1;
-   ComboBox1Change(Sender);
+    // start with first formula
+    HeightField1->OnGetHeight = Formula1;
+    // no per-vertex coloring
+    ComboBox1->ItemIndex = 1;
+    ComboBox1Change(Sender);
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::Formula1(const float x, const float y, float &z,
-		  TVector4f &color, TTexPoint &texPoint)
+void __fastcall TFormHeightField::Formula1(const float x, const float y,
+    float &z, TVector4f &color, TTexPoint &texPoint)
 { // first formula
-   z = VectorNorm(x, y);
-   z = cos(z*12)/(2*(z*6.28+1));
-   VectorLerp(clrBlue, clrRed, (z+1)/2, color);
+    z = VectorNorm(x, y);
+    z = cos(z * 12) / (2 * (z * 6.28 + 1));
+    VectorLerp(clrBlue, clrRed, (z + 1) / 2, color);
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::Formula2(const float x, const float y, float &z,
-		  TVector4f &color, TTexPoint &texPoint)
+void __fastcall TFormHeightField::Formula2(const float x, const float y,
+    float &z, TVector4f &color, TTexPoint &texPoint)
 {
-	// 2nd formula
-   z = (x*x)*(y*y);
-   VectorLerp(clrBlue, clrRed, (z+1)/2, color);
+    // 2nd formula
+    z = (x * x) * (y * y);
+    VectorLerp(clrBlue, clrRed, (z + 1) / 2, color);
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::Formula3(const float x, const float y, float &z,
-		  TVector4f &color, TTexPoint &texPoint)
+void __fastcall TFormHeightField::Formula3(const float x, const float y,
+    float &z, TVector4f &color, TTexPoint &texPoint)
 {
-   // 3rd formula, dynamic
-   z = 1/(1+VectorNorm(Sphere1->Position->X-x,Sphere1->Position->Y-y));
-   if (((ceil(x*4)+ceil(y*4)) && 1)==1)
-	  color = clrBlue;
-   else
-	  color=clrYellow;
+    // 3rd formula, dynamic
+    z = 1 /
+        (1 + VectorNorm(Sphere1->Position->X - x, Sphere1->Position->Y - y));
+    if (((ceil(x * 4) + ceil(y * 4)) && 1) == 1)
+        color = clrBlue;
+    else
+        color = clrYellow;
 }
 
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::Sphere1Progress(TObject *Sender, const double deltaTime, const double newTime)
+void __fastcall TFormHeightField::Sphere1Progress(
+    TObject* Sender, const double deltaTime, const double newTime)
 
 {
-   // move our little sphere around
-   if (Sphere1->Visible) {
-	  Sphere1->Position->SetPoint(cos(newTime*2.3), sin(newTime), 1.5);
-	  HeightField1->StructureChanged();
-   }
+    // move our little sphere around
+    if (Sphere1->Visible) {
+        Sphere1->Position->SetPoint(cos(newTime * 2.3), sin(newTime), 1.5);
+        HeightField1->StructureChanged();
+    }
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::ComboBox1Change(TObject *Sender)
+void __fastcall TFormHeightField::ComboBox1Change(TObject* Sender)
 {
-   // change per vertex color mode
-   switch (ComboBox1->ItemIndex) {
-	 case 0 : HeightField1->ColorMode = hfcmNone; break;
-	 case 1 : HeightField1->ColorMode = hfcmEmission; break;
-	 case 2 : HeightField1->ColorMode = hfcmDiffuse; break;
-	default :;
-   }
+    // change per vertex color mode
+    switch (ComboBox1->ItemIndex) {
+        case 0:
+            HeightField1->ColorMode = hfcmNone;
+            break;
+        case 1:
+            HeightField1->ColorMode = hfcmEmission;
+            break;
+        case 2:
+            HeightField1->ColorMode = hfcmDiffuse;
+            break;
+        default:;
+    }
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::CheckBox1Click(TObject *Sender)
+void __fastcall TFormHeightField::CheckBox1Click(TObject* Sender)
 {
-   // enable two sided surface
-   if (CheckBox1->Checked)
-	  HeightField1->Options = HeightField1->Options << hfoTextureCoordinates, hfoTwoSided;
-   else
-	  HeightField1->Options = HeightField1->Options << hfoTextureCoordinates;
+    // enable two sided surface
+    if (CheckBox1->Checked)
+        HeightField1->Options = HeightField1->Options << hfoTextureCoordinates,
+        hfoTwoSided;
+    else
+        HeightField1->Options = HeightField1->Options << hfoTextureCoordinates;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::TrackBar1Change(TObject *Sender)
+void __fastcall TFormHeightField::TrackBar1Change(TObject* Sender)
 {
-   // adjust X extents
-   HeightField1->XSamplingScale->Min = -TrackBar1->Position/10;
-   HeightField1->XSamplingScale->Max = TrackBar1->Position/10;
+    // adjust X extents
+    HeightField1->XSamplingScale->Min = -TrackBar1->Position / 10;
+    HeightField1->XSamplingScale->Max = TrackBar1->Position / 10;
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::TrackBar2Change(TObject *Sender)
+void __fastcall TFormHeightField::TrackBar2Change(TObject* Sender)
 {
-   // adjust Y extents
-   HeightField1->YSamplingScale->Min = -TrackBar2->Position/10;
-   HeightField1->YSamplingScale->Max = TrackBar2->Position/10;
+    // adjust Y extents
+    HeightField1->YSamplingScale->Min = -TrackBar2->Position / 10;
+    HeightField1->YSamplingScale->Max = TrackBar2->Position / 10;
 }
 
 //---------------------------------------------------------------------------
-void __fastcall TForm1::TrackBar3Change(TObject *Sender)
+void __fastcall TFormHeightField::TrackBar3Change(TObject* Sender)
 {
-   // adjust grid steps (resolution)
-  HeightField1->XSamplingScale->Step = (float)TrackBar3->Position/1000;
-  HeightField1->YSamplingScale->Step = (float)TrackBar3->Position/1000;
+    // adjust grid steps (resolution)
+    HeightField1->XSamplingScale->Step = (float)TrackBar3->Position / 1000;
+    HeightField1->YSamplingScale->Step = (float)TrackBar3->Position / 1000;
 }
 
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
-		  int X, int Y)
+void __fastcall TFormHeightField::GLSceneViewerMouseMove(
+    TObject* Sender, TShiftState Shift, int X, int Y)
 {
-   if (Shift.Contains(ssLeft))
-	  GLCamera1->MoveAroundTarget(my-Y, mx-X);
-	mx = X; my = Y;
+    if (Shift.Contains(ssLeft))
+        GLCamera1->MoveAroundTarget(my - Y, mx - X);
+    mx = X;
+    my = Y;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
-		  TShiftState Shift, int X, int Y)
+void __fastcall TFormHeightField::GLSceneViewerMouseDown(
+    TObject* Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
 {
-   mx = X; my = Y;
+    mx = X;
+    my = Y;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::RadioGroup1Click(TObject *Sender)
+void __fastcall TFormHeightField::RadioGroup1Click(TObject* Sender)
 {
-   Sphere1->Visible = false;
-   // switch between formulas
-   switch (RadioGroup1->ItemIndex) {
-	 case 0: HeightField1->OnGetHeight = Formula1; break;
-	 case 1: HeightField1->OnGetHeight = Formula2; break;
-	 case 2:{
-			 HeightField1->OnGetHeight = Formula3;
-			 Sphere1->Visible = true; break;
-			};
-	default :;
-   }
+    Sphere1->Visible = false;
+    // switch between formulas
+    switch (RadioGroup1->ItemIndex) {
+        case 0:
+            HeightField1->OnGetHeight = Formula1;
+            break;
+        case 1:
+            HeightField1->OnGetHeight = Formula2;
+            break;
+        case 2: {
+            HeightField1->OnGetHeight = Formula3;
+            Sphere1->Visible = true;
+            break;
+        };
+        default:;
+    }
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::CheckBox2Click(TObject *Sender)
+void __fastcall TFormHeightField::CheckBox2Click(TObject* Sender)
 {
-   GLLightSource1->Shining = CheckBox2->Checked;
+    GLLightSource1->Shining = CheckBox2->Checked;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TFormHeightField::Timer1Timer(TObject* Sender)
 {
-   // Display number of triangles used in the mesh
-   // You will note that this number quickly gets out of hand if you are
-   // using large high-resolution grids
-   LabelFPS->Caption = Format("%d Triangles - %.2f FPS",
-	   ARRAYOFCONST ((HeightField1->TriangleCount,
-	   GLSceneViewer1->FramesPerSecond())));
-   GLSceneViewer1->ResetPerformanceMonitor();
+    // Display number of triangles used in the mesh
+	// You will note that this number quickly gets out of hand if you are
+	// using large high-resolution grids
+///	LabelFPS->Caption = Format("%d Triangles - %.2f FPS",
+///		ARRAYOFCONST((HeightField1->TriangleCount, GLSceneViewer1->FramesPerSecond())));
+	LabelFPS->Caption =  GLSceneViewer->FramesPerSecond();
+	GLSceneViewer->ResetPerformanceMonitor();
 }
-//---------------------------------------------------------------------------
-
 
+//---------------------------------------------------------------------------
 
-void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
-          TPoint &MousePos, bool &Handled)
+void __fastcall TFormHeightField::FormMouseWheel(TObject* Sender,
+    TShiftState Shift, int WheelDelta, TPoint &MousePos, bool &Handled)
 {
-  GLCamera1->
-   AdjustDistanceToTarget(Power(1.1, (WheelDelta / 120.0)));
+    GLCamera1->AdjustDistanceToTarget(Power(1.1, (WheelDelta / 120.0)));
 }
 //---------------------------------------------------------------------------
 
+

+ 14 - 13
Examples/Demos/graph/heightfield/fHeightfieldC.dfm

@@ -1,42 +1,43 @@
-object Form1: TForm1
+object FormHeightField: TFormHeightField
   Left = 0
   Top = 0
   Caption = 'Height Field'
-  ClientHeight = 445
-  ClientWidth = 543
+  ClientHeight = 446
+  ClientWidth = 600
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
-  OldCreateOrder = False
   WindowState = wsMaximized
   OnCreate = FormCreate
   OnMouseWheel = FormMouseWheel
-  PixelsPerInch = 96
   TextHeight = 13
-  object GLSceneViewer1: TGLSceneViewer
+  object GLSceneViewer: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 398
-    Height = 445
+    Width = 455
+    Height = 446
     Camera = GLCamera1
     Buffer.BackgroundColor = clBackground
-    FieldOfView = 126.639793395996100000
+    FieldOfView = 131.694168090820300000
     PenAsTouch = False
     Align = alClient
-    OnMouseDown = GLSceneViewer1MouseDown
-    OnMouseMove = GLSceneViewer1MouseMove
+    OnMouseDown = GLSceneViewerMouseDown
+    OnMouseMove = GLSceneViewerMouseMove
     TabOrder = 0
+    ExplicitWidth = 442
   end
   object Panel1: TPanel
-    Left = 398
+    Left = 455
     Top = 0
     Width = 145
-    Height = 445
+    Height = 446
     Align = alRight
     TabOrder = 1
+    ExplicitLeft = 398
+    ExplicitHeight = 445
     object Label1: TLabel
       Left = 48
       Top = 8

+ 6 - 6
Examples/Demos/graph/heightfield/fHeightfieldC.h

@@ -21,10 +21,10 @@
 #include "GLS.Texture.hpp"
 #include "GLS.SceneViewer.hpp"
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormHeightField : public TForm
 {
 __published:	// IDE-managed Components
-	TGLSceneViewer *GLSceneViewer1;
+	TGLSceneViewer *GLSceneViewer;
 	TPanel *Panel1;
 	TLabel *Label1;
 	TLabel *Label2;
@@ -51,9 +51,9 @@ __published:	// IDE-managed Components
 	void __fastcall ComboBox1Change(TObject *Sender);
 	void __fastcall CheckBox1Click(TObject *Sender);
 	void __fastcall TrackBar1Change(TObject *Sender);
-	void __fastcall GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
+	void __fastcall GLSceneViewerMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
           int X, int Y);
-	void __fastcall GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift, int X,
+	void __fastcall GLSceneViewerMouseMove(TObject *Sender, TShiftState Shift, int X,
           int Y);
 	void __fastcall TrackBar2Change(TObject *Sender);
 	void __fastcall TrackBar3Change(TObject *Sender);
@@ -72,9 +72,9 @@ private:	// User declarations
 	void __fastcall Formula3(const float x, const float y, float &z,
 		  TVector4f &color, TTexPoint &texPoint);
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormHeightField(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormHeightField *FormHeightField;
 //---------------------------------------------------------------------------
 #endif

+ 15 - 3
Examples/Demos/graph/points/PointsC.cbproj

@@ -64,8 +64,6 @@
         <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>
@@ -121,6 +119,11 @@
         <BT_BuildType>Debug</BT_BuildType>
         <ILINK_LibraryPath>$(BDSCOMMONDIR)\Dcp;$(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>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
@@ -137,7 +140,7 @@
     </PropertyGroup>
     <ItemGroup>
         <CppCompile Include="fPointsC.cpp">
-            <Form>Form1</Form>
+            <Form>FormPoints</Form>
             <FormType>dfm</FormType>
             <DependentOn>fPointsC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
@@ -172,6 +175,15 @@
                 <Source>
                     <Source Name="MainSource">PointsC.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">

+ 2 - 2
Examples/Demos/graph/points/PointsC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fPointsC.cpp", Form1);
+USEFORM("fPointsC.cpp", FormPoints);
 //---------------------------------------------------------------------------
 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(TFormPoints), &FormPoints);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 11 - 11
Examples/Demos/graph/points/fPointsC.cpp

@@ -14,18 +14,18 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormPoints *FormPoints;
 
 const int
    cNbPoints = 200;
 
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormPoints::TFormPoints(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TFormPoints::FormCreate(TObject *Sender)
 {
    // allocate points in the 1st point set
    GLPoints1->Positions->Count = cNbPoints;
@@ -38,7 +38,7 @@ void __fastcall TForm1::FormCreate(TObject *Sender)
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaTime,
+void __fastcall TFormPoints::GLCadencer1Progress(TObject *Sender, const double deltaTime,
           const double newTime)
 {
    int i;
@@ -70,14 +70,14 @@ void __fastcall TForm1::GLCadencer1Progress(TObject *Sender, const double deltaT
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject *Sender, TMouseButton Button,
+void __fastcall TFormPoints::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 TFormPoints::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shift,
           int X, int Y)
 {
   if (Shift.Contains(ssLeft) || Shift.Contains(ssRight))
@@ -89,24 +89,24 @@ void __fastcall TForm1::GLSceneViewer1MouseMove(TObject *Sender, TShiftState Shi
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::CBAnimateClick(TObject *Sender)
+void __fastcall TFormPoints::CBAnimateClick(TObject *Sender)
 {
    GLPoints1->Static = !CBAnimate->Checked;
    GLPoints2->Static = !CBAnimate->Checked;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::CBPointParamsClick(TObject *Sender)
+void __fastcall TFormPoints::CBPointParamsClick(TObject *Sender)
 {
    GLPoints1->PointParameters->Enabled = CBPointParams->Checked;
    GLPoints2->PointParameters->Enabled = CBPointParams->Checked;
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::Timer1Timer(TObject *Sender)
+void __fastcall TFormPoints::Timer1Timer(TObject *Sender)
 {
-   LabelFPS->Caption = Format("%.1f FPS",
-     ARRAYOFCONST ((GLSceneViewer1->FramesPerSecond())));
+   LabelFPS->Caption = //Format("%.1f FPS", ARRAYOFCONST ((
+	  GLSceneViewer1->FramesPerSecond(); //)))
    GLSceneViewer1->ResetPerformanceMonitor();
 }
 //---------------------------------------------------------------------------

+ 1 - 4
Examples/Demos/graph/points/fPointsC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormPoints: TFormPoints
   Left = 0
   Top = 0
   Caption = 'Points'
@@ -26,8 +26,6 @@ object Form1: TForm1
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
-    ExplicitWidth = 539
-    ExplicitHeight = 406
   end
   object Panel1: TPanel
     Left = 0
@@ -36,7 +34,6 @@ object Form1: TForm1
     Height = 23
     Align = alTop
     TabOrder = 1
-    ExplicitWidth = 487
     object LabelFPS: TLabel
       Left = 266
       Top = 5

+ 3 - 3
Examples/Demos/graph/points/fPointsC.h

@@ -17,7 +17,7 @@
 #include "GLS.SceneViewer.hpp"
 
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormPoints : 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 TForm1(TComponent* Owner);
+	__fastcall TFormPoints(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormPoints *FormPoints;
 //---------------------------------------------------------------------------
 #endif

+ 15 - 3
Examples/Demos/graph/projection/ProjectionC.cbproj

@@ -70,8 +70,6 @@
         <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>
@@ -124,6 +122,11 @@
         <Defines>_DEBUG;$(Defines)</Defines>
         <ILINK_LibraryPath>$(BDSCOMMONDIR)\Dcp;$(BDSLIB)\$(PLATFORM)$(CC_SUFFIX)\debug;$(ILINK_LibraryPath)</ILINK_LibraryPath>
         <LinkPackageImports>rtl.bpi;vcl.bpi;GLScene_RT.bpi;fmx.bpi;xmlrtl.bpi;vclimg.bpi</LinkPackageImports>
+        <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <VerInfo_Locale>1033</VerInfo_Locale>
+        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>none</AppDPIAwarenessMode>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <Defines>_DEBUG;$(Defines)</Defines>
@@ -139,7 +142,7 @@
     </PropertyGroup>
     <ItemGroup>
         <CppCompile Include="fProjectionC.cpp">
-            <Form>Form1</Form>
+            <Form>FormProjection</Form>
             <FormType>dfm</FormType>
             <DependentOn>fProjectionC.h</DependentOn>
             <BuildOrder>2</BuildOrder>
@@ -209,6 +212,15 @@
                     <ProjectProperties Name="VerifyPackages">True</ProjectProperties>
                     <ProjectProperties Name="IndexFiles">False</ProjectProperties>
                 </ProjectProperties>
+                <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">

+ 2 - 2
Examples/Demos/graph/projection/ProjectionC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fProjectionC.cpp", Form1);
+USEFORM("fProjectionC.cpp", FormProjection);
 //---------------------------------------------------------------------------
 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(TFormProjection), &FormProjection);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 7 - 7
Examples/Demos/graph/projection/fProjectionC.cpp

@@ -19,14 +19,14 @@
 #pragma link "GLS.BaseClasses"
 
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormProjection *FormProjection;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
+__fastcall TFormProjection::TFormProjection(TComponent* Owner)
 	: TForm(Owner)
 {
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject* Sender)
+void __fastcall TFormProjection::FormCreate(TObject* Sender)
 {
     int i;
     // generate a bunch of random points
@@ -37,7 +37,7 @@ void __fastcall TForm1::FormCreate(TObject* Sender)
 	}
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::DirectOpenGLRender(TObject *Sender, TGLRenderContextInfo &rci)
+void __fastcall TFormProjection::DirectOpenGLRender(TObject *Sender, TGLRenderContextInfo &rci)
 
 {
    int i;
@@ -74,13 +74,13 @@ void __fastcall TForm1::DirectOpenGLRender(TObject *Sender, TGLRenderContextInfo
    glEnd();
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::SceneViewerMouseDown(TObject *Sender, TMouseButton Button,
+void __fastcall TFormProjection::SceneViewerMouseDown(TObject *Sender, TMouseButton Button,
           TShiftState Shift, int X, int Y)
 {
    mx = X; my = Y;
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::SceneViewerMouseMove(TObject *Sender, TShiftState Shift, int X,
+void __fastcall TFormProjection::SceneViewerMouseMove(TObject *Sender, TShiftState Shift, int X,
           int Y)
 {
    if (Shift.Contains(ssLeft))
@@ -91,7 +91,7 @@ void __fastcall TForm1::SceneViewerMouseMove(TObject *Sender, TShiftState Shift,
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
+void __fastcall TFormProjection::FormMouseWheel(TObject *Sender, TShiftState Shift, int WheelDelta,
           TPoint &MousePos, bool &Handled)
 {
    GLPlane->Position->Y = GLPlane->Position->Y+WheelDelta*0.001;

+ 1 - 1
Examples/Demos/graph/projection/fProjectionC.dfm

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormProjection: TFormProjection
   Left = 0
   Top = 0
   Caption = 'Projection'

+ 3 - 3
Examples/Demos/graph/projection/fProjectionC.h

@@ -19,7 +19,7 @@
 
 
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormProjection : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *SceneViewer;
@@ -43,9 +43,9 @@ __published:	// IDE-managed Components
 private:	// User declarations
     int mx, my;
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormProjection(TComponent* Owner);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormProjection *FormProjection;
 //---------------------------------------------------------------------------
 #endif

+ 1 - 1
Examples/Demos/graph/splines/SplinesC.cbproj

@@ -153,7 +153,7 @@
     <ItemGroup>
         <CppCompile Include="fSplinesC.cpp">
             <BuildOrder>2</BuildOrder>
-            <Form>Form1</Form>
+            <Form>FormSplines</Form>
             <DependentOn>fSplinesC.h</DependentOn>
             <BuildOrder>0</BuildOrder>
         </CppCompile>

+ 2 - 2
Examples/Demos/graph/splines/SplinesC.cpp

@@ -11,14 +11,14 @@
 
 #include <vcl.h>
 #pragma hdrstop
-USEFORM("fSplinesC.cpp", Form1);
+USEFORM("fSplinesC.cpp", FormSplines);
 //---------------------------------------------------------------------------
 WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
 {
         try
         {
                  Application->Initialize();
-                 Application->CreateForm(__classid(TForm1), &Form1);
+                 Application->CreateForm(__classid(TFormSplines), &FormSplines);
 		Application->Run();
         }
         catch (Exception &exception)

+ 2 - 2
Examples/Demos/graph/splines/SplinesD.dpr

@@ -12,12 +12,12 @@ program SplinesD;
 
 uses
   Forms,
-  fSplinesD in 'fSplinesD.pas' {Form1};
+  fSplinesD in 'fSplinesD.pas' {FormSplines};
 
 {$R *.RES}
 
 begin
   Application.Initialize;
-  Application.CreateForm(TForm1, Form1);
+  Application.CreateForm(TFormSplines, FormSplines);
   Application.Run;
 end.

+ 1 - 1
Examples/Demos/graph/splines/SplinesD.dproj

@@ -137,7 +137,7 @@
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
         <DCCReference Include="fSplinesD.pas">
-            <Form>Form1</Form>
+            <Form>FormSplines</Form>
         </DCCReference>
         <BuildConfiguration Include="Base">
             <Key>Base</Key>

+ 6 - 6
Examples/Demos/graph/splines/fSplinesC.cpp

@@ -1,4 +1,4 @@
-/*: This is a quick demo for the TGLLines object and spline functionality.
+/* This is a quick demo for the TGLLines object and spline functionality.
 
    TGLLines can handle normal lines and cubic splines, each node can have a
    different color, and the line can be color-interpolated.
@@ -22,15 +22,15 @@
 #pragma link "GLS.Coordinates"
 
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormSplines *FormSplines;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent * Owner):TForm(Owner)
+__fastcall TFormSplines::TFormSplines(TComponent * Owner):TForm(Owner)
 {
 }
 
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::MoveCenterNodeTo(int x, int y)
+void __fastcall TFormSplines::MoveCenterNodeTo(int x, int y)
 {
   GLLines1->Nodes->Items[1]->AsAffineVector =
     GLSceneViewer1->Buffer->ScreenToWorld(x, y);
@@ -38,7 +38,7 @@ void __fastcall TForm1::MoveCenterNodeTo(int x, int y)
 
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLSceneViewer1MouseDown(TObject * Sender,
+void __fastcall TFormSplines::GLSceneViewer1MouseDown(TObject * Sender,
                                                 TMouseButton Button,
                                                 TShiftState Shift, int X, int Y)
 {
@@ -47,7 +47,7 @@ void __fastcall TForm1::GLSceneViewer1MouseDown(TObject * Sender,
 
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::GLSceneViewer1MouseMove(TObject * Sender,
+void __fastcall TFormSplines::GLSceneViewer1MouseMove(TObject * Sender,
                                                 TShiftState Shift, int X, int Y)
 {
   if(Shift.Contains(ssShift))

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

@@ -1,4 +1,4 @@
-object Form1: TForm1
+object FormSplines: TFormSplines
   Left = 217
   Top = 127
   Caption = 'Splines'

+ 3 - 3
Examples/Demos/graph/splines/fSplinesC.h

@@ -14,7 +14,7 @@
 #include "GLS.Coordinates.hpp"
 
 //---------------------------------------------------------------------------
-class TForm1:public TForm
+class TFormSplines:public TForm
 {
 __published:                   // IDE-managed Components
   TGLScene * GLScene1;
@@ -28,12 +28,12 @@ __published:                   // IDE-managed Components
                                           int X, int Y);
 private:                       // User declarations
 public:                        // User declarations
-    __fastcall TForm1(TComponent * Owner);
+    __fastcall TFormSplines(TComponent * Owner);
 
   void __fastcall MoveCenterNodeTo(int x, int y);
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormSplines *FormSplines;
 //---------------------------------------------------------------------------
 #endif
 

+ 11 - 13
Examples/Demos/graph/splines/fSplinesD.dfm

@@ -1,35 +1,33 @@
-object Form1: TForm1
+object FormSplines: TFormSplines
   Left = 198
   Top = 140
   BorderWidth = 5
   Caption = 'Splines'
-  ClientHeight = 481
-  ClientWidth = 629
+  ClientHeight = 436
+  ClientWidth = 587
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
-  PixelsPerInch = 120
-  TextHeight = 16
+  Position = poScreenCenter
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 629
-    Height = 481
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 587
+    Height = 436
     Camera = GLCamera1
     Buffer.BackgroundColor = clTeal
-    FieldOfView = 168.130828857421900000
+    FieldOfView = 166.915924072265600000
     PenAsTouch = False
     Align = alClient
     OnMouseDown = GLSceneViewer1MouseDown
     OnMouseMove = GLSceneViewer1MouseMove
     TabOrder = 0
+    ExplicitWidth = 533
+    ExplicitHeight = 402
   end
   object GLScene1: TGLScene
     Left = 16

+ 5 - 5
Examples/Demos/graph/splines/fSplinesD.pas

@@ -20,7 +20,7 @@ uses
   GLS.VectorGeometry;
 
 type
-  TForm1 = class(TForm)
+  TFormSplines = class(TForm)
     GLScene1: TGLScene;
     GLSceneViewer1: TGLSceneViewer;
     GLCamera1: TGLCamera;
@@ -35,24 +35,24 @@ type
   end;
 
 var
-  Form1: TForm1;
+  FormSplines: TFormSplines;
 
 implementation
 
 {$R *.DFM}
 
-procedure TForm1.MoveCenterNodeTo(x, y : Integer);
+procedure TFormSplines.MoveCenterNodeTo(x, y : Integer);
 begin
    Lines1.Nodes[1].AsAffineVector:=GLSceneViewer1.Buffer.ScreenToWorld(x, y);
 end;
 
-procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject;
+procedure TFormSplines.GLSceneViewer1MouseDown(Sender: TObject;
   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 begin
    MoveCenterNodeTo(x, y);
 end;
 
-procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject;
+procedure TFormSplines.GLSceneViewer1MouseMove(Sender: TObject;
   Shift: TShiftState; X, Y: Integer);
 begin
    if Shift<>[] then

+ 10 - 6
Examples/Demos/materials/MaterialScript/fMatScriptC.cpp

@@ -18,6 +18,7 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 
+#pragma link "GLS.SimpleNavigation"
 #pragma resource "*.dfm"
 TForm1 *Form1;
 //---------------------------------------------------------------------------
@@ -28,25 +29,28 @@ __fastcall TForm1::TForm1(TComponent* Owner)
 //---------------------------------------------------------------------------
 void __fastcall TForm1::FormCreate(TObject *Sender)
 {
-   TFileName Path = GetCurrentAssetPath();
-   GLMaterialScripter1->DebugMemo = Memo2;;
+   PathToData = GetCurrentAssetPath(); // not use ExtractFilePath(Application->ExeName)
+   SetCurrentDir(PathToData);     // ..glscene\assets
+   GLMaterialLibrary1->TexturePaths = PathToData;
+   GLMaterialScripter1->DebugMemo = Memo2;
    GLCube1->Material->MaterialLibrary = GLMaterialLibrary1;
-   SetCurrentDir(ExtractFilePath(Application->ExeName));
+
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::Button1Click(TObject *Sender)
+void __fastcall TForm1::ButtonLoadScriptClick(TObject *Sender)
 {
-   OpenDialog1->InitialDir = ExtractFilePath(Application->ExeName);
+   OpenDialog1->InitialDir = PathToData  + "\\script";
    if (OpenDialog1->Execute())
    {
 	  if (FileExists(OpenDialog1->FileName))
 	  Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
    }
+   SetCurrentDir(PathToData);
 }
 //---------------------------------------------------------------------------
 
-void __fastcall TForm1::Button2Click(TObject *Sender)
+void __fastcall TForm1::ButtonExecuteScriptClick(TObject *Sender)
 {
    GLMaterialLibrary1->Materials->Clear();
    GLCube1->Material->MaterialLibrary = GLMaterialLibrary1;

+ 25 - 7
Examples/Demos/materials/MaterialScript/fMatScriptC.dfm

@@ -10,9 +10,7 @@ object Form1: TForm1
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
-  OldCreateOrder = False
   OnCreate = FormCreate
-  PixelsPerInch = 96
   TextHeight = 13
   object Panel1: TPanel
     Left = 346
@@ -57,23 +55,23 @@ object Form1: TForm1
       ScrollBars = ssVertical
       TabOrder = 0
     end
-    object Button1: TButton
+    object ButtonLoadScript: TButton
       Left = 72
       Top = 232
       Width = 161
       Height = 25
-      Caption = 'Load a Script'
+      Caption = 'Load Script'
       TabOrder = 1
-      OnClick = Button1Click
+      OnClick = ButtonLoadScriptClick
     end
-    object Button2: TButton
+    object ButtonExecuteScript: TButton
       Left = 72
       Top = 264
       Width = 161
       Height = 25
       Caption = 'Execute Script'
       TabOrder = 2
-      OnClick = Button2Click
+      OnClick = ButtonExecuteScriptClick
     end
     object Memo2: TMemo
       Left = 8
@@ -688,4 +686,24 @@ object Form1: TForm1
     Left = 248
     Top = 16
   end
+  object GLSimpleNavigation1: TGLSimpleNavigation
+    Form = Owner
+    GLSceneViewer = GLSceneViewer1
+    FormCaption = 'Material Script - %FPS'
+    KeyCombinations = <
+      item
+        ShiftState = [ssLeft, ssRight]
+        Action = snaZoom
+      end
+      item
+        ShiftState = [ssLeft]
+        Action = snaMoveAroundTarget
+      end
+      item
+        ShiftState = [ssRight]
+        Action = snaMoveAroundTarget
+      end>
+    Left = 86
+    Top = 183
+  end
 end

+ 7 - 4
Examples/Demos/materials/MaterialScript/fMatScriptC.h

@@ -20,6 +20,7 @@
 #include "GLS.SceneViewer.hpp"
 #include "GLS.Utils.hpp"
 #include "Jpeg.hpp"
+#include "GLS.SimpleNavigation.hpp"
 
 //---------------------------------------------------------------------------
 class TForm1 : public TForm
@@ -31,8 +32,8 @@ __published:	// IDE-managed Components
 	TLabel *Label3;
 	TLabel *Label4;
 	TMemo *Memo1;
-	TButton *Button1;
-	TButton *Button2;
+	TButton *ButtonLoadScript;
+	TButton *ButtonExecuteScript;
 	TMemo *Memo2;
 	TGLSceneViewer *GLSceneViewer1;
 	TGLScene *GLScene1;
@@ -44,10 +45,12 @@ __published:	// IDE-managed Components
 	TOpenDialog *OpenDialog1;
 	TGLMaterialScripter *GLMaterialScripter1;
 	TGLCadencer *GLCadencer1;
+	TGLSimpleNavigation *GLSimpleNavigation1;
 	void __fastcall FormCreate(TObject *Sender);
-	void __fastcall Button1Click(TObject *Sender);
-	void __fastcall Button2Click(TObject *Sender);
+	void __fastcall ButtonLoadScriptClick(TObject *Sender);
+	void __fastcall ButtonExecuteScriptClick(TObject *Sender);
 private:	// User declarations
+	TFileName PathToData;
 public:		// User declarations
 	__fastcall TForm1(TComponent* Owner);
 };

+ 2 - 0
Examples/Demos/materials/MaterialScript/fMatScriptD.dfm

@@ -94,6 +94,8 @@ object FormMatScript: TFormMatScript
     PenAsTouch = False
     Align = alClient
     TabOrder = 1
+    ExplicitLeft = 12
+    ExplicitTop = -40
   end
   object GLScene1: TGLScene
     Left = 24

+ 7 - 5
Examples/Demos/materials/MaterialScript/fMatScriptD.pas

@@ -22,6 +22,7 @@ uses
   GLS.BaseClasses,
   GLS.Utils,
   GLS.SimpleNavigation;
+
 type
   TFormMatScript = class(TForm)
     Panel1: TPanel;
@@ -48,7 +49,7 @@ type
     procedure ButtonExecuteScriptClick(Sender: TObject);
     procedure FormCreate(Sender: TObject);
   private
-    Path: TFileName;
+    PathToData: TFileName;
   public
   end;
 var
@@ -59,19 +60,20 @@ implementation
 {$R *.dfm}
 procedure TFormMatScript.FormCreate(Sender: TObject);
 begin
-   Path := GetCurrentAssetPath();
-   SetCurrentDir(Path);  // ..glscene\assets
-   GLMaterialLibrary1.TexturePaths := Path{ + '\texture'};
+   PathToData := GetCurrentAssetPath();
+   SetCurrentDir(PathToData);  // ..glscene\assets
+   GLMaterialLibrary1.TexturePaths := PathToData;
    GLMaterialScripter1.DebugMemo := Memo2;
    GLCube1.Material.MaterialLibrary := GLMaterialLibrary1;
 end;
 
 procedure TFormMatScript.ButtonLoadScriptClick(Sender: TObject);
 begin
-   OpenDialog1.InitialDir := Path + '\script';
+   OpenDialog1.InitialDir := PathToData  + '\script';
    if OpenDialog1.Execute then
       if FileExists(Opendialog1.FileName) then
       Memo1.Lines.LoadFromFile(Opendialog1.FileName);
+   SetCurrentDir(PathToData);
 end;
 
 procedure TFormMatScript.ButtonExecuteScriptClick(Sender: TObject);

+ 98 - 86
Examples/Demos/materials/materials.groupproj

@@ -3,78 +3,81 @@
         <ProjectGuid>{030D665E-1C50-48A9-B6CA-8D07889A6DE2}</ProjectGuid>
     </PropertyGroup>
     <ItemGroup>
-        <Projects Include="cubemap\CubemapD.dproj">
-            <Dependencies/>
-        </Projects>
         <Projects Include="cubemap\CubemapC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="customquad\CustomQuadD.dproj">
+        <Projects Include="cubemap\CubemapD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="customquad\CustomQuadC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="dynamictexture\DynTextureD.dproj">
+        <Projects Include="customquad\CustomQuadD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="dynamictexture\DynTextureC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="dyncubemap\DynCubemapD.dproj">
+        <Projects Include="dynamictexture\DynTextureD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="dyncubemap\DynCubemapC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="fire2D_gr32\Fire2D_GR32.dproj">
+        <Projects Include="dyncubemap\DynCubemapD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="MaterialScript\MatScriptD.dproj">
+        <Projects Include="fire2D_gr32\Fire2D_GR32.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="MaterialScript\MatScriptC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="mirror\MirrorD.dproj">
+        <Projects Include="MaterialScript\MatScriptD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="mirror\MirrorC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="multimaterial\MultiMaterialD.dproj">
+        <Projects Include="mirror\MirrorD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="multimaterial\MultiMaterialC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="multipass\MultipassD.dproj">
+        <Projects Include="multimaterial\MultiMaterialD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="multipass\MultipassC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="multitexture\MultiTextureD.dproj">
+        <Projects Include="multipass\MultipassD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="multitexture\MultiTextureC.cbproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="objectmats\ObjectMatsD.dproj">
+        <Projects Include="multitexture\MultiTextureD.dproj">
             <Dependencies/>
         </Projects>
-        <Projects Include="proceduralclouds\ProcCloudsD.dproj">
+        <Projects Include="objectmats\ObjectMatsD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="proceduralclouds\ProcCloudsC.cbproj">
             <Dependencies/>
         </Projects>
+        <Projects Include="proceduralclouds\ProcCloudsD.dproj">
+            <Dependencies/>
+        </Projects>
         <Projects Include="texanim\TexAnimD.dproj">
             <Dependencies/>
         </Projects>
         <Projects Include="texanim\TexAnimC.cbproj">
             <Dependencies/>
         </Projects>
+        <Projects Include="texcombine\TexCombineC.cbproj">
+            <Dependencies/>
+        </Projects>
         <Projects Include="texcombine\TexCombineD.dproj">
             <Dependencies/>
         </Projects>
@@ -101,15 +104,6 @@
             <Default.Personality/>
         </BorlandProject>
     </ProjectExtensions>
-    <Target Name="CubemapD">
-        <MSBuild Projects="cubemap\CubemapD.dproj"/>
-    </Target>
-    <Target Name="CubemapD:Clean">
-        <MSBuild Projects="cubemap\CubemapD.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="CubemapD:Make">
-        <MSBuild Projects="cubemap\CubemapD.dproj" Targets="Make"/>
-    </Target>
     <Target Name="CubemapC">
         <MSBuild Projects="cubemap\CubemapC.cbproj"/>
     </Target>
@@ -119,14 +113,14 @@
     <Target Name="CubemapC:Make">
         <MSBuild Projects="cubemap\CubemapC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="CustomQuadD">
-        <MSBuild Projects="customquad\CustomQuadD.dproj"/>
+    <Target Name="CubemapD">
+        <MSBuild Projects="cubemap\CubemapD.dproj"/>
     </Target>
-    <Target Name="CustomQuadD:Clean">
-        <MSBuild Projects="customquad\CustomQuadD.dproj" Targets="Clean"/>
+    <Target Name="CubemapD:Clean">
+        <MSBuild Projects="cubemap\CubemapD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="CustomQuadD:Make">
-        <MSBuild Projects="customquad\CustomQuadD.dproj" Targets="Make"/>
+    <Target Name="CubemapD:Make">
+        <MSBuild Projects="cubemap\CubemapD.dproj" Targets="Make"/>
     </Target>
     <Target Name="CustomQuadC">
         <MSBuild Projects="customquad\CustomQuadC.cbproj"/>
@@ -137,14 +131,14 @@
     <Target Name="CustomQuadC:Make">
         <MSBuild Projects="customquad\CustomQuadC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="DynTextureD">
-        <MSBuild Projects="dynamictexture\DynTextureD.dproj"/>
+    <Target Name="CustomQuadD">
+        <MSBuild Projects="customquad\CustomQuadD.dproj"/>
     </Target>
-    <Target Name="DynTextureD:Clean">
-        <MSBuild Projects="dynamictexture\DynTextureD.dproj" Targets="Clean"/>
+    <Target Name="CustomQuadD:Clean">
+        <MSBuild Projects="customquad\CustomQuadD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="DynTextureD:Make">
-        <MSBuild Projects="dynamictexture\DynTextureD.dproj" Targets="Make"/>
+    <Target Name="CustomQuadD:Make">
+        <MSBuild Projects="customquad\CustomQuadD.dproj" Targets="Make"/>
     </Target>
     <Target Name="DynTextureC">
         <MSBuild Projects="dynamictexture\DynTextureC.cbproj"/>
@@ -155,14 +149,14 @@
     <Target Name="DynTextureC:Make">
         <MSBuild Projects="dynamictexture\DynTextureC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="DynCubemapD">
-        <MSBuild Projects="dyncubemap\DynCubemapD.dproj"/>
+    <Target Name="DynTextureD">
+        <MSBuild Projects="dynamictexture\DynTextureD.dproj"/>
     </Target>
-    <Target Name="DynCubemapD:Clean">
-        <MSBuild Projects="dyncubemap\DynCubemapD.dproj" Targets="Clean"/>
+    <Target Name="DynTextureD:Clean">
+        <MSBuild Projects="dynamictexture\DynTextureD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="DynCubemapD:Make">
-        <MSBuild Projects="dyncubemap\DynCubemapD.dproj" Targets="Make"/>
+    <Target Name="DynTextureD:Make">
+        <MSBuild Projects="dynamictexture\DynTextureD.dproj" Targets="Make"/>
     </Target>
     <Target Name="DynCubemapC">
         <MSBuild Projects="dyncubemap\DynCubemapC.cbproj"/>
@@ -173,6 +167,15 @@
     <Target Name="DynCubemapC:Make">
         <MSBuild Projects="dyncubemap\DynCubemapC.cbproj" Targets="Make"/>
     </Target>
+    <Target Name="DynCubemapD">
+        <MSBuild Projects="dyncubemap\DynCubemapD.dproj"/>
+    </Target>
+    <Target Name="DynCubemapD:Clean">
+        <MSBuild Projects="dyncubemap\DynCubemapD.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="DynCubemapD:Make">
+        <MSBuild Projects="dyncubemap\DynCubemapD.dproj" Targets="Make"/>
+    </Target>
     <Target Name="Fire2D_GR32">
         <MSBuild Projects="fire2D_gr32\Fire2D_GR32.dproj"/>
     </Target>
@@ -182,15 +185,6 @@
     <Target Name="Fire2D_GR32:Make">
         <MSBuild Projects="fire2D_gr32\Fire2D_GR32.dproj" Targets="Make"/>
     </Target>
-    <Target Name="MatScriptD">
-        <MSBuild Projects="MaterialScript\MatScriptD.dproj"/>
-    </Target>
-    <Target Name="MatScriptD:Clean">
-        <MSBuild Projects="MaterialScript\MatScriptD.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="MatScriptD:Make">
-        <MSBuild Projects="MaterialScript\MatScriptD.dproj" Targets="Make"/>
-    </Target>
     <Target Name="MatScriptC">
         <MSBuild Projects="MaterialScript\MatScriptC.cbproj"/>
     </Target>
@@ -200,14 +194,14 @@
     <Target Name="MatScriptC:Make">
         <MSBuild Projects="MaterialScript\MatScriptC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="MirrorD">
-        <MSBuild Projects="mirror\MirrorD.dproj"/>
+    <Target Name="MatScriptD">
+        <MSBuild Projects="MaterialScript\MatScriptD.dproj"/>
     </Target>
-    <Target Name="MirrorD:Clean">
-        <MSBuild Projects="mirror\MirrorD.dproj" Targets="Clean"/>
+    <Target Name="MatScriptD:Clean">
+        <MSBuild Projects="MaterialScript\MatScriptD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="MirrorD:Make">
-        <MSBuild Projects="mirror\MirrorD.dproj" Targets="Make"/>
+    <Target Name="MatScriptD:Make">
+        <MSBuild Projects="MaterialScript\MatScriptD.dproj" Targets="Make"/>
     </Target>
     <Target Name="MirrorC">
         <MSBuild Projects="mirror\MirrorC.cbproj"/>
@@ -218,14 +212,14 @@
     <Target Name="MirrorC:Make">
         <MSBuild Projects="mirror\MirrorC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="MultiMaterialD">
-        <MSBuild Projects="multimaterial\MultiMaterialD.dproj"/>
+    <Target Name="MirrorD">
+        <MSBuild Projects="mirror\MirrorD.dproj"/>
     </Target>
-    <Target Name="MultiMaterialD:Clean">
-        <MSBuild Projects="multimaterial\MultiMaterialD.dproj" Targets="Clean"/>
+    <Target Name="MirrorD:Clean">
+        <MSBuild Projects="mirror\MirrorD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="MultiMaterialD:Make">
-        <MSBuild Projects="multimaterial\MultiMaterialD.dproj" Targets="Make"/>
+    <Target Name="MirrorD:Make">
+        <MSBuild Projects="mirror\MirrorD.dproj" Targets="Make"/>
     </Target>
     <Target Name="MultiMaterialC">
         <MSBuild Projects="multimaterial\MultiMaterialC.cbproj"/>
@@ -236,14 +230,14 @@
     <Target Name="MultiMaterialC:Make">
         <MSBuild Projects="multimaterial\MultiMaterialC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="MultipassD">
-        <MSBuild Projects="multipass\MultipassD.dproj"/>
+    <Target Name="MultiMaterialD">
+        <MSBuild Projects="multimaterial\MultiMaterialD.dproj"/>
     </Target>
-    <Target Name="MultipassD:Clean">
-        <MSBuild Projects="multipass\MultipassD.dproj" Targets="Clean"/>
+    <Target Name="MultiMaterialD:Clean">
+        <MSBuild Projects="multimaterial\MultiMaterialD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="MultipassD:Make">
-        <MSBuild Projects="multipass\MultipassD.dproj" Targets="Make"/>
+    <Target Name="MultiMaterialD:Make">
+        <MSBuild Projects="multimaterial\MultiMaterialD.dproj" Targets="Make"/>
     </Target>
     <Target Name="MultipassC">
         <MSBuild Projects="multipass\MultipassC.cbproj"/>
@@ -254,14 +248,14 @@
     <Target Name="MultipassC:Make">
         <MSBuild Projects="multipass\MultipassC.cbproj" Targets="Make"/>
     </Target>
-    <Target Name="MultiTextureD">
-        <MSBuild Projects="multitexture\MultiTextureD.dproj"/>
+    <Target Name="MultipassD">
+        <MSBuild Projects="multipass\MultipassD.dproj"/>
     </Target>
-    <Target Name="MultiTextureD:Clean">
-        <MSBuild Projects="multitexture\MultiTextureD.dproj" Targets="Clean"/>
+    <Target Name="MultipassD:Clean">
+        <MSBuild Projects="multipass\MultipassD.dproj" Targets="Clean"/>
     </Target>
-    <Target Name="MultiTextureD:Make">
-        <MSBuild Projects="multitexture\MultiTextureD.dproj" Targets="Make"/>
+    <Target Name="MultipassD:Make">
+        <MSBuild Projects="multipass\MultipassD.dproj" Targets="Make"/>
     </Target>
     <Target Name="MultiTextureC">
         <MSBuild Projects="multitexture\MultiTextureC.cbproj"/>
@@ -272,6 +266,15 @@
     <Target Name="MultiTextureC:Make">
         <MSBuild Projects="multitexture\MultiTextureC.cbproj" Targets="Make"/>
     </Target>
+    <Target Name="MultiTextureD">
+        <MSBuild Projects="multitexture\MultiTextureD.dproj"/>
+    </Target>
+    <Target Name="MultiTextureD:Clean">
+        <MSBuild Projects="multitexture\MultiTextureD.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="MultiTextureD:Make">
+        <MSBuild Projects="multitexture\MultiTextureD.dproj" Targets="Make"/>
+    </Target>
     <Target Name="ObjectMatsD">
         <MSBuild Projects="objectmats\ObjectMatsD.dproj"/>
     </Target>
@@ -281,15 +284,6 @@
     <Target Name="ObjectMatsD:Make">
         <MSBuild Projects="objectmats\ObjectMatsD.dproj" Targets="Make"/>
     </Target>
-    <Target Name="ProcCloudsD">
-        <MSBuild Projects="proceduralclouds\ProcCloudsD.dproj"/>
-    </Target>
-    <Target Name="ProcCloudsD:Clean">
-        <MSBuild Projects="proceduralclouds\ProcCloudsD.dproj" Targets="Clean"/>
-    </Target>
-    <Target Name="ProcCloudsD:Make">
-        <MSBuild Projects="proceduralclouds\ProcCloudsD.dproj" Targets="Make"/>
-    </Target>
     <Target Name="ProcCloudsC">
         <MSBuild Projects="proceduralclouds\ProcCloudsC.cbproj"/>
     </Target>
@@ -299,6 +293,15 @@
     <Target Name="ProcCloudsC:Make">
         <MSBuild Projects="proceduralclouds\ProcCloudsC.cbproj" Targets="Make"/>
     </Target>
+    <Target Name="ProcCloudsD">
+        <MSBuild Projects="proceduralclouds\ProcCloudsD.dproj"/>
+    </Target>
+    <Target Name="ProcCloudsD:Clean">
+        <MSBuild Projects="proceduralclouds\ProcCloudsD.dproj" Targets="Clean"/>
+    </Target>
+    <Target Name="ProcCloudsD:Make">
+        <MSBuild Projects="proceduralclouds\ProcCloudsD.dproj" Targets="Make"/>
+    </Target>
     <Target Name="TexAnimD">
         <MSBuild Projects="texanim\TexAnimD.dproj"/>
     </Target>
@@ -317,6 +320,15 @@
     <Target Name="TexAnimC:Make">
         <MSBuild Projects="texanim\TexAnimC.cbproj" Targets="Make"/>
     </Target>
+    <Target Name="TexCombineC">
+        <MSBuild Projects="texcombine\TexCombineC.cbproj"/>
+    </Target>
+    <Target Name="TexCombineC:Clean">
+        <MSBuild Projects="texcombine\TexCombineC.cbproj" Targets="Clean"/>
+    </Target>
+    <Target Name="TexCombineC:Make">
+        <MSBuild Projects="texcombine\TexCombineC.cbproj" Targets="Make"/>
+    </Target>
     <Target Name="TexCombineD">
         <MSBuild Projects="texcombine\TexCombineD.dproj"/>
     </Target>
@@ -372,13 +384,13 @@
         <MSBuild Projects="TransparencyAdvanced\TransparencyAdv.dproj" Targets="Make"/>
     </Target>
     <Target Name="Build">
-        <CallTarget Targets="CubemapD;CubemapC;CustomQuadD;CustomQuadC;DynTextureD;DynTextureC;DynCubemapD;DynCubemapC;Fire2D_GR32;MatScriptD;MatScriptC;MirrorD;MirrorC;MultiMaterialD;MultiMaterialC;MultipassD;MultipassC;MultiTextureD;MultiTextureC;ObjectMatsD;ProcCloudsD;ProcCloudsC;TexAnimD;TexAnimC;TexCombineD;TexFormatD;TexFormatC;TransparencyD;TransparencyC;TransparencyAdv"/>
+        <CallTarget Targets="CubemapC;CubemapD;CustomQuadC;CustomQuadD;DynTextureC;DynTextureD;DynCubemapC;DynCubemapD;Fire2D_GR32;MatScriptC;MatScriptD;MirrorC;MirrorD;MultiMaterialC;MultiMaterialD;MultipassC;MultipassD;MultiTextureC;MultiTextureD;ObjectMatsD;ProcCloudsC;ProcCloudsD;TexAnimD;TexAnimC;TexCombineC;TexCombineD;TexFormatD;TexFormatC;TransparencyD;TransparencyC;TransparencyAdv"/>
     </Target>
     <Target Name="Clean">
-        <CallTarget Targets="CubemapD:Clean;CubemapC:Clean;CustomQuadD:Clean;CustomQuadC:Clean;DynTextureD:Clean;DynTextureC:Clean;DynCubemapD:Clean;DynCubemapC:Clean;Fire2D_GR32:Clean;MatScriptD:Clean;MatScriptC:Clean;MirrorD:Clean;MirrorC:Clean;MultiMaterialD:Clean;MultiMaterialC:Clean;MultipassD:Clean;MultipassC:Clean;MultiTextureD:Clean;MultiTextureC:Clean;ObjectMatsD:Clean;ProcCloudsD:Clean;ProcCloudsC:Clean;TexAnimD:Clean;TexAnimC:Clean;TexCombineD:Clean;TexFormatD:Clean;TexFormatC:Clean;TransparencyD:Clean;TransparencyC:Clean;TransparencyAdv:Clean"/>
+        <CallTarget Targets="CubemapC:Clean;CubemapD:Clean;CustomQuadC:Clean;CustomQuadD:Clean;DynTextureC:Clean;DynTextureD:Clean;DynCubemapC:Clean;DynCubemapD:Clean;Fire2D_GR32:Clean;MatScriptC:Clean;MatScriptD:Clean;MirrorC:Clean;MirrorD:Clean;MultiMaterialC:Clean;MultiMaterialD:Clean;MultipassC:Clean;MultipassD:Clean;MultiTextureC:Clean;MultiTextureD:Clean;ObjectMatsD:Clean;ProcCloudsC:Clean;ProcCloudsD:Clean;TexAnimD:Clean;TexAnimC:Clean;TexCombineC:Clean;TexCombineD:Clean;TexFormatD:Clean;TexFormatC:Clean;TransparencyD:Clean;TransparencyC:Clean;TransparencyAdv:Clean"/>
     </Target>
     <Target Name="Make">
-        <CallTarget Targets="CubemapD:Make;CubemapC:Make;CustomQuadD:Make;CustomQuadC:Make;DynTextureD:Make;DynTextureC:Make;DynCubemapD:Make;DynCubemapC:Make;Fire2D_GR32:Make;MatScriptD:Make;MatScriptC:Make;MirrorD:Make;MirrorC:Make;MultiMaterialD:Make;MultiMaterialC:Make;MultipassD:Make;MultipassC:Make;MultiTextureD:Make;MultiTextureC:Make;ObjectMatsD:Make;ProcCloudsD:Make;ProcCloudsC:Make;TexAnimD:Make;TexAnimC:Make;TexCombineD:Make;TexFormatD:Make;TexFormatC:Make;TransparencyD:Make;TransparencyC:Make;TransparencyAdv:Make"/>
+        <CallTarget Targets="CubemapC:Make;CubemapD:Make;CustomQuadC:Make;CustomQuadD:Make;DynTextureC:Make;DynTextureD:Make;DynCubemapC:Make;DynCubemapD:Make;Fire2D_GR32:Make;MatScriptC:Make;MatScriptD:Make;MirrorC:Make;MirrorD:Make;MultiMaterialC:Make;MultiMaterialD:Make;MultipassC:Make;MultipassD:Make;MultiTextureC:Make;MultiTextureD:Make;ObjectMatsD:Make;ProcCloudsC:Make;ProcCloudsD:Make;TexAnimD:Make;TexAnimC:Make;TexCombineC:Make;TexCombineD:Make;TexFormatD:Make;TexFormatC:Make;TransparencyD:Make;TransparencyC:Make;TransparencyAdv:Make"/>
     </Target>
     <Import Project="$(BDS)\Bin\CodeGear.Group.Targets" Condition="Exists('$(BDS)\Bin\CodeGear.Group.Targets')"/>
 </Project>

+ 59 - 0
Examples/Demos/materials/mirror/MirrorD.deployproj

@@ -0,0 +1,59 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <Import Condition="Exists('$(BDS)\bin\CodeGear.Deployment.targets')" Project="$(BDS)\bin\CodeGear.Deployment.targets"/>
+    <ProjectExtensions>
+        <ProjectFileVersion>12</ProjectFileVersion>
+    </ProjectExtensions>
+    <PropertyGroup/>
+    <ItemGroup Condition="'$(Platform)'=='Win64'">
+        <DeployFile Include="Win64\Debug\MirrorD.exe" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>MirrorD\</RemoteDir>
+            <RemoteName>MirrorD.exe</RemoteName>
+            <DeployClass>ProjectOutput</DeployClass>
+            <Operation>0</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+            <Required>True</Required>
+        </DeployFile>
+    </ItemGroup>
+    <ItemGroup Condition="'$(Platform)'=='Win32'">
+        <DeployFile Include="$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>MirrorD\Assets\</RemoteDir>
+            <RemoteName>Logo150x150.png</RemoteName>
+            <DeployClass>UWP_DelphiLogo150</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="Win32\Debug\AppxManifest.xml" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>MirrorD\</RemoteDir>
+            <RemoteName>AppxManifest.xml</RemoteName>
+            <DeployClass>ProjectUWPManifest</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>MirrorD\Assets\</RemoteDir>
+            <RemoteName>Logo44x44.png</RemoteName>
+            <DeployClass>UWP_DelphiLogo44</DeployClass>
+            <Operation>1</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+        </DeployFile>
+        <DeployFile Include="Win32\Debug\MirrorD.exe" Condition="'$(Config)'=='Debug'">
+            <RemoteDir>MirrorD\</RemoteDir>
+            <RemoteName>MirrorD.exe</RemoteName>
+            <DeployClass>ProjectOutput</DeployClass>
+            <Operation>0</Operation>
+            <LocalCommand/>
+            <RemoteCommand/>
+            <Overwrite>True</Overwrite>
+            <Required>True</Required>
+        </DeployFile>
+    </ItemGroup>
+    <ItemGroup Condition="'$(Platform)'=='Linux64'"/>
+</Project>

+ 8 - 8
Examples/Demos/materials/mirror/MirrorD.dpr

@@ -1,4 +1,4 @@
-{: GLMirror demo and sample.
+(* GLMirror demo and sample.
 
    Depiste its simplistic look, this sample showcases all the dos and don'ts
    of reflections with TGLMirror, this is a powerfull mirroring component,
@@ -19,23 +19,22 @@
    There is also a variety of settings to the right of the screen, those adjust
    internal options that have a direct impact of what the mirror will be able
    to do right, and how much time rendering will take. The scene contains three
-   groups of objects of interest:<ul>
-   <li>non-reflecting ones: green torus and cylinder, these are behind the mirror,
+   groups of objects of interest:
+    - non-reflecting ones: green torus and cylinder, these are behind the mirror,
       there are no particular issues with non-reflecting objects in front of a
       mirror (except objects not reflecting...), but by playing with the settings
       (ClearZBuffer especially) you'll notice they cause some artifacts if improperly
       handled.
-   <li>teapot group: those are reflected. See how disabling stencil will cause
+    - teapot group: those are reflected. See how disabling stencil will cause
       the reflected teapot to be visible outside of the mirror. If your mirror
       is in a wall (opaque on all sides around the mirror), you may not have to
       care about stenciling (the wall will overdraw mirror images).
-   <li>lone inclined gray cylinder: this one is a don't, it's an object that is
+   -  lone inclined gray cylinder: this one is a don't, it's an object that is
       reflecting but that goes through the mirror... well, you can do it,
       but you have to activate PlaneClip, otherwise objects on the other side
       of the mirror get reflected on the "wrong" side... (uncheck the option
       and see for yourself). PlaneClip is better avoided, it can make your FPS
       drop significantly on some 3D boards.
-   </ul>
 
    In addition to being opaque, transparent or semi-transparent, the mirror
    can also be textured as usual.
@@ -45,12 +44,13 @@
       The glEval-based teapot also performs (relatively) poorly on those boards,
       while on an old-fashioned TNT2 f.i., plane clipping has a negligible
       performance impact.
-}
+*)
+
 program MirrorD;
 
 uses
   Forms,
-  fMirrorD in 'fMirrorD.pas' {FormMirror};
+  fMirrorD in 'fMirrorD.pas';
 
 {$R *.RES}
 

+ 41 - 4
Examples/Demos/materials/mirror/MirrorD.dproj

@@ -28,6 +28,12 @@
         <CfgParent>Base</CfgParent>
         <Base>true</Base>
     </PropertyGroup>
+    <PropertyGroup Condition="('$(Platform)'=='Win32' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win32)'!=''">
+        <Cfg_1_Win32>true</Cfg_1_Win32>
+        <CfgParent>Cfg_1</CfgParent>
+        <Cfg_1>true</Cfg_1>
+        <Base>true</Base>
+    </PropertyGroup>
     <PropertyGroup Condition="('$(Platform)'=='Win64' and '$(Cfg_1)'=='true') or '$(Cfg_1_Win64)'!=''">
         <Cfg_1_Win64>true</Cfg_1_Win64>
         <CfgParent>Cfg_1</CfgParent>
@@ -70,17 +76,20 @@
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace)</DCC_Namespace>
         <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <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>
+        <BT_BuildType>Debug</BT_BuildType>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win64)'!=''">
         <UWP_DelphiLogo44>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png</UWP_DelphiLogo44>
         <UWP_DelphiLogo150>$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png</UWP_DelphiLogo150>
         <Manifest_File>$(BDS)\bin\default_app.manifest</Manifest_File>
         <DCC_Namespace>System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace)</DCC_Namespace>
-        <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <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>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
+        <BT_BuildType>Debug</BT_BuildType>
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1)'!=''">
         <DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
@@ -88,9 +97,13 @@
         <DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
         <DCC_DebugInformation>0</DCC_DebugInformation>
     </PropertyGroup>
+    <PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
+        <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
+    </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
         <AppEnableRuntimeThemes>true</AppEnableRuntimeThemes>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2)'!=''">
         <DCC_DebugInfoInExe>true</DCC_DebugInfoInExe>
@@ -106,6 +119,7 @@
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(ModuleName);FileDescription=$(ModuleName);ProductName=$(ModuleName)</VerInfo_Keys>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Cfg_2_Win64)'!=''">
         <BT_BuildType>Debug</BT_BuildType>
@@ -121,7 +135,7 @@
         <VerInfo_Keys>CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName)</VerInfo_Keys>
         <VerInfo_Locale>1033</VerInfo_Locale>
         <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
-        <AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
+        <AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
         <DCC_UnitSearchPath>..\..\..\..\Source;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
         <Icon_MainIcon>$(BDS)\bin\delphi_PROJECTICON.ico</Icon_MainIcon>
     </PropertyGroup>
@@ -164,6 +178,29 @@
                 <Platform value="Win64">False</Platform>
             </Platforms>
             <Deployment Version="3">
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png" Configuration="Debug" Class="UWP_DelphiLogo150">
+                    <Platform Name="Win32">
+                        <RemoteName>Logo150x150.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="$(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png" Configuration="Debug" Class="UWP_DelphiLogo44">
+                    <Platform Name="Win32">
+                        <RemoteName>Logo44x44.png</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Win32\Debug\AppxManifest.xml" Configuration="Debug" Class="ProjectUWPManifest">
+                    <Platform Name="Win32">
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName="Win32\Debug\MirrorD.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>MirrorD.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
                 <DeployFile LocalName="Win64\Debug\MirrorD.exe" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win64">
                         <RemoteName>MirrorD.exe</RemoteName>

+ 1 - 0
Examples/Demos/materials/proceduralclouds/fProcCloudsC.cpp

@@ -216,3 +216,4 @@ void __fastcall TFormCloudsC::MakeAndSaveCloudNoiseFileClick(TObject *Sender)
 }
 //---------------------------------------------------------------------------
 
+

+ 1 - 0
Examples/Demos/materials/proceduralclouds/fProcCloudsC.dfm

@@ -10,6 +10,7 @@ object FormCloudsC: TFormCloudsC
   Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer

+ 2 - 1
Examples/Demos/materials/proceduralclouds/fProcCloudsD.dfm

@@ -10,6 +10,7 @@ object FormClouds: TFormClouds
   Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
@@ -186,7 +187,7 @@ object FormClouds: TFormClouds
       OnClick = CBFormatChange
     end
     object RBDouble: TRadioButton
-      Left = 79
+      Left = 82
       Top = 286
       Width = 58
       Height = 17

+ 17 - 2
Examples/Demos/materials/proceduralclouds/fProcCloudsD.pas

@@ -88,6 +88,8 @@ implementation
 
 {$R *.DFM}
 
+//-------------------------------------------------------------------
+
 procedure TFormClouds.FormCreate(Sender: TObject);
 begin
   CBFormat.ItemIndex := 3;
@@ -95,6 +97,8 @@ begin
   CBFormatChange(Sender);
 end;
 
+//-------------------------------------------------------------------
+
 procedure TFormClouds.GLCadencer1Progress(Sender: TObject;
   const deltaTime, newTime: Double);
 begin
@@ -103,6 +107,8 @@ begin
       .NoiseAnimate(deltaTime);
 end;
 
+//-------------------------------------------------------------------
+
 procedure TFormClouds.TrackBar1Change(Sender: TObject);
 begin
   Plane.XTiles := TrackBar1.Position;
@@ -110,12 +116,16 @@ begin
   // EnvColor clrLightBlue   TextureMode Blend
 end;
 
+//-------------------------------------------------------------------
+
 procedure TFormClouds.Timer1Timer(Sender: TObject);
 begin
   LabelFPS.Caption := GLSceneViewer1.FramesPerSecondText();
   GLSceneViewer1.ResetPerformanceMonitor();
 end;
 
+//-------------------------------------------------------------------
+
 procedure TFormClouds.GLSceneViewer1AfterRender(Sender: TObject);
 var
   rgb: Integer;
@@ -133,7 +143,8 @@ begin
   newSelection := False;
 end;
 
-//----------------------------------------------------------------------
+//-------------------------------------------------------------------
+
 procedure TFormClouds.CBFormatChange(Sender: TObject);
 var
   s: String;
@@ -188,6 +199,8 @@ begin
   newSelection := True;
 end;
 
+//-------------------------------------------------------------------
+
 procedure TFormClouds.CloudFileOpenBtnClick(Sender: TObject);
 begin
   OpenDialog1.Filter := 'Cloud base (*.clb)|*.clb';
@@ -197,6 +210,8 @@ begin
     CloudFileUsedEdit.Text := OpenDialog1.FileName;
 end;
 
+//-------------------------------------------------------------------
+
 procedure TFormClouds.MakeAndSaveCloudNoiseFileClick(Sender: TObject);
 var
   i: Integer;
@@ -244,7 +259,7 @@ var
     SaveDialog1.Filename := '*.clb';
     if (SaveDialog1.Execute()) then
     begin
-      if UpperCase(ExtractFileExt(SaveDialog1.Filename)) = '.CLB' then
+      if UpperCase(ExtractFileExt(SaveDialog1.Filename)) = '.clb' then
       begin
         Application.ProcessMessages;
         Randomize();

+ 1046 - 0
Examples/Demos/materials/texcombine/TexCombineC.cbproj

@@ -0,0 +1,1046 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+    <PropertyGroup>
+        <ProjectGuid>{84DC38F5-5B9E-4E6D-8989-805C1E440A1B}</ProjectGuid>
+        <ProjectVersion>19.4</ProjectVersion>
+        <FrameworkType>VCL</FrameworkType>
+        <AppType>Application</AppType>
+        <MainSource>TexCombineC.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>D:\GLScene\Examples\Demos\materials\texcombine\;$(IncludePath)</IncludePath>
+        <ILINK_LibraryPath>D:\GLScene\Examples\Demos\materials\texcombine\;$(ILINK_LibraryPath)</ILINK_LibraryPath>
+        <SanitizedProjectName>TexCombineC</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>
+    </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="fTexCombineC.cpp">
+            <Form>FormCombine</Form>
+            <FormType>dfm</FormType>
+            <DependentOn>fTexCombineC.h</DependentOn>
+            <BuildOrder>2</BuildOrder>
+        </CppCompile>
+        <CppCompile Include="TexCombineC.cpp">
+            <BuildOrder>0</BuildOrder>
+        </CppCompile>
+        <FormResources Include="fTexCombineC.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">TexCombineC.cpp</Source>
+                </Source>
+            </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\TexCombineC.exe" Configuration="Debug" Class="ProjectOutput">
+                    <Platform Name="Win32">
+                        <RemoteName>TexCombineC.exe</RemoteName>
+                        <Overwrite>true</Overwrite>
+                    </Platform>
+                </DeployFile>
+                <DeployFile LocalName=".\Win32\Debug\TexCombineC.tds" Configuration="Debug" Class="DebugSymbols">
+                    <Platform Name="Win32">
+                        <RemoteName>TexCombineC.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>

+ 35 - 0
Examples/Demos/materials/texcombine/TexCombineC.cpp

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

+ 88 - 0
Examples/Demos/materials/texcombine/fTexCombineC.cpp

@@ -0,0 +1,88 @@
+//---------------------------------------------------------------------------
+
+#include <vcl.h>
+#pragma hdrstop
+
+#include "fTexCombineC.h"
+//---------------------------------------------------------------------------
+#pragma package(smart_init)
+#pragma link "GLS.BaseClasses"
+#pragma link "GLS.Coordinates"
+#pragma link "GLS.HUDObjects"
+#pragma link "GLS.Material"
+#pragma link "GLS.Objects"
+#pragma link "GLS.Scene"
+#pragma link "GLS.SceneViewer"
+#pragma link "GLSL.TextureShaders"
+#pragma resource "*.dfm"
+TFormCombine *FormCombine;
+//---------------------------------------------------------------------------
+__fastcall TFormCombine::TFormCombine(TComponent* Owner)
+	: TForm(Owner)
+{
+}
+//---------------------------------------------------------------------------
+void __fastcall TFormCombine::FormCreate(TObject *Sender)
+{
+  // load the textures
+  PathToData = GetCurrentAssetPath();
+  SetCurrentDir(PathToData  + "\\texture");
+  Image1->Picture->LoadFromFile("beigemarble.jpg");
+  GLMaterialLibrary->Materials->Items[0]->Material->Texture->Image->Assign(Image1->Picture);
+  Image2->Picture->LoadFromFile("flare1.bmp");
+  GLMaterialLibrary->Materials->Items[1]->Material->Texture->Image->Assign(Image2->Picture);
+  Image3->Picture->LoadFromFile("clover.jpg");
+  GLMaterialLibrary->Materials->Items[2]->Material->Texture->Image->Assign(Image3->Picture);
+  Image4->Picture->LoadFromFile("concrete.jpg");
+  GLMaterialLibrary->Materials->Items[3]->Material->Texture->Image->Assign(Image4->Picture);
+  BUApplyClick(Sender);
+  Application->HintHidePause = 30000;
+
+}
+//---------------------------------------------------------------------------
+void __fastcall TFormCombine::BUApplyClick(TObject *Sender)
+{
+  // Apply new combiner code
+  // Depending on shader and hardware, errors may be triggered during render
+  GLTexCombineShader->Combiners->Clear();
+  GLTexCombineShader->Combiners->AddStrings(MECombiner->Lines);
+}
+//---------------------------------------------------------------------------
+void __fastcall TFormCombine::SceneViewerPostRender(TObject *Sender)
+{
+  // disable whatever texture units are not supported by the local hardware
+  int n = SceneViewer->Buffer->LimitOf[limNbTextureUnits];
+  PATex1->Visible = (n < 2);
+  CBTex1->Enabled = (n >= 2);
+  PATex2->Visible = (n < 3);
+  CBTex2->Enabled = (n >= 3);
+  PATex3->Visible = (n < 4);
+  CBTex3->Enabled = (n >= 4);
+  CBTex1->Checked = (CBTex1->Checked && CBTex1->Enabled);
+}
+
+//---------------------------------------------------------------------------
+void __fastcall TFormCombine::Shape1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
+		  int X, int Y)
+{
+  // Allow choosing the primary color
+  ColorDialog->Color = Shape1->Brush->Color; //  PAPrimary->Color;
+  if (ColorDialog->Execute())
+  {
+	Shape1->Brush->Color = ColorDialog->Color;
+	GLMaterialLibrary->Materials->Items[0]->Material->FrontProperties->Diffuse->AsWinColor = ColorDialog->Color;
+	SceneViewer->Invalidate();
+  }
+}
+//---------------------------------------------------------------------------
+void __fastcall TFormCombine::CBTex0Click(TObject *Sender)
+{
+  TGLLibMaterial* libMat;
+  libMat = new TGLLibMaterial(GLMaterialLibrary->Materials);
+  // This event is used for all 4 checkboxes of the 4 texture units
+///  libMat = GLMaterialLibrary->Materials->GetLibMaterialByName((Sender as TCheckBox)->Caption);
+///  if Assigned(libMat)
+///	libMat->Material->Texture->Enabled = CBTex0(Sender)->Checked;
+
+}
+//---------------------------------------------------------------------------

+ 291 - 0
Examples/Demos/materials/texcombine/fTexCombineC.dfm

@@ -0,0 +1,291 @@
+object FormCombine: TFormCombine
+  Left = 0
+  Top = 0
+  Caption = 'Texture Combine'
+  ClientHeight = 459
+  ClientWidth = 609
+  Color = clBtnFace
+  Font.Charset = DEFAULT_CHARSET
+  Font.Color = clWindowText
+  Font.Height = -12
+  Font.Name = 'Segoe UI'
+  Font.Style = []
+  Position = poScreenCenter
+  OnCreate = FormCreate
+  TextHeight = 15
+  object Image1: TImage
+    Left = 8
+    Top = 80
+    Width = 128
+    Height = 128
+    Stretch = True
+  end
+  object Image2: TImage
+    Left = 152
+    Top = 80
+    Width = 128
+    Height = 128
+    Stretch = True
+  end
+  object Image3: TImage
+    Left = 296
+    Top = 80
+    Width = 128
+    Height = 128
+    Stretch = True
+  end
+  object Label1: TLabel
+    Left = 264
+    Top = 22
+    Width = 68
+    Height = 19
+    Caption = 'Textures'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -17
+    Font.Name = 'Arial'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object Image4: TImage
+    Left = 440
+    Top = 80
+    Width = 128
+    Height = 128
+    Stretch = True
+  end
+  object Label3: TLabel
+    Left = 8
+    Top = 216
+    Width = 32
+    Height = 15
+    Caption = 'Result'
+  end
+  object Label4: TLabel
+    Left = 200
+    Top = 216
+    Width = 128
+    Height = 15
+    Caption = 'Texture Combiners code'
+  end
+  object Label2: TLabel
+    Left = 8
+    Top = 40
+    Width = 79
+    Height = 15
+    Caption = 'Primary Color :'
+  end
+  object Shape1: TShape
+    Left = 104
+    Top = 40
+    Width = 50
+    Height = 18
+    OnMouseDown = Shape1MouseDown
+  end
+  object SceneViewer: TGLSceneViewer
+    Left = 8
+    Top = 234
+    Width = 180
+    Height = 180
+    Camera = GLCamera
+    PostRender = SceneViewerPostRender
+    Buffer.BackgroundColor = clGray
+    Buffer.Lighting = False
+    FieldOfView = 121.890792846679700000
+    PenAsTouch = False
+    TabOrder = 0
+  end
+  object BUApply: TButton
+    Left = 200
+    Top = 387
+    Width = 75
+    Height = 25
+    Caption = 'Apply'
+    TabOrder = 1
+    OnClick = BUApplyClick
+  end
+  object PATex1: TPanel
+    Left = 176
+    Top = 124
+    Width = 81
+    Height = 41
+    BevelOuter = bvLowered
+    Caption = 'Unavailable'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = 8421440
+    Font.Height = -12
+    Font.Name = 'Arial'
+    Font.Style = [fsBold, fsItalic]
+    ParentFont = False
+    TabOrder = 2
+  end
+  object PATex2: TPanel
+    Left = 320
+    Top = 124
+    Width = 81
+    Height = 41
+    BevelOuter = bvLowered
+    Caption = 'Unavailable'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = 8421440
+    Font.Height = -12
+    Font.Name = 'Arial'
+    Font.Style = [fsBold, fsItalic]
+    ParentFont = False
+    TabOrder = 3
+  end
+  object PATex3: TPanel
+    Left = 464
+    Top = 124
+    Width = 81
+    Height = 41
+    BevelOuter = bvLowered
+    Caption = 'Unavailable'
+    Font.Charset = DEFAULT_CHARSET
+    Font.Color = 8421440
+    Font.Height = -12
+    Font.Name = 'Arial'
+    Font.Style = [fsBold, fsItalic]
+    ParentFont = False
+    TabOrder = 4
+  end
+  object CBTex0: TCheckBox
+    Left = 8
+    Top = 64
+    Width = 57
+    Height = 16
+    Caption = 'Tex0'
+    Checked = True
+    State = cbChecked
+    TabOrder = 5
+    OnClick = CBTex0Click
+  end
+  object CBTex1: TCheckBox
+    Left = 152
+    Top = 64
+    Width = 73
+    Height = 16
+    Caption = 'Tex1'
+    Checked = True
+    State = cbChecked
+    TabOrder = 6
+  end
+  object CBTex2: TCheckBox
+    Left = 296
+    Top = 64
+    Width = 57
+    Height = 16
+    Caption = 'Tex2'
+    TabOrder = 7
+  end
+  object CBTex3: TCheckBox
+    Left = 440
+    Top = 64
+    Width = 57
+    Height = 16
+    Caption = 'Tex3'
+    TabOrder = 8
+  end
+  object Panel1: TPanel
+    Left = 200
+    Top = 232
+    Width = 369
+    Height = 145
+    BevelOuter = bvLowered
+    BorderWidth = 1
+    Caption = 'Panel1'
+    TabOrder = 9
+    object MECombiner: TMemo
+      Left = 2
+      Top = 2
+      Width = 365
+      Height = 141
+      Hint = 
+        'Syntax Examples:'#13#10#13#10'   Tex1:=Tex0;   // replace texture 1 with t' +
+        'exture 0'#13#10'   Tex1:=Tex0+Tex1; // additive blending between textu' +
+        'res 0 and 1'#13#10'   Tex1:=Tex0-Tex1; // subtractive blending between' +
+        ' textures 0 and 1'#13#10'   Tex1:=Tex0*Tex1; // modulation between tex' +
+        'tures 0 and 1'#13#10'   Tex1:=Tex0+Tex1-0.5; // signed additive blendi' +
+        'ng between textures 0 and 1'#13#10'   Tex1:=Interpolate(Tex0, Tex1, Pr' +
+        'imaryColor); // interpolation between textures 0 and 1 using pri' +
+        'mary color as factor'#13#10'   Tex1:=Dot3(Tex0, Tex1); // dot3 product' +
+        ' between textures 0 and 1'
+      Align = alClient
+      BorderStyle = bsNone
+      Font.Charset = ANSI_CHARSET
+      Font.Color = clWindowText
+      Font.Height = -11
+      Font.Name = 'Courier New'
+      Font.Style = []
+      Lines.Strings = (
+        'Tex0:=Tex0;'
+        'Tex1:=Tex0+Tex1;')
+      ParentFont = False
+      ParentShowHint = False
+      ScrollBars = ssBoth
+      ShowHint = True
+      TabOrder = 0
+    end
+  end
+  object GLScene: TGLScene
+    Left = 160
+    Top = 15
+    object GLDummyCube: TGLDummyCube
+      CubeSize = 1.000000000000000000
+    end
+    object GLHUDSprite: TGLHUDSprite
+      Material.MaterialLibrary = GLMaterialLibrary
+      Material.LibMaterialName = 'Tex0'
+      Position.Coordinates = {0000B4420000B442000000000000803F}
+      Width = 128.000000000000000000
+      Height = 128.000000000000000000
+      Rotation = 0.000000000000000000
+    end
+    object GLCamera: TGLCamera
+      DepthOfView = 100.000000000000000000
+      FocalLength = 50.000000000000000000
+      TargetObject = GLDummyCube
+      Position.Coordinates = {00000000000000000000A0400000803F}
+    end
+  end
+  object GLMaterialLibrary: TGLMaterialLibrary
+    Materials = <
+      item
+        Name = 'Tex0'
+        Tag = 0
+        Material.Texture.TextureMode = tmModulate
+        Material.Texture.Disabled = False
+        Texture2Name = 'Tex1'
+        Shader = GLTexCombineShader
+      end
+      item
+        Name = 'Tex1'
+        Tag = 0
+        Material.Texture.TextureMode = tmModulate
+        Material.Texture.Disabled = False
+      end
+      item
+        Name = 'Tex2'
+        Tag = 0
+      end
+      item
+        Name = 'Tex3'
+        Tag = 0
+      end>
+    Left = 100
+    Top = 155
+  end
+  object GLTexCombineShader: TGLTexCombineShader
+    DesignTimeEnabled = False
+    MaterialLibrary = GLMaterialLibrary
+    LibMaterial3Name = 'Tex2'
+    LibMaterial4Name = 'Tex3'
+    Left = 237
+    Top = 298
+  end
+  object ColorDialog: TColorDialog
+    Options = [cdFullOpen, cdSolidColor, cdAnyColor]
+    Left = 230
+    Top = 20
+  end
+end

+ 65 - 0
Examples/Demos/materials/texcombine/fTexCombineC.h

@@ -0,0 +1,65 @@
+//---------------------------------------------------------------------------
+
+#ifndef fTexCombineCH
+#define fTexCombineCH
+//---------------------------------------------------------------------------
+#include <System.Classes.hpp>
+#include <Vcl.Controls.hpp>
+#include <Vcl.StdCtrls.hpp>
+#include <Vcl.Forms.hpp>
+#include "GLS.BaseClasses.hpp"
+#include "GLS.Coordinates.hpp"
+#include "GLS.HUDObjects.hpp"
+#include "GLS.Material.hpp"
+#include "GLS.Objects.hpp"
+#include "GLS.Scene.hpp"
+#include "GLS.SceneViewer.hpp"
+#include "GLSL.TextureShaders.hpp"
+#include <Vcl.Dialogs.hpp>
+#include <Vcl.ExtCtrls.hpp>
+//---------------------------------------------------------------------------
+class TFormCombine : public TForm
+{
+__published:	// IDE-managed Components
+	TImage *Image1;
+	TImage *Image2;
+	TImage *Image3;
+	TLabel *Label1;
+	TImage *Image4;
+	TLabel *Label3;
+	TLabel *Label4;
+	TLabel *Label2;
+	TGLSceneViewer *SceneViewer;
+	TButton *BUApply;
+	TPanel *PATex1;
+	TPanel *PATex2;
+	TPanel *PATex3;
+	TCheckBox *CBTex0;
+	TCheckBox *CBTex1;
+	TCheckBox *CBTex2;
+	TCheckBox *CBTex3;
+	TPanel *Panel1;
+	TMemo *MECombiner;
+	TGLScene *GLScene;
+	TGLDummyCube *GLDummyCube;
+	TGLHUDSprite *GLHUDSprite;
+	TGLCamera *GLCamera;
+	TGLMaterialLibrary *GLMaterialLibrary;
+	TGLTexCombineShader *GLTexCombineShader;
+	TColorDialog *ColorDialog;
+	TShape *Shape1;
+	void __fastcall FormCreate(TObject *Sender);
+	void __fastcall BUApplyClick(TObject *Sender);
+	void __fastcall SceneViewerPostRender(TObject *Sender);
+	void __fastcall Shape1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y);
+	void __fastcall CBTex0Click(TObject *Sender);
+
+private:	// User declarations
+    TFileName PathToData;
+public:		// User declarations
+	__fastcall TFormCombine(TComponent* Owner);
+};
+//---------------------------------------------------------------------------
+extern PACKAGE TFormCombine *FormCombine;
+//---------------------------------------------------------------------------
+#endif

+ 97 - 176
Examples/Demos/materials/texcombine/fTexCombineD.dfm

@@ -3,207 +3,151 @@ object FormTexCombine: TFormTexCombine
   Top = 103
   BorderStyle = bsDialog
   Caption = 'Texure Combine'
-  ClientHeight = 528
-  ClientWidth = 726
+  ClientHeight = 422
+  ClientWidth = 581
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object Image1: TImage
-    Left = 10
-    Top = 100
-    Width = 160
-    Height = 160
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 8
+    Top = 80
+    Width = 128
+    Height = 128
     Stretch = True
   end
   object Image2: TImage
-    Left = 190
-    Top = 100
-    Width = 160
-    Height = 160
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 152
+    Top = 80
+    Width = 128
+    Height = 128
     Stretch = True
   end
   object Image3: TImage
-    Left = 370
-    Top = 100
-    Width = 160
-    Height = 160
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 296
+    Top = 80
+    Width = 128
+    Height = 128
     Stretch = True
   end
   object Label1: TLabel
-    Left = 330
-    Top = 28
-    Width = 87
-    Height = 24
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 264
+    Top = 22
+    Width = 68
+    Height = 19
     Caption = 'Textures'
     Font.Charset = DEFAULT_CHARSET
     Font.Color = clWindowText
-    Font.Height = -21
+    Font.Height = -17
     Font.Name = 'Arial'
     Font.Style = [fsBold]
     ParentFont = False
   end
   object Image4: TImage
-    Left = 550
-    Top = 100
-    Width = 160
-    Height = 160
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 440
+    Top = 80
+    Width = 128
+    Height = 128
     Stretch = True
   end
   object Label3: TLabel
-    Left = 10
-    Top = 270
-    Width = 38
-    Height = 16
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 8
+    Top = 216
+    Width = 30
+    Height = 13
     Caption = 'Result'
   end
   object Label4: TLabel
-    Left = 250
-    Top = 270
-    Width = 147
-    Height = 16
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 200
+    Top = 216
+    Width = 115
+    Height = 13
     Caption = 'Texture Combiners code'
   end
   object Label2: TLabel
-    Left = 10
-    Top = 50
-    Width = 87
-    Height = 16
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 8
+    Top = 40
+    Width = 67
+    Height = 13
     Caption = 'Primary Color :'
   end
   object SceneViewer: TGLSceneViewer
-    Left = 10
-    Top = 290
-    Width = 225
-    Height = 225
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 8
+    Top = 234
+    Width = 180
+    Height = 180
     Camera = GLCamera
     PostRender = SceneViewerPostRender
     Buffer.BackgroundColor = clGray
     Buffer.Lighting = False
-    FieldOfView = 132.075027465820300000
+    FieldOfView = 121.890792846679700000
     PenAsTouch = False
     TabOrder = 0
   end
   object BUApply: TButton
-    Left = 250
-    Top = 484
-    Width = 94
-    Height = 31
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 200
+    Top = 387
+    Width = 75
+    Height = 25
     Caption = 'Apply'
     TabOrder = 1
     OnClick = BUApplyClick
   end
   object PATex1: TPanel
-    Left = 220
-    Top = 155
-    Width = 101
-    Height = 51
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 176
+    Top = 124
+    Width = 81
+    Height = 41
     BevelOuter = bvLowered
     Caption = 'Unavailable'
     Font.Charset = DEFAULT_CHARSET
     Font.Color = 8421440
-    Font.Height = -15
+    Font.Height = -12
     Font.Name = 'Arial'
     Font.Style = [fsBold, fsItalic]
     ParentFont = False
     TabOrder = 2
   end
   object PATex2: TPanel
-    Left = 400
-    Top = 155
-    Width = 101
-    Height = 51
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 320
+    Top = 124
+    Width = 81
+    Height = 41
     BevelOuter = bvLowered
     Caption = 'Unavailable'
     Font.Charset = DEFAULT_CHARSET
     Font.Color = 8421440
-    Font.Height = -15
+    Font.Height = -12
     Font.Name = 'Arial'
     Font.Style = [fsBold, fsItalic]
     ParentFont = False
     TabOrder = 3
   end
   object PATex3: TPanel
-    Left = 580
-    Top = 155
-    Width = 101
-    Height = 51
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 464
+    Top = 124
+    Width = 81
+    Height = 41
     BevelOuter = bvLowered
     Caption = 'Unavailable'
     Font.Charset = DEFAULT_CHARSET
     Font.Color = 8421440
-    Font.Height = -15
+    Font.Height = -12
     Font.Name = 'Arial'
     Font.Style = [fsBold, fsItalic]
     ParentFont = False
     TabOrder = 4
   end
   object CBTex0: TCheckBox
-    Left = 10
-    Top = 80
-    Width = 71
-    Height = 20
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 8
+    Top = 64
+    Width = 57
+    Height = 16
     Caption = 'Tex0'
     Checked = True
     State = cbChecked
@@ -211,14 +155,10 @@ object FormTexCombine: TFormTexCombine
     OnClick = CBTex0Click
   end
   object CBTex1: TCheckBox
-    Left = 190
-    Top = 80
-    Width = 91
-    Height = 20
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 152
+    Top = 64
+    Width = 73
+    Height = 16
     Caption = 'Tex1'
     Checked = True
     State = cbChecked
@@ -226,40 +166,28 @@ object FormTexCombine: TFormTexCombine
     OnClick = CBTex0Click
   end
   object CBTex2: TCheckBox
-    Left = 370
-    Top = 80
-    Width = 71
-    Height = 20
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 296
+    Top = 64
+    Width = 57
+    Height = 16
     Caption = 'Tex2'
     TabOrder = 7
     OnClick = CBTex0Click
   end
   object CBTex3: TCheckBox
-    Left = 550
-    Top = 80
-    Width = 71
-    Height = 20
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 440
+    Top = 64
+    Width = 57
+    Height = 16
     Caption = 'Tex3'
     TabOrder = 8
     OnClick = CBTex0Click
   end
   object Panel1: TPanel
-    Left = 250
-    Top = 290
-    Width = 461
-    Height = 181
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Left = 200
+    Top = 232
+    Width = 369
+    Height = 145
     BevelOuter = bvLowered
     BorderWidth = 1
     Caption = 'Panel1'
@@ -267,8 +195,8 @@ object FormTexCombine: TFormTexCombine
     object MECombiner: TMemo
       Left = 2
       Top = 2
-      Width = 457
-      Height = 177
+      Width = 365
+      Height = 141
       Hint = 
         'Syntax Examples:'#13#10#13#10'   Tex1:=Tex0;   // replace texture 1 with t' +
         'exture 0'#13#10'   Tex1:=Tex0+Tex1; // additive blending between textu' +
@@ -279,15 +207,11 @@ object FormTexCombine: TFormTexCombine
         'imaryColor); // interpolation between textures 0 and 1 using pri' +
         'mary color as factor'#13#10'   Tex1:=Dot3(Tex0, Tex1); // dot3 product' +
         ' between textures 0 and 1'
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
       Align = alClient
       BorderStyle = bsNone
       Font.Charset = ANSI_CHARSET
       Font.Color = clWindowText
-      Font.Height = -14
+      Font.Height = -11
       Font.Name = 'Courier New'
       Font.Style = []
       Lines.Strings = (
@@ -301,22 +225,19 @@ object FormTexCombine: TFormTexCombine
     end
   end
   object PAPrimary: TPanel
-    Left = 101
-    Top = 48
-    Width = 30
-    Height = 21
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
-    Color = 13421772
+    Left = 81
+    Top = 38
+    Width = 24
+    Height = 17
+    Ctl3D = True
+    ParentCtl3D = False
     TabOrder = 10
     OnClick = PAPrimaryClick
     OnDblClick = PAPrimaryClick
   end
   object GLScene: TGLScene
-    Left = 64
-    Top = 272
+    Left = 128
+    Top = 12
     object GLDummyCube: TGLDummyCube
       CubeSize = 1.000000000000000000
     end
@@ -359,16 +280,16 @@ object FormTexCombine: TFormTexCombine
         Name = 'Tex3'
         Tag = 0
       end>
-    Left = 32
-    Top = 272
+    Left = 80
+    Top = 124
   end
   object GLTexCombineShader: TGLTexCombineShader
     DesignTimeEnabled = False
     MaterialLibrary = GLMaterialLibrary
     LibMaterial3Name = 'Tex2'
     LibMaterial4Name = 'Tex3'
-    Left = 96
-    Top = 272
+    Left = 336
+    Top = 252
   end
   object ColorDialog: TColorDialog
     Options = [cdFullOpen, cdSolidColor, cdAnyColor]

+ 9 - 11
Examples/Demos/materials/texcombine/fTexCombineD.pas

@@ -61,7 +61,7 @@ type
     procedure CBTex0Click(Sender: TObject);
     procedure PAPrimaryClick(Sender: TObject);
   private
-
+    PathToData: TFileName;
   public
 
   end;
@@ -76,15 +76,15 @@ implementation
 procedure TFormTexCombine.FormCreate(Sender: TObject);
 begin
   // load the textures
-  var Path: TFileName := GetCurrentAssetPath();
-  SetCurrentDir(Path  + '\texture');
+  PathToData := GetCurrentAssetPath();
+  SetCurrentDir(PathToData  + '\texture');
   Image1.Picture.LoadFromFile('beigemarble.jpg');
   GLMaterialLibrary.Materials.Items[0].Material.Texture.Image.Assign(Image1.Picture);
   Image2.Picture.LoadFromFile('flare1.bmp');
   GLMaterialLibrary.Materials.Items[1].Material.Texture.Image.Assign(Image2.Picture);
   Image3.Picture.LoadFromFile('clover.jpg');
   GLMaterialLibrary.Materials.Items[2].Material.Texture.Image.Assign(Image3.Picture);
-    Image4.Picture.LoadFromFile('concrete.jpg');
+  Image4.Picture.LoadFromFile('concrete.jpg');
   GLMaterialLibrary.Materials.Items[3].Material.Texture.Image.Assign(Image4.Picture);
   BUApplyClick(Sender);
   Application.HintHidePause := 30000;
@@ -94,23 +94,21 @@ procedure TFormTexCombine.BUApplyClick(Sender: TObject);
 begin
   // Apply new combiner code
   // Depending on shader and hardware, errors may be triggered during render
-  GLTexCombineShader.Combiners.Clear;
+  GLTexCombineShader.Combiners.Clear();
   GLTexCombineShader.Combiners.AddStrings(MECombiner.Lines);
 end;
 
 procedure TFormTexCombine.SceneViewerPostRender(Sender: TObject);
-var
-  n: Integer;
 begin
   // disable whatever texture units are not supported by the local hardware
-  n := SceneViewer.Buffer.LimitOf[limNbTextureUnits];
+  var n: integer := SceneViewer.Buffer.LimitOf[limNbTextureUnits];
   PATex1.Visible := (n < 2);
   CBTex1.Enabled := (n >= 2);
   PATex2.Visible := (n < 3);
   CBTex2.Enabled := (n >= 3);
   PATex3.Visible := (n < 4);
   CBTex3.Enabled := (n >= 4);
-  CBTex1.Checked := CBTex1.Checked and CBTex1.Enabled;
+  CBTex1.Checked := (CBTex1.Checked and CBTex1.Enabled);
 end;
 
 procedure TFormTexCombine.CBTex0Click(Sender: TObject);
@@ -128,11 +126,11 @@ procedure TFormTexCombine.PAPrimaryClick(Sender: TObject);
 begin
   // Allow choosing the primary color
   ColorDialog.Color := PAPrimary.Color;
-  if ColorDialog.Execute then
+  if (ColorDialog.Execute()) then
   begin
     PAPrimary.Color := ColorDialog.Color;
     GLMaterialLibrary.Materials[0].Material.FrontProperties.Diffuse.AsWinColor := ColorDialog.Color;
-    SceneViewer.Invalidate;
+    SceneViewer.Invalidate();
   end;
 end;
 

+ 1 - 1
Examples/Demos/materials/texformat/TexFormatC.cbproj

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

+ 2 - 2
Examples/Demos/materials/texformat/TexFormatC.cpp

@@ -4,7 +4,7 @@
 #pragma hdrstop
 #include <tchar.h>
 //---------------------------------------------------------------------------
-USEFORM("fTexFormatC.cpp", Form1);
+USEFORM("fTexFormatC.cpp", FormFormats);
 //---------------------------------------------------------------------------
 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(TFormFormats), &FormFormats);
 		Application->Run();
 	}
 	catch (Exception &exception)

+ 80 - 67
Examples/Demos/materials/texformat/fTexFormatC.cpp

@@ -15,100 +15,113 @@
 #pragma link "GLS.Scene"
 #pragma link "GLS.SceneViewer"
 #pragma resource "*.dfm"
-TForm1 *Form1;
+TFormFormats* FormFormats;
 //---------------------------------------------------------------------------
-__fastcall TForm1::TForm1(TComponent* Owner)
-	: TForm(Owner)
-{
-}
+__fastcall TFormFormats::TFormFormats(TComponent* Owner) : TForm(Owner) {}
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormCreate(TObject *Sender)
+void __fastcall TFormFormats::FormCreate(TObject* Sender)
 {
-	  TSearchRec sr;
-	  int i;
-	  TFileName Path = GetCurrentAssetPath();
-	  // collect JPeg textures from the demos' media directory
-	  i=FindFirst("*.jpg", faAnyFile, sr);
-	  while (i == 0){
+    TSearchRec sr;
+    int i;
+
+    PathToData = GetCurrentAssetPath();
+    SetCurrentDir(PathToData + "\\texture");
+    // collect JPeg textures from the demos' media directory
+    i = FindFirst("*.jpg", faAnyFile, sr);
+    while (i == 0) {
 		CBImage->Items->Add(sr.Name);
-        i=FindNext(sr);
-	  }
-	  FindClose(sr);
-	  // default selection
-	  CBFormat->ItemIndex = 0;
-	  CBCompression->ItemIndex = 0;
-	  CBImage->ItemIndex = 0;
-	  CBImageChange(Sender);
+        i = FindNext(sr);
+    }
+    FindClose(sr);
+    // default selection
+    CBFormat->ItemIndex = 0;
+    CBCompression->ItemIndex = 0;
+    CBImage->ItemIndex = 0;
+    CBImageChange(Sender);
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::CBImageChange(TObject *Sender)
+void __fastcall TFormFormats::CBImageChange(TObject* Sender)
 {
-		// adjust settings from selection and reload the texture map
-	   HUDSprite1->Material->Texture->TextureFormat = TGLTextureFormat((int)tfRGB+CBFormat->ItemIndex);
-	   HUDSprite1->Material->Texture->Compression = TGLTextureCompression((int)tcNone+CBCompression->ItemIndex);
-	   HUDSprite1->Material->Texture->Image->LoadFromFile(CBImage->Text);
-	   LAPicSize->Caption = IntToStr(HUDSprite1->Material->Texture->Image->Width) + " x " + IntToStr(HUDSprite1->Material->Texture->Image->Height);
-	   if (RBDefault->Checked){
-		   HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width;
-		   HUDSprite1->Height = HUDSprite1->Material->Texture->Image->Height;
-	   }else {
-		   if (RBDouble->Checked){
-			   HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width * 2;
-			   HUDSprite1->Height = HUDSprite1->Material->Texture->Image->Height * 2;
-		   } else {
-			   HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width * 4;
-			   HUDSprite1->Height = HUDSprite1->Material->Texture->Image->Height * 4;
-		   }
-	   }
-	   FormResize(Sender);
-	   newSelection = true;
+    // adjust settings from selection and reload the texture map
+	HUDSprite1->Material->Texture->TextureFormat =
+        TGLTextureFormat((int)tfRGB + CBFormat->ItemIndex);
+    HUDSprite1->Material->Texture->Compression =
+        TGLTextureCompression((int)tcNone + CBCompression->ItemIndex);
+    HUDSprite1->Material->Texture->Image->LoadFromFile(CBImage->Text);
+    LAPicSize->Caption = IntToStr(HUDSprite1->Material->Texture->Image->Width) +
+                         " x " +
+                         IntToStr(HUDSprite1->Material->Texture->Image->Height);
+    if (RBDefault->Checked) {
+        HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width;
+        HUDSprite1->Height = HUDSprite1->Material->Texture->Image->Height;
+    } else {
+        if (RBDouble->Checked) {
+            HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width * 2;
+            HUDSprite1->Height =
+                HUDSprite1->Material->Texture->Image->Height * 2;
+        } else {
+			HUDSprite1->Width = HUDSprite1->Material->Texture->Image->Width * 4;
+			HUDSprite1->Height =
+                HUDSprite1->Material->Texture->Image->Height * 4;
+        }
+    }
+    FormResize(Sender);
+    newSelection = true;
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::FormResize(TObject *Sender)
+void __fastcall TFormFormats::FormResize(TObject* Sender)
 {
-   // re-center the HUDSprite
-     HUDSprite1->Position->X = GLSceneViewer1->Width / 2;
-	 HUDSprite1->Position->Y = GLSceneViewer1->Height / 2;
-     GLSceneViewer1->Invalidate();
+    // re-center the HUDSprite
+    HUDSprite1->Position->X = GLSceneViewer1->Width / 2;
+    HUDSprite1->Position->Y = GLSceneViewer1->Height / 2;
+    GLSceneViewer1->Invalidate();
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::GLSceneViewer1AfterRender(TObject *Sender)
+void __fastcall TFormFormats::GLSceneViewer1AfterRender(TObject* Sender)
 {
-	 int rgb;
-   // update compression stats, only the 1st time after a new selection
-	 if (newSelection){
-		 rgb = HUDSprite1->Material->Texture->Image->Width * HUDSprite1->Material->Texture->Image->Height * 4;
-		 LARGB32->Caption = Format("RGBA 32bits would require %d kB", ARRAYOFCONST((rgb / 1024)));
-		 LAUsedMemory->Caption =  Format("Required memory : %d kB",
-								   ARRAYOFCONST((HUDSprite1->Material->Texture->TextureImageRequiredMemory() / 1024)));
-		 LACompression->Caption=Format("Compression ratio : %d %%",
-									ARRAYOFCONST((100-100*HUDSprite1->Material->Texture->TextureImageRequiredMemory() / rgb)));
-         newSelection = false;
-	 }
+    int rgb;
+    // update compression stats, only the 1st time after a new selection
+    if (newSelection) {
+        rgb = HUDSprite1->Material->Texture->Image->Width *
+              HUDSprite1->Material->Texture->Image->Height * 4;
+        LARGB32->Caption = Format(
+            "RGBA 32bits would require %d kB", ARRAYOFCONST((rgb / 1024)));
+        LAUsedMemory->Caption = Format("Required memory : %d kB",
+            ARRAYOFCONST(
+                (HUDSprite1->Material->Texture->TextureImageRequiredMemory() /
+                    1024)));
+        LACompression->Caption = Format("Compression ratio : %d %%",
+            ARRAYOFCONST((100 - 100 *
+									HUDSprite1->Material->Texture
+										->TextureImageRequiredMemory() /
+                                    rgb)));
+        newSelection = false;
+    }
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::RBDefaultClick(TObject *Sender)
+void __fastcall TFormFormats::RBDefaultClick(TObject* Sender)
 {
-	CBImageChange(Sender);
+    CBImageChange(Sender);
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::RBDoubleClick(TObject *Sender)
+void __fastcall TFormFormats::RBDoubleClick(TObject* Sender)
 {
-	CBImageChange(Sender);
+    CBImageChange(Sender);
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::RBQuadClick(TObject *Sender)
+void __fastcall TFormFormats::RBQuadClick(TObject* Sender)
 {
-	CBImageChange(Sender);
+    CBImageChange(Sender);
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::CBCompressionChange(TObject *Sender)
+void __fastcall TFormFormats::CBCompressionChange(TObject* Sender)
 {
-	CBImageChange(Sender);
+    CBImageChange(Sender);
 }
 //---------------------------------------------------------------------------
-void __fastcall TForm1::CBFormatChange(TObject *Sender)
+void __fastcall TFormFormats::CBFormatChange(TObject* Sender)
 {
-	CBImageChange(Sender);
+    CBImageChange(Sender);
 }
 //---------------------------------------------------------------------------
+

+ 68 - 132
Examples/Demos/materials/texformat/fTexFormatC.dfm

@@ -1,144 +1,100 @@
-object Form1: TForm1
+object FormFormats: TFormFormats
   Left = 0
   Top = 0
   Caption = 'Texture Formats'
-  ClientHeight = 374
-  ClientWidth = 670
+  ClientHeight = 299
+  ClientWidth = 536
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'Tahoma'
   Font.Style = []
+  Position = poScreenCenter
   OnCreate = FormCreate
   OnResize = FormResize
-  PixelsPerInch = 120
-  TextHeight = 17
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 410
-    Height = 374
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 328
+    Height = 299
     Camera = GLCamera1
     AfterRender = GLSceneViewer1AfterRender
-    FieldOfView = 179.387222290039100000
+    FieldOfView = 179.233505249023400000
     PenAsTouch = False
     Align = alClient
     TabOrder = 0
   end
   object Panel1: TPanel
-    Left = 410
+    Left = 328
     Top = 0
-    Width = 260
-    Height = 374
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 208
+    Height = 299
     Align = alRight
     BevelOuter = bvLowered
     TabOrder = 1
     object Label2: TLabel
-      Left = 20
-      Top = 125
-      Width = 44
-      Height = 17
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 100
+      Width = 34
+      Height = 13
       Caption = 'Format'
     end
     object Label3: TLabel
-      Left = 20
-      Top = 165
-      Width = 79
-      Height = 17
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 132
+      Width = 61
+      Height = 13
       Caption = 'Compression'
     end
     object Label4: TLabel
-      Left = 20
-      Top = 45
-      Width = 38
-      Height = 17
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 36
+      Width = 30
+      Height = 13
       Caption = 'Image'
     end
     object LAPicSize: TLabel
-      Left = 110
-      Top = 80
-      Width = 55
-      Height = 17
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 64
+      Width = 44
+      Height = 13
       Caption = 'LAPicSize'
     end
     object Label5: TLabel
-      Left = 20
-      Top = 280
-      Width = 71
-      Height = 17
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 224
+      Width = 57
+      Height = 13
       Caption = 'Render Size'
     end
     object LAUsedMemory: TLabel
-      Left = 20
-      Top = 225
-      Width = 84
-      Height = 17
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 180
+      Width = 65
+      Height = 13
       Caption = 'Used Memory'
     end
     object LARGB32: TLabel
-      Left = 20
-      Top = 205
-      Width = 84
-      Height = 17
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 164
+      Width = 65
+      Height = 13
       Caption = 'Used Memory'
     end
     object LACompression: TLabel
-      Left = 20
-      Top = 245
-      Width = 84
-      Height = 17
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 196
+      Width = 65
+      Height = 13
       Caption = 'Used Memory'
     end
     object CBFormat: TComboBox
-      Left = 110
-      Top = 120
-      Width = 131
-      Height = 25
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 96
+      Width = 105
+      Height = 21
       Style = csDropDownList
       TabOrder = 0
       OnChange = CBFormatChange
@@ -149,14 +105,10 @@ object Form1: TForm1
         'RGBA  (16 bits)')
     end
     object CBCompression: TComboBox
-      Left = 110
-      Top = 160
-      Width = 131
-      Height = 25
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 128
+      Width = 105
+      Height = 21
       Style = csDropDownList
       TabOrder = 1
       OnChange = CBCompressionChange
@@ -167,27 +119,19 @@ object Form1: TForm1
         'Fastest')
     end
     object CBImage: TComboBox
-      Left = 110
-      Top = 40
-      Width = 131
-      Height = 25
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 32
+      Width = 105
+      Height = 21
       Style = csDropDownList
       TabOrder = 2
       OnChange = CBImageChange
     end
     object RBDefault: TRadioButton
-      Left = 110
-      Top = 278
-      Width = 71
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 222
+      Width = 57
+      Height = 17
       Caption = '100 %'
       Checked = True
       TabOrder = 3
@@ -195,27 +139,19 @@ object Form1: TForm1
       OnClick = RBDefaultClick
     end
     object RBDouble: TRadioButton
-      Left = 109
-      Top = 308
-      Width = 72
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 87
+      Top = 246
+      Width = 58
+      Height = 17
       Caption = '200 %'
       TabOrder = 4
       OnClick = RBDoubleClick
     end
     object RBQuad: TRadioButton
-      Left = 109
-      Top = 338
-      Width = 72
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 87
+      Top = 270
+      Width = 58
+      Height = 17
       Caption = '400 %'
       TabOrder = 5
       OnClick = RBQuadClick

+ 4 - 3
Examples/Demos/materials/texformat/fTexFormatC.h

@@ -16,7 +16,7 @@
 #include "GLS.SceneViewer.hpp"
 #include <Vcl.ExtCtrls.hpp>
 //---------------------------------------------------------------------------
-class TForm1 : public TForm
+class TFormFormats : public TForm
 {
 __published:	// IDE-managed Components
 	TGLSceneViewer *GLSceneViewer1;
@@ -48,11 +48,12 @@ __published:	// IDE-managed Components
 	void __fastcall CBCompressionChange(TObject *Sender);
 	void __fastcall CBFormatChange(TObject *Sender);
 private:	// User declarations
+	TFileName PathToData;
 public:		// User declarations
-	__fastcall TForm1(TComponent* Owner);
+	__fastcall TFormFormats(TComponent* Owner);
     bool newSelection;
 };
 //---------------------------------------------------------------------------
-extern PACKAGE TForm1 *Form1;
+extern PACKAGE TFormFormats *FormFormats;
 //---------------------------------------------------------------------------
 #endif

+ 66 - 131
Examples/Demos/materials/texformat/fTexFormatD.dfm

@@ -2,143 +2,98 @@ object FormTexFormat: TFormTexFormat
   Left = 413
   Top = 314
   Caption = 'Texture Formats'
-  ClientHeight = 451
-  ClientWidth = 700
+  ClientHeight = 361
+  ClientWidth = 560
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
-  Font.Height = -14
+  Font.Height = -11
   Font.Name = 'MS Sans Serif'
   Font.Style = []
   OnCreate = FormCreate
   OnResize = FormResize
-  PixelsPerInch = 120
-  TextHeight = 16
+  TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 440
-    Height = 451
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 352
+    Height = 361
     Camera = GLCamera1
     AfterRender = GLSceneViewer1AfterRender
-    FieldOfView = 179.479125976562500000
+    FieldOfView = 179.348922729492200000
     PenAsTouch = False
     Align = alClient
     TabOrder = 0
   end
   object Panel1: TPanel
-    Left = 440
+    Left = 352
     Top = 0
-    Width = 260
-    Height = 451
-    Margins.Left = 4
-    Margins.Top = 4
-    Margins.Right = 4
-    Margins.Bottom = 4
+    Width = 208
+    Height = 361
     Align = alRight
     BevelOuter = bvLowered
     TabOrder = 1
     object Label2: TLabel
-      Left = 20
-      Top = 125
-      Width = 42
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 100
+      Width = 32
+      Height = 13
       Caption = 'Format'
     end
     object Label3: TLabel
-      Left = 20
-      Top = 165
-      Width = 80
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 132
+      Width = 60
+      Height = 13
       Caption = 'Compression'
     end
     object Label4: TLabel
-      Left = 20
-      Top = 45
-      Width = 38
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 36
+      Width = 29
+      Height = 13
       Caption = 'Image'
     end
     object LAPicSize: TLabel
-      Left = 110
-      Top = 80
-      Width = 61
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 64
+      Width = 48
+      Height = 13
       Caption = 'LAPicSize'
     end
     object Label5: TLabel
-      Left = 20
-      Top = 280
-      Width = 74
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 224
+      Width = 58
+      Height = 13
       Caption = 'Render Size'
     end
     object LAUsedMemory: TLabel
-      Left = 20
-      Top = 225
-      Width = 85
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 180
+      Width = 65
+      Height = 13
       Caption = 'Used Memory'
     end
     object LARGB32: TLabel
-      Left = 20
-      Top = 205
-      Width = 85
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 164
+      Width = 65
+      Height = 13
       Caption = 'Used Memory'
     end
     object LACompression: TLabel
-      Left = 20
-      Top = 245
-      Width = 85
-      Height = 16
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 16
+      Top = 196
+      Width = 65
+      Height = 13
       Caption = 'Used Memory'
     end
     object CBFormat: TComboBox
-      Left = 110
-      Top = 120
-      Width = 131
-      Height = 24
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 96
+      Width = 105
+      Height = 21
       Style = csDropDownList
       TabOrder = 0
       OnChange = CBImageChange
@@ -149,14 +104,10 @@ object FormTexFormat: TFormTexFormat
         'RGBA  (16 bits)')
     end
     object CBCompression: TComboBox
-      Left = 110
-      Top = 160
-      Width = 131
-      Height = 24
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 128
+      Width = 105
+      Height = 21
       Style = csDropDownList
       TabOrder = 1
       OnChange = CBImageChange
@@ -167,27 +118,19 @@ object FormTexFormat: TFormTexFormat
         'Fastest')
     end
     object CBImage: TComboBox
-      Left = 110
-      Top = 40
-      Width = 131
-      Height = 24
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 32
+      Width = 105
+      Height = 21
       Style = csDropDownList
       TabOrder = 2
       OnChange = CBImageChange
     end
     object RBDefault: TRadioButton
-      Left = 110
-      Top = 278
-      Width = 71
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 88
+      Top = 222
+      Width = 57
+      Height = 17
       Caption = '100 %'
       Checked = True
       TabOrder = 3
@@ -195,27 +138,19 @@ object FormTexFormat: TFormTexFormat
       OnClick = CBImageChange
     end
     object RBDouble: TRadioButton
-      Left = 109
-      Top = 308
-      Width = 72
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 87
+      Top = 246
+      Width = 58
+      Height = 17
       Caption = '200 %'
       TabOrder = 4
       OnClick = CBImageChange
     end
     object RBQuad: TRadioButton
-      Left = 109
-      Top = 338
-      Width = 72
-      Height = 21
-      Margins.Left = 4
-      Margins.Top = 4
-      Margins.Right = 4
-      Margins.Bottom = 4
+      Left = 87
+      Top = 270
+      Width = 58
+      Height = 17
       Caption = '400 %'
       TabOrder = 5
       OnClick = CBImageChange

+ 3 - 4
Examples/Demos/materials/texformat/fTexFormatD.pas

@@ -51,9 +51,8 @@ type
     procedure FormResize(Sender: TObject);
     procedure GLSceneViewer1AfterRender(Sender: TObject);
   private
-     
+    PathToData: TFileName;
   public
-     
     newSelection: Boolean;
   end;
 
@@ -72,8 +71,8 @@ var
   sr: TSearchRec;
   i: Integer;
 begin
-  var Path: TFileName := GetCurrentAssetPath();
-  SetCurrentDir(Path  + '\texture');
+  PathToData := GetCurrentAssetPath();
+  SetCurrentDir(PathToData  + '\texture');
   // collect JPeg textures from the asset directory
   i := FindFirst('*.jpg', faAnyFile, sr);
   while i = 0 do

+ 12 - 10
Examples/Demos/materials/transparency/fTransparancyC.dfm

@@ -2,38 +2,40 @@ object Form1: TForm1
   Left = 192
   Top = 126
   Caption = 'Transparency'
-  ClientHeight = 405
-  ClientWidth = 610
+  ClientHeight = 481
+  ClientWidth = 691
   Color = clBtnFace
   Font.Charset = DEFAULT_CHARSET
   Font.Color = clWindowText
   Font.Height = -12
   Font.Name = 'MS Sans Serif'
   Font.Style = []
-  OldCreateOrder = False
+  Position = poScreenCenter
   Scaled = False
-  WindowState = wsMaximized
-  PixelsPerInch = 96
   TextHeight = 13
   object GLSceneViewer1: TGLSceneViewer
     Left = 0
     Top = 0
-    Width = 408
-    Height = 405
+    Width = 489
+    Height = 481
     Camera = GLCamera1
     Buffer.BackgroundColor = 13224393
-    FieldOfView = 146.991271972656300000
+    FieldOfView = 151.983581542968800000
     PenAsTouch = False
     Align = alClient
     TabOrder = 0
+    ExplicitWidth = 437
+    ExplicitHeight = 434
   end
   object Panel1: TPanel
-    Left = 408
+    Left = 489
     Top = 0
     Width = 202
-    Height = 405
+    Height = 481
     Align = alRight
     TabOrder = 1
+    ExplicitLeft = 408
+    ExplicitHeight = 405
     object Label1: TLabel
       Left = 7
       Top = 10

+ 3 - 5
Examples/Demos/movements/SmoothNavigator/SmoothNaviD.dpr

@@ -1,20 +1,18 @@
-{: GLSmoothNavigator Demo
+(* GLSmoothNavigator Demo
 
   A demo that shows what all classes inside the GLSmoothNavigator.pas unit
   are capable of.
-
   Note: there are lines commented out. These were used to manually set mouse
   position (useful in some cases).
-
   Version history:
     23/02/07 - DaStr - Initial version (contributed to GLScene)
+*)
 
-}
 program SmoothNaviD;
 
 uses
   Forms,
-  fSmoothNaviD in 'fSmoothNaviD.pas' {FormSmoothNavigator};
+  fSmoothNaviD in 'fSmoothNaviD.pas';
 
 {$R *.res}
 

+ 2 - 2
Examples/Demos/utilities/HTFUtils/TerrainPackD.dpr → Examples/Demos/utilities/HTFUtils/HTFPackD.dpr

@@ -10,11 +10,11 @@
   10/04/2007 -LIN- Added support for DTED DEM files.
                    Added Flip/Rotate. (Use Rotate 270 for DTED files.)
 }
-program TerrainPackD;
+program HTFPackD;
 
 uses
   Forms,
-  fTerrainPackD in 'fTerrainPackD.pas' {MainForm},
+  fHTFpackD in 'fHTFpackD.pas' {MainForm},
   fNavD in 'fNavD.pas' {NavForm},
   fViewerD in 'fViewerD.pas' {ViewerForm};
 

+ 6 - 6
Examples/Demos/utilities/HTFUtils/TerrainPackD.dproj → Examples/Demos/utilities/HTFUtils/HTFPackD.dproj

@@ -1,7 +1,7 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
     <PropertyGroup>
         <ProjectGuid>{7BCAF98C-1105-47E0-9295-99752E5C88BC}</ProjectGuid>
-        <MainSource>TerrainPackD.dpr</MainSource>
+        <MainSource>HTFPackD.dpr</MainSource>
         <Base>True</Base>
         <Config Condition="'$(Config)'==''">Debug</Config>
         <TargetedPlatforms>1</TargetedPlatforms>
@@ -48,7 +48,7 @@
         <DCC_ImageBase>00400000</DCC_ImageBase>
         <DCC_Namespace>Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;$(DCC_Namespace)</DCC_Namespace>
         <DCC_F>false</DCC_F>
-        <SanitizedProjectName>TerrainPackD</SanitizedProjectName>
+        <SanitizedProjectName>HTFPackD</SanitizedProjectName>
         <DCC_K>false</DCC_K>
     </PropertyGroup>
     <PropertyGroup Condition="'$(Base_Win32)'!=''">
@@ -88,7 +88,7 @@
         <DelphiCompile Include="$(MainSource)">
             <MainSource>MainSource</MainSource>
         </DelphiCompile>
-        <DCCReference Include="fTerrainPackD.pas">
+        <DCCReference Include="fHTFpackD.pas">
             <Form>MainForm</Form>
         </DCCReference>
         <DCCReference Include="fNavD.pas">
@@ -116,7 +116,7 @@
         <BorlandProject>
             <Delphi.Personality>
                 <Source>
-                    <Source Name="MainSource">TerrainPackD.dpr</Source>
+                    <Source Name="MainSource">HTFPackD.dpr</Source>
                 </Source>
                 <Excluded_Packages>
                     <Excluded_Packages Name="$(BDSBIN)\bcboffice2k280.bpl">Embarcadero C++Builder Office 2000 Servers Package</Excluded_Packages>
@@ -130,9 +130,9 @@
                 <Platform value="Win64">False</Platform>
             </Platforms>
             <Deployment Version="3">
-                <DeployFile LocalName="TerrainPackD.exe" Configuration="Debug" Class="ProjectOutput">
+                <DeployFile LocalName="HTFPackD.exe" Configuration="Debug" Class="ProjectOutput">
                     <Platform Name="Win32">
-                        <RemoteName>TerrainPackD.exe</RemoteName>
+                        <RemoteName>HTFPackD.exe</RemoteName>
                         <Overwrite>true</Overwrite>
                     </Platform>
                 </DeployFile>

+ 0 - 0
Examples/Demos/utilities/HTFUtils/fTerrainPackD.dfm → Examples/Demos/utilities/HTFUtils/fHTFpackD.dfm


+ 1 - 1
Examples/Demos/utilities/HTFUtils/fTerrainPackD.pas → Examples/Demos/utilities/HTFUtils/fHTFpackD.pas

@@ -1,4 +1,4 @@
-unit fTerrainPackD;
+unit fHTFpackD;
 
 interface
 

+ 19 - 18
Examples/Demos/utilities/HTFUtils/fViewerD.dfm

@@ -18,10 +18,10 @@ object ViewerForm: TViewerForm
     Left = 0
     Top = 0
     Width = 629
-    Height = 56
+    Height = 26
     AutoSize = True
     BorderWidth = 1
-    ButtonWidth = 197
+    ButtonWidth = 41
     Caption = 'ToolBar'
     Images = ImageList
     TabOrder = 0
@@ -31,12 +31,12 @@ object ViewerForm: TViewerForm
       Action = ACOpen
     end
     object ToolButton3: TToolButton
-      Left = 197
+      Left = 41
       Top = 0
       Action = ACExit
     end
     object ToolButton2: TToolButton
-      Left = 394
+      Left = 82
       Top = 0
       Width = 8
       Caption = 'ToolButton2'
@@ -44,22 +44,21 @@ object ViewerForm: TViewerForm
       Style = tbsSeparator
     end
     object ToolButton6: TToolButton
-      Left = 402
+      Left = 90
       Top = 0
       Action = ACNavMap
     end
     object ToolButton5: TToolButton
-      Left = 0
+      Left = 131
       Top = 0
       Width = 8
       Caption = 'ToolButton5'
       ImageIndex = 3
-      Wrap = True
       Style = tbsSeparator
     end
     object TBGrid: TToolButton
-      Left = 0
-      Top = 30
+      Left = 139
+      Top = 0
       Hint = 'Toggle Grid'
       Caption = 'TBGrid'
       Down = True
@@ -68,25 +67,25 @@ object ViewerForm: TViewerForm
       OnClick = TBGridClick
     end
     object ToolButton7: TToolButton
-      Left = 197
-      Top = 30
+      Left = 180
+      Top = 0
       Action = ACPalette
       DropdownMenu = PMPalettes
       Style = tbsDropDown
     end
     object ToolButton4: TToolButton
-      Left = 413
-      Top = 30
+      Left = 240
+      Top = 0
       Width = 8
       Caption = 'ToolButton4'
       ImageIndex = 2
       Style = tbsSeparator
     end
     object LAMap: TLabel
-      Left = 421
-      Top = 30
+      Left = 248
+      Top = 0
       Width = 49
-      Height = 16
+      Height = 22
       Caption = ' No map'
       Font.Charset = ANSI_CHARSET
       Font.Color = clWindowText
@@ -99,9 +98,9 @@ object ViewerForm: TViewerForm
   end
   object PaintBox: TPaintBox32
     Left = 0
-    Top = 56
+    Top = 26
     Width = 629
-    Height = 406
+    Height = 436
     Cursor = crCross
     Align = alClient
     TabOrder = 1
@@ -109,6 +108,8 @@ object ViewerForm: TViewerForm
     OnMouseMove = PaintBoxMouseMove
     OnMouseUp = PaintBoxMouseUp
     OnResize = PaintBoxResize
+    ExplicitTop = 56
+    ExplicitHeight = 406
   end
   object StatusBar: TStatusBar
     Left = 0

+ 34 - 23
Examples/Demos/utilities/HTFUtils/fViewerD.pas

@@ -20,7 +20,6 @@ uses
   Vcl.ToolWin,
   Vcl.Menus,
 
-
   GR32_Image,
   GR32,
 
@@ -56,14 +55,13 @@ type
     procedure ACOpenExecute(Sender: TObject);
     procedure FormCreate(Sender: TObject);
     procedure PaintBoxResize(Sender: TObject);
-    procedure PaintBoxMouseDown(Sender: TObject; Button: TMouseButton;
-      Shift: TShiftState; X, Y: Integer);
-    procedure PaintBoxMouseMove(Sender: TObject; Shift: TShiftState;
+    procedure PaintBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
       X, Y: Integer);
+    procedure PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
     procedure TBGridClick(Sender: TObject);
     procedure ACNavMapExecute(Sender: TObject);
-    procedure PaintBoxMouseUp(Sender: TObject; Button: TMouseButton;
-      Shift: TShiftState; X, Y: Integer);
+    procedure PaintBoxMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+      X, Y: Integer);
     procedure ACNavMapUpdate(Sender: TObject);
     procedure ACPaletteExecute(Sender: TObject);
   private
@@ -77,11 +75,11 @@ type
 
 var
   ViewerForm: TViewerForm;
-
-var
   heightColor: array [Low(SmallInt) .. High(SmallInt)] of TColor32;
 
+//----------------------------------------------------------------
 implementation
+//----------------------------------------------------------------
 
 {$R *.dfm}
 
@@ -156,7 +154,7 @@ begin
   end;
 end;
 
-//----------------------------------------------------------------
+// ----------------------------------------------------------------
 
 procedure TViewerForm.FormCreate(Sender: TObject);
 var
@@ -195,17 +193,23 @@ begin
   end;
 end;
 
+// ----------------------------------------------------------------
+
 procedure TViewerForm.FormDestroy(Sender: TObject);
 begin
   htf.Free;
   bmpTile.Free;
 end;
 
+// ----------------------------------------------------------------
+
 procedure TViewerForm.ACExitExecute(Sender: TObject);
 begin
   Close;
 end;
 
+// ----------------------------------------------------------------
+
 procedure TViewerForm.ACOpenExecute(Sender: TObject);
 var
   i: Integer;
@@ -224,6 +228,8 @@ begin
   end;
 end;
 
+// ----------------------------------------------------------------
+
 procedure TViewerForm.PrepareBitmap;
 var
   i, sx, tx, ty: Integer;
@@ -252,13 +258,9 @@ begin
     for i := 0 to tileList.Count - 1 do
     begin
       tileInfo := PGLHeightTileInfo(tileList[i]);
-
       QueryPerformanceCounter(start);
-
       tile := htf.GetTile(tileInfo.left, tileInfo.top);
-
       QueryPerformanceCounter(lap);
-
       bmpTile.Width := tileInfo.Width;
       bmpTile.Height := tileInfo.Height;
       for ty := 0 to tileInfo.Height - 1 do
@@ -269,9 +271,7 @@ begin
           scanLine[tx] := heightColor[dataRow[tx]];
       end;
       bmp.Draw(tileInfo.left - curX, tileInfo.top - curY, bmpTile);
-
       QueryPerformanceCounter(stop);
-
       htfTime := htfTime + lap - start;
       drawTime := drawTime + stop - lap;
     end;
@@ -281,8 +281,8 @@ begin
       for i := 0 to tileList.Count - 1 do
         with PGLHeightTileInfo(tileList[i])^ do
         begin
-          bmp.FrameRectS(left - curX, top - curY, left + Width - curX + 1,
-            top + Height - curY + 1, clWhite32);
+          bmp.FrameRectS(left - curX, top - curY, left + Width - curX + 1, top + Height - curY + 1,
+            clWhite32);
         end;
     end;
   finally
@@ -300,22 +300,25 @@ begin
     PrepareBitmap;
 end;
 
-procedure TViewerForm.PaintBoxMouseDown(Sender: TObject; Button: TMouseButton;
-  Shift: TShiftState; X, Y: Integer);
+procedure TViewerForm.PaintBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+  X, Y: Integer);
 begin
   mx := X;
   my := Y;
   Screen.Cursor := crSizeAll;
 end;
 
-procedure TViewerForm.PaintBoxMouseUp(Sender: TObject; Button: TMouseButton;
-  Shift: TShiftState; X, Y: Integer);
+//----------------------------------------------------------------
+
+procedure TViewerForm.PaintBoxMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState;
+  X, Y: Integer);
 begin
   Screen.Cursor := crDefault;
 end;
 
-procedure TViewerForm.PaintBoxMouseMove(Sender: TObject; Shift: TShiftState;
-  X, Y: Integer);
+//----------------------------------------------------------------
+
+procedure TViewerForm.PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
 var
   tileIdx, n: Integer;
   tileInfo: PGLHeightTileInfo;
@@ -357,12 +360,16 @@ begin
   end;
 end;
 
+//----------------------------------------------------------------
+
 procedure TViewerForm.TBGridClick(Sender: TObject);
 begin
   PrepareBitmap;
   PaintBox.Invalidate;
 end;
 
+//----------------------------------------------------------------
+
 procedure TViewerForm.ACNavMapExecute(Sender: TObject);
 begin
   if NavForm.Execute(htf) then
@@ -374,11 +381,15 @@ begin
   end;
 end;
 
+//----------------------------------------------------------------
+
 procedure TViewerForm.ACNavMapUpdate(Sender: TObject);
 begin
   ACNavMap.Enabled := Assigned(htf);
 end;
 
+//----------------------------------------------------------------
+
 procedure TViewerForm.ACPaletteExecute(Sender: TObject);
 begin
   if Sender is TMenuItem then

部分文件因文件數量過多而無法顯示