Browse Source

Initial implementation of separated client and server create/destroy functions for module setup
Implements fix so cubemap arrays load correctly when texture resolution settings have been lowered
Begun refactor of asset import config editing/settings.

Jeff Raab 6 years ago
parent
commit
da18eaff45

+ 24 - 5
Engine/source/gfx/D3D11/gfxD3D11Cubemap.cpp

@@ -223,7 +223,6 @@ void GFXD3D11Cubemap::initDynamic(U32 texSize, GFXFormat faceFormat, U32 mipLeve
 
 
     mMipMapLevels = mipLevels;
     mMipMapLevels = mipLevels;
 
 
-
    bool compressed = ImageUtil::isCompressedFormat(mFaceFormat);
    bool compressed = ImageUtil::isCompressedFormat(mFaceFormat);
 
 
    UINT bindFlags = D3D11_BIND_SHADER_RESOURCE;
    UINT bindFlags = D3D11_BIND_SHADER_RESOURCE;
@@ -397,10 +396,19 @@ void GFXD3D11CubemapArray::init(GFXCubemapHandle *cubemaps, const U32 cubemapCou
    AssertFatal(cubemaps, "GFXD3D11CubemapArray::initStatic - Got null GFXCubemapHandle!");
    AssertFatal(cubemaps, "GFXD3D11CubemapArray::initStatic - Got null GFXCubemapHandle!");
    AssertFatal(*cubemaps, "GFXD3D11CubemapArray::initStatic - Got empty cubemap!");
    AssertFatal(*cubemaps, "GFXD3D11CubemapArray::initStatic - Got empty cubemap!");
 
 
+   U32 downscalePower = GFXTextureManager::smTextureReductionLevel;
+   U32 scaledSize = cubemaps[0]->getSize();
+
+   if (downscalePower != 0)
+   {
+      // Otherwise apply the appropriate scale...
+      scaledSize >>= downscalePower;
+   }
+
    //all cubemaps must be the same size,format and number of mipmaps. Grab the details from the first cubemap
    //all cubemaps must be the same size,format and number of mipmaps. Grab the details from the first cubemap
-   mSize = cubemaps[0]->getSize();
+   mSize = scaledSize;
    mFormat = cubemaps[0]->getFormat();
    mFormat = cubemaps[0]->getFormat();
-   mMipMapLevels = cubemaps[0]->getMipMapLevels();
+   mMipMapLevels = cubemaps[0]->getMipMapLevels() - downscalePower;
    mNumCubemaps = cubemapCount;
    mNumCubemaps = cubemapCount;
 
 
    //create texture object
    //create texture object
@@ -467,8 +475,16 @@ void GFXD3D11CubemapArray::init(GFXCubemapHandle *cubemaps, const U32 cubemapCou
 //Just allocate the cubemap array but we don't upload any data
 //Just allocate the cubemap array but we don't upload any data
 void GFXD3D11CubemapArray::init(const U32 cubemapCount, const U32 cubemapFaceSize, const GFXFormat format)
 void GFXD3D11CubemapArray::init(const U32 cubemapCount, const U32 cubemapFaceSize, const GFXFormat format)
 {
 {
-   mSize = cubemapFaceSize;
-   mMipMapLevels = ImageUtil::getMaxMipCount(cubemapFaceSize, cubemapFaceSize);
+   U32 downscalePower = GFXTextureManager::smTextureReductionLevel;
+   U32 scaledSize = cubemapFaceSize;
+
+   if (downscalePower != 0)
+   {
+      scaledSize >>= downscalePower;
+   }
+
+   mSize = scaledSize;
+   mMipMapLevels = ImageUtil::getMaxMipCount(cubemapFaceSize, cubemapFaceSize) - downscalePower;
    mNumCubemaps = cubemapCount;
    mNumCubemaps = cubemapCount;
    mFormat = format;
    mFormat = format;
 
 
@@ -512,6 +528,9 @@ void GFXD3D11CubemapArray::init(const U32 cubemapCount, const U32 cubemapFaceSiz
 
 
 void GFXD3D11CubemapArray::updateTexture(const GFXCubemapHandle &cubemap, const U32 slot)
 void GFXD3D11CubemapArray::updateTexture(const GFXCubemapHandle &cubemap, const U32 slot)
 {
 {
+   U32 cubeMapSz = cubemap->getSize();
+   U32 cubeMapSize = cubemap->getMipMapLevels();
+
    AssertFatal(slot <= mNumCubemaps, "GFXD3D11CubemapArray::updateTexture - trying to update a cubemap texture that is out of bounds!");
    AssertFatal(slot <= mNumCubemaps, "GFXD3D11CubemapArray::updateTexture - trying to update a cubemap texture that is out of bounds!");
    AssertFatal(mFormat == cubemap->getFormat(), "GFXD3D11CubemapArray::updateTexture - Destination format doesn't match");
    AssertFatal(mFormat == cubemap->getFormat(), "GFXD3D11CubemapArray::updateTexture - Destination format doesn't match");
    AssertFatal(mSize == cubemap->getSize(), "GFXD3D11CubemapArray::updateTexture - Destination size doesn't match");
    AssertFatal(mSize == cubemap->getSize(), "GFXD3D11CubemapArray::updateTexture - Destination size doesn't match");

+ 3 - 2
Engine/source/gfx/gfxTextureManager.h

@@ -194,8 +194,7 @@ public:
    /// Used to remove a cubemap from the cache.
    /// Used to remove a cubemap from the cache.
    void releaseCubemap( GFXCubemap *cubemap );
    void releaseCubemap( GFXCubemap *cubemap );
 
 
-protected:
-
+public:
    /// The amount of texture mipmaps to skip when loading a
    /// The amount of texture mipmaps to skip when loading a
    /// texture that allows downscaling.
    /// texture that allows downscaling.
    ///
    ///
@@ -205,6 +204,8 @@ protected:
    /// 
    /// 
    static S32 smTextureReductionLevel;
    static S32 smTextureReductionLevel;
 
 
+protected:
+
    /// File path to the missing texture
    /// File path to the missing texture
    static String smMissingTexturePath;
    static String smMissingTexturePath;
 
 

+ 26 - 2
Templates/BaseGame/game/core/clientServer/scripts/client/connectionToServer.cs

@@ -30,7 +30,20 @@ function GameConnection::onConnectionAccepted(%this)
 {
 {
    // Startup the physX world on the client before any
    // Startup the physX world on the client before any
    // datablocks and objects are ghosted over.
    // datablocks and objects are ghosted over.
-   physicsInitWorld( "client" );   
+   physicsInitWorld( "client" ); 
+   
+   //Get our modules so we can exec any specific client-side loading/handling
+   %modulesList = ModuleDatabase.findModules(true);
+   for(%i=0; %i < getWordCount(%modulesList); %i++)
+   {
+      %module = getWord(%modulesList, %i);
+      %moduleID = %module.ModuleId;
+      
+      if(%module.scopeSet.isMethod("onCreateClient"))
+      {
+         eval(%module.scopeSet @ ".onCreateClient();");
+      }
+   }  
 }
 }
 
 
 function GameConnection::initialControlSet(%this)
 function GameConnection::initialControlSet(%this)
@@ -126,5 +139,16 @@ function disconnectedCleanup()
    }
    }
    
    
    // We can now delete the client physics simulation.
    // We can now delete the client physics simulation.
-   physicsDestroyWorld( "client" );                 
+   physicsDestroyWorld( "client" );    
+   
+   //Get our modules so we can exec any specific client-side loading/handling
+   %modulesList = ModuleDatabase.findModules(true);
+   for(%i=0; %i < getWordCount(%modulesList); %i++)
+   {
+      %module = getWord(%modulesList, %i);
+      if(%module.scopeSet.isMethod("onDestroyClient"))
+      {
+         eval(%module.scopeSet @ ".onDestroyClient();");
+      }
+   }             
 }
 }

+ 22 - 0
Templates/BaseGame/game/core/clientServer/scripts/server/server.cs

@@ -155,6 +155,17 @@ function createServer(%serverType, %level)
       if ($pref::Net::DisplayOnMaster !$= "Never" )
       if ($pref::Net::DisplayOnMaster !$= "Never" )
          schedule(0,0,startHeartbeat);
          schedule(0,0,startHeartbeat);
    }
    }
+   
+   //Get our modules so we can exec any specific server-side loading/handling
+   %modulesList = ModuleDatabase.findModules(true);
+   for(%i=0; %i < getWordCount(%modulesList); %i++)
+   {
+      %module = getWord(%modulesList, %i);
+      if(%module.scopeSet.isMethod("onCreateServer"))
+      {
+         eval(%module.scopeSet @ ".onCreateServer();");
+      }
+   }
 
 
    // Let the game initialize some things now that the
    // Let the game initialize some things now that the
    // the server has been created
    // the server has been created
@@ -229,6 +240,17 @@ function destroyServer()
    // Delete all the data blocks...
    // Delete all the data blocks...
    deleteDataBlocks();
    deleteDataBlocks();
    
    
+   //Get our modules so we can exec any specific server-side loading/handling
+   %modulesList = ModuleDatabase.findModules(true);
+   for(%i=0; %i < getWordCount(%modulesList); %i++)
+   {
+      %module = getWord(%modulesList, %i);
+      if(%module.scopeSet.isMethod("onDestroyServer"))
+      {
+         eval(%module.scopeSet @ ".onDestroyServer();");
+      }
+   }
+   
    // Save any server settings
    // Save any server settings
    %prefPath = getPrefpath();
    %prefPath = getPrefpath();
    echo( "Exporting server prefs..." );
    echo( "Exporting server prefs..." );

+ 0 - 1
Templates/BaseGame/game/core/rendering/scripts/renderManager.cs

@@ -50,7 +50,6 @@ function initRenderManager()
      
      
    DiffuseRenderPassManager.addManager( new RenderProbeMgr(ProbeBin)       { bintype = "Probes"; renderOrder = 0.019; processAddOrder = 0.019; } );
    DiffuseRenderPassManager.addManager( new RenderProbeMgr(ProbeBin)       { bintype = "Probes"; renderOrder = 0.019; processAddOrder = 0.019; } );
    
    
-   //DiffuseRenderPassManager.addManager( new RenderVistaMgr()               { bintype = "Vista"; renderOrder = 0.15; processAddOrder = 0.15; } );
    
    
    DiffuseRenderPassManager.addManager( new RenderObjectMgr(BeginBin)      { bintype = "Begin"; renderOrder = 0.2; processAddOrder = 0.2; } );
    DiffuseRenderPassManager.addManager( new RenderObjectMgr(BeginBin)      { bintype = "Begin"; renderOrder = 0.2; processAddOrder = 0.2; } );
    // Normal mesh rendering.
    // Normal mesh rendering.

+ 10 - 0
Templates/BaseGame/game/data/ImportTesting/ImportTesting.cs

@@ -0,0 +1,10 @@
+function ImportTesting::onCreate(%this)
+{
+
+}
+
+function ImportTesting::onDestroy(%this)
+{
+
+}
+

+ 25 - 0
Templates/BaseGame/game/data/ImportTesting/ImportTesting.module

@@ -0,0 +1,25 @@
+<ModuleDefinition
+    canSave="true"
+    canSaveDynamicFields="true"
+    ModuleId="ImportTesting"
+    VersionId="1"
+    Group="Game"
+    scriptFile="ImportTesting.cs"
+    CreateFunction="onCreate"
+    DestroyFunction="onDestroy">
+    <DeclaredAssets
+        canSave="true"
+        canSaveDynamicFields="true"
+        Extension="asset.taml"
+        Recurse="true" />
+    <AutoloadAssets
+        canSave="true"
+        canSaveDynamicFields="true"
+        AssetType="ComponentAsset"
+        Recurse="true" />
+    <AutoloadAssets
+        canSave="true"
+        canSaveDynamicFields="true"
+        AssetType="GUIAsset"
+        Recurse="true" />
+</ModuleDefinition>

+ 3 - 34
Templates/BaseGame/game/tools/assetBrowser/assetImportConfigs.xml

@@ -1,34 +1,3 @@
-<AssetImportConfigs>
-    <Config Name="TestConfig">
-        <Mesh ImportMesh="1" DoUpAxisOverride="0" UpAxisOverride="Z_AXIS" DoScaleOverride="0" ScaleOverride="1" IgnoreNodeScale="0" AdjustCenter="0" AdjustFloor="1" CollapseSubmeshes="0" LODType="TrailingNumber" ImportedNodes="" IgnoreNodes="" ImportMeshes="" IgnoreMeshes="" />
-        <Materials ImportMaterials="1" IgnoreMaterials="" CreateComposites="1" UseDiffuseSuffixOnOriginImg="1" UseExistingMaterials="1" />
-        <Animations ImportAnimations="1" SeparateAnimations="1" SeparateAnimationPrefix="" />
-        <Collisions GenerateCollisions="1" GenCollisionType="CollisionMesh" CollisionMeshPrefix="Col" GenerateLOSCollisions="1" GenLOSCollisionType="CollisionMesh" LOSCollisionMeshPrefix="LOS" />
-        <Images ImageType="GUI" DiffuseTypeSuffixes="_ALBEDO,_DIFFUSE,_ALB,_DIF,_Base_Color,_COLOR,_COL" NormalTypeSuffixes="_NORMAL,_NORM" SpecularTypeSuffixes="_SPECULAR,_SPEC" MetalnessTypeSuffixes="_METAL,_MET,_METALNESS,_METALLIC" RoughnessTypeSuffixes="_ROUGH,_ROUGHNESS" SmoothnessTypeSuffixes="_SMOOTH,_SMOOTHNESS" AOTypeSuffixes="_AO,_AMBIENT,_AMBIENTOCCLUSION,_Ambient_Occlusion" CompositeTypeSuffixes="_COMP,_COMPOSITE" TextureFilteringMode="Bilinear" UseMips="1" IsHDR="0" Scaling="1" Compressed="0" GenerateMaterialOnImport="1" PopulateMaterialMaps="1" />
-        <Sounds VolumeAdjust="1" PitchAdjust="1" Compressed="0" />
-    </Config>
-    <Config Name="SecondTest">
-        <Mesh ImportMesh="1" DoUpAxisOverride="0" UpAxisOverride="Z_AXIS" DoScaleOverride="0" ScaleOverride="1" IgnoreNodeScale="0" AdjustCenter="0" AdjustFloor="0" CollapseSubmeshes="0" LODType="TrailingNumber" ImportedNodes="" IgnoreNodes="" ImportMeshes="" IgnoreMeshes="" />
-        <Materials ImportMaterials="1" IgnoreMaterials="" CreateComposites="1" UseDiffuseSuffixOnOriginImg="" UseExistingMaterials="" />
-        <Animations ImportAnimations="1" SeparateAnimations="1" SeparateAnimationPrefix="" />
-        <Collisions GenerateCollisions="1" GenCollisionType="CollisionMesh" CollisionMeshPrefix="Col" GenerateLOSCollisions="1" GenLOSCollisionType="CollisionMesh" LOSCollisionMeshPrefix="LOS" />
-        <Images ImageType="N/A" DiffuseTypeSuffixes="_ALBEDO,_DIFFUSE,_ALB,_DIF,_COLOR,_COL" NormalTypeSuffixes="_NORMAL,_NORM" SpecularTypeSuffixes="_SPECULAR,_SPEC" MetalnessTypeSuffixes="_METAL,_MET,_METALNESS,_METALLIC" RoughnessTypeSuffixes="_ROUGH,_ROUGHNESS" SmoothnessTypeSuffixes="_SMOOTH,_SMOOTHNESS" AOTypeSuffixes="_AO,_AMBIENT,_AMBIENTOCCLUSION" CompositeTypeSuffixes="_COMP,_COMPOSITE" TextureFilteringMode="Bilinear" UseMips="1" IsHDR="0" Scaling="1" Compressed="0" GenerateMaterialOnImport="" PopulateMaterialMaps="" />
-        <Sounds VolumeAdjust="1" PitchAdjust="1" Compressed="0" />
-    </Config>
-    <Config Name="GUI_Image_Import">
-        <Mesh ImportMesh="0" DoUpAxisOverride="0" UpAxisOverride="Z_AXIS" DoScaleOverride="0" ScaleOverride="1" IgnoreNodeScale="0" AdjustCenter="0" AdjustFloor="0" CollapseSubmeshes="0" LODType="TrailingNumber" ImportedNodes="" IgnoreNodes="" ImportMeshes="" IgnoreMeshes="" />
-        <Materials ImportMaterials="0" IgnoreMaterials="" CreateComposites="1" UseDiffuseSuffixOnOriginImg="1" UseExistingMaterials="1" />
-        <Animations ImportAnimations="0" SeparateAnimations="1" SeparateAnimationPrefix="" />
-        <Collisions GenerateCollisions="0" GenCollisionType="CollisionMesh" CollisionMeshPrefix="Col" GenerateLOSCollisions="1" GenLOSCollisionType="CollisionMesh" LOSCollisionMeshPrefix="LOS" />
-        <Images ImageType="GUI" DiffuseTypeSuffixes="_ALBEDO;_DIFFUSE;_ALB;_DIF;_COLOR;_COL;_BASECOLOR;_BASE_COLOR" NormalTypeSuffixes="_NORMAL;_NORM" SpecularTypeSuffixes="_SPECULAR;_SPEC" MetalnessTypeSuffixes="_METAL;_MET;_METALNESS;_METALLIC" RoughnessTypeSuffixes="_ROUGH;_ROUGHNESS" SmoothnessTypeSuffixes="_SMOOTH;_SMOOTHNESS" AOTypeSuffixes="_AO;_AMBIENT;_AMBIENTOCCLUSION" CompositeTypeSuffixes="_COMP;_COMPOSITE" TextureFilteringMode="Bilinear" UseMips="1" IsHDR="0" Scaling="1" Compressed="0" GenerateMaterialOnImport="0" PopulateMaterialMaps="0" />
-        <Sounds VolumeAdjust="1" PitchAdjust="1" Compressed="0" />
-    </Config>
-    <Config Name="CogflictsMesh">
-        <Mesh ImportMesh="1" DoUpAxisOverride="0" UpAxisOverride="Z_AXIS" DoScaleOverride="0" ScaleOverride="1" IgnoreNodeScale="0" AdjustCenter="0" AdjustFloor="0" CollapseSubmeshes="0" LODType="TrailingNumber" ImportedNodes="" IgnoreNodes="" ImportMeshes="" IgnoreMeshes="" />
-        <Materials ImportMaterials="1" IgnoreMaterials="ColorEffect*;" CreateComposites="1" UseDiffuseSuffixOnOriginImg="1" UseExistingMaterials="1" />
-        <Animations ImportAnimations="1" SeparateAnimations="1" SeparateAnimationPrefix="" />
-        <Collisions GenerateCollisions="1" GenCollisionType="CollisionMesh" CollisionMeshPrefix="Col" GenerateLOSCollisions="1" GenLOSCollisionType="CollisionMesh" LOSCollisionMeshPrefix="LOS" />
-        <Images ImageType="N/A" DiffuseTypeSuffixes="_ALBEDO;_DIFFUSE;_ALB;_DIF;_COLOR;_COL;_BASECOLOR;_BASE_COLOR;_Al" NormalTypeSuffixes="_NORMAL;_NORM;_N" SpecularTypeSuffixes="_SPECULAR;_SPEC" MetalnessTypeSuffixes="_METAL;_MET;_METALNESS;_METALLIC" RoughnessTypeSuffixes="_ROUGH;_ROUGHNESS" SmoothnessTypeSuffixes="_SMOOTH;_SMOOTHNESS" AOTypeSuffixes="_AO;_AMBIENT;_AMBIENTOCCLUSION" CompositeTypeSuffixes="_COMP;_COMPOSITE;_C" TextureFilteringMode="Bilinear" UseMips="1" IsHDR="0" Scaling="1" Compressed="0" GenerateMaterialOnImport="1" PopulateMaterialMaps="1" />
-        <Sounds VolumeAdjust="1" PitchAdjust="1" Compressed="0" />
-    </Config>
-</AssetImportConfigs>
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<AssetImportSettings>
+</AssetImportSettings>

+ 102 - 0
Templates/BaseGame/game/tools/assetBrowser/guis/assetImport.gui

@@ -609,5 +609,107 @@
          };
          };
       };
       };
    };
    };
+   new GuiWindowCtrl(ImportAssetNewConfigEditorWindow) {
+      text = "Import Options Config";
+      resizeWidth = "1";
+      resizeHeight = "1";
+      canMove = "1";
+      canClose = "0";
+      canMinimize = "0";
+      canMaximize = "0";
+      canCollapse = "0";
+      edgeSnap = "1";
+      margin = "0 0 0 0";
+      padding = "0 0 0 0";
+      anchorTop = "1";
+      anchorBottom = "0";
+      anchorLeft = "1";
+      anchorRight = "0";
+      position = "524 332";
+      extent = "376 50";
+      minExtent = "48 92";
+      horizSizing = "center";
+      vertSizing = "center";
+      profile = "ToolsGuiWindowProfile";
+      visible = "0";
+      active = "1";
+      tooltipProfile = "ToolsGuiToolTipProfile";
+      hovertime = "1000";
+      isContainer = "1";
+      hidden = "1";
+      canSave = "1";
+      canSaveDynamicFields = "0";
+
+      new GuiTextCtrl() {
+         text = "Configuration Name:";
+         maxLength = "1024";
+         margin = "0 0 0 0";
+         padding = "0 0 0 0";
+         anchorTop = "1";
+         anchorBottom = "0";
+         anchorLeft = "1";
+         anchorRight = "0";
+         position = "10 26";
+         extent = "100 17";
+         minExtent = "8 2";
+         horizSizing = "right";
+         vertSizing = "bottom";
+         profile = "GuiTextProfile";
+         visible = "1";
+         active = "1";
+         tooltipProfile = "GuiToolTipProfile";
+         hovertime = "1000";
+         isContainer = "1";
+         canSave = "1";
+         canSaveDynamicFields = "0";
+      };
+      new GuiTextEditCtrl(AssetImportNewConfigName) {
+         historySize = "0";
+         tabComplete = "0";
+         sinkAllKeyEvents = "0";
+         password = "0";
+         passwordMask = "*";
+         maxLength = "1024";
+         margin = "0 0 0 0";
+         padding = "0 0 0 0";
+         anchorTop = "1";
+         anchorBottom = "0";
+         anchorLeft = "1";
+         anchorRight = "0";
+         position = "113 25";
+         extent = "250 18";
+         minExtent = "8 2";
+         horizSizing = "width";
+         vertSizing = "bottom";
+         profile = "GuiTextEditProfile";
+         visible = "1";
+         active = "1";
+         tooltipProfile = "GuiToolTipProfile";
+         hovertime = "1000";
+         isContainer = "1";
+         canSave = "1";
+         canSaveDynamicFields = "0";
+      };
+      new GuiButtonCtrl() {
+         text = "Done";
+         groupNum = "-1";
+         buttonType = "PushButton";
+         useMouseEvents = "0";
+         position = "301 27";
+         extent = "64 22";
+         minExtent = "8 2";
+         horizSizing = "left";
+         vertSizing = "top";
+         profile = "ToolsGuiButtonProfile";
+         visible = "1";
+         active = "1";
+         command = "ImportAssetConfigEditorWindow.saveAssetOptionsConfig();";
+         tooltipProfile = "ToolsGuiToolTipProfile";
+         hovertime = "1000";
+         isContainer = "0";
+         canSave = "1";
+         canSaveDynamicFields = "0";
+      };
+   };
 };
 };
 //--- OBJECT WRITE END ---
 //--- OBJECT WRITE END ---

+ 23 - 82
Templates/BaseGame/game/tools/assetBrowser/scripts/assetImport.cs

@@ -513,79 +513,18 @@ function ImportAssetWindow::reloadImportOptionConfigs(%this)
    if(%xmlDoc.loadFile($AssetBrowser::importConfigsFile))
    if(%xmlDoc.loadFile($AssetBrowser::importConfigsFile))
    {
    {
       //StateMachine element
       //StateMachine element
-      %xmlDoc.pushFirstChildElement("AssetImportSettings");
+      if(!%xmlDoc.pushFirstChildElement("AssetImportConfigs"))
+      {
+         error("Invalid Import Configs file");
+         return;  
+      }
       
       
       //Config Groups
       //Config Groups
       %configCount = 0;
       %configCount = 0;
       while(%xmlDoc.pushChildElement(%configCount))
       while(%xmlDoc.pushChildElement(%configCount))
       {
       {
-         %configName = %xmlDoc.attribute("name");
-
-         /*%xmlDoc.pushFirstChildElement("Mesh");
-            %configObj.ImportMesh = %xmlDoc.attribute("ImportMesh");
-            %configObj.DoUpAxisOverride = %xmlDoc.attribute("DoUpAxisOverride");
-            %configObj.UpAxisOverride = %xmlDoc.attribute("UpAxisOverride");
-            %configObj.DoScaleOverride = %xmlDoc.attribute("DoScaleOverride");
-            %configObj.ScaleOverride = %xmlDoc.attribute("ScaleOverride");
-            %configObj.IgnoreNodeScale = %xmlDoc.attribute("IgnoreNodeScale");
-            %configObj.AdjustCenter = %xmlDoc.attribute("AdjustCenter");
-            %configObj.AdjustFloor = %xmlDoc.attribute("AdjustFloor");
-            %configObj.CollapseSubmeshes = %xmlDoc.attribute("CollapseSubmeshes");       
-            %configObj.LODType = %xmlDoc.attribute("LODType");
-            %configObj.ImportedNodes = %xmlDoc.attribute("ImportedNodes");
-            %configObj.IgnoreNodes = %xmlDoc.attribute("IgnoreNodes");
-            %configObj.ImportMeshes = %xmlDoc.attribute("ImportMeshes");
-            %configObj.IgnoreMeshes = %xmlDoc.attribute("IgnoreMeshes");
-         %xmlDoc.popElement();
-         
-         %xmlDoc.pushFirstChildElement("Materials");
-            %configObj.ImportMaterials = %xmlDoc.attribute("ImportMaterials");
-            %configObj.IgnoreMaterials = %xmlDoc.attribute("IgnoreMaterials");
-            %configObj.CreateComposites = %xmlDoc.attribute("CreateComposites");
-            %configObj.UseDiffuseSuffixOnOriginImg = %xmlDoc.attribute("UseDiffuseSuffixOnOriginImg");
-            %configObj.UseExistingMaterials = %xmlDoc.attribute("UseExistingMaterials");
-         %xmlDoc.popElement();
-         
-         %xmlDoc.pushFirstChildElement("Animations");
-            %configObj.ImportAnimations = %xmlDoc.attribute("ImportAnimations");
-            %configObj.SeparateAnimations = %xmlDoc.attribute("SeparateAnimations");
-            %configObj.SeparateAnimationPrefix = %xmlDoc.attribute("SeparateAnimationPrefix");
-         %xmlDoc.popElement();
-         
-         %xmlDoc.pushFirstChildElement("Collisions");
-            %configObj.GenerateCollisions = %xmlDoc.attribute("GenerateCollisions");
-            %configObj.GenCollisionType = %xmlDoc.attribute("GenCollisionType");
-            %configObj.CollisionMeshPrefix = %xmlDoc.attribute("CollisionMeshPrefix");
-            %configObj.GenerateLOSCollisions = %xmlDoc.attribute("GenerateLOSCollisions");
-            %configObj.GenLOSCollisionType = %xmlDoc.attribute("GenLOSCollisionType");
-            %configObj.LOSCollisionMeshPrefix = %xmlDoc.attribute("LOSCollisionMeshPrefix");
-         %xmlDoc.popElement();
-         
-         %xmlDoc.pushFirstChildElement("Images");
-            %configObj.ImageType = %xmlDoc.attribute("ImageType");
-            %configObj.DiffuseTypeSuffixes = %xmlDoc.attribute("DiffuseTypeSuffixes");
-            %configObj.NormalTypeSuffixes = %xmlDoc.attribute("NormalTypeSuffixes");
-            %configObj.SpecularTypeSuffixes = %xmlDoc.attribute("SpecularTypeSuffixes");
-            %configObj.MetalnessTypeSuffixes = %xmlDoc.attribute("MetalnessTypeSuffixes");
-            %configObj.RoughnessTypeSuffixes = %xmlDoc.attribute("RoughnessTypeSuffixes");
-            %configObj.SmoothnessTypeSuffixes = %xmlDoc.attribute("SmoothnessTypeSuffixes");
-            %configObj.AOTypeSuffixes = %xmlDoc.attribute("AOTypeSuffixes");
-            %configObj.CompositeTypeSuffixes = %xmlDoc.attribute("CompositeTypeSuffixes");
-            %configObj.TextureFilteringMode = %xmlDoc.attribute("TextureFilteringMode");
-            %configObj.UseMips = %xmlDoc.attribute("UseMips");
-            %configObj.IsHDR = %xmlDoc.attribute("IsHDR");
-            %configObj.Scaling = %xmlDoc.attribute("Scaling");
-            %configObj.Compressed = %xmlDoc.attribute("Compressed");
-            %configObj.GenerateMaterialOnImport = %xmlDoc.attribute("GenerateMaterialOnImport");
-            %configObj.PopulateMaterialMaps = %xmlDoc.attribute("PopulateMaterialMaps");
-         %xmlDoc.popElement();
-         
-         %xmlDoc.pushFirstChildElement("Sounds");
-            %configObj.VolumeAdjust = %xmlDoc.attribute("VolumeAdjust");
-            %configObj.PitchAdjust = %xmlDoc.attribute("PitchAdjust");
-            %configObj.Compressed = %xmlDoc.attribute("Compressed");
-         %xmlDoc.popElement();*/
-         
+         %configName = %xmlDoc.attribute("Name");
+        
          %xmlDoc.popElement();
          %xmlDoc.popElement();
          %configCount++;
          %configCount++;
          
          
@@ -595,6 +534,8 @@ function ImportAssetWindow::reloadImportOptionConfigs(%this)
       %xmlDoc.popElement();
       %xmlDoc.popElement();
    }
    }
    
    
+   ImportAssetWindow.importConfigsList.add(%configName);
+   
    for(%i = 0; %i < ImportAssetWindow.importConfigsList.count(); %i++)
    for(%i = 0; %i < ImportAssetWindow.importConfigsList.count(); %i++)
    {
    {
       %configName = ImportAssetWindow.importConfigsList.getKey(%i);
       %configName = ImportAssetWindow.importConfigsList.getKey(%i);
@@ -773,10 +714,10 @@ function ImportAssetWindow::_findImportingAssetByName(%this, %id, %assetName)
 function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
 function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
 {
 {
    //diffuse
    //diffuse
-   %suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.DiffuseTypeSuffixes, ",;");
+   %suffixCount = getTokenCount(getAssetImportConfigValue("Image/DiffuseTypeSuffixes", ""), ",;");
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    {
    {
-      %suffixToken = getToken(ImportAssetWindow.activeImportConfig.DiffuseTypeSuffixes, ",;", %sfx);
+      %suffixToken = getToken(getAssetImportConfigValue("Image/DiffuseTypeSuffixes", ""), ",;", %sfx);
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       {
       {
          %assetItem.imageSuffixType = %suffixToken;
          %assetItem.imageSuffixType = %suffixToken;
@@ -785,10 +726,10 @@ function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
    }
    }
    
    
    //normal
    //normal
-   %suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.NormalTypeSuffixes, ",;");
+   %suffixCount = getTokenCount(getAssetImportConfigValue("Image/NormalTypeSuffixes", ""), ",;");
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    {
    {
-      %suffixToken = getToken(ImportAssetWindow.activeImportConfig.NormalTypeSuffixes, ",;", %sfx);
+      %suffixToken = getToken(getAssetImportConfigValue("Image/NormalTypeSuffixes", ""), ",;", %sfx);
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       {
       {
          %assetItem.imageSuffixType = %suffixToken;
          %assetItem.imageSuffixType = %suffixToken;
@@ -797,10 +738,10 @@ function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
    }
    }
    
    
    //roughness
    //roughness
-   %suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.RoughnessTypeSuffixes, ",;");
+   %suffixCount = getTokenCount(getAssetImportConfigValue("Image/RoughnessTypeSuffixes", ""), ",;");
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    {
    {
-      %suffixToken = getToken(ImportAssetWindow.activeImportConfig.RoughnessTypeSuffixes, ",;", %sfx);
+      %suffixToken = getToken(getAssetImportConfigValue("Image/RoughnessTypeSuffixes", ""), ",;", %sfx);
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       {
       {
          %assetItem.imageSuffixType = %suffixToken;
          %assetItem.imageSuffixType = %suffixToken;
@@ -809,10 +750,10 @@ function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
    }
    }
    
    
    //Ambient Occlusion
    //Ambient Occlusion
-   %suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.AOTypeSuffixes, ",;");
+   %suffixCount = getTokenCount(getAssetImportConfigValue("Image/AOTypeSuffixes", ""), ",;");
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    {
    {
-      %suffixToken = getToken(ImportAssetWindow.activeImportConfig.AOTypeSuffixes, ",;", %sfx);
+      %suffixToken = getToken(getAssetImportConfigValue("Image/AOTypeSuffixes", ""), ",;", %sfx);
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       {
       {
          %assetItem.imageSuffixType = %suffixToken;
          %assetItem.imageSuffixType = %suffixToken;
@@ -821,10 +762,10 @@ function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
    }
    }
    
    
    //metalness
    //metalness
-   %suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.MetalnessTypeSuffixes, ",;");
+   %suffixCount = getTokenCount(getAssetImportConfigValue("Image/MetalnessTypeSuffixes", ""), ",;");
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    {
    {
-      %suffixToken = getToken(ImportAssetWindow.activeImportConfig.MetalnessTypeSuffixes, ",;", %sfx);
+      %suffixToken = getToken(getAssetImportConfigValue("Image/MetalnessTypeSuffixes", ""), ",;", %sfx);
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       {
       {
          %assetItem.imageSuffixType = %suffixToken;
          %assetItem.imageSuffixType = %suffixToken;
@@ -833,10 +774,10 @@ function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
    }
    }
    
    
    //composite
    //composite
-   %suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.CompositeTypeSuffixes, ",;");
+   %suffixCount = getTokenCount(getAssetImportConfigValue("Image/CompositeTypeSuffixes", ""), ",;");
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    {
    {
-      %suffixToken = getToken(ImportAssetWindow.activeImportConfig.CompositeTypeSuffixes, ",;", %sfx);
+      %suffixToken = getToken(getAssetImportConfigValue("Image/CompositeTypeSuffixes", ""), ",;", %sfx);
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       if(strIsMatchExpr("*"@%suffixToken, %assetItem.AssetName))
       {
       {
          %assetItem.imageSuffixType = %suffixToken;
          %assetItem.imageSuffixType = %suffixToken;
@@ -845,7 +786,7 @@ function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
    }
    }
    
    
    //specular
    //specular
-   %suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.SpecularTypeSuffixes, ",;");
+   /*%suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.SpecularTypeSuffixes, ",;");
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    for(%sfx = 0; %sfx < %suffixCount; %sfx++)
    {
    {
       %suffixToken = getToken(ImportAssetWindow.activeImportConfig.SpecularTypeSuffixes, ",;", %sfx);
       %suffixToken = getToken(ImportAssetWindow.activeImportConfig.SpecularTypeSuffixes, ",;", %sfx);
@@ -854,7 +795,7 @@ function ImportAssetWindow::parseImageSuffixes(%this, %assetItem)
          %assetItem.imageSuffixType = %suffixToken;
          %assetItem.imageSuffixType = %suffixToken;
          return "specular";
          return "specular";
       }
       }
-   }
+   }*/
    
    
    return "";
    return "";
 }
 }

+ 90 - 147
Templates/BaseGame/game/tools/assetBrowser/scripts/assetImportConfig.cs

@@ -8,7 +8,6 @@ function ImportAssetConfigList::onSelect( %this, %id, %text )
    
    
    ImportAssetWindow.activeImportConfigIndex = %id;
    ImportAssetWindow.activeImportConfigIndex = %id;
    ImportAssetWindow.activeImportConfig = ImportAssetWindow.importConfigsList.getKey(%id);
    ImportAssetWindow.activeImportConfig = ImportAssetWindow.importConfigsList.getKey(%id);
-   //ImportAssetWindow.refresh();
    
    
    AssetBrowser.reloadImportingFiles();
    AssetBrowser.reloadImportingFiles();
 }
 }
@@ -187,14 +186,25 @@ function ImportOptionsList::ImportMaterialsChanged(%this, %fieldName, %newValue,
    echo("CHANGED IF OUR IMPORTED MATERIALS WERE HAPPENING!");
    echo("CHANGED IF OUR IMPORTED MATERIALS WERE HAPPENING!");
 }
 }
 
 
+function getAssetImportConfigValue(%fieldName, %defaultValue)
+{
+   if(ImportAssetWindow.activeImportConfig $= "")
+      return "";
+   
+   return AssetImportSettings.value(ImportAssetWindow.activeImportConfig @ "/" @ %fieldName, %defaultValue);
+}
+
 function ImportAssetConfigEditorWindow::populateConfigList(%this, %optionsObj)
 function ImportAssetConfigEditorWindow::populateConfigList(%this, %optionsObj)
 {
 {
    AssetImportConfigName.setText(%optionsObj.Name);
    AssetImportConfigName.setText(%optionsObj.Name);
    
    
-   ImportOptionsConfigList.clear();
+   ImportOptionsConfigList.clearFields();
    
    
    ImportOptionsConfigList.startGroup("Mesh");
    ImportOptionsConfigList.startGroup("Mesh");
-   ImportOptionsConfigList.addCallbackField("ImportMesh", "Import Mesh", "bool", "", "1", "", "ToggleImportMesh", %optionsObj);
+   ImportOptionsConfigList.addSettingsField("Mesh/ImportMesh", "Import Mesh", "bool", "Should meshes be imported", "");
+   ImportOptionsConfigList.endGroup();
+   
+   /*ImportOptionsConfigList.addCallbackField("ImportMesh", "Import Mesh", "bool", "", "1", "", "ToggleImportMesh", %optionsObj);
    ImportOptionsConfigList.addField("DoUpAxisOverride", "Do Up-axis Override", "bool", "", "0", "", %optionsObj);
    ImportOptionsConfigList.addField("DoUpAxisOverride", "Do Up-axis Override", "bool", "", "0", "", %optionsObj);
    ImportOptionsConfigList.addField("UpAxisOverride", "Up-axis Override", "list", "", "Z_AXIS", "X_AXIS,Y_AXIS,Z_AXIS", %optionsObj);
    ImportOptionsConfigList.addField("UpAxisOverride", "Up-axis Override", "list", "", "Z_AXIS", "X_AXIS,Y_AXIS,Z_AXIS", %optionsObj);
    ImportOptionsConfigList.addField("DoScaleOverride", "Do Scale Override", "bool", "", "0", "", %optionsObj);
    ImportOptionsConfigList.addField("DoScaleOverride", "Do Scale Override", "bool", "", "0", "", %optionsObj);
@@ -270,80 +280,80 @@ function ImportAssetConfigEditorWindow::populateConfigList(%this, %optionsObj)
    ImportOptionsConfigList.addField("VolumeAdjust", "Volume Adjustment", "float", "", "1.0", "", %optionsObj);
    ImportOptionsConfigList.addField("VolumeAdjust", "Volume Adjustment", "float", "", "1.0", "", %optionsObj);
    ImportOptionsConfigList.addField("PitchAdjust", "Pitch Adjustment", "float", "", "1.0", "", %optionsObj);
    ImportOptionsConfigList.addField("PitchAdjust", "Pitch Adjustment", "float", "", "1.0", "", %optionsObj);
    ImportOptionsConfigList.addField("Compressed", "Is Compressed", "bool", "", "0", "", %optionsObj);
    ImportOptionsConfigList.addField("Compressed", "Is Compressed", "bool", "", "0", "", %optionsObj);
-   ImportOptionsConfigList.endGroup();
+   ImportOptionsConfigList.endGroup();*/
 }
 }
 
 
 function ImportAssetConfigEditorWindow::addNewConfig(%this)
 function ImportAssetConfigEditorWindow::addNewConfig(%this)
 {
 {
-   ImportAssetConfigEditorWindow.setVisible(1);
-   ImportAssetConfigEditorWindow.selectWindow();
-   
-   %optionsObj = new ScriptObject(){};
-   
-   ImportAssetWindow.importConfigsList.add(%optionsObj); 
-   
-   //Initial, blank configuration
-   %optionsObj.ImportMesh = true;
-   %optionsObj.DoUpAxisOverride = false;
-   %optionsObj.UpAxisOverride = "Z_AXIS";
-   %optionsObj.DoScaleOverride = false;
-   %optionsObj.ScaleOverride = 1.0;
-   %optionsObj.IgnoreNodeScale = false;
-   %optionsObj.AdjustCenter = false;
-   %optionsObj.AdjustFloor = false;
-   %optionsObj.CollapseSubmeshes = false;
-   %optionsObj.LODType = "TrailingNumber";
-   //%optionsObj.TrailingNumber = 2;
-   %optionsObj.ImportedNodes = "";
-   %optionsObj.IgnoreNodes = "";
-   %optionsObj.ImportMeshes = "";
-   %optionsObj.IgnoreMeshes = "";
+   ImportAssetNewConfigEditorWindow.setVisible(1);
+   ImportAssetNewConfigEditorWindow.selectWindow();
+   
+   %configName = AssetImportConfigName.getText();
+   
+   AssetImportSettings.beginGroup(%configName);
+   
+   //Meshes
+   AssetImportSettings.setValue("Meshes/ImportMesh", "1");
+   AssetImportSettings.setValue("Meshes/DoUpAxisOverride", "0");
+   AssetImportSettings.setValue("Meshes/UpAxisOverride", "Z_AXIS");
+   AssetImportSettings.setValue("Meshes/DoScaleOverride", "0");
+   AssetImportSettings.setValue("Meshes/ScaleOverride", "1.0");
+   AssetImportSettings.setValue("Meshes/IgnoreNodeScale", "0");
+   AssetImportSettings.setValue("Meshes/AdjustCenter", "0");
+   AssetImportSettings.setValue("Meshes/AdjustFloor", "0");
+   AssetImportSettings.setValue("Meshes/CollapseSubmeshes", "0");
+   AssetImportSettings.setValue("Meshes/LODType", "TrailingNumber");
+   AssetImportSettings.setValue("Meshes/ImportedNodes", "");
+   AssetImportSettings.setValue("Meshes/IgnoreNodes", "");
+   AssetImportSettings.setValue("Meshes/ImportMeshes", "");
+   AssetImportSettings.setValue("Meshes/IgnoreMeshes", "");
    
    
    //Materials
    //Materials
-   %optionsObj.ImportMaterials = true;
-   %optionsObj.IgnoreMaterials = "";
-   %optionsObj.CreateComposites = true;
-   %optionsObj.UseDiffuseSuffixOnOriginImg = true;
-   %optionsObj.UseExistingMaterials = true;
+   AssetImportSettings.setValue("Materials/ImportMaterials", "1");
+   AssetImportSettings.setValue("Materials/IgnoreMaterials", "");
+   AssetImportSettings.setValue("Materials/CreateComposites", "1");
+   AssetImportSettings.setValue("Materials/UseDiffuseSuffixOnOriginImage", "1");
+   AssetImportSettings.setValue("Materials/UseExistingMaterials", "1");
    
    
    //Animations
    //Animations
-   %optionsObj.ImportAnimations = true;
-   %optionsObj.SeparateAnimations = true;
-   %optionsObj.SeparateAnimationPrefix = "";
+   AssetImportSettings.setValue("Animations/ImportAnimations", "1");
+   AssetImportSettings.setValue("Animations/SeparateAnimations", "1");
+   AssetImportSettings.setValue("Animations/SeparateAnimationPrefix", "");
    
    
    //Collision
    //Collision
-   %optionsObj.GenerateCollisions = true;
-   %optionsObj.GenCollisionType = "CollisionMesh";
-   %optionsObj.CollisionMeshPrefix = "Col";
-   %optionsObj.GenerateLOSCollisions = true;
-   %optionsObj.GenLOSCollisionType = "CollisionMesh";
-   %optionsObj.LOSCollisionMeshPrefix = "LOS";
+   AssetImportSettings.setValue("Collision/GenerateCollisions", "1");
+   AssetImportSettings.setValue("Collision/GenCollisionType", "CollisionMesh");
+   AssetImportSettings.setValue("Collision/CollisionMeshPrefix", "Col");
+   AssetImportSettings.setValue("Collision/GenerateLOSCollisions", "1");
+   AssetImportSettings.setValue("Collision/GenLOSCollisionType", "CollisionMesh");
+   AssetImportSettings.setValue("Collision/LOSCollisionMeshPrefix", "LOS");
    
    
    //Images
    //Images
-   %optionsObj.ImageType = "N/A";
-   %optionsObj.DiffuseTypeSuffixes = "_ALBEDO;_DIFFUSE;_ALB;_DIF;_COLOR;_COL;_BASECOLOR;_BASE_COLOR";
-   %optionsObj.NormalTypeSuffixes = "_NORMAL;_NORM";
-   %optionsObj.SpecularTypeSuffixes = "_SPECULAR;_SPEC";
-   %optionsObj.MetalnessTypeSuffixes = "_METAL;_MET;_METALNESS;_METALLIC";
-   %optionsObj.RoughnessTypeSuffixes = "_ROUGH;_ROUGHNESS";
-   %optionsObj.SmoothnessTypeSuffixes = "_SMOOTH;_SMOOTHNESS";
-   %optionsObj.AOTypeSuffixes = "_AO;_AMBIENT;_AMBIENTOCCLUSION";
-   %optionsObj.CompositeTypeSuffixes = "_COMP;_COMPOSITE";
-   %optionsObj.TextureFilteringMode = "Bilinear";
-   %optionsObj.UseMips = true;
-   %optionsObj.IsHDR = false;
-   %optionsObj.Scaling = 1.0;
-   %optionsObj.Compressed = true;
-   %optionsObj.GenerateMaterialOnImport = true;
-   %optionsObj.PopulateMaterialMaps = true;
+   AssetImportSettings.setValue("Images/ImageType", "N/A");
+   AssetImportSettings.setValue("Images/DiffuseTypeSuffixes", "_ALBEDO;_DIFFUSE;_ALB;_DIF;_COLOR;_COL;_BASECOLOR;_BASE_COLOR");
+   AssetImportSettings.setValue("Images/NormalTypeSuffixes", "_NORMAL;_NORM");
+   AssetImportSettings.setValue("Images/MetalnessTypeSuffixes", "_METAL;_MET;_METALNESS;_METALLIC");
+   AssetImportSettings.setValue("Images/RoughnessTypeSuffixes", "_ROUGH;_ROUGHNESS");
+   AssetImportSettings.setValue("Images/SmoothnessTypeSuffixes", "_SMOOTH;_SMOOTHNESS");
+   AssetImportSettings.setValue("Images/AOTypeSuffixes", "_AO;_AMBIENT;_AMBIENTOCCLUSION");
+   AssetImportSettings.setValue("Images/CompositeTypeSuffixes", "_COMP;_COMPOSITE");
+   AssetImportSettings.setValue("Images/TextureFilteringMode", "Bilinear");
+   AssetImportSettings.setValue("Images/UseMips", "1");
+   AssetImportSettings.setValue("Images/IsHDR", "0");
+   AssetImportSettings.setValue("Images/Scaling", "1.0");
+   AssetImportSettings.setValue("Images/Compressed", "1");
+   AssetImportSettings.setValue("Images/GenerateMaterialOnImport", "1");
+   AssetImportSettings.setValue("Images/PopulateMaterialMaps", "1");
    
    
    //Sounds
    //Sounds
-   %optionsObj.VolumeAdjust = 1.0;
-   %optionsObj.PitchAdjust = 1.0;
-   %optionsObj.Compressed = false;
+   AssetImportSettings.setValue("Sounds/VolumeAdjust", "1.0");
+   AssetImportSettings.setValue("Sounds/PitchAdjust", "1.0");
+   AssetImportSettings.setValue("Sounds/Compressed", "0");
+   
+   AssetImportSettings.endGroup();
    
    
    //Hook in the UI
    //Hook in the UI
-   %this.populateConfigList(%optionsObj);
+   //%this.populateConfigList(%optionsObj);
 }
 }
 
 
 function ImportAssetConfigEditorWindow::editConfig(%this)
 function ImportAssetConfigEditorWindow::editConfig(%this)
@@ -364,97 +374,30 @@ function ImportAssetConfigEditorWindow::deleteConfig(%this)
 
 
 function ImportAssetConfigEditorWindow::saveAssetOptionsConfig(%this)
 function ImportAssetConfigEditorWindow::saveAssetOptionsConfig(%this)
 {
 {
-   %xmlDoc = new SimXMLDocument();
-   
-   %xmlDoc.pushNewElement("AssetImportConfigs");
-      
-      for(%i = 0; %i < ImportAssetWindow.importConfigsList.count(); %i++)
-      {
-         %configObj = ImportAssetWindow.importConfigsList.getKey(%i);         
-         
-         %xmlDoc.pushNewElement("Config");
-         
-         if(%configObj.Name $= "")
-            %configObj.Name = AssetImportConfigName.getText();
-            
-         %xmlDoc.setAttribute("Name", %configObj.Name); 
-         
-            %xmlDoc.pushNewElement("Mesh");
-               %xmlDoc.setAttribute("ImportMesh", %configObj.ImportMesh);
-               %xmlDoc.setAttribute("DoUpAxisOverride", %configObj.DoUpAxisOverride);
-               %xmlDoc.setAttribute("UpAxisOverride", %configObj.UpAxisOverride);
-               %xmlDoc.setAttribute("DoScaleOverride", %configObj.DoScaleOverride);
-               %xmlDoc.setAttribute("ScaleOverride", %configObj.ScaleOverride);
-               %xmlDoc.setAttribute("IgnoreNodeScale", %configObj.IgnoreNodeScale);
-               %xmlDoc.setAttribute("AdjustCenter", %configObj.AdjustCenter);
-               %xmlDoc.setAttribute("AdjustFloor", %configObj.AdjustFloor);
-               %xmlDoc.setAttribute("CollapseSubmeshes", %configObj.CollapseSubmeshes);         
-               %xmlDoc.setAttribute("LODType", %configObj.LODType);
-               %xmlDoc.setAttribute("ImportedNodes", %configObj.ImportedNodes);
-               %xmlDoc.setAttribute("IgnoreNodes", %configObj.IgnoreNodes);
-               %xmlDoc.setAttribute("ImportMeshes", %configObj.ImportMeshes);
-               %xmlDoc.setAttribute("IgnoreMeshes", %configObj.IgnoreMeshes);
-            %xmlDoc.popElement();
-            
-            %xmlDoc.pushNewElement("Materials");
-               %xmlDoc.setAttribute("ImportMaterials", %configObj.ImportMaterials);
-               %xmlDoc.setAttribute("IgnoreMaterials", %configObj.IgnoreMaterials);
-               %xmlDoc.setAttribute("CreateComposites", %configObj.CreateComposites);
-               %xmlDoc.setAttribute("UseDiffuseSuffixOnOriginImg", %configObj.UseDiffuseSuffixOnOriginImg);
-               %xmlDoc.setAttribute("UseExistingMaterials", %configObj.UseExistingMaterials);
-            %xmlDoc.popElement();
-            
-            %xmlDoc.pushNewElement("Animations");
-               %xmlDoc.setAttribute("ImportAnimations", %configObj.ImportAnimations);
-               %xmlDoc.setAttribute("SeparateAnimations", %configObj.SeparateAnimations);
-               %xmlDoc.setAttribute("SeparateAnimationPrefix", %configObj.SeparateAnimationPrefix);
-            %xmlDoc.popElement();
-            
-            %xmlDoc.pushNewElement("Collisions");
-               %xmlDoc.setAttribute("GenerateCollisions", %configObj.GenerateCollisions);
-               %xmlDoc.setAttribute("GenCollisionType", %configObj.GenCollisionType);
-               %xmlDoc.setAttribute("CollisionMeshPrefix", %configObj.CollisionMeshPrefix);
-               %xmlDoc.setAttribute("GenerateLOSCollisions", %configObj.GenerateLOSCollisions);
-               %xmlDoc.setAttribute("GenLOSCollisionType", %configObj.GenLOSCollisionType);
-               %xmlDoc.setAttribute("LOSCollisionMeshPrefix", %configObj.LOSCollisionMeshPrefix);
-            %xmlDoc.popElement();
-            
-            %xmlDoc.pushNewElement("Images");
-               %xmlDoc.setAttribute("ImageType", %configObj.ImageType);
-               %xmlDoc.setAttribute("DiffuseTypeSuffixes", %configObj.DiffuseTypeSuffixes);
-               %xmlDoc.setAttribute("NormalTypeSuffixes", %configObj.NormalTypeSuffixes);
-               %xmlDoc.setAttribute("SpecularTypeSuffixes", %configObj.SpecularTypeSuffixes);
-               %xmlDoc.setAttribute("MetalnessTypeSuffixes", %configObj.MetalnessTypeSuffixes);
-               %xmlDoc.setAttribute("RoughnessTypeSuffixes", %configObj.RoughnessTypeSuffixes);
-               %xmlDoc.setAttribute("SmoothnessTypeSuffixes", %configObj.SmoothnessTypeSuffixes);
-               %xmlDoc.setAttribute("AOTypeSuffixes", %configObj.AOTypeSuffixes);
-               %xmlDoc.setAttribute("CompositeTypeSuffixes", %configObj.CompositeTypeSuffixes);
-               %xmlDoc.setAttribute("TextureFilteringMode", %configObj.TextureFilteringMode);
-               %xmlDoc.setAttribute("UseMips", %configObj.UseMips);
-               %xmlDoc.setAttribute("IsHDR", %configObj.IsHDR);
-               %xmlDoc.setAttribute("Scaling", %configObj.Scaling);
-               %xmlDoc.setAttribute("Compressed", %configObj.Compressed);
-               %xmlDoc.setAttribute("GenerateMaterialOnImport", %configObj.GenerateMaterialOnImport);
-               %xmlDoc.setAttribute("PopulateMaterialMaps", %configObj.PopulateMaterialMaps);
-            %xmlDoc.popElement();
-            
-            %xmlDoc.pushNewElement("Sounds");
-               %xmlDoc.setAttribute("VolumeAdjust", %configObj.VolumeAdjust);
-               %xmlDoc.setAttribute("PitchAdjust", %configObj.PitchAdjust);
-               %xmlDoc.setAttribute("Compressed", %configObj.Compressed);
-            %xmlDoc.popElement();
-         
-         %xmlDoc.popElement();
-      }
-      
-   %xmlDoc.popElement();
-   
-   %xmlDoc.saveFile($AssetBrowser::importConfigsFile);
+   %success = AssetImportSettings.write();
    
    
    ImportAssetConfigEditorWindow.setVisible(0);
    ImportAssetConfigEditorWindow.setVisible(0);
    ImportAssetWindow.reloadImportOptionConfigs();
    ImportAssetWindow.reloadImportOptionConfigs();
 }
 }
 
 
+function ImportOptionsConfigList::addSettingsField(%this, %settingsFieldName, %labelText, %fieldType, %tooltip, %fieldData)
+{
+   %moddedSettingsFieldName = strreplace(%settingsFieldName, "/", "-");
+   
+   %this.addCallbackField(%moddedSettingsFieldName, %labelText, %fieldType, "", AssetImportSettings.value(%settingsFieldName), %fieldData, "changeEditorSetting");
+}
+
+function ImportOptionsConfigList::changeEditorSetting(%this, %varName, %value)
+{
+   %varName = strreplace(%varName, "-", "/");
+   
+   echo("Set " @ %varName @ " to be " @ %value);  
+   
+   AssetImportSettings.setValue(%varName, %value);
+   
+   %success = AssetImportSettings.write();
+}
+
 function ImportOptionsConfigList::ToggleImportMesh(%this, %fieldName, %newValue, %ownerObject)
 function ImportOptionsConfigList::ToggleImportMesh(%this, %fieldName, %newValue, %ownerObject)
 {
 {
    %this.setFieldEnabled("DoUpAxisOverride", %newValue);
    %this.setFieldEnabled("DoUpAxisOverride", %newValue);

+ 5 - 5
Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/image.cs

@@ -1,6 +1,6 @@
 function AssetBrowser::prepareImportImageAsset(%this, %assetItem)
 function AssetBrowser::prepareImportImageAsset(%this, %assetItem)
 {
 {
-   if(ImportAssetWindow.activeImportConfig.GenerateMaterialOnImport == 1 && %assetItem.parentAssetItem $= "")
+   if(getAssetImportConfigValue("Images/GenerateMaterialOnImport", "1") == 1 && %assetItem.parentAssetItem $= "")
    {
    {
       //First, see if this already has a suffix of some sort based on our import config logic. Many content pipeline tools like substance automatically appends them
       //First, see if this already has a suffix of some sort based on our import config logic. Many content pipeline tools like substance automatically appends them
       %foundSuffixType = ImportAssetWindow.parseImageSuffixes(%assetItem);
       %foundSuffixType = ImportAssetWindow.parseImageSuffixes(%assetItem);
@@ -45,21 +45,21 @@ function AssetBrowser::prepareImportImageAsset(%this, %assetItem)
       //if we find these, we'll just populate into the original's material
       //if we find these, we'll just populate into the original's material
       
       
       //If we need to append the diffuse suffix and indeed didn't find a suffix on the name, do that here
       //If we need to append the diffuse suffix and indeed didn't find a suffix on the name, do that here
-      if(ImportAssetWindow.activeImportConfig.UseDiffuseSuffixOnOriginImg == 1)
+      if(getAssetImportConfigValue("Images/UseDiffuseSuffixOnOriginImg", "1") == 1)
       {
       {
          if(%foundSuffixType $= "")
          if(%foundSuffixType $= "")
          {
          {
-            %diffuseToken = getToken(ImportAssetWindow.activeImportConfig.DiffuseTypeSuffixes, ",", 0);
+            %diffuseToken = getToken(getAssetImportConfigValue("Images/DiffuseTypeSuffixes", ""), ",", 0);
             %assetItem.AssetName = %assetItem.AssetName @ %diffuseToken;
             %assetItem.AssetName = %assetItem.AssetName @ %diffuseToken;
             
             
-            if(ImportAssetWindow.activeImportConfig.PopulateMaterialMaps == 1)
+            if(getAssetImportConfigValue("Materials/PopulateMaterialMaps", "1") == 1)
                %materialAsset.diffuseImageAsset = %assetItem;
                %materialAsset.diffuseImageAsset = %assetItem;
          }
          }
          else if(%foundSuffixType !$= "")
          else if(%foundSuffixType !$= "")
          {
          {
             //otherwise, if we have some sort of suffix, we'll want to figure out if we've already got an existing material, and should append to it  
             //otherwise, if we have some sort of suffix, we'll want to figure out if we've already got an existing material, and should append to it  
             
             
-            if(ImportAssetWindow.activeImportConfig.PopulateMaterialMaps == 1)
+            if(getAssetImportConfigValue("Materials/PopulateMaterialMaps", "1") == 1)
             {
             {
                if(%foundSuffixType $= "diffuse")
                if(%foundSuffixType $= "diffuse")
                   %materialAsset.diffuseImageAsset = %assetItem;
                   %materialAsset.diffuseImageAsset = %assetItem;

+ 10 - 10
Templates/BaseGame/game/tools/assetBrowser/scripts/assetTypes/material.cs

@@ -62,12 +62,12 @@ function AssetBrowser::prepareImportMaterialAsset(%this, %assetItem)
    %fileExt = fileExt(%assetItem.filePath);
    %fileExt = fileExt(%assetItem.filePath);
    
    
    //Check if we need to filter this material out or not
    //Check if we need to filter this material out or not
-   if(ImportAssetWindow.activeImportConfig.IgnoreMaterials !$= "")
+   if(getAssetImportConfigValue("Materials/IgnoreMaterials", "") !$= "")
    {
    {
-      %ignoredMatNamesCount = getTokenCount(ImportAssetWindow.activeImportConfig.IgnoreMaterials, ",;");
+      %ignoredMatNamesCount = getTokenCount(getAssetImportConfigValue("Materials/IgnoreMaterials", ""), ",;");
       for(%i=0; %i < %ignoredMatNamesCount; %i++)
       for(%i=0; %i < %ignoredMatNamesCount; %i++)
       {
       {
-        %ignoreName = getToken(ImportAssetWindow.activeImportConfig.IgnoreMaterials, ".;", %i);
+        %ignoreName = getToken(getAssetImportConfigValue("Materials/IgnoreMaterials", ""), ",;", %i);
         
         
         if(strIsMatchExpr(%ignoreName, %fileName))
         if(strIsMatchExpr(%ignoreName, %fileName))
         {
         {
@@ -78,7 +78,7 @@ function AssetBrowser::prepareImportMaterialAsset(%this, %assetItem)
       }
       }
    }
    }
    
    
-   if(ImportAssetWindow.activeImportConfig.PopulateMaterialMaps == 1)
+   if(getAssetImportConfigValue("Materials/PopulateMaterialMaps", "") == 1)
    {
    {
       %materialItemId = ImportAssetTree.findItemByObjectId(%assetItem);
       %materialItemId = ImportAssetTree.findItemByObjectId(%assetItem);
       
       
@@ -90,9 +90,9 @@ function AssetBrowser::prepareImportMaterialAsset(%this, %assetItem)
          
          
          %diffuseImageSuffix = ImportAssetWindow.parseImagePathSuffixes(%diffuseImagePath);
          %diffuseImageSuffix = ImportAssetWindow.parseImagePathSuffixes(%diffuseImagePath);
          
          
-         if(ImportAssetWindow.activeImportConfig.UseDiffuseSuffixOnOriginImg == 1 && %diffuseImageSuffix $= "")
+         if(getAssetImportConfigValue("Images/UseDiffuseSuffixOnOriginImage", "1") == 1 && %diffuseImageSuffix $= "")
          {
          {
-            %diffuseToken = getToken(ImportAssetWindow.activeImportConfig.DiffuseTypeSuffixes, ",;", 0);
+            %diffuseToken = getToken(getAssetImportConfigValue("Materials/DiffuseTypeSuffixes", ""), ",;", 0);
             
             
             %diffuseAsset = AssetBrowser.addImportingAsset("Image", %diffuseImagePath, %assetItem, %filename @ %diffuseToken);
             %diffuseAsset = AssetBrowser.addImportingAsset("Image", %diffuseImagePath, %assetItem, %filename @ %diffuseToken);
          }
          }
@@ -121,10 +121,10 @@ function AssetBrowser::prepareImportMaterialAsset(%this, %assetItem)
                   %diffFileName = fileBase(%assetItem.diffuseImageAsset.filePath);
                   %diffFileName = fileBase(%assetItem.diffuseImageAsset.filePath);
                   %diffFileExt = fileExt(%assetItem.diffuseImageAsset.filePath);
                   %diffFileExt = fileExt(%assetItem.diffuseImageAsset.filePath);
                   
                   
-                  %suffixCount = getTokenCount(ImportAssetWindow.activeImportConfig.DiffuseTypeSuffixes, ",;");
+                  %suffixCount = getTokenCount(getAssetImportConfigValue("Materials/DiffuseTypeSuffixes", ""), ",;");
                   for(%sfx = 0; %sfx < %suffixCount; %sfx++)
                   for(%sfx = 0; %sfx < %suffixCount; %sfx++)
                   {
                   {
-                     %suffixToken = getToken(ImportAssetWindow.activeImportConfig.DiffuseTypeSuffixes, ",;", %sfx);
+                     %suffixToken = getToken(getAssetImportConfigValue("Materials/DiffuseTypeSuffixes", ""), ",;", %sfx);
                      if(strIsMatchExpr("*"@%suffixToken, %diffFileName))
                      if(strIsMatchExpr("*"@%suffixToken, %diffFileName))
                      {
                      {
                         %diffFileName = strreplace(%diffFileName, %suffixToken, "");
                         %diffFileName = strreplace(%diffFileName, %suffixToken, "");
@@ -143,7 +143,7 @@ function AssetBrowser::prepareImportMaterialAsset(%this, %assetItem)
             %assetItem.normalImageAsset = %normalAsset;
             %assetItem.normalImageAsset = %normalAsset;
          }
          }
       }
       }
-      if(%assetItem.specularImageAsset $= "")
+      /*if(%assetItem.specularImageAsset $= "")
       {
       {
          //Specular
          //Specular
          %listCount = getTokenCount(ImportAssetWindow.activeImportConfig.SpecularTypeSuffixes, ",;");
          %listCount = getTokenCount(ImportAssetWindow.activeImportConfig.SpecularTypeSuffixes, ",;");
@@ -163,7 +163,7 @@ function AssetBrowser::prepareImportMaterialAsset(%this, %assetItem)
                break;  
                break;  
             }
             }
          }
          }
-      }
+      }*/
       
       
       if(%assetItem.metalImageAsset $= "")
       if(%assetItem.metalImageAsset $= "")
       {
       {

+ 106 - 106
Templates/BaseGame/game/tools/settings.xml

@@ -1,157 +1,157 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <EditorSettings>
 <EditorSettings>
-    <Group name="AxisGizmo">
-        <Setting name="rotationSnap">15</Setting>
-        <Setting name="mouseRotateScalar">0.8</Setting>
-        <Setting name="renderWhenUsed">0</Setting>
-        <Setting name="axisGizmoMaxScreenLen">100</Setting>
-        <Setting name="snapRotations">0</Setting>
-        <Setting name="mouseScaleScalar">0.8</Setting>
-        <Setting name="renderInfoText">1</Setting>
-        <Group name="Grid">
-            <Setting name="renderPlane">0</Setting>
-            <Setting name="gridColor">255 255 255 20</Setting>
-            <Setting name="gridSize">10 10 10</Setting>
-            <Setting name="planeDim">500</Setting>
-            <Setting name="snapToGrid">0</Setting>
-            <Setting name="renderPlaneHashes">0</Setting>
-        </Group>
-    </Group>
-    <Group name="Theme">
-        <Setting name="tooltipDividerColor">72 70 68 255</Setting>
-        <Setting name="fieldTextColor">178 175 172 255</Setting>
-        <Setting name="fieldBGHLColor">72 70 68 255</Setting>
-        <Setting name="fieldTextSELColor">240 240 240 255</Setting>
-        <Setting name="dividerMidColor">50 49 48 255</Setting>
-        <Setting name="windowBackgroundColor">32 31 30 255</Setting>
-        <Setting name="dividerLightColor">96 94 92 255</Setting>
-        <Setting name="dividerDarkColor">17 16 15 255</Setting>
-        <Setting name="fieldBGColor">59 58 57 255</Setting>
-        <Setting name="tooltipBGColor">43 43 43 255</Setting>
-        <Setting name="tabsColor">37 36 35 255</Setting>
-        <Setting name="tabsHLColor">50 49 48 255</Setting>
-        <Setting name="headerTextColor">236 234 232 255</Setting>
-        <Setting name="headerColor">50 49 48 255</Setting>
-        <Setting name="fieldBGSELColor">100 98 96 255</Setting>
-        <Setting name="tabsSELColor">59 58 57 255</Setting>
-        <Setting name="fieldTextHLColor">234 232 230 255</Setting>
-        <Setting name="tooltipTextColor">255 255 255 255</Setting>
-    </Group>
     <Group name="WorldEditor">
     <Group name="WorldEditor">
-        <Setting name="undoLimit">40</Setting>
+        <Setting name="orthoFOV">50</Setting>
         <Setting name="currentEditor">WorldEditorInspectorPlugin</Setting>
         <Setting name="currentEditor">WorldEditorInspectorPlugin</Setting>
-        <Setting name="forceLoadDAE">0</Setting>
         <Setting name="torsionPath">AssetWork_Debug.exe</Setting>
         <Setting name="torsionPath">AssetWork_Debug.exe</Setting>
-        <Setting name="orthoShowGrid">1</Setting>
         <Setting name="displayType">6</Setting>
         <Setting name="displayType">6</Setting>
-        <Setting name="orthoFOV">50</Setting>
         <Setting name="dropType">screenCenter</Setting>
         <Setting name="dropType">screenCenter</Setting>
+        <Setting name="undoLimit">40</Setting>
+        <Setting name="forceLoadDAE">0</Setting>
+        <Setting name="orthoShowGrid">1</Setting>
+        <Group name="Docs">
+            <Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
+            <Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
+            <Setting name="forumURL">http://www.garagegames.com/products/torque-3d/forums</Setting>
+            <Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
+        </Group>
+        <Group name="Theme">
+            <Setting name="windowTitleBGNAColor">180 180 180 255</Setting>
+            <Setting name="windowTitleFontHLColor">255 255 255 255</Setting>
+            <Setting name="windowTitleBGHLColor">48 48 48 255</Setting>
+            <Setting name="windowTitleFontColor">215 215 215 255</Setting>
+            <Setting name="windowTitleBGColor">50 50 50 255</Setting>
+        </Group>
         <Group name="ObjectIcons">
         <Group name="ObjectIcons">
             <Setting name="fadeIconsEndAlpha">0</Setting>
             <Setting name="fadeIconsEndAlpha">0</Setting>
-            <Setting name="fadeIcons">1</Setting>
-            <Setting name="fadeIconsStartDist">8</Setting>
-            <Setting name="fadeIconsEndDist">20</Setting>
             <Setting name="fadeIconsStartAlpha">255</Setting>
             <Setting name="fadeIconsStartAlpha">255</Setting>
+            <Setting name="fadeIconsEndDist">20</Setting>
+            <Setting name="fadeIconsStartDist">8</Setting>
+            <Setting name="fadeIcons">1</Setting>
         </Group>
         </Group>
-        <Group name="Grid">
-            <Setting name="gridSize">1</Setting>
-            <Setting name="gridMinorColor">51 51 51 100</Setting>
-            <Setting name="gridOriginColor">255 255 255 100</Setting>
-            <Setting name="gridColor">102 102 102 100</Setting>
-            <Setting name="gridSnap">0</Setting>
-        </Group>
-        <Group name="Images">
-            <Setting name="selectHandle">tools/worldEditor/images/SelectHandle</Setting>
-            <Setting name="defaultHandle">tools/worldEditor/images/DefaultHandle</Setting>
-            <Setting name="lockedHandle">tools/worldEditor/images/LockedHandle</Setting>
-        </Group>
-        <Group name="Render">
-            <Setting name="renderPopupBackground">1</Setting>
-            <Setting name="renderObjHandle">1</Setting>
-            <Setting name="showMousePopupInfo">1</Setting>
-            <Setting name="renderObjText">1</Setting>
-            <Setting name="renderSelectionBox">1</Setting>
+        <Group name="Color">
+            <Setting name="objMouseOverSelectColor">0 0 255 255</Setting>
+            <Setting name="objectTextColor">255 255 255 255</Setting>
+            <Setting name="popupBackgroundColor">100 100 100 255</Setting>
+            <Setting name="objSelectColor">255 0 0 255</Setting>
+            <Setting name="selectionBoxColor">255 255 0 255</Setting>
+            <Setting name="objMouseOverColor">0 255 0 255</Setting>
+            <Setting name="dragRectColor">255 255 0 255</Setting>
         </Group>
         </Group>
         <Group name="Tools">
         <Group name="Tools">
-            <Setting name="snapSoft">0</Setting>
             <Setting name="snapSoftSize">2</Setting>
             <Setting name="snapSoftSize">2</Setting>
-            <Setting name="dropAtScreenCenterScalar">1</Setting>
-            <Setting name="objectsUseBoxCenter">1</Setting>
             <Setting name="snapGround">0</Setting>
             <Setting name="snapGround">0</Setting>
-            <Setting name="boundingBoxCollision">0</Setting>
+            <Setting name="objectsUseBoxCenter">1</Setting>
+            <Setting name="snapSoft">0</Setting>
             <Setting name="dropAtScreenCenterMax">100</Setting>
             <Setting name="dropAtScreenCenterMax">100</Setting>
+            <Setting name="dropAtScreenCenterScalar">1</Setting>
+            <Setting name="boundingBoxCollision">0</Setting>
         </Group>
         </Group>
-        <Group name="Color">
-            <Setting name="popupBackgroundColor">100 100 100 255</Setting>
-            <Setting name="objMouseOverSelectColor">0 0 255 255</Setting>
-            <Setting name="objMouseOverColor">Lime</Setting>
-            <Setting name="selectionBoxColor">255 255 0 255</Setting>
-            <Setting name="objectTextColor">255 255 255 255</Setting>
-            <Setting name="dragRectColor">255 255 0 255</Setting>
-            <Setting name="objSelectColor">255 0 0 255</Setting>
+        <Group name="Render">
+            <Setting name="renderObjText">1</Setting>
+            <Setting name="showMousePopupInfo">1</Setting>
+            <Setting name="renderObjHandle">1</Setting>
+            <Setting name="renderSelectionBox">1</Setting>
+            <Setting name="renderPopupBackground">1</Setting>
         </Group>
         </Group>
-        <Group name="Theme">
-            <Setting name="windowTitleBGHLColor">48 48 48 255</Setting>
-            <Setting name="windowTitleBGNAColor">180 180 180 255</Setting>
-            <Setting name="windowTitleBGColor">50 50 50 255</Setting>
-            <Setting name="windowTitleFontColor">215 215 215 255</Setting>
-            <Setting name="windowTitleFontHLColor">255 255 255 255</Setting>
+        <Group name="Grid">
+            <Setting name="gridOriginColor">255 255 255 100</Setting>
+            <Setting name="gridSnap">0</Setting>
+            <Setting name="gridMinorColor">51 51 51 100</Setting>
+            <Setting name="gridColor">102 102 102 100</Setting>
+            <Setting name="gridSize">1</Setting>
         </Group>
         </Group>
-        <Group name="Docs">
-            <Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
-            <Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
-            <Setting name="forumURL">http://www.garagegames.com/products/torque-3d/forums</Setting>
-            <Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
+        <Group name="Images">
+            <Setting name="lockedHandle">tools/worldEditor/images/LockedHandle</Setting>
+            <Setting name="defaultHandle">tools/worldEditor/images/DefaultHandle</Setting>
+            <Setting name="selectHandle">tools/worldEditor/images/SelectHandle</Setting>
         </Group>
         </Group>
     </Group>
     </Group>
+    <Group name="Theme">
+        <Setting name="fieldTextColor">178 175 172 255</Setting>
+        <Setting name="fieldTextSELColor">240 240 240 255</Setting>
+        <Setting name="windowBackgroundColor">32 31 30 255</Setting>
+        <Setting name="tooltipTextColor">255 255 255 255</Setting>
+        <Setting name="tabsSELColor">59 58 57 255</Setting>
+        <Setting name="headerColor">50 49 48 255</Setting>
+        <Setting name="tabsHLColor">50 49 48 255</Setting>
+        <Setting name="tooltipBGColor">43 43 43 255</Setting>
+        <Setting name="dividerDarkColor">17 16 15 255</Setting>
+        <Setting name="tooltipDividerColor">72 70 68 255</Setting>
+        <Setting name="fieldBGHLColor">72 70 68 255</Setting>
+        <Setting name="dividerMidColor">50 49 48 255</Setting>
+        <Setting name="fieldTextHLColor">234 232 230 255</Setting>
+        <Setting name="fieldBGSELColor">100 98 96 255</Setting>
+        <Setting name="headerTextColor">236 234 232 255</Setting>
+        <Setting name="dividerLightColor">96 94 92 255</Setting>
+        <Setting name="tabsColor">37 36 35 255</Setting>
+        <Setting name="fieldBGColor">59 58 57 255</Setting>
+    </Group>
     <Group name="GuiEditor">
     <Group name="GuiEditor">
-        <Setting name="previewResolution">1024 768</Setting>
         <Setting name="lastPath">tools/gui</Setting>
         <Setting name="lastPath">tools/gui</Setting>
-        <Group name="Rendering">
-            <Setting name="drawGuides">1</Setting>
-            <Setting name="drawBorderLines">1</Setting>
-        </Group>
+        <Setting name="previewResolution">1024 768</Setting>
         <Group name="EngineDevelopment">
         <Group name="EngineDevelopment">
             <Setting name="showEditorProfiles">0</Setting>
             <Setting name="showEditorProfiles">0</Setting>
-            <Setting name="showEditorGuis">0</Setting>
             <Setting name="toggleIntoEditor">0</Setting>
             <Setting name="toggleIntoEditor">0</Setting>
+            <Setting name="showEditorGuis">0</Setting>
         </Group>
         </Group>
         <Group name="Snapping">
         <Group name="Snapping">
-            <Setting name="snapToGuides">1</Setting>
+            <Setting name="snap2Grid">0</Setting>
+            <Setting name="snapToControls">1</Setting>
             <Setting name="snap2GridSize">8</Setting>
             <Setting name="snap2GridSize">8</Setting>
-            <Setting name="snapToEdges">1</Setting>
+            <Setting name="snapToCenters">1</Setting>
             <Setting name="snapToCanvas">1</Setting>
             <Setting name="snapToCanvas">1</Setting>
-            <Setting name="snapToControls">1</Setting>
+            <Setting name="snapToGuides">1</Setting>
             <Setting name="sensitivity">2</Setting>
             <Setting name="sensitivity">2</Setting>
-            <Setting name="snapToCenters">1</Setting>
-            <Setting name="snap2Grid">0</Setting>
+            <Setting name="snapToEdges">1</Setting>
         </Group>
         </Group>
         <Group name="Help">
         <Group name="Help">
-            <Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
-            <Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
             <Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
             <Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
+            <Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
+            <Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
+        </Group>
+        <Group name="Selection">
+            <Setting name="fullBox">0</Setting>
+        </Group>
+        <Group name="Rendering">
+            <Setting name="drawBorderLines">1</Setting>
+            <Setting name="drawGuides">1</Setting>
         </Group>
         </Group>
         <Group name="Library">
         <Group name="Library">
             <Setting name="viewType">Categorized</Setting>
             <Setting name="viewType">Categorized</Setting>
         </Group>
         </Group>
-        <Group name="Selection">
-            <Setting name="fullBox">0</Setting>
+    </Group>
+    <Group name="AxisGizmo">
+        <Setting name="snapRotations">0</Setting>
+        <Setting name="mouseRotateScalar">0.8</Setting>
+        <Setting name="renderInfoText">1</Setting>
+        <Setting name="axisGizmoMaxScreenLen">100</Setting>
+        <Setting name="rotationSnap">15</Setting>
+        <Setting name="mouseScaleScalar">0.8</Setting>
+        <Setting name="renderWhenUsed">0</Setting>
+        <Group name="Grid">
+            <Setting name="gridSize">10 10 10</Setting>
+            <Setting name="snapToGrid">0</Setting>
+            <Setting name="gridColor">255 255 255 20</Setting>
+            <Setting name="planeDim">500</Setting>
+            <Setting name="renderPlaneHashes">0</Setting>
+            <Setting name="renderPlane">0</Setting>
         </Group>
         </Group>
     </Group>
     </Group>
+    <Group name="NavEditor">
+        <Setting name="SpawnClass">AIPlayer</Setting>
+    </Group>
     <Group name="LevelInformation">
     <Group name="LevelInformation">
         <Setting name="levelsDirectory">data/FPSGameplay/levels</Setting>
         <Setting name="levelsDirectory">data/FPSGameplay/levels</Setting>
         <Group name="levels">
         <Group name="levels">
-            <Group name="BlankRoom.mis">
-                <Setting name="cameraSpeed">25</Setting>
-            </Group>
             <Group name="PbrMatTest.mis">
             <Group name="PbrMatTest.mis">
                 <Setting name="cameraSpeed">5</Setting>
                 <Setting name="cameraSpeed">5</Setting>
             </Group>
             </Group>
+            <Group name="BlankRoom.mis">
+                <Setting name="cameraSpeed">25</Setting>
+            </Group>
         </Group>
         </Group>
     </Group>
     </Group>
-    <Group name="NavEditor">
-        <Setting name="SpawnClass">AIPlayer</Setting>
-    </Group>
     <Group name="ConvexEditor">
     <Group name="ConvexEditor">
         <Setting name="materialName">Grid_512_Orange</Setting>
         <Setting name="materialName">Grid_512_Orange</Setting>
     </Group>
     </Group>