From a928d142f7c7bfa5c20fc2c9c33eace27aa45afc Mon Sep 17 00:00:00 2001 From: Daniel Buckmaster Date: Sun, 7 Dec 2014 19:11:10 +1100 Subject: [PATCH] Made some tweaks so I'm happy with it. * Removed #defines * Fall back to using visible distance if ghost distance is not used * Removed ghost distance from level files as it will default * Renamed mConnectionVisibleDistance for consistency --- Engine/source/T3D/gameBase/gameBase.cpp | 11 +------- Engine/source/T3D/gameBase/gameBase.h | 4 --- Engine/source/T3D/gameBase/gameConnection.cpp | 25 +++++++------------ Engine/source/T3D/gameBase/gameConnection.h | 8 +----- Engine/source/T3D/levelInfo.cpp | 12 +++------ Engine/source/T3D/levelInfo.h | 5 +--- Engine/source/scene/sceneManager.cpp | 4 +-- Engine/source/scene/sceneManager.h | 7 +----- Engine/source/scene/sceneObject.cpp | 15 +++-------- Templates/Empty/game/levels/Empty Room.mis | 1 - Templates/Empty/source/torqueConfig.h | 13 ---------- Templates/Full/game/levels/Empty Room.mis | 1 - Templates/Full/game/levels/Empty Terrain.mis | 1 - Templates/Full/game/levels/Outpost.mis | 1 - Templates/Full/source/torqueConfig.h | 13 ---------- 15 files changed, 21 insertions(+), 100 deletions(-) diff --git a/Engine/source/T3D/gameBase/gameBase.cpp b/Engine/source/T3D/gameBase/gameBase.cpp index 3b0b429b9..baede5c49 100644 --- a/Engine/source/T3D/gameBase/gameBase.cpp +++ b/Engine/source/T3D/gameBase/gameBase.cpp @@ -389,12 +389,7 @@ F32 GameBase::getUpdatePriority(CameraScopeQuery *camInfo, U32 updateMask, S32 u // will be weighted 1, objects behind will be 0 F32 dot = mDot(pos,camInfo->orientation); -#ifdef GHOSTSCOPING - bool inFov = dot > camInfo->cosFov*1.5f; -#else - bool inFov = dot > camInfo->cosFov; -#endif - + bool inFov = dot > camInfo->cosFov * 1.5f; F32 wFov = inFov? 1.0f: 0; @@ -413,11 +408,7 @@ F32 GameBase::getUpdatePriority(CameraScopeQuery *camInfo, U32 updateMask, S32 u // Weight by interest. F32 wInterest; -#ifdef GHOSTSCOPING if (getTypeMask() & (PlayerObjectType || VehicleObjectType )) -#else - if (getTypeMask() & PlayerObjectType) -#endif wInterest = 0.75f; else if (getTypeMask() & ProjectileObjectType) { diff --git a/Engine/source/T3D/gameBase/gameBase.h b/Engine/source/T3D/gameBase/gameBase.h index 3509f20b1..edf76a9bf 100644 --- a/Engine/source/T3D/gameBase/gameBase.h +++ b/Engine/source/T3D/gameBase/gameBase.h @@ -35,13 +35,9 @@ #ifndef _DYNAMIC_CONSOLETYPES_H_ #include "console/dynamicTypes.h" #endif - -#include "torqueConfig.h" -#ifdef GHOSTSCOPING #ifndef __SCENEMANAGER_H__ #include "scene/sceneManager.h" #define __SCENEMANAGER_H__ -#endif #endif class NetConnection; diff --git a/Engine/source/T3D/gameBase/gameConnection.cpp b/Engine/source/T3D/gameBase/gameConnection.cpp index f06d1f1d4..96a1bd51a 100644 --- a/Engine/source/T3D/gameBase/gameConnection.cpp +++ b/Engine/source/T3D/gameBase/gameConnection.cpp @@ -226,9 +226,7 @@ GameConnection::GameConnection() mAddYawToAbsRot = false; mAddPitchToAbsRot = false; -#ifdef GHOSTSCOPING - mConnectionVisibleDistance = 0.0f; -#endif + mVisibleGhostDistance = 0.0f; clearDisplayDevice(); } @@ -243,16 +241,16 @@ GameConnection::~GameConnection() } //---------------------------------------------------------------------------- -#ifdef GHOSTSCOPING + void GameConnection::setVisibleGhostDistance(F32 dist) { - mConnectionVisibleDistance = dist; + mVisibleGhostDistance = dist; } + F32 GameConnection::getVisibleGhostDistance() { - return mConnectionVisibleDistance; + return mVisibleGhostDistance; } -#endif bool GameConnection::canRemoteCreate() { @@ -2215,13 +2213,12 @@ DefineEngineMethod( GameConnection, getControlSchemeAbsoluteRotation, bool, (),, } DefineEngineMethod( GameConnection, setVisibleGhostDistance, void, (F32 dist),, - "@brief Sets the distance that objects around it will be ghosted.\n\n" + "@brief Sets the distance that objects around it will be ghosted. If set to 0, " + "it may be defined by the LevelInfo.\n\n" "@dist - is the max distance\n\n" ) { -#ifdef GHOSTSCOPING - object->setVisibleGhostDistance(dist); -#endif + object->setVisibleGhostDistance(dist); } DefineEngineMethod( GameConnection, getVisibleGhostDistance, F32, (),, @@ -2230,9 +2227,5 @@ DefineEngineMethod( GameConnection, getVisibleGhostDistance, F32, (),, "@return S32 of distance.\n\n" ) { -#ifdef GHOSTSCOPING - return object->getVisibleGhostDistance(); -#else - return 0; -#endif + return object->getVisibleGhostDistance(); } \ No newline at end of file diff --git a/Engine/source/T3D/gameBase/gameConnection.h b/Engine/source/T3D/gameBase/gameConnection.h index 218ccc0e8..b3a2d2126 100644 --- a/Engine/source/T3D/gameBase/gameConnection.h +++ b/Engine/source/T3D/gameBase/gameConnection.h @@ -39,8 +39,6 @@ #include "core/bitVector.h" #endif -#include "torqueConfig.h" - enum GameConnectionConstants { MaxClients = 126, @@ -74,9 +72,7 @@ private: U32 mMissionCRC; // crc of the current mission file from the server -#ifdef GHOSTSCOPING - F32 mConnectionVisibleDistance; -#endif + F32 mVisibleGhostDistance; private: U32 mLastControlRequestTime; @@ -161,10 +157,8 @@ public: bool canRemoteCreate(); -#ifdef GHOSTSCOPING void setVisibleGhostDistance(F32 dist); F32 getVisibleGhostDistance(); -#endif private: /// @name Connection State diff --git a/Engine/source/T3D/levelInfo.cpp b/Engine/source/T3D/levelInfo.cpp index e37c89771..33cd44f18 100644 --- a/Engine/source/T3D/levelInfo.cpp +++ b/Engine/source/T3D/levelInfo.cpp @@ -79,9 +79,7 @@ static SFXAmbience sDefaultAmbience; LevelInfo::LevelInfo() : mNearClip( 0.1f ), mVisibleDistance( 1000.0f ), -#ifdef GHOSTSCOPING - mVisibleGhostDistance (200.0f), -#endif + mVisibleGhostDistance ( 0 ), mDecalBias( 0.0015f ), mCanvasClearColor( 255, 0, 255, 255 ), mSoundAmbience( NULL ), @@ -118,10 +116,8 @@ void LevelInfo::initPersistFields() addGroup( "Visibility" ); addField( "nearClip", TypeF32, Offset( mNearClip, LevelInfo ), "Closest distance from the camera's position to render the world." ); - addField( "visibleDistance", TypeF32, Offset( mVisibleDistance, LevelInfo ), "Furthest distance fromt he camera's position to render the world." ); -#ifdef GHOSTSCOPING - addField( "visibleGhostDistance", TypeF32, Offset( mVisibleGhostDistance, LevelInfo ), "Furthest distance from the camera's position to render players." ); -#endif + addField( "visibleDistance", TypeF32, Offset( mVisibleDistance, LevelInfo ), "Furthest distance from the camera's position to render the world." ); + addField( "visibleGhostDistance", TypeF32, Offset( mVisibleGhostDistance, LevelInfo ), "Furthest distance from the camera's position to render players. Defaults to visibleDistance." ); addField( "decalBias", TypeF32, Offset( mDecalBias, LevelInfo ), "NearPlane bias used when rendering Decal and DecalRoad. This should be tuned to the visibleDistance in your level." ); @@ -308,9 +304,7 @@ void LevelInfo::_updateSceneGraph() scene->setNearClip( mNearClip ); scene->setVisibleDistance( mVisibleDistance ); -#ifdef GHOSTSCOPING scene->setVisibleGhostDistance( mVisibleGhostDistance ); -#endif gDecalBias = mDecalBias; diff --git a/Engine/source/T3D/levelInfo.h b/Engine/source/T3D/levelInfo.h index d3696f23e..cc4459ae4 100644 --- a/Engine/source/T3D/levelInfo.h +++ b/Engine/source/T3D/levelInfo.h @@ -36,8 +36,6 @@ #include "sfx/sfxCommon.h" #endif -#include "torqueConfig.h" - class SFXAmbience; class SFXSoundscape; @@ -56,9 +54,8 @@ class LevelInfo : public NetObject F32 mVisibleDistance; -#ifdef GHOSTSCOPING F32 mVisibleGhostDistance; -#endif + F32 mDecalBias; ColorI mCanvasClearColor; diff --git a/Engine/source/scene/sceneManager.cpp b/Engine/source/scene/sceneManager.cpp index 99e505d56..319d3a3d8 100644 --- a/Engine/source/scene/sceneManager.cpp +++ b/Engine/source/scene/sceneManager.cpp @@ -112,9 +112,7 @@ SceneManager::SceneManager( bool isClient ) mDisplayTargetResolution( 0, 0 ), mDefaultRenderPass( NULL ), mVisibleDistance( 500.f ), -#ifdef GHOSTSCOPING - mVisibleGhostDistance(GHOSTSCOPING_DEFAULT_DISTANCE_IF_NOT_IN_MISSION), -#endif + mVisibleGhostDistance( 0 ), mNearClip( 0.1f ), mAmbientLightColor( ColorF( 0.1f, 0.1f, 0.1f, 1.0f ) ), mZoneManager( NULL ) diff --git a/Engine/source/scene/sceneManager.h b/Engine/source/scene/sceneManager.h index c02908ef5..634745913 100644 --- a/Engine/source/scene/sceneManager.h +++ b/Engine/source/scene/sceneManager.h @@ -59,8 +59,6 @@ #include "core/util/tSignal.h" #endif -#include "torqueConfig.h" - class LightManager; class SceneRootZone; @@ -143,9 +141,7 @@ class SceneManager F32 mVisibleDistance; -#ifdef GHOSTSCOPING F32 mVisibleGhostDistance; -#endif F32 mNearClip; FogData mFogData; @@ -322,10 +318,9 @@ class SceneManager /// Returns the default visible distance for the scene. F32 getVisibleDistance() { return mVisibleDistance; } -#ifdef GHOSTSCOPING void setVisibleGhostDistance( F32 dist ) { mVisibleGhostDistance = dist; } F32 getVisibleGhostDistance() { return mVisibleGhostDistance;} -#endif + /// Used by LevelInfo to set the default near clip plane /// for rendering the scene. /// diff --git a/Engine/source/scene/sceneObject.cpp b/Engine/source/scene/sceneObject.cpp index 85d8f1ca1..7fb3cc0c0 100644 --- a/Engine/source/scene/sceneObject.cpp +++ b/Engine/source/scene/sceneObject.cpp @@ -42,10 +42,7 @@ #include "math/mathIO.h" #include "math/mTransform.h" #include "T3D/gameBase/gameProcess.h" - -#ifdef GHOSTSCOPING #include "T3D/gameBase/gameConnection.h" -#endif IMPLEMENT_CONOBJECT(SceneObject); @@ -668,15 +665,11 @@ static void scopeCallback( SceneObject* obj, void* conPtr ) void SceneObject::onCameraScopeQuery( NetConnection* connection, CameraScopeQuery* query ) { - -#ifdef GHOSTSCOPING - SceneManager* scenemanager = getSceneManager(); + SceneManager* sceneManager = getSceneManager(); GameConnection* conn = dynamic_cast (connection); - if (conn && conn->getVisibleGhostDistance() == 0.0f) - query->visibleDistance = scenemanager->getVisibleGhostDistance(); - else - query->visibleDistance = conn->getVisibleGhostDistance(); -#endif + if (conn && (query->visibleDistance = conn->getVisibleGhostDistance()) == 0.0f) + if ((query->visibleDistance = sceneManager->getVisibleGhostDistance()) == 0.0f) + query->visibleDistance = sceneManager->getVisibleDistance(); // Object itself is in scope. diff --git a/Templates/Empty/game/levels/Empty Room.mis b/Templates/Empty/game/levels/Empty Room.mis index c9b2cd8fa..c3ba059a4 100644 --- a/Templates/Empty/game/levels/Empty Room.mis +++ b/Templates/Empty/game/levels/Empty Room.mis @@ -5,7 +5,6 @@ new SimGroup(MissionGroup) { new LevelInfo(theLevelInfo) { visibleDistance = "1000"; - visibleGhostDistance = "1000"; fogColor = "0.6 0.6 0.7 1"; fogDensity = "0"; fogDensityOffset = "700"; diff --git a/Templates/Empty/source/torqueConfig.h b/Templates/Empty/source/torqueConfig.h index 1cd8ed885..d9de1b1d1 100644 --- a/Templates/Empty/source/torqueConfig.h +++ b/Templates/Empty/source/torqueConfig.h @@ -39,19 +39,6 @@ /// Version number is major * 1000 + minor * 100 + revision * 10. #define TORQUE_APP_VERSION 1000 -//Ghost Scoping limits the number of objects being ghosted -//to a gameConnection to the objects around it within X -//distance. -//This is particularly useful for reducing bandwidth usage -//of games in which there are a lot of players and AI -//Basically, anything derived from SceneObject. -//GHOSTSCOPING_DEFAULT_DISTANCE_IF_NOT_IN_MISSION is the default distance -//a game will use if the distance is not defined in the mission file. -//DO NOT USE IF YOU ARE BUILDING A SIDE SCROLLER. -//To enable ghost scoping define: -//#define GHOSTSCOPING -//#define GHOSTSCOPING_DEFAULT_DISTANCE_IF_NOT_IN_MISSION 200.0f - /// Human readable application version string. #define TORQUE_APP_VERSION_STRING "1.0" diff --git a/Templates/Full/game/levels/Empty Room.mis b/Templates/Full/game/levels/Empty Room.mis index c9b2cd8fa..c3ba059a4 100644 --- a/Templates/Full/game/levels/Empty Room.mis +++ b/Templates/Full/game/levels/Empty Room.mis @@ -5,7 +5,6 @@ new SimGroup(MissionGroup) { new LevelInfo(theLevelInfo) { visibleDistance = "1000"; - visibleGhostDistance = "1000"; fogColor = "0.6 0.6 0.7 1"; fogDensity = "0"; fogDensityOffset = "700"; diff --git a/Templates/Full/game/levels/Empty Terrain.mis b/Templates/Full/game/levels/Empty Terrain.mis index 546f18976..0428ece36 100644 --- a/Templates/Full/game/levels/Empty Terrain.mis +++ b/Templates/Full/game/levels/Empty Terrain.mis @@ -6,7 +6,6 @@ new SimGroup(MissionGroup) { new LevelInfo(theLevelInfo) { nearClip = "0.1"; visibleDistance = "2000"; - visibleGhostDistance = "2000"; decalBias = "0.0015"; fogColor = "1 1 0.6 1"; fogDensity = "0.001"; diff --git a/Templates/Full/game/levels/Outpost.mis b/Templates/Full/game/levels/Outpost.mis index 6483228ae..df29dd7ec 100644 --- a/Templates/Full/game/levels/Outpost.mis +++ b/Templates/Full/game/levels/Outpost.mis @@ -7,7 +7,6 @@ new SimGroup(MissionGroup) { new LevelInfo(theLevelInfo) { nearClip = "0.1"; visibleDistance = "2000"; - visibleGhostDistance = "2000"; decalBias = "0.0015"; fogColor = "0.462745 0.698039 0.729412 1"; fogDensity = "0.005"; diff --git a/Templates/Full/source/torqueConfig.h b/Templates/Full/source/torqueConfig.h index c960199f7..4d8f124f2 100644 --- a/Templates/Full/source/torqueConfig.h +++ b/Templates/Full/source/torqueConfig.h @@ -39,19 +39,6 @@ /// Version number is major * 1000 + minor * 100 + revision * 10. #define TORQUE_APP_VERSION 1000 -//Ghost Scoping limits the number of objects being ghosted -//to a gameConnection to the objects around it within X -//distance. -//This is particularly useful for reducing bandwidth usage -//of games in which there are a lot of players and AI -//Basically, anything derived from SceneObject. -//GHOSTSCOPING_DEFAULT_DISTANCE_IF_NOT_IN_MISSION is the default distance -//a game will use if the distance is not defined in the mission file. -//DO NOT USE IF YOU ARE BUILDING A SIDE SCROLLER. -//To enable ghost scoping define: -//#define GHOSTSCOPING -//#define GHOSTSCOPING_DEFAULT_DISTANCE_IF_NOT_IN_MISSION 200.0f - /// Human readable application version string. #define TORQUE_APP_VERSION_STRING "1.0"