Переглянути джерело

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

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

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

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

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

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

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

+ 2 - 2
Packages/GLScene_Cg_DT.dproj

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

+ 18 - 18
Packages/GLScene_DT.dpk

@@ -40,24 +40,24 @@ requires
   GLScene_RT;
 
 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.
 

+ 27 - 32
Packages/GLScene_DT.dproj

@@ -118,65 +118,60 @@
         <DCCReference Include="vcl.dcp"/>
         <DCCReference Include="VclSmp.dcp"/>
         <DCCReference Include="GLScene_RT.dcp"/>
-        <DCCReference Include="..\Source\FRColorEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FRColorEditor.pas">
             <Form>RColorEditor</Form>
             <DesignClass>TFrame</DesignClass>
         </DCCReference>
-        <DCCReference Include="..\Source\FRTextureEdit.pas">
+        <DCCReference Include="..\Source\Vcl\FRTextureEdit.pas">
             <Form>RTextureEdit</Form>
             <DesignClass>TFrame</DesignClass>
         </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>
         </DCCReference>
-        <DCCReference Include="..\Source\FmGuiSkinEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmGuiSkinEditor.pas">
             <Form>GLSkinEditorForm</Form>
         </DCCReference>
-        <DCCReference Include="..\Source\FmShaderMemo.pas">
+        <DCCReference Include="..\Source\Vcl\FmShaderMemo.pas">
             <Form>ShaderMemoForm</Form>
         </DCCReference>
-        <DCCReference Include="..\Source\FmShaderUniformEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmShaderUniformEditor.pas">
             <Form>GLShaderUniformEditor</Form>
         </DCCReference>
-        <DCCReference Include="..\Source\FmVectorEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmVectorEditor.pas">
             <Form>GLVectorEditorForm</Form>
         </DCCReference>
-        <DCCReference Include="..\Source\FmSceneEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmSceneEditor.pas">
             <Form>GLSceneEditorForm</Form>
         </DCCReference>
-        <DCCReference Include="..\Source\FmPlugInManagerEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmPlugInManagerEditor.pas">
             <Form>GLPlugInManagerEditorForm</Form>
         </DCCReference>
-        <DCCReference Include="..\Source\FmXCollectionEditor.pas">
+        <DCCReference Include="..\Source\Vcl\FmXCollectionEditor.pas">
             <Form>GLXCollectionEditorForm</Form>
         </DCCReference>
-        <DCCReference Include="..\Source\FmInfo.pas">
+        <DCCReference Include="..\Source\Vcl\FmInfo.pas">
             <Form>GLInfoForm</Form>
         </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>
-            <FormType>dfm</FormType>
         </DCCReference>
-        <DCCReference Include="..\Source\FmLibMaterialPicker.pas">
+        <DCCReference Include="..\Source\Vcl\FmLibMaterialPicker.pas">
             <Form>GLLibMaterialPickerForm</Form>
-            <FormType>dfm</FormType>
         </DCCReference>
         <RcCompile Include="..\Resources\GLScene.rc">
             <Form>GLScene.res</Form>

+ 8 - 8
Packages/GLScene_RT.dpk

@@ -74,7 +74,7 @@ contains
   GLS.Canvas in '..\Source\GLS.Canvas.pas',
   GLS.Collision in '..\Source\GLS.Collision.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.Context in '..\Source\GLS.Context.pas',
   GLS.Coordinates in '..\Source\GLS.Coordinates.pas',
@@ -88,13 +88,13 @@ contains
   GLS.FBORenderer in '..\Source\GLS.FBORenderer.pas',
   GLS.FPSMovement in '..\Source\GLS.FPSMovement.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.File3DPDF in '..\Source\GLS.File3DPDF.pas',
   GLS.FileASE in '..\Source\GLS.FileASE.pas',
   GLS.FileB3D in '..\Source\GLS.FileB3D.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.FileGL2 in '..\Source\GLS.FileGL2.pas',
   GLS.FileGLTF in '..\Source\GLS.FileGLTF.pas',
@@ -136,7 +136,7 @@ contains
   GLS.GameMenu in '..\Source\GLS.GameMenu.pas',
   GLS.GeomObjects in '..\Source\GLS.GeomObjects.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.GizmoEx in '..\Source\GLS.GizmoEx.pas',
   GLS.Graph in '..\Source\GLS.Graph.pas',
@@ -152,7 +152,7 @@ contains
   GLS.Joystick in '..\Source\GLS.Joystick.pas',
   GLS.LensFlare in '..\Source\GLS.LensFlare.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.Material in '..\Source\GLS.Material.pas',
   GLS.MaterialEx in '..\Source\GLS.MaterialEx.pas',
@@ -204,7 +204,7 @@ contains
   GLSL.ShapeShaders in '..\Source\GLSL.ShapeShaders.pas',
   GLSL.ShaderParameter in '..\Source\GLSL.ShaderParameter.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.ProjectedTextures in '..\Source\GLS.ProjectedTextures.pas',
   GLS.Scene in '..\Source\GLS.Scene.pas',
@@ -237,7 +237,7 @@ contains
   GLS.Trail in '..\Source\GLS.Trail.pas',
   GLS.Tree in '..\Source\GLS.Tree.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.VerletTypes in '..\Source\GLS.VerletTypes.pas',
   GLS.VerletClothify in '..\Source\GLS.VerletClothify.pas',
@@ -250,7 +250,7 @@ contains
   GLS.PersistentClasses in '..\Source\GLS.PersistentClasses.pas',
   GLS.PipelineTransformation in '..\Source\GLS.PipelineTransformation.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.PlugInManager in '..\Source\GLS.PlugInManager.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.Collision.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.Context.pas"/>
         <DCCReference Include="..\Source\GLS.Coordinates.pas"/>
@@ -192,13 +192,13 @@
         <DCCReference Include="..\Source\GLS.FBORenderer.pas"/>
         <DCCReference Include="..\Source\GLS.FPSMovement.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.File3DPDF.pas"/>
         <DCCReference Include="..\Source\GLS.FileASE.pas"/>
         <DCCReference Include="..\Source\GLS.FileB3D.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.FileGL2.pas"/>
         <DCCReference Include="..\Source\GLS.FileGLTF.pas"/>
@@ -240,7 +240,7 @@
         <DCCReference Include="..\Source\GLS.GameMenu.pas"/>
         <DCCReference Include="..\Source\GLS.GeomObjects.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.GizmoEx.pas"/>
         <DCCReference Include="..\Source\GLS.Graph.pas"/>
@@ -256,7 +256,7 @@
         <DCCReference Include="..\Source\GLS.Joystick.pas"/>
         <DCCReference Include="..\Source\GLS.LensFlare.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.Material.pas"/>
         <DCCReference Include="..\Source\GLS.MaterialEx.pas"/>
@@ -308,7 +308,7 @@
         <DCCReference Include="..\Source\GLSL.ShapeShaders.pas"/>
         <DCCReference Include="..\Source\GLSL.ShaderParameter.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.ProjectedTextures.pas"/>
         <DCCReference Include="..\Source\GLS.Scene.pas"/>
@@ -341,7 +341,7 @@
         <DCCReference Include="..\Source\GLS.Trail.pas"/>
         <DCCReference Include="..\Source\GLS.Tree.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.VerletTypes.pas"/>
         <DCCReference Include="..\Source\GLS.VerletClothify.pas"/>
@@ -354,7 +354,7 @@
         <DCCReference Include="..\Source\GLS.PersistentClasses.pas"/>
         <DCCReference Include="..\Source\GLS.PipelineTransformation.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.PlugInManager.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.VectorGeometry in '..\Source\Common\Scena.VectorGeometry.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.

+ 3 - 2
Packagex/GLArena_RT.dproj

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

+ 2 - 2
Source/CUDA.APIComps.pas

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

+ 1 - 1
Source/CUDA.Context.pas

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

+ 1 - 1
Source/CUDA.FFTPlan.pas

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -38,8 +38,8 @@ type
   public
     constructor Create; 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 ColMin: Integer read FColMin write SetColMin;
     property ColMax: Integer read FColMax write SetColMax;
@@ -65,8 +65,8 @@ type
   public
     constructor Create; 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
       write SetTile; default;
     property row[index: Integer]: TgxTiledAreaRow read GetRow;
@@ -142,7 +142,7 @@ begin
   inherited;
 end;
 
-procedure TgxTiledAreaRow.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxTiledAreaRow.WriteToFiler(writer: TVirtualWriter);
 begin
   inherited WriteToFiler(writer);
   with writer do
@@ -153,7 +153,7 @@ begin
   end;
 end;
 
-procedure TgxTiledAreaRow.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxTiledAreaRow.ReadFromFiler(reader: TVirtualReader);
 var
   archiveVersion: Integer;
 begin
@@ -311,7 +311,7 @@ end;
 
 // WriteToFiler
 //
-procedure TgxTiledArea.WriteToFiler(writer: TgxVirtualWriter);
+procedure TgxTiledArea.WriteToFiler(writer: TVirtualWriter);
 begin
   inherited WriteToFiler(writer);
   with writer do
@@ -324,7 +324,7 @@ end;
 
 // ReadFromFiler
 //
-procedure TgxTiledArea.ReadFromFiler(reader: TgxVirtualReader);
+procedure TgxTiledArea.ReadFromFiler(reader: TVirtualReader);
 var
   archiveVersion: Integer;
 begin

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

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

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

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

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

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

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

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

+ 1 - 1
Source/Formats.X.pas

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

+ 1 - 1
Source/GLS.ApplicationFileIO.pas

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

+ 1 - 1
Source/GLS.ArchiveManager.pas

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

+ 1 - 1
Source/GLS.BaseClasses.pas

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

+ 2 - 2
Source/GLS.Context.pas

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

+ 3 - 4
Source/GLS.Coordinates.pas

@@ -15,8 +15,8 @@ uses
   System.SysUtils,
 
   Scena.VectorGeometry,
-  Scena.VectorTypes,
-  GLS.BaseClasses;
+  GLS.BaseClasses,
+  Scena.VectorTypes;
 
 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
   consists of planes passing through this axis.
   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;
   var x, y, z: double); overload;
 (* 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.VectorTypes,
   GLS.MultiSampleImage,
-  GLS.Logger;
+  Scena.Logger;
 
 const
   MaxColorAttachments = 32;

+ 3 - 2
Source/GLS.Feedback.pas

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

+ 8 - 8
Source/GLS.File3DSSceneObjects.pas

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

+ 4 - 4
Source/GLS.FileOBJ.pas

@@ -165,8 +165,8 @@ type
     procedure Assign(Source: TPersistent); override;
     constructor CreateOwned(aOwner: TglFaceGroups); 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 BuildList(var mrci: TGLRenderContextInfo); override;
     procedure AddToTriangles(aList: TGLAffineVectorList;
@@ -1398,7 +1398,7 @@ begin
 end;
 
 procedure TOBJFGVertexNormalTexIndexList.ReadFromFiler(
-  reader: TGLVirtualReader);
+  reader: TVirtualReader);
 var
   archiveVersion: Integer;
 begin
@@ -1422,7 +1422,7 @@ begin
 end;
 
 procedure TOBJFGVertexNormalTexIndexList.WriteToFiler(
-  writer: TGLVirtualWriter);
+  writer: TVirtualWriter);
 begin
   inherited WriteToFiler(writer);
   with writer do

+ 2 - 2
Source/GLS.Graphics.pas

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

+ 4 - 4
Source/GLS.Gui.pas

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

+ 3 - 3
Source/GLS.Imposter.pas

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

+ 4 - 4
Source/GLS.LinePFX.pas

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

+ 9 - 9
Source/GLS.Material.pas

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

+ 12 - 12
Source/GLS.MaterialEx.pas

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

+ 1 - 1
Source/GLS.MaterialMultiProxy.pas

@@ -48,7 +48,7 @@ type
   TGLMaterialMultiProxy = class;
 
   {MasterObject description for a MultiProxy object. }
-  TGLMaterialMultiProxyMaster = class(TGLInterfacedCollectionItem, IGLMaterialLibrarySupported)
+  TGLMaterialMultiProxyMaster = class(TInterfacedCollectionItem, IGLMaterialLibrarySupported)
   private
     FMasterObject: TGLBaseSceneObject;
     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. 
 *)
 function StripifyMesh(indices: TGLIntegerList; maxVertexIndex: Integer;
-  agglomerateLoneTriangles: Boolean = False): TGLPersistentObjectList;
+  agglomerateLoneTriangles: Boolean = False): TPersistentObjectList;
 (* 
   Increases indices coherency wrt vertex caches.
   The indices parameters is understood as vertex indices of a triangles set,
@@ -1033,7 +1033,7 @@ begin
 end;
 
 function StripifyMesh(indices: TGLIntegerList; maxVertexIndex: Integer;
-  agglomerateLoneTriangles: Boolean = False): TGLPersistentObjectList;
+  agglomerateLoneTriangles: Boolean = False): TPersistentObjectList;
 var
   accountedTriangles: array of ByteBool;
   vertexTris: array of TGLIntegerList;
@@ -1105,7 +1105,7 @@ var
   loneTriangles: TGLIntegerList;
 begin
   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
   indicesList := indices.list;
   indicesCount := indices.Count;

+ 1 - 1
Source/GLS.MultiPolygon.pas

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

+ 1 - 1
Source/GLS.OpenGLAdapter.pas

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

+ 8 - 8
Source/GLS.ParametricSurfaces.pas

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

+ 12 - 12
Source/GLS.ParticleFX.pas

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

Різницю між файлами не показано, бо вона завелика
+ 141 - 140
Source/GLS.PersistentClasses.pas


+ 1 - 1
Source/GLS.PipelineTransformation.pas

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

+ 14 - 14
Source/GLS.Ragdoll.pas

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

+ 2 - 2
Source/GLS.RenderContextInfo.pas

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

+ 13 - 13
Source/GLS.Scene.pas

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

+ 1 - 1
Source/GLS.Selection.pas

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

+ 3 - 3
Source/GLS.ShadowVolume.pas

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

+ 2 - 2
Source/GLS.SmartObjects.pas

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

+ 3 - 3
Source/GLS.SpacePartition.pas

@@ -76,7 +76,7 @@ type
   end;
 
   // Used to store the actual objects in the SpacePartition
-  TGLSpacePartitionLeaf = class(TGLPersistentObject)
+  TGLSpacePartitionLeaf = class(TPersistentObject)
   private
     FSpacePartition: TGLBaseSpacePartition;
     procedure SetSpacePartition(const Value: TGLBaseSpacePartition);
@@ -109,7 +109,7 @@ type
   end;
 
   // List for storing space partition leaves
-  TGLSpacePartitionLeafList = class(TGLPersistentObjectList)
+  TGLSpacePartitionLeafList = class(TPersistentObjectList)
   private
     function GetItems(I: Integer): TGLSpacePartitionLeaf;
     procedure SetItems(I: Integer; const Value: TGLSpacePartitionLeaf);
@@ -132,7 +132,7 @@ type
   TGLCullingMode = (CmFineCulling, CmGrossCulling);
 
   // Basic space partition, does not implement any actual space partitioning
-  TGLBaseSpacePartition = class(TGLPersistentObject)
+  TGLBaseSpacePartition = class(TPersistentObject)
   private
     FCullingMode: TGLCullingMode;
     // 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
   // Stores row information for a tiled area.
-  TGLTiledAreaRow = class(TGLPersistentObject)
+  TGLTiledAreaRow = class(TPersistentObject)
   private
     FColMin, FColMax: Integer;
     FData: TGLIntegerList;
@@ -39,8 +39,8 @@ type
   public
     constructor Create; 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 ColMin: Integer read FColMin write SetColMin;
     property ColMax: Integer read FColMax write SetColMax;
@@ -53,10 +53,10 @@ type
   (* Stores tile information in a tiled area.
     Each tile stores an integer value with zero the default value,
     assumed as "empty". *)
-  TGLTiledArea = class(TGLPersistentObject)
+  TGLTiledArea = class(TPersistentObject)
   private
     FRowMin, FRowMax: Integer;
-    FRows: TGLPersistentObjectList;
+    FRows: TPersistentObjectList;
   protected
     procedure SetRowMin(const val: Integer);
     procedure SetRowMax(const val: Integer);
@@ -66,8 +66,8 @@ type
   public
     constructor Create; 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 row[index: Integer]: TGLTiledAreaRow read GetRow;
     property RowMin: Integer read FRowMin write SetRowMin;
@@ -139,7 +139,7 @@ begin
   inherited;
 end;
 
-procedure TGLTiledAreaRow.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLTiledAreaRow.WriteToFiler(writer: TVirtualWriter);
 begin
   inherited WriteToFiler(writer);
   with writer do
@@ -150,7 +150,7 @@ begin
   end;
 end;
 
-procedure TGLTiledAreaRow.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLTiledAreaRow.ReadFromFiler(reader: TVirtualReader);
 var
   archiveVersion: Integer;
 begin
@@ -284,7 +284,7 @@ end;
 constructor TGLTiledArea.Create;
 begin
   inherited;
-  FRows := TGLPersistentObjectList.Create;
+  FRows := TPersistentObjectList.Create;
   FRowMax := -1;
 end;
 
@@ -294,7 +294,7 @@ begin
   inherited;
 end;
 
-procedure TGLTiledArea.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLTiledArea.WriteToFiler(writer: TVirtualWriter);
 begin
   inherited WriteToFiler(writer);
   with writer do
@@ -305,7 +305,7 @@ begin
   end;
 end;
 
-procedure TGLTiledArea.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLTiledArea.ReadFromFiler(reader: TVirtualReader);
 var
   archiveVersion: Integer;
 begin

+ 83 - 83
Source/GLS.VectorFileObjects.pas

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

+ 11 - 11
Source/GLS.VectorLists.pas

@@ -22,7 +22,7 @@ type
   TGLBaseListOptions = set of TGLBaseListOption;
 
   // Base class for lists, introduces common behaviours
-  TGLBaseList = class(TGLPersistentObject)
+  TGLBaseList = class(TPersistentObject)
   private
     FCount: Integer;
     FCapacity: Integer;
@@ -52,8 +52,8 @@ type
     constructor Create; override;
     destructor Destroy; 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 InsertNulls(Index: Integer; nbVals: Cardinal);
     procedure AdjustCapacityToAtLeast(const size: Integer);
@@ -93,8 +93,8 @@ type
   protected
     function GetItemAddress(Index: Integer): PFloatArray; inline;
   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;
     function Sum: TAffineVector;
     procedure Normalize; virtual;
@@ -503,7 +503,7 @@ procedure QuickSortLists(startIndex, endIndex: Integer; refList: TGLSingleList;
 procedure QuickSortLists(startIndex, endIndex: Integer; refList: TGLSingleList; objList: TGLBaseList); overload;
 (* 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 *)
-procedure FastQuickSortLists(startIndex, endIndex: Integer; const refList: TGLSingleList; const objList: TGLPersistentObjectList);
+procedure FastQuickSortLists(startIndex, endIndex: Integer; const refList: TGLSingleList; const objList: TPersistentObjectList);
 
 // ------------------------------------------------------------------
 implementation
@@ -617,7 +617,7 @@ begin
   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
   ppl:      PIntegerArray;
   oTemp:    Pointer;
@@ -745,7 +745,7 @@ begin
   AWriter.WriteString(lOutputText);
 end;
 
-procedure TGLBaseList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLBaseList.WriteToFiler(writer: TVirtualWriter);
 begin
   inherited;
   with writer do
@@ -758,7 +758,7 @@ begin
   end;
 end;
 
-procedure TGLBaseList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLBaseList.ReadFromFiler(reader: TVirtualReader);
 var
   archiveVersion: Integer;
 begin
@@ -1006,7 +1006,7 @@ end;
 // ------------------ TGLBaseVectorList ------------------
 // ------------------
 
-procedure TGLBaseVectorList.WriteToFiler(writer: TGLVirtualWriter);
+procedure TGLBaseVectorList.WriteToFiler(writer: TVirtualWriter);
 begin
   inherited;
   if Self is TGLTexPointList then
@@ -1018,7 +1018,7 @@ begin
   end;
 end;
 
-procedure TGLBaseVectorList.ReadFromFiler(reader: TGLVirtualReader);
+procedure TGLBaseVectorList.ReadFromFiler(reader: TVirtualReader);
 var
   archiveVersion: Integer;
 begin

+ 12 - 12
Source/GLS.VerletTypes.pas

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

+ 2 - 2
Source/GLS.WaterPlane.pas

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

+ 1 - 1
Source/GLS.WindowsContext.pas

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

+ 1 - 1
Source/GLS.XCollection.pas

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

+ 1 - 1
Source/GLSL.TextureShaders.pas

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

+ 2 - 2
Source/Physics.ODEManager.pas

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

+ 16 - 16
Source/Physics.ODESkeletonColliders.pas

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


Деякі файли не було показано, через те що забагато файлів було змінено