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

TextSceneSaver.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 TEXT_SCENE_SAVER_H_
00026 #define TEXT_SCENE_SAVER_H_
00027 
00028 namespace Lamp{
00029 
00030 class TextWriter;
00031 class Scene;
00032 class Fog;
00033 class SceneNodeManager;
00034 class LightManager;
00035 class ModelManager;
00036 class MeshManager;
00037 class MeshDataManager;
00038 class MaterialManager;
00039 class TextureManager;
00040 class PictureManager;
00041 
00042 class SceneNode;
00043 class LODSceneNode;
00044 class Light;
00045 class AmbientLight;
00046 class DirectionalLight;
00047 class PointLight;
00048 class Model;
00049 class StandardModel;
00050 class CharacterModel;
00051 class Bone;
00052 class Mesh;
00053 class RigidMesh;
00054 class CharacterMesh;
00055 class MeshData;
00056 class Material;
00057 class BasicMaterial;
00058 class Texture;
00059 class SurfaceTexture;
00060 class Picture;
00061 
00062 //------------------------------------------------------------------------------
00063 /**
00064  * テキストシーンセーバ
00065  */
00066 class TextSceneSaver{
00067 public:
00068     /**
00069      * コンストラクタ
00070      */
00071     TextSceneSaver();
00072 
00073     /**
00074      * デストラクタ
00075      */
00076     virtual ~TextSceneSaver();
00077 
00078     /**
00079      * セーブ
00080      * @param filePath ファイルパス
00081      * @param scene セーブするシーン
00082      */
00083     virtual void save(const String& filePath, Scene* scene);
00084 
00085     /**
00086      * セーブ
00087      * @param textWriter テキストライタ
00088      * @param scene セーブするシーン
00089      * @param basePath ベースパス
00090      */
00091     virtual void save(TextWriter* textWriter, Scene* scene,
00092         const String& basePath = "");
00093 
00094 protected:
00095     /**
00096      * ヘッダの書き出し
00097      */
00098     virtual void writeHeader();
00099 
00100     /**
00101      * オブジェクトリストの書き出し
00102      * @return オブジェクト数
00103      */
00104     virtual int writeObjectList();
00105 
00106     /**
00107      * リンクの書き出し
00108      * @param objectCount オブジェクト数
00109      */
00110     virtual void writeLink(int objectCount);
00111 
00112     //--------------------------------------------------------------------------
00113     // フォグ
00114     //--------------------------------------------------------------------------
00115     /**
00116      * フォグの書き出し
00117      * @param fog フォグ
00118      */
00119     virtual void writeFog(Fog* fog);
00120 
00121     //--------------------------------------------------------------------------
00122     // シーンノード
00123     //--------------------------------------------------------------------------
00124     /**
00125      * シーンノードリストの書き出し
00126      */
00127     virtual void writeSceneNodeList();
00128 
00129     /**
00130      * シーンノードの書き出し
00131      * @param sceneNode 書き出すシーンノード
00132      */
00133     virtual void writeSceneNode(SceneNode* sceneNode);
00134 
00135     /**
00136      * レベルオブディティールシーンノードの書き出し
00137      * @param sceneNode 書き出すレベルオブディティールシーンノード
00138      */
00139     virtual void writeLODSceneNode(LODSceneNode* sceneNode);
00140 
00141     //--------------------------------------------------------------------------
00142     // ライト
00143     //--------------------------------------------------------------------------
00144     /**
00145      * ライトリストの書き出し
00146      */
00147     virtual void writeLightList();
00148 
00149     /**
00150      * ライトの書き出し
00151      * @param light 書き出すライト
00152      */
00153     virtual void writeLight(Light* light);
00154 
00155     /**
00156      * アンビエントライトの書き出し
00157      * @param light 書き出すライト
00158      */
00159     virtual void writeAmbientLight(AmbientLight* light);
00160 
00161     /**
00162      * ディレクショナルライトの書き出し
00163      * @param light 書き出すライト
00164      */
00165     virtual void writeDirectionalLight(DirectionalLight* light);
00166 
00167     /**
00168      * ポイントライトの書き出し
00169      * @param light 書き出すライト
00170      */
00171     virtual void writePointLight(PointLight* light);
00172 
00173     //--------------------------------------------------------------------------
00174     // モデル
00175     //--------------------------------------------------------------------------
00176     /**
00177      * モデルリストの書き出し
00178      */
00179     virtual void writeModelList();
00180 
00181     /**
00182      * 標準モデルの書き出し
00183      * @param model 書き出すモデル
00184      */
00185     virtual void writeStandardModel(StandardModel* model);
00186 
00187     /**
00188      * キャラクタモデルの書き出し
00189      * @param model 書き出すモデル
00190      */
00191     virtual void writeCharacterModel(CharacterModel* model);
00192 
00193     /**
00194      * ボーンの書き出し
00195      * @param bone 書き出すボーン
00196      */
00197     virtual void writeBone(Bone* bone);
00198 
00199     /**
00200      * ボーンリンクの書き出し
00201      * @param bone 書き出すボーン
00202      */
00203     virtual void writeBoneLink(Bone* bone);
00204 
00205     //--------------------------------------------------------------------------
00206     // メッシュ
00207     //--------------------------------------------------------------------------
00208     /**
00209      * メッシュリストの書き出し
00210      */
00211     virtual void writeMeshList();
00212 
00213     /**
00214      * 剛体メッシュの書き出し
00215      * @param mesh 書き出すメッシュ
00216      */
00217     virtual void writeRigidMesh(RigidMesh* mesh);
00218 
00219     /**
00220      * キャラクタメッシュの書き出し
00221      * @param mesh 書き出すメッシュ
00222      */
00223     virtual void writeCharacterMesh(CharacterMesh* mesh);
00224 
00225     //--------------------------------------------------------------------------
00226     // メッシュデータ
00227     //--------------------------------------------------------------------------
00228     /**
00229      * メッシュデータリストの書き出し
00230      */
00231     virtual void writeMeshDataList();
00232 
00233     /**
00234      * メッシュデータの書き出し
00235      * @param meshData 書き出すメッシュデータ
00236      */
00237     virtual void writeMeshData(MeshData* meshData);
00238 
00239     //--------------------------------------------------------------------------
00240     // マテリアル
00241     //--------------------------------------------------------------------------
00242     /**
00243      * マテリアルリストの書き出し
00244      */
00245     virtual void writeMaterialList();
00246 
00247     /**
00248      * マテリアルの書き出し
00249      * @param material 書き出すマテリアル
00250      */
00251     virtual void writeMaterial(const Material* material);
00252 
00253     /**
00254      * 基本マテリアルの書き出し
00255      * @param material 書き出すマテリアル
00256      */
00257     virtual void writeBasicMaterial(const BasicMaterial* material);
00258 
00259     //--------------------------------------------------------------------------
00260     // テクスチャ
00261     //--------------------------------------------------------------------------
00262     /**
00263      * テクスチャリストの書き出し
00264      */
00265     virtual void writeTextureList();
00266 
00267     /**
00268      * サーフェーステクスチャの書き出し
00269      * @param texture 書き出すテクスチャ
00270      */
00271     virtual void writeSurfaceTexture(const SurfaceTexture* texture);
00272 
00273     //--------------------------------------------------------------------------
00274     // ピクチャ
00275     //--------------------------------------------------------------------------
00276     /**
00277      * ピクチャの書き出し
00278      * @param picture 書き出すピクチャ
00279      */
00280     virtual void writePicture(const Picture* picture);
00281 
00282     //--------------------------------------------------------------------------
00283     // リンク
00284     //--------------------------------------------------------------------------
00285     /**
00286      * シーンノードリンクの書き出し
00287      * @param sceneNode 書き出すシーンノード
00288      */
00289     virtual void writeSceneNodeLink(SceneNode* sceneNode);
00290 
00291     /**
00292      * モデルリンクの書き出し
00293      * @param model 書き出すモデル
00294      */
00295     virtual void writeModelLink(const Model* model);
00296 
00297     /**
00298      * メッシュリンクの書き出し
00299      * @param mesh 書き出すメッシュ
00300      */
00301     virtual void writeMeshLink(const Mesh* mesh);
00302 
00303     /**
00304      * マテリアルリンクリストの書き出し
00305      */
00306     virtual void writeMaterialLinkList();
00307 
00308     /**
00309      * 基本マテリアルリンクの書き出し
00310      * @param material 書き出すマテリアル
00311      */
00312     virtual void writeBasicMaterialLink(const BasicMaterial* material);
00313 
00314     /**
00315      * テクスチャリンクの書き出し
00316      * @param texture 書き出すテクスチャ
00317      */
00318     virtual void writeTextureLink(const Texture* texture);
00319 
00320     //--------------------------------------------------------------------------
00321     // ユーティリティ
00322     //--------------------------------------------------------------------------
00323     /**
00324      * boolの書き出し
00325      */
00326     virtual void writeBool(bool);
00327 
00328     /**
00329      * 線コメントの書き出し
00330      */
00331     virtual void writeLineComment();
00332 
00333     /**
00334      * ブロックコメントの書き出し
00335      * @param blockName ブロック名
00336      */
00337     virtual void writeBlockComment(const String& blockName);
00338 
00339     /// ライタ
00340     TextWriter* writer_;
00341     /// ベースパス
00342     String basePath_;
00343     /// シーン
00344     Scene* scene_;
00345     /// シーンノードマネージャ
00346     SceneNodeManager* sceneNodeManager_;
00347     /// ライトマネージャ
00348     LightManager* lightManager_;
00349     /// モデルマネージャ
00350     ModelManager* modelManager_;
00351     /// メッシュマネージャ
00352     MeshManager* meshManager_;
00353     /// メッシュデータマネージャ
00354     MeshDataManager* meshDataManager_;
00355     /// マテリアルマネージャ
00356     MaterialManager* materialManager_;
00357     /// テクスチャマネージャ
00358     TextureManager* textureManager_;
00359     /// ピクチャマネージャ
00360     PictureManager* pictureManager_;
00361 
00362 private:
00363     // コピーコンストラクタの隠蔽
00364     TextSceneSaver(const TextSceneSaver& copy);
00365 
00366     // 代入コピーの隠蔽
00367     void operator =(const TextSceneSaver& copy);
00368 
00369 };
00370 
00371 //------------------------------------------------------------------------------
00372 } // End of namespace Lamp
00373 #endif // End of TEXT_SCENE_SAVER_H_
00374 //------------------------------------------------------------------------------

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