Browse Source

Merge pull request #885 from GarageGames/development-3.6

Version 3.6.2
Daniel Buckmaster 10 years ago
parent
commit
d01b48c93e

+ 58 - 0
CONTRIBUTING.md

@@ -0,0 +1,58 @@
+# Torque 3D contribution guidelines
+
+So you want to help Torque out by contributing to the repo? That's awesome!
+We just ask that you'd give this document a quick read to get yourself familiar with the process.
+Do you want to [request a feature](#request-a-feature)?
+Create a [pull-request](#create-a-pull-request) to contribute your own code to the engine?
+[Report an issue](#report-an-issue) you've discovered?
+
+## Report an issue
+
+Before you report an issue with the engine, please [search](https://github.com/GarageGames/Torque3D/issues) and quickly make sure someone else hasn't obviously reported it.
+If you're not sure if it's the same issue, go ahead and comment on it!
+Once you're certain you've found a new issue, hit the [big green button](https://github.com/GarageGames/Torque3D/issues/new) and please include the following information:
+
+ * Your platform and compiler, if you're not using a precompiled binary
+ * Steps to reproduce the issue, if _at all_ possible
+ * If it's related to graphics, your GFX card and driver details.
+
+## Create a pull-request
+
+We ask that potential contributors read our [pull-request guidelines](http://torque3d.org/contribute/#pull-request-guide) before opening a PR.
+We also have some [code style guidelines](https://github.com/GarageGames/Torque3D/wiki/Code-Style-Guidelines).
+Here's a quick guide to the branches in this repo that you might think of targeting a PR at:
+
+### The master branch
+
+The repository's `master` branch is where we make releases.
+It's supposed to be stable at all times - or as stable as we can make it - and only gets updated when a new version comes out.
+Any pull-requests to the master branch will have to be rejected - sorry :(.
+
+### The development branch
+
+The `development` branch is where most development happens.
+It is the target for the next 'middle' version of the engine (the 6 in 3.6.1, for example).
+This means we will add new features, and refactor code if it doesn't break existing games made with the engine _too_ much*.
+Most pull requests to `development` can be accepted if we like your code - unless they would potentially break users' games.
+
+*How much is _too_ much is for the Steering Committee to decide.
+
+### The development-3.6 branch
+
+The `development-3.6` branch is where we will make bugfixes and small patches to the previous stable 'middle' version.
+This branch is where the 'small' versions will be created - 3.6.2, 3.6.3, etcetera.
+So if you have a bugfix or tiny enhancement that doesn't require anyone to change their game, it'd be best appreciated in this branch.
+
+### TLDR
+
+Don't make any PRs to `master`.
+PR new features and large fixes/refactorings to `development`.
+PR bugfixes to `development-3.6`.
+
+## Request a feature
+
+We ask that all feature requests be discussed in the [GarageGames forums](http://www.garagegames.com/community/forums), our [IRC channel](http://torque3d.wikidot.com/community:chat), or on our [UserVoice feature request voting page](https://garagegames.uservoice.com/forums/178972-torque-3d-mit/filters/top) before making an issue here.
+If your idea is popular, we'll hear of it and probably make an issue ourselves, if we agree.
+
+Even better - don't request a feature, start working on it!
+This engine isn't going to improve itself ;).

+ 1 - 6
Engine/source/T3D/debris.cpp

@@ -99,7 +99,6 @@ DebrisData::DebrisData()
    friction   = 0.2f;
    friction   = 0.2f;
    numBounces = 0;
    numBounces = 0;
    bounceVariance = 0;
    bounceVariance = 0;
-   minSpinSpeed = maxSpinSpeed = 0.0;
    staticOnMaxBounce = false;
    staticOnMaxBounce = false;
    explodeOnMaxBounce = false;
    explodeOnMaxBounce = false;
    snapOnMaxBounce = false;
    snapOnMaxBounce = false;
@@ -659,11 +658,7 @@ void Debris::onRemove()
       }
       }
    }
    }
 
 
-   if( getSceneManager() )
-      getSceneManager()->removeObjectFromScene(this);
-
-   if( getContainer() )
-      getContainer()->removeObject(this);
+   removeFromScene();
 
 
    Parent::onRemove();
    Parent::onRemove();
 }
 }

+ 1 - 4
Engine/source/T3D/fx/explosion.cpp

@@ -964,10 +964,7 @@ void Explosion::onRemove()
       mMainEmitter = NULL;
       mMainEmitter = NULL;
    }
    }
 
 
-   if (getSceneManager() != NULL)
-      getSceneManager()->removeObjectFromScene(this);
-   if (getContainer() != NULL)
-      getContainer()->removeObject(this);
+   removeFromScene();
 
 
    Parent::onRemove();
    Parent::onRemove();
 }
 }

+ 1 - 5
Engine/source/T3D/fx/splash.cpp

@@ -415,11 +415,7 @@ void Splash::onRemove()
 
 
    ringList.clear();
    ringList.clear();
 
 
-   if( getSceneManager() )
-      getSceneManager()->removeObjectFromScene(this);
-
-   if( getContainer() )
-      getContainer()->removeObject(this);
+   removeFromScene();
 
 
    Parent::onRemove();
    Parent::onRemove();
 }
 }

+ 3 - 3
Engine/source/T3D/guiObjectView.cpp

@@ -110,7 +110,7 @@ GuiObjectView::GuiObjectView()
 {
 {
    mCameraMatrix.identity();
    mCameraMatrix.identity();
    mCameraRot.set( 0.0f, 0.0f, 3.9f );
    mCameraRot.set( 0.0f, 0.0f, 3.9f );
-   mCameraPos.set( 0.0f, 1.75f, 1.25f );
+   mCameraPos.set( 0.0f, 0.0f, 0.0f );
    mCameraMatrix.setColumn( 3, mCameraPos );
    mCameraMatrix.setColumn( 3, mCameraPos );
    mOrbitPos.set( 0.0f, 0.0f, 0.0f );
    mOrbitPos.set( 0.0f, 0.0f, 0.0f );
 
 
@@ -520,9 +520,9 @@ void GuiObjectView::renderWorld( const RectI& updateRect )
    (
    (
       gClientSceneGraph,
       gClientSceneGraph,
       SPT_Diffuse,
       SPT_Diffuse,
-      SceneCameraState( GFX->getViewport(), frust, GFX->getWorldMatrix(), GFX->getProjectionMatrix() ),
+      SceneCameraState( GFX->getViewport(), frust, MatrixF::Identity, GFX->getProjectionMatrix() ),
       renderPass,
       renderPass,
-      false
+      true
    );
    );
 
 
    // Set up our TS render state here.   
    // Set up our TS render state here.   

+ 2 - 1
Engine/source/T3D/player.cpp

@@ -356,6 +356,7 @@ PlayerData::PlayerData()
    decalID        = 0;
    decalID        = 0;
    decalOffset      = 0.0f;
    decalOffset      = 0.0f;
 
 
+   actionCount = 0;
    lookAction = 0;
    lookAction = 0;
 
 
    // size of bounding box
    // size of bounding box
@@ -3691,7 +3692,7 @@ bool Player::setActionThread(const char* sequence,bool hold,bool wait,bool fsp)
 
 
 void Player::setActionThread(U32 action,bool forward,bool hold,bool wait,bool fsp, bool forceSet)
 void Player::setActionThread(U32 action,bool forward,bool hold,bool wait,bool fsp, bool forceSet)
 {
 {
-   if (!mDataBlock || (mActionAnimation.action == action && mActionAnimation.forward == forward && !forceSet))
+   if (!mDataBlock || !mDataBlock->actionCount || (mActionAnimation.action == action && mActionAnimation.forward == forward && !forceSet))
       return;
       return;
 
 
    if (action >= PlayerData::NumActionAnims)
    if (action >= PlayerData::NumActionAnims)

+ 2 - 2
Engine/source/T3D/rigidShape.cpp

@@ -92,7 +92,7 @@ ConsoleDocClass( RigidShapeData,
    "@see RigidShape\n"
    "@see RigidShape\n"
    "@see ShapeBase\n\n"
    "@see ShapeBase\n\n"
 
 
-   "@ingroup Platform\n"
+   "@ingroup Physics\n"
 );
 );
 
 
 
 
@@ -149,7 +149,7 @@ ConsoleDocClass( RigidShape,
    "@see RigidShapeData\n"
    "@see RigidShapeData\n"
    "@see ShapeBase\n\n"
    "@see ShapeBase\n\n"
    
    
-   "@ingroup Platform\n"
+   "@ingroup Physics\n"
 );
 );
 
 
 
 

+ 3 - 1
Engine/source/T3D/sfx/sfx3DWorld.cpp

@@ -91,7 +91,9 @@ void SFX3DObject::getEarTransform( MatrixF& transform ) const
    if ( !shapeInstance )
    if ( !shapeInstance )
    {
    {
       // Just in case.
       // Just in case.
-      transform = mObject->getTransform();
+      GameConnection* connection = dynamic_cast<GameConnection *>(NetConnection::getConnectionToServer());
+      if ( !connection || !connection->getControlCameraTransform( 0.0f, &transform ) )
+         transform = mObject->getTransform();
       return;
       return;
    }
    }
 
 

+ 3 - 35
Engine/source/T3D/tsStatic.cpp

@@ -702,41 +702,9 @@ bool TSStatic::castRay(const Point3F &start, const Point3F &end, RayInfo* info)
 
 
    if ( mCollisionType == Bounds )
    if ( mCollisionType == Bounds )
    {
    {
-      F32 st, et, fst = 0.0f, fet = 1.0f;
-      F32 *bmin = &mObjBox.minExtents.x;
-      F32 *bmax = &mObjBox.maxExtents.x;
-      F32 const *si = &start.x;
-      F32 const *ei = &end.x;
-
-      for ( U32 i = 0; i < 3; i++ )
-      {
-         if (*si < *ei) 
-         {
-            if ( *si > *bmax || *ei < *bmin )
-               return false;
-            F32 di = *ei - *si;
-            st = ( *si < *bmin ) ? ( *bmin - *si ) / di : 0.0f;
-            et = ( *ei > *bmax ) ? ( *bmax - *si ) / di : 1.0f;
-         }
-         else 
-         {
-            if ( *ei > *bmax || *si < *bmin )
-               return false;
-            F32 di = *ei - *si;
-            st = ( *si > *bmax ) ? ( *bmax - *si ) / di : 0.0f;
-            et = ( *ei < *bmin ) ? ( *bmin - *si ) / di : 1.0f;
-         }
-         if ( st > fst ) fst = st;
-         if ( et < fet ) fet = et;
-         if ( fet < fst )
-            return false;
-         bmin++; bmax++;
-         si++; ei++;
-      }
-
-      info->normal = start - end;
-      info->normal.normalizeSafe();
-      getTransform().mulV( info->normal );
+      F32 fst;
+      if (!mObjBox.collideLine(start, end, &fst, &info->normal))
+         return false;
 
 
       info->t = fst;
       info->t = fst;
       info->object = this;
       info->object = this;

+ 2 - 2
Engine/source/T3D/turret/turretShape.cpp

@@ -1155,7 +1155,7 @@ void TurretShape::unpackUpdate(NetConnection *connection, BitStream *stream)
 void TurretShape::getWeaponMountTransform( S32 index, const MatrixF &xfm, MatrixF *outMat )
 void TurretShape::getWeaponMountTransform( S32 index, const MatrixF &xfm, MatrixF *outMat )
 {
 {
    // Returns mount point to world space transform
    // Returns mount point to world space transform
-   if ( index >= 0 && index < SceneObject::NumMountPoints) {
+   if ( index >= 0 && index < ShapeBase::MaxMountedImages) {
       S32 ni = mDataBlock->weaponMountNode[index];
       S32 ni = mDataBlock->weaponMountNode[index];
       if (ni != -1) {
       if (ni != -1) {
          MatrixF mountTransform = mShapeInstance->mNodeTransforms[ni];
          MatrixF mountTransform = mShapeInstance->mNodeTransforms[ni];
@@ -1180,7 +1180,7 @@ void TurretShape::getWeaponMountTransform( S32 index, const MatrixF &xfm, Matrix
 void TurretShape::getRenderWeaponMountTransform( F32 delta, S32 mountPoint, const MatrixF &xfm, MatrixF *outMat )
 void TurretShape::getRenderWeaponMountTransform( F32 delta, S32 mountPoint, const MatrixF &xfm, MatrixF *outMat )
 {
 {
    // Returns mount point to world space transform
    // Returns mount point to world space transform
-   if ( mountPoint >= 0 && mountPoint < SceneObject::NumMountPoints) {
+   if ( mountPoint >= 0 && mountPoint < ShapeBase::MaxMountedImages) {
       S32 ni = mDataBlock->weaponMountNode[mountPoint];
       S32 ni = mDataBlock->weaponMountNode[mountPoint];
       if (ni != -1) {
       if (ni != -1) {
          MatrixF mountTransform = mShapeInstance->mNodeTransforms[ni];
          MatrixF mountTransform = mShapeInstance->mNodeTransforms[ni];

+ 2 - 2
Engine/source/app/version.h

@@ -41,10 +41,10 @@
 /// code version, the game name, and which type of game it is (TGB, TGE, TGEA, etc.).
 /// code version, the game name, and which type of game it is (TGB, TGE, TGEA, etc.).
 ///
 ///
 /// Version number is major * 1000 + minor * 100 + revision * 10.
 /// Version number is major * 1000 + minor * 100 + revision * 10.
-#define TORQUE_GAME_ENGINE          3610
+#define TORQUE_GAME_ENGINE          3620
 
 
 /// Human readable engine version string.
 /// Human readable engine version string.
-#define TORQUE_GAME_ENGINE_VERSION_STRING  "3.6.1"
+#define TORQUE_GAME_ENGINE_VERSION_STRING  "3.6.2"
 
 
 /// Gets the engine version number.  The version number is specified as a global in version.cc
 /// Gets the engine version number.  The version number is specified as a global in version.cc
 U32 getVersionNumber();
 U32 getVersionNumber();

+ 2 - 2
Engine/source/console/fileSystemFunctions.cpp

@@ -696,7 +696,7 @@ DefineEngineFunction(makeFullPath, String, ( const char* path, const char* cwd )
 	"@ingroup FileSystem")
 	"@ingroup FileSystem")
 {
 {
    static const U32 bufSize = 512;
    static const U32 bufSize = 512;
-   char *buf = Con::getReturnBuffer(buf);
+   char *buf = Con::getReturnBuffer(bufSize);
    Platform::makeFullPathName(path, buf, bufSize, dStrlen(cwd) > 1 ? cwd : NULL);
    Platform::makeFullPathName(path, buf, bufSize, dStrlen(cwd) > 1 ? cwd : NULL);
    return buf;
    return buf;
 }
 }
@@ -723,7 +723,7 @@ DefineEngineFunction(pathConcat, String, ( const char* path, const char* file),,
 	"@ingroup FileSystem")
 	"@ingroup FileSystem")
 {
 {
    static const U32 bufSize = 1024;
    static const U32 bufSize = 1024;
-   char *buf = Con::getReturnBuffer(buf);
+   char *buf = Con::getReturnBuffer(bufSize);
    Platform::makeFullPathName(file, buf, bufSize, path);
    Platform::makeFullPathName(file, buf, bufSize, path);
    return buf;
    return buf;
 }
 }

+ 4 - 1
Engine/source/gui/core/guiCanvas.cpp

@@ -2225,7 +2225,10 @@ DefineEngineMethod( GuiCanvas, reset, void, (),,
 }
 }
 
 
 DefineEngineMethod( GuiCanvas, getCursorPos, Point2I, (),,
 DefineEngineMethod( GuiCanvas, getCursorPos, Point2I, (),,
-				   "@brief Get the current position of the cursor.\n\n"
+				   "@brief Get the current position of the cursor in screen-space. Note that this position"
+               " might be outside the Torque window. If you want to get the position within the Canvas,"
+               " call screenToClient on the result.\n\n"
+               "@see Canvas::screenToClient()\n\n"
 				   "@param param Description\n\n"
 				   "@param param Description\n\n"
 				   "@tsexample\n"
 				   "@tsexample\n"
 				   "%cursorPos = Canvas.getCursorPos();\n"
 				   "%cursorPos = Canvas.getCursorPos();\n"

+ 1 - 0
Engine/source/gui/core/guiControl.cpp

@@ -1427,6 +1427,7 @@ bool GuiControl::cursorInControl()
    if (! root) return false;
    if (! root) return false;
 
 
    Point2I pt = root->getCursorPos();
    Point2I pt = root->getCursorPos();
+   pt = root->getPlatformWindow() ? root->getPlatformWindow()->screenToClient(pt) : pt;
    Point2I extent = getExtent();
    Point2I extent = getExtent();
    Point2I offset = localToGlobalCoord(Point2I(0, 0));
    Point2I offset = localToGlobalCoord(Point2I(0, 0));
    if (pt.x >= offset.x && pt.y >= offset.y &&
    if (pt.x >= offset.x && pt.y >= offset.y &&

+ 1 - 1
Engine/source/materials/processedFFMaterial.cpp

@@ -368,7 +368,7 @@ void ProcessedFFMaterial::_initPassStateBlock( RenderPassData *rpd, GFXStateBloc
       result.blendDefined = true;
       result.blendDefined = true;
       result.blendEnable = true;
       result.blendEnable = true;
       result.blendSrc = GFXBlendOne;
       result.blendSrc = GFXBlendOne;
-      result.blendSrc = GFXBlendOne;
+      result.blendDest = GFXBlendZero;
    }
    }
 
 
    // This is here for generic FF shader fallbacks.
    // This is here for generic FF shader fallbacks.

+ 1 - 0
Engine/source/materials/processedShaderMaterial.cpp

@@ -328,6 +328,7 @@ void ProcessedShaderMaterial::_determineFeatures(  U32 stageNum,
    if (  features.hasFeature( MFT_UseInstancing ) &&
    if (  features.hasFeature( MFT_UseInstancing ) &&
          mMaxStages == 1 &&
          mMaxStages == 1 &&
          !mMaterial->mGlow[0] &&
          !mMaterial->mGlow[0] &&
+         !mMaterial->mDynamicCubemap &&
          shaderVersion >= 3.0f )
          shaderVersion >= 3.0f )
       fd.features.addFeature( MFT_UseInstancing );
       fd.features.addFeature( MFT_UseInstancing );
 
 

+ 0 - 1
Engine/source/renderInstance/renderBinManager.cpp

@@ -122,7 +122,6 @@ void RenderBinManager::internalAddElement(RenderInst* inst)
    mElementList.increment();
    mElementList.increment();
    MainSortElem &elem = mElementList.last();
    MainSortElem &elem = mElementList.last();
    elem.inst = inst;
    elem.inst = inst;
-   elem.key = elem.key2 = 0;
 
 
    elem.key = inst->defaultKey;
    elem.key = inst->defaultKey;
    elem.key2 = inst->defaultKey2;
    elem.key2 = inst->defaultKey2;

+ 0 - 1
Engine/source/scene/simPath.cpp

@@ -371,7 +371,6 @@ Marker::Marker()
    mTypeMask |= MarkerObjectType;
    mTypeMask |= MarkerObjectType;
 
 
    mSeqNum   = 0;
    mSeqNum   = 0;
-   mSmoothingType = SmoothingTypeLinear;
    mMSToNext = 1000;
    mMSToNext = 1000;
    mSmoothingType = SmoothingTypeSpline;
    mSmoothingType = SmoothingTypeSpline;
    mKnotType = KnotTypeNormal;
    mKnotType = KnotTypeNormal;

+ 1 - 1
Engine/source/ts/tsMesh.cpp

@@ -784,7 +784,7 @@ bool TSMesh::castRayRendered( S32 frame, const Point3F & start, const Point3F &
       // gonna depend on what kind of primitive it is...
       // gonna depend on what kind of primitive it is...
       if ( (draw.matIndex & TSDrawPrimitive::TypeMask) == TSDrawPrimitive::Triangles )
       if ( (draw.matIndex & TSDrawPrimitive::TypeMask) == TSDrawPrimitive::Triangles )
       {
       {
-         for ( S32 j = 0; j < draw.numElements-2; j++)
+         for ( S32 j = 0; j < draw.numElements-2; j += 3 )
          {
          {
             idx0 = indices[drawStart + j + 0];
             idx0 = indices[drawStart + j + 0];
             idx1 = indices[drawStart + j + 1];
             idx1 = indices[drawStart + j + 1];

+ 4 - 2
README.md

@@ -1,4 +1,4 @@
-Torque 3D v3.6.1
+Torque 3D v3.6.2
 ================
 ================
 
 
 MIT Licensed Open Source version of [Torque 3D](http://www.garagegames.com/products/torque-3d) from [GarageGames](http://www.garagegames.com)
 MIT Licensed Open Source version of [Torque 3D](http://www.garagegames.com/products/torque-3d) from [GarageGames](http://www.garagegames.com)
@@ -21,7 +21,9 @@ Pre-compiled Version
 
 
 In addition to GitHub we also have a couple of pre-packaged files for you to download if you would prefer to not compile the code yourself:
 In addition to GitHub we also have a couple of pre-packaged files for you to download if you would prefer to not compile the code yourself:
  
  
-* [Complete Torque 3D 3.6.1 zip package](http://mit.garagegames.com/Torque3D-3-6-1.zip) with updated TorqueScript documentation, the *Project Manager*, and compiled versions of the templates.
+* [Torque 3D 3.6 Full template](http://mit.garagegames.com/Torque3D-3-6-1-FullTemplate.zip), which contains precompiled binaries.
+* [Complete Torque 3D 3.6 zip package](http://mit.garagegames.com/Torque3D-3-6-1.zip) containing the contents of this repository.
+* [Windows binaries for 3.6.2](https://github.com/GarageGames/Torque3D/releases/tag/v3.6.2) which you can drop into your existing script projects.
 * [Torque 3D Project Manager v2.1](http://mit.garagegames.com/T3DProjectManager-2-1.zip) on its own for use in your T3D forks.
 * [Torque 3D Project Manager v2.1](http://mit.garagegames.com/T3DProjectManager-2-1.zip) on its own for use in your T3D forks.
 
 
 If you're looking for an older release see the [Torque 3D Archive](https://github.com/GarageGames/Torque3D/wiki/Torque-3D-Archive)
 If you're looking for an older release see the [Torque 3D Archive](https://github.com/GarageGames/Torque3D/wiki/Torque-3D-Archive)

+ 2 - 0
Templates/Empty/game/core/art/gui/FrameOverlayGui.gui

@@ -23,6 +23,8 @@
 		modal = "True";
 		modal = "True";
 		helpTag = "0";
 		helpTag = "0";
 		expression = "10";
 		expression = "10";
+		command = "Canvas.popDialog(FrameOverlayGui);";
+		accelerator = "escape";
 	};
 	};
 };
 };
 //--- OBJECT WRITE END ---
 //--- OBJECT WRITE END ---

+ 6 - 1
Templates/Empty/game/core/scripts/client/postFx/default.postfxpreset.cs

@@ -20,6 +20,11 @@
 // IN THE SOFTWARE.
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
+$PostFXManager::Settings::EnableDOF = "0";
+$PostFXManager::Settings::EnabledSSAO = "0";
+$PostFXManager::Settings::EnableHDR = "0";
+$PostFXManager::Settings::EnableLightRays = "0";
+$PostFXManager::Settings::EnablePostFX = "0";
 $PostFXManager::Settings::DOF::BlurCurveFar = "";
 $PostFXManager::Settings::DOF::BlurCurveFar = "";
 $PostFXManager::Settings::DOF::BlurCurveNear = "";
 $PostFXManager::Settings::DOF::BlurCurveNear = "";
 $PostFXManager::Settings::DOF::BlurMax = "";
 $PostFXManager::Settings::DOF::BlurMax = "";
@@ -59,4 +64,4 @@ $PostFXManager::Settings::SSAO::sNormalPow = "1";
 $PostFXManager::Settings::SSAO::sNormalTol = "0";
 $PostFXManager::Settings::SSAO::sNormalTol = "0";
 $PostFXManager::Settings::SSAO::sRadius = "0.1";
 $PostFXManager::Settings::SSAO::sRadius = "0.1";
 $PostFXManager::Settings::SSAO::sStrength = "6";
 $PostFXManager::Settings::SSAO::sStrength = "6";
-$PostFXManager::Settings::ColorCorrectionRamp = "core/scripts/client/postFx/null_color_ramp.png";
+$PostFXManager::Settings::ColorCorrectionRamp = "core/scripts/client/postFx/null_color_ramp.png";

+ 6 - 1
Templates/Empty/game/scripts/client/default.bind.cs

@@ -441,7 +441,12 @@ GlobalActionMap.bind(keyboard, "ctrl o", bringUpOptions);
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
 // Debugging Functions
 // Debugging Functions
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-
+function showMetrics(%val)
+{
+   if(%val)
+      metrics("fps gfx shadow sfx terrain groundcover forest net");
+}
+GlobalActionMap.bind(keyboard, "ctrl F2", showMetrics);
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
 //
 //

+ 6 - 0
Templates/Empty/game/scripts/gui/startupGui.cs

@@ -45,6 +45,12 @@ function loadStartup()
    //SFXPlayOnce(AudioGui, "art/sound/gui/startup");//SFXPlay(startsnd);
    //SFXPlayOnce(AudioGui, "art/sound/gui/startup");//SFXPlay(startsnd);
 }
 }
 
 
+function StartupGui::onWake(%this)
+{
+   $enableDirectInput = "1";
+   activateDirectInput();
+}
+
 function StartupGui::click(%this)
 function StartupGui::click(%this)
 {
 {
    %this.done = true;
    %this.done = true;

+ 2 - 0
Templates/Full/game/core/art/gui/FrameOverlayGui.gui

@@ -23,6 +23,8 @@
 		modal = "True";
 		modal = "True";
 		helpTag = "0";
 		helpTag = "0";
 		expression = "10";
 		expression = "10";
+		command = "Canvas.popDialog(FrameOverlayGui);";
+		accelerator = "escape";
 	};
 	};
 };
 };
 //--- OBJECT WRITE END ---
 //--- OBJECT WRITE END ---

+ 6 - 1
Templates/Full/game/core/scripts/client/postFx/default.postfxpreset.cs

@@ -20,6 +20,11 @@
 // IN THE SOFTWARE.
 // IN THE SOFTWARE.
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
 
+$PostFXManager::Settings::EnableDOF = "0";
+$PostFXManager::Settings::EnabledSSAO = "0";
+$PostFXManager::Settings::EnableHDR = "0";
+$PostFXManager::Settings::EnableLightRays = "0";
+$PostFXManager::Settings::EnablePostFX = "0";
 $PostFXManager::Settings::DOF::BlurCurveFar = "";
 $PostFXManager::Settings::DOF::BlurCurveFar = "";
 $PostFXManager::Settings::DOF::BlurCurveNear = "";
 $PostFXManager::Settings::DOF::BlurCurveNear = "";
 $PostFXManager::Settings::DOF::BlurMax = "";
 $PostFXManager::Settings::DOF::BlurMax = "";
@@ -59,4 +64,4 @@ $PostFXManager::Settings::SSAO::sNormalPow = "1";
 $PostFXManager::Settings::SSAO::sNormalTol = "0";
 $PostFXManager::Settings::SSAO::sNormalTol = "0";
 $PostFXManager::Settings::SSAO::sRadius = "0.1";
 $PostFXManager::Settings::SSAO::sRadius = "0.1";
 $PostFXManager::Settings::SSAO::sStrength = "6";
 $PostFXManager::Settings::SSAO::sStrength = "6";
-$PostFXManager::Settings::ColorCorrectionRamp = "core/scripts/client/postFx/null_color_ramp.png";
+$PostFXManager::Settings::ColorCorrectionRamp = "core/scripts/client/postFx/null_color_ramp.png";

+ 6 - 1
Templates/Full/game/scripts/client/default.bind.cs

@@ -615,7 +615,12 @@ GlobalActionMap.bind(keyboard, "ctrl o", bringUpOptions);
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
 // Debugging Functions
 // Debugging Functions
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
-
+function showMetrics(%val)
+{
+   if(%val)
+      metrics("fps gfx shadow sfx terrain groundcover forest net");
+}
+GlobalActionMap.bind(keyboard, "ctrl F2", showMetrics);
 
 
 //------------------------------------------------------------------------------
 //------------------------------------------------------------------------------
 //
 //

+ 6 - 0
Templates/Full/game/scripts/gui/startupGui.cs

@@ -45,6 +45,12 @@ function loadStartup()
    //SFXPlayOnce(AudioGui, "art/sound/gui/startup");//SFXPlay(startsnd);
    //SFXPlayOnce(AudioGui, "art/sound/gui/startup");//SFXPlay(startsnd);
 }
 }
 
 
+function StartupGui::onWake(%this)
+{
+   $enableDirectInput = "1";
+   activateDirectInput();
+}
+
 function StartupGui::click(%this)
 function StartupGui::click(%this)
 {
 {
    %this.done = true;
    %this.done = true;