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

BinaryAnimationSaver.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_ANIMATION_SAVER_H_
00026 #define BINARY_ANIMATION_SAVER_H_
00027 
00028 namespace Lamp{
00029 
00030 class BinaryWriter;
00031 class AnimationManager;
00032 class AnimationSet;
00033 class CameraAnimation;
00034 class CameraAnimationData;
00035 class SceneNodeAnimation;
00036 class SceneNodeAnimationData;
00037 class CharacterModelAnimation;
00038 class CharacterModelAnimationData;
00039 
00040 class VectorInterpolator;
00041 class VectorConstantInterpolator;
00042 class VectorArrayInterpolator;
00043 class VectorLinearInterpolator;
00044 class RotationInterpolator;
00045 class RotationConstantInterpolator;
00046 class EulerArrayInterpolator;
00047 class QuaternionArrayInterpolator;
00048 class QuaternionLinearInterpolator;
00049 
00050 //------------------------------------------------------------------------------
00051 /**
00052  * バイナリアニメーションセーバ
00053  */
00054 class BinaryAnimationSaver{
00055 public:
00056     /**
00057      * コンストラクタ
00058      */
00059     BinaryAnimationSaver();
00060 
00061     /**
00062      * デストラクタ
00063      */
00064     virtual ~BinaryAnimationSaver();
00065 
00066     //--------------------------------------------------------------------------
00067     // セーブ
00068     //--------------------------------------------------------------------------
00069     /**
00070      * セーブ
00071      * @param filePath ファイルパス
00072      * @param manager セーブするアニメーションマネージャ
00073      */
00074     virtual void save(const String& filePath, AnimationManager* manager);
00075 
00076     /**
00077      * セーブ
00078      * @param binaryWriter バイナリライタ
00079      * @param manager セーブするアニメーションマネージャ
00080      */
00081     virtual void save(BinaryWriter* binaryWriter, AnimationManager* manager);
00082 
00083 protected:
00084     //--------------------------------------------------------------------------
00085     /**
00086      * ヘッダの書き出し
00087      */
00088     virtual void writeHeader();
00089 
00090     /**
00091      * オブジェクトのカウント
00092      * @return オブジェクト数
00093      */
00094     virtual int countObjects();
00095 
00096     /**
00097      * オブジェクトカウンタのクリア
00098      */
00099     virtual void clearObjectCount(){
00100         animationCount_ = animationDataCount_ = animationSetCount_ =
00101         cameraCount_ = cameraDataCount_ =
00102         sceneNodeCount_ = sceneNodeDataCount_ =
00103         characterModelCount_ = characterModelDataCount_ = 0;
00104     }
00105 
00106     //--------------------------------------------------------------------------
00107     // アニメーションリスト
00108     //--------------------------------------------------------------------------
00109     /**
00110      * アニメーションリストの書き出し
00111      */
00112     virtual void writeAnimationList();
00113 
00114     //--------------------------------------------------------------------------
00115     /**
00116      * アニメーションセットの書き出し
00117      * @param animation 書き出すアニメーションセット
00118      */
00119     virtual void writeAnimationSet(AnimationSet* animation);
00120 
00121     //--------------------------------------------------------------------------
00122     /**
00123      * カメラアニメーションの書き出し
00124      * @param animation 書き出すカメラアニメーション
00125      */
00126     virtual void writeCameraAnimation(CameraAnimation* animation);
00127 
00128     /**
00129      * カメラアニメーションデータの書き出し
00130      * @param data 書き出すカメラアニメーションデータ
00131      */
00132     virtual void writeCameraAnimationData(CameraAnimationData* data);
00133 
00134     //--------------------------------------------------------------------------
00135     /**
00136      * シーンノードアニメーションの書き出し
00137      * @param animation 書き出すシーンノードアニメーション
00138      */
00139     virtual void writeSceneNodeAnimation(SceneNodeAnimation* animation);
00140 
00141     /**
00142      * シーンノードアニメーションデータの書き出し
00143      * @param data 書き出すシーンノードアニメーションデータ
00144      */
00145     virtual void writeSceneNodeAnimationData(SceneNodeAnimationData* data);
00146 
00147     //--------------------------------------------------------------------------
00148     /**
00149      * キャラクタモデルアニメーションの書き出し
00150      * @param animation 書き出すキャラクタモデルアニメーション
00151      */
00152     virtual void writeCharacterModelAnimation(
00153         CharacterModelAnimation* animation);
00154 
00155     /**
00156      * キャラクタモデルアニメーションデータの書き出し
00157      * @param data 書き出すキャラクタモデルアニメーションデータ
00158      */
00159     virtual void writeCharacterModelAnimationData(
00160         CharacterModelAnimationData* data);
00161 
00162     //--------------------------------------------------------------------------
00163     // リンク
00164     //--------------------------------------------------------------------------
00165     /**
00166      * リンクの書き出し
00167      */
00168     virtual void writeLink();
00169 
00170     /**
00171      * アニメーションセットリンクの書き出し
00172      * @param animation リンクを書き出すアニメーションセット
00173      */
00174     virtual void writeAnimationSetLink(AnimationSet* animation);
00175 
00176     /**
00177      * カメラアニメーションリンクの書き出し
00178      * @param animation リンクを書き出すカメラアニメーション
00179      */
00180     virtual void writeCameraAnimationLink(CameraAnimation* animation);
00181 
00182     /**
00183      * シーンノードアニメーションリンクの書き出し
00184      * @param animation リンクを書き出すシーンノードアニメーション
00185      */
00186     virtual void writeSceneNodeAnimationLink(SceneNodeAnimation* animation);
00187 
00188     /**
00189      * キャラクタモデルアニメーションリンクの書き出し
00190      * @param animation リンクを書き出すキャラクタモデルアニメーション
00191      */
00192     virtual void writeCharacterModelAnimationLink(
00193         CharacterModelAnimation* animation);
00194 
00195     //--------------------------------------------------------------------------
00196     // 値の書き出し
00197     //--------------------------------------------------------------------------
00198     /**
00199      * 文字列の書き出し
00200      * @param string 文字列
00201      */
00202     virtual void writeString(const String& string);
00203 
00204     /**
00205      * 三次元ベクトルの書き出し
00206      * @param vector 三次元ベクトル
00207      */
00208     virtual void writeVector3(const Vector3& vector);
00209 
00210     /**
00211      * 四元数の書き出し
00212      * @param quaternion 四元数
00213      */
00214     virtual void writeQuaternion(const Quaternion& quaternion);
00215 
00216     //--------------------------------------------------------------------------
00217     // ベクトル補間
00218     //--------------------------------------------------------------------------
00219     /**
00220      * ベクトル補間の書き出し
00221      * @param interpolator ベクトル補間
00222      */
00223     virtual void writeVectorInterpolator(
00224         VectorInterpolator* interpolator);
00225 
00226     /**
00227      * ベクトル定数補間の書き出し
00228      * @param interpolator ベクトル定数補間
00229      */
00230     virtual void writeVectorConstantInterpolator(
00231         VectorConstantInterpolator* interpolator);
00232 
00233     /**
00234      * ベクトル配列補間の書き出し
00235      * @param interpolator ベクトル配列補間
00236      */
00237     virtual void writeVectorArrayInterpolator(
00238         VectorArrayInterpolator* interpolator);
00239 
00240     /**
00241      * ベクトル線形補間の書き出し
00242      * @param interpolator ベクトル線形補間
00243      */
00244     virtual void writeVectorLinearInterpolator(
00245         VectorLinearInterpolator* interpolator);
00246 
00247     //--------------------------------------------------------------------------
00248     // 回転補間
00249     //--------------------------------------------------------------------------
00250     /**
00251      * 回転補間の書き出し
00252      * @param interpolator 回転補間
00253      */
00254     virtual void writeRotationInterpolator(
00255         RotationInterpolator* interpolator);
00256 
00257     /**
00258      * 回転定数補間の書き出し
00259      * @param interpolator 回転定数補間
00260      */
00261     virtual void writeRotationConstantInterpolator(
00262         RotationConstantInterpolator* interpolator);
00263 
00264     /**
00265      * オイラー回転配列補間の書き出し
00266      * @param interpolator オイラー回転配列補間
00267      */
00268     virtual void writeEulerArrayInterpolator(
00269         EulerArrayInterpolator* interpolator);
00270 
00271     /**
00272      * 四元数回転配列補間の書き出し
00273      * @param interpolator 四元数回転配列補間
00274      */
00275     virtual void writeQuaternionArrayInterpolator(
00276         QuaternionArrayInterpolator* interpolator);
00277 
00278     /**
00279      * 四元数回転線形補間の書き出し
00280      * @param interpolator 四元数回転線形補間
00281      */
00282     virtual void writeQuaternionLinearInterpolator(
00283         QuaternionLinearInterpolator* interpolator);
00284 
00285     //--------------------------------------------------------------------------
00286     // ユーティリティ
00287     //--------------------------------------------------------------------------
00288     /**
00289      * アライメントを取る
00290      */
00291     virtual void align();
00292 
00293     /**
00294      * ブロックの開始
00295      * @param blockName ブロック名
00296      * @return プロック開始位置
00297      */
00298     virtual int startBlock(const String& blockName);
00299 
00300     /**
00301      * ブロックの終了
00302      * @param blockStartAddress ブロック開始位置
00303      * @param objectCount オブジェクト数
00304      */
00305     virtual void endBlock(int blockStartAddress, int objectCount);
00306 
00307     //--------------------------------------------------------------------------
00308     // メンバ
00309     //--------------------------------------------------------------------------
00310     /// ライタ
00311     BinaryWriter* writer_;
00312     /// アニメーションマネージャ
00313     AnimationManager* manager_;
00314 
00315     /// アニメーションカウント
00316     int animationCount_;
00317     /// アニメーションデータカウント
00318     int animationDataCount_;
00319     /// アニメーションセットカウント
00320     int animationSetCount_;
00321     /// カメラアニメーションカウント
00322     int cameraCount_;
00323     /// カメラアニメーションデータカウント
00324     int cameraDataCount_;
00325     /// シーンノードアニメーションカウント
00326     int sceneNodeCount_;
00327     /// シーンノードアニメーションデータカウント
00328     int sceneNodeDataCount_;
00329     /// キャラクタモデルアニメーションカウント
00330     int characterModelCount_;
00331     /// キャラクタモデルアニメーションデータカウント
00332     int characterModelDataCount_;
00333 
00334 private:
00335     //--------------------------------------------------------------------------
00336     // コピーコンストラクタの隠蔽
00337     BinaryAnimationSaver(const BinaryAnimationSaver& copy);
00338 
00339     // 代入コピーの隠蔽
00340     void operator =(const BinaryAnimationSaver& copy);
00341 
00342 };
00343 
00344 //------------------------------------------------------------------------------
00345 } // End of namespace Lamp
00346 #endif // End of BINARY_ANIMATION_SAVER_H_
00347 //------------------------------------------------------------------------------

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