00001
00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024
00025
00026 #ifndef NL_LANDSCAPE_MODEL_H
00027 #define NL_LANDSCAPE_MODEL_H
00028
00029 #include "nel/misc/types_nl.h"
00030 #include "nel/3d/transform.h"
00031 #include "nel/3d/render_trav.h"
00032 #include "nel/3d/landscape.h"
00033
00034
00035 namespace NL3D
00036 {
00037
00038 class CLandscape;
00039
00040
00041 const NLMISC::CClassId LandscapeModelId=NLMISC::CClassId(0x5a573b55, 0x6b395829);
00042
00043
00044 00051 class CLandscapeModel : public CTransform
00052 {
00053 public:
00055 static void registerBasic();
00056
00057 public:
00058 CLandscape Landscape;
00059
00064 void setAdditive (float additive)
00065 {
00066 _Additive=additive;
00067 }
00068
00073 float getAdditive () const
00074 {
00075 return _Additive;
00076 }
00077
00082 void enableAdditive (bool enable)
00083 {
00084 _ActiveAdditive=enable;
00085 }
00086
00091 bool isAdditive () const
00092 {
00093 return _ActiveAdditive;
00094 }
00095
00096 protected:
00097 CLandscapeModel()
00098 {
00099 Landscape.init();
00100 _ActiveAdditive=false;
00101 _Additive=1.f;
00102 }
00103 virtual ~CLandscapeModel() {}
00104
00105 private:
00106 static IModel *creator() {return new CLandscapeModel;}
00107
00108 bool _ActiveAdditive;
00109 float _Additive;
00110
00111 friend class CLandscapeClipObs;
00112 friend class CLandscapeRenderObs;
00113
00114 std::vector<CPlane> CurrentPyramid;
00115 };
00116
00117
00118
00119 00121
00122 {
00123 public:
00124
00126 virtual bool isRenderable() const {return true;}
00127
00129 virtual bool clip(IBaseClipObs *caller);
00130
00131
00132 static IObs *creator() {return new CLandscapeClipObs;}
00133 };
00134
00135 00137
00138 {
00139 public:
00141 virtual void traverse(IObs *caller);
00142
00143
00144 static IObs *creator() {return new CLandscapeRenderObs;}
00145 };
00146
00147
00148
00149
00150 }
00151
00152
00153 #endif // NL_LANDSCAPE_MODEL_H
00154
00155