Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

Scene.h

Go to the documentation of this file.
00001 //------------------------------------------------------------------------------
00002 // Lamp : Open source game middleware
00003 // Copyright (C) 2004  Junpei Ohtani ( Email : junpee@users.sourceforge.jp )
00004 //
00005 // This library is free software; you can redistribute it and/or
00006 // modify it under the terms of the GNU Lesser General Public
00007 // License as published by the Free Software Foundation; either
00008 // version 2.1 of the License, or (at your option) any later version.
00009 //
00010 // This library is distributed in the hope that it will be useful,
00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013 // Lesser General Public License for more details.
00014 //
00015 // You should have received a copy of the GNU Lesser General Public
00016 // License along with this library; if not, write to the Free Software
00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00018 //------------------------------------------------------------------------------
00019 
00020 /** @file
00021  * シーンヘッダ
00022  * @author Junpee
00023  */
00024 
00025 #ifndef SCENE_H_
00026 #define SCENE_H_
00027 
00028 #include <Graphics/System/GraphicsDeviceObjectHolder.h>
00029 #include <Core/Container/ArrayList.h>
00030 
00031 namespace Lamp{
00032 
00033 class Renamer;
00034 class DrawRequest;
00035 class SceneNode;
00036 class Camera;
00037 class Fog;
00038 class Mesh;
00039 
00040 class CameraManager;
00041 class SceneNodeManager;
00042 class LightManager;
00043 class ModelManager;
00044 class MeshManager;
00045 class MeshDataManager;
00046 class MaterialManager;
00047 class TextureManager;
00048 class PictureManager;
00049 
00050 //------------------------------------------------------------------------------
00051 /**
00052  * シーン
00053  */
00054 class Scene : public GraphicsDeviceObjectHolder{
00055 friend class LampGraphics;
00056 public:
00057     /**
00058      * クリア
00059      *
00060      * 強制的にシーン内の全オブジェクトを破棄します
00061      * @return 削除したオブジェクト数
00062      */
00063     virtual int clear();
00064 
00065     //--------------------------------------------------------------------------
00066     /**
00067      * 走査
00068      */
00069     virtual void traverse();
00070 
00071     //--------------------------------------------------------------------------
00072     /**
00073      * メッシュリストの取得
00074      * @param meshList メッシュリスト
00075      * @param camera 刈り込むカメラ
00076      */
00077     virtual void getMeshList(ArrayList<Mesh*>* meshList, Camera* camera);
00078 
00079     /**
00080      * ローカルライトリストの取得
00081      * @param mesh メッシュ
00082      * @param drawRequest 描画リクエスト
00083      */
00084     virtual void getLocalLightList(Mesh* mesh, DrawRequest* drawRequest);
00085 
00086     //--------------------------------------------------------------------------
00087     /**
00088      * 名前の取得
00089      * @return 名前
00090      */
00091     virtual const String& getName() const{ return name_; }
00092 
00093     //--------------------------------------------------------------------------
00094     /**
00095      * ルートノードの取得
00096      * @return ルートノード
00097      */
00098     virtual SceneNode* getRootNode(){ return rootNode_; }
00099 
00100     //--------------------------------------------------------------------------
00101     /**
00102      * カレントカメラの設定
00103      * @param currentCamera カレントカメラ
00104      */
00105     virtual void setCurrentCamera(Camera* currentCamera){
00106         currentCamera_ = currentCamera;
00107     }
00108 
00109     /**
00110      * カレントカメラの取得
00111      * @return カレントカメラ
00112      */
00113     virtual Camera* getCurrentCamera(){ return currentCamera_; }
00114 
00115     //--------------------------------------------------------------------------
00116     /**
00117      * フォグの取得
00118      * @return フォグ
00119      */
00120     virtual Fog* getFog(){ return fog_; }
00121 
00122     //--------------------------------------------------------------------------
00123     /**
00124      * チックの設定
00125      * @param tick チック
00126      */
00127     virtual void setTick(int tick){ tick_ = tick; }
00128 
00129     /**
00130      * チックの取得
00131      * @return チック
00132      */
00133     virtual int getTick() const{ return tick_; }
00134 
00135     //--------------------------------------------------------------------------
00136     // リネーム関係
00137     //--------------------------------------------------------------------------
00138     /**
00139      * リネーマの設定
00140      * @param renamer 設定するリネーマ
00141      */
00142     virtual void setRenamer(Renamer* renamer);
00143 
00144     /**
00145      * リネーマの取得
00146      * @return リネーマ
00147      */
00148     virtual Renamer* getRenamer() const{ return renamer_; }
00149 
00150     //--------------------------------------------------------------------------
00151     /**
00152      * デバイスオブジェクトの初期化
00153      * @return 成功したらtrueを返す
00154      */
00155     virtual bool initializeGraphicsDeviceObjects();
00156 
00157     /**
00158      * デバイスオブジェクトの削除
00159      */
00160     virtual void deleteGraphicsDeviceObjects();
00161 
00162     /**
00163      * デバイスオブジェクトのリストア
00164      * @return 成功したらtrueを返す
00165      */
00166     virtual bool restoreGraphicsDeviceObjects();
00167 
00168     /**
00169      * デバイスオブジェクトの無効化
00170      */
00171     virtual void invalidateGraphicsDeviceObjects();
00172 
00173     //--------------------------------------------------------------------------
00174     /**
00175      * カメラマネージャの取得
00176      * @return カメラマネージャ
00177      */
00178     virtual CameraManager* getCameraManager(){ return cameraManager_; }
00179 
00180     /**
00181      * シーンノードマネージャの取得
00182      * @return シーンノードマネージャ
00183      */
00184     virtual SceneNodeManager* getSceneNodeManager(){
00185         return  sceneNodeManager_;
00186     }
00187 
00188     /**
00189      * ライトマネージャの取得
00190      * @return ライトマネージャ
00191      */
00192     virtual LightManager* getLightManager(){ return lightManager_; }
00193 
00194     /**
00195      * モデルマネージャの取得
00196      * @return モデルマネージャ
00197      */
00198     virtual ModelManager* getModelManager(){ return modelManager_; }
00199 
00200     /**
00201      * メッシュマネージャの取得
00202      * @return メッシュマネージャ
00203      */
00204     virtual MeshManager* getMeshManager(){ return meshManager_; }
00205 
00206     /**
00207      * メッシュデータマネージャの取得
00208      * @return メッシュデータマネージャ
00209      */
00210     virtual MeshDataManager* getMeshDataManager(){ return meshDataManager_; }
00211 
00212     /**
00213      * マテリアルマネージャの取得
00214      * @return マテリアルマネージャ
00215      */
00216     virtual MaterialManager* getMaterialManager(){ return materialManager_; }
00217 
00218     /**
00219      * テクスチャマネージャの取得
00220      * @return テクスチャマネージャ
00221      */
00222     virtual TextureManager* getTextureManager(){ return textureManager_; }
00223 
00224     /**
00225      * ピクチャマネージャの取得
00226      * @return ピクチャマネージャ
00227      */
00228     virtual PictureManager* getPictureManager(){ return pictureManager_; }
00229 
00230     //--------------------------------------------------------------------------
00231 protected:
00232     /**
00233      * コンストラクタ
00234      * @param name 名前
00235      */
00236     Scene(const String& name);
00237 
00238     /**
00239      * デストラクタ
00240      */
00241     virtual ~Scene();
00242 
00243     //--------------------------------------------------------------------------
00244 private:
00245     // コピーコンストラクタの隠蔽
00246     Scene(const Scene& copy);
00247 
00248     // 代入コピーの隠蔽
00249     void operator =(const Scene& copy);
00250 
00251     // 名前
00252     String name_;
00253     // リネーマ
00254     Renamer* renamer_;
00255     // ルートノード
00256     SceneNode* rootNode_;
00257     // カレントカメラ
00258     Camera* currentCamera_;
00259     // フォグ
00260     Fog* fog_;
00261     // カメラマネージャ
00262     CameraManager* cameraManager_;
00263     // シーンノードマネージャ
00264     SceneNodeManager* sceneNodeManager_;
00265     // ライトマネージャ
00266     LightManager* lightManager_;
00267     // モデルマネージャ
00268     ModelManager* modelManager_;
00269     // メッシュマネージャ
00270     MeshManager* meshManager_;
00271     // メッシュデータマネージャ
00272     MeshDataManager* meshDataManager_;
00273     // マテリアルマネージャ
00274     MaterialManager* materialManager_;
00275     // テクスチャマネージャ
00276     TextureManager* textureManager_;
00277     // ピクチャマネージャ
00278     PictureManager* pictureManager_;
00279     // チック
00280     int tick_;
00281 };
00282 
00283 //------------------------------------------------------------------------------
00284 } // End of namespace Lamp
00285 #endif // End of SCENE_H_
00286 //------------------------------------------------------------------------------

Generated on Wed Mar 16 10:29:35 2005 for Lamp by doxygen 1.3.2