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 Fri May 14 23:21:55 2004