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

BinarySceneLoader.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_LOADER_H_
00026 #define BINARY_SCENE_LOADER_H_
00027 
00028 namespace Lamp{
00029 
00030 class BinaryReader;
00031 class TargaLoader;
00032 class Scene;
00033 class SceneNodeManager;
00034 class SceneNode;
00035 class LightManager;
00036 class Light;
00037 class ModelManager;
00038 class CharacterModel;
00039 class MeshManager;
00040 class MeshDataManager;
00041 class MeshData;
00042 class MaterialManager;
00043 class Material;
00044 class BasicMaterial;
00045 class TextureManager;
00046 class PictureManager;
00047 class Picture;
00048 
00049 //------------------------------------------------------------------------------
00050 /**
00051  * バイナリシーンローダ
00052  */
00053 class BinarySceneLoader{
00054 public:
00055     /**
00056      * コンストラクタ
00057      */
00058     BinarySceneLoader();
00059 
00060     /**
00061      * デストラクタ
00062      */
00063     virtual ~BinarySceneLoader();
00064 
00065     /**
00066      * ロード
00067      * @param filePath ファイルパス
00068      * @param scene ロード先シーン
00069      */
00070     virtual void load(const String& filePath, Scene* scene);
00071 
00072     /**
00073      * ロード
00074      * @param filePath ファイルパス
00075      * @param scene ロード先シーン
00076      * @param rootNode ロード先ルートノード
00077      */
00078     virtual void load(const String& filePath, Scene* scene,
00079         SceneNode* rootNode);
00080 
00081     /**
00082      * ロード
00083      * @param binaryReader バイナリリーダ
00084      * @param scene ロード先シーン
00085      * @param basePath ベースパス
00086      */
00087     virtual void load(BinaryReader* binaryReader, Scene* scene,
00088         const String& basePath = "");
00089 
00090     /**
00091      * ロード
00092      * @param binaryReader バイナリリーダ
00093      * @param scene ロード先シーン
00094      * @param rootNode ロード先ルートノード
00095      * @param basePath ベースパス
00096      */
00097     virtual void load(BinaryReader* binaryReader, Scene* scene,
00098         SceneNode* rootNode, const String& basePath = "");
00099 
00100 protected:
00101     /**
00102      * ヘッダの読み込み
00103      */
00104     virtual void readHeader();
00105 
00106     //--------------------------------------------------------------------------
00107     // フォグ
00108     //--------------------------------------------------------------------------
00109     /**
00110      * フォグの読み込み
00111      */
00112     virtual void readFog();
00113 
00114     //--------------------------------------------------------------------------
00115     // シーンノード
00116     //--------------------------------------------------------------------------
00117     /**
00118      * シーンノードリストの読み込み
00119      * @param listSize リストサイズ
00120      */
00121     virtual void readSceneNodeList(int listSize);
00122 
00123     /**
00124      * シーンノードの読み込み
00125      */
00126     virtual void readSceneNode();
00127 
00128     /**
00129      * レベルオブディティールシーンノードの読み込み
00130      */
00131     virtual void readLODSceneNode();
00132 
00133     //--------------------------------------------------------------------------
00134     // ライト
00135     //--------------------------------------------------------------------------
00136     /**
00137      * ライトリストの読み込み
00138      * @param listSize リストサイズ
00139      */
00140     virtual void readLightList(int listSize);
00141 
00142     /**
00143      * ライトの読み込み
00144      * @param light ライト
00145      */
00146     virtual void readLight(Light* light);
00147 
00148     /**
00149      * アンビエントライトの読み込み
00150      */
00151     virtual void readAmbientLight();
00152 
00153     /**
00154      * ディレクショナルライトの読み込み
00155      */
00156     virtual void readDirectionalLight();
00157 
00158     /**
00159      * ポイントライトの読み込み
00160      */
00161     virtual void readPointLight();
00162 
00163     //--------------------------------------------------------------------------
00164     // モデル
00165     //--------------------------------------------------------------------------
00166     /**
00167      * モデルリストの読み込み
00168      * @param listSize リストサイズ
00169      */
00170     virtual void readModelList(int listSize);
00171 
00172     /**
00173      * 標準モデルの読み込み
00174      */
00175     virtual void readStandardModel();
00176 
00177     /**
00178      * キャラクタモデルの読み込み
00179      */
00180     virtual void readCharacterModel();
00181 
00182     /**
00183      * ボーンの読み込み
00184      * @param model 読込先モデル
00185      */
00186     virtual void readBone(CharacterModel* model);
00187 
00188     //--------------------------------------------------------------------------
00189     // メッシュ
00190     //--------------------------------------------------------------------------
00191     /**
00192      * メッシュリストの読み込み
00193      * @param listSize リストサイズ
00194      */
00195     virtual void readMeshList(int listSize);
00196 
00197     /**
00198      * 剛体メッシュの読み込み
00199      */
00200     virtual void readRigidMesh();
00201 
00202     /**
00203      * キャラクタメッシュの読み込み
00204      */
00205     virtual void readCharacterMesh();
00206 
00207     //--------------------------------------------------------------------------
00208     // メッシュデータ
00209     //--------------------------------------------------------------------------
00210     /**
00211      * メッシュデータリストの読み込み
00212      * @param listSize リストサイズ
00213      */
00214     virtual void readMeshDataList(int listSize);
00215 
00216     /**
00217      * メッシュデータの読み込み
00218      */
00219     virtual void readMeshData();
00220 
00221     //--------------------------------------------------------------------------
00222     // マテリアル
00223     //--------------------------------------------------------------------------
00224     /**
00225      * マテリアルリストの読み込み
00226      * @param listSize リストサイズ
00227      */
00228     virtual void readMaterialList(int listSize);
00229 
00230     /**
00231      * マテリアルの読み込み
00232      * @param material マテリアル
00233      */
00234     virtual void readMaterial(Material* material);
00235 
00236     /**
00237      * 基本マテリアルの読み込み
00238      */
00239     virtual void readBasicMaterial();
00240 
00241     //--------------------------------------------------------------------------
00242     // テクスチャ
00243     //--------------------------------------------------------------------------
00244     /**
00245      * テクスチャリストの読み込み
00246      * @param listSize リストサイズ
00247      */
00248     virtual void readTextureList(int listSize);
00249 
00250     /**
00251      * サーフェーステクスチャの読み込み
00252      */
00253     virtual void readSurfaceTexture();
00254 
00255     //--------------------------------------------------------------------------
00256     // ピクチャ
00257     //--------------------------------------------------------------------------
00258     /**
00259      * ピクチャリストの読み込み
00260      * @param listSize リストサイズ
00261      */
00262     virtual void readPictureList(int listSize);
00263 
00264     /**
00265      * RGB8ビットピクチャの読み込み
00266      * @param name 名前
00267      * @param loader Targaローダ
00268      * @return 読み込んだピクチャ
00269      */
00270     virtual Picture* readPictureRGB8(const String& name, TargaLoader& loader);
00271 
00272     /**
00273      * RGBA8ビットピクチャの読み込み
00274      * @param name 名前
00275      * @param loader Targaローダ
00276      * @return 読み込んだピクチャ
00277      */
00278     virtual Picture* readPictureRGBA8(const String& name, TargaLoader& loader);
00279 
00280     //--------------------------------------------------------------------------
00281     // シーンノードリンク
00282     //--------------------------------------------------------------------------
00283     /**
00284      * シーンノードリンクリストの読み込み
00285      * @param listSize リストサイズ
00286      */
00287     virtual void readSceneNodeLinkList(int listSize);
00288 
00289     /**
00290      * シーンノードリンクの読み込み
00291      */
00292     virtual void readSceneNodeLink();
00293 
00294     //--------------------------------------------------------------------------
00295     // モデルリンク
00296     //--------------------------------------------------------------------------
00297     /**
00298      * モデルリンクリストの読み込み
00299      * @param listSize リストサイズ
00300      */
00301     virtual void readModelLinkList(int listSize);
00302 
00303     /**
00304      * モデルリンクの読み込み
00305      */
00306     virtual void readModelLink();
00307 
00308     //--------------------------------------------------------------------------
00309     // メッシュリンク
00310     //--------------------------------------------------------------------------
00311     /**
00312      * メッシュリンクリストの読み込み
00313      * @param listSize リストサイズ
00314      */
00315     virtual void readMeshLinkList(int listSize);
00316 
00317     /**
00318      * メッシュリンクの読み込み
00319      */
00320     virtual void readMeshLink();
00321 
00322     //--------------------------------------------------------------------------
00323     // マテリアルリンク
00324     //--------------------------------------------------------------------------
00325     /**
00326      * マテリアルリンクリストの読み込み
00327      * @param listSize リストサイズ
00328      */
00329     virtual void readMaterialLinkList(int listSize);
00330 
00331     /**
00332      * 基本マテリアルリンクの読み込み
00333      */
00334     virtual void readBasicMaterialLink();
00335 
00336     //--------------------------------------------------------------------------
00337     // テクスチャリンク
00338     //--------------------------------------------------------------------------
00339     /**
00340      * テクスチャリンクリストの読み込み
00341      * @param listSize リストサイズ
00342      */
00343     virtual void readTextureLinkList(int listSize);
00344 
00345     /**
00346      * テクスチャリンクの読み込み
00347      */
00348     virtual void readTextureLink();
00349 
00350     //--------------------------------------------------------------------------
00351     // 値の読み込み
00352     //--------------------------------------------------------------------------
00353     /**
00354      * 文字列の読み込み
00355      * @return 文字列
00356      */
00357     virtual String readString();
00358 
00359     /**
00360      * 三次元ベクトルの読み込み
00361      * @return 三次元ベクトル
00362      */
00363     virtual Vector3 readVector3();
00364 
00365     /**
00366      * 3×4行列の読み込み
00367      * @return 3×4行列
00368      */
00369     virtual Matrix34 readMatrix34();
00370 
00371     /**
00372      * 三要素整数カラー値の読み込み
00373      * @return 三要素整数カラー値
00374      */
00375     virtual Color3c readColor3c();
00376 
00377     /**
00378      * 四要素整数カラー値の読み込み
00379      * @return 四要素整数カラー値
00380      */
00381     virtual Color4c readColor4c();
00382 
00383     /**
00384      * 三要素実数カラー値の読み込み
00385      * @return 三要素実数カラー値
00386      */
00387     virtual Color3f readColor3f();
00388 
00389     /**
00390      * 四要素実数カラー値の読み込み
00391      * @return 四要素実数カラー値
00392      */
00393     virtual Color4f readColor4f();
00394 
00395     /**
00396      * 二次元テクスチャ座標値の読み込み
00397      * @return 二次元テクスチャ座標値
00398      */
00399     virtual TexCoord2 readTexCoord2();
00400 
00401     /**
00402      * 軸沿いボックスの読み込み
00403      * @return 軸沿いボックス
00404      */
00405     virtual AxisAlignedBox readAxisAlignedBox();
00406 
00407     /**
00408      * 球の読み込み
00409      * @return 球
00410      */
00411     virtual Sphere readSphere();
00412 
00413     //--------------------------------------------------------------------------
00414     // ユーティリティ
00415     //--------------------------------------------------------------------------
00416     /**
00417      * アライメントを取る
00418      */
00419     virtual void align();
00420 
00421     /**
00422      * IDの読み込み
00423      * @return ID
00424      */
00425     virtual String readID();
00426 
00427     //--------------------------------------------------------------------------
00428     // メンバ
00429     //--------------------------------------------------------------------------
00430     /// リーダ
00431     BinaryReader* reader_;
00432     /// 文字列バッファサイズ
00433     static const int stringBufferSize_ = 256;
00434     /// 文字列バッファ
00435     char stringBuffer_[stringBufferSize_];
00436     /// ベースパス
00437     String basePath_;
00438     /// シーン
00439     Scene* scene_;
00440     /// ルートノード
00441     SceneNode* rootNode_;
00442     /// シーンノードマネージャ
00443     SceneNodeManager* sceneNodeManager_;
00444     /// ライトマネージャ
00445     LightManager* lightManager_;
00446     /// モデルマネージャ
00447     ModelManager* modelManager_;
00448     /// メッシュマネージャ
00449     MeshManager* meshManager_;
00450     /// メッシュデータマネージャ
00451     MeshDataManager* meshDataManager_;
00452     /// マテリアルマネージャ
00453     MaterialManager* materialManager_;
00454     /// テクスチャマネージャ
00455     TextureManager* textureManager_;
00456     /// ピクチャマネージャ
00457     PictureManager* pictureManager_;
00458 
00459 private:
00460     // コピーコンストラクタの隠蔽
00461     BinarySceneLoader(const BinarySceneLoader& copy);
00462 
00463     // 代入コピーの隠蔽
00464     void operator =(const BinarySceneLoader& copy);
00465 
00466 };
00467 
00468 //------------------------------------------------------------------------------
00469 } // End of namespace Lamp
00470 #endif // End of BINARY_SCENE_LOADER_H_
00471 //------------------------------------------------------------------------------

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