Improved DKCR game mode + a few other assorted fixes

This commit is contained in:
parax0
2016-02-17 01:55:19 -07:00
parent 9eaf537611
commit c36c09a674
10 changed files with 90 additions and 10 deletions

View File

@@ -12,6 +12,7 @@
CScriptNode::CScriptNode(CScene *pScene, CSceneNode *pParent, CScriptObject *pObject)
: CSceneNode(pScene, pParent)
, mGameModeVisibility(eUntested)
{
mpVolumePreviewNode = nullptr;
mHasVolumePreview = false;
@@ -113,7 +114,10 @@ void CScriptNode::AddToRenderer(CRenderer *pRenderer, const SViewInfo& ViewInfo)
// If we're in game mode, then override other visibility settings.
if (ViewInfo.GameMode)
{
if ( (!mpInstance->IsActive() && Template()->Game() != eReturns) || !mpInstance->HasInGameModel())
if (mGameModeVisibility == eUntested)
TestGameModeVisibility();
if (mGameModeVisibility != eVisible)
return;
}
@@ -568,6 +572,17 @@ void CScriptNode::GeneratePosition()
}
}
void CScriptNode::TestGameModeVisibility()
{
// Don't render if we don't have an ingame model, or if this is the Prime series and the instance is not active.
if ((Template()->Game() < eReturns && !mpInstance->IsActive()) || !mpInstance->HasInGameModel())
mGameModeVisibility = eNotVisible;
// If this is Returns, only render if the instance is active OR if it has a near visible activation.
else
mGameModeVisibility = (mpInstance->IsActive() || mpInstance->HasNearVisibleActivation()) ? eVisible : eNotVisible;
}
CColor CScriptNode::WireframeColor() const
{
return CColor::Integral(12, 135, 194);

View File

@@ -24,6 +24,11 @@ class CScriptNode : public CSceneNode
CLightParameters *mpLightParameters;
enum EGameModeVisibility
{
eVisible, eNotVisible, eUntested
} mGameModeVisibility;
public:
CScriptNode(CScene *pScene, CSceneNode *pParent = 0, CScriptObject *pObject = 0);
ENodeType NodeType();
@@ -43,6 +48,7 @@ public:
void PropertyModified(IProperty *pProp);
void UpdatePreviewVolume();
void GeneratePosition();
void TestGameModeVisibility();
CScriptObject* Object() const;
CScriptTemplate* Template() const;
CScriptExtra* Extra() const;