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

TextSceneLoader.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_LOADER_H_
00026 #define TEXT_SCENE_LOADER_H_
00027 
00028 namespace Lamp{
00029 
00030 class TextReader;
00031 class TargaLoader;
00032 class StreamTokenizer;
00033 class Scene;
00034 class SceneNodeManager;
00035 class SceneNode;
00036 class LightManager;
00037 class Light;
00038 class ModelManager;
00039 class CharacterModel;
00040 class MeshManager;
00041 class MeshDataManager;
00042 class MeshData;
00043 class MaterialManager;
00044 class Material;
00045 class TextureManager;
00046 class PictureManager;
00047 class Picture;
00048 
00049 //------------------------------------------------------------------------------
00050 /**
00051  * テキストシーンローダ
00052  */
00053 class TextSceneLoader{
00054 public:
00055     /**
00056      * コンストラクタ
00057      */
00058     TextSceneLoader();
00059 
00060     /**
00061      * デストラクタ
00062      */
00063     virtual ~TextSceneLoader();
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 textReader テキストリーダ
00084      * @param scene ロード先シーン
00085      * @param basePath ベースパス
00086      */
00087     virtual void load(TextReader* textReader, Scene* scene,
00088         const String& basePath = "");
00089 
00090     /**
00091      * ロード
00092      * @param textReader テキストリーダ
00093      * @param scene ロード先シーン
00094      * @param rootNode ロード先ルートノード
00095      * @param basePath ベースパス
00096      */
00097     virtual void load(TextReader* textReader, 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      */
00120     virtual void readSceneNodeList();
00121 
00122     /**
00123      * シーンノードの読み込み
00124      * @param name 名前
00125      */
00126     virtual void readSceneNode(const String& name);
00127 
00128     /**
00129      * レベルオブディティールシーンノードの読み込み
00130      * @param name 名前
00131      */
00132     virtual void readLODSceneNode(const String& name);
00133 
00134     //--------------------------------------------------------------------------
00135     // ライト
00136     //--------------------------------------------------------------------------
00137     /**
00138      * ライトリストの読み込み
00139      */
00140     virtual void readLightList();
00141 
00142     /**
00143      * ライトの読み込み
00144      * @param light ライト
00145      */
00146     virtual void readLight(Light* light);
00147 
00148     /**
00149      * アンビエントライトの読み込み
00150      * @param name 名前
00151      */
00152     virtual void readAmbientLight(const String& name);
00153 
00154     /**
00155      * ディレクショナルライトの読み込み
00156      * @param name 名前
00157      */
00158     virtual void readDirectionalLight(const String& name);
00159 
00160     /**
00161      * ポイントライトの読み込み
00162      * @param name 名前
00163      */
00164     virtual void readPointLight(const String& name);
00165 
00166     //--------------------------------------------------------------------------
00167     // モデル
00168     //--------------------------------------------------------------------------
00169     /**
00170      * モデルリストの読み込み
00171      */
00172     virtual void readModelList();
00173 
00174     /**
00175      * 標準モデルの読み込み
00176      * @param name 名前
00177      */
00178     virtual void readStandardModel(const String& name);
00179 
00180     /**
00181      * キャラクタモデルの読み込み
00182      * @param name 名前
00183      */
00184     virtual void readCharacterModel(const String& name);
00185 
00186     /**
00187      * ボーンの読み込み
00188      * @param model 読込先モデル
00189      * @param name 名前
00190      */
00191     virtual void readBone(CharacterModel* model, const String& name);
00192 
00193     //--------------------------------------------------------------------------
00194     // メッシュ
00195     //--------------------------------------------------------------------------
00196     /**
00197      * メッシュリストの読み込み
00198      */
00199     virtual void readMeshList();
00200 
00201     /**
00202      * 剛体メッシュの読み込み
00203      * @param name 名前
00204      */
00205     virtual void readRigidMesh(const String& name);
00206 
00207     /**
00208      * キャラクタメッシュの読み込み
00209      * @param name 名前
00210      */
00211     virtual void readCharacterMesh(const String& name);
00212 
00213     //--------------------------------------------------------------------------
00214     // メッシュデータ
00215     //--------------------------------------------------------------------------
00216     /**
00217      * メッシュデータリストの読み込み
00218      */
00219     virtual void readMeshDataList();
00220 
00221     /**
00222      * メッシュデータの読み込み
00223      * @param name 名前
00224      */
00225     virtual void readMeshData(const String& name);
00226 
00227     //--------------------------------------------------------------------------
00228     // マテリアル
00229     //--------------------------------------------------------------------------
00230     /**
00231      * マテリアルリストの読み込み
00232      */
00233     virtual void readMaterialList();
00234 
00235     /**
00236      * マテリアルの読み込み
00237      * @param material マテリアル
00238      */
00239     virtual void readMaterial(Material* material);
00240 
00241     /**
00242      * 基本マテリアルの読み込み
00243      * @param name 名前
00244      */
00245     virtual void readBasicMaterial(const String& name);
00246 
00247     //--------------------------------------------------------------------------
00248     // テクスチャ
00249     //--------------------------------------------------------------------------
00250     /**
00251      * テクスチャリストの読み込み
00252      */
00253     virtual void readTextureList();
00254 
00255     /**
00256      * サーフェーステクスチャの読み込み
00257      * @param name 名前
00258      */
00259     virtual void readSurfaceTexture(const String& name);
00260 
00261     //--------------------------------------------------------------------------
00262     // ピクチャ
00263     //--------------------------------------------------------------------------
00264     /**
00265      * ピクチャリストの読み込み
00266      */
00267     virtual void readPictureList();
00268 
00269     /**
00270      * RGB8ビットピクチャの読み込み
00271      * @param name 名前
00272      * @param loader Targaローダ
00273      * @return 読み込んだピクチャ
00274      */
00275     virtual Picture* readPictureRGB8(const String& name, TargaLoader& loader);
00276 
00277     /**
00278      * RGBA8ビットピクチャの読み込み
00279      * @param name 名前
00280      * @param loader Targaローダ
00281      * @return 読み込んだピクチャ
00282      */
00283     virtual Picture* readPictureRGBA8(const String& name, TargaLoader& loader);
00284 
00285     //--------------------------------------------------------------------------
00286     // シーンノードリンク
00287     //--------------------------------------------------------------------------
00288     /**
00289      * シーンノードリンクリストの読み込み
00290      */
00291     virtual void readSceneNodeLinkList();
00292 
00293     /**
00294      * シーンノードリンクの読み込み
00295      * @param name 名前
00296      */
00297     virtual void readSceneNodeLink(const String& name);
00298 
00299     //--------------------------------------------------------------------------
00300     // モデルリンク
00301     //--------------------------------------------------------------------------
00302     /**
00303      * モデルリンクリストの読み込み
00304      */
00305     virtual void readModelLinkList();
00306 
00307     /**
00308      * モデルリンクの読み込み
00309      * @param name 名前
00310      */
00311     virtual void readModelLink(const String& name);
00312 
00313     //--------------------------------------------------------------------------
00314     // メッシュリンク
00315     //--------------------------------------------------------------------------
00316     /**
00317      * メッシュリンクリストの読み込み
00318      */
00319     virtual void readMeshLinkList();
00320 
00321     /**
00322      * メッシュリンクの読み込み
00323      * @param name 名前
00324      */
00325     virtual void readMeshLink(const String& name);
00326 
00327     //--------------------------------------------------------------------------
00328     // マテリアルリンク
00329     //--------------------------------------------------------------------------
00330     /**
00331      * マテリアルリンクリストの読み込み
00332      */
00333     virtual void readMaterialLinkList();
00334 
00335     /**
00336      * 基本マテリアルリンクの読み込み
00337      * @param name 名前
00338      */
00339     virtual void readBasicMaterialLink(const String& name);
00340 
00341     //--------------------------------------------------------------------------
00342     // テクスチャリンク
00343     //--------------------------------------------------------------------------
00344     /**
00345      * テクスチャリンクリストの読み込み
00346      */
00347     virtual void readTextureLinkList();
00348 
00349     /**
00350      * テクスチャリンクの読み込み
00351      * @param name 名前
00352      */
00353     virtual void readTextureLink(const String& name);
00354 
00355     //--------------------------------------------------------------------------
00356     // 値の読み込み
00357     //--------------------------------------------------------------------------
00358     /**
00359      * bool値の読み込み
00360      * @return bool値
00361      */
00362     virtual bool readBool();
00363 
00364     /**
00365      * u_char値の読み込み
00366      * @return u_char値
00367      */
00368     virtual u_char readUChar();
00369 
00370     /**
00371      * u_short値の読み込み
00372      * @return u_short値
00373      */
00374     virtual u_short readUShort();
00375 
00376     /**
00377      * int値の読み込み
00378      * @return int値
00379      */
00380     virtual int readInt();
00381 
00382     /**
00383      * u_int値の読み込み
00384      * @return u_int値
00385      */
00386     virtual u_int readUInt();
00387 
00388     /**
00389      * float値の読み込み
00390      * @return float値
00391      */
00392     virtual float readFloat();
00393 
00394     /**
00395      * Vector3値の読み込み
00396      * @return Vector3値
00397      */
00398     virtual Vector3 readVector3();
00399 
00400     /**
00401      * Matrix34値の読み込み
00402      * @return Matrix34値
00403      */
00404     virtual Matrix34 readMatrix34();
00405 
00406     /**
00407      * 三要素整数カラー値の読み込み
00408      * @return 三要素整数カラー値
00409      */
00410     virtual Color3c readColor3c();
00411 
00412     /**
00413      * 四要素整数カラー値の読み込み
00414      * @return 四要素整数カラー値
00415      */
00416     virtual Color4c readColor4c();
00417 
00418     /**
00419      * 三要素実数カラー値の読み込み
00420      * @return 三要素実数カラー値
00421      */
00422     virtual Color3f readColor3f();
00423 
00424     /**
00425      * 四要素実数カラー値の読み込み
00426      * @return 四要素実数カラー値
00427      */
00428     virtual Color4f readColor4f();
00429 
00430     /**
00431      * 二次元テクスチャ座標値の読み込み
00432      * @return 二次元テクスチャ座標値
00433      */
00434     virtual TexCoord2 readTexCoord2();
00435 
00436     /**
00437      * 軸沿いボックスの読み込み
00438      * @return 軸沿いボックス
00439      */
00440     virtual AxisAlignedBox readAxisAlignedBox();
00441 
00442     /**
00443      * 球の読み込み
00444      * @return 球
00445      */
00446     virtual Sphere readSphere();
00447 
00448     //--------------------------------------------------------------------------
00449     // ユーティリティ
00450     //--------------------------------------------------------------------------
00451     /**
00452      * トークンの読み込み
00453      * @param caller 呼び出し元
00454      */
00455     virtual String readToken(const String& caller);
00456 
00457     /**
00458      * 指定ワードの読み飛ばし
00459      * @param word 読み飛ばすワード
00460      */
00461     virtual void skipWord(const String& word);
00462 
00463     /**
00464      * チャンクを開く
00465      */
00466     virtual void openChunk(){ skipWord("{"); }
00467 
00468     /**
00469      * チャンクを閉じる
00470      */
00471     virtual void closeChunk(){ skipWord("}"); }
00472 
00473     /**
00474      * チャンクの読み飛ばし
00475      */
00476     virtual void skipChunk();
00477 
00478     //--------------------------------------------------------------------------
00479     // メンバ
00480     //--------------------------------------------------------------------------
00481     /// ベースパス
00482     String basePath_;
00483     /// トークナイザ
00484     StreamTokenizer* tokenizer_;
00485     /// シーン
00486     Scene* scene_;
00487     /// ルートノード
00488     SceneNode* rootNode_;
00489     /// シーンノードマネージャ
00490     SceneNodeManager* sceneNodeManager_;
00491     /// ライトマネージャ
00492     LightManager* lightManager_;
00493     /// モデルマネージャ
00494     ModelManager* modelManager_;
00495     /// メッシュマネージャ
00496     MeshManager* meshManager_;
00497     /// メッシュデータマネージャ
00498     MeshDataManager* meshDataManager_;
00499     /// マテリアルマネージャ
00500     MaterialManager* materialManager_;
00501     /// テクスチャマネージャ
00502     TextureManager* textureManager_;
00503     /// ピクチャマネージャ
00504     PictureManager* pictureManager_;
00505 
00506 private:
00507     // コピーコンストラクタの隠蔽
00508     TextSceneLoader(const TextSceneLoader& copy);
00509 
00510     // 代入コピーの隠蔽
00511     void operator =(const TextSceneLoader& copy);
00512 
00513 };
00514 
00515 //------------------------------------------------------------------------------
00516 } // End of namespace Lamp
00517 #endif // End of TEXT_SCENE_LOADER_H_
00518 //------------------------------------------------------------------------------

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