瀏覽代碼

Merge branch 'Preview4_0' of https://github.com/Areloch/Torque3D into Preview4_0

AzaezelX 6 年之前
父節點
當前提交
0cc5421f5c

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

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

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

@@ -143,10 +143,7 @@ ReflectionProbe::~ReflectionProbe()
    if (mEditorShapeInst)
       SAFE_DELETE(mEditorShapeInst);
 
-   if (mProbeInfo)
-      SAFE_DELETE(mProbeInfo);
-
-   if (mReflectionModeType != StaticCubemap && mStaticCubemap)
+   if (mReflectionModeType == StaticCubemap && mStaticCubemap)
       mStaticCubemap->deleteObject();
 }
 
@@ -209,7 +206,7 @@ bool ReflectionProbe::_setEnabled(void *object, const char *index, const char *d
    ReflectionProbe* probe = reinterpret_cast< ReflectionProbe* >(object);
 
    probe->mEnabled = dAtob(data);
-   probe->setMaskBits(-1);
+   probe->setMaskBits(EnabledMask);
 
    return true;
 }
@@ -219,6 +216,7 @@ bool ReflectionProbe::_doBake(void *object, const char *index, const char *data)
    ReflectionProbe* probe = reinterpret_cast< ReflectionProbe* >(object);
 
    probe->bake();
+   probe->setMaskBits(StaticDataMask);
 
    return false;
 }
@@ -240,6 +238,7 @@ bool ReflectionProbe::_setRadius(void *object, const char *index, const char *da
       return false;
 
    probe->mObjScale = Point3F(probe->mRadius, probe->mRadius, probe->mRadius);
+   probe->setMaskBits(StaticDataMask);
    
    return true;
 }
@@ -259,6 +258,8 @@ bool ReflectionProbe::_setReflectionMode(void *object, const char *index, const
       probe->mCubemapName = "";
    }
 
+   probe->setMaskBits(StaticDataMask);
+
    return true;
 }
 
@@ -307,6 +308,7 @@ void ReflectionProbe::onRemove()
    if (isClientObject())
    {
       PROBEMGR->unregisterProbe(mProbeInfo->mProbeIdx);
+      mProbeInfo = nullptr;
    }
 
    // Remove this object from the scene
@@ -342,15 +344,17 @@ void ReflectionProbe::setTransform(const MatrixF & mat)
 {
    // Let SceneObject handle all of the matrix manipulation
    if (!mEditPosOffset)
+   {
       Parent::setTransform(mat);
+      setMaskBits(TransformMask);
+   }
    else
+   {
       mProbeRefOffset = mat.getPosition();
+      setMaskBits(StaticDataMask);
+   }
 
    mDirty = true;
-
-   // Dirty our network mask so that the new transform gets
-   // transmitted to the client object
-   setMaskBits(TransformMask);
 }
 
 const MatrixF& ReflectionProbe::getTransform() const 
@@ -369,15 +373,17 @@ const MatrixF& ReflectionProbe::getTransform() const
 void ReflectionProbe::setScale(const VectorF &scale)
 {
    if (!mEditPosOffset)
+   {
       Parent::setScale(scale);
+      setMaskBits(TransformMask);
+   }
    else
+   {
       mProbeRefScale = scale;
+      setMaskBits(StaticDataMask);
+   }
 
    mDirty = true;
-
-   // Dirty our network mask so that the new transform gets
-   // transmitted to the client object
-   setMaskBits(TransformMask);
 }
 
 const VectorF& ReflectionProbe::getScale() const
@@ -495,6 +501,8 @@ void ReflectionProbe::updateProbeParams()
    if (!mProbeInfo)
       return;
 
+   mProbeInfo->mIsEnabled = mEnabled;
+
    mProbeInfo->mProbeShapeType = mProbeShapeType;
 
    if (mProbeShapeType == ProbeRenderInst::Sphere)
@@ -553,6 +561,8 @@ void ReflectionProbe::updateProbeParams()
    {
       if (mReflectionModeType == StaticCubemap)
          processStaticCubemap();
+      else if (mReflectionModeType == BakedCubemap)
+         processBakedCubemap();
       else
          processDynamicCubemap();
    }
@@ -562,61 +572,16 @@ void ReflectionProbe::updateProbeParams()
 
 void ReflectionProbe::processDynamicCubemap()
 {
-   if (!mProbeInfo)
+   //if (!mProbeInfo)
       return;
 
    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)
@@ -629,12 +594,61 @@ void ReflectionProbe::processDynamicCubemap()
    //   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()
 {
    if (!mProbeInfo)
       return;
 
-   mEnabled = false;
+   mProbeInfo->mIsEnabled = false;
 
    String path = Con::getVariable("$pref::ReflectionProbes::CurrentLevelPath", "levels/");
 
@@ -709,17 +723,16 @@ void ReflectionProbe::processStaticCubemap()
    {
       mProbeInfo->mPrefilterCubemap = mPrefilterMap->mCubemap;
       mProbeInfo->mIrradianceCubemap = mIrridianceMap->mCubemap;
-      mEnabled = true;
    }
 
-   if (mEnabled)
+   if (mEnabled && mProbeInfo->mPrefilterCubemap->isInitialized() && mProbeInfo->mIrradianceCubemap->isInitialized())
+   {
       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()
@@ -791,7 +804,7 @@ String ReflectionProbe::getIrradianceMapPath()
 
 void ReflectionProbe::bake()
 {
-   if (mReflectionModeType == DynamicCubemap)
+   if (mReflectionModeType != BakedCubemap)
       return;
 
    PROBEMGR->bakeProbe(this);

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

@@ -118,6 +118,9 @@ protected:
    U32 cubeDescId;
    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
    bool mUseHDRCaptures;
 
@@ -221,6 +224,7 @@ public:
    bool createClientResources();
 
    void processDynamicCubemap();
+   void processBakedCubemap();
    void processStaticCubemap();
 
    // 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()
 {
+   if (!mProbeInfo)
+      return;
+
    mProbeShapeType = ProbeRenderInst::Skylight;
    Parent::updateProbeParams();
 }

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

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

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

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

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

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

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

@@ -1,125 +1,122 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 <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">
-        <Setting name="undoLimit">40</Setting>
-        <Setting name="orthoFOV">50</Setting>
-        <Setting name="displayType">6</Setting>
         <Setting name="forceLoadDAE">0</Setting>
         <Setting name="orthoShowGrid">1</Setting>
         <Setting name="dropType">screenCenter</Setting>
+        <Setting name="displayType">6</Setting>
         <Setting name="currentEditor">WorldEditorInspectorPlugin</Setting>
+        <Setting name="undoLimit">40</Setting>
+        <Setting name="orthoFOV">50</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 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 name="Render">
-            <Setting name="renderObjHandle">1</Setting>
+            <Setting name="renderObjText">1</Setting>
+            <Setting name="showMousePopupInfo">1</Setting>
             <Setting name="renderSelectionBox">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 name="Tools">
-            <Setting name="dropAtScreenCenterMax">100</Setting>
+            <Setting name="snapSoftSize">2</Setting>
             <Setting name="snapSoft">0</Setting>
-            <Setting name="snapGround">0</Setting>
+            <Setting name="boundingBoxCollision">0</Setting>
             <Setting name="dropAtScreenCenterScalar">1</Setting>
-            <Setting name="snapSoftSize">2</Setting>
             <Setting name="objectsUseBoxCenter">1</Setting>
-            <Setting name="boundingBoxCollision">0</Setting>
+            <Setting name="snapGround">0</Setting>
+            <Setting name="dropAtScreenCenterMax">100</Setting>
         </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 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 name="Images">
-            <Setting name="lockedHandle">tools/worldEditor/images/LockedHandle</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>
         </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 name="GuiEditor">
-        <Setting name="lastPath">tools/gui</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 name="Snapping">
-            <Setting name="sensitivity">2</Setting>
+            <Setting name="snapToCanvas">1</Setting>
+            <Setting name="snapToGuides">1</Setting>
             <Setting name="snapToCenters">1</Setting>
-            <Setting name="snap2Grid">0</Setting>
+            <Setting name="snapToControls">1</Setting>
             <Setting name="snap2GridSize">8</Setting>
-            <Setting name="snapToGuides">1</Setting>
+            <Setting name="sensitivity">2</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 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 name="Rendering">
             <Setting name="drawGuides">1</Setting>
             <Setting name="drawBorderLines">1</Setting>
         </Group>
+        <Group name="Library">
+            <Setting name="viewType">Categorized</Setting>
+        </Group>
         <Group name="Selection">
             <Setting name="fullBox">0</Setting>
         </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 name="LevelInformation">
         <Setting name="levelsDirectory">data/FPSGameplay/levels</Setting>
@@ -132,4 +129,7 @@
     <Group name="ConvexEditor">
         <Setting name="materialName">Grid_512_Orange</Setting>
     </Group>
+    <Group name="NavEditor">
+        <Setting name="SpawnClass">AIPlayer</Setting>
+    </Group>
 </EditorSettings>