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

TextCollisionLoader.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_COLLISION_LOADER_H_
00026 #define TEXT_COLLISION_LOADER_H_
00027 
00028 namespace Lamp{
00029 
00030 class TextReader;
00031 class StreamTokenizer;
00032 class CollisionScene;
00033 class CollisionNode;
00034 
00035 //------------------------------------------------------------------------------
00036 /**
00037  * テキストコリジョンローダ
00038  */
00039 class TextCollisionLoader{
00040 public:
00041     /**
00042      * コンストラクタ
00043      */
00044     TextCollisionLoader();
00045 
00046     /**
00047      * デストラクタ
00048      */
00049     virtual ~TextCollisionLoader();
00050 
00051     //--------------------------------------------------------------------------
00052     /**
00053      * ロード
00054      * @param filePath ファイルパス
00055      * @param scene ロード先シーン
00056      */
00057     virtual void load(const String& filePath, CollisionScene* scene);
00058 
00059     /**
00060      * ロード
00061      * @param filePath ファイルパス
00062      * @param scene ロード先シーン
00063      * @param node ロード先ノード
00064      */
00065     virtual void load(const String& filePath, CollisionScene* scene,
00066         CollisionNode* node);
00067 
00068     /**
00069      * ロード
00070      * @param textReader テキストリーダ
00071      * @param scene ロード先シーン
00072      */
00073     virtual void load(TextReader* textReader, CollisionScene* scene);
00074 
00075     /**
00076      * ロード
00077      * @param textReader テキストリーダ
00078      * @param scene ロード先シーン
00079      * @param node ロード先ノード
00080      */
00081     virtual void load(TextReader* textReader, CollisionScene* scene,
00082         CollisionNode* node);
00083 
00084 protected:
00085     //--------------------------------------------------------------------------
00086     /**
00087      * ヘッダの読み込み
00088      */
00089     virtual void readHeader();
00090 
00091     //--------------------------------------------------------------------------
00092     // コリジョンノード
00093     //--------------------------------------------------------------------------
00094     /**
00095      * コリジョンノードリストの読み込み
00096      */
00097     virtual void readCollisionNodeList();
00098 
00099     /**
00100      * コリジョンノードの読み込み
00101      * @param name 名前
00102      */
00103     virtual void readCollisionNode(const String& name);
00104 
00105     //--------------------------------------------------------------------------
00106     // コリジョンリーフ
00107     //--------------------------------------------------------------------------
00108     /**
00109      * コリジョンリーフリストの読み込み
00110      */
00111     virtual void readCollisionLeafList();
00112 
00113     /**
00114      * 静的球コリジョンの読み込み
00115      * @param name 名前
00116      */
00117     virtual void readStaticSphere(const String& name);
00118 
00119     /**
00120      * 静的変形メッシュコリジョンの読み込み
00121      * @param name 名前
00122      */
00123     virtual void readStaticDeformedMesh(const String& name);
00124 
00125     //--------------------------------------------------------------------------
00126     // コリジョンリンク
00127     //--------------------------------------------------------------------------
00128     /**
00129      * コリジョンリンクリストの読み込み
00130      */
00131     virtual void readCollisionLinkList();
00132 
00133     /**
00134      * コリジョンリンクの読み込み
00135      * @param name 名前
00136      */
00137     virtual void readCollisionLink(const String& name);
00138 
00139     //--------------------------------------------------------------------------
00140     // 値の読み込み
00141     //--------------------------------------------------------------------------
00142     /**
00143      * bool値の読み込み
00144      * @return bool値
00145      */
00146     virtual bool readBool();
00147 
00148     /**
00149      * int値の読み込み
00150      * @return int値
00151      */
00152     virtual int readInt();
00153 
00154     /**
00155      * u_int値の読み込み
00156      * @return u_int値
00157      */
00158     virtual u_int readUInt();
00159 
00160     /**
00161      * float値の読み込み
00162      * @return float値
00163      */
00164     virtual float readFloat();
00165 
00166     /**
00167      * Vector3値の読み込み
00168      * @return Vector3値
00169      */
00170     virtual Vector3 readVector3();
00171 
00172     /**
00173      * 軸沿いボックスの読み込み
00174      * @return 軸沿いボックス
00175      */
00176     virtual AxisAlignedBox readAxisAlignedBox();
00177 
00178     /**
00179      * 球の読み込み
00180      * @return 球
00181      */
00182     virtual Sphere readSphere();
00183 
00184     /**
00185      * 三角の読み込み
00186      * @return 三角
00187      */
00188     virtual Triangle readTriangle();
00189 
00190     //--------------------------------------------------------------------------
00191     // ユーティリティ
00192     //--------------------------------------------------------------------------
00193     /**
00194      * トークンの読み込み
00195      * @param caller 呼び出し元
00196      */
00197     virtual String readToken(const String& caller);
00198 
00199     /**
00200      * 指定ワードの読み飛ばし
00201      * @param word 読み飛ばすワード
00202      */
00203     virtual void skipWord(const String& word);
00204 
00205     /**
00206      * チャンクを開く
00207      */
00208     virtual void openChunk(){ skipWord("{"); }
00209 
00210     /**
00211      * チャンクを閉じる
00212      */
00213     virtual void closeChunk(){ skipWord("}"); }
00214 
00215     /**
00216      * チャンクの読み飛ばし
00217      */
00218     virtual void skipChunk();
00219 
00220     //--------------------------------------------------------------------------
00221     // メンバ
00222     //--------------------------------------------------------------------------
00223     /// トークナイザ
00224     StreamTokenizer* tokenizer_;
00225     /// シーン
00226     CollisionScene* scene_;
00227     /// ルートノード
00228     CollisionNode* rootNode_;
00229 
00230 private:
00231     //--------------------------------------------------------------------------
00232     // コピーコンストラクタの隠蔽
00233     TextCollisionLoader(const TextCollisionLoader& copy);
00234 
00235     // 代入コピーの隠蔽
00236     void operator =(const TextCollisionLoader& copy);
00237 
00238 };
00239 
00240 //------------------------------------------------------------------------------
00241 } // End of namespace Lamp
00242 #endif // End of TEXT_COLLISION_LOADER_H_
00243 //------------------------------------------------------------------------------

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