Home | nevrax.com |
|
base_clip_obs.cppGo to the documentation of this file.00001 00007 /* Copyright, 2000-2002 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 00026 #include "std3d.h" 00027 00028 #include "nel/misc/debug.h" 00029 #include "3d/base_clip_obs.h" 00030 #include "3d/clip_trav.h" 00031 #include "3d/render_trav.h" 00032 #include "3d/anim_detail_trav.h" 00033 #include "3d/load_balancing_trav.h" 00034 00035 00036 using namespace std; 00037 using namespace NLMISC; 00038 00039 00040 namespace NL3D 00041 { 00042 00043 00044 // *************************************************************************** 00045 // *************************************************************************** 00046 // IBaseClipObs 00047 // *************************************************************************** 00048 // *************************************************************************** 00049 00050 00051 // *************************************************************************** 00052 IBaseClipObs::~IBaseClipObs() 00053 { 00054 // I must remove me from _VisibleList. 00055 if(_IndexInVisibleList>=0) 00056 { 00057 CClipTrav *clipTrav= (CClipTrav*) Trav; 00058 nlassert(_IndexInVisibleList < (sint)clipTrav->_VisibleList.size() ); 00059 // Mark NULL. NB: faster than a CRefPtr. 00060 clipTrav->_VisibleList[_IndexInVisibleList]= NULL; 00061 _IndexInVisibleList= -1; 00062 } 00063 } 00064 00065 00066 // *************************************************************************** 00067 void IBaseClipObs::init() 00068 { 00069 IObs::init(); 00070 nlassert( dynamic_cast<IBaseHrcObs*> (getObs(HrcTravId)) ); 00071 HrcObs= static_cast<IBaseHrcObs*> (getObs(HrcTravId)); 00072 nlassert( dynamic_cast<IBaseRenderObs*> (getObs(RenderTravId)) ); 00073 RenderObs= static_cast<IBaseRenderObs*> (getObs(RenderTravId)); 00074 00075 AnimDetailObs= safe_cast<IBaseAnimDetailObs*> (getObs(AnimDetailTravId)); 00076 LoadBalancingObs= safe_cast<IBaseLoadBalancingObs*> (getObs(LoadBalancingTravId)); 00077 00078 } 00079 00080 00081 // *************************************************************************** 00082 void IBaseClipObs::forceClip(TClipReason clipReason) 00083 { 00084 // for all sons 00085 for(IObs *c= getFirstChild(); c!=NULL; c= getNextChild()) 00086 { 00087 IBaseClipObs *clipObs= static_cast<IBaseClipObs*>(c); 00088 // call it on son. 00089 clipObs->forceClip(clipReason); 00090 } 00091 } 00092 00093 00094 } // NL3D |