Main Page Namespace List Class Hierarchy Alphabetical List Compound List File List Namespace Members Compound Members File Members Related Pages

# OgreBspSceneNode.cpp

Go to the documentation of this file.

    00001 /*
    00002 -----------------------------------------------------------------------------
    00003 This source file is part of OGRE
    00004     (Object-oriented Graphics Rendering Engine)
    00005 For the latest info, see http://www.ogre3d.org/
    00006
    00007 Copyright © 2000-2003 The OGRE Team
    00008 Also see acknowledgements in Readme.html
    00009
    00010 This program is free software; you can redistribute it and/or modify it under
    00011 the terms of the GNU Lesser General Public License as published by the Free Software
    00012 Foundation; either version 2 of the License, or (at your option) any later
    00013 version.
    00014
    00015 This program is distributed in the hope that it will be useful, but WITHOUT
    00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
    00018
    00019 You should have received a copy of the GNU Lesser General Public License along with
    00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
    00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to
    00022 http://www.gnu.org/copyleft/lesser.txt.
    00023 -----------------------------------------------------------------------------
    00024 */
    00025 #include "OgreBspSceneNode.h"
    00026 #include "OgreBspSceneManager.h"
    00027
    00028 namespace Ogre {
    00029
    00030
    00031     void BspSceneNode::_update(bool updateChildren, bool parentHasChanged)
    00032     {
    00033         bool checkMovables = false;
    00034
    00035         if (mNeedParentUpdate || parentHasChanged)
    00036         {
    00037             // This means we've moved
    00038             checkMovables = true;
    00039         }
    00040
    00041         // Call superclass
    00042         SceneNode::_update(updateChildren, parentHasChanged);
    00043
    00044         if (checkMovables)
    00045         {
    00046             // Check membership of attached objects
    00047             ObjectMap::const_iterator it, itend;
    00048             itend = mObjectsByName.end();
    00049             for (it = mObjectsByName.begin(); it != itend; ++it)
    00050             {
    00051                 MovableObject* mov = it->second;
    00052
    00053                 static_cast<BspSceneManager*>(mCreator)->_notifyObjectMoved(
    00054                     mov, this->_getDerivedPosition());
    00055
    00056             }
    00057         }
    00058
    00059     }
    00060     //-------------------------------------------------------------------------
    00061     MovableObject* BspSceneNode::detachObject(unsigned short index)
    00062     {
    00063         MovableObject* ret = SceneNode::detachObject(index);
    00064         static_cast<BspSceneManager*>(mCreator)->_notifyObjectDetached(ret);
    00065         return ret;
    00066
    00067     }
    00068     //-------------------------------------------------------------------------
    00069     MovableObject* BspSceneNode::detachObject(const String& name)
    00070     {
    00071         MovableObject* ret = SceneNode::detachObject(name);
    00072         static_cast<BspSceneManager*>(mCreator)->_notifyObjectDetached(ret);
    00073         return ret;
    00074     }
    00075     //-------------------------------------------------------------------------
    00076     void BspSceneNode::detachAllObjects(void)
    00077     {
    00078         ObjectMap::const_iterator i, iend;
    00079         iend = mObjectsByName.end();
    00080         for (i = mObjectsByName.begin(); i != iend; ++i)
    00081         {
    00082             static_cast<BspSceneManager*>(mCreator)
    00083                 ->_notifyObjectDetached(i->second);
    00084         }
    00085         SceneNode::detachAllObjects();
    00086     }
    00087
    00088 }
    00089
    00090
    00091

Copyright © 2002-2003 by The OGRE Team
Last modified Sun Nov 28 19:48:16 2004