Home | nevrax.com |
|
base_clip_obs.hGo 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 #ifndef NL_BASE_CLIP_OBS_H 00027 #define NL_BASE_CLIP_OBS_H 00028 00029 00030 #include "3d/mot.h" 00031 00032 00033 namespace NL3D 00034 { 00035 00036 00037 class IBaseHrcObs; 00038 class IBaseRenderObs; 00039 class IBaseAnimDetailObs; 00040 class IBaseLoadBalancingObs; 00041 00042 00043 // *************************************************************************** 00062 class IBaseClipObs : public IObs 00063 { 00064 public: 00066 IBaseHrcObs *HrcObs; 00067 IBaseRenderObs *RenderObs; 00068 IBaseAnimDetailObs *AnimDetailObs; 00069 IBaseLoadBalancingObs *LoadBalancingObs; 00070 00074 bool Visible; 00075 00076 enum TClipReason {FrustumClip=0, DistMaxClip, countClip}; 00077 00078 public: 00079 00080 00082 IBaseClipObs() 00083 { 00084 HrcObs=NULL; 00085 RenderObs= NULL; 00086 Visible=false; 00087 _IndexInVisibleList= -1; 00088 } 00089 // Dtor: remove me from _VisibleList. 00090 virtual ~IBaseClipObs(); 00091 00093 virtual void init(); 00094 00095 00099 virtual bool clip(IBaseClipObs *caller)=0; 00100 00101 00110 virtual void traverse(IObs *caller) =0; 00111 00112 00117 virtual void forceClip(TClipReason clipReason); 00118 00119 00123 virtual bool isTreeNode() {return false;} 00124 00125 private: 00126 friend class CClipTrav; 00127 00128 // The index of the Observer in the _VisibleList; -1 (default) means not in 00129 sint _IndexInVisibleList; 00130 }; 00131 00132 00133 // *************************************************************************** 00146 class CDefaultClipObs : public IBaseClipObs 00147 { 00148 public: 00149 00151 virtual bool clip(IBaseClipObs *caller) {return true;} 00152 00153 00155 virtual void traverse(IObs *caller) 00156 { 00157 traverseSons(); 00158 } 00159 00160 }; 00161 00162 00163 } // NL3D 00164 00165 00166 #endif // NL_BASE_CLIP_OBS_H 00167 00168 /* End of base_clip_obs.h */ |