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 //------------------------------------------------------------------------------