Initial commit
This commit is contained in:
84
Torque/SDK/engine/sceneGraph/sceneRoot.cc
Normal file
84
Torque/SDK/engine/sceneGraph/sceneRoot.cc
Normal file
@@ -0,0 +1,84 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include "sceneGraph/sceneRoot.h"
|
||||
#include "sceneGraph/sceneGraph.h"
|
||||
#include "sceneGraph/sceneState.h"
|
||||
|
||||
SceneRoot* gClientSceneRoot = NULL;
|
||||
SceneRoot* gServerSceneRoot = NULL;
|
||||
|
||||
SceneRoot::SceneRoot()
|
||||
{
|
||||
mObjBox.min.set(-1e10, -1e10, -1e10);
|
||||
mObjBox.max.set( 1e10, 1e10, 1e10);
|
||||
resetWorldBox();
|
||||
}
|
||||
|
||||
SceneRoot::~SceneRoot()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
bool SceneRoot::onSceneAdd(SceneGraph* pGraph)
|
||||
{
|
||||
// _Cannot_ call the parent here. Must handle this ourselves so we can keep out of
|
||||
// the zone graph...
|
||||
// if (Parent::onSceneAdd(pGraph) == false)
|
||||
// return false;
|
||||
|
||||
mSceneManager = pGraph;
|
||||
mSceneManager->registerZones(this, 1);
|
||||
AssertFatal(mZoneRangeStart == 0, "error, sceneroot must be first scene object zone manager!");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SceneRoot::onSceneRemove()
|
||||
{
|
||||
AssertFatal(mZoneRangeStart == 0, "error, sceneroot must be first scene object zone manager!");
|
||||
mSceneManager->unregisterZones(this);
|
||||
mZoneRangeStart = 0xFFFFFFFF;
|
||||
mSceneManager = NULL;
|
||||
|
||||
// _Cannot_ call the parent here. Must handle this ourselves so we can keep out of
|
||||
// the zone graph...
|
||||
// Parent::onSceneRemove();
|
||||
}
|
||||
|
||||
bool SceneRoot::getOverlappingZones(SceneObject*, U32* zones, U32* numZones)
|
||||
{
|
||||
// If we are here, we always return the global zone.
|
||||
zones[0] = 0;
|
||||
*numZones = 1;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SceneRoot::prepRenderImage(SceneState* state, const U32 stateKey,
|
||||
const U32,
|
||||
const bool modifyBaseZoneState)
|
||||
{
|
||||
AssertFatal(modifyBaseZoneState == true, "error, should never be called unless in the upward traversal!");
|
||||
AssertFatal(isLastState(state, stateKey) == false, "Error, should have been colored black in order to prevent double calls!");
|
||||
setLastState(state, stateKey);
|
||||
|
||||
// We don't return a render image, or any portals, but we do setup the zone 0
|
||||
// rendering parameters. We simply copy them from what is in the states baseZoneState
|
||||
// structure, and mark the zone as rendered.
|
||||
dMemcpy(state->getZoneStateNC(0).frustum, state->getBaseZoneState().frustum, sizeof(state->getZoneStateNC(0).frustum));
|
||||
state->getZoneStateNC(0).viewport = state->getBaseZoneState().viewport;
|
||||
state->getZoneStateNC(0).render = true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool SceneRoot::scopeObject(const Point3F& /*rootPosition*/,
|
||||
const F32 /*rootDistance*/,
|
||||
bool* zoneScopeState)
|
||||
{
|
||||
zoneScopeState[0] = true;
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user