Skip to content

Commit

Permalink
Bug 344 - Add utility functions to enable/disable skybox/dome/planes …
Browse files Browse the repository at this point in the history
…instead of destroying and recreating.
  • Loading branch information
davidjrogers committed Apr 11, 2011
1 parent a3d87a8 commit 59e7187
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 31 deletions.
9 changes: 9 additions & 0 deletions OgreMain/include/OgreSceneManager.h
Expand Up @@ -1920,6 +1920,9 @@ namespace Ogre {
int xsegments = 1, int ysegments = 1,
const String& groupName = ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);

/** Enables / disables a 'sky plane' */
virtual void setSkyPlaneEnabled(bool enable) { mSkyPlaneEnabled = enable; }

/** Return whether a key plane is enabled */
virtual bool isSkyPlaneEnabled(void) const { return mSkyPlaneEnabled; }

Expand Down Expand Up @@ -2012,6 +2015,9 @@ namespace Ogre {
uint8 renderQueue = RENDER_QUEUE_SKIES_EARLY, const Quaternion& orientation = Quaternion::IDENTITY,
const String& groupName = ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);

/** Enables / disables a 'sky box' */
virtual void setSkyBoxEnabled(bool enable) { mSkyBoxEnabled = enable; }

/** Return whether a skybox is enabled */
virtual bool isSkyBoxEnabled(void) const { return mSkyBoxEnabled; }

Expand Down Expand Up @@ -2136,6 +2142,9 @@ namespace Ogre {
int xsegments = 16, int ysegments = 16, int ysegments_keep = -1,
const String& groupName = ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);

/** Enables / disables a 'sky dome' */
virtual void setSkyDomeEnabled(bool enable) { mSkyDomeEnabled = enable; }

/** Return whether a skydome is enabled */
virtual bool isSkyDomeEnabled(void) const { return mSkyDomeEnabled; }

Expand Down
68 changes: 37 additions & 31 deletions OgreMain/src/OgreSceneManager.cpp
Expand Up @@ -3876,43 +3876,49 @@ void SceneManager::resetViewProjMode(bool fixedFunction)
//---------------------------------------------------------------------
void SceneManager::_queueSkiesForRendering(Camera* cam)
{
// Update nodes
// Translate the box by the camera position (constant distance)
if (mSkyPlaneNode)
{
// The plane position relative to the camera has already been set up
mSkyPlaneNode->setPosition(cam->getDerivedPosition());
}
// Update nodes
// Translate the box by the camera position (constant distance)
if (mSkyPlaneNode)
{
// The plane position relative to the camera has already been set up
mSkyPlaneNode->setPosition(cam->getDerivedPosition());
}

if (mSkyBoxNode)
{
mSkyBoxNode->setPosition(cam->getDerivedPosition());
}
if (mSkyBoxNode)
{
mSkyBoxNode->setPosition(cam->getDerivedPosition());
}

if (mSkyDomeNode)
{
mSkyDomeNode->setPosition(cam->getDerivedPosition());
}
if (mSkyDomeNode)
{
mSkyDomeNode->setPosition(cam->getDerivedPosition());
}

if (mSkyPlaneEnabled)
{
getRenderQueue()->addRenderable(mSkyPlaneEntity->getSubEntity(0), mSkyPlaneRenderQueue, OGRE_RENDERABLE_DEFAULT_PRIORITY);
}
if (mSkyPlaneEnabled
&& mSkyPlaneEntity && mSkyPlaneEntity->isVisible()
&& mSkyPlaneEntity->getSubEntity(0) && mSkyPlaneEntity->getSubEntity(0)->isVisible())
{
getRenderQueue()->addRenderable(mSkyPlaneEntity->getSubEntity(0), mSkyPlaneRenderQueue, OGRE_RENDERABLE_DEFAULT_PRIORITY);
}

if (mSkyBoxEnabled)
{
if (mSkyBoxEnabled
&& mSkyBoxObj && mSkyBoxObj->isVisible())
{
mSkyBoxObj->_updateRenderQueue(getRenderQueue());
}
}

uint plane;
if (mSkyDomeEnabled)
{
for (plane = 0; plane < 5; ++plane)
{
getRenderQueue()->addRenderable(
mSkyDomeEntity[plane]->getSubEntity(0), mSkyDomeRenderQueue, OGRE_RENDERABLE_DEFAULT_PRIORITY);
}
}
if (mSkyDomeEnabled)
{
for (uint plane = 0; plane < 5; ++plane)
{
if (mSkyDomeEntity[plane] && mSkyDomeEntity[plane]->isVisible()
&& mSkyDomeEntity[plane]->getSubEntity(0) && mSkyDomeEntity[plane]->getSubEntity(0)->isVisible())
{
getRenderQueue()->addRenderable(
mSkyDomeEntity[plane]->getSubEntity(0), mSkyDomeRenderQueue, OGRE_RENDERABLE_DEFAULT_PRIORITY);
}
}
}
}
//---------------------------------------------------------------------
void SceneManager::addRenderQueueListener(RenderQueueListener* newListener)
Expand Down

0 comments on commit 59e7187

Please sign in to comment.