浏览代码

Removed common units to common folder

GLScene 2 年之前
父节点
当前提交
8651a3d767
共有 100 个文件被更改,包括 2498 次插入2632 次删除
  1. 4 5
      Examples/AdvDemos/Archipelago/fArchipelagoC.cpp
  2. 4 4
      Examples/AdvDemos/Archipelago/fArchipelagoD.pas
  3. 2 2
      Examples/AdvDemos/Forest/fForestD.pas
  4. 1 1
      Examples/AdvDemos/GLSViewer/Source/fMain.pas
  5. 2 2
      Packages/GLScene_Cg_DT.dproj
  6. 18 18
      Packages/GLScene_DT.dpk
  7. 27 32
      Packages/GLScene_DT.dproj
  8. 8 8
      Packages/GLScene_RT.dpk
  9. 8 8
      Packages/GLScene_RT.dproj
  10. 2 1
      Packagex/GLArena_RT.dpk
  11. 3 2
      Packagex/GLArena_RT.dproj
  12. 2 2
      Source/CUDA.APIComps.pas
  13. 1 1
      Source/CUDA.Context.pas
  14. 1 1
      Source/CUDA.FFTPlan.pas
  15. 131 0
      Source/Common/Scena.CrossXML.pas
  16. 2 2
      Source/Common/Scena.Generics.pas
  17. 2 2
      Source/Common/Scena.Logger.pas
  18. 0 130
      Source/FMX/GLX.CrossXML.pas
  19. 52 52
      Source/FMX/GLX.File3DS.pas
  20. 4 4
      Source/FMX/GLX.FileOBJ.pas
  21. 4 4
      Source/FMX/GLX.LinePFX.pas
  22. 4 4
      Source/FMX/GLX.Material.pas
  23. 8 8
      Source/FMX/GLX.ParametricSurfaces.pas
  24. 8 8
      Source/FMX/GLX.ParticleFX.pas
  25. 37 38
      Source/FMX/GLX.PersistentClasses.pas
  26. 12 12
      Source/FMX/GLX.Ragdoll.pas
  27. 8 8
      Source/FMX/GLX.TilePlane.pas
  28. 70 70
      Source/FMX/GLX.VectorFileObjects.pas
  29. 8 8
      Source/FMX/GLX.VectorLists.pas
  30. 12 12
      Source/FMX/GLX.VerletTypes.pas
  31. 16 16
      Source/FMX/Physix.ODESkeletonColliders.pas
  32. 1 1
      Source/Formats.X.pas
  33. 1 1
      Source/GLS.ApplicationFileIO.pas
  34. 1 1
      Source/GLS.ArchiveManager.pas
  35. 1 1
      Source/GLS.BaseClasses.pas
  36. 2 2
      Source/GLS.Context.pas
  37. 3 4
      Source/GLS.Coordinates.pas
  38. 0 131
      Source/GLS.CrossXML.pas
  39. 1 1
      Source/GLS.FBORenderer.pas
  40. 3 2
      Source/GLS.Feedback.pas
  41. 8 8
      Source/GLS.File3DSSceneObjects.pas
  42. 4 4
      Source/GLS.FileOBJ.pas
  43. 2 2
      Source/GLS.Graphics.pas
  44. 4 4
      Source/GLS.Gui.pas
  45. 3 3
      Source/GLS.Imposter.pas
  46. 4 4
      Source/GLS.LinePFX.pas
  47. 9 9
      Source/GLS.Material.pas
  48. 12 12
      Source/GLS.MaterialEx.pas
  49. 1 1
      Source/GLS.MaterialMultiProxy.pas
  50. 3 3
      Source/GLS.MeshUtils.pas
  51. 1 1
      Source/GLS.MultiPolygon.pas
  52. 1 1
      Source/GLS.OpenGLAdapter.pas
  53. 8 8
      Source/GLS.ParametricSurfaces.pas
  54. 12 12
      Source/GLS.ParticleFX.pas
  55. 141 140
      Source/GLS.PersistentClasses.pas
  56. 1 1
      Source/GLS.PipelineTransformation.pas
  57. 14 14
      Source/GLS.Ragdoll.pas
  58. 2 2
      Source/GLS.RenderContextInfo.pas
  59. 13 13
      Source/GLS.Scene.pas
  60. 1 1
      Source/GLS.Selection.pas
  61. 3 3
      Source/GLS.ShadowVolume.pas
  62. 2 2
      Source/GLS.SmartObjects.pas
  63. 3 3
      Source/GLS.SpacePartition.pas
  64. 12 12
      Source/GLS.TilePlane.pas
  65. 83 83
      Source/GLS.VectorFileObjects.pas
  66. 11 11
      Source/GLS.VectorLists.pas
  67. 12 12
      Source/GLS.VerletTypes.pas
  68. 2 2
      Source/GLS.WaterPlane.pas
  69. 1 1
      Source/GLS.WindowsContext.pas
  70. 1 1
      Source/GLS.XCollection.pas
  71. 1 1
      Source/GLSL.TextureShaders.pas
  72. 2 2
      Source/Physics.ODEManager.pas
  73. 16 16
      Source/Physics.ODESkeletonColliders.pas
  74. 162 162
      Source/VCL/FRColorEditor.dfm
  75. 503 503
      Source/VCL/FRColorEditor.pas
  76. 114 114
      Source/VCL/FRFaceEditor.dfm
  77. 151 151
      Source/VCL/FRFaceEditor.pas
  78. 176 176
      Source/VCL/FRMaterialPreview.dfm
  79. 183 183
      Source/VCL/FRMaterialPreview.pas
  80. 144 144
      Source/VCL/FRTextureEdit.dfm
  81. 198 198
      Source/VCL/FRTextureEdit.pas
  82. 0 0
      Source/VCL/FRTrackBarEdit.dfm
  83. 0 0
      Source/VCL/FRTrackBarEdit.pas
  84. 0 0
      Source/VCL/FmGuiLayoutEditor.dfm
  85. 0 0
      Source/VCL/FmGuiLayoutEditor.pas
  86. 0 0
      Source/VCL/FmGuiSkinEditor.dfm
  87. 0 0
      Source/VCL/FmGuiSkinEditor.pas
  88. 0 0
      Source/VCL/FmInfo.dfm
  89. 0 0
      Source/VCL/FmInfo.pas
  90. 0 0
      Source/VCL/FmLibMaterialPicker.dfm
  91. 0 0
      Source/VCL/FmLibMaterialPicker.pas
  92. 0 0
      Source/VCL/FmMaterialEditor.dfm
  93. 0 0
      Source/VCL/FmMaterialEditor.pas
  94. 0 0
      Source/VCL/FmPlugInManagerEditor.dfm
  95. 0 0
      Source/VCL/FmPlugInManagerEditor.pas
  96. 0 0
      Source/VCL/FmSceneEditor.dfm
  97. 0 0
      Source/VCL/FmSceneEditor.pas
  98. 0 0
      Source/VCL/FmShaderMemo.dfm
  99. 0 0
      Source/VCL/FmShaderMemo.pas
  100. 0 0
      Source/VCL/FmShaderUniformEditor.dfm

+ 4 - 5
Examples/AdvDemos/Archipelago/fArchipelagoC.cpp

@@ -47,7 +47,6 @@ void __fastcall TForm1::FormCreate(TObject *Sender) {
 	String DataPath;
 	String DataPath;
 
 
 	DataPath = ExtractFilePath(ParamStr(0));
 	DataPath = ExtractFilePath(ParamStr(0));
-//	DataPath = ExtractFilePath(Application->ExeName);
 	DataPath += "Data\\";
 	DataPath += "Data\\";
 	SetCurrentDir(DataPath);
 	SetCurrentDir(DataPath);
 	MaterialLibrary->TexturePaths = DataPath;
 	MaterialLibrary->TexturePaths = DataPath;
@@ -417,7 +416,7 @@ void __fastcall TForm1::TerrainRendererHeightDataPostRender
 		MaterialLibrary->ApplyMaterial("water", rci);
 		MaterialLibrary->ApplyMaterial("water", rci);
 		do {
 		do {
 			if (!WasAboveWater)
 			if (!WasAboveWater)
-				rci.GLStates->InvertGLFrontFace();
+				rci.GLStates->InvertFrontFace();
 			glPushAttrib(GL_ENABLE_BIT);
 			glPushAttrib(GL_ENABLE_BIT);
 
 
 			glDisable(GL_LIGHTING);
 			glDisable(GL_LIGHTING);
@@ -457,7 +456,7 @@ void __fastcall TForm1::TerrainRendererHeightDataPostRender
 			glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
 			glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
 			glPopAttrib();
 			glPopAttrib();
 			if (!WasAboveWater)
 			if (!WasAboveWater)
-				rci.GLStates->InvertGLFrontFace();
+				rci.GLStates->InvertFrontFace();
 			WaterPolyCount = HeightDatas->Count * 8;
 			WaterPolyCount = HeightDatas->Count * 8;
 		}
 		}
 		while (MaterialLibrary->UnApplyMaterial(rci));
 		while (MaterialLibrary->UnApplyMaterial(rci));
@@ -535,7 +534,7 @@ void __fastcall TForm1::DOWakeRender(TObject *Sender, TGLRenderContextInfo &rci)
 			glDisable(GL_DEPTH_TEST);
 			glDisable(GL_DEPTH_TEST);
 
 
 			if (!WasAboveWater)
 			if (!WasAboveWater)
-				rci.GLStates->InvertGLFrontFace();
+				rci.GLStates->InvertFrontFace();
 
 
 			glBegin(GL_TRIANGLE_STRIP);
 			glBegin(GL_TRIANGLE_STRIP);
 			n = WakeVertices->Count;
 			n = WakeVertices->Count;
@@ -554,7 +553,7 @@ void __fastcall TForm1::DOWakeRender(TObject *Sender, TGLRenderContextInfo &rci)
 			glEnd();
 			glEnd();
 
 
 			if (!WasAboveWater)
 			if (!WasAboveWater)
-				rci.GLStates->InvertGLFrontFace();
+				rci.GLStates->InvertFrontFace();
 
 
 			glPopAttrib();
 			glPopAttrib();
 			glDisable(stStencilTest);
 			glDisable(stStencilTest);

+ 4 - 4
Examples/AdvDemos/Archipelago/fArchipelagoD.pas

@@ -367,7 +367,7 @@ begin
     with rci.GLStates do
     with rci.GLStates do
     begin
     begin
       if not WasAboveWater then
       if not WasAboveWater then
-        InvertGLFrontFace;
+        InvertFrontFace;
       Disable(stLighting);
       Disable(stLighting);
       Disable(stNormalize);
       Disable(stNormalize);
       SetStencilFunc(cfAlways, 1, 255);
       SetStencilFunc(cfAlways, 1, 255);
@@ -404,7 +404,7 @@ begin
     end;
     end;
 
 
     if not WasAboveWater then
     if not WasAboveWater then
-      rci.GLStates.InvertGLFrontFace;
+      rci.GLStates.InvertFrontFace;
     WaterPolyCount := heightDatas.Count * 8;
     WaterPolyCount := heightDatas.Count * 8;
   until not MaterialLibrary.UnApplyMaterial(rci);
   until not MaterialLibrary.UnApplyMaterial(rci);
 end;
 end;
@@ -617,7 +617,7 @@ begin
       Disable(stDepthTest);
       Disable(stDepthTest);
 
 
       if not WasAboveWater then
       if not WasAboveWater then
-        InvertGLFrontFace;
+        InvertFrontFace;
 
 
       glBegin(GL_TRIANGLE_STRIP);
       glBegin(GL_TRIANGLE_STRIP);
       for i := 0 to WakeVertices.Count - 1 do
       for i := 0 to WakeVertices.Count - 1 do
@@ -637,7 +637,7 @@ begin
       glEnd;
       glEnd;
 
 
       if not WasAboveWater then
       if not WasAboveWater then
-        InvertGLFrontFace;
+        InvertFrontFace;
       Disable(stStencilTest);
       Disable(stStencilTest);
     end;
     end;
 
 

+ 2 - 2
Examples/AdvDemos/Forest/fForestD.pas

@@ -111,7 +111,7 @@ type
     Path: TFileName;
     Path: TFileName;
     TestTree: TGLTree;
     TestTree: TGLTree;
     TreesShown: Integer;
     TreesShown: Integer;
-    nearTrees: TGLPersistentObjectList;
+    nearTrees: TPersistentObjectList;
     Imposter: TImposter;
     Imposter: TImposter;
     densityBitmap: TBitmap;
     densityBitmap: TBitmap;
     mirrorTexture: TGLTextureHandle;
     mirrorTexture: TGLTextureHandle;
@@ -217,7 +217,7 @@ begin
   SetCursorPos(lmp.X, lmp.Y);
   SetCursorPos(lmp.X, lmp.Y);
   ShowCursor(False);
   ShowCursor(False);
 
 
-  nearTrees := TGLPersistentObjectList.Create;
+  nearTrees := TPersistentObjectList.Create;
 
 
   camTurn := -60;
   camTurn := -60;
   enableRectReflection := False;
   enableRectReflection := False;

+ 1 - 1
Examples/AdvDemos/GLSViewer/Source/fMain.pas

@@ -812,7 +812,7 @@ var
   I: Integer;
   I: Integer;
   mo: TGLMeshObject;
   mo: TGLMeshObject;
   fg: TFGVertexIndexList;
   fg: TFGVertexIndexList;
-  strips: TGLPersistentObjectList;
+  strips: TPersistentObjectList;
 begin
 begin
   acConvertToTriangles.Execute;
   acConvertToTriangles.Execute;
   mo := ffObject.MeshObjects[0];
   mo := ffObject.MeshObjects[0];

+ 2 - 2
Packages/GLScene_Cg_DT.dproj

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

+ 18 - 18
Packages/GLScene_DT.dpk

@@ -40,24 +40,24 @@ requires
   GLScene_RT;
   GLScene_RT;
 
 
 contains
 contains
-  FRColorEditor in '..\Source\FRColorEditor.pas' {RColorEditor: TFrame},
-  FRTextureEdit in '..\Source\FRTextureEdit.pas' {RTextureEdit: TFrame},
-  FmGuiLayoutEditor in '..\Source\FmGuiLayoutEditor.pas' {GLLayoutEditorForm},
-  FmGuiSkinEditor in '..\Source\FmGuiSkinEditor.pas' {GLSkinEditorForm},
-  FmShaderMemo in '..\Source\FmShaderMemo.pas' {ShaderMemoForm},
-  FmShaderUniformEditor in '..\Source\FmShaderUniformEditor.pas' {GLShaderUniformEditor},
-  FmVectorEditor in '..\Source\FmVectorEditor.pas' {GLVectorEditorForm},
-  FmSceneEditor in '..\Source\FmSceneEditor.pas' {GLSceneEditorForm},
-  FmPlugInManagerEditor in '..\Source\FmPlugInManagerEditor.pas' {GLPlugInManagerEditorForm},
-  FmXCollectionEditor in '..\Source\FmXCollectionEditor.pas' {GLXCollectionEditorForm},
-  FmInfo in '..\Source\FmInfo.pas' {GLInfoForm},
-  GLS.SceneRegister in '..\Source\GLS.SceneRegister.pas',
-  GLS.XCollectionRegister in '..\Source\GLS.XCollectionRegister.pas',
-  FRTrackBarEdit in '..\Source\FRTrackBarEdit.pas' {RTrackBarEdit: TFrame},
-  FRFaceEditor in '..\Source\FRFaceEditor.pas' {RFaceEditor: TFrame},
-  FRMaterialPreview in '..\Source\FRMaterialPreview.pas' {RMaterialPreview: TFrame},
-  FmMaterialEditor in '..\Source\FmMaterialEditor.pas' {GLMaterialEditorForm},
-  FmLibMaterialPicker in '..\Source\FmLibMaterialPicker.pas' {GLLibMaterialPickerForm};
+  FRColorEditor in '..\Source\Vcl\FRColorEditor.pas' {RColorEditor: TFrame},
+  FRTextureEdit in '..\Source\Vcl\FRTextureEdit.pas' {RTextureEdit: TFrame},
+  FRTrackBarEdit in '..\Source\Vcl\FRTrackBarEdit.pas' {RTrackBarEdit: TFrame},
+  FRFaceEditor in '..\Source\Vcl\FRFaceEditor.pas' {RFaceEditor: TFrame},
+  FRMaterialPreview in '..\Source\Vcl\FRMaterialPreview.pas' {RMaterialPreview: TFrame},
+  FmGuiLayoutEditor in '..\Source\Vcl\FmGuiLayoutEditor.pas' {GLLayoutEditorForm},
+  FmGuiSkinEditor in '..\Source\Vcl\FmGuiSkinEditor.pas' {GLSkinEditorForm},
+  FmShaderMemo in '..\Source\Vcl\FmShaderMemo.pas' {ShaderMemoForm},
+  FmShaderUniformEditor in '..\Source\Vcl\FmShaderUniformEditor.pas' {GLShaderUniformEditor},
+  FmVectorEditor in '..\Source\Vcl\FmVectorEditor.pas' {GLVectorEditorForm},
+  FmSceneEditor in '..\Source\Vcl\FmSceneEditor.pas' {GLSceneEditorForm},
+  FmPlugInManagerEditor in '..\Source\Vcl\FmPlugInManagerEditor.pas' {GLPlugInManagerEditorForm},
+  FmXCollectionEditor in '..\Source\Vcl\FmXCollectionEditor.pas' {GLXCollectionEditorForm},
+  FmInfo in '..\Source\Vcl\FmInfo.pas' {GLInfoForm},
+  GLS.SceneRegister in '..\Source\VCL\GLS.SceneRegister.pas',
+  GLS.XCollectionRegister in '..\Source\VCL\GLS.XCollectionRegister.pas',
+  FmMaterialEditor in '..\Source\Vcl\FmMaterialEditor.pas' {GLMaterialEditorForm},
+  FmLibMaterialPicker in '..\Source\Vcl\FmLibMaterialPicker.pas' {GLLibMaterialPickerForm};
 
 
 end.
 end.
 
 

+ 27 - 32
Packages/GLScene_DT.dproj

@@ -118,65 +118,60 @@
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="VclSmp.dcp"/>
         <DCCReference Include="VclSmp.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
-        <DCCReference Include="..\Source\FRColorEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FRColorEditor.pas">
             <Form>RColorEditor</Form>
             <Form>RColorEditor</Form>
             <DesignClass>TFrame</DesignClass>
             <DesignClass>TFrame</DesignClass>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FRTextureEdit.pas">
+        <DCCReference Include="..\Source\Vcl\FRTextureEdit.pas">
             <Form>RTextureEdit</Form>
             <Form>RTextureEdit</Form>
             <DesignClass>TFrame</DesignClass>
             <DesignClass>TFrame</DesignClass>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmGuiLayoutEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FRTrackBarEdit.pas">
+            <Form>RTrackBarEdit</Form>
+            <DesignClass>TFrame</DesignClass>
+        </DCCReference>
+        <DCCReference Include="..\Source\Vcl\FRFaceEditor.pas">
+            <Form>RFaceEditor</Form>
+            <DesignClass>TFrame</DesignClass>
+        </DCCReference>
+        <DCCReference Include="..\Source\Vcl\FRMaterialPreview.pas">
+            <Form>RMaterialPreview</Form>
+            <DesignClass>TFrame</DesignClass>
+        </DCCReference>
+        <DCCReference Include="..\Source\Vcl\FmGuiLayoutEditor.pas">
             <Form>GLLayoutEditorForm</Form>
             <Form>GLLayoutEditorForm</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmGuiSkinEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmGuiSkinEditor.pas">
             <Form>GLSkinEditorForm</Form>
             <Form>GLSkinEditorForm</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmShaderMemo.pas">
+        <DCCReference Include="..\Source\Vcl\FmShaderMemo.pas">
             <Form>ShaderMemoForm</Form>
             <Form>ShaderMemoForm</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmShaderUniformEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmShaderUniformEditor.pas">
             <Form>GLShaderUniformEditor</Form>
             <Form>GLShaderUniformEditor</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmVectorEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmVectorEditor.pas">
             <Form>GLVectorEditorForm</Form>
             <Form>GLVectorEditorForm</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmSceneEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmSceneEditor.pas">
             <Form>GLSceneEditorForm</Form>
             <Form>GLSceneEditorForm</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmPlugInManagerEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmPlugInManagerEditor.pas">
             <Form>GLPlugInManagerEditorForm</Form>
             <Form>GLPlugInManagerEditorForm</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmXCollectionEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmXCollectionEditor.pas">
             <Form>GLXCollectionEditorForm</Form>
             <Form>GLXCollectionEditorForm</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmInfo.pas">
+        <DCCReference Include="..\Source\Vcl\FmInfo.pas">
             <Form>GLInfoForm</Form>
             <Form>GLInfoForm</Form>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\GLS.SceneRegister.pas"/>
-        <DCCReference Include="..\Source\GLS.XCollectionRegister.pas"/>
-        <DCCReference Include="..\Source\FRTrackBarEdit.pas">
-            <Form>RTrackBarEdit</Form>
-            <FormType>dfm</FormType>
-            <DesignClass>TFrame</DesignClass>
-        </DCCReference>
-        <DCCReference Include="..\Source\FRFaceEditor.pas">
-            <Form>RFaceEditor</Form>
-            <FormType>dfm</FormType>
-            <DesignClass>TFrame</DesignClass>
-        </DCCReference>
-        <DCCReference Include="..\Source\FRMaterialPreview.pas">
-            <Form>RMaterialPreview</Form>
-            <FormType>dfm</FormType>
-            <DesignClass>TFrame</DesignClass>
-        </DCCReference>
-        <DCCReference Include="..\Source\FmMaterialEditor.pas">
+        <DCCReference Include="..\Source\VCL\GLS.SceneRegister.pas"/>
+        <DCCReference Include="..\Source\VCL\GLS.XCollectionRegister.pas"/>
+        <DCCReference Include="..\Source\Vcl\FmMaterialEditor.pas">
             <Form>GLMaterialEditorForm</Form>
             <Form>GLMaterialEditorForm</Form>
-            <FormType>dfm</FormType>
         </DCCReference>
         </DCCReference>
-        <DCCReference Include="..\Source\FmLibMaterialPicker.pas">
+        <DCCReference Include="..\Source\Vcl\FmLibMaterialPicker.pas">
             <Form>GLLibMaterialPickerForm</Form>
             <Form>GLLibMaterialPickerForm</Form>
-            <FormType>dfm</FormType>
         </DCCReference>
         </DCCReference>
         <RcCompile Include="..\Resources\GLScene.rc">
         <RcCompile Include="..\Resources\GLScene.rc">
             <Form>GLScene.res</Form>
             <Form>GLScene.res</Form>

+ 8 - 8
Packages/GLScene_RT.dpk

@@ -74,7 +74,7 @@ contains
   GLS.Canvas in '..\Source\GLS.Canvas.pas',
   GLS.Canvas in '..\Source\GLS.Canvas.pas',
   GLS.Collision in '..\Source\GLS.Collision.pas',
   GLS.Collision in '..\Source\GLS.Collision.pas',
   GLS.Color in '..\Source\GLS.Color.pas',
   GLS.Color in '..\Source\GLS.Color.pas',
-  GLS.CompositeImage in '..\Source\GLS.CompositeImage.pas',
+  GLS.CompositeImage in '..\Source\VCL\GLS.CompositeImage.pas',
   GLS.Console in '..\Source\GLS.Console.pas',
   GLS.Console in '..\Source\GLS.Console.pas',
   GLS.Context in '..\Source\GLS.Context.pas',
   GLS.Context in '..\Source\GLS.Context.pas',
   GLS.Coordinates in '..\Source\GLS.Coordinates.pas',
   GLS.Coordinates in '..\Source\GLS.Coordinates.pas',
@@ -88,13 +88,13 @@ contains
   GLS.FBORenderer in '..\Source\GLS.FBORenderer.pas',
   GLS.FBORenderer in '..\Source\GLS.FBORenderer.pas',
   GLS.FPSMovement in '..\Source\GLS.FPSMovement.pas',
   GLS.FPSMovement in '..\Source\GLS.FPSMovement.pas',
   GLS.Feedback in '..\Source\GLS.Feedback.pas',
   GLS.Feedback in '..\Source\GLS.Feedback.pas',
-  GLS.File3DS in '..\Source\GLS.File3DS.pas',
+  GLS.File3DS in '..\Source\VCL\GLS.File3DS.pas',
   GLS.File3DSSceneObjects in '..\Source\GLS.File3DSSceneObjects.pas',
   GLS.File3DSSceneObjects in '..\Source\GLS.File3DSSceneObjects.pas',
   GLS.File3DPDF in '..\Source\GLS.File3DPDF.pas',
   GLS.File3DPDF in '..\Source\GLS.File3DPDF.pas',
   GLS.FileASE in '..\Source\GLS.FileASE.pas',
   GLS.FileASE in '..\Source\GLS.FileASE.pas',
   GLS.FileB3D in '..\Source\GLS.FileB3D.pas',
   GLS.FileB3D in '..\Source\GLS.FileB3D.pas',
   GLS.FileBMP in '..\Source\GLS.FileBMP.pas',
   GLS.FileBMP in '..\Source\GLS.FileBMP.pas',
-  GLS.FileDDS in '..\Source\GLS.FileDDS.pas',
+  GLS.FileDDS in '..\Source\VCL\GLS.FileDDS.pas',
   GLS.FileDXF in '..\Source\GLS.FileDXF.pas',
   GLS.FileDXF in '..\Source\GLS.FileDXF.pas',
   GLS.FileGL2 in '..\Source\GLS.FileGL2.pas',
   GLS.FileGL2 in '..\Source\GLS.FileGL2.pas',
   GLS.FileGLTF in '..\Source\GLS.FileGLTF.pas',
   GLS.FileGLTF in '..\Source\GLS.FileGLTF.pas',
@@ -136,7 +136,7 @@ contains
   GLS.GameMenu in '..\Source\GLS.GameMenu.pas',
   GLS.GameMenu in '..\Source\GLS.GameMenu.pas',
   GLS.GeomObjects in '..\Source\GLS.GeomObjects.pas',
   GLS.GeomObjects in '..\Source\GLS.GeomObjects.pas',
   GLS.GeometryBB in '..\Source\GLS.GeometryBB.pas',
   GLS.GeometryBB in '..\Source\GLS.GeometryBB.pas',
-  GLS.Generics in '..\Source\GLS.Generics.pas',
+  Scena.Generics in '..\Source\Common\Scena.Generics.pas',
   GLS.Gizmo in '..\Source\GLS.Gizmo.pas',
   GLS.Gizmo in '..\Source\GLS.Gizmo.pas',
   GLS.GizmoEx in '..\Source\GLS.GizmoEx.pas',
   GLS.GizmoEx in '..\Source\GLS.GizmoEx.pas',
   GLS.Graph in '..\Source\GLS.Graph.pas',
   GLS.Graph in '..\Source\GLS.Graph.pas',
@@ -152,7 +152,7 @@ contains
   GLS.Joystick in '..\Source\GLS.Joystick.pas',
   GLS.Joystick in '..\Source\GLS.Joystick.pas',
   GLS.LensFlare in '..\Source\GLS.LensFlare.pas',
   GLS.LensFlare in '..\Source\GLS.LensFlare.pas',
   GLS.LinePFX in '..\Source\GLS.LinePFX.pas',
   GLS.LinePFX in '..\Source\GLS.LinePFX.pas',
-  GLS.Logger in '..\Source\GLS.Logger.pas',
+  Scena.Logger in '..\Source\Common\Scena.Logger.pas',
   GLS.Manager in '..\Source\GLS.Manager.pas',
   GLS.Manager in '..\Source\GLS.Manager.pas',
   GLS.Material in '..\Source\GLS.Material.pas',
   GLS.Material in '..\Source\GLS.Material.pas',
   GLS.MaterialEx in '..\Source\GLS.MaterialEx.pas',
   GLS.MaterialEx in '..\Source\GLS.MaterialEx.pas',
@@ -204,7 +204,7 @@ contains
   GLSL.ShapeShaders in '..\Source\GLSL.ShapeShaders.pas',
   GLSL.ShapeShaders in '..\Source\GLSL.ShapeShaders.pas',
   GLSL.ShaderParameter in '..\Source\GLSL.ShaderParameter.pas',
   GLSL.ShaderParameter in '..\Source\GLSL.ShaderParameter.pas',
   GLSL.Shader in '..\Source\GLSL.Shader.pas',
   GLSL.Shader in '..\Source\GLSL.Shader.pas',
-  GLS.Language in '..\Source\GLS.Language.pas',
+  GLS.Language in '..\Source\VCL\GLS.Language.pas',
   GLS.Memo in '..\Source\GLS.Memo.pas',
   GLS.Memo in '..\Source\GLS.Memo.pas',
   GLS.ProjectedTextures in '..\Source\GLS.ProjectedTextures.pas',
   GLS.ProjectedTextures in '..\Source\GLS.ProjectedTextures.pas',
   GLS.Scene in '..\Source\GLS.Scene.pas',
   GLS.Scene in '..\Source\GLS.Scene.pas',
@@ -237,7 +237,7 @@ contains
   GLS.Trail in '..\Source\GLS.Trail.pas',
   GLS.Trail in '..\Source\GLS.Trail.pas',
   GLS.Tree in '..\Source\GLS.Tree.pas',
   GLS.Tree in '..\Source\GLS.Tree.pas',
   GLS.Triangulation in '..\Source\GLS.Triangulation.pas',
   GLS.Triangulation in '..\Source\GLS.Triangulation.pas',
-  GLS.Utils in '..\Source\GLS.Utils.pas',
+  GLS.Utils in '..\Source\VCL\GLS.Utils.pas',
   GLS.VectorFileObjects in '..\Source\GLS.VectorFileObjects.pas',
   GLS.VectorFileObjects in '..\Source\GLS.VectorFileObjects.pas',
   GLS.VerletTypes in '..\Source\GLS.VerletTypes.pas',
   GLS.VerletTypes in '..\Source\GLS.VerletTypes.pas',
   GLS.VerletClothify in '..\Source\GLS.VerletClothify.pas',
   GLS.VerletClothify in '..\Source\GLS.VerletClothify.pas',
@@ -250,7 +250,7 @@ contains
   GLS.PersistentClasses in '..\Source\GLS.PersistentClasses.pas',
   GLS.PersistentClasses in '..\Source\GLS.PersistentClasses.pas',
   GLS.PipelineTransformation in '..\Source\GLS.PipelineTransformation.pas',
   GLS.PipelineTransformation in '..\Source\GLS.PipelineTransformation.pas',
   GLS.Polynomials in '..\Source\GLS.Polynomials.pas',
   GLS.Polynomials in '..\Source\GLS.Polynomials.pas',
-  GLS.CrossXML in '..\Source\GLS.CrossXML.pas',
+  Scena.CrossXML in '..\Source\Common\Scena.CrossXML.pas',
   GLS.Silhouette in '..\Source\GLS.Silhouette.pas',
   GLS.Silhouette in '..\Source\GLS.Silhouette.pas',
   GLS.PlugInManager in '..\Source\GLS.PlugInManager.pas',
   GLS.PlugInManager in '..\Source\GLS.PlugInManager.pas',
   GLS.VectorLists in '..\Source\GLS.VectorLists.pas',
   GLS.VectorLists in '..\Source\GLS.VectorLists.pas',

+ 8 - 8
Packages/GLScene_RT.dproj

@@ -178,7 +178,7 @@
         <DCCReference Include="..\Source\GLS.Canvas.pas"/>
         <DCCReference Include="..\Source\GLS.Canvas.pas"/>
         <DCCReference Include="..\Source\GLS.Collision.pas"/>
         <DCCReference Include="..\Source\GLS.Collision.pas"/>
         <DCCReference Include="..\Source\GLS.Color.pas"/>
         <DCCReference Include="..\Source\GLS.Color.pas"/>
-        <DCCReference Include="..\Source\GLS.CompositeImage.pas"/>
+        <DCCReference Include="..\Source\VCL\GLS.CompositeImage.pas"/>
         <DCCReference Include="..\Source\GLS.Console.pas"/>
         <DCCReference Include="..\Source\GLS.Console.pas"/>
         <DCCReference Include="..\Source\GLS.Context.pas"/>
         <DCCReference Include="..\Source\GLS.Context.pas"/>
         <DCCReference Include="..\Source\GLS.Coordinates.pas"/>
         <DCCReference Include="..\Source\GLS.Coordinates.pas"/>
@@ -192,13 +192,13 @@
         <DCCReference Include="..\Source\GLS.FBORenderer.pas"/>
         <DCCReference Include="..\Source\GLS.FBORenderer.pas"/>
         <DCCReference Include="..\Source\GLS.FPSMovement.pas"/>
         <DCCReference Include="..\Source\GLS.FPSMovement.pas"/>
         <DCCReference Include="..\Source\GLS.Feedback.pas"/>
         <DCCReference Include="..\Source\GLS.Feedback.pas"/>
-        <DCCReference Include="..\Source\GLS.File3DS.pas"/>
+        <DCCReference Include="..\Source\VCL\GLS.File3DS.pas"/>
         <DCCReference Include="..\Source\GLS.File3DSSceneObjects.pas"/>
         <DCCReference Include="..\Source\GLS.File3DSSceneObjects.pas"/>
         <DCCReference Include="..\Source\GLS.File3DPDF.pas"/>
         <DCCReference Include="..\Source\GLS.File3DPDF.pas"/>
         <DCCReference Include="..\Source\GLS.FileASE.pas"/>
         <DCCReference Include="..\Source\GLS.FileASE.pas"/>
         <DCCReference Include="..\Source\GLS.FileB3D.pas"/>
         <DCCReference Include="..\Source\GLS.FileB3D.pas"/>
         <DCCReference Include="..\Source\GLS.FileBMP.pas"/>
         <DCCReference Include="..\Source\GLS.FileBMP.pas"/>
-        <DCCReference Include="..\Source\GLS.FileDDS.pas"/>
+        <DCCReference Include="..\Source\VCL\GLS.FileDDS.pas"/>
         <DCCReference Include="..\Source\GLS.FileDXF.pas"/>
         <DCCReference Include="..\Source\GLS.FileDXF.pas"/>
         <DCCReference Include="..\Source\GLS.FileGL2.pas"/>
         <DCCReference Include="..\Source\GLS.FileGL2.pas"/>
         <DCCReference Include="..\Source\GLS.FileGLTF.pas"/>
         <DCCReference Include="..\Source\GLS.FileGLTF.pas"/>
@@ -240,7 +240,7 @@
         <DCCReference Include="..\Source\GLS.GameMenu.pas"/>
         <DCCReference Include="..\Source\GLS.GameMenu.pas"/>
         <DCCReference Include="..\Source\GLS.GeomObjects.pas"/>
         <DCCReference Include="..\Source\GLS.GeomObjects.pas"/>
         <DCCReference Include="..\Source\GLS.GeometryBB.pas"/>
         <DCCReference Include="..\Source\GLS.GeometryBB.pas"/>
-        <DCCReference Include="..\Source\GLS.Generics.pas"/>
+        <DCCReference Include="..\Source\Common\Scena.Generics.pas"/>
         <DCCReference Include="..\Source\GLS.Gizmo.pas"/>
         <DCCReference Include="..\Source\GLS.Gizmo.pas"/>
         <DCCReference Include="..\Source\GLS.GizmoEx.pas"/>
         <DCCReference Include="..\Source\GLS.GizmoEx.pas"/>
         <DCCReference Include="..\Source\GLS.Graph.pas"/>
         <DCCReference Include="..\Source\GLS.Graph.pas"/>
@@ -256,7 +256,7 @@
         <DCCReference Include="..\Source\GLS.Joystick.pas"/>
         <DCCReference Include="..\Source\GLS.Joystick.pas"/>
         <DCCReference Include="..\Source\GLS.LensFlare.pas"/>
         <DCCReference Include="..\Source\GLS.LensFlare.pas"/>
         <DCCReference Include="..\Source\GLS.LinePFX.pas"/>
         <DCCReference Include="..\Source\GLS.LinePFX.pas"/>
-        <DCCReference Include="..\Source\GLS.Logger.pas"/>
+        <DCCReference Include="..\Source\Common\Scena.Logger.pas"/>
         <DCCReference Include="..\Source\GLS.Manager.pas"/>
         <DCCReference Include="..\Source\GLS.Manager.pas"/>
         <DCCReference Include="..\Source\GLS.Material.pas"/>
         <DCCReference Include="..\Source\GLS.Material.pas"/>
         <DCCReference Include="..\Source\GLS.MaterialEx.pas"/>
         <DCCReference Include="..\Source\GLS.MaterialEx.pas"/>
@@ -308,7 +308,7 @@
         <DCCReference Include="..\Source\GLSL.ShapeShaders.pas"/>
         <DCCReference Include="..\Source\GLSL.ShapeShaders.pas"/>
         <DCCReference Include="..\Source\GLSL.ShaderParameter.pas"/>
         <DCCReference Include="..\Source\GLSL.ShaderParameter.pas"/>
         <DCCReference Include="..\Source\GLSL.Shader.pas"/>
         <DCCReference Include="..\Source\GLSL.Shader.pas"/>
-        <DCCReference Include="..\Source\GLS.Language.pas"/>
+        <DCCReference Include="..\Source\VCL\GLS.Language.pas"/>
         <DCCReference Include="..\Source\GLS.Memo.pas"/>
         <DCCReference Include="..\Source\GLS.Memo.pas"/>
         <DCCReference Include="..\Source\GLS.ProjectedTextures.pas"/>
         <DCCReference Include="..\Source\GLS.ProjectedTextures.pas"/>
         <DCCReference Include="..\Source\GLS.Scene.pas"/>
         <DCCReference Include="..\Source\GLS.Scene.pas"/>
@@ -341,7 +341,7 @@
         <DCCReference Include="..\Source\GLS.Trail.pas"/>
         <DCCReference Include="..\Source\GLS.Trail.pas"/>
         <DCCReference Include="..\Source\GLS.Tree.pas"/>
         <DCCReference Include="..\Source\GLS.Tree.pas"/>
         <DCCReference Include="..\Source\GLS.Triangulation.pas"/>
         <DCCReference Include="..\Source\GLS.Triangulation.pas"/>
-        <DCCReference Include="..\Source\GLS.Utils.pas"/>
+        <DCCReference Include="..\Source\VCL\GLS.Utils.pas"/>
         <DCCReference Include="..\Source\GLS.VectorFileObjects.pas"/>
         <DCCReference Include="..\Source\GLS.VectorFileObjects.pas"/>
         <DCCReference Include="..\Source\GLS.VerletTypes.pas"/>
         <DCCReference Include="..\Source\GLS.VerletTypes.pas"/>
         <DCCReference Include="..\Source\GLS.VerletClothify.pas"/>
         <DCCReference Include="..\Source\GLS.VerletClothify.pas"/>
@@ -354,7 +354,7 @@
         <DCCReference Include="..\Source\GLS.PersistentClasses.pas"/>
         <DCCReference Include="..\Source\GLS.PersistentClasses.pas"/>
         <DCCReference Include="..\Source\GLS.PipelineTransformation.pas"/>
         <DCCReference Include="..\Source\GLS.PipelineTransformation.pas"/>
         <DCCReference Include="..\Source\GLS.Polynomials.pas"/>
         <DCCReference Include="..\Source\GLS.Polynomials.pas"/>
-        <DCCReference Include="..\Source\GLS.CrossXML.pas"/>
+        <DCCReference Include="..\Source\Common\Scena.CrossXML.pas"/>
         <DCCReference Include="..\Source\GLS.Silhouette.pas"/>
         <DCCReference Include="..\Source\GLS.Silhouette.pas"/>
         <DCCReference Include="..\Source\GLS.PlugInManager.pas"/>
         <DCCReference Include="..\Source\GLS.PlugInManager.pas"/>
         <DCCReference Include="..\Source\GLS.VectorLists.pas"/>
         <DCCReference Include="..\Source\GLS.VectorLists.pas"/>

+ 2 - 1
Packagex/GLArena_RT.dpk

@@ -260,6 +260,7 @@ contains
   Scena.VectorTypesExt in '..\Source\Common\Scena.VectorTypesExt.pas',
   Scena.VectorTypesExt in '..\Source\Common\Scena.VectorTypesExt.pas',
   Scena.VectorGeometry in '..\Source\Common\Scena.VectorGeometry.pas',
   Scena.VectorGeometry in '..\Source\Common\Scena.VectorGeometry.pas',
   Scena.Spline in '..\Source\Common\Scena.Spline.pas',
   Scena.Spline in '..\Source\Common\Scena.Spline.pas',
-  Scena.TextureFormat in '..\Source\Common\Scena.TextureFormat.pas';
+  Scena.TextureFormat in '..\Source\Common\Scena.TextureFormat.pas',
+  Scena.Logger in '..\Source\Common\Scena.Logger.pas';
 
 
 end.
 end.

+ 3 - 2
Packagex/GLArena_RT.dproj

@@ -381,6 +381,7 @@
         <DCCReference Include="..\Source\Common\Scena.VectorGeometry.pas"/>
         <DCCReference Include="..\Source\Common\Scena.VectorGeometry.pas"/>
         <DCCReference Include="..\Source\Common\Scena.Spline.pas"/>
         <DCCReference Include="..\Source\Common\Scena.Spline.pas"/>
         <DCCReference Include="..\Source\Common\Scena.TextureFormat.pas"/>
         <DCCReference Include="..\Source\Common\Scena.TextureFormat.pas"/>
+        <DCCReference Include="..\Source\Common\Scena.Logger.pas"/>
         <BuildConfiguration Include="Base">
         <BuildConfiguration Include="Base">
             <Key>Base</Key>
             <Key>Base</Key>
         </BuildConfiguration>
         </BuildConfiguration>
@@ -419,12 +420,12 @@
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>
                 </DeployFile>
                 </DeployFile>
-                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libPCRE.dylib" Class="DependencyModule">
+                <DeployFile LocalName="$(BDS)\Redist\iossimulator\libpcre.dylib" Class="DependencyModule">
                     <Platform Name="iOSSimulator">
                     <Platform Name="iOSSimulator">
                         <Overwrite>true</Overwrite>
                         <Overwrite>true</Overwrite>
                     </Platform>
                     </Platform>

+ 2 - 2
Source/CUDA.APIComps.pas

@@ -56,7 +56,7 @@ type
   TCUDAComponent = class(TCUDAHandlesMaster)
   TCUDAComponent = class(TCUDAHandlesMaster)
   private
   private
     FMaster: TCUDAComponent;
     FMaster: TCUDAComponent;
-    FItems: TGLPersistentObjectList;
+    FItems: TPersistentObjectList;
     procedure SetMaster(AMaster: TCUDAComponent);
     procedure SetMaster(AMaster: TCUDAComponent);
     function GetItem(const i: Integer): TCUDAComponent;
     function GetItem(const i: Integer): TCUDAComponent;
     function GetItemsCount: Integer;
     function GetItemsCount: Integer;
@@ -1062,7 +1062,7 @@ end;
 procedure TCUDAComponent.AddItem(AItem: TCUDAComponent);
 procedure TCUDAComponent.AddItem(AItem: TCUDAComponent);
 begin
 begin
   if not Assigned(FItems) then
   if not Assigned(FItems) then
-    FItems := TGLPersistentObjectList.Create;
+    FItems := TPersistentObjectList.Create;
   FItems.Add(AItem);
   FItems.Add(AItem);
 end;
 end;
 
 

+ 1 - 1
Source/CUDA.Context.pas

@@ -13,7 +13,7 @@ uses
   Scena.Strings,
   Scena.Strings,
   GLS.BaseClasses,
   GLS.BaseClasses,
   GLS.Context,
   GLS.Context,
-  GLS.Generics,
+  Scena.Generics,
 
 
   CUDA.Import,
   CUDA.Import,
   CUDA.RunTime;
   CUDA.RunTime;

+ 1 - 1
Source/CUDA.FFTPlan.pas

@@ -19,7 +19,7 @@ uses
   CUDA.FourierTransform,
   CUDA.FourierTransform,
 
 
   Scena.Strings,
   Scena.Strings,
-  GLS.Logger;
+  Scena.Logger;
 
 
 type
 type
 
 

+ 131 - 0
Source/Common/Scena.CrossXML.pas

@@ -0,0 +1,131 @@
+//
+// The graphics platform GLScene https://github.com/glscene
+//
+
+unit Scena.CrossXML;
+
+(* Cross XML routines *)
+
+interface
+
+uses
+  System.Classes,
+  System.SysUtils,
+  System.Variants,
+  Xml.XMLIntf,
+  Xml.XMLDoc,
+  Xml.XMLDom;
+
+type
+  ScenaXMLDocument = IXMLDocument;
+  ScenaXMLNode = IXMLNode;
+  ScenaDOMNode = IDOMNode;
+
+function ScenaNewXMLDocument: ScenaXMLDocument;
+procedure ReleaseXMLDocument(var ADoc: ScenaXMLDocument);
+procedure WriteXMLFile(var ADoc: ScenaXMLDocument; AStream: TStream); overload;
+procedure ReadXMLFile(var ADoc: ScenaXMLDocument; AStream: TStream); overload;
+procedure WriteXMLFile(var ADoc: ScenaXMLDocument; AFileName: string); overload;
+procedure ReadXMLFile(var ADoc: ScenaXMLDocument; AFileName: string); overload;
+function GetXMLAttribute(const XMLNode: ScenaXMLNode; const AttrName: string; out Value: string): Boolean; overload;
+function GetXMLAttribute(const XMLNode: ScenaXMLNode; Idx: Integer): ScenaXMLNode; overload;
+procedure SetXMLAttribute(const XMLNode: ScenaXMLNode; const AttrName: string; const Value: string); overload;
+procedure SetXMLAttribute(const DOMNode: ScenaDOMNode; const AttrName: string; const Value: string); overload;
+function GetXMLAttributeCount(const XMLNode: ScenaXMLNode): Integer;
+function FindXMLNode(const ParentNode: ScenaXMLNode; const NodeName: string; out ChildNode: ScenaXMLNode): Boolean;
+function CreateDOMNode(const ParentNode: ScenaDOMNode; const NodeName: string): ScenaDOMNode;
+procedure SetXMLText(const DOMNode: ScenaDOMNode; const AText: string);
+function GetXMLText(const XMLNode: ScenaXMLNode; out AText: string): Boolean;
+
+//---------------------------------------------------------------------
+implementation
+//---------------------------------------------------------------------
+
+function ScenaNewXMLDocument: ScenaXMLDocument;
+begin
+  Result := NewXMLDocument();
+end;
+
+procedure ReleaseXMLDocument(var ADoc: ScenaXMLDocument);
+begin
+  ADoc := nil;
+end;
+
+procedure WriteXMLFile(var ADoc: ScenaXMLDocument; AStream: TStream);
+begin
+  ADoc.SaveToStream(AStream);
+end;
+
+procedure ReadXMLFile(var ADoc: ScenaXMLDocument; AStream: TStream);
+begin
+  ADoc.LoadFromStream(AStream);
+end;
+
+procedure WriteXMLFile(var ADoc: ScenaXMLDocument; AFileName: string); overload;
+begin
+  ADoc.SaveToFile(AFileName);
+end;
+
+procedure ReadXMLFile(var ADoc: ScenaXMLDocument; AFileName: string); overload;
+begin
+  ADoc.LoadFromFile(AFileName);
+end;
+
+function GetXMLAttribute(const XMLNode: ScenaXMLNode; const AttrName: string; out Value: string): Boolean;
+var
+  attr: OleVariant;
+begin
+  attr := 0;
+  attr := XMLNode.Attributes[AttrName];
+  Result := not VarIsNull(attr);
+  if Result then
+    Value := attr;
+end;
+
+procedure SetXMLAttribute(const XMLNode: ScenaXMLNode; const AttrName: string; const Value: string);
+begin
+  XMLNode.Attributes[AttrName] := Value;
+end;
+
+procedure SetXMLAttribute(const DOMNode: ScenaDOMNode; const AttrName: string; const Value: string);
+var
+  E: IDOMElement;
+begin
+  E := DOMNode as IDOMElement;
+  E.SetAttribute(AttrName, Value);
+end;
+
+function FindXMLNode(const ParentNode: ScenaXMLNode; const NodeName: string; out ChildNode: ScenaXMLNode): Boolean;
+begin
+  ChildNode := ParentNode.ChildNodes.FindNode(NodeName);
+  Result := Assigned(ChildNode);
+end;
+
+function CreateDOMNode(const ParentNode: ScenaDOMNode; const NodeName: string): ScenaDOMNode;
+begin
+  Result := ParentNode.OwnerDocument.CreateElement(NodeName);
+  ParentNode.AppendChild(Result);
+end;
+
+procedure SetXMLText(const DOMNode: ScenaDOMNode; const AText: string);
+begin
+  DOMNode.AppendChild(DOMNode.ownerDocument.createTextNode(AText));
+end;
+
+function GetXMLText(const XMLNode: ScenaXMLNode; out AText: string): Boolean;
+begin
+  AText := XMLNode.Text;
+  Result := Length(AText)>0;
+end;
+
+function GetXMLAttributeCount(const XMLNode: ScenaXMLNode): Integer;
+begin
+  Result := XMLNode.AttributeNodes.Count;
+end;
+
+function GetXMLAttribute(const XMLNode: ScenaXMLNode; Idx: Integer): ScenaXMLNode;
+begin
+  Result := XMLNode.AttributeNodes[Idx];
+end;
+
+end.

+ 2 - 2
Source/GLS.Generics.pas → Source/Common/Scena.Generics.pas

@@ -1,7 +1,7 @@
 //
 //
 // The graphics platform GLScene https://github.com/glscene
 // The graphics platform GLScene https://github.com/glscene
 //
 //
-unit GLS.Generics;
+unit Scena.Generics;
 
 
 (* Cross IDE generic classes collection. *)
 (* Cross IDE generic classes collection. *)
 
 
@@ -12,7 +12,7 @@ interface
 uses
 uses
   System.SysUtils,
   System.SysUtils,
   System.Classes,
   System.Classes,
-  SyncObjs;
+  System.SyncObjs;
 
 
 const
 const
   MaxListSize = Maxint div 16;
   MaxListSize = Maxint div 16;

+ 2 - 2
Source/GLS.Logger.pas → Source/Common/Scena.Logger.pas

@@ -1,10 +1,10 @@
 //
 //
 // The graphics platform GLScene https://github.com/glscene
 // The graphics platform GLScene https://github.com/glscene
 //
 //
-unit GLS.Logger;
+unit Scena.Logger;
 
 
 (*
 (*
-  Activate USE_LOGGING in "GLScene.inc" to turn on inner GLScene logger.
+  Activate USE_LOGGING in "Scena.inc" to turn on inner Scene logger.
   You may have only one instance of TGLSLogger
   You may have only one instance of TGLSLogger
   To obtain it, call UserLog() function from any unit.
   To obtain it, call UserLog() function from any unit.
 *)
 *)

+ 0 - 130
Source/FMX/GLX.CrossXML.pas

@@ -1,130 +0,0 @@
-//
-// The unit for GLXcene Engine
-//
-{
-          
-}
-
-unit GLX.CrossXML;
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-  Variants,
-  XMLIntf,
-  XMLDoc,
-  XMLDom;
-
-type
-  GLSXMLDocument = IXMLDocument;
-  GLSXMLNode = IXMLNode;
-  GLSDOMNode = IDOMNode;
-
-function GLSNewXMLDocument: GLSXMLDocument;
-procedure ReleaseXMLDocument(var ADoc: GLSXMLDocument);
-procedure WriteXMLFile(var ADoc: GLSXMLDocument; AStream: TStream); overload;
-procedure ReadXMLFile(var ADoc: GLSXMLDocument; AStream: TStream); overload;
-procedure WriteXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
-procedure ReadXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
-function GetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; out Value: string): Boolean; overload;
-function GetXMLAttribute(const XMLNode: GLSXMLNode; Idx: Integer): GLSXMLNode; overload;
-procedure SetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; const Value: string); overload;
-procedure SetXMLAttribute(const DOMNode: GLSDOMNode; const AttrName: string; const Value: string); overload;
-function GetXMLAttributeCount(const XMLNode: GLSXMLNode): Integer;
-function FindXMLNode(const ParentNode: GLSXMLNode; const NodeName: string; out ChildNode: GLSXMLNode): Boolean;
-function CreateDOMNode(const ParentNode: GLSDOMNode; const NodeName: string): GLSDOMNode;
-procedure SetXMLText(const DOMNode: GLSDOMNode; const AText: string);
-function GetXMLText(const XMLNode: GLSXMLNode; out AText: string): Boolean;
-
-implementation
-
-function GLSNewXMLDocument: GLSXMLDocument;
-begin
-  Result := NewXMLDocument();
-end;
-
-procedure ReleaseXMLDocument(var ADoc: GLSXMLDocument);
-begin
-  ADoc := nil;
-end;
-
-procedure WriteXMLFile(var ADoc: GLSXMLDocument; AStream: TStream);
-begin
-  ADoc.SaveToStream(AStream);
-end;
-
-procedure ReadXMLFile(var ADoc: GLSXMLDocument; AStream: TStream);
-begin
-  ADoc.LoadFromStream(AStream);
-end;
-
-procedure WriteXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
-begin
-  ADoc.SaveToFile(AFileName);
-end;
-
-procedure ReadXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
-begin
-  ADoc.LoadFromFile(AFileName);
-end;
-
-function GetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; out Value: string): Boolean;
-var
-  attr: OleVariant;
-begin
-  attr := 0;
-  attr := XMLNode.Attributes[AttrName];
-  Result := not VarIsNull(attr);
-  if Result then
-    Value := attr;
-end;
-
-procedure SetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; const Value: string);
-begin
-  XMLNode.Attributes[AttrName] := Value;
-end;
-
-procedure SetXMLAttribute(const DOMNode: GLSDOMNode; const AttrName: string; const Value: string);
-var
-  E: IDOMElement;
-begin
-  E := DOMNode as IDOMElement;
-  E.SetAttribute(AttrName, Value);
-end;
-
-function FindXMLNode(const ParentNode: GLSXMLNode; const NodeName: string; out ChildNode: GLSXMLNode): Boolean;
-begin
-  ChildNode := ParentNode.ChildNodes.FindNode(NodeName);
-  Result := Assigned(ChildNode);
-end;
-
-function CreateDOMNode(const ParentNode: GLSDOMNode; const NodeName: string): GLSDOMNode;
-begin
-  Result := ParentNode.OwnerDocument.CreateElement(NodeName);
-  ParentNode.AppendChild(Result);
-end;
-
-procedure SetXMLText(const DOMNode: GLSDOMNode; const AText: string);
-begin
-  DOMNode.AppendChild(DOMNode.ownerDocument.createTextNode(AText));
-end;
-
-function GetXMLText(const XMLNode: GLSXMLNode; out AText: string): Boolean;
-begin
-  AText := XMLNode.Text;
-  Result := Length(AText)>0;
-end;
-
-function GetXMLAttributeCount(const XMLNode: GLSXMLNode): Integer;
-begin
-  Result := XMLNode.AttributeNodes.Count;
-end;
-
-function GetXMLAttribute(const XMLNode: GLSXMLNode; Idx: Integer): GLSXMLNode;
-begin
-  Result := XMLNode.AttributeNodes[Idx];
-end;
-
-end.

+ 52 - 52
Source/FMX/GLX.File3DS.pas

@@ -61,8 +61,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); virtual;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); virtual;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); virtual; abstract;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); virtual; abstract;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TgxFile3DSScaleAnimationKeys = class(TgxFile3DSAnimationKeys)
   TgxFile3DSScaleAnimationKeys = class(TgxFile3DSAnimationKeys)
@@ -72,8 +72,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TgxFile3DSRotationAnimationKeys = class(TgxFile3DSAnimationKeys)
   TgxFile3DSRotationAnimationKeys = class(TgxFile3DSAnimationKeys)
@@ -83,8 +83,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TgxFile3DSPositionAnimationKeys = class(TgxFile3DSAnimationKeys)
   TgxFile3DSPositionAnimationKeys = class(TgxFile3DSAnimationKeys)
@@ -94,8 +94,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TgxFile3DSColorAnimationKeys = class(TgxFile3DSAnimationKeys)
   TgxFile3DSColorAnimationKeys = class(TgxFile3DSAnimationKeys)
@@ -105,8 +105,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TTgxFile3DSPositionAnimationKeys = class(TgxFile3DSAnimationKeys)
   TTgxFile3DSPositionAnimationKeys = class(TgxFile3DSAnimationKeys)
@@ -116,8 +116,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TgxFile3DSSpotLightCutOffAnimationKeys = class(TgxFile3DSAnimationKeys)
   TgxFile3DSSpotLightCutOffAnimationKeys = class(TgxFile3DSAnimationKeys)
@@ -127,8 +127,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TgxFile3DSLightHotSpotAnimationKeys = class(TgxFile3DSAnimationKeys)
   TgxFile3DSLightHotSpotAnimationKeys = class(TgxFile3DSAnimationKeys)
@@ -138,8 +138,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TgxFile3DSRollAnimationKeys = class(TgxFile3DSAnimationKeys)
   TgxFile3DSRollAnimationKeys = class(TgxFile3DSAnimationKeys)
@@ -149,8 +149,8 @@ type
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure LoadData(const ANumKeys: integer; const Keys: PKeyHeaderList; const AData: Pointer); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Apply(var DataTransf: TgxFile3DSAnimationData; const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
   end;
   end;
 
 
   TgxFile3DSAnimationKeyList = class(TgxPersistentObject)
   TgxFile3DSAnimationKeyList = class(TgxPersistentObject)
@@ -163,8 +163,8 @@ type
     procedure ClearKeys;
     procedure ClearKeys;
 
 
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     destructor Destroy; override;
     destructor Destroy; override;
   end;
   end;
 
 
@@ -188,8 +188,8 @@ type
     procedure GetExtents(out min, max: TAffineVector); override;
     procedure GetExtents(out min, max: TAffineVector); override;
     function ExtractTriangles(texCoords: TgxAffineVectorList = nil; normals: TgxAffineVectorList = nil): TgxAffineVectorList;
     function ExtractTriangles(texCoords: TgxAffineVectorList = nil; normals: TgxAffineVectorList = nil): TgxAffineVectorList;
       override;
       override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
@@ -217,8 +217,8 @@ type
     procedure LoadAnimation(const AData: Pointer); override;
     procedure LoadAnimation(const AData: Pointer); override;
     procedure SetFrame(const AFrame: real); override;
     procedure SetFrame(const AFrame: real); override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     destructor Destroy; override;
     destructor Destroy; override;
   end;
   end;
 
 
@@ -241,8 +241,8 @@ type
     procedure LoadData(Owner: TgxBaseMesh; AData: PCamera3DS);
     procedure LoadData(Owner: TgxBaseMesh; AData: PCamera3DS);
     procedure LoadAnimation(const AData: Pointer); override;
     procedure LoadAnimation(const AData: Pointer); override;
     procedure SetFrame(const AFrame: real); override;
     procedure SetFrame(const AFrame: real); override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     destructor Destroy; override;
     destructor Destroy; override;
   end;
   end;
 
 
@@ -508,14 +508,14 @@ begin
     inherited Assign(Source);
     inherited Assign(Source);
 end;
 end;
 
 
-procedure TgxFile3DSAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   Writer.WriteInteger(FNumKeys);
   Writer.WriteInteger(FNumKeys);
   if FNumKeys > 0 then
   if FNumKeys > 0 then
     Writer.Write(FKeys[0], FNumKeys * SizeOf(TKeyHeader3DS));
     Writer.Write(FKeys[0], FNumKeys * SizeOf(TKeyHeader3DS));
 end;
 end;
 
 
-procedure TgxFile3DSAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   FNumKeys := Reader.ReadInteger;
   FNumKeys := Reader.ReadInteger;
   SetLength(FKeys, FNumKeys);
   SetLength(FKeys, FNumKeys);
@@ -574,7 +574,7 @@ begin
     FScale[I] := (Source as TgxFile3DSScaleAnimationKeys).Fscale[I];
     FScale[I] := (Source as TgxFile3DSScaleAnimationKeys).Fscale[I];
 end;
 end;
 
 
-procedure TgxFile3DSScaleAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSScaleAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -582,7 +582,7 @@ begin
     Writer.Write(FScale[0], FNumKeys * SizeOf(TPoint3DS));
     Writer.Write(FScale[0], FNumKeys * SizeOf(TPoint3DS));
 end;
 end;
 
 
-procedure TgxFile3DSScaleAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSScaleAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -650,14 +650,14 @@ begin
     FRot[I] := (Source as TgxFile3DSRotationAnimationKeys).FRot[I];
     FRot[I] := (Source as TgxFile3DSRotationAnimationKeys).FRot[I];
 end;
 end;
 
 
-procedure TgxFile3DSRotationAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSRotationAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if FNumKeys > 0 then
   if FNumKeys > 0 then
     Writer.Write(FRot[0], FNumKeys * SizeOf(TKFRotKey3DS));
     Writer.Write(FRot[0], FNumKeys * SizeOf(TKFRotKey3DS));
 end;
 end;
 
 
-procedure TgxFile3DSRotationAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSRotationAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
   SetLength(FRot, FNumKeys);
   SetLength(FRot, FNumKeys);
@@ -700,14 +700,14 @@ begin
     FPos[I] := (Source as TgxFile3DSPositionAnimationKeys).FPos[I];
     FPos[I] := (Source as TgxFile3DSPositionAnimationKeys).FPos[I];
 end;
 end;
 
 
-procedure TgxFile3DSPositionAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSPositionAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if FNumKeys > 0 then
   if FNumKeys > 0 then
     Writer.Write(FPos[0], FNumKeys * SizeOf(TPoint3DS));
     Writer.Write(FPos[0], FNumKeys * SizeOf(TPoint3DS));
 end;
 end;
 
 
-procedure TgxFile3DSPositionAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSPositionAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -745,14 +745,14 @@ begin
     FCol[I] := (Source as TgxFile3DSColorAnimationKeys).FCol[I];
     FCol[I] := (Source as TgxFile3DSColorAnimationKeys).FCol[I];
 end;
 end;
 
 
-procedure TgxFile3DSColorAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSColorAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if FNumKeys > 0 then
   if FNumKeys > 0 then
     Writer.Write(FCol[0], FNumKeys * SizeOf(TFColor3DS));
     Writer.Write(FCol[0], FNumKeys * SizeOf(TFColor3DS));
 end;
 end;
 
 
-procedure TgxFile3DSColorAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSColorAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -796,14 +796,14 @@ begin
     FTPos[I] := (Source as TTgxFile3DSPositionAnimationKeys).FTPos[I];
     FTPos[I] := (Source as TTgxFile3DSPositionAnimationKeys).FTPos[I];
 end;
 end;
 
 
-procedure TTgxFile3DSPositionAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TTgxFile3DSPositionAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if FNumKeys > 0 then
   if FNumKeys > 0 then
     Writer.Write(FTPos[0], FNumKeys * SizeOf(TPoint3DS));
     Writer.Write(FTPos[0], FNumKeys * SizeOf(TPoint3DS));
 end;
 end;
 
 
-procedure TTgxFile3DSPositionAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TTgxFile3DSPositionAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -841,14 +841,14 @@ begin
     FFall[I] := (Source as TgxFile3DSSpotLightCutOffAnimationKeys).FFall[I];
     FFall[I] := (Source as TgxFile3DSSpotLightCutOffAnimationKeys).FFall[I];
 end;
 end;
 
 
-procedure TgxFile3DSSpotLightCutOffAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSSpotLightCutOffAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if FNumKeys > 0 then
   if FNumKeys > 0 then
     Writer.Write(FFall[0], FNumKeys * SizeOf(single));
     Writer.Write(FFall[0], FNumKeys * SizeOf(single));
 end;
 end;
 
 
-procedure TgxFile3DSSpotLightCutOffAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSSpotLightCutOffAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -885,14 +885,14 @@ begin
     FHot[I] := (Source as TgxFile3DSLightHotSpotAnimationKeys).FHot[I];
     FHot[I] := (Source as TgxFile3DSLightHotSpotAnimationKeys).FHot[I];
 end;
 end;
 
 
-procedure TgxFile3DSLightHotSpotAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSLightHotSpotAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if FNumKeys > 0 then
   if FNumKeys > 0 then
     Writer.Write(FHot[0], FNumKeys * SizeOf(single));
     Writer.Write(FHot[0], FNumKeys * SizeOf(single));
 end;
 end;
 
 
-procedure TgxFile3DSLightHotSpotAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSLightHotSpotAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
   SetLength(FHot, FNumKeys);
   SetLength(FHot, FNumKeys);
@@ -928,14 +928,14 @@ begin
     FRoll[I] := (Source as TgxFile3DSRollAnimationKeys).FRoll[I];
     FRoll[I] := (Source as TgxFile3DSRollAnimationKeys).FRoll[I];
 end;
 end;
 
 
-procedure TgxFile3DSRollAnimationKeys.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSRollAnimationKeys.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if FNumKeys > 0 then
   if FNumKeys > 0 then
     Writer.Write(FRoll[0], FNumKeys * SizeOf(single));
     Writer.Write(FRoll[0], FNumKeys * SizeOf(single));
 end;
 end;
 
 
-procedure TgxFile3DSRollAnimationKeys.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSRollAnimationKeys.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
   SetLength(FRoll, FNumKeys);
   SetLength(FRoll, FNumKeys);
@@ -992,7 +992,7 @@ begin
     inherited Assign(Source);
     inherited Assign(Source);
 end;
 end;
 
 
-procedure TgxFile3DSAnimationKeyList.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSAnimationKeyList.WriteToFiler(Writer: TVirtualWriter);
 var
 var
   I: integer;
   I: integer;
   Val: TgxFile3DSAnimKeysClassType;
   Val: TgxFile3DSAnimKeysClassType;
@@ -1006,7 +1006,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxFile3DSAnimationKeyList.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSAnimationKeyList.ReadFromFiler(Reader: TVirtualReader);
 var
 var
   I, cnt: integer;
   I, cnt: integer;
   Val: TgxFile3DSAnimKeysClassType;
   Val: TgxFile3DSAnimKeysClassType;
@@ -1121,7 +1121,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxFile3DSDummyObject.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSDummyObject.WriteToFiler(Writer: TVirtualWriter);
 var
 var
   str: string;
   str: string;
 begin
 begin
@@ -1136,7 +1136,7 @@ begin
   FAnimList.WriteToFiler(Writer);
   FAnimList.WriteToFiler(Writer);
 end;
 end;
 
 
-procedure TgxFile3DSDummyObject.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSDummyObject.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -1305,7 +1305,7 @@ begin
     FlightSrc.Assign((Source as TgxFile3DSOmniLightObject).FLightSrc);
     FlightSrc.Assign((Source as TgxFile3DSOmniLightObject).FLightSrc);
 end;
 end;
 
 
-procedure TgxFile3DSOmniLightObject.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSOmniLightObject.WriteToFiler(Writer: TVirtualWriter);
 var
 var
   str: string;
   str: string;
 begin
 begin
@@ -1318,7 +1318,7 @@ begin
   Writer.WriteString(str);
   Writer.WriteString(str);
 end;
 end;
 
 
-procedure TgxFile3DSOmniLightObject.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSOmniLightObject.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -1457,7 +1457,7 @@ begin
   FTargetObj.Position.SetPoint(FAnimTransf.TargetPos);
   FTargetObj.Position.SetPoint(FAnimTransf.TargetPos);
 end;
 end;
 
 
-procedure TgxFile3DSCameraObject.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxFile3DSCameraObject.WriteToFiler(Writer: TVirtualWriter);
 var
 var
   str: string;
   str: string;
 begin
 begin
@@ -1470,7 +1470,7 @@ begin
   Writer.WriteString(str);
   Writer.WriteString(str);
 end;
 end;
 
 
-procedure TgxFile3DSCameraObject.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxFile3DSCameraObject.ReadFromFiler(Reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 

+ 4 - 4
Source/FMX/GLX.FileOBJ.pas

@@ -163,8 +163,8 @@ type
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
     constructor CreateOwned(aOwner: TgxFaceGroups); override;
     constructor CreateOwned(aOwner: TgxFaceGroups); override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Add(VertexIdx, NormalIdx, TexCoordIdx: Integer);
     procedure Add(VertexIdx, NormalIdx, TexCoordIdx: Integer);
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure AddToTriangles(aList: TgxAffineVectorList; aTexCoords: TgxAffineVectorList = nil;
     procedure AddToTriangles(aList: TgxAffineVectorList; aTexCoords: TgxAffineVectorList = nil;
@@ -1361,7 +1361,7 @@ begin
     inherited;
     inherited;
 end;
 end;
 
 
-procedure TOBJFGVertexNormalTexIndexList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TOBJFGVertexNormalTexIndexList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -1384,7 +1384,7 @@ begin
     RaiseFilerException(archiveVersion);
     RaiseFilerException(archiveVersion);
 end;
 end;
 
 
-procedure TOBJFGVertexNormalTexIndexList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TOBJFGVertexNormalTexIndexList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do

+ 4 - 4
Source/FMX/GLX.LinePFX.pas

@@ -33,8 +33,8 @@ type
          FLength : Single;
          FLength : Single;
       protected
       protected
       public
       public
-         procedure WriteToFiler(writer : TgxVirtualWriter); override;
-         procedure ReadFromFiler(reader : TgxVirtualReader); override;
+         procedure WriteToFiler(writer : TVirtualWriter); override;
+         procedure ReadFromFiler(reader : TVirtualReader); override;
          { Direction of the line. }
          { Direction of the line. }
          property Direction : TAffineVector read FDirection write FDirection;
          property Direction : TAffineVector read FDirection write FDirection;
          { Length of the line }
          { Length of the line }
@@ -187,7 +187,7 @@ end;
 // ------------------ TgxLineParticle ------------------
 // ------------------ TgxLineParticle ------------------
 // ------------------
 // ------------------
 
 
-procedure TgxLineParticle.WriteToFiler(writer : TgxVirtualWriter);
+procedure TgxLineParticle.WriteToFiler(writer : TVirtualWriter);
 begin
 begin
    inherited WriteToFiler(writer);
    inherited WriteToFiler(writer);
    with writer do begin
    with writer do begin
@@ -197,7 +197,7 @@ begin
    end;
    end;
 end;
 end;
 
 
-procedure TgxLineParticle.ReadFromFiler(reader : TgxVirtualReader);
+procedure TgxLineParticle.ReadFromFiler(reader : TVirtualReader);
 var
 var
    archiveVersion : integer;
    archiveVersion : integer;
 begin
 begin

+ 4 - 4
Source/FMX/GLX.Material.pas

@@ -572,8 +572,8 @@ type
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
     destructor Destroy; override;
     destructor Destroy; override;
     procedure DestroyHandles;
     procedure DestroyHandles;
-    procedure WriteToFiler(writer: TgxVirtualWriter);
-    procedure ReadFromFiler(reader: TgxVirtualReader);
+    procedure WriteToFiler(writer: TVirtualWriter);
+    procedure ReadFromFiler(reader: TVirtualReader);
     procedure SaveToStream(aStream: TStream); virtual;
     procedure SaveToStream(aStream: TStream); virtual;
     procedure LoadFromStream(aStream: TStream); virtual;
     procedure LoadFromStream(aStream: TStream); virtual;
     procedure AddMaterialsFromStream(aStream: TStream);
     procedure AddMaterialsFromStream(aStream: TStream);
@@ -2320,7 +2320,7 @@ begin
   Result := (FMaterials.Count > 0);
   Result := (FMaterials.Count > 0);
 end;
 end;
 
 
-procedure TgxMaterialLibrary.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxMaterialLibrary.WriteToFiler(writer: TVirtualWriter);
 var
 var
   i, j: Integer;
   i, j: Integer;
   libMat: TgxLibMaterial;
   libMat: TgxLibMaterial;
@@ -2488,7 +2488,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxMaterialLibrary.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxMaterialLibrary.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
   libMat: TgxLibMaterial;
   libMat: TgxLibMaterial;

+ 8 - 8
Source/FMX/GLX.ParametricSurfaces.pas

@@ -75,8 +75,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure Prepare; override;
     procedure Prepare; override;
     procedure Clear; override;
     procedure Clear; override;
@@ -141,8 +141,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure Prepare; override;
     procedure Prepare; override;
     property CountU: Integer read FCountU write FCountU;
     property CountU: Integer read FCountU write FCountU;
@@ -187,7 +187,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TMOParametricSurface.WriteToFiler(writer: TgxVirtualWriter);
+procedure TMOParametricSurface.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -209,7 +209,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TMOParametricSurface.ReadFromFiler(reader: TgxVirtualReader);
+procedure TMOParametricSurface.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -436,7 +436,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TFGBezierSurface.WriteToFiler(writer: TgxVirtualWriter);
+procedure TFGBezierSurface.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -454,7 +454,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TFGBezierSurface.ReadFromFiler(reader: TgxVirtualReader);
+procedure TFGBezierSurface.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 8 - 8
Source/FMX/GLX.ParticleFX.pas

@@ -72,8 +72,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Manager: TgxParticleFXManager read FManager write FManager;
     property Manager: TgxParticleFXManager read FManager write FManager;
     (* Particle's ID, given at birth.
     (* Particle's ID, given at birth.
        ID is a value unique per manager. *)
        ID is a value unique per manager. *)
@@ -118,8 +118,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Refers owner manager
     // Refers owner manager
     property Owner: TgxParticleFXManager read FOwner write FOwner;
     property Owner: TgxParticleFXManager read FOwner write FOwner;
     property Items[index: Integer]: TgxParticle read GetItems write SetItems; default;
     property Items[index: Integer]: TgxParticle read GetItems write SetItems; default;
@@ -812,7 +812,7 @@ begin
     FVelocity.V[Index] := aValue;
     FVelocity.V[Index] := aValue;
 end;
 end;
 
 
-procedure TgxParticle.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxParticle.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -826,7 +826,7 @@ begin
 end;
 end;
 
 
 
 
-procedure TgxParticle.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxParticle.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: integer;
   archiveVersion: integer;
 begin
 begin
@@ -862,7 +862,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TgxParticleList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxParticleList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -872,7 +872,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxParticleList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxParticleList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: integer;
   archiveVersion: integer;
 begin
 begin

+ 37 - 38
Source/FMX/GLX.PersistentClasses.pas

@@ -6,8 +6,8 @@ unit GLX.PersistentClasses;
 (*
 (*
    Base persistence classes.
    Base persistence classes.
 
 
-   These classes are used in GLXcene, but are designed for generic purpose.
-   They implement a slightly different persistence mechanism than that of the VCL/FMX,
+   These classes are used in GLArena, but are designed for generic purpose.
+   They implement a slightly different persistence mechanism than that of the FMX,
    allowing for object-level versioning (100% backward compatibility) and full
    allowing for object-level versioning (100% backward compatibility) and full
    polymorphic persistence.
    polymorphic persistence.
 
 
@@ -28,7 +28,7 @@ type
   PObject = ^TObject;
   PObject = ^TObject;
 
 
   // Virtual layer similar to VCL's TReader (but reusable) }
   // Virtual layer similar to VCL's TReader (but reusable) }
-  TgxVirtualReader = class
+  TVirtualReader = class
   private
   private
     FStream: TStream;
     FStream: TStream;
   public
   public
@@ -48,7 +48,7 @@ type
   end;
   end;
 
 
   // Virtual layer similar to VCL's TWriter (but reusable)
   // Virtual layer similar to VCL's TWriter (but reusable)
-  TgxVirtualWriter = class
+  TVirtualWriter = class
   private
   private
     FStream: TStream;
     FStream: TStream;
   public
   public
@@ -64,17 +64,16 @@ type
     procedure WriteTStrings(const aStrings: TStrings; storeObjects: Boolean = True);
     procedure WriteTStrings(const aStrings: TStrings; storeObjects: Boolean = True);
   end;
   end;
 
 
-  TVirtualReaderClass = class of TgxVirtualReader;
-  TVirtualWriterClass = class of TgxVirtualWriter;
+  TVirtualReaderClass = class of TVirtualReader;
+  TVirtualWriterClass = class of TVirtualWriter;
 
 
   (* Interface for persistent objects.
   (* Interface for persistent objects.
      This interface does not really allow polymorphic persistence,
      This interface does not really allow polymorphic persistence,
-     but is rather intended as a way to unify persistence calls
-     for iterators. *)
+     but is rather intended as a way to unify persistence calls for iterators. *)
   IgxPersistentObject = interface(IInterface)
   IgxPersistentObject = interface(IInterface)
   ['{A9A0198A-F11B-4325-A92C-2F24DB41652B}']
   ['{A9A0198A-F11B-4325-A92C-2F24DB41652B}']
-    procedure WriteToFiler(writer: TgxVirtualWriter);
-    procedure ReadFromFiler(reader: TgxVirtualReader);
+    procedure WriteToFiler(writer: TVirtualWriter);
+    procedure ReadFromFiler(reader: TVirtualReader);
   end;
   end;
 
 
     (* Base class for persistent objects.
     (* Base class for persistent objects.
@@ -93,15 +92,15 @@ type
     function _Release: Integer; stdcall;
     function _Release: Integer; stdcall;
   public
   public
     constructor Create; virtual;
     constructor Create; virtual;
-    constructor CreateFromFiler(reader: TgxVirtualReader);
+    constructor CreateFromFiler(reader: TVirtualReader);
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Assign(source: TPersistent); override;
     procedure Assign(source: TPersistent); override;
     function CreateClone: TgxPersistentObject; virtual;
     function CreateClone: TgxPersistentObject; virtual;
     class function FileSignature: string; virtual;
     class function FileSignature: string; virtual;
     class function FileVirtualWriter: TVirtualWriterClass; virtual;
     class function FileVirtualWriter: TVirtualWriterClass; virtual;
     class function FileVirtualReader: TVirtualReaderClass; virtual;
     class function FileVirtualReader: TVirtualReaderClass; virtual;
-    procedure WriteToFiler(writer: TgxVirtualWriter); virtual;
-    procedure ReadFromFiler(reader: TgxVirtualReader); virtual;
+    procedure WriteToFiler(writer: TVirtualWriter); virtual;
+    procedure ReadFromFiler(reader: TVirtualReader); virtual;
     procedure SaveToStream(stream: TStream; writerClass: TVirtualWriterClass = nil); virtual;
     procedure SaveToStream(stream: TStream; writerClass: TVirtualWriterClass = nil); virtual;
     procedure LoadFromStream(stream: TStream; readerClass: TVirtualReaderClass = nil); virtual;
     procedure LoadFromStream(stream: TStream; readerClass: TVirtualReaderClass = nil); virtual;
     procedure SaveToFile(const fileName: string; writerClass: TVirtualWriterClass = nil); virtual;
     procedure SaveToFile(const fileName: string; writerClass: TVirtualWriterClass = nil); virtual;
@@ -129,7 +128,7 @@ type
     FList: PgxPointerObjectList;
     FList: PgxPointerObjectList;
     FCount: Integer;
     FCount: Integer;
     FCapacity: Integer;
     FCapacity: Integer;
-    FGrowthDelta: integer;
+    FGrowthDelta: Integer;
   protected
   protected
     procedure Error; virtual;
     procedure Error; virtual;
     function Get(Index: Integer): TObject;
     function Get(Index: Integer): TObject;
@@ -146,9 +145,9 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
-    procedure ReadFromFilerWithEvent(reader: TgxVirtualReader;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
+    procedure ReadFromFilerWithEvent(reader: TVirtualReader;
       afterSenderObjectCreated: TNotifyEvent);
       afterSenderObjectCreated: TNotifyEvent);
     function Add(const item: TObject): Integer;
     function Add(const item: TObject): Integer;
     procedure AddNils(nbVals: Cardinal);
     procedure AddNils(nbVals: Cardinal);
@@ -193,7 +192,7 @@ type
   end;
   end;
 
 
   // Wraps a TReader-compatible reader.
   // Wraps a TReader-compatible reader.
-  TBinaryReader = class(TgxVirtualReader)
+  TBinaryReader = class(TVirtualReader)
   protected
   protected
     function ReadValue: TValueType;
     function ReadValue: TValueType;
     function ReadWideString(vType: TValueType): WideString;
     function ReadWideString(vType: TValueType): WideString;
@@ -210,7 +209,7 @@ type
   end;
   end;
 
 
   // Wraps a TWriter-compatible writer.
   // Wraps a TWriter-compatible writer.
-  TBinaryWriter = class(TgxVirtualWriter)
+  TBinaryWriter = class(TVirtualWriter)
   protected
   protected
     procedure WriteAnsiString(const aString: AnsiString); virtual;
     procedure WriteAnsiString(const aString: AnsiString); virtual;
     procedure WriteWideString(const aString: WideString); virtual;
     procedure WriteWideString(const aString: WideString); virtual;
@@ -225,7 +224,7 @@ type
   end;
   end;
 
 
   // Reads object persistence in Text format.
   // Reads object persistence in Text format.
-  TTextReader = class(TgxVirtualReader)
+  TTextReader = class(TVirtualReader)
   private
   private
     FValueType: string;
     FValueType: string;
     FData: string;
     FData: string;
@@ -244,7 +243,7 @@ type
   end;
   end;
 
 
   // Writes object persistence in Text format.
   // Writes object persistence in Text format.
-  TTextWriter = class(TgxVirtualWriter)
+  TTextWriter = class(TVirtualWriter)
   private
   private
     FIndentLevel: Integer;
     FIndentLevel: Integer;
   protected
   protected
@@ -324,11 +323,11 @@ const
 
 
 procedure RaiseFilerException(aClass: TClass; archiveVersion: Integer);
 procedure RaiseFilerException(aClass: TClass; archiveVersion: Integer);
 begin
 begin
-  raise EFilerException.Create(aClass.ClassName + strUnknownArchiveVersion + IntToStr(archiveVersion));
+  raise EFilerException.Create(aClass.ClassName + 
+    strUnknownArchiveVersion + IntToStr(archiveVersion));
 end;
 end;
 
 
 function UTF8ToWideString(const s: AnsiString): WideString;
 function UTF8ToWideString(const s: AnsiString): WideString;
-// Based on Mike Lischke's function (Unicode.pas unit, http://www.delphi-gems.com)
 const
 const
   bytesFromUTF8: packed array[0..255] of Byte = (
   bytesFromUTF8: packed array[0..255] of Byte = (
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -402,20 +401,20 @@ begin
 end;
 end;
 
 
 // ------------------
 // ------------------
-// ------------------ TgxVirtualReader ------------------
+// ------------------ TVirtualReader ------------------
 // ------------------
 // ------------------
 
 
-constructor TgxVirtualReader.Create(Stream: TStream);
+constructor TVirtualReader.Create(Stream: TStream);
 begin
 begin
   FStream := Stream;
   FStream := Stream;
 end;
 end;
 
 
-procedure TgxVirtualReader.ReadTypeError;
+procedure TVirtualReader.ReadTypeError;
 begin
 begin
   raise EReadError.CreateFmt('%s, read type error', [ClassName]);
   raise EReadError.CreateFmt('%s, read type error', [ClassName]);
 end;
 end;
 
 
-procedure TgxVirtualReader.ReadTStrings(aStrings: TStrings);
+procedure TVirtualReader.ReadTStrings(aStrings: TStrings);
 var
 var
   i: Integer;
   i: Integer;
   objectsStored: Boolean;
   objectsStored: Boolean;
@@ -440,15 +439,15 @@ begin
 end;
 end;
 
 
 // ------------------
 // ------------------
-// ------------------ TgxVirtualWriter ------------------
+// ------------------ TVirtualWriter ------------------
 // ------------------
 // ------------------
 
 
-constructor TgxVirtualWriter.Create(Stream: TStream);
+constructor TVirtualWriter.Create(Stream: TStream);
 begin
 begin
   FStream := Stream;
   FStream := Stream;
 end;
 end;
 
 
-procedure TgxVirtualWriter.WriteTStrings(const aStrings: TStrings;
+procedure TVirtualWriter.WriteTStrings(const aStrings: TStrings;
   storeObjects: Boolean = True);
   storeObjects: Boolean = True);
 var
 var
   i: Integer;
   i: Integer;
@@ -480,7 +479,7 @@ begin
   inherited Create;
   inherited Create;
 end;
 end;
 
 
-constructor TgxPersistentObject.CreateFromFiler(reader: TgxVirtualReader);
+constructor TgxPersistentObject.CreateFromFiler(reader: TVirtualReader);
 begin
 begin
   Create;
   Create;
   ReadFromFiler(reader);
   ReadFromFiler(reader);
@@ -531,13 +530,13 @@ begin
   Result := TBinaryReader;
   Result := TBinaryReader;
 end;
 end;
 
 
-procedure TgxPersistentObject.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxPersistentObject.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   // nothing
   // nothing
   Assert(Assigned(writer));
   Assert(Assigned(writer));
 end;
 end;
 
 
-procedure TgxPersistentObject.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxPersistentObject.ReadFromFiler(reader: TVirtualReader);
 begin
 begin
   // nothing
   // nothing
   Assert(Assigned(reader));
   Assert(Assigned(reader));
@@ -570,7 +569,7 @@ end;
 
 
 procedure TgxPersistentObject.SaveToStream(stream: TStream; writerClass: TVirtualWriterClass = nil);
 procedure TgxPersistentObject.SaveToStream(stream: TStream; writerClass: TVirtualWriterClass = nil);
 var
 var
-  wr: TgxVirtualWriter;
+  wr: TVirtualWriter;
   fileSig: AnsiString;
   fileSig: AnsiString;
 begin
 begin
   if writerClass = nil then
   if writerClass = nil then
@@ -590,7 +589,7 @@ end;
 
 
 procedure TgxPersistentObject.LoadFromStream(stream: TStream; readerClass: TVirtualReaderClass = nil);
 procedure TgxPersistentObject.LoadFromStream(stream: TStream; readerClass: TVirtualReaderClass = nil);
 var
 var
-  rd: TgxVirtualReader;
+  rd: TVirtualReader;
   sig: AnsiString;
   sig: AnsiString;
 begin
 begin
   if readerClass = nil then
   if readerClass = nil then
@@ -1042,7 +1041,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxPersistentObjectList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxPersistentObjectList.WriteToFiler(writer: TVirtualWriter);
 (*
 (*
    Object List Filer Format :
    Object List Filer Format :
 
 
@@ -1107,7 +1106,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxPersistentObjectList.ReadFromFilerWithEvent(reader: TgxVirtualReader; afterSenderObjectCreated: TNotifyEvent);
+procedure TgxPersistentObjectList.ReadFromFilerWithEvent(reader: TVirtualReader; afterSenderObjectCreated: TNotifyEvent);
 var
 var
   obj: TgxPersistentObject;
   obj: TgxPersistentObject;
   m: TPersistentObjectClass;
   m: TPersistentObjectClass;
@@ -1166,7 +1165,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxPersistentObjectList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxPersistentObjectList.ReadFromFiler(reader: TVirtualReader);
 begin
 begin
   ReadFromFilerWithEvent(reader, AfterObjectCreatedByReader);
   ReadFromFilerWithEvent(reader, AfterObjectCreatedByReader);
 end;
 end;

+ 12 - 12
Source/FMX/GLX.Ragdoll.pas

@@ -31,8 +31,8 @@ type
   public
   public
     constructor Create(Ragdoll: TgxRagdoll); reintroduce;
     constructor Create(Ragdoll: TgxRagdoll); reintroduce;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer : TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader : TgxVirtualReader); override;
+    procedure WriteToFiler(writer : TVirtualWriter); override;
+    procedure ReadFromFiler(reader : TVirtualReader); override;
     property Ragdoll : TgxRagdoll read FRagdoll;
     property Ragdoll : TgxRagdoll read FRagdoll;
     property Items[Index: Integer] : TgxRagdolBone read GetRagdollBone; default;
     property Items[Index: Integer] : TgxRagdolBone read GetRagdollBone; default;
 	end;
 	end;
@@ -70,8 +70,8 @@ type
     constructor CreateOwned(aOwner : TgxRagdolBoneList);
     constructor CreateOwned(aOwner : TgxRagdolBoneList);
     constructor Create(Ragdoll: TgxRagdoll);
     constructor Create(Ragdoll: TgxRagdoll);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer : TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader : TgxVirtualReader); override;
+    procedure WriteToFiler(writer : TVirtualWriter); override;
+    procedure ReadFromFiler(reader : TVirtualReader); override;
     property Owner : TgxRagdolBoneList read FOwner;
     property Owner : TgxRagdolBoneList read FOwner;
     property Name : String read FName write FName;
     property Name : String read FName write FName;
     property BoneID : Integer read FBoneID write FBoneID;
     property BoneID : Integer read FBoneID write FBoneID;
@@ -93,8 +93,8 @@ type
   public
   public
     constructor Create(AOwner : TgxBaseMesh); reintroduce;
     constructor Create(AOwner : TgxBaseMesh); reintroduce;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer : TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader : TgxVirtualReader); override;
+    procedure WriteToFiler(writer : TVirtualWriter); override;
+    procedure ReadFromFiler(reader : TVirtualReader); override;
     // Must be set before build the ragdoll
     // Must be set before build the ragdoll
     procedure SetRootBone(RootBone: TgxRagdolBone);
     procedure SetRootBone(RootBone: TgxRagdolBone);
     // Create the bounding box and setup the ragdoll do be started later
     // Create the bounding box and setup the ragdoll do be started later
@@ -133,13 +133,13 @@ begin
   Result:=TgxRagdolBone(List^[Index]);
   Result:=TgxRagdolBone(List^[Index]);
 end;
 end;
 
 
-procedure TgxRagdolBoneList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxRagdolBoneList.ReadFromFiler(reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
   //Not implemented
   //Not implemented
 end;
 end;
 
 
-procedure TgxRagdolBoneList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxRagdolBoneList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   //Not implemented
   //Not implemented
@@ -260,7 +260,7 @@ begin
   Result:=TgxRagdolBone(List^[Index]);
   Result:=TgxRagdolBone(List^[Index]);
 end;
 end;
 
 
-procedure TgxRagdolBone.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxRagdolBone.ReadFromFiler(reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -282,7 +282,7 @@ begin
   for i := 0 to Count-1 do items[i].UpdateChild;
   for i := 0 to Count-1 do items[i].UpdateChild;
 end;
 end;
 
 
-procedure TgxRagdolBone.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxRagdolBone.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -331,7 +331,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TgxRagdoll.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxRagdoll.ReadFromFiler(reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 end;
 end;
@@ -373,7 +373,7 @@ begin
   FOwner.Skeleton.MorphMesh(true);
   FOwner.Skeleton.MorphMesh(true);
 end;
 end;
 
 
-procedure TgxRagdoll.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxRagdoll.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
 
 

+ 8 - 8
Source/FMX/GLX.TilePlane.pas

@@ -38,8 +38,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Cell[col: Integer]: Integer read GetCell write SetCell; default;
     property Cell[col: Integer]: Integer read GetCell write SetCell; default;
     property ColMin: Integer read FColMin write SetColMin;
     property ColMin: Integer read FColMin write SetColMin;
     property ColMax: Integer read FColMax write SetColMax;
     property ColMax: Integer read FColMax write SetColMax;
@@ -65,8 +65,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Tile[col, row: Integer]: Integer read GetTile
     property Tile[col, row: Integer]: Integer read GetTile
       write SetTile; default;
       write SetTile; default;
     property row[index: Integer]: TgxTiledAreaRow read GetRow;
     property row[index: Integer]: TgxTiledAreaRow read GetRow;
@@ -142,7 +142,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxTiledAreaRow.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxTiledAreaRow.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -153,7 +153,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxTiledAreaRow.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxTiledAreaRow.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -311,7 +311,7 @@ end;
 
 
 // WriteToFiler
 // WriteToFiler
 //
 //
-procedure TgxTiledArea.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxTiledArea.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -324,7 +324,7 @@ end;
 
 
 // ReadFromFiler
 // ReadFromFiler
 //
 //
-procedure TgxTiledArea.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxTiledArea.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 70 - 70
Source/FMX/GLX.VectorFileObjects.pas

@@ -71,8 +71,8 @@ type
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Clears all mesh object data, submeshes, facegroups, etc.
     // Clears all mesh object data, submeshes, facegroups, etc.
     procedure Clear; virtual;
     procedure Clear; virtual;
     // Translates all the vertices by the given delta.
     // Translates all the vertices by the given delta.
@@ -126,8 +126,8 @@ type
     constructor CreateOwned(aOwner: TgxSkeletonFrameList);
     constructor CreateOwned(aOwner: TgxSkeletonFrameList);
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Owner: TgxSkeletonFrameList read FOwner;
     property Owner: TgxSkeletonFrameList read FOwner;
     property Name: string read FName write FName;
     property Name: string read FName write FName;
     // Position values for the joints.
     // Position values for the joints.
@@ -162,7 +162,7 @@ type
   public
   public
     constructor CreateOwned(aOwner: TPersistent);
     constructor CreateOwned(aOwner: TPersistent);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // As the name states; Convert Quaternions to Rotations or vice-versa.
     // As the name states; Convert Quaternions to Rotations or vice-versa.
     procedure ConvertQuaternionsToRotations(KeepQuaternions: Boolean = True; SetTransformMode: Boolean = True);
     procedure ConvertQuaternionsToRotations(KeepQuaternions: Boolean = True; SetTransformMode: Boolean = True);
     procedure ConvertRotationsToQuaternions(KeepRotations: Boolean = True; SetTransformMode: Boolean = True);
     procedure ConvertRotationsToQuaternions(KeepRotations: Boolean = True; SetTransformMode: Boolean = True);
@@ -186,8 +186,8 @@ type
     constructor CreateOwned(aOwner: TgxSkeleton);
     constructor CreateOwned(aOwner: TgxSkeleton);
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Skeleton: TgxSkeleton read FSkeleton;
     property Skeleton: TgxSkeleton read FSkeleton;
     property Items[Index: Integer]: TgxSkeletonBone read GetSkeletonBone; default;
     property Items[Index: Integer]: TgxSkeletonBone read GetSkeletonBone; default;
     // Returns a bone by its BoneID, nil if not found.
     // Returns a bone by its BoneID, nil if not found.
@@ -204,8 +204,8 @@ type
   // This list store skeleton root bones exclusively.
   // This list store skeleton root bones exclusively.
   TgxSkeletonRootBoneList = class(TgxSkeletonBoneList)
   TgxSkeletonRootBoneList = class(TgxSkeletonBoneList)
   public
   public
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Render skeleton wireframe
     // Render skeleton wireframe
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     property GlobalMatrix: TMatrix4f read FGlobalMatrix write FGlobalMatrix;
     property GlobalMatrix: TMatrix4f read FGlobalMatrix write FGlobalMatrix;
@@ -228,8 +228,8 @@ type
     constructor CreateOwned(aOwner: TgxSkeletonBoneList);
     constructor CreateOwned(aOwner: TgxSkeletonBoneList);
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Render skeleton wireframe
     // Render skeleton wireframe
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     property Owner: TgxSkeletonBoneList read FOwner;
     property Owner: TgxSkeletonBoneList read FOwner;
@@ -274,8 +274,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     constructor CreateOwned(aOwner: TgxSkeletonColliderList);
     constructor CreateOwned(aOwner: TgxSkeletonColliderList);
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     (* This method is used to align the colliders and their
     (* This method is used to align the colliders and their
       derived objects to their associated skeleton bone.
       derived objects to their associated skeleton bone.
       Override to set up descendant class alignment properties. *)
       Override to set up descendant class alignment properties. *)
@@ -301,7 +301,7 @@ type
   public
   public
     constructor CreateOwned(aOwner: TPersistent);
     constructor CreateOwned(aOwner: TPersistent);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Clear; override;
     procedure Clear; override;
     // Calls AlignCollider for each collider in the list.
     // Calls AlignCollider for each collider in the list.
     procedure AlignColliders;
     procedure AlignColliders;
@@ -345,8 +345,8 @@ type
     constructor CreateOwned(aOwner: TgxBaseMesh);
     constructor CreateOwned(aOwner: TgxBaseMesh);
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Owner: TgxBaseMesh read FOwner;
     property Owner: TgxBaseMesh read FOwner;
     property RootBones: TgxSkeletonRootBoneList read FRootBones write SetRootBones;
     property RootBones: TgxSkeletonRootBoneList read FRootBones write SetRootBones;
     property Frames: TgxSkeletonFrameList read FFrames write SetFrames;
     property Frames: TgxSkeletonFrameList read FFrames write SetFrames;
@@ -453,8 +453,8 @@ type
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Clear; override;
     procedure Clear; override;
     function ExtractTriangles(texCoords: TgxAffineVectorList = nil; normals: TgxAffineVectorList = nil): TgxAffineVectorList;
     function ExtractTriangles(texCoords: TgxAffineVectorList = nil; normals: TgxAffineVectorList = nil): TgxAffineVectorList;
       override;
       override;
@@ -528,7 +528,7 @@ type
   public
   public
     constructor CreateOwned(aOwner: TgxBaseMesh);
     constructor CreateOwned(aOwner: TgxBaseMesh);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure PrepareMaterialLibraryCache(matLib: TgxMaterialLibrary);
     procedure PrepareMaterialLibraryCache(matLib: TgxMaterialLibrary);
     procedure DropMaterialLibraryCache;
     procedure DropMaterialLibraryCache;
     (* Prepare the texture and materials before rendering.
     (* Prepare the texture and materials before rendering.
@@ -569,8 +569,8 @@ type
   public
   public
     constructor CreateOwned(aOwner: TgxMeshMorphTargetList);
     constructor CreateOwned(aOwner: TgxMeshMorphTargetList);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Owner: TgxMeshMorphTargetList read FOwner;
     property Owner: TgxMeshMorphTargetList read FOwner;
   end;
   end;
 
 
@@ -583,7 +583,7 @@ type
   public
   public
     constructor CreateOwned(aOwner: TPersistent);
     constructor CreateOwned(aOwner: TPersistent);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Translate(const delta: TAffineVector);
     procedure Translate(const delta: TAffineVector);
     property Owner: TPersistent read FOwner;
     property Owner: TPersistent read FOwner;
     procedure Clear; override;
     procedure Clear; override;
@@ -599,8 +599,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Clear; override;
     procedure Clear; override;
     procedure Translate(const delta: TAffineVector); override;
     procedure Translate(const delta: TAffineVector); override;
     procedure MorphTo(morphTargetIndex: Integer); virtual;
     procedure MorphTo(morphTargetIndex: Integer); virtual;
@@ -644,8 +644,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Clear; override;
     procedure Clear; override;
     property VerticesBonesWeights: PgxVerticesBoneWeights read FVerticesBonesWeights;
     property VerticesBonesWeights: PgxVerticesBoneWeights read FVerticesBonesWeights;
     property VerticeBoneWeightCount: Integer read FVerticeBoneWeightCount write SetVerticeBoneWeightCount;
     property VerticeBoneWeightCount: Integer read FVerticeBoneWeightCount write SetVerticeBoneWeightCount;
@@ -679,8 +679,8 @@ type
   public
   public
     constructor CreateOwned(aOwner: TgxFaceGroups); virtual;
     constructor CreateOwned(aOwner: TgxFaceGroups); virtual;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure PrepareMaterialLibraryCache(matLib: TgxMaterialLibrary);
     procedure PrepareMaterialLibraryCache(matLib: TgxMaterialLibrary);
     procedure DropMaterialLibraryCache;
     procedure DropMaterialLibraryCache;
     procedure BuildList(var mrci: TgxRenderContextInfo); virtual; abstract;
     procedure BuildList(var mrci: TgxRenderContextInfo); virtual; abstract;
@@ -729,8 +729,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure AddToTriangles(aList: TgxAffineVectorList; aTexCoords: TgxAffineVectorList = nil;
     procedure AddToTriangles(aList: TgxAffineVectorList; aTexCoords: TgxAffineVectorList = nil;
       aNormals: TgxAffineVectorList = nil); override;
       aNormals: TgxAffineVectorList = nil); override;
@@ -759,8 +759,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure AddToTriangles(aList: TgxAffineVectorList; aTexCoords: TgxAffineVectorList = nil;
     procedure AddToTriangles(aList: TgxAffineVectorList; aTexCoords: TgxAffineVectorList = nil;
       aNormals: TgxAffineVectorList = nil); override;
       aNormals: TgxAffineVectorList = nil); override;
@@ -780,8 +780,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure BuildList(var mrci: TgxRenderContextInfo); override;
     procedure AddToTriangles(aList: TgxAffineVectorList; aTexCoords: TgxAffineVectorList = nil;
     procedure AddToTriangles(aList: TgxAffineVectorList; aTexCoords: TgxAffineVectorList = nil;
       aNormals: TgxAffineVectorList = nil); override;
       aNormals: TgxAffineVectorList = nil); override;
@@ -799,7 +799,7 @@ type
   public
   public
     constructor CreateOwned(aOwner: TgxMeshObject);
     constructor CreateOwned(aOwner: TgxMeshObject);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure PrepareMaterialLibraryCache(matLib: TgxMaterialLibrary);
     procedure PrepareMaterialLibraryCache(matLib: TgxMaterialLibrary);
     procedure DropMaterialLibraryCache;
     procedure DropMaterialLibraryCache;
     property Owner: TgxMeshObject read FOwner;
     property Owner: TgxMeshObject read FOwner;
@@ -1519,7 +1519,7 @@ begin
     inherited; // Die!
     inherited; // Die!
 end;
 end;
 
 
-procedure TgxBaseMeshObject.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxBaseMeshObject.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -1532,7 +1532,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxBaseMeshObject.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxBaseMeshObject.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -1744,7 +1744,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TgxSkeletonFrame.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxSkeletonFrame.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -1758,7 +1758,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxSkeletonFrame.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeletonFrame.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -1924,7 +1924,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxSkeletonFrameList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeletonFrameList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -1997,7 +1997,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxSkeletonBoneList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxSkeletonBoneList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2007,7 +2007,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxSkeletonBoneList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeletonBoneList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion, i: Integer;
   archiveVersion, i: Integer;
 begin
 begin
@@ -2085,7 +2085,7 @@ end;
 // ------------------ TgxSkeletonRootBoneList ------------------
 // ------------------ TgxSkeletonRootBoneList ------------------
 // ------------------
 // ------------------
 
 
-procedure TgxSkeletonRootBoneList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxSkeletonRootBoneList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2095,7 +2095,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxSkeletonRootBoneList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeletonRootBoneList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion, i: Integer;
   archiveVersion, i: Integer;
 begin
 begin
@@ -2150,7 +2150,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TgxSkeletonBone.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxSkeletonBone.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2162,7 +2162,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxSkeletonBone.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeletonBone.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion, i: Integer;
   archiveVersion, i: Integer;
 begin
 begin
@@ -2283,7 +2283,7 @@ begin
     FOwner.Add(Self);
     FOwner.Add(Self);
 end;
 end;
 
 
-procedure TgxSkeletonCollider.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxSkeletonCollider.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2297,7 +2297,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxSkeletonCollider.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeletonCollider.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2362,7 +2362,7 @@ begin
   Result := TgxSkeletonCollider(inherited Get(index));
   Result := TgxSkeletonCollider(inherited Get(index));
 end;
 end;
 
 
-procedure TgxSkeletonColliderList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeletonColliderList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -2424,7 +2424,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TgxSkeleton.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxSkeleton.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2440,7 +2440,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxSkeleton.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeleton.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2857,7 +2857,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxMeshObject.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxMeshObject.WriteToFiler(writer: TVirtualWriter);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -2880,7 +2880,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxMeshObject.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxMeshObject.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i, Count, archiveVersion: Integer;
   i, Count, archiveVersion: Integer;
   lOldLightMapTexCoords: TgxTexPointList;
   lOldLightMapTexCoords: TgxTexPointList;
@@ -4097,7 +4097,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxMeshObjectList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxMeshObjectList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
   Mesh: TgxMeshObject;
   Mesh: TgxMeshObject;
@@ -4354,7 +4354,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxMeshMorphTarget.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxMeshMorphTarget.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -4364,7 +4364,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxMeshMorphTarget.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxMeshMorphTarget.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -4395,7 +4395,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxMeshMorphTargetList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxMeshMorphTargetList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -4446,7 +4446,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxMorphableMeshObject.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxMorphableMeshObject.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -4456,7 +4456,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxMorphableMeshObject.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxMorphableMeshObject.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -4551,7 +4551,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TgxSkeletonMeshObject.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxSkeletonMeshObject.WriteToFiler(writer: TVirtualWriter);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -4567,7 +4567,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxSkeletonMeshObject.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxSkeletonMeshObject.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion, i: Integer;
   archiveVersion, i: Integer;
 begin
 begin
@@ -4932,7 +4932,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxFaceGroup.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxFaceGroup.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -4951,7 +4951,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxFaceGroup.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxFaceGroup.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -5057,7 +5057,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TfgxVertexIndexList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TfgxVertexIndexList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -5068,7 +5068,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TfgxVertexIndexList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TfgxVertexIndexList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -5333,7 +5333,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TFGVertexNormalTexIndexList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TFGVertexNormalTexIndexList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -5344,7 +5344,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TFGVertexNormalTexIndexList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TFGVertexNormalTexIndexList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -5449,7 +5449,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TFGIndexTexCoordList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TFGIndexTexCoordList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -5459,7 +5459,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TFGIndexTexCoordList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TFGIndexTexCoordList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -5607,7 +5607,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TgxFaceGroups.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxFaceGroups.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin

+ 8 - 8
Source/FMX/GLX.VectorLists.pas

@@ -52,8 +52,8 @@ type
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Assign(Src: TPersistent); override;
     procedure Assign(Src: TPersistent); override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddNulls(nbVals: Cardinal);
     procedure AddNulls(nbVals: Cardinal);
     procedure InsertNulls(Index: Integer; nbVals: Cardinal);
     procedure InsertNulls(Index: Integer; nbVals: Cardinal);
     procedure AdjustCapacityToAtLeast(const size: Integer);
     procedure AdjustCapacityToAtLeast(const size: Integer);
@@ -93,8 +93,8 @@ type
   protected
   protected
     function GetItemAddress(Index: Integer): PFloatArray;
     function GetItemAddress(Index: Integer): PFloatArray;
   public
   public
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure GetExtents(out min, max: TAffineVector); virtual;
     procedure GetExtents(out min, max: TAffineVector); virtual;
     function Sum: TAffineVector; virtual;
     function Sum: TAffineVector; virtual;
     procedure Normalize; virtual;
     procedure Normalize; virtual;
@@ -720,7 +720,7 @@ begin
   AWriter.WriteString(lOutputText);
   AWriter.WriteString(lOutputText);
 end;
 end;
 
 
-procedure TgxBaseList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxBaseList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   with writer do
   with writer do
@@ -733,7 +733,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxBaseList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxBaseList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -981,7 +981,7 @@ end;
 // ------------------ TgxBaseVectorList ------------------
 // ------------------ TgxBaseVectorList ------------------
 // ------------------
 // ------------------
 
 
-procedure TgxBaseVectorList.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxBaseVectorList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if Self is TgxTexPointList then
   if Self is TgxTexPointList then
@@ -993,7 +993,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TgxBaseVectorList.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxBaseVectorList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 12 - 12
Source/FMX/GLX.VerletTypes.pas

@@ -672,8 +672,8 @@ type
   private
   private
     FVerletConstraint: TgxVerletConstraint;
     FVerletConstraint: TgxVerletConstraint;
   public
   public
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     procedure AddToVerletWorld(VerletWorld: TgxVerletWorld); virtual;
     procedure AddToVerletWorld(VerletWorld: TgxVerletWorld); virtual;
     // The verlet constraint is created through the AddToVerletWorld procedure
     // The verlet constraint is created through the AddToVerletWorld procedure
     property VerletConstraint: TgxVerletConstraint read FVerletConstraint;
     property VerletConstraint: TgxVerletConstraint read FVerletConstraint;
@@ -687,8 +687,8 @@ type
     procedure SetRadius(const Val: Single);
     procedure SetRadius(const Val: Single);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     procedure AddToVerletWorld(VerletWorld: TgxVerletWorld); override;
     procedure AddToVerletWorld(VerletWorld: TgxVerletWorld); override;
     procedure AlignCollider; override;
     procedure AlignCollider; override;
     property Radius: Single read FRadius write SetRadius;
     property Radius: Single read FRadius write SetRadius;
@@ -703,8 +703,8 @@ type
     procedure SetLength(const Val: Single);
     procedure SetLength(const Val: Single);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(Writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TgxVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     procedure AddToVerletWorld(VerletWorld: TgxVerletWorld); override;
     procedure AddToVerletWorld(VerletWorld: TgxVerletWorld); override;
     procedure AlignCollider; override;
     procedure AlignCollider; override;
     property Radius: Single read FRadius write SetRadius;
     property Radius: Single read FRadius write SetRadius;
@@ -2610,13 +2610,13 @@ end;
 // ------------------
 // ------------------
 // ------------------ TgxVerletSkeletonCollider ------------------
 // ------------------ TgxVerletSkeletonCollider ------------------
 // ------------------
 // ------------------
-procedure TgxVerletSkeletonCollider.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxVerletSkeletonCollider.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(Writer);
   inherited WriteToFiler(Writer);
   Writer.WriteInteger(0); // Archive Version 0
   Writer.WriteInteger(0); // Archive Version 0
 end;
 end;
 
 
-procedure TgxVerletSkeletonCollider.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxVerletSkeletonCollider.ReadFromFiler(Reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2645,14 +2645,14 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TgxVerletSphere.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxVerletSphere.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(Writer);
   inherited WriteToFiler(Writer);
   Writer.WriteInteger(0); // Archive Version 0
   Writer.WriteInteger(0); // Archive Version 0
   Writer.WriteFloat(FRadius);
   Writer.WriteFloat(FRadius);
 end;
 end;
 
 
-procedure TgxVerletSphere.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxVerletSphere.ReadFromFiler(Reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2701,7 +2701,7 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TgxVerletCapsule.WriteToFiler(Writer: TgxVirtualWriter);
+procedure TgxVerletCapsule.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(Writer);
   inherited WriteToFiler(Writer);
   Writer.WriteInteger(0); // Archive Version 0
   Writer.WriteInteger(0); // Archive Version 0
@@ -2709,7 +2709,7 @@ begin
   Writer.WriteFloat(FLength);
   Writer.WriteFloat(FLength);
 end;
 end;
 
 
-procedure TgxVerletCapsule.ReadFromFiler(Reader: TgxVirtualReader);
+procedure TgxVerletCapsule.ReadFromFiler(Reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 16 - 16
Source/FMX/Physix.ODESkeletonColliders.pas

@@ -23,8 +23,8 @@ type
   private
   private
     FGeom: PdxGeom;
     FGeom: PdxGeom;
   public
   public
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddToSpace(Space: PdxSpace); virtual;
     procedure AddToSpace(Space: PdxSpace); virtual;
     procedure AlignCollider; override;
     procedure AlignCollider; override;
     // The geoms are created through the AddToSpace procedure
     // The geoms are created through the AddToSpace procedure
@@ -39,8 +39,8 @@ type
     procedure SetRadius(const val: TdReal);
     procedure SetRadius(const val: TdReal);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddToSpace(Space: PdxSpace); override;
     procedure AddToSpace(Space: PdxSpace); override;
     property Radius: TdReal read FRadius write SetRadius;
     property Radius: TdReal read FRadius write SetRadius;
   end;
   end;
@@ -54,8 +54,8 @@ type
     procedure SetLength(const val: Single);
     procedure SetLength(const val: Single);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddToSpace(Space: PdxSpace); override;
     procedure AddToSpace(Space: PdxSpace); override;
     property Radius: Single read FRadius write SetRadius;
     property Radius: Single read FRadius write SetRadius;
     property Length: Single read FLength write SetLength;
     property Length: Single read FLength write SetLength;
@@ -71,8 +71,8 @@ type
     procedure SetBoxDepth(const val: TdReal);
     procedure SetBoxDepth(const val: TdReal);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(writer: TgxVirtualWriter); override;
-    procedure ReadFromFiler(reader: TgxVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddToSpace(Space: PdxSpace); override;
     procedure AddToSpace(Space: PdxSpace); override;
     property BoxWidth: TdReal read FBoxWidth write SetBoxWidth;
     property BoxWidth: TdReal read FBoxWidth write SetBoxWidth;
     property BoxHeight: TdReal read FBoxHeight write SetBoxHeight;
     property BoxHeight: TdReal read FBoxHeight write SetBoxHeight;
@@ -107,7 +107,7 @@ end;
 // ------------------ TSCODEBase ------------------
 // ------------------ TSCODEBase ------------------
 // ------------------
 // ------------------
 
 
-procedure TSCODEBase.WriteToFiler(writer: TgxVirtualWriter);
+procedure TSCODEBase.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -116,7 +116,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TSCODEBase.ReadFromFiler(reader: TgxVirtualReader);
+procedure TSCODEBase.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -172,7 +172,7 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TSCODESphere.WriteToFiler(writer: TgxVirtualWriter);
+procedure TSCODESphere.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -182,7 +182,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TSCODESphere.ReadFromFiler(reader: TgxVirtualReader);
+procedure TSCODESphere.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -224,7 +224,7 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TSCODECCylinder.WriteToFiler(writer: TgxVirtualWriter);
+procedure TSCODECCylinder.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -235,7 +235,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TSCODECCylinder.ReadFromFiler(reader: TgxVirtualReader);
+procedure TSCODECCylinder.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -290,7 +290,7 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TSCODEBox.WriteToFiler(writer: TgxVirtualWriter);
+procedure TSCODEBox.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -302,7 +302,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TSCODEBox.ReadFromFiler(reader: TgxVirtualReader);
+procedure TSCODEBox.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 1 - 1
Source/Formats.X.pas

@@ -47,7 +47,7 @@ type
 
 
   TDXMaterialList = class;
   TDXMaterialList = class;
 
 
-  TDXMaterial = class(TGLPersistentObject)
+  TDXMaterial = class(TPersistentObject)
   private
   private
     FDiffuse: TVector4f;
     FDiffuse: TVector4f;
     FSpecPower: Single;
     FSpecPower: Single;

+ 1 - 1
Source/GLS.ApplicationFileIO.pas

@@ -19,7 +19,7 @@ uses
 
 
   GLS.BaseClasses,
   GLS.BaseClasses,
   Scena.Strings,
   Scena.Strings,
-  GLS.Logger;
+  Scena.Logger;
 
 
 const
 const
   GLS_RC_DDS_Type = RT_RCDATA;
   GLS_RC_DDS_Type = RT_RCDATA;

+ 1 - 1
Source/GLS.ArchiveManager.pas

@@ -72,7 +72,7 @@ type
   end;
   end;
 
 
   // The list of registered classes
   // The list of registered classes
-  TGLArchiveFileFormatsList = class(TGLPersistentObjectList)
+  TGLArchiveFileFormatsList = class(TPersistentObjectList)
   public
   public
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Add(const Ext, Desc: string; DescID: integer;
     procedure Add(const Ext, Desc: string; DescID: integer;

+ 1 - 1
Source/GLS.BaseClasses.pas

@@ -37,7 +37,7 @@ type
   end;
   end;
 
 
   // An abstract class describing the "update" interface.
   // An abstract class describing the "update" interface.
-  TGLUpdateAbleObject = class(TGLInterfacedPersistent, IGLNotifyAble)
+  TGLUpdateAbleObject = class(TInterfacedPersistent, IGLNotifyAble)
   private
   private
     FOwner: TPersistent;
     FOwner: TPersistent;
     FUpdating: Integer;
     FUpdating: Integer;

+ 2 - 2
Source/GLS.Context.pas

@@ -22,7 +22,7 @@ uses
   VCL.Consts,
   VCL.Consts,
 
 
 {$IFDEF USE_SERVICE_CONTEXT}
 {$IFDEF USE_SERVICE_CONTEXT}
-  GLS.Generics,
+  Scena.Generics,
 {$ENDIF}
 {$ENDIF}
 
 
   Scena.OpenGLTokens,
   Scena.OpenGLTokens,
@@ -34,7 +34,7 @@ uses
   Scena.VectorTypes,
   Scena.VectorTypes,
   GLS.State,
   GLS.State,
   GLS.PipelineTransformation,
   GLS.PipelineTransformation,
-  GLS.Logger;
+  Scena.Logger;
 
 
 // Buffer ID's for Multiple-Render-Targets (using GL_ATI_draw_buffers)
 // Buffer ID's for Multiple-Render-Targets (using GL_ATI_draw_buffers)
 const
 const

+ 3 - 4
Source/GLS.Coordinates.pas

@@ -15,8 +15,8 @@ uses
   System.SysUtils,
   System.SysUtils,
 
 
   Scena.VectorGeometry,
   Scena.VectorGeometry,
-  Scena.VectorTypes,
-  GLS.BaseClasses;
+  GLS.BaseClasses,
+  Scena.VectorTypes;
 
 
 type
 type
 
 
@@ -246,8 +246,7 @@ procedure ProlateSpheroidal_Cartesian(const xi, eta, phi, a: single;
   the x-axis, which is relabeled the z-axis. The third set of coordinates
   the x-axis, which is relabeled the z-axis. The third set of coordinates
   consists of planes passing through this axis.
   consists of planes passing through this axis.
   The coordinate system is parameterised by parameter a. A default value of a=1 is
   The coordinate system is parameterised by parameter a. A default value of a=1 is
-  suggesed:
-  Ref: http://mathworld.wolfram.com/ProlateSpheroidalCoordinates.html *)
+  suggesed: Ref: http://mathworld.wolfram.com/ProlateSpheroidalCoordinates.html *)
 procedure ProlateSpheroidal_Cartesian(const xi, eta, phi, a: double;
 procedure ProlateSpheroidal_Cartesian(const xi, eta, phi, a: double;
   var x, y, z: double); overload;
   var x, y, z: double); overload;
 (* Convert Prolate-Spheroidal to Cartesian [single](with error check). eta,phi in rad
 (* Convert Prolate-Spheroidal to Cartesian [single](with error check). eta,phi in rad

+ 0 - 131
Source/GLS.CrossXML.pas

@@ -1,131 +0,0 @@
-//
-// The graphics platform GLScene https://github.com/glscene
-//
-
-unit GLS.CrossXML;
-
-(* Cross XML routines *)
-
-interface
-
-uses
-  System.Classes,
-  System.SysUtils,
-  System.Variants,
-  XMLIntf,
-  XMLDoc,
-  XMLDom;
-
-type
-  GLSXMLDocument = IXMLDocument;
-  GLSXMLNode = IXMLNode;
-  GLSDOMNode = IDOMNode;
-
-function GLSNewXMLDocument: GLSXMLDocument;
-procedure ReleaseXMLDocument(var ADoc: GLSXMLDocument);
-procedure WriteXMLFile(var ADoc: GLSXMLDocument; AStream: TStream); overload;
-procedure ReadXMLFile(var ADoc: GLSXMLDocument; AStream: TStream); overload;
-procedure WriteXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
-procedure ReadXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
-function GetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; out Value: string): Boolean; overload;
-function GetXMLAttribute(const XMLNode: GLSXMLNode; Idx: Integer): GLSXMLNode; overload;
-procedure SetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; const Value: string); overload;
-procedure SetXMLAttribute(const DOMNode: GLSDOMNode; const AttrName: string; const Value: string); overload;
-function GetXMLAttributeCount(const XMLNode: GLSXMLNode): Integer;
-function FindXMLNode(const ParentNode: GLSXMLNode; const NodeName: string; out ChildNode: GLSXMLNode): Boolean;
-function CreateDOMNode(const ParentNode: GLSDOMNode; const NodeName: string): GLSDOMNode;
-procedure SetXMLText(const DOMNode: GLSDOMNode; const AText: string);
-function GetXMLText(const XMLNode: GLSXMLNode; out AText: string): Boolean;
-
-//---------------------------------------------------------------------
-implementation
-//---------------------------------------------------------------------
-
-function GLSNewXMLDocument: GLSXMLDocument;
-begin
-  Result := NewXMLDocument();
-end;
-
-procedure ReleaseXMLDocument(var ADoc: GLSXMLDocument);
-begin
-  ADoc := nil;
-end;
-
-procedure WriteXMLFile(var ADoc: GLSXMLDocument; AStream: TStream);
-begin
-  ADoc.SaveToStream(AStream);
-end;
-
-procedure ReadXMLFile(var ADoc: GLSXMLDocument; AStream: TStream);
-begin
-  ADoc.LoadFromStream(AStream);
-end;
-
-procedure WriteXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
-begin
-  ADoc.SaveToFile(AFileName);
-end;
-
-procedure ReadXMLFile(var ADoc: GLSXMLDocument; AFileName: string); overload;
-begin
-  ADoc.LoadFromFile(AFileName);
-end;
-
-function GetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; out Value: string): Boolean;
-var
-  attr: OleVariant;
-begin
-  attr := 0;
-  attr := XMLNode.Attributes[AttrName];
-  Result := not VarIsNull(attr);
-  if Result then
-    Value := attr;
-end;
-
-procedure SetXMLAttribute(const XMLNode: GLSXMLNode; const AttrName: string; const Value: string);
-begin
-  XMLNode.Attributes[AttrName] := Value;
-end;
-
-procedure SetXMLAttribute(const DOMNode: GLSDOMNode; const AttrName: string; const Value: string);
-var
-  E: IDOMElement;
-begin
-  E := DOMNode as IDOMElement;
-  E.SetAttribute(AttrName, Value);
-end;
-
-function FindXMLNode(const ParentNode: GLSXMLNode; const NodeName: string; out ChildNode: GLSXMLNode): Boolean;
-begin
-  ChildNode := ParentNode.ChildNodes.FindNode(NodeName);
-  Result := Assigned(ChildNode);
-end;
-
-function CreateDOMNode(const ParentNode: GLSDOMNode; const NodeName: string): GLSDOMNode;
-begin
-  Result := ParentNode.OwnerDocument.CreateElement(NodeName);
-  ParentNode.AppendChild(Result);
-end;
-
-procedure SetXMLText(const DOMNode: GLSDOMNode; const AText: string);
-begin
-  DOMNode.AppendChild(DOMNode.ownerDocument.createTextNode(AText));
-end;
-
-function GetXMLText(const XMLNode: GLSXMLNode; out AText: string): Boolean;
-begin
-  AText := XMLNode.Text;
-  Result := Length(AText)>0;
-end;
-
-function GetXMLAttributeCount(const XMLNode: GLSXMLNode): Integer;
-begin
-  Result := XMLNode.AttributeNodes.Count;
-end;
-
-function GetXMLAttribute(const XMLNode: GLSXMLNode; Idx: Integer): GLSXMLNode;
-begin
-  Result := XMLNode.AttributeNodes[Idx];
-end;
-
-end.

+ 1 - 1
Source/GLS.FBORenderer.pas

@@ -30,7 +30,7 @@ uses
   Scena.TextureFormat,
   Scena.TextureFormat,
   Scena.VectorTypes,
   Scena.VectorTypes,
   GLS.MultiSampleImage,
   GLS.MultiSampleImage,
-  GLS.Logger;
+  Scena.Logger;
 
 
 const
 const
   MaxColorAttachments = 32;
   MaxColorAttachments = 32;

+ 3 - 2
Source/GLS.Feedback.pas

@@ -25,7 +25,9 @@ uses
   System.SysUtils,
   System.SysUtils,
 
 
   Scena.OpenGLTokens,
   Scena.OpenGLTokens,
+  Scena.VectorTypes,
   Scena.VectorGeometry,
   Scena.VectorGeometry,
+
   GLS.PersistentClasses,
   GLS.PersistentClasses,
   GLS.PipelineTransformation,
   GLS.PipelineTransformation,
   GLS.VectorLists,
   GLS.VectorLists,
@@ -35,8 +37,7 @@ uses
   GLS.RenderContextInfo,
   GLS.RenderContextInfo,
   GLS.Context,
   GLS.Context,
   GLS.State,
   GLS.State,
-  GLS.MeshUtils,
-  Scena.VectorTypes;
+  GLS.MeshUtils;
 
 
 type
 type
   TGLFeedbackMode = (fm2D, fm3D, fm3DColor, fm3DColorTexture, fm4DColorTexture);
   TGLFeedbackMode = (fm2D, fm3D, fm3DColor, fm3DColorTexture, fm4DColorTexture);

+ 8 - 8
Source/GLS.File3DSSceneObjects.pas

@@ -329,18 +329,18 @@ end;
 
 
 procedure TGLFile3DSActor.ReadMesh(Stream: TStream);
 procedure TGLFile3DSActor.ReadMesh(Stream: TStream);
 var
 var
-  virt: TGLBinaryReader;
+  virt: TBinaryReader;
 begin
 begin
-  virt := TGLBinaryReader.Create(Stream);
+  virt := TBinaryReader.Create(Stream);
   MeshOBjects.ReadFromFiler(virt);
   MeshOBjects.ReadFromFiler(virt);
   virt.Free;
   virt.Free;
 end;
 end;
 
 
 procedure TGLFile3DSActor.WriteMesh(Stream: TStream);
 procedure TGLFile3DSActor.WriteMesh(Stream: TStream);
 var
 var
-  virt: TGLBinaryWriter;
+  virt: TBinaryWriter;
 begin
 begin
-  virt := TGLBinaryWriter.Create(Stream);
+  virt := TBinaryWriter.Create(Stream);
   MeshOBjects.WriteToFiler(virt);
   MeshOBjects.WriteToFiler(virt);
   virt.Free;
   virt.Free;
 end;
 end;
@@ -376,9 +376,9 @@ end;
 procedure TGLFile3DSFreeForm.ReadMesh(Stream: TStream);
 procedure TGLFile3DSFreeForm.ReadMesh(Stream: TStream);
 var
 var
   v: TGLVector;
   v: TGLVector;
-  virt: TGLBinaryReader;
+  virt: TBinaryReader;
 begin
 begin
-  virt := TGLBinaryReader.Create(Stream);
+  virt := TBinaryReader.Create(Stream);
 
 
   virt.read(FRefMat, sizeof(FRefMat));
   virt.read(FRefMat, sizeof(FRefMat));
   virt.read(v, sizeof(v));
   virt.read(v, sizeof(v));
@@ -394,10 +394,10 @@ end;
 
 
 procedure TGLFile3DSFreeForm.WriteMesh(Stream: TStream);
 procedure TGLFile3DSFreeForm.WriteMesh(Stream: TStream);
 var
 var
-  virt: TGLBinaryWriter;
+  virt: TBinaryWriter;
   v: TGLVector;
   v: TGLVector;
 begin
 begin
-  virt := TGLBinaryWriter.Create(Stream);
+  virt := TBinaryWriter.Create(Stream);
 
 
   virt.write(FRefMat, sizeof(FRefMat));
   virt.write(FRefMat, sizeof(FRefMat));
   v := S_Rot3DS.AsVector;
   v := S_Rot3DS.AsVector;

+ 4 - 4
Source/GLS.FileOBJ.pas

@@ -165,8 +165,8 @@ type
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
     constructor CreateOwned(aOwner: TglFaceGroups); override;
     constructor CreateOwned(aOwner: TglFaceGroups); override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Add(VertexIdx, NormalIdx, TexCoordIdx: Integer);
     procedure Add(VertexIdx, NormalIdx, TexCoordIdx: Integer);
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure AddToTriangles(aList: TGLAffineVectorList;
     procedure AddToTriangles(aList: TGLAffineVectorList;
@@ -1398,7 +1398,7 @@ begin
 end;
 end;
 
 
 procedure TOBJFGVertexNormalTexIndexList.ReadFromFiler(
 procedure TOBJFGVertexNormalTexIndexList.ReadFromFiler(
-  reader: TGLVirtualReader);
+  reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -1422,7 +1422,7 @@ begin
 end;
 end;
 
 
 procedure TOBJFGVertexNormalTexIndexList.WriteToFiler(
 procedure TOBJFGVertexNormalTexIndexList.WriteToFiler(
-  writer: TGLVirtualWriter);
+  writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do

+ 2 - 2
Source/GLS.Graphics.pas

@@ -42,7 +42,7 @@ uses
   Scena.VectorGeometry,
   Scena.VectorGeometry,
   GLS.Utils,
   GLS.Utils,
   Scena.Strings,
   Scena.Strings,
-  GLS.Logger;
+  Scena.Logger;
 
 
 {$DEFINE PRF_HACK_PASSES}
 {$DEFINE PRF_HACK_PASSES}
 
 
@@ -322,7 +322,7 @@ type
   end;
   end;
 
 
   // Stores registered raster file formats.
   // Stores registered raster file formats.
-  TGLRasterFileFormatsList = class(TGLPersistentObjectList)
+  TGLRasterFileFormatsList = class(TPersistentObjectList)
   public
   public
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Add(const Ext, Desc: string; DescID: Integer; AClass:
     procedure Add(const Ext, Desc: string; DescID: Integer; AClass:

+ 4 - 4
Source/GLS.Gui.pas

@@ -513,10 +513,10 @@ var
   TmpElement: TGLGuiElement;
   TmpElement: TGLGuiElement;
   TmpAlignment: TGUIAlignments;
   TmpAlignment: TGUIAlignments;
   Version: Integer;
   Version: Integer;
-  Data: TGLBinaryReader;
+  Data: TBinaryReader;
 
 
 begin
 begin
-  Data := TGLBinaryReader.Create(Stream);
+  Data := TBinaryReader.Create(Stream);
   try
   try
 
 
     Version := Data.ReadInteger;
     Version := Data.ReadInteger;
@@ -559,10 +559,10 @@ var
   Alignments, xc, YC: Integer;
   Alignments, xc, YC: Integer;
   TmpElement: TGLGuiElement;
   TmpElement: TGLGuiElement;
   TmpAlignment: TGUIAlignments;
   TmpAlignment: TGUIAlignments;
-  Data: TGLBinaryWriter;
+  Data: TBinaryWriter;
 
 
 begin
 begin
-  Data := TGLBinaryWriter.Create(Stream);
+  Data := TBinaryWriter.Create(Stream);
   try
   try
     Data.WriteInteger(1);
     Data.WriteInteger(1);
     Data.WriteInteger(FGuiComponents.Count);
     Data.WriteInteger(FGuiComponents.Count);

+ 3 - 3
Source/GLS.Imposter.pas

@@ -115,7 +115,7 @@ type
   private
   private
     FBackColor: TGLColor;
     FBackColor: TGLColor;
     FBuildOffset: TGLCoordinates;
     FBuildOffset: TGLCoordinates;
-    FImposterRegister: TGLPersistentObjectList;
+    FImposterRegister: TPersistentObjectList;
     FRenderPoint: TGLRenderPoint;
     FRenderPoint: TGLRenderPoint;
     FImposterOptions: TImposterOptions;
     FImposterOptions: TImposterOptions;
     FAlphaTreshold: Single;
     FAlphaTreshold: Single;
@@ -129,7 +129,7 @@ type
     procedure SetBuildOffset(AValue: TGLCoordinates);
     procedure SetBuildOffset(AValue: TGLCoordinates);
     procedure SetImposterReference(AValue: TImposterReference);
     procedure SetImposterReference(AValue: TImposterReference);
     procedure InitializeImpostorTexture(const TextureSize: TPoint);
     procedure InitializeImpostorTexture(const TextureSize: TPoint);
-    property ImposterRegister: TGLPersistentObjectList read FImposterRegister;
+    property ImposterRegister: TPersistentObjectList read FImposterRegister;
     procedure UnregisterImposter(imposter: TImposter);
     procedure UnregisterImposter(imposter: TImposter);
     function CreateNewImposter: TImposter; virtual;
     function CreateNewImposter: TImposter; virtual;
     procedure PrepareImposters(Sender: TObject; var rci: TGLRenderContextInfo);
     procedure PrepareImposters(Sender: TObject; var rci: TGLRenderContextInfo);
@@ -547,7 +547,7 @@ end;
 constructor TGLImposterBuilder.Create(AOwner: TComponent);
 constructor TGLImposterBuilder.Create(AOwner: TComponent);
 begin
 begin
   inherited;
   inherited;
-  FImposterRegister := TGLPersistentObjectList.Create;
+  FImposterRegister := TPersistentObjectList.Create;
   FBackColor := TGLColor.CreateInitialized(Self, clrTransparent);
   FBackColor := TGLColor.CreateInitialized(Self, clrTransparent);
   FBuildOffset := TGLCoordinates.CreateInitialized(Self, NullHmgPoint, CsPoint);
   FBuildOffset := TGLCoordinates.CreateInitialized(Self, NullHmgPoint, CsPoint);
   FImposterOptions := cDefaultImposterOptions;
   FImposterOptions := cDefaultImposterOptions;

+ 4 - 4
Source/GLS.LinePFX.pas

@@ -34,8 +34,8 @@ type
     FLength: Single;
     FLength: Single;
   protected
   protected
   public
   public
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Direction of the line.
     // Direction of the line.
     property Direction: TAffineVector read FDirection write FDirection;
     property Direction: TAffineVector read FDirection write FDirection;
     // Length of the line
     // Length of the line
@@ -194,7 +194,7 @@ end;
 // ------------------ TGLLineParticle ------------------
 // ------------------ TGLLineParticle ------------------
 // ------------------
 // ------------------
 
 
-procedure TGLLineParticle.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLLineParticle.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -205,7 +205,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLLineParticle.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLLineParticle.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 9 - 9
Source/GLS.Material.pas

@@ -33,7 +33,7 @@ uses
   GLS.Graphics,
   GLS.Graphics,
   GLS.Utils,
   GLS.Utils,
   Scena.Strings,
   Scena.Strings,
-  GLS.Logger;
+  Scena.Logger;
 
 
 {$UNDEF USE_MULTITHREAD}
 {$UNDEF USE_MULTITHREAD}
 type
 type
@@ -596,8 +596,8 @@ type
     constructor Create(AOwner: TComponent); override;
     constructor Create(AOwner: TComponent); override;
     destructor Destroy; override;
     destructor Destroy; override;
     procedure DestroyHandles;
     procedure DestroyHandles;
-    procedure WriteToFiler(writer: TGLVirtualWriter);
-    procedure ReadFromFiler(reader: TGLVirtualReader);
+    procedure WriteToFiler(writer: TVirtualWriter);
+    procedure ReadFromFiler(reader: TVirtualReader);
     procedure SaveToStream(aStream: TStream); virtual;
     procedure SaveToStream(aStream: TStream); virtual;
     procedure LoadFromStream(aStream: TStream); virtual;
     procedure LoadFromStream(aStream: TStream); virtual;
     procedure AddMaterialsFromStream(aStream: TStream);
     procedure AddMaterialsFromStream(aStream: TStream);
@@ -2404,7 +2404,7 @@ begin
   Result := (FMaterials.Count > 0);
   Result := (FMaterials.Count > 0);
 end;
 end;
 
 
-procedure TGLMaterialLibrary.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLMaterialLibrary.WriteToFiler(writer: TVirtualWriter);
 var
 var
   i, j: Integer;
   i, j: Integer;
   libMat: TGLLibMaterial;
   libMat: TGLLibMaterial;
@@ -2574,7 +2574,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLMaterialLibrary.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLMaterialLibrary.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
   libMat: TGLLibMaterial;
   libMat: TGLLibMaterial;
@@ -2746,9 +2746,9 @@ end;
 
 
 procedure TGLMaterialLibrary.SaveToStream(aStream: TStream);
 procedure TGLMaterialLibrary.SaveToStream(aStream: TStream);
 var
 var
-  wr: TGLBinaryWriter;
+  wr: TBinaryWriter;
 begin
 begin
-  wr := TGLBinaryWriter.Create(aStream);
+  wr := TBinaryWriter.Create(aStream);
   try
   try
     Self.WriteToFiler(wr);
     Self.WriteToFiler(wr);
   finally
   finally
@@ -2758,9 +2758,9 @@ end;
 
 
 procedure TGLMaterialLibrary.LoadFromStream(aStream: TStream);
 procedure TGLMaterialLibrary.LoadFromStream(aStream: TStream);
 var
 var
-  rd: TGLBinaryReader;
+  rd: TBinaryReader;
 begin
 begin
-  rd := TGLBinaryReader.Create(aStream);
+  rd := TBinaryReader.Create(aStream);
   try
   try
     Self.ReadFromFiler(rd);
     Self.ReadFromFiler(rd);
   finally
   finally

+ 12 - 12
Source/GLS.MaterialEx.pas

@@ -51,7 +51,7 @@ uses
   GLS.ImageUtils,
   GLS.ImageUtils,
   GLS.Utils,
   GLS.Utils,
   GLS.XOpenGL,
   GLS.XOpenGL,
-  GLS.Logger;
+  Scena.Logger;
 
 
 type
 type
 
 
@@ -73,16 +73,16 @@ type
       IGLMaterialLibrarySupported)
       IGLMaterialLibrarySupported)
   private
   private
     FNameHashKey: Integer;
     FNameHashKey: Integer;
-    FUserList: TGLPersistentObjectList;
+    FUserList: TPersistentObjectList;
     FDefferedInit: Boolean;
     FDefferedInit: Boolean;
     FNotifying: Boolean;
     FNotifying: Boolean;
     FIsValid: Boolean;
     FIsValid: Boolean;
-    function GetUserList: TGLPersistentObjectList;
+    function GetUserList: TPersistentObjectList;
     function GetMaterialLibraryEx: TGLMaterialLibraryEx;
     function GetMaterialLibraryEx: TGLMaterialLibraryEx;
   protected
   protected
     procedure SetName(const AValue: TGLMaterialComponentName); override;
     procedure SetName(const AValue: TGLMaterialComponentName); override;
     procedure NotifyChange(Sender: TObject); virtual;
     procedure NotifyChange(Sender: TObject); virtual;
-    property UserList: TGLPersistentObjectList read GetUserList;
+    property UserList: TPersistentObjectList read GetUserList;
     procedure DoOnPrepare(Sender: TGLContext); virtual; abstract;
     procedure DoOnPrepare(Sender: TGLContext); virtual; abstract;
   public
   public
     destructor Destroy; override;
     destructor Destroy; override;
@@ -892,12 +892,12 @@ type
     FShaders: array[TGLShaderType] of TGLShaderEx;
     FShaders: array[TGLShaderType] of TGLShaderEx;
     FIsValid: Boolean;
     FIsValid: Boolean;
     FInfoLog: string;
     FInfoLog: string;
-    FUniforms: TGLPersistentObjectList;
+    FUniforms: TPersistentObjectList;
     FAutoFill: Boolean;
     FAutoFill: Boolean;
     function GetLibShaderName(AType: TGLShaderType): string;
     function GetLibShaderName(AType: TGLShaderType): string;
     procedure SetLibShaderName(AType: TGLShaderType; const AValue: string);
     procedure SetLibShaderName(AType: TGLShaderType; const AValue: string);
     function GetUniform(const AName: string): IShaderParameter;
     function GetUniform(const AName: string): IShaderParameter;
-    class procedure ReleaseUniforms(AList: TGLPersistentObjectList);
+    class procedure ReleaseUniforms(AList: TPersistentObjectList);
     property LibVertexShaderName: TGLMaterialComponentName index shtVertex
     property LibVertexShaderName: TGLMaterialComponentName index shtVertex
       read GetLibShaderName write SetLibShaderName;
       read GetLibShaderName write SetLibShaderName;
     property LibFragmentShaderName: TGLMaterialComponentName index shtFragment
     property LibFragmentShaderName: TGLMaterialComponentName index shtFragment
@@ -1324,11 +1324,11 @@ begin
     Result := 0;
     Result := 0;
 end;
 end;
 
 
-function TGLBaseMaterialCollectionItem.GetUserList: TGLPersistentObjectList;
+function TGLBaseMaterialCollectionItem.GetUserList: TPersistentObjectList;
 begin
 begin
   if FUserList = nil then
   if FUserList = nil then
   begin
   begin
-    FUserList := TGLPersistentObjectList.Create;
+    FUserList := TPersistentObjectList.Create;
     FNotifying := False;
     FNotifying := False;
   end;
   end;
   Result := FUserList;
   Result := FUserList;
@@ -4418,7 +4418,7 @@ begin
   FHandle := TGLProgramHandle.Create;
   FHandle := TGLProgramHandle.Create;
   FHandle.OnPrapare := DoOnPrepare;
   FHandle.OnPrapare := DoOnPrepare;
   FEnabled := False;
   FEnabled := False;
-  FUniforms := TGLPersistentObjectList.Create;
+  FUniforms := TPersistentObjectList.Create;
   FAutoFill := True;
   FAutoFill := True;
 end;
 end;
 
 
@@ -4447,7 +4447,7 @@ end;
 procedure TGLBaseShaderModel.DoOnPrepare(Sender: TGLContext);
 procedure TGLBaseShaderModel.DoOnPrepare(Sender: TGLContext);
 var
 var
   T: TGLShaderType;
   T: TGLShaderType;
-  LUniforms: TGLPersistentObjectList;
+  LUniforms: TPersistentObjectList;
   LUniform, LUniform2: TGLShaderUniform;
   LUniform, LUniform2: TGLShaderUniform;
   ID: Cardinal;
   ID: Cardinal;
   I, J, C: Integer;
   I, J, C: Integer;
@@ -4537,7 +4537,7 @@ begin
               end;
               end;
 
 
               // Get uniforms
               // Get uniforms
-              LUniforms := TGLPersistentObjectList.Create;
+              LUniforms := TPersistentObjectList.Create;
 
 
               gl.GetProgramiv(ID, GL_ACTIVE_UNIFORMS, @C);
               gl.GetProgramiv(ID, GL_ACTIVE_UNIFORMS, @C);
               for I := 0 to C - 1 do
               for I := 0 to C - 1 do
@@ -4826,7 +4826,7 @@ begin
 end;
 end;
 
 
 class procedure TGLBaseShaderModel.ReleaseUniforms(
 class procedure TGLBaseShaderModel.ReleaseUniforms(
-  AList: TGLPersistentObjectList);
+  AList: TPersistentObjectList);
 var
 var
   I: Integer;
   I: Integer;
 begin
 begin

+ 1 - 1
Source/GLS.MaterialMultiProxy.pas

@@ -48,7 +48,7 @@ type
   TGLMaterialMultiProxy = class;
   TGLMaterialMultiProxy = class;
 
 
   {MasterObject description for a MultiProxy object. }
   {MasterObject description for a MultiProxy object. }
-  TGLMaterialMultiProxyMaster = class(TGLInterfacedCollectionItem, IGLMaterialLibrarySupported)
+  TGLMaterialMultiProxyMaster = class(TInterfacedCollectionItem, IGLMaterialLibrarySupported)
   private
   private
     FMasterObject: TGLBaseSceneObject;
     FMasterObject: TGLBaseSceneObject;
     FMasterLibMaterial: TGLLibMaterial;
     FMasterLibMaterial: TGLLibMaterial;

+ 3 - 3
Source/GLS.MeshUtils.pas

@@ -144,7 +144,7 @@ procedure WeldVertices(vertices: TGLAffineVectorList; indicesMap: TGLIntegerList
   the agglomerated list of the triangles that couldn't be stripified. 
   the agglomerated list of the triangles that couldn't be stripified. 
 *)
 *)
 function StripifyMesh(indices: TGLIntegerList; maxVertexIndex: Integer;
 function StripifyMesh(indices: TGLIntegerList; maxVertexIndex: Integer;
-  agglomerateLoneTriangles: Boolean = False): TGLPersistentObjectList;
+  agglomerateLoneTriangles: Boolean = False): TPersistentObjectList;
 (* 
 (* 
   Increases indices coherency wrt vertex caches.
   Increases indices coherency wrt vertex caches.
   The indices parameters is understood as vertex indices of a triangles set,
   The indices parameters is understood as vertex indices of a triangles set,
@@ -1033,7 +1033,7 @@ begin
 end;
 end;
 
 
 function StripifyMesh(indices: TGLIntegerList; maxVertexIndex: Integer;
 function StripifyMesh(indices: TGLIntegerList; maxVertexIndex: Integer;
-  agglomerateLoneTriangles: Boolean = False): TGLPersistentObjectList;
+  agglomerateLoneTriangles: Boolean = False): TPersistentObjectList;
 var
 var
   accountedTriangles: array of ByteBool;
   accountedTriangles: array of ByteBool;
   vertexTris: array of TGLIntegerList;
   vertexTris: array of TGLIntegerList;
@@ -1105,7 +1105,7 @@ var
   loneTriangles: TGLIntegerList;
   loneTriangles: TGLIntegerList;
 begin
 begin
   Assert((indices.Count mod 3) = 0, 'indices count is not a multiple of 3!');
   Assert((indices.Count mod 3) = 0, 'indices count is not a multiple of 3!');
-  Result := TGLPersistentObjectList.Create;
+  Result := TPersistentObjectList.Create;
   // direct access and cache vars
   // direct access and cache vars
   indicesList := indices.list;
   indicesList := indices.list;
   indicesCount := indices.Count;
   indicesCount := indices.Count;

+ 1 - 1
Source/GLS.MultiPolygon.pas

@@ -93,7 +93,7 @@ type
     procedure GetExtents(var min, max: TAffineVector);
     procedure GetExtents(var min, max: TAffineVector);
   end;
   end;
 
 
-  TGLPolygonList = class(TGLPersistentObjectList)
+  TGLPolygonList = class(TPersistentObjectList)
   private
   private
     FAktList: TGLAffineVectorList;
     FAktList: TGLAffineVectorList;
     function GetList(I: Integer): TGLAffineVectorList;
     function GetList(I: Integer): TGLAffineVectorList;

+ 1 - 1
Source/GLS.OpenGLAdapter.pas

@@ -17,7 +17,7 @@ uses
 
 
   Scena.OpenGLTokens,
   Scena.OpenGLTokens,
   Scena.Strings,
   Scena.Strings,
-  GLS.Logger,
+  Scena.Logger,
   Scena.VectorGeometry,
   Scena.VectorGeometry,
   Scena.VectorTypes;
   Scena.VectorTypes;
 
 

+ 8 - 8
Source/GLS.ParametricSurfaces.pas

@@ -85,8 +85,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure Prepare; override;
     procedure Prepare; override;
     procedure Clear; override;
     procedure Clear; override;
@@ -154,8 +154,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure Prepare; override;
     procedure Prepare; override;
     property CountU: Integer read FCountU write FCountU;
     property CountU: Integer read FCountU write FCountU;
@@ -198,7 +198,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TMOParametricSurface.WriteToFiler(writer: TGLVirtualWriter);
+procedure TMOParametricSurface.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -220,7 +220,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TMOParametricSurface.ReadFromFiler(reader: TGLVirtualReader);
+procedure TMOParametricSurface.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -460,7 +460,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TFGBezierSurface.WriteToFiler(writer: TGLVirtualWriter);
+procedure TFGBezierSurface.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -478,7 +478,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TFGBezierSurface.ReadFromFiler(reader: TGLVirtualReader);
+procedure TFGBezierSurface.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 12 - 12
Source/GLS.ParticleFX.pas

@@ -57,7 +57,7 @@ type
      The class implements properties for position, velocity and time, whatever
      The class implements properties for position, velocity and time, whatever
      you need in excess of that will have to be placed in subclasses (this
      you need in excess of that will have to be placed in subclasses (this
      class should remain as compact as possible). *)
      class should remain as compact as possible). *)
-  TGLParticle = class(TGLPersistentObject)
+  TGLParticle = class(TPersistentObject)
   private
   private
     FID, FTag: Integer;
     FID, FTag: Integer;
     FManager: TGLParticleFXManager; // NOT persistent
     FManager: TGLParticleFXManager; // NOT persistent
@@ -73,8 +73,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Manager: TGLParticleFXManager read FManager write FManager;
     property Manager: TGLParticleFXManager read FManager write FManager;
     // Particle's ID, given at birth. ID is a value unique per manager.
     // Particle's ID, given at birth. ID is a value unique per manager.
     property ID: Integer read FID;
     property ID: Integer read FID;
@@ -105,10 +105,10 @@ type
   (* List of particles.
   (* List of particles.
    This list is managed with particles and performance in mind, make sure to
    This list is managed with particles and performance in mind, make sure to
    check methods doc. *)
    check methods doc. *)
-  TGLParticleList = class(TGLPersistentObject)
+  TGLParticleList = class(TPersistentObject)
   private
   private
     FOwner: TGLParticleFXManager; // NOT persistent
     FOwner: TGLParticleFXManager; // NOT persistent
-    FItemList: TGLPersistentObjectList;
+    FItemList: TPersistentObjectList;
     FDirectList: PGLParticleArray; // NOT persistent
     FDirectList: PGLParticleArray; // NOT persistent
   protected
   protected
     function GetItems(index: Integer): TGLParticle;
     function GetItems(index: Integer): TGLParticle;
@@ -117,8 +117,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Refers owner manager
     // Refers owner manager
     property Owner: TGLParticleFXManager read FOwner write FOwner;
     property Owner: TGLParticleFXManager read FOwner write FOwner;
     property Items[index: Integer]: TGLParticle read GetItems write SetItems; default;
     property Items[index: Integer]: TGLParticle read GetItems write SetItems; default;
@@ -816,7 +816,7 @@ begin
     FVelocity.V[Index] := aValue;
     FVelocity.V[Index] := aValue;
 end;
 end;
 
 
-procedure TGLParticle.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLParticle.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -829,7 +829,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLParticle.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLParticle.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: integer;
   archiveVersion: integer;
 begin
 begin
@@ -854,7 +854,7 @@ end;
 constructor TGLParticleList.Create;
 constructor TGLParticleList.Create;
 begin
 begin
   inherited Create;
   inherited Create;
-  FItemList := TGLPersistentObjectList.Create;
+  FItemList := TPersistentObjectList.Create;
   FitemList.GrowthDelta := 64;
   FitemList.GrowthDelta := 64;
   FDirectList := nil;
   FDirectList := nil;
 end;
 end;
@@ -865,7 +865,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TGLParticleList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLParticleList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -875,7 +875,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLParticleList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLParticleList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: integer;
   archiveVersion: integer;
 begin
 begin

文件差异内容过多而无法显示
+ 141 - 140
Source/GLS.PersistentClasses.pas


+ 1 - 1
Source/GLS.PipelineTransformation.pas

@@ -14,7 +14,7 @@ uses
 
 
   Scena.VectorTypes,
   Scena.VectorTypes,
   Scena.VectorGeometry,
   Scena.VectorGeometry,
-  GLS.Logger;
+  Scena.Logger;
 
 
 const
 const
   MAX_MATRIX_STACK_DEPTH = 128;
   MAX_MATRIX_STACK_DEPTH = 128;

+ 14 - 14
Source/GLS.Ragdoll.pas

@@ -24,7 +24,7 @@ type
   TGLRagdolJoint = class
   TGLRagdolJoint = class
   end;
   end;
 
 
-  TGLRagdolBoneList = class(TGLPersistentObjectList)
+  TGLRagdolBoneList = class(TPersistentObjectList)
   private
   private
     FRagdoll: TGLRagdoll;
     FRagdoll: TGLRagdoll;
   protected
   protected
@@ -32,8 +32,8 @@ type
   public
   public
     constructor Create(Ragdoll: TGLRagdoll); reintroduce;
     constructor Create(Ragdoll: TGLRagdoll); reintroduce;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Ragdoll: TGLRagdoll read FRagdoll;
     property Ragdoll: TGLRagdoll read FRagdoll;
     property Items[Index: Integer]: TGLRagdolBone read GetRagdollBone; default;
     property Items[Index: Integer]: TGLRagdolBone read GetRagdollBone; default;
   end;
   end;
@@ -74,8 +74,8 @@ type
     constructor CreateOwned(aOwner: TGLRagdolBoneList);
     constructor CreateOwned(aOwner: TGLRagdolBoneList);
     constructor Create(Ragdoll: TGLRagdoll);
     constructor Create(Ragdoll: TGLRagdoll);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Owner: TGLRagdolBoneList read FOwner;
     property Owner: TGLRagdolBoneList read FOwner;
     property Name: String read FName write FName;
     property Name: String read FName write FName;
     property BoneID: Integer read FBoneID write FBoneID;
     property BoneID: Integer read FBoneID write FBoneID;
@@ -88,7 +88,7 @@ type
     property Items[Index: Integer]: TGLRagdolBone read GetRagdollBone; default;
     property Items[Index: Integer]: TGLRagdolBone read GetRagdollBone; default;
   end;
   end;
 
 
-  TGLRagdoll = class(TGLPersistentObject)
+  TGLRagdoll = class(TPersistentObject)
   private
   private
     FOwner: TGLBaseMesh;
     FOwner: TGLBaseMesh;
     FRootBone: TGLRagdolBone;
     FRootBone: TGLRagdolBone;
@@ -97,8 +97,8 @@ type
   public
   public
     constructor Create(aOwner: TGLBaseMesh); reintroduce;
     constructor Create(aOwner: TGLBaseMesh); reintroduce;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Must be set before build the ragdoll
     // Must be set before build the ragdoll
     procedure SetRootBone(RootBone: TGLRagdolBone);
     procedure SetRootBone(RootBone: TGLRagdolBone);
     // Create the bounding box and setup the ragdoll do be started later
     // Create the bounding box and setup the ragdoll do be started later
@@ -140,13 +140,13 @@ begin
   Result := TGLRagdolBone(List^[Index]);
   Result := TGLRagdolBone(List^[Index]);
 end;
 end;
 
 
-procedure TGLRagdolBoneList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLRagdolBoneList.ReadFromFiler(reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
   // Not implemented
   // Not implemented
 end;
 end;
 
 
-procedure TGLRagdolBoneList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLRagdolBoneList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   // Not implemented
   // Not implemented
@@ -280,7 +280,7 @@ begin
   Result := TGLRagdolBone(List^[Index]);
   Result := TGLRagdolBone(List^[Index]);
 end;
 end;
 
 
-procedure TGLRagdolBone.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLRagdolBone.ReadFromFiler(reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 
 
@@ -306,7 +306,7 @@ begin
     Items[i].UpdateChild;
     Items[i].UpdateChild;
 end;
 end;
 
 
-procedure TGLRagdolBone.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLRagdolBone.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
 end;
 end;
@@ -361,7 +361,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TGLRagdoll.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLRagdoll.ReadFromFiler(reader: TVirtualReader);
 begin
 begin
   inherited;
   inherited;
 end;
 end;
@@ -405,7 +405,7 @@ begin
   FOwner.Skeleton.MorphMesh(True);
   FOwner.Skeleton.MorphMesh(True);
 end;
 end;
 
 
-procedure TGLRagdoll.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLRagdoll.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
 
 

+ 2 - 2
Source/GLS.RenderContextInfo.pas

@@ -87,8 +87,8 @@ type
     IgnoreBlendingRequests: Boolean;
     IgnoreBlendingRequests: Boolean;
     IgnoreDepthRequests: Boolean;
     IgnoreDepthRequests: Boolean;
     Amalgamating: Boolean;
     Amalgamating: Boolean;
-    Lights: TGLPersistentObjectList;
-    AfterRenderEffects: TGLPersistentObjectList;
+    Lights: TPersistentObjectList;
+    AfterRenderEffects: TPersistentObjectList;
     CurrentMaterialLevel: TGLMaterialLevel;
     CurrentMaterialLevel: TGLMaterialLevel;
     PrimitiveMask: TGLMeshPrimitives;
     PrimitiveMask: TGLMeshPrimitives;
     OrderCounter: Integer;
     OrderCounter: Integer;

+ 13 - 13
Source/GLS.Scene.pas

@@ -44,7 +44,7 @@ uses
   Scena.VectorTypes,
   Scena.VectorTypes,
   GLS.ApplicationFileIO,
   GLS.ApplicationFileIO,
   GLS.Utils,
   GLS.Utils,
-  GLS.Logger;
+  Scena.Logger;
 
 
 type
 type
   //Defines which features are taken from the master object.
   //Defines which features are taken from the master object.
@@ -169,7 +169,7 @@ type
     FBoundingBoxPersonalUnscaled: THmgBoundingBox;
     FBoundingBoxPersonalUnscaled: THmgBoundingBox;
     FBoundingBoxOfChildren: THmgBoundingBox;
     FBoundingBoxOfChildren: THmgBoundingBox;
     FBoundingBoxIncludingChildren: THmgBoundingBox;
     FBoundingBoxIncludingChildren: THmgBoundingBox;
-    FChildren: TGLPersistentObjectList; // created on 1st use
+    FChildren: TPersistentObjectList; // created on 1st use
     FVisible: Boolean;
     FVisible: Boolean;
     FUpdateCount: Integer;
     FUpdateCount: Integer;
     FShowAxes: Boolean;
     FShowAxes: Boolean;
@@ -186,7 +186,7 @@ type
     FTagObject: TObject;
     FTagObject: TObject;
     FTagFloat: Single;
     FTagFloat: Single;
 
 
-    objList: TGLPersistentObjectList;
+    objList: TPersistentObjectList;
     distList: TGLSingleList;
     distList: TGLSingleList;
     ///  FOriginalFiler: TFiler;   //used to allow persistent events in behaviours & effects
     ///  FOriginalFiler: TFiler;   //used to allow persistent events in behaviours & effects
     (* If somebody could look at DefineProperties, ReadBehaviours, ReadEffects
     (* If somebody could look at DefineProperties, ReadBehaviours, ReadEffects
@@ -1136,7 +1136,7 @@ type
     FUpdateCount: Integer;
     FUpdateCount: Integer;
     FObjects: TGLSceneRootObject;
     FObjects: TGLSceneRootObject;
     FBaseContext: TGLContext; //reference, not owned!
     FBaseContext: TGLContext; //reference, not owned!
-    FLights, FBuffers: TGLPersistentObjectList;
+    FLights, FBuffers: TPersistentObjectList;
     FCurrentGLCamera: TGLCamera;
     FCurrentGLCamera: TGLCamera;
     FCurrentBuffer: TGLSceneBuffer;
     FCurrentBuffer: TGLSceneBuffer;
     FObjectsSorting: TGLObjectsSorting;
     FObjectsSorting: TGLObjectsSorting;
@@ -1192,7 +1192,7 @@ type
     // Load the scene from a text files. See LoadFromFile for details.
     // Load the scene from a text files. See LoadFromFile for details.
     procedure LoadFromTextFile(const fileName: string);
     procedure LoadFromTextFile(const fileName: string);
     property CurrentGLCamera: TGLCamera read FCurrentGLCamera;
     property CurrentGLCamera: TGLCamera read FCurrentGLCamera;
-    property Lights: TGLPersistentObjectList read FLights;
+    property Lights: TPersistentObjectList read FLights;
     property Objects: TGLSceneRootObject read FObjects;
     property Objects: TGLSceneRootObject read FObjects;
     property CurrentBuffer: TGLSceneBuffer read FCurrentBuffer;
     property CurrentBuffer: TGLSceneBuffer read FCurrentBuffer;
     (* List of objects that request to be initialized when rendering context is active.
     (* List of objects that request to be initialized when rendering context is active.
@@ -1271,7 +1271,7 @@ type
     // Internal state
     // Internal state
     FRendering: Boolean;
     FRendering: Boolean;
     FRenderingContext: TGLContext;
     FRenderingContext: TGLContext;
-    FAfterRenderEffects: TGLPersistentObjectList;
+    FAfterRenderEffects: TPersistentObjectList;
     FViewMatrixStack: array of TGLMatrix;
     FViewMatrixStack: array of TGLMatrix;
     FProjectionMatrixStack: array of TGLMatrix;
     FProjectionMatrixStack: array of TGLMatrix;
     FBaseProjectionMatrix: TGLMatrix;
     FBaseProjectionMatrix: TGLMatrix;
@@ -1884,14 +1884,14 @@ begin
   FPickable := True;
   FPickable := True;
   FObjectsSorting := osInherited;
   FObjectsSorting := osInherited;
   FVisibilityCulling := vcInherited;
   FVisibilityCulling := vcInherited;
-  FChildren := TGLPersistentObjectList.Create;
+  FChildren := TPersistentObjectList.Create;
 
 
   fBBChanges := [oBBcChild, oBBcStructure];
   fBBChanges := [oBBcChild, oBBcStructure];
   FBoundingBoxPersonalUnscaled := NullBoundingBox;
   FBoundingBoxPersonalUnscaled := NullBoundingBox;
   FBoundingBoxOfChildren := NullBoundingBox;
   FBoundingBoxOfChildren := NullBoundingBox;
   FBoundingBoxIncludingChildren := NullBoundingBox;
   FBoundingBoxIncludingChildren := NullBoundingBox;
   distList := TGLSingleList.Create;
   distList := TGLSingleList.Create;
-  objList := TGLPersistentObjectList.Create;
+  objList := TPersistentObjectList.Create;
 end;
 end;
 
 
 constructor TGLBaseSceneObject.CreateAsChild(aParentOwner: TGLBaseSceneObject);
 constructor TGLBaseSceneObject.CreateAsChild(aParentOwner: TGLBaseSceneObject);
@@ -3246,7 +3246,7 @@ end;
 procedure TGLBaseSceneObject.RecTransformationChanged;
 procedure TGLBaseSceneObject.RecTransformationChanged;
 var
 var
   i: Integer;
   i: Integer;
-  list: PGLPointerObjectList;
+  list: PPointerObjectList;
   matSet: TGLObjectChanges;
   matSet: TGLObjectChanges;
 begin
 begin
   matSet := [ocAbsoluteMatrix, ocInvAbsoluteMatrix];
   matSet := [ocAbsoluteMatrix, ocInvAbsoluteMatrix];
@@ -3739,7 +3739,7 @@ procedure TGLBaseSceneObject.RenderChildren(firstChildIndex, lastChildIndex:
 var
 var
   i: Integer;
   i: Integer;
 
 
-  plist: PGLPointerObjectList;
+  plist: PPointerObjectList;
   obj: TGLBaseSceneObject;
   obj: TGLBaseSceneObject;
   oldSorting: TGLObjectsSorting;
   oldSorting: TGLObjectsSorting;
   oldCulling: TGLVisibilityCulling;
   oldCulling: TGLVisibilityCulling;
@@ -5583,7 +5583,7 @@ begin
   FCurrentBuffer := nil;
   FCurrentBuffer := nil;
   FObjects := TGLSceneRootObject.Create(Self);
   FObjects := TGLSceneRootObject.Create(Self);
   FObjects.Name := 'ObjectRoot';
   FObjects.Name := 'ObjectRoot';
-  FLights := TGLPersistentObjectList.Create;
+  FLights := TPersistentObjectList.Create;
   FObjectsSorting := osRenderBlendedLast;
   FObjectsSorting := osRenderBlendedLast;
   FVisibilityCulling := vcNone;
   FVisibilityCulling := vcNone;
   // actual maximum number of lights is stored in TGLSceneViewer
   // actual maximum number of lights is stored in TGLSceneViewer
@@ -5663,7 +5663,7 @@ end;
 procedure TGLScene.AddBuffer(aBuffer: TGLSceneBuffer);
 procedure TGLScene.AddBuffer(aBuffer: TGLSceneBuffer);
 begin
 begin
   if not Assigned(FBuffers) then
   if not Assigned(FBuffers) then
-    FBuffers := TGLPersistentObjectList.Create;
+    FBuffers := TPersistentObjectList.Create;
   if FBuffers.IndexOf(aBuffer) < 0 then
   if FBuffers.IndexOf(aBuffer) < 0 then
   begin
   begin
     FBuffers.Add(aBuffer);
     FBuffers.Add(aBuffer);
@@ -6197,7 +6197,7 @@ begin
   FShadeModel := smDefault;
   FShadeModel := smDefault;
   FFogEnable := False;
   FFogEnable := False;
   FLayer := clMainPlane;
   FLayer := clMainPlane;
-  FAfterRenderEffects := TGLPersistentObjectList.Create;
+  FAfterRenderEffects := TPersistentObjectList.Create;
   FContextOptions := [roDoubleBuffer, roRenderToWindow, roDebugContext];
   FContextOptions := [roDoubleBuffer, roRenderToWindow, roDebugContext];
   ResetPerformanceMonitor;
   ResetPerformanceMonitor;
 end;
 end;

+ 1 - 1
Source/GLS.Selection.pas

@@ -38,7 +38,7 @@ type
 
 
   (* List class for object picking.
   (* List class for object picking.
      This list is used to store the results of a PickObjects call. *)
      This list is used to store the results of a PickObjects call. *)
-  TGLPickList = class(TGLPersistentObjectList)
+  TGLPickList = class(TPersistentObjectList)
   private
   private
     function GetFar(aValue: Integer): Single;
     function GetFar(aValue: Integer): Single;
     function GetHit(aValue: Integer): TObject;
     function GetHit(aValue: Integer): TObject;

+ 3 - 3
Source/GLS.ShadowVolume.pas

@@ -34,7 +34,7 @@ uses
   GLS.VectorLists,
   GLS.VectorLists,
   GLS.State,
   GLS.State,
   Scena.VectorTypes,
   Scena.VectorTypes,
-  GLS.Logger;
+  Scena.Logger;
 
 
 
 
 type
 type
@@ -119,7 +119,7 @@ type
   // Specifies an individual shadow casting light.
   // Specifies an individual shadow casting light.
   TGLShadowVolumeLight = class(TGLShadowVolumeCaster)
   TGLShadowVolumeLight = class(TGLShadowVolumeCaster)
   private
   private
-    FSilhouettes: TGLPersistentObjectList;
+    FSilhouettes: TPersistentObjectList;
   protected
   protected
     function GetLightSource: TGLLightSource;
     function GetLightSource: TGLLightSource;
     procedure SetLightSource(const ls: TGLLightSource);
     procedure SetLightSource(const ls: TGLLightSource);
@@ -326,7 +326,7 @@ end;
 constructor TGLShadowVolumeLight.Create(ACollection: TCollection);
 constructor TGLShadowVolumeLight.Create(ACollection: TCollection);
 begin
 begin
   inherited Create(ACollection);
   inherited Create(ACollection);
-  FSilhouettes := TGLPersistentObjectList.Create;
+  FSilhouettes := TPersistentObjectList.Create;
 end;
 end;
 
 
 destructor TGLShadowVolumeLight.Destroy;
 destructor TGLShadowVolumeLight.Destroy;

+ 2 - 2
Source/GLS.SmartObjects.pas

@@ -34,7 +34,7 @@ uses
   GLS.Texture,
   GLS.Texture,
   GLS.Material,
   GLS.Material,
   GLS.Mesh,
   GLS.Mesh,
-  GLS.Logger,
+  Scena.Logger,
   GLS.Octree,
   GLS.Octree,
   GLS.GeometryBB,
   GLS.GeometryBB,
   GLS.ApplicationFileIO,
   GLS.ApplicationFileIO,
@@ -62,7 +62,7 @@ type
   TGLCyborgThinks = class(TCollection);
   TGLCyborgThinks = class(TCollection);
 
 
   // A list of thinking periods for TGLCyborgThinkingMode
   // A list of thinking periods for TGLCyborgThinkingMode
-  TGLCyborgThinksList = class(TGLPersistentObjectList);
+  TGLCyborgThinksList = class(TPersistentObjectList);
 
 
 const
 const
   cDefaultCyborgOptions = [coCollide];
   cDefaultCyborgOptions = [coCollide];

+ 3 - 3
Source/GLS.SpacePartition.pas

@@ -76,7 +76,7 @@ type
   end;
   end;
 
 
   // Used to store the actual objects in the SpacePartition
   // Used to store the actual objects in the SpacePartition
-  TGLSpacePartitionLeaf = class(TGLPersistentObject)
+  TGLSpacePartitionLeaf = class(TPersistentObject)
   private
   private
     FSpacePartition: TGLBaseSpacePartition;
     FSpacePartition: TGLBaseSpacePartition;
     procedure SetSpacePartition(const Value: TGLBaseSpacePartition);
     procedure SetSpacePartition(const Value: TGLBaseSpacePartition);
@@ -109,7 +109,7 @@ type
   end;
   end;
 
 
   // List for storing space partition leaves
   // List for storing space partition leaves
-  TGLSpacePartitionLeafList = class(TGLPersistentObjectList)
+  TGLSpacePartitionLeafList = class(TPersistentObjectList)
   private
   private
     function GetItems(I: Integer): TGLSpacePartitionLeaf;
     function GetItems(I: Integer): TGLSpacePartitionLeaf;
     procedure SetItems(I: Integer; const Value: TGLSpacePartitionLeaf);
     procedure SetItems(I: Integer; const Value: TGLSpacePartitionLeaf);
@@ -132,7 +132,7 @@ type
   TGLCullingMode = (CmFineCulling, CmGrossCulling);
   TGLCullingMode = (CmFineCulling, CmGrossCulling);
 
 
   // Basic space partition, does not implement any actual space partitioning
   // Basic space partition, does not implement any actual space partitioning
-  TGLBaseSpacePartition = class(TGLPersistentObject)
+  TGLBaseSpacePartition = class(TPersistentObject)
   private
   private
     FCullingMode: TGLCullingMode;
     FCullingMode: TGLCullingMode;
     // Query space for Leaves that intersect a cone, result is returned through QueryResult
     // Query space for Leaves that intersect a cone, result is returned through QueryResult

+ 12 - 12
Source/GLS.TilePlane.pas

@@ -27,7 +27,7 @@ uses
 
 
 type
 type
   // Stores row information for a tiled area.
   // Stores row information for a tiled area.
-  TGLTiledAreaRow = class(TGLPersistentObject)
+  TGLTiledAreaRow = class(TPersistentObject)
   private
   private
     FColMin, FColMax: Integer;
     FColMin, FColMax: Integer;
     FData: TGLIntegerList;
     FData: TGLIntegerList;
@@ -39,8 +39,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Cell[col: Integer]: Integer read GetCell write SetCell; default;
     property Cell[col: Integer]: Integer read GetCell write SetCell; default;
     property ColMin: Integer read FColMin write SetColMin;
     property ColMin: Integer read FColMin write SetColMin;
     property ColMax: Integer read FColMax write SetColMax;
     property ColMax: Integer read FColMax write SetColMax;
@@ -53,10 +53,10 @@ type
   (* Stores tile information in a tiled area.
   (* Stores tile information in a tiled area.
     Each tile stores an integer value with zero the default value,
     Each tile stores an integer value with zero the default value,
     assumed as "empty". *)
     assumed as "empty". *)
-  TGLTiledArea = class(TGLPersistentObject)
+  TGLTiledArea = class(TPersistentObject)
   private
   private
     FRowMin, FRowMax: Integer;
     FRowMin, FRowMax: Integer;
-    FRows: TGLPersistentObjectList;
+    FRows: TPersistentObjectList;
   protected
   protected
     procedure SetRowMin(const val: Integer);
     procedure SetRowMin(const val: Integer);
     procedure SetRowMax(const val: Integer);
     procedure SetRowMax(const val: Integer);
@@ -66,8 +66,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Tile[col, row: Integer]: Integer read GetTile write SetTile; default;
     property Tile[col, row: Integer]: Integer read GetTile write SetTile; default;
     property row[index: Integer]: TGLTiledAreaRow read GetRow;
     property row[index: Integer]: TGLTiledAreaRow read GetRow;
     property RowMin: Integer read FRowMin write SetRowMin;
     property RowMin: Integer read FRowMin write SetRowMin;
@@ -139,7 +139,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLTiledAreaRow.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLTiledAreaRow.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -150,7 +150,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLTiledAreaRow.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLTiledAreaRow.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -284,7 +284,7 @@ end;
 constructor TGLTiledArea.Create;
 constructor TGLTiledArea.Create;
 begin
 begin
   inherited;
   inherited;
-  FRows := TGLPersistentObjectList.Create;
+  FRows := TPersistentObjectList.Create;
   FRowMax := -1;
   FRowMax := -1;
 end;
 end;
 
 
@@ -294,7 +294,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLTiledArea.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLTiledArea.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -305,7 +305,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLTiledArea.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLTiledArea.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 83 - 83
Source/GLS.VectorFileObjects.pas

@@ -32,7 +32,7 @@ uses
   GLS.Texture,
   GLS.Texture,
   GLS.Material,
   GLS.Material,
   GLS.Mesh,
   GLS.Mesh,
-  GLS.Logger,
+  Scena.Logger,
   GLS.Octree,
   GLS.Octree,
   GLS.GeometryBB,
   GLS.GeometryBB,
   GLS.ApplicationFileIO,
   GLS.ApplicationFileIO,
@@ -56,7 +56,7 @@ type
     A base class for mesh objects. The class introduces a set of vertices and
     A base class for mesh objects. The class introduces a set of vertices and
     normals for the object but does no rendering of its own
     normals for the object but does no rendering of its own
   *)
   *)
-  TGLBaseMeshObject = class(TGLPersistentObject)
+  TGLBaseMeshObject = class(TPersistentObject)
   private
   private
     FName: string;
     FName: string;
     FVertices: TGLAffineVectorList;
     FVertices: TGLAffineVectorList;
@@ -70,8 +70,8 @@ type
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Clears all mesh object data, submeshes, facegroups, etc.
     // Clears all mesh object data, submeshes, facegroups, etc.
     procedure Clear; virtual;
     procedure Clear; virtual;
     // Translates all the vertices by the given delta.
     // Translates all the vertices by the given delta.
@@ -118,7 +118,7 @@ type
     so that the local matrices will be recalculated (the call to Flush does
     so that the local matrices will be recalculated (the call to Flush does
     not recalculate the matrices, but marks the current ones as dirty)
     not recalculate the matrices, but marks the current ones as dirty)
   *)
   *)
-  TGLSkeletonFrame = class(TGLPersistentObject)
+  TGLSkeletonFrame = class(TPersistentObject)
   private
   private
     FOwner: TGLSkeletonFrameList;
     FOwner: TGLSkeletonFrameList;
     FName: string;
     FName: string;
@@ -135,8 +135,8 @@ type
     constructor CreateOwned(aOwner: TGLSkeletonFrameList);
     constructor CreateOwned(aOwner: TGLSkeletonFrameList);
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Owner: TGLSkeletonFrameList read FOwner;
     property Owner: TGLSkeletonFrameList read FOwner;
     property Name: string read FName write FName;
     property Name: string read FName write FName;
     // Position values for the joints.
     // Position values for the joints.
@@ -163,7 +163,7 @@ type
   end;
   end;
 
 
   // A list of TGLSkeletonFrame objects
   // A list of TGLSkeletonFrame objects
-  TGLSkeletonFrameList = class(TGLPersistentObjectList)
+  TGLSkeletonFrameList = class(TPersistentObjectList)
   private
   private
     FOwner: TPersistent;
     FOwner: TPersistent;
   protected
   protected
@@ -171,7 +171,7 @@ type
   public
   public
     constructor CreateOwned(aOwner: TPersistent);
     constructor CreateOwned(aOwner: TPersistent);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // As the name states; Convert Quaternions to Rotations or vice-versa.
     // As the name states; Convert Quaternions to Rotations or vice-versa.
     procedure ConvertQuaternionsToRotations(KeepQuaternions: Boolean = True; SetTransformMode: Boolean = True);
     procedure ConvertQuaternionsToRotations(KeepQuaternions: Boolean = True; SetTransformMode: Boolean = True);
     procedure ConvertRotationsToQuaternions(KeepRotations: Boolean = True; SetTransformMode: Boolean = True);
     procedure ConvertRotationsToQuaternions(KeepRotations: Boolean = True; SetTransformMode: Boolean = True);
@@ -184,7 +184,7 @@ type
   TGLSkeletonBone = class;
   TGLSkeletonBone = class;
 
 
   // A list of skeleton bones
   // A list of skeleton bones
-  TGLSkeletonBoneList = class(TGLPersistentObjectList)
+  TGLSkeletonBoneList = class(TPersistentObjectList)
   private
   private
     FSkeleton: TGLSkeleton; // not persistent
     FSkeleton: TGLSkeleton; // not persistent
   protected
   protected
@@ -195,8 +195,8 @@ type
     constructor CreateOwned(aOwner: TGLSkeleton);
     constructor CreateOwned(aOwner: TGLSkeleton);
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Skeleton: TGLSkeleton read FSkeleton;
     property Skeleton: TGLSkeleton read FSkeleton;
     property Items[Index: Integer]: TGLSkeletonBone read GetSkeletonBone; default;
     property Items[Index: Integer]: TGLSkeletonBone read GetSkeletonBone; default;
     // Returns a bone by its BoneID, nil if not found.
     // Returns a bone by its BoneID, nil if not found.
@@ -213,8 +213,8 @@ type
   // This list store skeleton root bones exclusively
   // This list store skeleton root bones exclusively
   TGLSkeletonRootBoneList = class(TGLSkeletonBoneList)
   TGLSkeletonRootBoneList = class(TGLSkeletonBoneList)
   public
   public
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Render skeleton wireframe
     // Render skeleton wireframe
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     property GlobalMatrix: TGLMatrix read FGlobalMatrix write FGlobalMatrix;
     property GlobalMatrix: TGLMatrix read FGlobalMatrix write FGlobalMatrix;
@@ -239,8 +239,8 @@ type
     constructor CreateOwned(aOwner: TGLSkeletonBoneList);
     constructor CreateOwned(aOwner: TGLSkeletonBoneList);
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     // Render skeleton wireframe
     // Render skeleton wireframe
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     property Owner: TGLSkeletonBoneList read FOwner;
     property Owner: TGLSkeletonBoneList read FOwner;
@@ -278,7 +278,7 @@ type
     to create skeleton driven Verlet Constraints, ODE Geoms, etc.
     to create skeleton driven Verlet Constraints, ODE Geoms, etc.
     Overriden classes should be named as TSCxxxxx.
     Overriden classes should be named as TSCxxxxx.
   *)
   *)
-  TGLSkeletonCollider = class(TGLPersistentObject)
+  TGLSkeletonCollider = class(TPersistentObject)
   private
   private
     FOwner: TGLSkeletonColliderList;
     FOwner: TGLSkeletonColliderList;
     FBone: TGLSkeletonBone;
     FBone: TGLSkeletonBone;
@@ -291,8 +291,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     constructor CreateOwned(AOwner: TGLSkeletonColliderList);
     constructor CreateOwned(AOwner: TGLSkeletonColliderList);
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     (* This method is used to align the colliders and their
     (* This method is used to align the colliders and their
       derived objects to their associated skeleton bone.
       derived objects to their associated skeleton bone.
       Override to set up descendant class alignment properties. *)
       Override to set up descendant class alignment properties. *)
@@ -309,7 +309,7 @@ type
   end;
   end;
 
 
   // List class for storing TGLSkeletonCollider objects
   // List class for storing TGLSkeletonCollider objects
-  TGLSkeletonColliderList = class(TGLPersistentObjectList)
+  TGLSkeletonColliderList = class(TPersistentObjectList)
   private
   private
     FOwner: TPersistent;
     FOwner: TPersistent;
   protected
   protected
@@ -317,7 +317,7 @@ type
   public
   public
     constructor CreateOwned(AOwner: TPersistent);
     constructor CreateOwned(AOwner: TPersistent);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Clear; override;
     procedure Clear; override;
     // Calls AlignCollider for each collider in the list.
     // Calls AlignCollider for each collider in the list.
     procedure AlignColliders;
     procedure AlignColliders;
@@ -340,7 +340,7 @@ type
   (* Main skeleton object. This class stores the bones hierarchy and animation frames.
   (* Main skeleton object. This class stores the bones hierarchy and animation frames.
     It is also responsible for maintaining the "CurrentFrame" and allowing
     It is also responsible for maintaining the "CurrentFrame" and allowing
     various frame blending operations. *)
     various frame blending operations. *)
-  TGLSkeleton = class(TGLPersistentObject)
+  TGLSkeleton = class(TPersistentObject)
   private
   private
     FOwner: TGLBaseMesh;
     FOwner: TGLBaseMesh;
     FRootBones: TGLSkeletonRootBoneList;
     FRootBones: TGLSkeletonRootBoneList;
@@ -360,8 +360,8 @@ type
     constructor CreateOwned(aOwner: TGLBaseMesh);
     constructor CreateOwned(aOwner: TGLBaseMesh);
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Owner: TGLBaseMesh read FOwner;
     property Owner: TGLBaseMesh read FOwner;
     property RootBones: TGLSkeletonRootBoneList read FRootBones write SetRootBones;
     property RootBones: TGLSkeletonRootBoneList read FRootBones write SetRootBones;
     property Frames: TGLSkeletonFrameList read FFrames write SetFrames;
     property Frames: TGLSkeletonFrameList read FFrames write SetFrames;
@@ -477,8 +477,8 @@ type
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Assign(Source: TPersistent); override;
     procedure Assign(Source: TPersistent); override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Clear; override;
     procedure Clear; override;
     function ExtractTriangles(texCoords: TGLAffineVectorList = nil;
     function ExtractTriangles(texCoords: TGLAffineVectorList = nil;
 	  Normals: TGLAffineVectorList = nil): TGLAffineVectorList; override;
 	  Normals: TGLAffineVectorList = nil): TGLAffineVectorList; override;
@@ -537,7 +537,7 @@ type
   end;
   end;
 
 
   // A list of TGLMeshObject objects.
   // A list of TGLMeshObject objects.
-  TGLMeshObjectList = class(TGLPersistentObjectList)
+  TGLMeshObjectList = class(TPersistentObjectList)
   private
   private
     FOwner: TGLBaseMesh;
     FOwner: TGLBaseMesh;
     // Returns True if all its MeshObjects use VBOs.
     // Returns True if all its MeshObjects use VBOs.
@@ -548,7 +548,7 @@ type
   public
   public
     constructor CreateOwned(aOwner: TGLBaseMesh);
     constructor CreateOwned(aOwner: TGLBaseMesh);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure PrepareMaterialLibraryCache(matLib: TGLMaterialLibrary);
     procedure PrepareMaterialLibraryCache(matLib: TGLMaterialLibrary);
     procedure DropMaterialLibraryCache;
     procedure DropMaterialLibraryCache;
     (* Prepare the texture and materials before rendering.
     (* Prepare the texture and materials before rendering.
@@ -592,13 +592,13 @@ type
   public
   public
     constructor CreateOwned(aOwner: TGLMeshMorphTargetList);
     constructor CreateOwned(aOwner: TGLMeshMorphTargetList);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     property Owner: TGLMeshMorphTargetList read FOwner;
     property Owner: TGLMeshMorphTargetList read FOwner;
   end;
   end;
 
 
   // A list of TGLMeshMorphTarget objects. 
   // A list of TGLMeshMorphTarget objects. 
-  TGLMeshMorphTargetList = class(TGLPersistentObjectList)
+  TGLMeshMorphTargetList = class(TPersistentObjectList)
   private
   private
     FOwner: TPersistent;
     FOwner: TPersistent;
   protected
   protected
@@ -606,7 +606,7 @@ type
   public
   public
     constructor CreateOwned(AOwner: TPersistent);
     constructor CreateOwned(AOwner: TPersistent);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Translate(const delta: TAffineVector);
     procedure Translate(const delta: TAffineVector);
     property Owner: TPersistent read FOwner;
     property Owner: TPersistent read FOwner;
     procedure Clear; override;
     procedure Clear; override;
@@ -621,8 +621,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Clear; override;
     procedure Clear; override;
     procedure Translate(const delta: TAffineVector); override;
     procedure Translate(const delta: TAffineVector); override;
     procedure MorphTo(morphTargetIndex: Integer); virtual;
     procedure MorphTo(morphTargetIndex: Integer); virtual;
@@ -666,8 +666,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure Clear; override;
     procedure Clear; override;
     property VerticesBonesWeights: PGLVerticesBoneWeights read FVerticesBonesWeights;
     property VerticesBonesWeights: PGLVerticesBoneWeights read FVerticesBonesWeights;
     property VerticeBoneWeightCount: Integer read FVerticeBoneWeightCount write SetVerticeBoneWeightCount;
     property VerticeBoneWeightCount: Integer read FVerticeBoneWeightCount write SetVerticeBoneWeightCount;
@@ -687,7 +687,7 @@ type
     Subclasses implement the actual behaviours, and should have at least
     Subclasses implement the actual behaviours, and should have at least
     one "Add" method, taking in parameters all that is required to describe
     one "Add" method, taking in parameters all that is required to describe
     a single base facegroup element. *)
     a single base facegroup element. *)
-  TGLFaceGroup = class(TGLPersistentObject)
+  TGLFaceGroup = class(TPersistentObject)
   private
   private
     FOwner: TGLFaceGroups;
     FOwner: TGLFaceGroups;
     FMaterialName: string;
     FMaterialName: string;
@@ -701,8 +701,8 @@ type
   public
   public
     constructor CreateOwned(aOwner: TGLFaceGroups); virtual;
     constructor CreateOwned(aOwner: TGLFaceGroups); virtual;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure PrepareMaterialLibraryCache(matLib: TGLMaterialLibrary);
     procedure PrepareMaterialLibraryCache(matLib: TGLMaterialLibrary);
     procedure DropMaterialLibraryCache;
     procedure DropMaterialLibraryCache;
     procedure BuildList(var mrci: TGLRenderContextInfo); virtual; abstract;
     procedure BuildList(var mrci: TGLRenderContextInfo); virtual; abstract;
@@ -750,8 +750,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure AddToTriangles(aList: TGLAffineVectorList; aTexCoords: TGLAffineVectorList = nil;
     procedure AddToTriangles(aList: TGLAffineVectorList; aTexCoords: TGLAffineVectorList = nil;
       aNormals: TGLAffineVectorList = nil); override;
       aNormals: TGLAffineVectorList = nil); override;
@@ -780,8 +780,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure AddToTriangles(aList: TGLAffineVectorList; aTexCoords: TGLAffineVectorList = nil;
     procedure AddToTriangles(aList: TGLAffineVectorList; aTexCoords: TGLAffineVectorList = nil;
       aNormals: TGLAffineVectorList = nil); override;
       aNormals: TGLAffineVectorList = nil); override;
@@ -801,8 +801,8 @@ type
   public
   public
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure BuildList(var mrci: TGLRenderContextInfo); override;
     procedure AddToTriangles(aList: TGLAffineVectorList; aTexCoords: TGLAffineVectorList = nil;
     procedure AddToTriangles(aList: TGLAffineVectorList; aTexCoords: TGLAffineVectorList = nil;
       aNormals: TGLAffineVectorList = nil); override;
       aNormals: TGLAffineVectorList = nil); override;
@@ -812,7 +812,7 @@ type
   end;
   end;
 
 
   // A list of TGLFaceGroup objects. 
   // A list of TGLFaceGroup objects. 
-  TGLFaceGroups = class(TGLPersistentObjectList)
+  TGLFaceGroups = class(TPersistentObjectList)
   private
   private
     FOwner: TGLMeshObject;
     FOwner: TGLMeshObject;
   protected
   protected
@@ -820,7 +820,7 @@ type
   public
   public
     constructor CreateOwned(aOwner: TGLMeshObject);
     constructor CreateOwned(aOwner: TGLMeshObject);
     destructor Destroy; override;
     destructor Destroy; override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure PrepareMaterialLibraryCache(matLib: TGLMaterialLibrary);
     procedure PrepareMaterialLibraryCache(matLib: TGLMaterialLibrary);
     procedure DropMaterialLibraryCache;
     procedure DropMaterialLibraryCache;
     property Owner: TGLMeshObject read FOwner;
     property Owner: TGLMeshObject read FOwner;
@@ -1295,7 +1295,7 @@ type
   end;
   end;
 
 
   // Stores registered vector file formats 
   // Stores registered vector file formats 
-  TGLVectorFileFormatsList = class(TGLPersistentObjectList)
+  TGLVectorFileFormatsList = class(TPersistentObjectList)
   public
   public
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Add(const Ext, Desc: string; DescID: Integer; AClass: TGLVectorFileClass);
     procedure Add(const Ext, Desc: string; DescID: Integer; AClass: TGLVectorFileClass);
@@ -1549,7 +1549,7 @@ begin
     inherited; // Die!
     inherited; // Die!
 end;
 end;
 
 
-procedure TGLBaseMeshObject.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLBaseMeshObject.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -1562,7 +1562,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLBaseMeshObject.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLBaseMeshObject.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -1841,7 +1841,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TGLSkeletonFrame.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLSkeletonFrame.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -1855,7 +1855,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLSkeletonFrame.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeletonFrame.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2021,7 +2021,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLSkeletonFrameList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeletonFrameList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -2094,7 +2094,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLSkeletonBoneList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLSkeletonBoneList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2104,7 +2104,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLSkeletonBoneList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeletonBoneList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion, i: Integer;
   archiveVersion, i: Integer;
 begin
 begin
@@ -2182,7 +2182,7 @@ end;
 // ------------------ TGLSkeletonRootBoneList ------------------
 // ------------------ TGLSkeletonRootBoneList ------------------
 // ------------------
 // ------------------
 
 
-procedure TGLSkeletonRootBoneList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLSkeletonRootBoneList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2192,7 +2192,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLSkeletonRootBoneList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeletonRootBoneList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion, i: Integer;
   archiveVersion, i: Integer;
 begin
 begin
@@ -2247,7 +2247,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TGLSkeletonBone.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLSkeletonBone.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2259,7 +2259,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLSkeletonBone.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeletonBone.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion, i: Integer;
   archiveVersion, i: Integer;
 begin
 begin
@@ -2383,7 +2383,7 @@ begin
     FOwner.Add(Self);
     FOwner.Add(Self);
 end;
 end;
 
 
-procedure TGLSkeletonCollider.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLSkeletonCollider.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2397,7 +2397,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLSkeletonCollider.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeletonCollider.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2463,7 +2463,7 @@ begin
   Result := TGLSkeletonCollider(inherited Get(index));
   Result := TGLSkeletonCollider(inherited Get(index));
 end;
 end;
 
 
-procedure TGLSkeletonColliderList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeletonColliderList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -2525,7 +2525,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TGLSkeleton.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLSkeleton.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -2541,7 +2541,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLSkeleton.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeleton.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2969,7 +2969,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLMeshObject.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLMeshObject.WriteToFiler(writer: TVirtualWriter);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -2992,7 +2992,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLMeshObject.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLMeshObject.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i, Count, archiveVersion: Integer;
   i, Count, archiveVersion: Integer;
   lOldLightMapTexCoords: TGLTexPointList;
   lOldLightMapTexCoords: TGLTexPointList;
@@ -4206,7 +4206,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLMeshObjectList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLMeshObjectList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
   mesh: TGLMeshObject;
   mesh: TGLMeshObject;
@@ -4517,7 +4517,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLMeshMorphTarget.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLMeshMorphTarget.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -4527,7 +4527,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLMeshMorphTarget.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLMeshMorphTarget.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -4558,7 +4558,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLMeshMorphTargetList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLMeshMorphTargetList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -4609,7 +4609,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLMorphableMeshObject.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLMorphableMeshObject.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -4619,7 +4619,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLMorphableMeshObject.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLMorphableMeshObject.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -4714,7 +4714,7 @@ begin
   inherited Destroy;
   inherited Destroy;
 end;
 end;
 
 
-procedure TGLSkeletonMeshObject.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLSkeletonMeshObject.WriteToFiler(writer: TVirtualWriter);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin
@@ -4730,7 +4730,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLSkeletonMeshObject.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLSkeletonMeshObject.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion, i: Integer;
   archiveVersion, i: Integer;
 begin
 begin
@@ -5097,7 +5097,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLFaceGroup.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLFaceGroup.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -5116,7 +5116,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLFaceGroup.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLFaceGroup.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -5224,7 +5224,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TFGVertexIndexList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TFGVertexIndexList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -5235,7 +5235,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TFGVertexIndexList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TFGVertexIndexList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -5501,7 +5501,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TFGVertexNormalTexIndexList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TFGVertexNormalTexIndexList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -5512,7 +5512,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TFGVertexNormalTexIndexList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TFGVertexNormalTexIndexList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -5614,7 +5614,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TFGIndexTexCoordList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TFGIndexTexCoordList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -5624,7 +5624,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TFGIndexTexCoordList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TFGIndexTexCoordList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -5767,7 +5767,7 @@ begin
   inherited;
   inherited;
 end;
 end;
 
 
-procedure TGLFaceGroups.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLFaceGroups.ReadFromFiler(reader: TVirtualReader);
 var
 var
   i: Integer;
   i: Integer;
 begin
 begin

+ 11 - 11
Source/GLS.VectorLists.pas

@@ -22,7 +22,7 @@ type
   TGLBaseListOptions = set of TGLBaseListOption;
   TGLBaseListOptions = set of TGLBaseListOption;
 
 
   // Base class for lists, introduces common behaviours
   // Base class for lists, introduces common behaviours
-  TGLBaseList = class(TGLPersistentObject)
+  TGLBaseList = class(TPersistentObject)
   private
   private
     FCount: Integer;
     FCount: Integer;
     FCapacity: Integer;
     FCapacity: Integer;
@@ -52,8 +52,8 @@ type
     constructor Create; override;
     constructor Create; override;
     destructor Destroy; override;
     destructor Destroy; override;
     procedure Assign(Src: TPersistent); override;
     procedure Assign(Src: TPersistent); override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddNulls(nbVals: Cardinal);
     procedure AddNulls(nbVals: Cardinal);
     procedure InsertNulls(Index: Integer; nbVals: Cardinal);
     procedure InsertNulls(Index: Integer; nbVals: Cardinal);
     procedure AdjustCapacityToAtLeast(const size: Integer);
     procedure AdjustCapacityToAtLeast(const size: Integer);
@@ -93,8 +93,8 @@ type
   protected
   protected
     function GetItemAddress(Index: Integer): PFloatArray; inline;
     function GetItemAddress(Index: Integer): PFloatArray; inline;
   public
   public
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure GetExtents(out min, max: TAffineVector); virtual;
     procedure GetExtents(out min, max: TAffineVector); virtual;
     function Sum: TAffineVector;
     function Sum: TAffineVector;
     procedure Normalize; virtual;
     procedure Normalize; virtual;
@@ -503,7 +503,7 @@ procedure QuickSortLists(startIndex, endIndex: Integer; refList: TGLSingleList;
 procedure QuickSortLists(startIndex, endIndex: Integer; refList: TGLSingleList; objList: TGLBaseList); overload;
 procedure QuickSortLists(startIndex, endIndex: Integer; refList: TGLSingleList; objList: TGLBaseList); overload;
 (* Sort the refList in ascending order, ordering objList on the way.
 (* Sort the refList in ascending order, ordering objList on the way.
    Use if, and *ONLY* if refList contains only values superior or equal to 1 *)
    Use if, and *ONLY* if refList contains only values superior or equal to 1 *)
-procedure FastQuickSortLists(startIndex, endIndex: Integer; const refList: TGLSingleList; const objList: TGLPersistentObjectList);
+procedure FastQuickSortLists(startIndex, endIndex: Integer; const refList: TGLSingleList; const objList: TPersistentObjectList);
 
 
 // ------------------------------------------------------------------
 // ------------------------------------------------------------------
 implementation
 implementation
@@ -617,7 +617,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure FastQuickSortLists(startIndex, endIndex: Integer; const refList: TGLSingleList; const objList: TGLPersistentObjectList);
+procedure FastQuickSortLists(startIndex, endIndex: Integer; const refList: TGLSingleList; const objList: TPersistentObjectList);
 var
 var
   ppl:      PIntegerArray;
   ppl:      PIntegerArray;
   oTemp:    Pointer;
   oTemp:    Pointer;
@@ -745,7 +745,7 @@ begin
   AWriter.WriteString(lOutputText);
   AWriter.WriteString(lOutputText);
 end;
 end;
 
 
-procedure TGLBaseList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLBaseList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   with writer do
   with writer do
@@ -758,7 +758,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLBaseList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLBaseList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -1006,7 +1006,7 @@ end;
 // ------------------ TGLBaseVectorList ------------------
 // ------------------ TGLBaseVectorList ------------------
 // ------------------
 // ------------------
 
 
-procedure TGLBaseVectorList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLBaseVectorList.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited;
   inherited;
   if Self is TGLTexPointList then
   if Self is TGLTexPointList then
@@ -1018,7 +1018,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TGLBaseVectorList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLBaseVectorList.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 12 - 12
Source/GLS.VerletTypes.pas

@@ -672,8 +672,8 @@ type
   private
   private
     FVerletConstraint: TGLVerletConstraint;
     FVerletConstraint: TGLVerletConstraint;
   public
   public
-    procedure WriteToFiler(Writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TGLVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     procedure AddToVerletWorld(VerletWorld: TGLVerletWorld); virtual;
     procedure AddToVerletWorld(VerletWorld: TGLVerletWorld); virtual;
     // The verlet constraint is created through the AddToVerletWorld procedure
     // The verlet constraint is created through the AddToVerletWorld procedure
     property VerletConstraint: TGLVerletConstraint read FVerletConstraint;
     property VerletConstraint: TGLVerletConstraint read FVerletConstraint;
@@ -687,8 +687,8 @@ type
     procedure SetRadius(const Val: Single);
     procedure SetRadius(const Val: Single);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(Writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TGLVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     procedure AddToVerletWorld(VerletWorld: TGLVerletWorld); override;
     procedure AddToVerletWorld(VerletWorld: TGLVerletWorld); override;
     procedure AlignCollider; override;
     procedure AlignCollider; override;
     property Radius: Single read FRadius write SetRadius;
     property Radius: Single read FRadius write SetRadius;
@@ -703,8 +703,8 @@ type
     procedure SetLength(const Val: Single);
     procedure SetLength(const Val: Single);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(Writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(Reader: TGLVirtualReader); override;
+    procedure WriteToFiler(Writer: TVirtualWriter); override;
+    procedure ReadFromFiler(Reader: TVirtualReader); override;
     procedure AddToVerletWorld(VerletWorld: TGLVerletWorld); override;
     procedure AddToVerletWorld(VerletWorld: TGLVerletWorld); override;
     procedure AlignCollider; override;
     procedure AlignCollider; override;
     property Radius: Single read FRadius write SetRadius;
     property Radius: Single read FRadius write SetRadius;
@@ -2610,13 +2610,13 @@ end;
 // ------------------
 // ------------------
 // ------------------ TGLVerletSkeletonCollider ------------------
 // ------------------ TGLVerletSkeletonCollider ------------------
 // ------------------
 // ------------------
-procedure TGLVerletSkeletonCollider.WriteToFiler(Writer: TGLVirtualWriter);
+procedure TGLVerletSkeletonCollider.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(Writer);
   inherited WriteToFiler(Writer);
   Writer.WriteInteger(0); // Archive Version 0
   Writer.WriteInteger(0); // Archive Version 0
 end;
 end;
 
 
-procedure TGLVerletSkeletonCollider.ReadFromFiler(Reader: TGLVirtualReader);
+procedure TGLVerletSkeletonCollider.ReadFromFiler(Reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2645,14 +2645,14 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TGLVerletSphere.WriteToFiler(Writer: TGLVirtualWriter);
+procedure TGLVerletSphere.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(Writer);
   inherited WriteToFiler(Writer);
   Writer.WriteInteger(0); // Archive Version 0
   Writer.WriteInteger(0); // Archive Version 0
   Writer.WriteFloat(FRadius);
   Writer.WriteFloat(FRadius);
 end;
 end;
 
 
-procedure TGLVerletSphere.ReadFromFiler(Reader: TGLVirtualReader);
+procedure TGLVerletSphere.ReadFromFiler(Reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -2701,7 +2701,7 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TGLVerletCapsule.WriteToFiler(Writer: TGLVirtualWriter);
+procedure TGLVerletCapsule.WriteToFiler(Writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(Writer);
   inherited WriteToFiler(Writer);
   Writer.WriteInteger(0); // Archive Version 0
   Writer.WriteInteger(0); // Archive Version 0
@@ -2709,7 +2709,7 @@ begin
   Writer.WriteFloat(FLength);
   Writer.WriteFloat(FLength);
 end;
 end;
 
 
-procedure TGLVerletCapsule.ReadFromFiler(Reader: TGLVirtualReader);
+procedure TGLVerletCapsule.ReadFromFiler(Reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 2 - 2
Source/GLS.WaterPlane.pas

@@ -42,7 +42,7 @@ const
    private
    private
      FLocks: packed array of ByteBool;
      FLocks: packed array of ByteBool;
      FPositions, FVelocity: packed array of Single;
      FPositions, FVelocity: packed array of Single;
-     FPlaneQuadIndices: TGLPersistentObjectList;
+     FPlaneQuadIndices: TPersistentObjectList;
      FPlaneQuadTexCoords: TGLTexPointList;
      FPlaneQuadTexCoords: TGLTexPointList;
      FPlaneQuadVertices: TGLAffineVectorList;
      FPlaneQuadVertices: TGLAffineVectorList;
      FPlaneQuadNormals: TGLAffineVectorList;
      FPlaneQuadNormals: TGLAffineVectorList;
@@ -132,7 +132,7 @@ begin
   FMaximumCatchupIterations := 1;
   FMaximumCatchupIterations := 1;
   FOptions := cDefaultWaterPlaneOptions;
   FOptions := cDefaultWaterPlaneOptions;
 
 
-  FPlaneQuadIndices := TGLPersistentObjectList.Create;
+  FPlaneQuadIndices := TPersistentObjectList.Create;
   FPlaneQuadTexCoords := TGLTexPointList.Create;
   FPlaneQuadTexCoords := TGLTexPointList.Create;
   FPlaneQuadVertices := TGLAffineVectorList.Create;
   FPlaneQuadVertices := TGLAffineVectorList.Create;
   FPlaneQuadNormals := TGLAffineVectorList.Create;
   FPlaneQuadNormals := TGLAffineVectorList.Create;

+ 1 - 1
Source/GLS.WindowsContext.pas

@@ -24,7 +24,7 @@ uses
   GLS.PipelineTransformation,
   GLS.PipelineTransformation,
   GLS.Context,
   GLS.Context,
   GLS.State,
   GLS.State,
-  GLS.Logger,
+  Scena.Logger,
   Scena.Strings,
   Scena.Strings,
   Scena.VectorGeometry;
   Scena.VectorGeometry;
 
 

+ 1 - 1
Source/GLS.XCollection.pas

@@ -32,7 +32,7 @@ type
     methods if you add data in a subclass !
     methods if you add data in a subclass !
     Subclasses must be registered using the RegisterXCollectionItemClass
     Subclasses must be registered using the RegisterXCollectionItemClass
     function for proper operation *)
     function for proper operation *)
-  TXCollectionItem = class(TGLInterfacedPersistent)
+  TXCollectionItem = class(TInterfacedPersistent)
   private
   private
     FOwner: TXCollection;
     FOwner: TXCollection;
     FName: string;
     FName: string;

+ 1 - 1
Source/GLSL.TextureShaders.pas

@@ -43,7 +43,7 @@ uses
 type
 type
   TGLTextureSharingShader = class;
   TGLTextureSharingShader = class;
 
 
-  TGLTextureSharingShaderMaterial = class(TGLInterfacedCollectionItem, IGLMaterialLibrarySupported)
+  TGLTextureSharingShaderMaterial = class(TInterfacedCollectionItem, IGLMaterialLibrarySupported)
   private
   private
     FTextureMatrix: TGLMatrix;
     FTextureMatrix: TGLMatrix;
     FNeedToUpdateTextureMatrix: Boolean;
     FNeedToUpdateTextureMatrix: Boolean;

+ 2 - 2
Source/Physics.ODEManager.pas

@@ -67,7 +67,7 @@ type
     FOnCustomCollision: TGLODECustomCollisionEvent;
     FOnCustomCollision: TGLODECustomCollisionEvent;
     FNumContactJoints,
     FNumContactJoints,
 	FMaxContacts: Integer;
 	FMaxContacts: Integer;
-    FODEBehaviours: TGLPersistentObjectList;
+    FODEBehaviours: TPersistentObjectList;
     FRFContactList: TList;
     FRFContactList: TList;
     FIterations: Integer;
     FIterations: Integer;
     FSolver: TGLODESolverMethod;
     FSolver: TGLODESolverMethod;
@@ -1297,7 +1297,7 @@ begin
 
 
   inherited;
   inherited;
 
 
-  FODEBehaviours:= TGLPersistentObjectList.Create;
+  FODEBehaviours:= TPersistentObjectList.Create;
   FRFContactList:= TList.Create;
   FRFContactList:= TList.Create;
 
 
   FGravity:= TGLCoordinates.CreateInitialized(Self, NullHmgPoint, csVector);
   FGravity:= TGLCoordinates.CreateInitialized(Self, NullHmgPoint, csVector);

+ 16 - 16
Source/Physics.ODESkeletonColliders.pas

@@ -23,8 +23,8 @@ type
   private
   private
     FGeom: PdxGeom;
     FGeom: PdxGeom;
   public
   public
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddToSpace(Space: PdxSpace); virtual;
     procedure AddToSpace(Space: PdxSpace); virtual;
     procedure AlignCollider; override;
     procedure AlignCollider; override;
     // The geoms are created through the AddToSpace procedure
     // The geoms are created through the AddToSpace procedure
@@ -39,8 +39,8 @@ type
     procedure SetRadius(const val: TdReal);
     procedure SetRadius(const val: TdReal);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddToSpace(Space: PdxSpace); override;
     procedure AddToSpace(Space: PdxSpace); override;
 
 
     property Radius: TdReal read FRadius write SetRadius;
     property Radius: TdReal read FRadius write SetRadius;
@@ -55,8 +55,8 @@ type
     procedure SetLength(const val: Single);
     procedure SetLength(const val: Single);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddToSpace(Space: PdxSpace); override;
     procedure AddToSpace(Space: PdxSpace); override;
     property Radius: Single read FRadius write SetRadius;
     property Radius: Single read FRadius write SetRadius;
     property Length: Single read FLength write SetLength;
     property Length: Single read FLength write SetLength;
@@ -72,8 +72,8 @@ type
     procedure SetBoxDepth(const val: TdReal);
     procedure SetBoxDepth(const val: TdReal);
   public
   public
     constructor Create; override;
     constructor Create; override;
-    procedure WriteToFiler(writer: TGLVirtualWriter); override;
-    procedure ReadFromFiler(reader: TGLVirtualReader); override;
+    procedure WriteToFiler(writer: TVirtualWriter); override;
+    procedure ReadFromFiler(reader: TVirtualReader); override;
     procedure AddToSpace(Space: PdxSpace); override;
     procedure AddToSpace(Space: PdxSpace); override;
     property BoxWidth: TdReal read FBoxWidth write SetBoxWidth;
     property BoxWidth: TdReal read FBoxWidth write SetBoxWidth;
     property BoxHeight: TdReal read FBoxHeight write SetBoxHeight;
     property BoxHeight: TdReal read FBoxHeight write SetBoxHeight;
@@ -104,7 +104,7 @@ end;
 // ------------------ TSCODEBase ------------------
 // ------------------ TSCODEBase ------------------
 // ------------------
 // ------------------
 
 
-procedure TSCODEBase.WriteToFiler(writer: TGLVirtualWriter);
+procedure TSCODEBase.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -113,7 +113,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TSCODEBase.ReadFromFiler(reader: TGLVirtualReader);
+procedure TSCODEBase.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -169,7 +169,7 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TSCODESphere.WriteToFiler(writer: TGLVirtualWriter);
+procedure TSCODESphere.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -179,7 +179,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TSCODESphere.ReadFromFiler(reader: TGLVirtualReader);
+procedure TSCODESphere.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -220,7 +220,7 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TSCODECCylinder.WriteToFiler(writer: TGLVirtualWriter);
+procedure TSCODECCylinder.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -231,7 +231,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TSCODECCylinder.ReadFromFiler(reader: TGLVirtualReader);
+procedure TSCODECCylinder.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin
@@ -286,7 +286,7 @@ begin
   AlignCollider;
   AlignCollider;
 end;
 end;
 
 
-procedure TSCODEBox.WriteToFiler(writer: TGLVirtualWriter);
+procedure TSCODEBox.WriteToFiler(writer: TVirtualWriter);
 begin
 begin
   inherited WriteToFiler(writer);
   inherited WriteToFiler(writer);
   with writer do
   with writer do
@@ -298,7 +298,7 @@ begin
   end;
   end;
 end;
 end;
 
 
-procedure TSCODEBox.ReadFromFiler(reader: TGLVirtualReader);
+procedure TSCODEBox.ReadFromFiler(reader: TVirtualReader);
 var
 var
   archiveVersion: Integer;
   archiveVersion: Integer;
 begin
 begin

+ 162 - 162
Source/FRColorEditor.dfm → Source/VCL/FRColorEditor.dfm

@@ -1,162 +1,162 @@
-object RColorEditor: TRColorEditor
-  Left = 0
-  Top = 0
-  Width = 289
-  Height = 95
-  AutoSize = True
-  TabOrder = 0
-  TabStop = True
-  OnResize = FrameResize
-  object Label1: TLabel
-    Left = 0
-    Top = 2
-    Width = 31
-    Height = 19
-    Caption = 'Red'
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clRed
-    Font.Height = -16
-    Font.Name = 'Arial'
-    Font.Style = [fsBold]
-    ParentFont = False
-  end
-  object Label2: TLabel
-    Left = 0
-    Top = 26
-    Width = 46
-    Height = 19
-    Caption = 'Green'
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clLime
-    Font.Height = -16
-    Font.Name = 'Arial'
-    Font.Style = [fsBold]
-    ParentFont = False
-  end
-  object Label3: TLabel
-    Left = 0
-    Top = 50
-    Width = 35
-    Height = 19
-    Caption = 'Blue'
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clBlue
-    Font.Height = -16
-    Font.Name = 'Arial'
-    Font.Style = [fsBold]
-    ParentFont = False
-  end
-  object Label4: TLabel
-    Left = 0
-    Top = 74
-    Width = 44
-    Height = 19
-    Caption = 'Alpha'
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clWindowText
-    Font.Height = -16
-    Font.Name = 'Arial'
-    Font.Style = [fsBold]
-    ParentFont = False
-  end
-  object ColorEditorPaintBox: TPaintBox
-    Left = 0
-    Top = 0
-    Width = 289
-    Height = 95
-    Align = alClient
-    OnMouseDown = ColorEditorPaintBoxMouseDown
-    OnMouseMove = ColorEditorPaintBoxMouseMove
-    OnMouseUp = ColorEditorPaintBoxMouseUp
-    OnPaint = ColorEditorPaintBoxPaint
-  end
-  object PAPreview: TPanel
-    Left = 220
-    Top = 6
-    Width = 33
-    Height = 73
-    Hint = 'Double-click to select with Windows color picker'
-    BevelInner = bvRaised
-    BevelOuter = bvLowered
-    BorderWidth = 1
-    Color = clLime
-    TabOrder = 0
-    Visible = False
-    OnDblClick = PAPreviewDblClick
-  end
-  object Panel1: TPanel
-    Left = 0
-    Top = 0
-    Width = 289
-    Height = 95
-    Alignment = taLeftJustify
-    BevelOuter = bvNone
-    Caption = '                Color edit frame'
-    TabOrder = 1
-    Visible = False
-  end
-  object RedEdit: TEdit
-    Left = 176
-    Top = 4
-    Width = 33
-    Height = 22
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clWindowText
-    Font.Height = -11
-    Font.Name = 'Arial'
-    Font.Style = []
-    ParentFont = False
-    TabOrder = 2
-    Text = '0'
-    OnChange = RedEditChange
-  end
-  object GreenEdit: TEdit
-    Left = 176
-    Top = 26
-    Width = 33
-    Height = 22
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clWindowText
-    Font.Height = -11
-    Font.Name = 'Arial'
-    Font.Style = []
-    ParentFont = False
-    TabOrder = 3
-    Text = '0'
-    OnChange = GreenEditChange
-  end
-  object BlueEdit: TEdit
-    Left = 176
-    Top = 48
-    Width = 33
-    Height = 22
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clWindowText
-    Font.Height = -11
-    Font.Name = 'Arial'
-    Font.Style = []
-    ParentFont = False
-    TabOrder = 4
-    Text = '0'
-    OnChange = BlueEditChange
-  end
-  object AlphaEdit: TEdit
-    Left = 176
-    Top = 70
-    Width = 33
-    Height = 22
-    Font.Charset = ANSI_CHARSET
-    Font.Color = clWindowText
-    Font.Height = -11
-    Font.Name = 'Arial'
-    Font.Style = []
-    ParentFont = False
-    TabOrder = 5
-    Text = '0'
-    OnChange = AlphaEditChange
-  end
-  object ColorDialog: TColorDialog
-    Left = 232
-    Top = 24
-  end
-end
+object RColorEditor: TRColorEditor
+  Left = 0
+  Top = 0
+  Width = 289
+  Height = 95
+  AutoSize = True
+  TabOrder = 0
+  TabStop = True
+  OnResize = FrameResize
+  object Label1: TLabel
+    Left = 0
+    Top = 2
+    Width = 31
+    Height = 19
+    Caption = 'Red'
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clRed
+    Font.Height = -16
+    Font.Name = 'Arial'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object Label2: TLabel
+    Left = 0
+    Top = 26
+    Width = 46
+    Height = 19
+    Caption = 'Green'
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clLime
+    Font.Height = -16
+    Font.Name = 'Arial'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object Label3: TLabel
+    Left = 0
+    Top = 50
+    Width = 35
+    Height = 19
+    Caption = 'Blue'
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clBlue
+    Font.Height = -16
+    Font.Name = 'Arial'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object Label4: TLabel
+    Left = 0
+    Top = 74
+    Width = 44
+    Height = 19
+    Caption = 'Alpha'
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -16
+    Font.Name = 'Arial'
+    Font.Style = [fsBold]
+    ParentFont = False
+  end
+  object ColorEditorPaintBox: TPaintBox
+    Left = 0
+    Top = 0
+    Width = 289
+    Height = 95
+    Align = alClient
+    OnMouseDown = ColorEditorPaintBoxMouseDown
+    OnMouseMove = ColorEditorPaintBoxMouseMove
+    OnMouseUp = ColorEditorPaintBoxMouseUp
+    OnPaint = ColorEditorPaintBoxPaint
+  end
+  object PAPreview: TPanel
+    Left = 220
+    Top = 6
+    Width = 33
+    Height = 73
+    Hint = 'Double-click to select with Windows color picker'
+    BevelInner = bvRaised
+    BevelOuter = bvLowered
+    BorderWidth = 1
+    Color = clLime
+    TabOrder = 0
+    Visible = False
+    OnDblClick = PAPreviewDblClick
+  end
+  object Panel1: TPanel
+    Left = 0
+    Top = 0
+    Width = 289
+    Height = 95
+    Alignment = taLeftJustify
+    BevelOuter = bvNone
+    Caption = '                Color edit frame'
+    TabOrder = 1
+    Visible = False
+  end
+  object RedEdit: TEdit
+    Left = 176
+    Top = 4
+    Width = 33
+    Height = 22
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Arial'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 2
+    Text = '0'
+    OnChange = RedEditChange
+  end
+  object GreenEdit: TEdit
+    Left = 176
+    Top = 26
+    Width = 33
+    Height = 22
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Arial'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 3
+    Text = '0'
+    OnChange = GreenEditChange
+  end
+  object BlueEdit: TEdit
+    Left = 176
+    Top = 48
+    Width = 33
+    Height = 22
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Arial'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 4
+    Text = '0'
+    OnChange = BlueEditChange
+  end
+  object AlphaEdit: TEdit
+    Left = 176
+    Top = 70
+    Width = 33
+    Height = 22
+    Font.Charset = ANSI_CHARSET
+    Font.Color = clWindowText
+    Font.Height = -11
+    Font.Name = 'Arial'
+    Font.Style = []
+    ParentFont = False
+    TabOrder = 5
+    Text = '0'
+    OnChange = AlphaEditChange
+  end
+  object ColorDialog: TColorDialog
+    Left = 232
+    Top = 24
+  end
+end

+ 503 - 503
Source/FRColorEditor.pas → Source/VCL/FRColorEditor.pas

@@ -1,503 +1,503 @@
-//
-// The graphics platform GLScene https://github.com/glscene
-//
-unit FRColorEditor;
-
-(* RGB+Alpha color editor. *)
-
-interface
-
-{$I Scena.inc}
-
-uses
-  WinApi.Windows, 
-  System.Classes, 
-  System.SysUtils,
-  System.Types,
-  VCL.Forms, 
-  VCL.StdCtrls,
-  VCL.ComCtrls, 
-  VCL.ExtCtrls, 
-  VCL.Dialogs, 
-  VCL.Controls, 
-  VCL.Graphics,
-   
-  Scena.VectorGeometry, 
-  GLS.Color, 
-  GLS.Texture, 
-  Scena.VectorTypes;
-
-type
-  TRColorEditor = class(TFrame)
-    Label1: TLabel;
-    Label2: TLabel;
-    Label3: TLabel;
-    Label4: TLabel;
-    PAPreview: TPanel;
-    ColorDialog: TColorDialog;
-    Panel1: TPanel;
-    ColorEditorPaintBox: TPaintBox;
-    RedEdit: TEdit;
-    GreenEdit: TEdit;
-    BlueEdit: TEdit;
-    AlphaEdit: TEdit;
-    procedure TBEChange(Sender: TObject);
-    procedure PAPreviewDblClick(Sender: TObject);
-    procedure ColorEditorPaintBoxPaint(Sender: TObject);
-    procedure FrameResize(Sender: TObject);
-    procedure ColorEditorPaintBoxMouseDown(Sender: TObject;
-      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-    procedure ColorEditorPaintBoxMouseMove(Sender: TObject;
-      Shift: TShiftState; X, Y: Integer);
-    procedure ColorEditorPaintBoxMouseUp(Sender: TObject;
-      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-    procedure RedEditChange(Sender: TObject);
-    procedure GreenEditChange(Sender: TObject);
-    procedure BlueEditChange(Sender: TObject);
-    procedure AlphaEditChange(Sender: TObject);
-  private
-    FOnChange : TNotifyEvent;
-    updating : Boolean;
-    WorkBitmap : tBitmap;
-    RedValue : Integer;
-    GreenValue : integer;
-    BlueValue : integer;
-    AlphaVAlue : integer;
-    DraggingValue : (None,Red,Green,Blue,Alpha);
-    procedure SetColor(const val : THomogeneousFltVector);
-    function GetColor : THomogeneousFltVector;
-    procedure DrawContents;
-    procedure DragColorSliderToPosition(XPos : integer);
-    procedure ContentsChanged;
-  public
-    constructor Create(AOwner: TComponent); override;
-    destructor Destroy; override;
-    property Color : THomogeneousFltVector read GetColor write SetColor;
-  published
-    property OnChange : TNotifyEvent read FOnChange write FOnChange;
-  end;
-
-//--------------------------------------------------------------------
-implementation
-//--------------------------------------------------------------------
-
-{$R *.dfm}
-
-const
-  MaxColorValue = 255;
-  MaxAlphaValue = 1000;
-
-  ColorSliderLeft = 40;
-  ColorSliderWidth = 128;
-  ColorSliderHeight = 16;
-  ColorViewHeight = 7;
-  ColorSliderMaxValue = ColorSliderWidth - 2;
-
-  RTop = 8;
-  GTop = 30;
-  BTop = 52;
-  ATop = 74;
-
-  PreviewPanelLeft = 216;
-  PreviewPanelTop = 10;
-  PreviewPanelWidth = 65;
-  PreviewPanelHeight = 74;
-
-  AlphaCheckSize = 9;
-  AlphaChecksHigh = 4;
-  AlphaChecksWide = 7;
-
-procedure TRColorEditor.TBEChange(Sender: TObject);
-begin
-   PAPreview.Color := RGB(RedValue, GreenValue, BlueValue);
-   if (not updating) and Assigned(FOnChange) then FOnChange(Self);
-end;
-
-procedure TRColorEditor.SetColor(const val : THomogeneousFltVector);
-begin
-  RedValue:=Round(val.X*255);
-  GreenValue:=Round(val.Y*255);
-  BlueValue:=Round(val.Z*255);
-  AlphaValue:=Round(val.W*1000);
-
-  ContentsChanged;
-end;
-
-function TRColorEditor.GetColor : THomogeneousFltVector;
-begin
-   Result:=VectorMake(RedValue/255, GreenValue/255, BlueValue/255,
-                      AlphaValue/1000);
-end;
-
-procedure TRColorEditor.PAPreviewDblClick(Sender: TObject);
-begin
-   ColorDialog.Color := PAPreview.Color;
-   if ColorDialog.Execute then
-      SetColor(ConvertWinColor(ColorDialog.Color));
-end;
-
-procedure TRColorEditor.ColorEditorPaintBoxPaint(Sender: TObject);
-begin
-  with ColorEditorPaintBox,ColorEditorPaintBox.Canvas do
-  begin
-    Draw(0,0,WorkBitmap);
-  end;
-  RedEdit.Height := 16;
-  GreenEdit.Height := 16;
-  BlueEdit.Height := 16;
-  AlphaEdit.Height := 16;
-end;
-
-constructor TRColorEditor.Create(AOwner: TComponent);
-begin
-  inherited;
-  WorkBitmap := TBitmap.Create;
-  WorkBitmap.PixelFormat := pf24bit;
-  WorkBitmap.HandleType := bmDib;
-
-  RedValue := 200;
-  GreenValue := 120;
-  BlueValue := 60;
-  AlphaValue := 450;
-end;
-
-destructor TRColorEditor.Destroy;
-begin
-  inherited;
-  WorkBitmap.Free;
-end;
-
-procedure TRColorEditor.FrameResize(Sender: TObject);
-begin
-  WorkBitmap.Width := ColorEditorPaintBox.Width;
-  WorkBitmap.Height := ColorEditorPaintBox.Height;
-  With WorkBitmap.Canvas do
-  begin
-    Pen.Color := clLime;
-    MoveTo(0,0);
-    LineTo(Width-1,Height-1);
-    MoveTo(Width-1,0);
-    LineTo(0,Height-1);
-  end;
-  DrawCOntents;
-
-  // Edits have an annoying habit of forgetting their height if they are small
-  RedEdit.Height := 18;
-  GreenEdit.Height := 18;
-  BlueEdit.Height := 18;
-  AlphaEdit.Height := 18;
-end;
-
-function ColorValueToColorViewPosition(ColorValue : integer) : integer;
-begin
-  Result := Round( (ColorSliderMaxValue/(MaxColorValue+1)) * ColorValue);
-end;
-
-function AlphaValueToColorViewPosition(AlphaValue : integer) : integer;
-begin
-  Result := Round( (ColorSliderMaxValue/(MaxAlphaValue+1)) * AlphaValue);
-end;
-
-function ColorViewPositionToColorValue(ColorViewPosition : integer) : integer;
-begin
-  if ColorViewPosition < 0 then ColorViewPosition := 0;
-  if ColorViewPosition > ColorSliderMaxValue then ColorViewPosition := ColorSliderMaxValue;
-
-  Result := Round(ColorViewPosition / (ColorSliderMaxValue/(MaxColorValue)));
-end;
-
-function ColorViewPositionToAlphaValue(ColorViewPosition : integer) : integer;
-begin
-  if ColorViewPosition < 0 then ColorViewPosition := 0;
-  if ColorViewPosition > ColorSliderMaxValue then ColorViewPosition := ColorSliderMaxValue;
-  Result := Round(ColorViewPosition / (ColorSliderMaxValue/(MaxAlphaValue)));
-end;
-
-procedure TRColorEditor.DrawContents;
-var
-  Position : integer;
-  tx,ty : integer;
-  RViewColor : tColor;
-  GViewColor : tColor;
-  BViewColor : tColor;
-  AViewColor : tColor;
-  ViewLevel : integer;
-  WhiteCheckColor : tColor;
-  BlackCheckColor : tColor;
-  AValue : single;
-begin
-  with WorkBitmap.Canvas do
-  begin
-    Brush.Color := clBtnFace;
-    FillRect(Rect(0,0,WorkBitmap.Width,WorkBitmap.Height));
-
-    Font.Color := clBlack;
-    Font.Name := 'Arial';
-    Font.Height := 14;
-
-    TextOut(6,5,'Red');
-    TextOut(6,26,'Green');
-    TextOut(6,48,'Blue');
-    TextOut(6,70,'Alpha');
-
-    Brush.Color := clBlack;
-    FrameRect(Rect(ColorSliderLeft,RTop,ColorSliderLeft+ColorSliderWidth,RTop+ColorViewHeight));
-    FrameRect(Rect(ColorSliderLeft,GTop,ColorSliderLeft+ColorSliderWidth,GTop+ColorViewHeight));
-    FrameRect(Rect(ColorSliderLeft,BTop,ColorSliderLeft+ColorSliderWidth,BTop+ColorViewHeight));
-    FrameRect(Rect(ColorSliderLeft,ATop,ColorSliderLeft+ColorSliderWidth,ATop+ColorViewHeight));
-
-    // Color View Frames
-    Pen.Color := clBtnShadow;
-    PolyLine([  Point(ColorSliderLeft-1,RTop+ColorViewHeight),
-                Point(ColorSliderLeft-1,RTop-1),
-                Point(ColorSliderLeft+ColorSliderWidth+1,RTop-1)  ]);
-
-    PolyLine([  Point(ColorSliderLeft-1,GTop+ColorViewHeight),
-                Point(ColorSliderLeft-1,GTop-1),
-                Point(ColorSliderLeft+ColorSliderWidth+1,GTop-1)  ]);
-
-    PolyLine([  Point(ColorSliderLeft-1,BTop+ColorViewHeight),
-                Point(ColorSliderLeft-1,BTop-1),
-                Point(ColorSliderLeft+ColorSliderWidth+1,BTop-1)  ]);
-
-    PolyLine([  Point(ColorSliderLeft-1,ATop+ColorViewHeight),
-                Point(ColorSliderLeft-1,ATop-1),
-                Point(ColorSliderLeft+ColorSliderWidth+1,ATop-1)  ]);
-
-    Pen.Color := clBtnHighlight;
-
-    PolyLine([  Point(ColorSliderLeft,RTop+ColorViewHeight),
-                Point(ColorSliderLeft+ColorSliderWidth,RTop+ColorViewHeight),
-                Point(ColorSliderLeft+ColorSliderWidth,RTop) ]);
-
-    PolyLine([  Point(ColorSliderLeft,GTop+ColorViewHeight),
-                Point(ColorSliderLeft+ColorSliderWidth,GTop+ColorViewHeight),
-                Point(ColorSliderLeft+ColorSliderWidth,GTop) ]);
-
-    PolyLine([  Point(ColorSliderLeft,BTop+ColorViewHeight),
-                Point(ColorSliderLeft+ColorSliderWidth,BTop+ColorViewHeight),
-                Point(ColorSliderLeft+ColorSliderWidth,BTop) ]);
-
-    PolyLine([  Point(ColorSliderLeft,ATop+ColorViewHeight),
-                Point(ColorSliderLeft+ColorSliderWidth,ATop+ColorViewHeight),
-                Point(ColorSliderLeft+ColorSliderWidth,ATop) ]);
-
-  // Color pointer triangles
-
-    Pen.Color := clBlack;
-    Position:=ColorValueToColorViewPosition(RedValue) + ColorSliderLeft;
-    PolyLine([ Point(Position,RTop+ColorViewHeight+2),
-               Point(Position+6,RTop+ColorViewHeight+8),
-               Point(Position-6,RTop+ColorViewHeight+8),
-               Point(Position,RTop+ColorViewHeight+2)]);
-
-    Position:=ColorValueToColorViewPosition(GreenValue) + ColorSliderLeft;
-    PolyLine([ Point(Position,GTop+ColorViewHeight+2),
-               Point(Position+6,GTop+ColorViewHeight+8),
-               Point(Position-6,GTop+ColorViewHeight+8),
-               Point(Position,GTop+ColorViewHeight+2)]);
-
-    Position:=ColorValueToColorViewPosition(BlueValue) + ColorSliderLeft;
-    PolyLine([ Point(Position,BTop+ColorViewHeight+2),
-               Point(Position+6,BTop+ColorViewHeight+8),
-               Point(Position-6,BTop+ColorViewHeight+8),
-               Point(Position,BTop+ColorViewHeight+2)]);
-
-    Position:=AlphaValueToColorViewPosition(AlphaValue) + ColorSliderLeft;
-    PolyLine([ Point(Position,ATop+ColorViewHeight+2),
-               Point(Position+6,ATop+ColorViewHeight+8),
-               Point(Position-6,ATop+ColorViewHeight+8),
-               Point(Position,ATop+ColorViewHeight+2)]);
-
-    // Color view spectrums
-    For tx := 1 to ColorSliderWidth - 2 do
-    begin
-      ViewLevel := (tx * 256) div ColorSliderWidth;
-      AViewColor := (ViewLevel) + (ViewLevel shl 8) + (viewLevel shl 16);
-      RViewColor := (ViewLevel) + (GreenValue Shl 8) + (BlueValue Shl 16);
-      GViewColor := (RedValue) + (ViewLevel shl 8) + (BlueValue Shl 16);
-      BViewColor := (RedValue) + (GreenValue Shl 8) + (ViewLevel Shl 16);
-      For ty := 1 to ColorViewHeight -2 do
-      begin
-         Pixels[ColorSliderLeft+tx,Rtop+Ty]:=RViewCOlor;
-         Pixels[ColorSliderLeft+tx,Gtop+Ty]:=GViewColor;
-         Pixels[ColorSliderLeft+tx,Btop+Ty]:=BViewColor;
-         Pixels[ColorSliderLeft+tx,Atop+Ty]:=AViewColor;
-      end;
-    end;
-
-    // Color preview panel
-    Pen.Color := clBtnShadow;
-    PolyLine([  Point(PreviewPanelLeft-1,PreviewPanelTop+PreviewPanelHeight),
-                Point(PreviewPanelLeft-1,PreviewPanelTop-1),
-                Point(PreviewPanelLeft+PreviewPanelWidth,PreviewPanelTop-1) ]);
-    Pen.Color := clBtnHighlight;
-    PolyLine([  Point(PreviewPanelLeft,PreviewPanelTop+PreviewPanelHeight),
-                Point(PreviewPanelLeft+PreviewPanelWidth,PreviewPanelTop+PreviewPanelHeight),
-                Point(PreviewPanelLeft+PreviewPanelWidth,PreviewPanelTop) ]);
-
-    Brush.Color := (RedValue) + (GreenValue Shl 8) + (BlueValue Shl 16);
-    Pen.Color := clBlack;
-    Rectangle(Rect(PreviewPanelLeft,PreviewPanelTop,PreviewPanelLeft+PreviewPanelWidth,PreviewPanelTop+PreviewPanelHeight div 2 ) );
-    PolyLine([  Point(PreviewPanelLeft,PreviewPanelTop+PreviewPanelHeight div 2 -1),
-                Point(PreviewPanelLeft,PreviewPanelTop+PreviewPanelHeight -1),
-                Point(PreviewPanelLeft+PreviewPanelWidth-1,PreviewPanelTop+PreviewPanelHeight-1),
-                Point(PreviewPanelLeft+PreviewPanelWidth-1,PreviewPanelTop+PreviewPanelHeight div 2-1)
-             ]);
-
-    AValue := AlphaValue / MaxAlphaValue;
-    BlackCheckColor := Round(RedValue * Avalue) + Round(GreenValue*AValue) shl 8 + Round(BlueValue*AValue) shl 16;
-    WhiteCheckColor := Round(RedValue * Avalue + (255 * (1-AValue))) + Round(GreenValue*AValue + (255 * (1-AValue))) shl 8 +  Round(BlueValue*AValue + (255 * (1-AValue))) shl 16;
-    For ty := 0 to AlphaChecksHigh - 1 do
-    begin
-      For tx := 0 to AlphaChecksWide - 1 do
-      begin
-        if (tx+ty) and 1 = 0 then Brush.Color := BlackCheckColor else Brush.Color := WhiteCheckColor;
-        FillRect(Rect(  PreviewPanelLeft+1 + tx*AlphaCheckSize,
-                        PreviewPanelTop+PreviewPanelHeight Div 2 + ty*AlphaCheckSize,
-                        PreviewPanelLeft+1 + (tx+1)*AlphaCheckSize,
-                        PreviewPanelTop+PreviewPanelHeight Div 2 + (ty+1)*AlphaCheckSize
-                      ));
-      end;
-    end;
-  end;
-end;
-
-procedure TRColorEditor.ColorEditorPaintBoxMouseDown(Sender: TObject;
-  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-begin
-  DraggingValue := None;
-  if Button = TMouseButton(mbLeft) then
-  begin
-    if (X > ColorSliderLeft-5) and ( X < (ColorSliderLeft+ColorSliderMaxValue+5)) then
-    begin
-      // In X range For Color Sliders
-      If (Y > RTop) and ( (RTop+ColorSliderHeight) > Y ) then DraggingValue := Red;
-      If (Y > GTop) and ( (GTop+ColorSliderHeight) > Y ) then DraggingValue := Green;
-      If (Y > BTop) and ( (BTop+ColorSliderHeight) > Y ) then DraggingValue := Blue;
-      If (Y > ATop) and ( (ATop+ColorSliderHeight) > Y ) then DraggingValue := Alpha;
-
-      If DraggingValue <> None then DragColorSliderToPosition(X-ColorSliderLeft-1);
-    end
-  end;
-end;
-
-procedure TRColorEditor.DragColorSliderToPosition(XPos: integer);
-begin
-  case DraggingValue of
-    Red: RedValue := ColorViewPositionToColorValue(XPos);
-    Green: GreenValue := ColorViewPositionToColorValue(XPos);
-    Blue: BlueValue := ColorViewPositionToColorValue(XPos);
-    Alpha: AlphaValue := ColorViewPositionToAlphaValue(XPos);
-  end;
-  ContentsChanged;
-end;
-
-procedure TRColorEditor.ContentsChanged;
-begin
-  if Not Updating then
-  begin
-    UpDating := True;
-    DrawContents;
-    ColorEditorPaintBox.Canvas.Draw(0,0,WorkBitmap);
-    RedEdit.Text := IntToStr(RedValue);
-    GreenEdit.Text := IntToStr(GreenValue);
-    BlueEdit.Text := IntToStr(BlueValue);
-    AlphaEdit.Text := IntToStr(AlphaValue);
-
-    PaPreview.Color := RedValue + (GreenValue Shl 8) + (BlueValue Shl 16);
-    UpDating := False;
-
-    TBEChange(Self);
-  end;
-end;
-
-procedure TRColorEditor.ColorEditorPaintBoxMouseMove(Sender: TObject;
-  Shift: TShiftState; X, Y: Integer);
-begin
- if DraggingValue <> None then DragColorSliderToPosition(X-ColorSliderLeft-1);
-end;
-
-procedure TRColorEditor.ColorEditorPaintBoxMouseUp(Sender: TObject;
-  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-begin
-  if Button = TMouseButton(mbLeft) then DraggingValue := None;
-end;
-
-procedure TRColorEditor.RedEditChange(Sender: TObject);
-var
-  IntValue : integer;
-begin
-  IntValue := StrToIntDef(RedEdit.Text,-1);
-
-  If (IntValue < 0) or (IntValue > MaxColorValue) then
-  begin
-    RedEdit.Color:=clRed;
-  end
-  else
-  begin
-    RedEdit.Color:=clWindow;
-    RedValue := IntValue;
-    ContentsChanged;
-  end;
-
-end;
-
-procedure TRColorEditor.GreenEditChange(Sender: TObject);
-var
-  IntValue : integer;
-begin
-  IntValue := StrToIntDef(GreenEdit.Text,-1);
-
-  If (IntValue < 0) or (IntValue > MaxColorValue) then
-  begin
-    GreenEdit.Color:=clRed;
-  end
-  else
-  begin
-    GreenEdit.Color:=clWindow;
-    GreenValue := IntValue;
-    ContentsChanged;
-  end;
-
-end;
-
-procedure TRColorEditor.BlueEditChange(Sender: TObject);
-var
-  IntValue : integer;
-begin
-  IntValue := StrToIntDef(BlueEdit.Text,-1);
-
-  If (IntValue < 0) or (IntValue > MaxColorValue) then
-  begin
-    BlueEdit.Color:=clRed;
-  end
-  else
-  begin
-    BlueEdit.Color:=clWindow;
-    BlueValue := IntValue;
-    ContentsChanged;
-  end;
-
-end;
-
-procedure TRColorEditor.AlphaEditChange(Sender: TObject);
-var
-  IntValue : integer;
-begin
-  IntValue := StrToIntDef(AlphaEdit.Text,-1);
-
-  If (IntValue < 0) or (IntValue > MaxAlphaValue) then
-  begin
-    AlphaEdit.Color:=clRed;
-  end
-  else
-  begin
-    AlphaEdit.Color:=clWindow;
-    AlphaValue := IntValue;
-    ContentsChanged;
-  end;
-
-end;
-
-end.
+//
+// The graphics platform GLScene https://github.com/glscene
+//
+unit FRColorEditor;
+
+(* RGB+Alpha color editor. *)
+
+interface
+
+{$I Scena.inc}
+
+uses
+  WinApi.Windows, 
+  System.Classes, 
+  System.SysUtils,
+  System.Types,
+  VCL.Forms, 
+  VCL.StdCtrls,
+  VCL.ComCtrls, 
+  VCL.ExtCtrls, 
+  VCL.Dialogs, 
+  VCL.Controls, 
+  VCL.Graphics,
+   
+  Scena.VectorGeometry, 
+  GLS.Color, 
+  GLS.Texture, 
+  Scena.VectorTypes;
+
+type
+  TRColorEditor = class(TFrame)
+    Label1: TLabel;
+    Label2: TLabel;
+    Label3: TLabel;
+    Label4: TLabel;
+    PAPreview: TPanel;
+    ColorDialog: TColorDialog;
+    Panel1: TPanel;
+    ColorEditorPaintBox: TPaintBox;
+    RedEdit: TEdit;
+    GreenEdit: TEdit;
+    BlueEdit: TEdit;
+    AlphaEdit: TEdit;
+    procedure TBEChange(Sender: TObject);
+    procedure PAPreviewDblClick(Sender: TObject);
+    procedure ColorEditorPaintBoxPaint(Sender: TObject);
+    procedure FrameResize(Sender: TObject);
+    procedure ColorEditorPaintBoxMouseDown(Sender: TObject;
+      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure ColorEditorPaintBoxMouseMove(Sender: TObject;
+      Shift: TShiftState; X, Y: Integer);
+    procedure ColorEditorPaintBoxMouseUp(Sender: TObject;
+      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+    procedure RedEditChange(Sender: TObject);
+    procedure GreenEditChange(Sender: TObject);
+    procedure BlueEditChange(Sender: TObject);
+    procedure AlphaEditChange(Sender: TObject);
+  private
+    FOnChange : TNotifyEvent;
+    updating : Boolean;
+    WorkBitmap : tBitmap;
+    RedValue : Integer;
+    GreenValue : integer;
+    BlueValue : integer;
+    AlphaVAlue : integer;
+    DraggingValue : (None,Red,Green,Blue,Alpha);
+    procedure SetColor(const val : THomogeneousFltVector);
+    function GetColor : THomogeneousFltVector;
+    procedure DrawContents;
+    procedure DragColorSliderToPosition(XPos : integer);
+    procedure ContentsChanged;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property Color : THomogeneousFltVector read GetColor write SetColor;
+  published
+    property OnChange : TNotifyEvent read FOnChange write FOnChange;
+  end;
+
+//--------------------------------------------------------------------
+implementation
+//--------------------------------------------------------------------
+
+{$R *.dfm}
+
+const
+  MaxColorValue = 255;
+  MaxAlphaValue = 1000;
+
+  ColorSliderLeft = 40;
+  ColorSliderWidth = 128;
+  ColorSliderHeight = 16;
+  ColorViewHeight = 7;
+  ColorSliderMaxValue = ColorSliderWidth - 2;
+
+  RTop = 8;
+  GTop = 30;
+  BTop = 52;
+  ATop = 74;
+
+  PreviewPanelLeft = 216;
+  PreviewPanelTop = 10;
+  PreviewPanelWidth = 65;
+  PreviewPanelHeight = 74;
+
+  AlphaCheckSize = 9;
+  AlphaChecksHigh = 4;
+  AlphaChecksWide = 7;
+
+procedure TRColorEditor.TBEChange(Sender: TObject);
+begin
+   PAPreview.Color := RGB(RedValue, GreenValue, BlueValue);
+   if (not updating) and Assigned(FOnChange) then FOnChange(Self);
+end;
+
+procedure TRColorEditor.SetColor(const val : THomogeneousFltVector);
+begin
+  RedValue:=Round(val.X*255);
+  GreenValue:=Round(val.Y*255);
+  BlueValue:=Round(val.Z*255);
+  AlphaValue:=Round(val.W*1000);
+
+  ContentsChanged;
+end;
+
+function TRColorEditor.GetColor : THomogeneousFltVector;
+begin
+   Result:=VectorMake(RedValue/255, GreenValue/255, BlueValue/255,
+                      AlphaValue/1000);
+end;
+
+procedure TRColorEditor.PAPreviewDblClick(Sender: TObject);
+begin
+   ColorDialog.Color := PAPreview.Color;
+   if ColorDialog.Execute then
+      SetColor(ConvertWinColor(ColorDialog.Color));
+end;
+
+procedure TRColorEditor.ColorEditorPaintBoxPaint(Sender: TObject);
+begin
+  with ColorEditorPaintBox,ColorEditorPaintBox.Canvas do
+  begin
+    Draw(0,0,WorkBitmap);
+  end;
+  RedEdit.Height := 16;
+  GreenEdit.Height := 16;
+  BlueEdit.Height := 16;
+  AlphaEdit.Height := 16;
+end;
+
+constructor TRColorEditor.Create(AOwner: TComponent);
+begin
+  inherited;
+  WorkBitmap := TBitmap.Create;
+  WorkBitmap.PixelFormat := pf24bit;
+  WorkBitmap.HandleType := bmDib;
+
+  RedValue := 200;
+  GreenValue := 120;
+  BlueValue := 60;
+  AlphaValue := 450;
+end;
+
+destructor TRColorEditor.Destroy;
+begin
+  inherited;
+  WorkBitmap.Free;
+end;
+
+procedure TRColorEditor.FrameResize(Sender: TObject);
+begin
+  WorkBitmap.Width := ColorEditorPaintBox.Width;
+  WorkBitmap.Height := ColorEditorPaintBox.Height;
+  With WorkBitmap.Canvas do
+  begin
+    Pen.Color := clLime;
+    MoveTo(0,0);
+    LineTo(Width-1,Height-1);
+    MoveTo(Width-1,0);
+    LineTo(0,Height-1);
+  end;
+  DrawCOntents;
+
+  // Edits have an annoying habit of forgetting their height if they are small
+  RedEdit.Height := 18;
+  GreenEdit.Height := 18;
+  BlueEdit.Height := 18;
+  AlphaEdit.Height := 18;
+end;
+
+function ColorValueToColorViewPosition(ColorValue : integer) : integer;
+begin
+  Result := Round( (ColorSliderMaxValue/(MaxColorValue+1)) * ColorValue);
+end;
+
+function AlphaValueToColorViewPosition(AlphaValue : integer) : integer;
+begin
+  Result := Round( (ColorSliderMaxValue/(MaxAlphaValue+1)) * AlphaValue);
+end;
+
+function ColorViewPositionToColorValue(ColorViewPosition : integer) : integer;
+begin
+  if ColorViewPosition < 0 then ColorViewPosition := 0;
+  if ColorViewPosition > ColorSliderMaxValue then ColorViewPosition := ColorSliderMaxValue;
+
+  Result := Round(ColorViewPosition / (ColorSliderMaxValue/(MaxColorValue)));
+end;
+
+function ColorViewPositionToAlphaValue(ColorViewPosition : integer) : integer;
+begin
+  if ColorViewPosition < 0 then ColorViewPosition := 0;
+  if ColorViewPosition > ColorSliderMaxValue then ColorViewPosition := ColorSliderMaxValue;
+  Result := Round(ColorViewPosition / (ColorSliderMaxValue/(MaxAlphaValue)));
+end;
+
+procedure TRColorEditor.DrawContents;
+var
+  Position : integer;
+  tx,ty : integer;
+  RViewColor : tColor;
+  GViewColor : tColor;
+  BViewColor : tColor;
+  AViewColor : tColor;
+  ViewLevel : integer;
+  WhiteCheckColor : tColor;
+  BlackCheckColor : tColor;
+  AValue : single;
+begin
+  with WorkBitmap.Canvas do
+  begin
+    Brush.Color := clBtnFace;
+    FillRect(Rect(0,0,WorkBitmap.Width,WorkBitmap.Height));
+
+    Font.Color := clBlack;
+    Font.Name := 'Arial';
+    Font.Height := 14;
+
+    TextOut(6,5,'Red');
+    TextOut(6,26,'Green');
+    TextOut(6,48,'Blue');
+    TextOut(6,70,'Alpha');
+
+    Brush.Color := clBlack;
+    FrameRect(Rect(ColorSliderLeft,RTop,ColorSliderLeft+ColorSliderWidth,RTop+ColorViewHeight));
+    FrameRect(Rect(ColorSliderLeft,GTop,ColorSliderLeft+ColorSliderWidth,GTop+ColorViewHeight));
+    FrameRect(Rect(ColorSliderLeft,BTop,ColorSliderLeft+ColorSliderWidth,BTop+ColorViewHeight));
+    FrameRect(Rect(ColorSliderLeft,ATop,ColorSliderLeft+ColorSliderWidth,ATop+ColorViewHeight));
+
+    // Color View Frames
+    Pen.Color := clBtnShadow;
+    PolyLine([  Point(ColorSliderLeft-1,RTop+ColorViewHeight),
+                Point(ColorSliderLeft-1,RTop-1),
+                Point(ColorSliderLeft+ColorSliderWidth+1,RTop-1)  ]);
+
+    PolyLine([  Point(ColorSliderLeft-1,GTop+ColorViewHeight),
+                Point(ColorSliderLeft-1,GTop-1),
+                Point(ColorSliderLeft+ColorSliderWidth+1,GTop-1)  ]);
+
+    PolyLine([  Point(ColorSliderLeft-1,BTop+ColorViewHeight),
+                Point(ColorSliderLeft-1,BTop-1),
+                Point(ColorSliderLeft+ColorSliderWidth+1,BTop-1)  ]);
+
+    PolyLine([  Point(ColorSliderLeft-1,ATop+ColorViewHeight),
+                Point(ColorSliderLeft-1,ATop-1),
+                Point(ColorSliderLeft+ColorSliderWidth+1,ATop-1)  ]);
+
+    Pen.Color := clBtnHighlight;
+
+    PolyLine([  Point(ColorSliderLeft,RTop+ColorViewHeight),
+                Point(ColorSliderLeft+ColorSliderWidth,RTop+ColorViewHeight),
+                Point(ColorSliderLeft+ColorSliderWidth,RTop) ]);
+
+    PolyLine([  Point(ColorSliderLeft,GTop+ColorViewHeight),
+                Point(ColorSliderLeft+ColorSliderWidth,GTop+ColorViewHeight),
+                Point(ColorSliderLeft+ColorSliderWidth,GTop) ]);
+
+    PolyLine([  Point(ColorSliderLeft,BTop+ColorViewHeight),
+                Point(ColorSliderLeft+ColorSliderWidth,BTop+ColorViewHeight),
+                Point(ColorSliderLeft+ColorSliderWidth,BTop) ]);
+
+    PolyLine([  Point(ColorSliderLeft,ATop+ColorViewHeight),
+                Point(ColorSliderLeft+ColorSliderWidth,ATop+ColorViewHeight),
+                Point(ColorSliderLeft+ColorSliderWidth,ATop) ]);
+
+  // Color pointer triangles
+
+    Pen.Color := clBlack;
+    Position:=ColorValueToColorViewPosition(RedValue) + ColorSliderLeft;
+    PolyLine([ Point(Position,RTop+ColorViewHeight+2),
+               Point(Position+6,RTop+ColorViewHeight+8),
+               Point(Position-6,RTop+ColorViewHeight+8),
+               Point(Position,RTop+ColorViewHeight+2)]);
+
+    Position:=ColorValueToColorViewPosition(GreenValue) + ColorSliderLeft;
+    PolyLine([ Point(Position,GTop+ColorViewHeight+2),
+               Point(Position+6,GTop+ColorViewHeight+8),
+               Point(Position-6,GTop+ColorViewHeight+8),
+               Point(Position,GTop+ColorViewHeight+2)]);
+
+    Position:=ColorValueToColorViewPosition(BlueValue) + ColorSliderLeft;
+    PolyLine([ Point(Position,BTop+ColorViewHeight+2),
+               Point(Position+6,BTop+ColorViewHeight+8),
+               Point(Position-6,BTop+ColorViewHeight+8),
+               Point(Position,BTop+ColorViewHeight+2)]);
+
+    Position:=AlphaValueToColorViewPosition(AlphaValue) + ColorSliderLeft;
+    PolyLine([ Point(Position,ATop+ColorViewHeight+2),
+               Point(Position+6,ATop+ColorViewHeight+8),
+               Point(Position-6,ATop+ColorViewHeight+8),
+               Point(Position,ATop+ColorViewHeight+2)]);
+
+    // Color view spectrums
+    For tx := 1 to ColorSliderWidth - 2 do
+    begin
+      ViewLevel := (tx * 256) div ColorSliderWidth;
+      AViewColor := (ViewLevel) + (ViewLevel shl 8) + (viewLevel shl 16);
+      RViewColor := (ViewLevel) + (GreenValue Shl 8) + (BlueValue Shl 16);
+      GViewColor := (RedValue) + (ViewLevel shl 8) + (BlueValue Shl 16);
+      BViewColor := (RedValue) + (GreenValue Shl 8) + (ViewLevel Shl 16);
+      For ty := 1 to ColorViewHeight -2 do
+      begin
+         Pixels[ColorSliderLeft+tx,Rtop+Ty]:=RViewCOlor;
+         Pixels[ColorSliderLeft+tx,Gtop+Ty]:=GViewColor;
+         Pixels[ColorSliderLeft+tx,Btop+Ty]:=BViewColor;
+         Pixels[ColorSliderLeft+tx,Atop+Ty]:=AViewColor;
+      end;
+    end;
+
+    // Color preview panel
+    Pen.Color := clBtnShadow;
+    PolyLine([  Point(PreviewPanelLeft-1,PreviewPanelTop+PreviewPanelHeight),
+                Point(PreviewPanelLeft-1,PreviewPanelTop-1),
+                Point(PreviewPanelLeft+PreviewPanelWidth,PreviewPanelTop-1) ]);
+    Pen.Color := clBtnHighlight;
+    PolyLine([  Point(PreviewPanelLeft,PreviewPanelTop+PreviewPanelHeight),
+                Point(PreviewPanelLeft+PreviewPanelWidth,PreviewPanelTop+PreviewPanelHeight),
+                Point(PreviewPanelLeft+PreviewPanelWidth,PreviewPanelTop) ]);
+
+    Brush.Color := (RedValue) + (GreenValue Shl 8) + (BlueValue Shl 16);
+    Pen.Color := clBlack;
+    Rectangle(Rect(PreviewPanelLeft,PreviewPanelTop,PreviewPanelLeft+PreviewPanelWidth,PreviewPanelTop+PreviewPanelHeight div 2 ) );
+    PolyLine([  Point(PreviewPanelLeft,PreviewPanelTop+PreviewPanelHeight div 2 -1),
+                Point(PreviewPanelLeft,PreviewPanelTop+PreviewPanelHeight -1),
+                Point(PreviewPanelLeft+PreviewPanelWidth-1,PreviewPanelTop+PreviewPanelHeight-1),
+                Point(PreviewPanelLeft+PreviewPanelWidth-1,PreviewPanelTop+PreviewPanelHeight div 2-1)
+             ]);
+
+    AValue := AlphaValue / MaxAlphaValue;
+    BlackCheckColor := Round(RedValue * Avalue) + Round(GreenValue*AValue) shl 8 + Round(BlueValue*AValue) shl 16;
+    WhiteCheckColor := Round(RedValue * Avalue + (255 * (1-AValue))) + Round(GreenValue*AValue + (255 * (1-AValue))) shl 8 +  Round(BlueValue*AValue + (255 * (1-AValue))) shl 16;
+    For ty := 0 to AlphaChecksHigh - 1 do
+    begin
+      For tx := 0 to AlphaChecksWide - 1 do
+      begin
+        if (tx+ty) and 1 = 0 then Brush.Color := BlackCheckColor else Brush.Color := WhiteCheckColor;
+        FillRect(Rect(  PreviewPanelLeft+1 + tx*AlphaCheckSize,
+                        PreviewPanelTop+PreviewPanelHeight Div 2 + ty*AlphaCheckSize,
+                        PreviewPanelLeft+1 + (tx+1)*AlphaCheckSize,
+                        PreviewPanelTop+PreviewPanelHeight Div 2 + (ty+1)*AlphaCheckSize
+                      ));
+      end;
+    end;
+  end;
+end;
+
+procedure TRColorEditor.ColorEditorPaintBoxMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  DraggingValue := None;
+  if Button = TMouseButton(mbLeft) then
+  begin
+    if (X > ColorSliderLeft-5) and ( X < (ColorSliderLeft+ColorSliderMaxValue+5)) then
+    begin
+      // In X range For Color Sliders
+      If (Y > RTop) and ( (RTop+ColorSliderHeight) > Y ) then DraggingValue := Red;
+      If (Y > GTop) and ( (GTop+ColorSliderHeight) > Y ) then DraggingValue := Green;
+      If (Y > BTop) and ( (BTop+ColorSliderHeight) > Y ) then DraggingValue := Blue;
+      If (Y > ATop) and ( (ATop+ColorSliderHeight) > Y ) then DraggingValue := Alpha;
+
+      If DraggingValue <> None then DragColorSliderToPosition(X-ColorSliderLeft-1);
+    end
+  end;
+end;
+
+procedure TRColorEditor.DragColorSliderToPosition(XPos: integer);
+begin
+  case DraggingValue of
+    Red: RedValue := ColorViewPositionToColorValue(XPos);
+    Green: GreenValue := ColorViewPositionToColorValue(XPos);
+    Blue: BlueValue := ColorViewPositionToColorValue(XPos);
+    Alpha: AlphaValue := ColorViewPositionToAlphaValue(XPos);
+  end;
+  ContentsChanged;
+end;
+
+procedure TRColorEditor.ContentsChanged;
+begin
+  if Not Updating then
+  begin
+    UpDating := True;
+    DrawContents;
+    ColorEditorPaintBox.Canvas.Draw(0,0,WorkBitmap);
+    RedEdit.Text := IntToStr(RedValue);
+    GreenEdit.Text := IntToStr(GreenValue);
+    BlueEdit.Text := IntToStr(BlueValue);
+    AlphaEdit.Text := IntToStr(AlphaValue);
+
+    PaPreview.Color := RedValue + (GreenValue Shl 8) + (BlueValue Shl 16);
+    UpDating := False;
+
+    TBEChange(Self);
+  end;
+end;
+
+procedure TRColorEditor.ColorEditorPaintBoxMouseMove(Sender: TObject;
+  Shift: TShiftState; X, Y: Integer);
+begin
+ if DraggingValue <> None then DragColorSliderToPosition(X-ColorSliderLeft-1);
+end;
+
+procedure TRColorEditor.ColorEditorPaintBoxMouseUp(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  if Button = TMouseButton(mbLeft) then DraggingValue := None;
+end;
+
+procedure TRColorEditor.RedEditChange(Sender: TObject);
+var
+  IntValue : integer;
+begin
+  IntValue := StrToIntDef(RedEdit.Text,-1);
+
+  If (IntValue < 0) or (IntValue > MaxColorValue) then
+  begin
+    RedEdit.Color:=clRed;
+  end
+  else
+  begin
+    RedEdit.Color:=clWindow;
+    RedValue := IntValue;
+    ContentsChanged;
+  end;
+
+end;
+
+procedure TRColorEditor.GreenEditChange(Sender: TObject);
+var
+  IntValue : integer;
+begin
+  IntValue := StrToIntDef(GreenEdit.Text,-1);
+
+  If (IntValue < 0) or (IntValue > MaxColorValue) then
+  begin
+    GreenEdit.Color:=clRed;
+  end
+  else
+  begin
+    GreenEdit.Color:=clWindow;
+    GreenValue := IntValue;
+    ContentsChanged;
+  end;
+
+end;
+
+procedure TRColorEditor.BlueEditChange(Sender: TObject);
+var
+  IntValue : integer;
+begin
+  IntValue := StrToIntDef(BlueEdit.Text,-1);
+
+  If (IntValue < 0) or (IntValue > MaxColorValue) then
+  begin
+    BlueEdit.Color:=clRed;
+  end
+  else
+  begin
+    BlueEdit.Color:=clWindow;
+    BlueValue := IntValue;
+    ContentsChanged;
+  end;
+
+end;
+
+procedure TRColorEditor.AlphaEditChange(Sender: TObject);
+var
+  IntValue : integer;
+begin
+  IntValue := StrToIntDef(AlphaEdit.Text,-1);
+
+  If (IntValue < 0) or (IntValue > MaxAlphaValue) then
+  begin
+    AlphaEdit.Color:=clRed;
+  end
+  else
+  begin
+    AlphaEdit.Color:=clWindow;
+    AlphaValue := IntValue;
+    ContentsChanged;
+  end;
+
+end;
+
+end.

+ 114 - 114
Source/FRFaceEditor.dfm → Source/VCL/FRFaceEditor.dfm

@@ -1,114 +1,114 @@
-object RFaceEditor: TRFaceEditor
-  Left = 0
-  Top = 0
-  Width = 355
-  Height = 247
-  TabOrder = 0
-  object Label1: TLabel
-    Left = 3
-    Top = 214
-    Width = 60
-    Height = 20
-    Caption = 'Shininess'
-  end
-  object PageControl: TPageControl
-    Left = 0
-    Top = 56
-    Width = 305
-    Height = 130
-    ActivePage = TSEmission
-    Images = ImageList
-    MultiLine = True
-    TabOrder = 0
-    object TSAmbient: TTabSheet
-      BorderWidth = 3
-      Caption = 'Ambient'
-      inline CEAmbiant: TRColorEditor
-        Left = 0
-        Top = 0
-        Width = 289
-        Height = 95
-        AutoSize = True
-        TabOrder = 0
-        TabStop = True
-      end
-    end
-    object TSDiffuse: TTabSheet
-      BorderWidth = 3
-      Caption = 'Diffuse'
-      ImageIndex = 1
-      inline CEDiffuse: TRColorEditor
-        Left = 0
-        Top = 0
-        Width = 289
-        Height = 95
-        AutoSize = True
-        TabOrder = 0
-        TabStop = True
-      end
-    end
-    object TSEmission: TTabSheet
-      BorderWidth = 3
-      Caption = 'Emission'
-      ImageIndex = 2
-      inline CEEmission: TRColorEditor
-        Left = 0
-        Top = 0
-        Width = 341
-        Height = 98
-        AutoSize = True
-        TabOrder = 0
-        TabStop = True
-        ExplicitWidth = 341
-        ExplicitHeight = 98
-        inherited ColorEditorPaintBox: TPaintBox
-          Width = 341
-          Height = 98
-          ExplicitWidth = 341
-          ExplicitHeight = 98
-        end
-      end
-    end
-    object TSSpecular: TTabSheet
-      BorderWidth = 3
-      Caption = 'Specular'
-      ImageIndex = 3
-      inline CESpecular: TRColorEditor
-        Left = 0
-        Top = 0
-        Width = 289
-        Height = 95
-        AutoSize = True
-        TabOrder = 0
-        TabStop = True
-      end
-    end
-  end
-  inline TBEShininess: TRTrackBarEdit
-    Left = 50
-    Top = 0
-    Width = 201
-    Height = 33
-    TabOrder = 1
-    ExplicitLeft = 50
-    ExplicitWidth = 201
-    ExplicitHeight = 33
-    inherited TrackBar: TTrackBar
-      Left = -2
-      Top = 1
-      Max = 128
-      Frequency = 16
-      OnChange = TBEShininessTrackBarChange
-      ExplicitLeft = -2
-      ExplicitTop = 1
-    end
-    inherited Edit: TEdit
-      Left = 160
-      ExplicitLeft = 160
-    end
-  end
-  object ImageList: TImageList
-    Left = 264
-    Top = 8
-  end
-end
+object RFaceEditor: TRFaceEditor
+  Left = 0
+  Top = 0
+  Width = 355
+  Height = 247
+  TabOrder = 0
+  object Label1: TLabel
+    Left = 3
+    Top = 214
+    Width = 60
+    Height = 20
+    Caption = 'Shininess'
+  end
+  object PageControl: TPageControl
+    Left = 0
+    Top = 56
+    Width = 305
+    Height = 130
+    ActivePage = TSEmission
+    Images = ImageList
+    MultiLine = True
+    TabOrder = 0
+    object TSAmbient: TTabSheet
+      BorderWidth = 3
+      Caption = 'Ambient'
+      inline CEAmbiant: TRColorEditor
+        Left = 0
+        Top = 0
+        Width = 289
+        Height = 95
+        AutoSize = True
+        TabOrder = 0
+        TabStop = True
+      end
+    end
+    object TSDiffuse: TTabSheet
+      BorderWidth = 3
+      Caption = 'Diffuse'
+      ImageIndex = 1
+      inline CEDiffuse: TRColorEditor
+        Left = 0
+        Top = 0
+        Width = 289
+        Height = 95
+        AutoSize = True
+        TabOrder = 0
+        TabStop = True
+      end
+    end
+    object TSEmission: TTabSheet
+      BorderWidth = 3
+      Caption = 'Emission'
+      ImageIndex = 2
+      inline CEEmission: TRColorEditor
+        Left = 0
+        Top = 0
+        Width = 341
+        Height = 98
+        AutoSize = True
+        TabOrder = 0
+        TabStop = True
+        ExplicitWidth = 341
+        ExplicitHeight = 98
+        inherited ColorEditorPaintBox: TPaintBox
+          Width = 341
+          Height = 98
+          ExplicitWidth = 341
+          ExplicitHeight = 98
+        end
+      end
+    end
+    object TSSpecular: TTabSheet
+      BorderWidth = 3
+      Caption = 'Specular'
+      ImageIndex = 3
+      inline CESpecular: TRColorEditor
+        Left = 0
+        Top = 0
+        Width = 289
+        Height = 95
+        AutoSize = True
+        TabOrder = 0
+        TabStop = True
+      end
+    end
+  end
+  inline TBEShininess: TRTrackBarEdit
+    Left = 50
+    Top = 0
+    Width = 201
+    Height = 33
+    TabOrder = 1
+    ExplicitLeft = 50
+    ExplicitWidth = 201
+    ExplicitHeight = 33
+    inherited TrackBar: TTrackBar
+      Left = -2
+      Top = 1
+      Max = 128
+      Frequency = 16
+      OnChange = TBEShininessTrackBarChange
+      ExplicitLeft = -2
+      ExplicitTop = 1
+    end
+    inherited Edit: TEdit
+      Left = 160
+      ExplicitLeft = 160
+    end
+  end
+  object ImageList: TImageList
+    Left = 264
+    Top = 8
+  end
+end

+ 151 - 151
Source/FRFaceEditor.pas → Source/VCL/FRFaceEditor.pas

@@ -1,151 +1,151 @@
-//
-// The graphics platform GLScene https://github.com/glscene
-//
-unit FRFaceEditor;
-
-(* Editor frame for a TGLFaceProperties. *)
-
-interface
-
-{$I Scena.inc}
-
-uses
-  WinApi.Windows,
-  System.Classes,
-  System.SysUtils,
-  System.ImageList,
-  VCL.Forms,
-  VCL.ComCtrls,
-  VCL.StdCtrls,
-  VCL.ImgList,
-  VCL.Controls,
-  VCL.Graphics,
-
-  FRTrackBarEdit,
-  FRColorEditor,
-  GLS.Texture,
-  GLS.Material,
-  GLS.State;
-
-type
-  TRFaceEditor = class(TFrame)
-    PageControl: TPageControl;
-    TSAmbient: TTabSheet;
-    TSDiffuse: TTabSheet;
-    TSEmission: TTabSheet;
-    TSSpecular: TTabSheet;
-    CEAmbiant: TRColorEditor;
-    Label1: TLabel;
-    TBEShininess: TRTrackBarEdit;
-    ImageList: TImageList;
-    CEDiffuse: TRColorEditor;
-    CEEmission: TRColorEditor;
-    CESpecular: TRColorEditor;
-    procedure TBEShininessTrackBarChange(Sender: TObject);
-  private
-    FOnChange: TNotifyEvent;
-    Updating: Boolean;
-    FFaceProperties: TGLFaceProperties;
-    procedure SetGLFaceProperties(const val: TGLFaceProperties);
-    procedure OnColorChange(Sender: TObject);
-  public
-    constructor Create(AOwner: TComponent); override;
-    destructor Destroy; override;
-    property OnChange: TNotifyEvent read FOnChange write FOnChange;
-    property FaceProperties: TGLFaceProperties read FFaceProperties
-      write SetGLFaceProperties;
-  end;
-
-// ------------------------------------------------------
-implementation
-// ------------------------------------------------------
-
-{$R *.dfm}
-
-constructor TRFaceEditor.Create(AOwner: TComponent);
-begin
-  inherited;
-  FFaceProperties := TGLFaceProperties.Create(nil);
-  CEAmbiant.OnChange := OnColorChange;
-  CEDiffuse.OnChange := OnColorChange;
-  CEEmission.OnChange := OnColorChange;
-  CESpecular.OnChange := OnColorChange;
-  PageControl.DoubleBuffered := True;
-end;
-
-destructor TRFaceEditor.Destroy;
-begin
-  FFaceProperties.Free;
-  inherited;
-end;
-
-procedure TRFaceEditor.OnColorChange(Sender: TObject);
-var
-  bmp: TBitmap;
-  bmpRect: TRect;
-
-  procedure AddBitmapFor(ce: TRColorEditor);
-  begin
-    with bmp.Canvas do
-    begin
-      Brush.Color := ce.PAPreview.Color;
-      FillRect(bmpRect);
-    end;
-    ImageList.Add(bmp, nil);
-  end;
-
-begin
-  if not Updating then
-  begin
-    // Update imageList
-    bmp := TBitmap.Create;
-    try
-      bmp.Width := 16;
-      bmp.Height := 16;
-      bmpRect := Rect(0, 0, 16, 16);
-      ImageList.Clear;
-      AddBitmapFor(CEAmbiant);
-      FFaceProperties.Ambient.Color := CEAmbiant.Color;
-      AddBitmapFor(CEDiffuse);
-      FFaceProperties.Diffuse.Color := CEDiffuse.Color;
-      AddBitmapFor(CEEmission);
-      FFaceProperties.Emission.Color := CEEmission.Color;
-      AddBitmapFor(CESpecular);
-      FFaceProperties.Specular.Color := CESpecular.Color;
-    finally
-      bmp.Free;
-    end;
-    // Trigger onChange
-    if Assigned(FOnChange) then
-      FOnChange(Self);
-  end;
-end;
-
-procedure TRFaceEditor.TBEShininessTrackBarChange(Sender: TObject);
-begin
-  if not Updating then
-  begin
-    TBEShininess.TrackBarChange(Sender);
-    FFaceProperties.Shininess := TBEShininess.Value;
-    if Assigned(FOnChange) then
-      FOnChange(Self);
-  end;
-end;
-
-procedure TRFaceEditor.SetGLFaceProperties(const val: TGLFaceProperties);
-begin
-  Updating := True;
-  try
-    CEAmbiant.Color := val.Ambient.Color;
-    CEDiffuse.Color := val.Diffuse.Color;
-    CEEmission.Color := val.Emission.Color;
-    CESpecular.Color := val.Specular.Color;
-    TBEShininess.Value := val.Shininess;
-  finally
-    Updating := False;
-  end;
-  OnColorChange(Self);
-  TBEShininessTrackBarChange(Self);
-end;
-
-end.
+//
+// The graphics platform GLScene https://github.com/glscene
+//
+unit FRFaceEditor;
+
+(* Editor frame for a TGLFaceProperties. *)
+
+interface
+
+{$I Scena.inc}
+
+uses
+  WinApi.Windows,
+  System.Classes,
+  System.SysUtils,
+  System.ImageList,
+  VCL.Forms,
+  VCL.ComCtrls,
+  VCL.StdCtrls,
+  VCL.ImgList,
+  VCL.Controls,
+  VCL.Graphics,
+
+  FRTrackBarEdit,
+  FRColorEditor,
+  GLS.Texture,
+  GLS.Material,
+  GLS.State;
+
+type
+  TRFaceEditor = class(TFrame)
+    PageControl: TPageControl;
+    TSAmbient: TTabSheet;
+    TSDiffuse: TTabSheet;
+    TSEmission: TTabSheet;
+    TSSpecular: TTabSheet;
+    CEAmbiant: TRColorEditor;
+    Label1: TLabel;
+    TBEShininess: TRTrackBarEdit;
+    ImageList: TImageList;
+    CEDiffuse: TRColorEditor;
+    CEEmission: TRColorEditor;
+    CESpecular: TRColorEditor;
+    procedure TBEShininessTrackBarChange(Sender: TObject);
+  private
+    FOnChange: TNotifyEvent;
+    Updating: Boolean;
+    FFaceProperties: TGLFaceProperties;
+    procedure SetGLFaceProperties(const val: TGLFaceProperties);
+    procedure OnColorChange(Sender: TObject);
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+    property FaceProperties: TGLFaceProperties read FFaceProperties
+      write SetGLFaceProperties;
+  end;
+
+// ------------------------------------------------------
+implementation
+// ------------------------------------------------------
+
+{$R *.dfm}
+
+constructor TRFaceEditor.Create(AOwner: TComponent);
+begin
+  inherited;
+  FFaceProperties := TGLFaceProperties.Create(nil);
+  CEAmbiant.OnChange := OnColorChange;
+  CEDiffuse.OnChange := OnColorChange;
+  CEEmission.OnChange := OnColorChange;
+  CESpecular.OnChange := OnColorChange;
+  PageControl.DoubleBuffered := True;
+end;
+
+destructor TRFaceEditor.Destroy;
+begin
+  FFaceProperties.Free;
+  inherited;
+end;
+
+procedure TRFaceEditor.OnColorChange(Sender: TObject);
+var
+  bmp: TBitmap;
+  bmpRect: TRect;
+
+  procedure AddBitmapFor(ce: TRColorEditor);
+  begin
+    with bmp.Canvas do
+    begin
+      Brush.Color := ce.PAPreview.Color;
+      FillRect(bmpRect);
+    end;
+    ImageList.Add(bmp, nil);
+  end;
+
+begin
+  if not Updating then
+  begin
+    // Update imageList
+    bmp := TBitmap.Create;
+    try
+      bmp.Width := 16;
+      bmp.Height := 16;
+      bmpRect := Rect(0, 0, 16, 16);
+      ImageList.Clear;
+      AddBitmapFor(CEAmbiant);
+      FFaceProperties.Ambient.Color := CEAmbiant.Color;
+      AddBitmapFor(CEDiffuse);
+      FFaceProperties.Diffuse.Color := CEDiffuse.Color;
+      AddBitmapFor(CEEmission);
+      FFaceProperties.Emission.Color := CEEmission.Color;
+      AddBitmapFor(CESpecular);
+      FFaceProperties.Specular.Color := CESpecular.Color;
+    finally
+      bmp.Free;
+    end;
+    // Trigger onChange
+    if Assigned(FOnChange) then
+      FOnChange(Self);
+  end;
+end;
+
+procedure TRFaceEditor.TBEShininessTrackBarChange(Sender: TObject);
+begin
+  if not Updating then
+  begin
+    TBEShininess.TrackBarChange(Sender);
+    FFaceProperties.Shininess := TBEShininess.Value;
+    if Assigned(FOnChange) then
+      FOnChange(Self);
+  end;
+end;
+
+procedure TRFaceEditor.SetGLFaceProperties(const val: TGLFaceProperties);
+begin
+  Updating := True;
+  try
+    CEAmbiant.Color := val.Ambient.Color;
+    CEDiffuse.Color := val.Diffuse.Color;
+    CEEmission.Color := val.Emission.Color;
+    CESpecular.Color := val.Specular.Color;
+    TBEShininess.Value := val.Shininess;
+  finally
+    Updating := False;
+  end;
+  OnColorChange(Self);
+  TBEShininessTrackBarChange(Self);
+end;
+
+end.

+ 176 - 176
Source/FRMaterialPreview.dfm → Source/VCL/FRMaterialPreview.dfm

@@ -1,176 +1,176 @@
-object RMaterialPreview: TRMaterialPreview
-  Left = 0
-  Top = 0
-  Width = 202
-  Height = 229
-  AutoSize = True
-  TabOrder = 0
-  object CBObject: TComboBox
-    Left = 0
-    Top = 0
-    Width = 60
-    Height = 28
-    Style = csDropDownList
-    TabOrder = 0
-    OnChange = CBObjectChange
-    Items.Strings = (
-      'Cube'
-      'Sphere'
-      'Teapot')
-  end
-  object CBBackground: TComboBox
-    Left = 60
-    Top = 0
-    Width = 142
-    Height = 28
-    Style = csDropDownList
-    TabOrder = 1
-    OnChange = CBBackgroundChange
-    Items.Strings = (
-      'on a pattern background'
-      'on a white background'
-      'on a black background'
-      'on a blue background'
-      'on a red background'
-      'on a green background')
-  end
-  object GLSceneViewer: TGLSceneViewer
-    Left = 0
-    Top = 26
-    Width = 202
-    Height = 203
-    Camera = Camera
-    FieldOfView = 71.615516662597660000
-    PenAsTouch = False
-    TabOrder = 2
-  end
-  object GLScene: TGLScene
-    ObjectsSorting = osNone
-    Left = 24
-    Top = 32
-    object BackGroundSprite: TGLHUDSprite
-      Material.MaterialOptions = [moNoLighting]
-      Material.Texture.Image.Picture.Data = {
-        07544269746D617076080000424D760800000000000076000000280000004000
-        0000400000000100040000000000000800000000000000000000100000000000
-        000000000000000080000080000000808000800000008000800080800000C0C0
-        C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
-        FF00CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
-        5555EEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
-        DDDD4444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
-        1111000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
-        FFFF}
-      Material.Texture.Disabled = False
-      Rotation = 0.000000000000000000
-    end
-    object World: TGLDummyCube
-      CubeSize = 1.000000000000000000
-      object Cube: TGLCube
-        Material.MaterialLibrary = GLMaterialLibrary
-        Material.LibMaterialName = 'LibMaterial'
-        Direction.Coordinates = {FCFAF0B1D8B35D3FFEFFFF3E00000000}
-        Up.Coordinates = {D7B35DBFFFFF7F3ED7B3DDBE00000000}
-      end
-      object Sphere: TGLSphere
-        Material.MaterialLibrary = GLMaterialLibrary
-        Material.LibMaterialName = 'LibMaterial'
-        Radius = 0.800000011920929000
-      end
-      object Teapot: TGLTeapot
-        Material.MaterialLibrary = GLMaterialLibrary
-        Material.LibMaterialName = 'LibMaterial'
-        Scale.Coordinates = {00000040000000400000004000000000}
-      end
-    end
-    object Light: TGLDummyCube
-      Position.Coordinates = {0000000000004040000020410000803F}
-      CubeSize = 1.000000000000000000
-      object FireSphere: TGLSphere
-        Material.BackProperties.Shininess = 47
-        Material.FrontProperties.Ambient.Color = {A3A2223FCDCC4C3ECDCC4C3E0000803F}
-        Material.FrontProperties.Emission.Color = {D3D2523FA1A0203F000000000000803F}
-        Radius = 0.300000011920929000
-      end
-    end
-    object Camera: TGLCamera
-      DepthOfView = 100.000000000000000000
-      FocalLength = 140.000000000000000000
-      TargetObject = Cube
-      Position.Coordinates = {0000000000000000000020410000803F}
-      object LightSource: TGLLightSource
-        ConstAttenuation = 1.000000000000000000
-        Specular.Color = {0000803F0000803F0000803F0000803F}
-        SpotCutOff = 180.000000000000000000
-      end
-    end
-  end
-  object GLMaterialLibrary: TGLMaterialLibrary
-    Materials = <
-      item
-        Name = 'LibMaterial'
-        Tag = 0
-      end>
-    Left = 136
-    Top = 32
-  end
-end
+object RMaterialPreview: TRMaterialPreview
+  Left = 0
+  Top = 0
+  Width = 202
+  Height = 229
+  AutoSize = True
+  TabOrder = 0
+  object CBObject: TComboBox
+    Left = 0
+    Top = 0
+    Width = 60
+    Height = 28
+    Style = csDropDownList
+    TabOrder = 0
+    OnChange = CBObjectChange
+    Items.Strings = (
+      'Cube'
+      'Sphere'
+      'Teapot')
+  end
+  object CBBackground: TComboBox
+    Left = 60
+    Top = 0
+    Width = 142
+    Height = 28
+    Style = csDropDownList
+    TabOrder = 1
+    OnChange = CBBackgroundChange
+    Items.Strings = (
+      'on a pattern background'
+      'on a white background'
+      'on a black background'
+      'on a blue background'
+      'on a red background'
+      'on a green background')
+  end
+  object GLSceneViewer: TGLSceneViewer
+    Left = 0
+    Top = 26
+    Width = 202
+    Height = 203
+    Camera = Camera
+    FieldOfView = 71.615516662597660000
+    PenAsTouch = False
+    TabOrder = 2
+  end
+  object GLScene: TGLScene
+    ObjectsSorting = osNone
+    Left = 24
+    Top = 32
+    object BackGroundSprite: TGLHUDSprite
+      Material.MaterialOptions = [moNoLighting]
+      Material.Texture.Image.Picture.Data = {
+        07544269746D617076080000424D760800000000000076000000280000004000
+        0000400000000100040000000000000800000000000000000000100000000000
+        000000000000000080000080000000808000800000008000800080800000C0C0
+        C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF
+        FF00CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555CCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAA555555555555
+        5555EEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDDEEEEEEEEEEEEEEEE33333333333333332222222222222222DDDDDDDDDDDD
+        DDDD4444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        11114444444444444444CCCCCCCCCCCCCCCC9999999999999999111111111111
+        1111000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF000000000000000088888888888888887777777777777777FFFFFFFFFFFF
+        FFFF}
+      Material.Texture.Disabled = False
+      Rotation = 0.000000000000000000
+    end
+    object World: TGLDummyCube
+      CubeSize = 1.000000000000000000
+      object Cube: TGLCube
+        Material.MaterialLibrary = GLMaterialLibrary
+        Material.LibMaterialName = 'LibMaterial'
+        Direction.Coordinates = {FCFAF0B1D8B35D3FFEFFFF3E00000000}
+        Up.Coordinates = {D7B35DBFFFFF7F3ED7B3DDBE00000000}
+      end
+      object Sphere: TGLSphere
+        Material.MaterialLibrary = GLMaterialLibrary
+        Material.LibMaterialName = 'LibMaterial'
+        Radius = 0.800000011920929000
+      end
+      object Teapot: TGLTeapot
+        Material.MaterialLibrary = GLMaterialLibrary
+        Material.LibMaterialName = 'LibMaterial'
+        Scale.Coordinates = {00000040000000400000004000000000}
+      end
+    end
+    object Light: TGLDummyCube
+      Position.Coordinates = {0000000000004040000020410000803F}
+      CubeSize = 1.000000000000000000
+      object FireSphere: TGLSphere
+        Material.BackProperties.Shininess = 47
+        Material.FrontProperties.Ambient.Color = {A3A2223FCDCC4C3ECDCC4C3E0000803F}
+        Material.FrontProperties.Emission.Color = {D3D2523FA1A0203F000000000000803F}
+        Radius = 0.300000011920929000
+      end
+    end
+    object Camera: TGLCamera
+      DepthOfView = 100.000000000000000000
+      FocalLength = 140.000000000000000000
+      TargetObject = Cube
+      Position.Coordinates = {0000000000000000000020410000803F}
+      object LightSource: TGLLightSource
+        ConstAttenuation = 1.000000000000000000
+        Specular.Color = {0000803F0000803F0000803F0000803F}
+        SpotCutOff = 180.000000000000000000
+      end
+    end
+  end
+  object GLMaterialLibrary: TGLMaterialLibrary
+    Materials = <
+      item
+        Name = 'LibMaterial'
+        Tag = 0
+      end>
+    Left = 136
+    Top = 32
+  end
+end

+ 183 - 183
Source/FRMaterialPreview.pas → Source/VCL/FRMaterialPreview.pas

@@ -1,183 +1,183 @@
-//
-// The graphics platform GLScene https://github.com/glscene
-//
-unit FRMaterialPreview;
-
-(* Material Preview frame *)
-
-interface
-
-{$I Scena.inc}
-
-uses
-  System.Types,
-  System.Classes,
-  Vcl.Graphics,
-  Vcl.Forms,
-  Vcl.StdCtrls,
-  Vcl.ComCtrls,
-  Vcl.Controls,
-
-  GLS.Scene,
-  Scena.VectorTypes,
-  GLS.Objects,
-  GLS.Texture,
-  GLS.HUDObjects,
-  GLS.SceneViewer,
-  GLS.GeomObjects,
-  GLS.Color,
-  GLS.Coordinates,
-  GLS.BaseClasses,
-  GLS.Material;
-
-type
-  TRMaterialPreview = class(TFrame)
-    GLScene: TGLScene;
-    GLSceneViewer: TGLSceneViewer;
-    CBObject: TComboBox;
-    Camera: TGLCamera;
-    Cube: TGLCube;
-    Sphere: TGLSphere;
-    LightSource: TGLLightSource;
-    CBBackground: TComboBox;
-    BackGroundSprite: TGLHUDSprite;
-    Teapot: TGLTeapot;
-    World: TGLDummyCube;
-    Light: TGLDummyCube;
-    FireSphere: TGLSphere;
-    GLMaterialLibrary: TGLMaterialLibrary;
-   
-    procedure CBObjectChange(Sender: TObject);
-    procedure CBBackgroundChange(Sender: TObject);
-    procedure SceneViewerMouseMove(Sender: TObject; Shift: TShiftState;
-      X, Y: Integer);
-    procedure SceneViewerMouseDown(Sender: TObject; Button: TMouseButton;
-      Shift: TShiftState; X, Y: Integer);
-    procedure SceneViewerMouseWheel(Sender: TObject; Shift: TShiftState;
-      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
-  private
-    FLibMaterial: TGLAbstractLibMaterial;
-    function GetMaterial: TGLMaterial;
-    procedure SetMaterial(const Value: TGLMaterial);
-    function GetLibMaterial: TGLAbstractLibMaterial;
-    procedure SetLibMaterial(const Value: TGLAbstractLibMaterial);
-  public
-    constructor Create(AOwner: TComponent); override;
-    property Material: TGLMaterial read GetMaterial write SetMaterial;
-    property LibMaterial: TGLAbstractLibMaterial read GetLibMaterial write SetLibMaterial;
-  end;
-
-// ------------------------------------------------------------------
-implementation
-// ------------------------------------------------------------------
-
-{$R *.dfm}
-
-var
-  MX, MY: Integer;
-
-constructor TRMaterialPreview.Create(AOwner: TComponent);
-begin
-  inherited;
-  BackGroundSprite.Position.X := GLSceneViewer.Width div 2;
-  BackGroundSprite.Position.Y := GLSceneViewer.Height div 2;
-  BackGroundSprite.Width := GLSceneViewer.Width;
-  BackGroundSprite.Height := GLSceneViewer.Height;
-
-  CBObject.ItemIndex := 0;
-  CBObjectChange(Self);
-  CBBackground.ItemIndex := 0;
-  CBBackgroundChange(Self);
-end;
-
-procedure TRMaterialPreview.CBObjectChange(Sender: TObject);
-var
-  i: Integer;
-begin
-  i := CBObject.ItemIndex;
-  Cube.Visible := i = 0;
-  Sphere.Visible := i = 1;
-  Teapot.Visible := i = 2;
-end;
-
-procedure TRMaterialPreview.CBBackgroundChange(Sender: TObject);
-var
-  bgColor: TColor;
-begin
-  case CBBackground.ItemIndex of
-    1: bgColor := clWhite;
-    2: bgColor := clBlack;
-    3: bgColor := clBlue;
-    4: bgColor := clRed;
-    5: bgColor := clGreen;
-  else
-    bgColor := clNone;
-  end;
-  with BackGroundSprite.Material do
-  begin
-    Texture.Disabled := (bgColor <> clNone);
-    FrontProperties.Diffuse.Color := ConvertWinColor(bgColor);
-  end;
-end;
-
-procedure TRMaterialPreview.SceneViewerMouseMove(Sender: TObject;
-  Shift: TShiftState; X, Y: Integer);
-begin
-  if (ssRight in Shift) and (ssLeft in Shift) then
-    Camera.AdjustDistanceToTarget(1 - 0.01 * (MY - Y))
-  else if (ssRight in Shift) or (ssLeft in Shift) then
-    Camera.MoveAroundTarget(Y - MY, X - MX);
-
-  MX := X;
-  MY := Y;
-end;
-
-procedure TRMaterialPreview.SceneViewerMouseDown(Sender: TObject;
-  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-begin
-  MX := X;
-  MY := Y;
-end;
-
-procedure TRMaterialPreview.SceneViewerMouseWheel(Sender: TObject;
-  Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
-  var Handled: Boolean);
-begin
-  Camera.AdjustDistanceToTarget(1 - 0.1 * (Abs(WheelDelta) / WheelDelta));
-end;
-
-function TRMaterialPreview.GetMaterial: TGLMaterial;
-begin
-  Result := GLMaterialLibrary.Materials[0].Material;
-end;
-
-procedure TRMaterialPreview.SetMaterial(const Value: TGLMaterial);
-begin
-  GLMaterialLibrary.Materials[0].Material.Assign(Value.GetActualPrimaryMaterial);
-end;
-
-function TRMaterialPreview.GetLibMaterial: TGLAbstractLibMaterial;
-begin
-  Result := FLibMaterial;
-end;
-
-procedure TRMaterialPreview.SetLibMaterial(const Value: TGLAbstractLibMaterial);
-begin
-  FLibMaterial := Value;
-  if Assigned(FLibMaterial) then
-  begin
-    with GLMaterialLibrary.Materials[0] do
-    begin
-      Material.MaterialLibrary := FLibMaterial.MaterialLibrary;
-      Material.LibMaterialName := FLibMaterial.Name
-    end;
-  end
-  else
-    with GLMaterialLibrary.Materials[0] do
-    begin
-      Material.MaterialLibrary := nil;
-      Material.LibMaterialName := '';
-    end;
-end;
-
-end.
+//
+// The graphics platform GLScene https://github.com/glscene
+//
+unit FRMaterialPreview;
+
+(* Material Preview frame *)
+
+interface
+
+{$I Scena.inc}
+
+uses
+  System.Types,
+  System.Classes,
+  Vcl.Graphics,
+  Vcl.Forms,
+  Vcl.StdCtrls,
+  Vcl.ComCtrls,
+  Vcl.Controls,
+
+  GLS.Scene,
+  Scena.VectorTypes,
+  GLS.Objects,
+  GLS.Texture,
+  GLS.HUDObjects,
+  GLS.SceneViewer,
+  GLS.GeomObjects,
+  GLS.Color,
+  GLS.Coordinates,
+  GLS.BaseClasses,
+  GLS.Material;
+
+type
+  TRMaterialPreview = class(TFrame)
+    GLScene: TGLScene;
+    GLSceneViewer: TGLSceneViewer;
+    CBObject: TComboBox;
+    Camera: TGLCamera;
+    Cube: TGLCube;
+    Sphere: TGLSphere;
+    LightSource: TGLLightSource;
+    CBBackground: TComboBox;
+    BackGroundSprite: TGLHUDSprite;
+    Teapot: TGLTeapot;
+    World: TGLDummyCube;
+    Light: TGLDummyCube;
+    FireSphere: TGLSphere;
+    GLMaterialLibrary: TGLMaterialLibrary;
+   
+    procedure CBObjectChange(Sender: TObject);
+    procedure CBBackgroundChange(Sender: TObject);
+    procedure SceneViewerMouseMove(Sender: TObject; Shift: TShiftState;
+      X, Y: Integer);
+    procedure SceneViewerMouseDown(Sender: TObject; Button: TMouseButton;
+      Shift: TShiftState; X, Y: Integer);
+    procedure SceneViewerMouseWheel(Sender: TObject; Shift: TShiftState;
+      WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
+  private
+    FLibMaterial: TGLAbstractLibMaterial;
+    function GetMaterial: TGLMaterial;
+    procedure SetMaterial(const Value: TGLMaterial);
+    function GetLibMaterial: TGLAbstractLibMaterial;
+    procedure SetLibMaterial(const Value: TGLAbstractLibMaterial);
+  public
+    constructor Create(AOwner: TComponent); override;
+    property Material: TGLMaterial read GetMaterial write SetMaterial;
+    property LibMaterial: TGLAbstractLibMaterial read GetLibMaterial write SetLibMaterial;
+  end;
+
+// ------------------------------------------------------------------
+implementation
+// ------------------------------------------------------------------
+
+{$R *.dfm}
+
+var
+  MX, MY: Integer;
+
+constructor TRMaterialPreview.Create(AOwner: TComponent);
+begin
+  inherited;
+  BackGroundSprite.Position.X := GLSceneViewer.Width div 2;
+  BackGroundSprite.Position.Y := GLSceneViewer.Height div 2;
+  BackGroundSprite.Width := GLSceneViewer.Width;
+  BackGroundSprite.Height := GLSceneViewer.Height;
+
+  CBObject.ItemIndex := 0;
+  CBObjectChange(Self);
+  CBBackground.ItemIndex := 0;
+  CBBackgroundChange(Self);
+end;
+
+procedure TRMaterialPreview.CBObjectChange(Sender: TObject);
+var
+  i: Integer;
+begin
+  i := CBObject.ItemIndex;
+  Cube.Visible := i = 0;
+  Sphere.Visible := i = 1;
+  Teapot.Visible := i = 2;
+end;
+
+procedure TRMaterialPreview.CBBackgroundChange(Sender: TObject);
+var
+  bgColor: TColor;
+begin
+  case CBBackground.ItemIndex of
+    1: bgColor := clWhite;
+    2: bgColor := clBlack;
+    3: bgColor := clBlue;
+    4: bgColor := clRed;
+    5: bgColor := clGreen;
+  else
+    bgColor := clNone;
+  end;
+  with BackGroundSprite.Material do
+  begin
+    Texture.Disabled := (bgColor <> clNone);
+    FrontProperties.Diffuse.Color := ConvertWinColor(bgColor);
+  end;
+end;
+
+procedure TRMaterialPreview.SceneViewerMouseMove(Sender: TObject;
+  Shift: TShiftState; X, Y: Integer);
+begin
+  if (ssRight in Shift) and (ssLeft in Shift) then
+    Camera.AdjustDistanceToTarget(1 - 0.01 * (MY - Y))
+  else if (ssRight in Shift) or (ssLeft in Shift) then
+    Camera.MoveAroundTarget(Y - MY, X - MX);
+
+  MX := X;
+  MY := Y;
+end;
+
+procedure TRMaterialPreview.SceneViewerMouseDown(Sender: TObject;
+  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
+begin
+  MX := X;
+  MY := Y;
+end;
+
+procedure TRMaterialPreview.SceneViewerMouseWheel(Sender: TObject;
+  Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
+  var Handled: Boolean);
+begin
+  Camera.AdjustDistanceToTarget(1 - 0.1 * (Abs(WheelDelta) / WheelDelta));
+end;
+
+function TRMaterialPreview.GetMaterial: TGLMaterial;
+begin
+  Result := GLMaterialLibrary.Materials[0].Material;
+end;
+
+procedure TRMaterialPreview.SetMaterial(const Value: TGLMaterial);
+begin
+  GLMaterialLibrary.Materials[0].Material.Assign(Value.GetActualPrimaryMaterial);
+end;
+
+function TRMaterialPreview.GetLibMaterial: TGLAbstractLibMaterial;
+begin
+  Result := FLibMaterial;
+end;
+
+procedure TRMaterialPreview.SetLibMaterial(const Value: TGLAbstractLibMaterial);
+begin
+  FLibMaterial := Value;
+  if Assigned(FLibMaterial) then
+  begin
+    with GLMaterialLibrary.Materials[0] do
+    begin
+      Material.MaterialLibrary := FLibMaterial.MaterialLibrary;
+      Material.LibMaterialName := FLibMaterial.Name
+    end;
+  end
+  else
+    with GLMaterialLibrary.Materials[0] do
+    begin
+      Material.MaterialLibrary := nil;
+      Material.LibMaterialName := '';
+    end;
+end;
+
+end.

+ 144 - 144
Source/FRTextureEdit.dfm → Source/VCL/FRTextureEdit.dfm

@@ -1,144 +1,144 @@
-object RTextureEdit: TRTextureEdit
-  Left = 0
-  Top = 0
-  Width = 230
-  Height = 187
-  ParentShowHint = False
-  ShowHint = True
-  TabOrder = 0
-  DesignSize = (
-    230
-    187)
-  object Label2: TLabel
-    Left = 0
-    Top = 1
-    Width = 42
-    Height = 20
-    Caption = 'Image'
-  end
-  object SBEditImage: TSpeedButton
-    Left = 212
-    Top = 0
-    Width = 17
-    Height = 21
-    Hint = 'Edit image'
-    Anchors = [akTop, akRight]
-    Caption = '...'
-    OnClick = SBEditImageClick
-  end
-  object Label3: TLabel
-    Left = 0
-    Top = 52
-    Width = 63
-    Height = 20
-    Caption = 'MagFilter'
-  end
-  object Label4: TLabel
-    Left = 0
-    Top = 76
-    Width = 58
-    Height = 20
-    Caption = 'MinFilter'
-  end
-  object Label1: TLabel
-    Left = 0
-    Top = 124
-    Width = 91
-    Height = 20
-    Caption = 'Texture Mode'
-  end
-  object Label5: TLabel
-    Left = 0
-    Top = 148
-    Width = 88
-    Height = 20
-    Caption = 'Texture Wrap'
-  end
-  object Label6: TLabel
-    Left = 0
-    Top = 28
-    Width = 81
-    Height = 20
-    Caption = 'ImageAlpha'
-  end
-  object Label7: TLabel
-    Left = 0
-    Top = 100
-    Width = 105
-    Height = 20
-    Caption = 'Filtering Quality'
-  end
-  object CBMagFilter: TComboBox
-    Left = 75
-    Top = 48
-    Width = 154
-    Height = 28
-    Style = csDropDownList
-    TabOrder = 0
-    OnChange = CBMagFilterChange
-  end
-  object CBMinFilter: TComboBox
-    Left = 75
-    Top = 72
-    Width = 154
-    Height = 28
-    Style = csDropDownList
-    TabOrder = 1
-    OnChange = CBMinFilterChange
-  end
-  object CBTextureMode: TComboBox
-    Left = 75
-    Top = 120
-    Width = 154
-    Height = 28
-    Style = csDropDownList
-    TabOrder = 2
-    OnChange = CBTextureModeChange
-  end
-  object CBTextureWrap: TComboBox
-    Left = 75
-    Top = 144
-    Width = 154
-    Height = 28
-    Style = csDropDownList
-    TabOrder = 3
-    OnChange = CBTextureWrapChange
-  end
-  object CBDisabled: TCheckBox
-    Left = 0
-    Top = 168
-    Width = 73
-    Height = 17
-    Caption = 'Disabled'
-    TabOrder = 4
-    OnClick = CBDisabledClick
-  end
-  object CBImageClass: TComboBox
-    Left = 75
-    Top = 0
-    Width = 138
-    Height = 28
-    Style = csDropDownList
-    Anchors = [akLeft, akTop, akRight]
-    TabOrder = 5
-    OnChange = CBImageClassChange
-  end
-  object CBImageAlpha: TComboBox
-    Left = 75
-    Top = 24
-    Width = 154
-    Height = 28
-    Style = csDropDownList
-    TabOrder = 6
-    OnChange = CBImageAlphaChange
-  end
-  object CBFilteringQuality: TComboBox
-    Left = 75
-    Top = 96
-    Width = 154
-    Height = 28
-    Style = csDropDownList
-    TabOrder = 7
-    OnChange = CBFilteringQualityChange
-  end
-end
+object RTextureEdit: TRTextureEdit
+  Left = 0
+  Top = 0
+  Width = 230
+  Height = 187
+  ParentShowHint = False
+  ShowHint = True
+  TabOrder = 0
+  DesignSize = (
+    230
+    187)
+  object Label2: TLabel
+    Left = 0
+    Top = 1
+    Width = 42
+    Height = 20
+    Caption = 'Image'
+  end
+  object SBEditImage: TSpeedButton
+    Left = 212
+    Top = 0
+    Width = 17
+    Height = 21
+    Hint = 'Edit image'
+    Anchors = [akTop, akRight]
+    Caption = '...'
+    OnClick = SBEditImageClick
+  end
+  object Label3: TLabel
+    Left = 0
+    Top = 52
+    Width = 63
+    Height = 20
+    Caption = 'MagFilter'
+  end
+  object Label4: TLabel
+    Left = 0
+    Top = 76
+    Width = 58
+    Height = 20
+    Caption = 'MinFilter'
+  end
+  object Label1: TLabel
+    Left = 0
+    Top = 124
+    Width = 91
+    Height = 20
+    Caption = 'Texture Mode'
+  end
+  object Label5: TLabel
+    Left = 0
+    Top = 148
+    Width = 88
+    Height = 20
+    Caption = 'Texture Wrap'
+  end
+  object Label6: TLabel
+    Left = 0
+    Top = 28
+    Width = 81
+    Height = 20
+    Caption = 'ImageAlpha'
+  end
+  object Label7: TLabel
+    Left = 0
+    Top = 100
+    Width = 105
+    Height = 20
+    Caption = 'Filtering Quality'
+  end
+  object CBMagFilter: TComboBox
+    Left = 75
+    Top = 48
+    Width = 154
+    Height = 28
+    Style = csDropDownList
+    TabOrder = 0
+    OnChange = CBMagFilterChange
+  end
+  object CBMinFilter: TComboBox
+    Left = 75
+    Top = 72
+    Width = 154
+    Height = 28
+    Style = csDropDownList
+    TabOrder = 1
+    OnChange = CBMinFilterChange
+  end
+  object CBTextureMode: TComboBox
+    Left = 75
+    Top = 120
+    Width = 154
+    Height = 28
+    Style = csDropDownList
+    TabOrder = 2
+    OnChange = CBTextureModeChange
+  end
+  object CBTextureWrap: TComboBox
+    Left = 75
+    Top = 144
+    Width = 154
+    Height = 28
+    Style = csDropDownList
+    TabOrder = 3
+    OnChange = CBTextureWrapChange
+  end
+  object CBDisabled: TCheckBox
+    Left = 0
+    Top = 168
+    Width = 73
+    Height = 17
+    Caption = 'Disabled'
+    TabOrder = 4
+    OnClick = CBDisabledClick
+  end
+  object CBImageClass: TComboBox
+    Left = 75
+    Top = 0
+    Width = 138
+    Height = 28
+    Style = csDropDownList
+    Anchors = [akLeft, akTop, akRight]
+    TabOrder = 5
+    OnChange = CBImageClassChange
+  end
+  object CBImageAlpha: TComboBox
+    Left = 75
+    Top = 24
+    Width = 154
+    Height = 28
+    Style = csDropDownList
+    TabOrder = 6
+    OnChange = CBImageAlphaChange
+  end
+  object CBFilteringQuality: TComboBox
+    Left = 75
+    Top = 96
+    Width = 154
+    Height = 28
+    Style = csDropDownList
+    TabOrder = 7
+    OnChange = CBFilteringQualityChange
+  end
+end

+ 198 - 198
Source/FRTextureEdit.pas → Source/VCL/FRTextureEdit.pas

@@ -1,198 +1,198 @@
-//
-// The graphics platform GLScene https://github.com/glscene
-//
-unit FRTextureEdit;
-
-(* Basic editing frame for TGLTexture *)
-// TODO : Replace STImageClass with a dropdown (polymorphism) 
-
-interface
-
-{$I Scena.inc}
-
-uses
-  System.Classes, 
-  System.SysUtils, 
-  System.TypInfo, 
-  VCL.Forms, 
-  VCL.StdCtrls,
-  VCL.Buttons, 
-  VCL.Controls,
-  GLS.Graphics, 
-  Scena.TextureFormat, 
-  GLS.Texture, 
-  GLS.State, 
-  GLS.TextureImageEditors;
-
-type
-  TRTextureEdit = class(TFrame)
-    Label2: TLabel;
-    SBEditImage: TSpeedButton;
-    CBMagFilter: TComboBox;
-    Label3: TLabel;
-    Label4: TLabel;
-    CBMinFilter: TComboBox;
-    CBTextureMode: TComboBox;
-    Label1: TLabel;
-    Label5: TLabel;
-    CBTextureWrap: TComboBox;
-    CBDisabled: TCheckBox;
-    CBImageClass: TComboBox;
-    CBImageAlpha: TComboBox;
-    Label6: TLabel;
-    CBFilteringQuality: TComboBox;
-    Label7: TLabel;
-    procedure CBMagFilterChange(Sender: TObject);
-    procedure CBMinFilterChange(Sender: TObject);
-    procedure CBTextureModeChange(Sender: TObject);
-    procedure CBTextureWrapChange(Sender: TObject);
-    procedure CBDisabledClick(Sender: TObject);
-    procedure SBEditImageClick(Sender: TObject);
-    procedure CBImageClassChange(Sender: TObject);
-    procedure CBImageAlphaChange(Sender: TObject);
-    procedure CBFilteringQualityChange(Sender: TObject);
-  private
-    FTexture: TGLTexture;
-    FOnChange: TNotifyEvent;
-    Changeing: Boolean;
-  protected
-    procedure SetTexture(const val: TGLTexture);
-    procedure DoOnChange; virtual;
-  public
-    constructor Create(AOwner: TComponent); override;
-    destructor Destroy; override;
-    property Texture: TGLTexture read FTexture write SetTexture;
-    property OnChange: TNotifyEvent read FOnChange write FOnChange;
-  end;
-
-//-------------------------------------------------------------
-implementation
-//-------------------------------------------------------------
-
-{$R *.dfm}
-
-constructor TRTextureEdit.Create(AOwner: TComponent);
-var
-  I: Integer;
-begin
-  inherited;
-  FTexture := TGLTexture.Create(Self);
-  SetTexture(FTexture);
-  SetGLTextureImageClassesToStrings(CBImageClass.Items);
-  for I := 0 to Integer( High(TGLTextureImageAlpha)) do
-    CBImageAlpha.Items.Add(GetEnumName(TypeInfo(TGLTextureImageAlpha), I));
-  for I := 0 to Integer( High(TGLMagFilter)) do
-    CBMagFilter.Items.Add(GetEnumName(TypeInfo(TGLMagFilter), I));
-  for I := 0 to Integer( High(TGLMinFilter)) do
-    CBMinFilter.Items.Add(GetEnumName(TypeInfo(TGLMinFilter), I));
-  for I := 0 to Integer( High(TGLTextureFilteringQuality)) do
-    CBFilteringQuality.Items.Add
-      (GetEnumName(TypeInfo(TGLTextureFilteringQuality), I));
-  for I := 0 to Integer( High(TGLTextureMode)) do
-    CBTextureMode.Items.Add(GetEnumName(TypeInfo(TGLTextureMode), I));
-  for I := 0 to Integer( High(TGLTextureWrap)) do
-    CBTextureWrap.Items.Add(GetEnumName(TypeInfo(TGLTextureWrap), I));
-end;
-
-destructor TRTextureEdit.Destroy;
-begin
-  FTexture.Free;
-  inherited;
-end;
-
-procedure TRTextureEdit.SetTexture(const val: TGLTexture);
-begin
-  FTexture.Assign(val);
-  changeing := True;
-  try
-    with CBImageClass do
-      ItemIndex := Items.IndexOfObject(Pointer(FTexture.Image.ClassType));
-    CBImageAlpha.ItemIndex := Integer(FTexture.ImageAlpha);
-    CBMagFilter.ItemIndex := Integer(FTexture.MagFilter);
-    CBMinFilter.ItemIndex := Integer(FTexture.MinFilter);
-    CBFilteringQuality.ItemIndex := Integer(FTexture.FilteringQuality);
-    CBTextureMode.ItemIndex := Integer(FTexture.TextureMode);
-    CBTextureWrap.ItemIndex := Integer(FTexture.TextureWrap);
-    CBDisabled.Checked := FTexture.Disabled;
-  finally
-    Changeing := False;
-    DoOnChange;
-  end;
-end;
-
-procedure TRTextureEdit.DoOnChange;
-begin
-  if (not changeing) and Assigned(FOnChange) then
-    OnChange(Self);
-end;
-
-procedure TRTextureEdit.CBImageClassChange(Sender: TObject);
-var
-  tic: TGLTextureImageClass;
-  ti: TGLTextureImage;
-begin
-  if not changeing then
-  begin
-    with CBImageClass do
-      tic := TGLTextureImageClass(Items.Objects[ItemIndex]);
-    if FTexture.Image.ClassType <> tic then
-    begin
-      ti := TGLTextureImageClass(tic).Create(FTexture);
-      FTexture.Image := ti;
-      ti.Free;
-    end;
-    DoOnChange;
-  end;
-end;
-
-procedure TRTextureEdit.CBImageAlphaChange(Sender: TObject);
-begin
-  FTexture.ImageAlpha := TGLTextureImageAlpha(CBImageAlpha.ItemIndex);
-  DoOnChange;
-end;
-
-// CBMagFilterChange
-//
-procedure TRTextureEdit.CBMagFilterChange(Sender: TObject);
-begin
-  FTexture.MagFilter := TGLMagFilter(CBMagFilter.ItemIndex);
-  DoOnChange;
-end;
-
-procedure TRTextureEdit.CBMinFilterChange(Sender: TObject);
-begin
-  FTexture.MinFilter := TGLMinFilter(CBMinFilter.ItemIndex);
-  DoOnChange;
-end;
-
-procedure TRTextureEdit.CBTextureModeChange(Sender: TObject);
-begin
-  FTexture.TextureMode := TGLTextureMode(CBTextureMode.ItemIndex);
-  DoOnChange;
-end;
-
-procedure TRTextureEdit.CBTextureWrapChange(Sender: TObject);
-begin
-  FTexture.TextureWrap := TGLTextureWrap(CBTextureWrap.ItemIndex);
-  DoOnChange;
-end;
-
-procedure TRTextureEdit.CBDisabledClick(Sender: TObject);
-begin
-  FTexture.Disabled := CBDisabled.Checked;
-  DoOnChange;
-end;
-
-procedure TRTextureEdit.SBEditImageClick(Sender: TObject);
-begin
-  EditGLTextureImage(FTexture.Image);
-  DoOnChange;
-end;
-
-procedure TRTextureEdit.CBFilteringQualityChange(Sender: TObject);
-begin
-  FTexture.FilteringQuality := TGLTextureFilteringQuality(CBFilteringQuality.ItemIndex);
-  DoOnChange;
-end;
-
-end.
+//
+// The graphics platform GLScene https://github.com/glscene
+//
+unit FRTextureEdit;
+
+(* Basic editing frame for TGLTexture *)
+// TODO : Replace STImageClass with a dropdown (polymorphism) 
+
+interface
+
+{$I Scena.inc}
+
+uses
+  System.Classes, 
+  System.SysUtils, 
+  System.TypInfo, 
+  VCL.Forms, 
+  VCL.StdCtrls,
+  VCL.Buttons, 
+  VCL.Controls,
+  GLS.Graphics, 
+  Scena.TextureFormat, 
+  GLS.Texture, 
+  GLS.State, 
+  GLS.TextureImageEditors;
+
+type
+  TRTextureEdit = class(TFrame)
+    Label2: TLabel;
+    SBEditImage: TSpeedButton;
+    CBMagFilter: TComboBox;
+    Label3: TLabel;
+    Label4: TLabel;
+    CBMinFilter: TComboBox;
+    CBTextureMode: TComboBox;
+    Label1: TLabel;
+    Label5: TLabel;
+    CBTextureWrap: TComboBox;
+    CBDisabled: TCheckBox;
+    CBImageClass: TComboBox;
+    CBImageAlpha: TComboBox;
+    Label6: TLabel;
+    CBFilteringQuality: TComboBox;
+    Label7: TLabel;
+    procedure CBMagFilterChange(Sender: TObject);
+    procedure CBMinFilterChange(Sender: TObject);
+    procedure CBTextureModeChange(Sender: TObject);
+    procedure CBTextureWrapChange(Sender: TObject);
+    procedure CBDisabledClick(Sender: TObject);
+    procedure SBEditImageClick(Sender: TObject);
+    procedure CBImageClassChange(Sender: TObject);
+    procedure CBImageAlphaChange(Sender: TObject);
+    procedure CBFilteringQualityChange(Sender: TObject);
+  private
+    FTexture: TGLTexture;
+    FOnChange: TNotifyEvent;
+    Changeing: Boolean;
+  protected
+    procedure SetTexture(const val: TGLTexture);
+    procedure DoOnChange; virtual;
+  public
+    constructor Create(AOwner: TComponent); override;
+    destructor Destroy; override;
+    property Texture: TGLTexture read FTexture write SetTexture;
+    property OnChange: TNotifyEvent read FOnChange write FOnChange;
+  end;
+
+//-------------------------------------------------------------
+implementation
+//-------------------------------------------------------------
+
+{$R *.dfm}
+
+constructor TRTextureEdit.Create(AOwner: TComponent);
+var
+  I: Integer;
+begin
+  inherited;
+  FTexture := TGLTexture.Create(Self);
+  SetTexture(FTexture);
+  SetGLTextureImageClassesToStrings(CBImageClass.Items);
+  for I := 0 to Integer( High(TGLTextureImageAlpha)) do
+    CBImageAlpha.Items.Add(GetEnumName(TypeInfo(TGLTextureImageAlpha), I));
+  for I := 0 to Integer( High(TGLMagFilter)) do
+    CBMagFilter.Items.Add(GetEnumName(TypeInfo(TGLMagFilter), I));
+  for I := 0 to Integer( High(TGLMinFilter)) do
+    CBMinFilter.Items.Add(GetEnumName(TypeInfo(TGLMinFilter), I));
+  for I := 0 to Integer( High(TGLTextureFilteringQuality)) do
+    CBFilteringQuality.Items.Add
+      (GetEnumName(TypeInfo(TGLTextureFilteringQuality), I));
+  for I := 0 to Integer( High(TGLTextureMode)) do
+    CBTextureMode.Items.Add(GetEnumName(TypeInfo(TGLTextureMode), I));
+  for I := 0 to Integer( High(TGLTextureWrap)) do
+    CBTextureWrap.Items.Add(GetEnumName(TypeInfo(TGLTextureWrap), I));
+end;
+
+destructor TRTextureEdit.Destroy;
+begin
+  FTexture.Free;
+  inherited;
+end;
+
+procedure TRTextureEdit.SetTexture(const val: TGLTexture);
+begin
+  FTexture.Assign(val);
+  changeing := True;
+  try
+    with CBImageClass do
+      ItemIndex := Items.IndexOfObject(Pointer(FTexture.Image.ClassType));
+    CBImageAlpha.ItemIndex := Integer(FTexture.ImageAlpha);
+    CBMagFilter.ItemIndex := Integer(FTexture.MagFilter);
+    CBMinFilter.ItemIndex := Integer(FTexture.MinFilter);
+    CBFilteringQuality.ItemIndex := Integer(FTexture.FilteringQuality);
+    CBTextureMode.ItemIndex := Integer(FTexture.TextureMode);
+    CBTextureWrap.ItemIndex := Integer(FTexture.TextureWrap);
+    CBDisabled.Checked := FTexture.Disabled;
+  finally
+    Changeing := False;
+    DoOnChange;
+  end;
+end;
+
+procedure TRTextureEdit.DoOnChange;
+begin
+  if (not changeing) and Assigned(FOnChange) then
+    OnChange(Self);
+end;
+
+procedure TRTextureEdit.CBImageClassChange(Sender: TObject);
+var
+  tic: TGLTextureImageClass;
+  ti: TGLTextureImage;
+begin
+  if not changeing then
+  begin
+    with CBImageClass do
+      tic := TGLTextureImageClass(Items.Objects[ItemIndex]);
+    if FTexture.Image.ClassType <> tic then
+    begin
+      ti := TGLTextureImageClass(tic).Create(FTexture);
+      FTexture.Image := ti;
+      ti.Free;
+    end;
+    DoOnChange;
+  end;
+end;
+
+procedure TRTextureEdit.CBImageAlphaChange(Sender: TObject);
+begin
+  FTexture.ImageAlpha := TGLTextureImageAlpha(CBImageAlpha.ItemIndex);
+  DoOnChange;
+end;
+
+// CBMagFilterChange
+//
+procedure TRTextureEdit.CBMagFilterChange(Sender: TObject);
+begin
+  FTexture.MagFilter := TGLMagFilter(CBMagFilter.ItemIndex);
+  DoOnChange;
+end;
+
+procedure TRTextureEdit.CBMinFilterChange(Sender: TObject);
+begin
+  FTexture.MinFilter := TGLMinFilter(CBMinFilter.ItemIndex);
+  DoOnChange;
+end;
+
+procedure TRTextureEdit.CBTextureModeChange(Sender: TObject);
+begin
+  FTexture.TextureMode := TGLTextureMode(CBTextureMode.ItemIndex);
+  DoOnChange;
+end;
+
+procedure TRTextureEdit.CBTextureWrapChange(Sender: TObject);
+begin
+  FTexture.TextureWrap := TGLTextureWrap(CBTextureWrap.ItemIndex);
+  DoOnChange;
+end;
+
+procedure TRTextureEdit.CBDisabledClick(Sender: TObject);
+begin
+  FTexture.Disabled := CBDisabled.Checked;
+  DoOnChange;
+end;
+
+procedure TRTextureEdit.SBEditImageClick(Sender: TObject);
+begin
+  EditGLTextureImage(FTexture.Image);
+  DoOnChange;
+end;
+
+procedure TRTextureEdit.CBFilteringQualityChange(Sender: TObject);
+begin
+  FTexture.FilteringQuality := TGLTextureFilteringQuality(CBFilteringQuality.ItemIndex);
+  DoOnChange;
+end;
+
+end.

+ 0 - 0
Source/FRTrackBarEdit.dfm → Source/VCL/FRTrackBarEdit.dfm


+ 0 - 0
Source/FRTrackBarEdit.pas → Source/VCL/FRTrackBarEdit.pas


+ 0 - 0
Source/FmGuiLayoutEditor.dfm → Source/VCL/FmGuiLayoutEditor.dfm


+ 0 - 0
Source/FmGuiLayoutEditor.pas → Source/VCL/FmGuiLayoutEditor.pas


+ 0 - 0
Source/FmGuiSkinEditor.dfm → Source/VCL/FmGuiSkinEditor.dfm


+ 0 - 0
Source/FmGuiSkinEditor.pas → Source/VCL/FmGuiSkinEditor.pas


+ 0 - 0
Source/FmInfo.dfm → Source/VCL/FmInfo.dfm


+ 0 - 0
Source/FmInfo.pas → Source/VCL/FmInfo.pas


+ 0 - 0
Source/FmLibMaterialPicker.dfm → Source/VCL/FmLibMaterialPicker.dfm


+ 0 - 0
Source/FmLibMaterialPicker.pas → Source/VCL/FmLibMaterialPicker.pas


+ 0 - 0
Source/FmMaterialEditor.dfm → Source/VCL/FmMaterialEditor.dfm


+ 0 - 0
Source/FmMaterialEditor.pas → Source/VCL/FmMaterialEditor.pas


+ 0 - 0
Source/FmPlugInManagerEditor.dfm → Source/VCL/FmPlugInManagerEditor.dfm


+ 0 - 0
Source/FmPlugInManagerEditor.pas → Source/VCL/FmPlugInManagerEditor.pas


+ 0 - 0
Source/FmSceneEditor.dfm → Source/VCL/FmSceneEditor.dfm


+ 0 - 0
Source/FmSceneEditor.pas → Source/VCL/FmSceneEditor.pas


+ 0 - 0
Source/FmShaderMemo.dfm → Source/VCL/FmShaderMemo.dfm


+ 0 - 0
Source/FmShaderMemo.pas → Source/VCL/FmShaderMemo.pas


+ 0 - 0
Source/FmShaderUniformEditor.dfm → Source/VCL/FmShaderUniformEditor.dfm


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