ソースを参照

Various fixes
Separated baked cubemap load/processing logic into a separate function for clarity
various corrections for when fields change so it properly notifies down to the client
Fixed enable flag logic to actually work
Fixed skylight enable flag so it properly disables if flipped off

Areloch 6 年 前
コミット
27b304eec3

+ 5 - 0
Engine/source/T3D/lighting/boxEnvironmentProbe.cpp

@@ -152,8 +152,13 @@ void BoxEnvironmentProbe::unpackUpdate(NetConnection *conn, BitStream *stream)
 
 
 void BoxEnvironmentProbe::updateProbeParams()
 void BoxEnvironmentProbe::updateProbeParams()
 {
 {
+   if (!mProbeInfo)
+      return;
+
    mProbeShapeType = ProbeRenderInst::Box;
    mProbeShapeType = ProbeRenderInst::Box;
    mProbeInfo->mAtten = mAtten;
    mProbeInfo->mAtten = mAtten;
+
+   Parent::updateProbeParams();
 }
 }
 
 
 void BoxEnvironmentProbe::setPreviewMatParameters(SceneRenderState* renderState, BaseMatInstance* mat)
 void BoxEnvironmentProbe::setPreviewMatParameters(SceneRenderState* renderState, BaseMatInstance* mat)

+ 84 - 71
Engine/source/T3D/lighting/reflectionProbe.cpp

@@ -143,10 +143,7 @@ ReflectionProbe::~ReflectionProbe()
    if (mEditorShapeInst)
    if (mEditorShapeInst)
       SAFE_DELETE(mEditorShapeInst);
       SAFE_DELETE(mEditorShapeInst);
 
 
-   if (mProbeInfo)
-      SAFE_DELETE(mProbeInfo);
-
-   if (mReflectionModeType != StaticCubemap && mStaticCubemap)
+   if (mReflectionModeType == StaticCubemap && mStaticCubemap)
       mStaticCubemap->deleteObject();
       mStaticCubemap->deleteObject();
 }
 }
 
 
@@ -209,7 +206,7 @@ bool ReflectionProbe::_setEnabled(void *object, const char *index, const char *d
    ReflectionProbe* probe = reinterpret_cast< ReflectionProbe* >(object);
    ReflectionProbe* probe = reinterpret_cast< ReflectionProbe* >(object);
 
 
    probe->mEnabled = dAtob(data);
    probe->mEnabled = dAtob(data);
-   probe->setMaskBits(-1);
+   probe->setMaskBits(EnabledMask);
 
 
    return true;
    return true;
 }
 }
@@ -219,6 +216,7 @@ bool ReflectionProbe::_doBake(void *object, const char *index, const char *data)
    ReflectionProbe* probe = reinterpret_cast< ReflectionProbe* >(object);
    ReflectionProbe* probe = reinterpret_cast< ReflectionProbe* >(object);
 
 
    probe->bake();
    probe->bake();
+   probe->setMaskBits(StaticDataMask);
 
 
    return false;
    return false;
 }
 }
@@ -240,6 +238,7 @@ bool ReflectionProbe::_setRadius(void *object, const char *index, const char *da
       return false;
       return false;
 
 
    probe->mObjScale = Point3F(probe->mRadius, probe->mRadius, probe->mRadius);
    probe->mObjScale = Point3F(probe->mRadius, probe->mRadius, probe->mRadius);
+   probe->setMaskBits(StaticDataMask);
    
    
    return true;
    return true;
 }
 }
@@ -259,6 +258,8 @@ bool ReflectionProbe::_setReflectionMode(void *object, const char *index, const
       probe->mCubemapName = "";
       probe->mCubemapName = "";
    }
    }
 
 
+   probe->setMaskBits(StaticDataMask);
+
    return true;
    return true;
 }
 }
 
 
@@ -307,6 +308,7 @@ void ReflectionProbe::onRemove()
    if (isClientObject())
    if (isClientObject())
    {
    {
       PROBEMGR->unregisterProbe(mProbeInfo->mProbeIdx);
       PROBEMGR->unregisterProbe(mProbeInfo->mProbeIdx);
+      mProbeInfo = nullptr;
    }
    }
 
 
    // Remove this object from the scene
    // Remove this object from the scene
@@ -342,15 +344,17 @@ void ReflectionProbe::setTransform(const MatrixF & mat)
 {
 {
    // Let SceneObject handle all of the matrix manipulation
    // Let SceneObject handle all of the matrix manipulation
    if (!mEditPosOffset)
    if (!mEditPosOffset)
+   {
       Parent::setTransform(mat);
       Parent::setTransform(mat);
+      setMaskBits(TransformMask);
+   }
    else
    else
+   {
       mProbeRefOffset = mat.getPosition();
       mProbeRefOffset = mat.getPosition();
+      setMaskBits(StaticDataMask);
+   }
 
 
    mDirty = true;
    mDirty = true;
-
-   // Dirty our network mask so that the new transform gets
-   // transmitted to the client object
-   setMaskBits(TransformMask);
 }
 }
 
 
 const MatrixF& ReflectionProbe::getTransform() const 
 const MatrixF& ReflectionProbe::getTransform() const 
@@ -369,15 +373,17 @@ const MatrixF& ReflectionProbe::getTransform() const
 void ReflectionProbe::setScale(const VectorF &scale)
 void ReflectionProbe::setScale(const VectorF &scale)
 {
 {
    if (!mEditPosOffset)
    if (!mEditPosOffset)
+   {
       Parent::setScale(scale);
       Parent::setScale(scale);
+      setMaskBits(TransformMask);
+   }
    else
    else
+   {
       mProbeRefScale = scale;
       mProbeRefScale = scale;
+      setMaskBits(StaticDataMask);
+   }
 
 
    mDirty = true;
    mDirty = true;
-
-   // Dirty our network mask so that the new transform gets
-   // transmitted to the client object
-   setMaskBits(TransformMask);
 }
 }
 
 
 const VectorF& ReflectionProbe::getScale() const
 const VectorF& ReflectionProbe::getScale() const
@@ -495,6 +501,8 @@ void ReflectionProbe::updateProbeParams()
    if (!mProbeInfo)
    if (!mProbeInfo)
       return;
       return;
 
 
+   mProbeInfo->mIsEnabled = mEnabled;
+
    mProbeInfo->mProbeShapeType = mProbeShapeType;
    mProbeInfo->mProbeShapeType = mProbeShapeType;
 
 
    if (mProbeShapeType == ProbeRenderInst::Sphere)
    if (mProbeShapeType == ProbeRenderInst::Sphere)
@@ -553,6 +561,8 @@ void ReflectionProbe::updateProbeParams()
    {
    {
       if (mReflectionModeType == StaticCubemap)
       if (mReflectionModeType == StaticCubemap)
          processStaticCubemap();
          processStaticCubemap();
+      else if (mReflectionModeType == BakedCubemap)
+         processBakedCubemap();
       else
       else
          processDynamicCubemap();
          processDynamicCubemap();
    }
    }
@@ -562,61 +572,16 @@ void ReflectionProbe::updateProbeParams()
 
 
 void ReflectionProbe::processDynamicCubemap()
 void ReflectionProbe::processDynamicCubemap()
 {
 {
-   if (!mProbeInfo)
+   //if (!mProbeInfo)
       return;
       return;
 
 
    mEnabled = false;
    mEnabled = false;
 
 
-   if (mReflectionModeType != DynamicCubemap)
-   {
-      mProbeInfo->mCubeReflector.unregisterReflector();
-
-      if ((mReflectionModeType == BakedCubemap) && !mProbeUniqueID.isEmpty())
-      {
-         String irrPath = getIrradianceMapPath();
-         if (Platform::isFile(irrPath))
-         {
-            mIrridianceMap->setCubemapFile(FileName(irrPath));
-            //mIrridianceMap->updateFaces();
-         }
-
-         if (mIrridianceMap == nullptr || mIrridianceMap->mCubemap.isNull())
-         {
-            Con::errorf("ReflectionProbe::processDynamicCubemap() - Unable to load baked irradiance map at %s", getIrradianceMapPath().c_str());
-            return;
-         }
-
-         String prefilPath = getPrefilterMapPath();
-         if (Platform::isFile(prefilPath))
-         {
-            mPrefilterMap->setCubemapFile(FileName(prefilPath));
-            //mPrefilterMap->updateFaces();
-         }
-
-         if (mPrefilterMap == nullptr || mPrefilterMap->mCubemap.isNull())
-         {
-            Con::errorf("ReflectionProbe::processDynamicCubemap() - Unable to load baked prefilter map at %s", getPrefilterMapPath().c_str());
-            return;
-         }
-
-         //mProbeInfo->mPrefilterCubemap = mPrefilterMap->mCubemap;
-         //mProbeInfo->mIrradianceCubemap = mIrridianceMap->mCubemap;
-
-         mEnabled = true;
-      }
-   }
-   else
+   if (mReflectionModeType == DynamicCubemap && !mDynamicCubemap.isNull())
    {
    {
-      if (mReflectionModeType == DynamicCubemap && !mDynamicCubemap.isNull())
-      {
-         mProbeInfo->mPrefilterCubemap = mDynamicCubemap;
+      mProbeInfo->mPrefilterCubemap = mDynamicCubemap;
 
 
-         mProbeInfo->mCubeReflector.registerReflector(this, reflectorDesc); //need to decide how we wanna do the reflectorDesc. static name or a field
-      }
-      else
-      {
-         mEnabled = false;
-      }
+      //mCubeReflector.registerReflector(this, reflectorDesc); //need to decide how we wanna do the reflectorDesc. static name or a field
    }
    }
 
 
    if (mEnabled)
    if (mEnabled)
@@ -629,12 +594,61 @@ void ReflectionProbe::processDynamicCubemap()
    //   PROBEMGR->updateProbeTexture(mProbeInfo->mProbeIdx);
    //   PROBEMGR->updateProbeTexture(mProbeInfo->mProbeIdx);
 }
 }
 
 
+void ReflectionProbe::processBakedCubemap()
+{
+   if (!mProbeInfo)
+      return;
+
+   mProbeInfo->mIsEnabled = false;
+
+   if ((mReflectionModeType != BakedCubemap) || mProbeUniqueID.isEmpty())
+      return;
+
+   String irrPath = getIrradianceMapPath();
+   if (Platform::isFile(irrPath))
+   {
+      mIrridianceMap->setCubemapFile(FileName(irrPath));
+      mIrridianceMap->updateFaces();
+   }
+
+   if (mIrridianceMap == nullptr || mIrridianceMap->mCubemap.isNull())
+   {
+      Con::errorf("ReflectionProbe::processDynamicCubemap() - Unable to load baked irradiance map at %s", getIrradianceMapPath().c_str());
+      return;
+   }
+
+   String prefilPath = getPrefilterMapPath();
+   if (Platform::isFile(prefilPath))
+   {
+      mPrefilterMap->setCubemapFile(FileName(prefilPath));
+      mPrefilterMap->updateFaces();
+   }
+
+   if (mPrefilterMap == nullptr || mPrefilterMap->mCubemap.isNull())
+   {
+      Con::errorf("ReflectionProbe::processDynamicCubemap() - Unable to load baked prefilter map at %s", getPrefilterMapPath().c_str());
+      return;
+   }
+
+   mProbeInfo->mPrefilterCubemap = mPrefilterMap->mCubemap;
+   mProbeInfo->mIrradianceCubemap = mIrridianceMap->mCubemap;
+
+   if (mEnabled && mProbeInfo->mPrefilterCubemap->isInitialized() && mProbeInfo->mIrradianceCubemap->isInitialized())
+   {
+      mProbeInfo->mIsEnabled = true;
+
+      //Update the probe manager with our new texture!
+      if (!mProbeInfo->mIsSkylight)
+         PROBEMGR->updateProbeTexture(mProbeInfo->mProbeIdx);
+   }
+}
+
 void ReflectionProbe::processStaticCubemap()
 void ReflectionProbe::processStaticCubemap()
 {
 {
    if (!mProbeInfo)
    if (!mProbeInfo)
       return;
       return;
 
 
-   mEnabled = false;
+   mProbeInfo->mIsEnabled = false;
 
 
    String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/");
    String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/");
 
 
@@ -709,17 +723,16 @@ void ReflectionProbe::processStaticCubemap()
    {
    {
       mProbeInfo->mPrefilterCubemap = mPrefilterMap->mCubemap;
       mProbeInfo->mPrefilterCubemap = mPrefilterMap->mCubemap;
       mProbeInfo->mIrradianceCubemap = mIrridianceMap->mCubemap;
       mProbeInfo->mIrradianceCubemap = mIrridianceMap->mCubemap;
-      mEnabled = true;
    }
    }
 
 
-   if (mEnabled)
+   if (mEnabled && mProbeInfo->mPrefilterCubemap->isInitialized() && mProbeInfo->mIrradianceCubemap->isInitialized())
+   {
       mProbeInfo->mIsEnabled = true;
       mProbeInfo->mIsEnabled = true;
-   else
-      mProbeInfo->mIsEnabled = false;
 
 
-   //Update the probe manager with our new texture!
-   if (!mProbeInfo->mIsSkylight && mProbeInfo->mPrefilterCubemap->isInitialized() && mProbeInfo->mIrradianceCubemap->isInitialized())
-      PROBEMGR->updateProbeTexture(mProbeInfo->mProbeIdx);
+      //Update the probe manager with our new texture!
+      if (!mProbeInfo->mIsSkylight)
+         PROBEMGR->updateProbeTexture(mProbeInfo->mProbeIdx);
+   }
 }
 }
 
 
 bool ReflectionProbe::createClientResources()
 bool ReflectionProbe::createClientResources()
@@ -791,7 +804,7 @@ String ReflectionProbe::getIrradianceMapPath()
 
 
 void ReflectionProbe::bake()
 void ReflectionProbe::bake()
 {
 {
-   if (mReflectionModeType == DynamicCubemap)
+   if (mReflectionModeType != BakedCubemap)
       return;
       return;
 
 
    PROBEMGR->bakeProbe(this);
    PROBEMGR->bakeProbe(this);

+ 4 - 0
Engine/source/T3D/lighting/reflectionProbe.h

@@ -118,6 +118,9 @@ protected:
    U32 cubeDescId;
    U32 cubeDescId;
    ReflectorDesc *reflectorDesc;
    ReflectorDesc *reflectorDesc;
 
 
+   //Utilized in dynamic reflections
+   //CubeReflector mCubeReflector;
+
    ///Prevents us from saving out the cubemaps(for now) but allows us the full HDR range on the in-memory cubemap captures
    ///Prevents us from saving out the cubemaps(for now) but allows us the full HDR range on the in-memory cubemap captures
    bool mUseHDRCaptures;
    bool mUseHDRCaptures;
 
 
@@ -221,6 +224,7 @@ public:
    bool createClientResources();
    bool createClientResources();
 
 
    void processDynamicCubemap();
    void processDynamicCubemap();
+   void processBakedCubemap();
    void processStaticCubemap();
    void processStaticCubemap();
 
 
    // This is the function that allows this object to submit itself for rendering
    // This is the function that allows this object to submit itself for rendering

+ 3 - 0
Engine/source/T3D/lighting/skylight.cpp

@@ -143,6 +143,9 @@ void Skylight::unpackUpdate(NetConnection *conn, BitStream *stream)
 
 
 void Skylight::updateProbeParams()
 void Skylight::updateProbeParams()
 {
 {
+   if (!mProbeInfo)
+      return;
+
    mProbeShapeType = ProbeRenderInst::Skylight;
    mProbeShapeType = ProbeRenderInst::Skylight;
    Parent::updateProbeParams();
    Parent::updateProbeParams();
 }
 }

+ 3 - 0
Engine/source/T3D/lighting/sphereEnvironmentProbe.cpp

@@ -139,6 +139,9 @@ void SphereEnvironmentProbe::unpackUpdate(NetConnection *conn, BitStream *stream
 
 
 void SphereEnvironmentProbe::updateProbeParams()
 void SphereEnvironmentProbe::updateProbeParams()
 {
 {
+   if (!mProbeInfo)
+      return;
+
    mProbeShapeType = ProbeRenderInst::Sphere;
    mProbeShapeType = ProbeRenderInst::Sphere;
    Parent::updateProbeParams();
    Parent::updateProbeParams();
 }
 }

+ 2 - 0
Engine/source/renderInstance/renderProbeMgr.cpp

@@ -415,6 +415,8 @@ void RenderProbeMgr::_setupStaticParameters()
    mEffectiveProbeCount = 0;
    mEffectiveProbeCount = 0;
    mMipCount = 0;
    mMipCount = 0;
 
 
+   mHasSkylight = false;
+
    if (probePositionsData.size() != MAXPROBECOUNT)
    if (probePositionsData.size() != MAXPROBECOUNT)
    {
    {
       probePositionsData.setSize(MAXPROBECOUNT);
       probePositionsData.setSize(MAXPROBECOUNT);

+ 0 - 3
Engine/source/renderInstance/renderProbeMgr.h

@@ -77,9 +77,6 @@ struct ProbeRenderInst
    GFXCubemapHandle mPrefilterCubemap;
    GFXCubemapHandle mPrefilterCubemap;
    GFXCubemapHandle mIrradianceCubemap;
    GFXCubemapHandle mIrradianceCubemap;
 
 
-   //Utilized in dynamic reflections
-   CubeReflector mCubeReflector;
-
    /// The priority of this light used for
    /// The priority of this light used for
    /// light and shadow scoring.
    /// light and shadow scoring.
    F32 mPriority;
    F32 mPriority;

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

@@ -1,125 +1,122 @@
 <?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="mouseScaleScalar">0.8</Setting>
-        <Setting name="renderWhenUsed">0</Setting>
-        <Setting name="renderInfoText">1</Setting>
-        <Setting name="axisGizmoMaxScreenLen">100</Setting>
-        <Setting name="rotationSnap">15</Setting>
-        <Setting name="snapRotations">0</Setting>
-        <Setting name="mouseRotateScalar">0.8</Setting>
-        <Group name="Grid">
-            <Setting name="renderPlane">0</Setting>
-            <Setting name="gridColor">255 255 255 20</Setting>
-            <Setting name="planeDim">500</Setting>
-            <Setting name="renderPlaneHashes">0</Setting>
-            <Setting name="snapToGrid">0</Setting>
-            <Setting name="gridSize">10 10 10</Setting>
-        </Group>
-    </Group>
     <Group name="WorldEditor">
     <Group name="WorldEditor">
-        <Setting name="undoLimit">40</Setting>
-        <Setting name="orthoFOV">50</Setting>
-        <Setting name="displayType">6</Setting>
         <Setting name="forceLoadDAE">0</Setting>
         <Setting name="forceLoadDAE">0</Setting>
         <Setting name="orthoShowGrid">1</Setting>
         <Setting name="orthoShowGrid">1</Setting>
         <Setting name="dropType">screenCenter</Setting>
         <Setting name="dropType">screenCenter</Setting>
+        <Setting name="displayType">6</Setting>
         <Setting name="currentEditor">WorldEditorInspectorPlugin</Setting>
         <Setting name="currentEditor">WorldEditorInspectorPlugin</Setting>
+        <Setting name="undoLimit">40</Setting>
+        <Setting name="orthoFOV">50</Setting>
         <Setting name="torsionPath">AssetWork_Debug.exe</Setting>
         <Setting name="torsionPath">AssetWork_Debug.exe</Setting>
-        <Group name="Grid">
-            <Setting name="gridColor">102 102 102 100</Setting>
-            <Setting name="gridOriginColor">255 255 255 100</Setting>
-            <Setting name="gridMinorColor">51 51 51 100</Setting>
-            <Setting name="gridSize">1</Setting>
-            <Setting name="gridSnap">0</Setting>
+        <Group name="ObjectIcons">
+            <Setting name="fadeIconsStartDist">8</Setting>
+            <Setting name="fadeIcons">1</Setting>
+            <Setting name="fadeIconsEndAlpha">0</Setting>
+            <Setting name="fadeIconsStartAlpha">255</Setting>
+            <Setting name="fadeIconsEndDist">20</Setting>
         </Group>
         </Group>
-        <Group name="Color">
-            <Setting name="objSelectColor">255 0 0 255</Setting>
-            <Setting name="objectTextColor">255 255 255 255</Setting>
-            <Setting name="objMouseOverSelectColor">0 0 255 255</Setting>
-            <Setting name="objMouseOverColor">0 255 0 255</Setting>
-            <Setting name="dragRectColor">255 255 0 255</Setting>
-            <Setting name="popupBackgroundColor">100 100 100 255</Setting>
-            <Setting name="selectionBoxColor">255 255 0 255</Setting>
+        <Group name="Docs">
+            <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="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
+            <Setting name="forumURL">http://www.garagegames.com/products/torque-3d/forums</Setting>
         </Group>
         </Group>
         <Group name="Render">
         <Group name="Render">
-            <Setting name="renderObjHandle">1</Setting>
+            <Setting name="renderObjText">1</Setting>
+            <Setting name="showMousePopupInfo">1</Setting>
             <Setting name="renderSelectionBox">1</Setting>
             <Setting name="renderSelectionBox">1</Setting>
             <Setting name="renderPopupBackground">1</Setting>
             <Setting name="renderPopupBackground">1</Setting>
-            <Setting name="showMousePopupInfo">1</Setting>
-            <Setting name="renderObjText">1</Setting>
+            <Setting name="renderObjHandle">1</Setting>
+        </Group>
+        <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="Tools">
         <Group name="Tools">
-            <Setting name="dropAtScreenCenterMax">100</Setting>
+            <Setting name="snapSoftSize">2</Setting>
             <Setting name="snapSoft">0</Setting>
             <Setting name="snapSoft">0</Setting>
-            <Setting name="snapGround">0</Setting>
+            <Setting name="boundingBoxCollision">0</Setting>
             <Setting name="dropAtScreenCenterScalar">1</Setting>
             <Setting name="dropAtScreenCenterScalar">1</Setting>
-            <Setting name="snapSoftSize">2</Setting>
             <Setting name="objectsUseBoxCenter">1</Setting>
             <Setting name="objectsUseBoxCenter">1</Setting>
-            <Setting name="boundingBoxCollision">0</Setting>
+            <Setting name="snapGround">0</Setting>
+            <Setting name="dropAtScreenCenterMax">100</Setting>
         </Group>
         </Group>
-        <Group name="ObjectIcons">
-            <Setting name="fadeIconsStartDist">8</Setting>
-            <Setting name="fadeIconsEndDist">20</Setting>
-            <Setting name="fadeIconsStartAlpha">255</Setting>
-            <Setting name="fadeIconsEndAlpha">0</Setting>
-            <Setting name="fadeIcons">1</Setting>
+        <Group name="Theme">
+            <Setting name="windowTitleBGHLColor">48 48 48 255</Setting>
+            <Setting name="windowTitleFontColor">215 215 215 255</Setting>
+            <Setting name="windowTitleBGNAColor">180 180 180 255</Setting>
+            <Setting name="windowTitleFontHLColor">255 255 255 255</Setting>
+            <Setting name="windowTitleBGColor">50 50 50 255</Setting>
         </Group>
         </Group>
-        <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="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
-            <Setting name="forumURL">http://www.garagegames.com/products/torque-3d/forums</Setting>
+        <Group name="Color">
+            <Setting name="objMouseOverSelectColor">0 0 255 255</Setting>
+            <Setting name="objMouseOverColor">0 255 0 255</Setting>
+            <Setting name="objSelectColor">255 0 0 255</Setting>
+            <Setting name="dragRectColor">255 255 0 255</Setting>
+            <Setting name="popupBackgroundColor">100 100 100 255</Setting>
+            <Setting name="objectTextColor">255 255 255 255</Setting>
+            <Setting name="selectionBoxColor">255 255 0 255</Setting>
         </Group>
         </Group>
         <Group name="Images">
         <Group name="Images">
-            <Setting name="lockedHandle">tools/worldEditor/images/LockedHandle</Setting>
             <Setting name="selectHandle">tools/worldEditor/images/SelectHandle</Setting>
             <Setting name="selectHandle">tools/worldEditor/images/SelectHandle</Setting>
+            <Setting name="lockedHandle">tools/worldEditor/images/LockedHandle</Setting>
             <Setting name="defaultHandle">tools/worldEditor/images/DefaultHandle</Setting>
             <Setting name="defaultHandle">tools/worldEditor/images/DefaultHandle</Setting>
         </Group>
         </Group>
-        <Group name="Theme">
-            <Setting name="windowTitleBGColor">50 50 50 255</Setting>
-            <Setting name="windowTitleBGHLColor">48 48 48 255</Setting>
-            <Setting name="windowTitleBGNAColor">180 180 180 255</Setting>
-            <Setting name="windowTitleFontColor">215 215 215 255</Setting>
-            <Setting name="windowTitleFontHLColor">255 255 255 255</Setting>
-        </Group>
     </Group>
     </Group>
     <Group name="GuiEditor">
     <Group name="GuiEditor">
-        <Setting name="lastPath">tools/gui</Setting>
         <Setting name="previewResolution">1024 768</Setting>
         <Setting name="previewResolution">1024 768</Setting>
-        <Group name="Help">
-            <Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
-            <Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
-            <Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
+        <Setting name="lastPath">tools/gui</Setting>
+        <Group name="EngineDevelopment">
+            <Setting name="showEditorProfiles">0</Setting>
+            <Setting name="toggleIntoEditor">0</Setting>
+            <Setting name="showEditorGuis">0</Setting>
         </Group>
         </Group>
         <Group name="Snapping">
         <Group name="Snapping">
-            <Setting name="sensitivity">2</Setting>
+            <Setting name="snapToCanvas">1</Setting>
+            <Setting name="snapToGuides">1</Setting>
             <Setting name="snapToCenters">1</Setting>
             <Setting name="snapToCenters">1</Setting>
-            <Setting name="snap2Grid">0</Setting>
+            <Setting name="snapToControls">1</Setting>
             <Setting name="snap2GridSize">8</Setting>
             <Setting name="snap2GridSize">8</Setting>
-            <Setting name="snapToGuides">1</Setting>
+            <Setting name="sensitivity">2</Setting>
             <Setting name="snapToEdges">1</Setting>
             <Setting name="snapToEdges">1</Setting>
-            <Setting name="snapToControls">1</Setting>
-            <Setting name="snapToCanvas">1</Setting>
-        </Group>
-        <Group name="Library">
-            <Setting name="viewType">Categorized</Setting>
+            <Setting name="snap2Grid">0</Setting>
         </Group>
         </Group>
-        <Group name="EngineDevelopment">
-            <Setting name="showEditorGuis">0</Setting>
-            <Setting name="toggleIntoEditor">0</Setting>
-            <Setting name="showEditorProfiles">0</Setting>
+        <Group name="Help">
+            <Setting name="documentationReference">../../../Documentation/Torque 3D - Script Manual.chm</Setting>
+            <Setting name="documentationLocal">../../../Documentation/Official Documentation.html</Setting>
+            <Setting name="documentationURL">http://www.garagegames.com/products/torque-3d/documentation/user</Setting>
         </Group>
         </Group>
         <Group name="Rendering">
         <Group name="Rendering">
             <Setting name="drawGuides">1</Setting>
             <Setting name="drawGuides">1</Setting>
             <Setting name="drawBorderLines">1</Setting>
             <Setting name="drawBorderLines">1</Setting>
         </Group>
         </Group>
+        <Group name="Library">
+            <Setting name="viewType">Categorized</Setting>
+        </Group>
         <Group name="Selection">
         <Group name="Selection">
             <Setting name="fullBox">0</Setting>
             <Setting name="fullBox">0</Setting>
         </Group>
         </Group>
     </Group>
     </Group>
-    <Group name="NavEditor">
-        <Setting name="SpawnClass">AIPlayer</Setting>
+    <Group name="AxisGizmo">
+        <Setting name="renderWhenUsed">0</Setting>
+        <Setting name="renderInfoText">1</Setting>
+        <Setting name="axisGizmoMaxScreenLen">100</Setting>
+        <Setting name="rotationSnap">15</Setting>
+        <Setting name="snapRotations">0</Setting>
+        <Setting name="mouseRotateScalar">0.8</Setting>
+        <Setting name="mouseScaleScalar">0.8</Setting>
+        <Group name="Grid">
+            <Setting name="renderPlane">0</Setting>
+            <Setting name="planeDim">500</Setting>
+            <Setting name="renderPlaneHashes">0</Setting>
+            <Setting name="gridColor">255 255 255 20</Setting>
+            <Setting name="gridSize">10 10 10</Setting>
+            <Setting name="snapToGrid">0</Setting>
+        </Group>
     </Group>
     </Group>
     <Group name="LevelInformation">
     <Group name="LevelInformation">
         <Setting name="levelsDirectory">data/FPSGameplay/levels</Setting>
         <Setting name="levelsDirectory">data/FPSGameplay/levels</Setting>
@@ -132,4 +129,7 @@
     <Group name="ConvexEditor">
     <Group name="ConvexEditor">
         <Setting name="materialName">Grid_512_Orange</Setting>
         <Setting name="materialName">Grid_512_Orange</Setting>
     </Group>
     </Group>
+    <Group name="NavEditor">
+        <Setting name="SpawnClass">AIPlayer</Setting>
+    </Group>
 </EditorSettings>
 </EditorSettings>