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

BinarySceneSaver.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 BINARY_SCENE_SAVER_H_
00026 #define BINARY_SCENE_SAVER_H_
00027 
00028 namespace Lamp{
00029 
00030 class BinaryWriter;
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 BinarySceneSaver{
00067 public:
00068     /**
00069      * コンストラクタ
00070      */
00071     BinarySceneSaver();
00072 
00073     /**
00074      * デストラクタ
00075      */
00076     virtual ~BinarySceneSaver();
00077 
00078     /**
00079      * セーブ
00080      * @param filePath ファイルパス
00081      * @param scene セーブするシーン
00082      */
00083     virtual void save(const String& filePath, Scene* scene);
00084 
00085     /**
00086      * セーブ
00087      * @param binaryWriter バイナリライタ
00088      * @param scene セーブするシーン
00089      * @param basePath ベースパス
00090      */
00091     virtual void save(BinaryWriter* binaryWriter, 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 linkCount リンク数
00109      */
00110     virtual void writeLink(int linkCount);
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 model 書き出すモデル
00202      * @param bone 書き出すボーン
00203      */
00204     virtual void writeBoneLink(CharacterModel* model, Bone* bone);
00205 
00206     //--------------------------------------------------------------------------
00207     // メッシュ
00208     //--------------------------------------------------------------------------
00209     /**
00210      * メッシュリストの書き出し
00211      */
00212     virtual void writeMeshList();
00213 
00214     /**
00215      * 剛体メッシュの書き出し
00216      * @param mesh 書き出すメッシュ
00217      */
00218     virtual void writeRigidMesh(RigidMesh* mesh);
00219 
00220     /**
00221      * キャラクタメッシュの書き出し
00222      * @param mesh 書き出すメッシュ
00223      */
00224     virtual void writeCharacterMesh(CharacterMesh* mesh);
00225 
00226     //--------------------------------------------------------------------------
00227     // メッシュデータ
00228     //--------------------------------------------------------------------------
00229     /**
00230      * メッシュデータリストの書き出し
00231      */
00232     virtual void writeMeshDataList();
00233 
00234     /**
00235      * メッシュデータの書き出し
00236      * @param meshData 書き出すメッシュデータ
00237      */
00238     virtual void writeMeshData(MeshData* meshData);
00239 
00240     //--------------------------------------------------------------------------
00241     // マテリアル
00242     //--------------------------------------------------------------------------
00243     /**
00244      * マテリアルリストの書き出し
00245      */
00246     virtual void writeMaterialList();
00247 
00248     /**
00249      * マテリアルの書き出し
00250      * @param material 書き出すマテリアル
00251      */
00252     virtual void writeMaterial(const Material* material);
00253 
00254     /**
00255      * 基本マテリアルの書き出し
00256      * @param material 書き出すマテリアル
00257      */
00258     virtual void writeBasicMaterial(const BasicMaterial* material);
00259 
00260     //--------------------------------------------------------------------------
00261     // テクスチャ
00262     //--------------------------------------------------------------------------
00263     /**
00264      * テクスチャリストの書き出し
00265      */
00266     virtual void writeTextureList();
00267 
00268     /**
00269      * サーフェーステクスチャの書き出し
00270      * @param texture 書き出すテクスチャ
00271      */
00272     virtual void writeSurfaceTexture(const SurfaceTexture* texture);
00273 
00274     //--------------------------------------------------------------------------
00275     // ピクチャ
00276     //--------------------------------------------------------------------------
00277     /**
00278      * ピクチャの書き出し
00279      * @param picture 書き出すピクチャ
00280      */
00281     virtual void writePicture(const Picture* picture);
00282 
00283     //--------------------------------------------------------------------------
00284     // リンク
00285     //--------------------------------------------------------------------------
00286     /**
00287      * シーンノードリンクの書き出し
00288      * @param sceneNode 書き出すシーンノード
00289      */
00290     virtual void writeSceneNodeLink(SceneNode* sceneNode);
00291 
00292     /**
00293      * モデルリンクの書き出し
00294      * @param model 書き出すモデル
00295      */
00296     virtual void writeModelLink(const Model* model);
00297 
00298     /**
00299      * メッシュリンクの書き出し
00300      * @param mesh 書き出すメッシュ
00301      */
00302     virtual void writeMeshLink(const Mesh* mesh);
00303 
00304     /**
00305      * マテリアルリンクリストの書き出し
00306      */
00307     virtual void writeMaterialLinkList();
00308 
00309     /**
00310      * 基本マテリアルリンクの書き出し
00311      * @param material 書き出すマテリアル
00312      */
00313     virtual void writeBasicMaterialLink(const BasicMaterial* material);
00314 
00315     /**
00316      * テクスチャリンクの書き出し
00317      * @param texture 書き出すテクスチャ
00318      */
00319     virtual void writeTextureLink(const Texture* texture);
00320 
00321     //--------------------------------------------------------------------------
00322     // 値の書き出し
00323     //--------------------------------------------------------------------------
00324     /**
00325      * 文字列の書き出し
00326      * @param string 文字列
00327      */
00328     virtual void writeString(const String& string);
00329 
00330     /**
00331      * 三次元ベクトルの書き出し
00332      * @param vector 三次元ベクトル
00333      */
00334     virtual void writeVector3(const Vector3& vector);
00335 
00336     /**
00337      * 3×4行列の書き出し
00338      * @return 3×4行列
00339      */
00340     virtual void writeMatrix34(const Matrix34& matrix);
00341 
00342     /**
00343      * 四要素整数カラー値の書き出し
00344      * @param color 四要素整数カラー値
00345      */
00346     virtual void writeColor4c(const Color4c& color);
00347 
00348     /**
00349      * 三要素実数カラー値の書き出し
00350      * @param color 三要素実数カラー値
00351      */
00352     virtual void writeColor3f(const Color3f& color);
00353 
00354     /**
00355      * 四要素実数カラー値の書き出し
00356      * @param color 四要素実数カラー値
00357      */
00358     virtual void writeColor4f(const Color4f& color);
00359 
00360     /**
00361      * 二次元テクスチャ座標値の書き出し
00362      * @param uv 二次元テクスチャ座標値
00363      */
00364     virtual void writeTexCoord2(const TexCoord2& uv);
00365 
00366     /**
00367      * 軸沿いボックスの書き出し
00368      * @param box 軸沿いボックス
00369      */
00370     virtual void writeAxisAlignedBox(const AxisAlignedBox& box);
00371 
00372     /**
00373      * 球の書き出し
00374      * @param sphere 球
00375      */
00376     virtual void writeSphere(const Sphere& sphere);
00377 
00378     //--------------------------------------------------------------------------
00379     // ユーティリティ
00380     //--------------------------------------------------------------------------
00381     /**
00382      * アライメントを取る
00383      */
00384     virtual void align();
00385 
00386     /**
00387      * IDの書き出し
00388      * @param id 書き出すID
00389      */
00390     virtual void writeID(const String& id);
00391 
00392     /**
00393      * ブロックの開始
00394      * @param blockName ブロック名
00395      * @return プロック開始位置
00396      */
00397     virtual int startBlock(const String& blockName);
00398 
00399     /**
00400      * ブロックの終了
00401      * @param blockStartAddress ブロック開始位置
00402      */
00403     virtual void endBlock(int blockStartAddress);
00404 
00405     //--------------------------------------------------------------------------
00406     /// ライタ
00407     BinaryWriter* writer_;
00408     /// ベースパス
00409     String basePath_;
00410     /// シーン
00411     Scene* scene_;
00412     /// シーンノードマネージャ
00413     SceneNodeManager* sceneNodeManager_;
00414     /// ライトマネージャ
00415     LightManager* lightManager_;
00416     /// モデルマネージャ
00417     ModelManager* modelManager_;
00418     /// メッシュマネージャ
00419     MeshManager* meshManager_;
00420     /// メッシュデータマネージャ
00421     MeshDataManager* meshDataManager_;
00422     /// マテリアルマネージャ
00423     MaterialManager* materialManager_;
00424     /// テクスチャマネージャ
00425     TextureManager* textureManager_;
00426     /// ピクチャマネージャ
00427     PictureManager* pictureManager_;
00428 
00429 private:
00430     // コピーコンストラクタの隠蔽
00431     BinarySceneSaver(const BinarySceneSaver& copy);
00432 
00433     // 代入コピーの隠蔽
00434     void operator =(const BinarySceneSaver& copy);
00435 
00436 };
00437 
00438 //------------------------------------------------------------------------------
00439 } // End of namespace Lamp
00440 #endif // End of BINARY_SCENE_SAVER_H_
00441 //------------------------------------------------------------------------------

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