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

TranslationInstance.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 TRANSLATION_INSTANCE_H_
00026 #define TRANSLATION_INSTANCE_H_
00027 
00028 namespace Lamp{
00029     class Scene;
00030     class SceneNode;
00031     class SceneLeaf;
00032     class AnimationManager;
00033     class AnimationSet;
00034 }
00035 
00036 #include <Core/Container/ArrayList.h>
00037 
00038 namespace LampForMaya{
00039 
00040 class TranslationSceneNodeInstance;
00041 class TranslationLightInstance;
00042 class TranslationModelInstance;
00043 
00044 //------------------------------------------------------------------------------
00045 /**
00046  * 変換インスタンス
00047  */
00048 class TranslationInstance{
00049 friend class TranslationInstanceManager;
00050 public:
00051     /**
00052      * デストラクタ
00053      */
00054     virtual ~TranslationInstance();
00055 
00056     //--------------------------------------------------------------------------
00057     /**
00058      * 分析
00059      * @return 成功すればtrue
00060      */
00061     virtual bool analyze(){ return analyzeInstance(); }
00062 
00063     //--------------------------------------------------------------------------
00064     /**
00065      * Lampへの変換
00066      * @param scene シーン
00067      * @return 成功すればtrue
00068      */
00069     virtual bool convertToLamp(Scene* scene) = 0;
00070 
00071     /**
00072      * アニメーションの変換
00073      * @param animationManager アニメーションマネージャ
00074      * @param animationSet アニメーションセット
00075      * @return 成功すればtrue
00076      */
00077     virtual bool convertAnimation(
00078         AnimationManager* animationManager, AnimationSet* animationSet) = 0;
00079 
00080     //--------------------------------------------------------------------------
00081     /**
00082      * 名前の取得
00083      * @return 名前
00084      */
00085     virtual String getName() const{ return name_; }
00086 
00087     //--------------------------------------------------------------------------
00088     // RTTI
00089     //--------------------------------------------------------------------------
00090     /**
00091      * 変換シーンノードインスタンスかどうか
00092      * @return 変換シーンノードインスタンスならtrue
00093      */
00094     virtual bool isTranslationSceneNodeInstance() const{ return false; }
00095 
00096     /**
00097      * 変換シーンノードインスタンスへのキャスト
00098      * @return 変換シーンノードインスタンス。型が違えばNULLを返す。
00099      */
00100     virtual TranslationSceneNodeInstance* castTranslationSceneNodeInstance() const{
00101         if(isTranslationSceneNodeInstance()){
00102             return (TranslationSceneNodeInstance*)this;
00103         }
00104         return NULL;
00105     }
00106 
00107     //--------------------------------------------------------------------------
00108     /**
00109      * 変換ライトインスタンスかどうか
00110      * @return 変換ライトインスタンスならtrue
00111      */
00112     virtual bool isTranslationLightInstance() const{ return false; }
00113 
00114     /**
00115      * 変換ライトインスタンスへのキャスト
00116      * @return 変換ライトインスタンス。型が違えばNULLを返す。
00117      */
00118     virtual TranslationLightInstance* castTranslationLightInstance() const{
00119         if(isTranslationLightInstance()){
00120             return (TranslationLightInstance*)this;
00121         }
00122         return NULL;
00123     }
00124 
00125     //--------------------------------------------------------------------------
00126     /**
00127      * 変換モデルインスタンスかどうか
00128      * @return 変換モデルインスタンスならtrue
00129      */
00130     virtual bool isTranslationModelInstance() const{ return false; }
00131 
00132     /**
00133      * 変換モデルインスタンスへのキャスト
00134      * @return 変換モデルインスタンス。型が違えばNULLを返す。
00135      */
00136     virtual TranslationModelInstance* castTranslationModelInstance() const{
00137         if(isTranslationModelInstance()){
00138             return (TranslationModelInstance*)this;
00139         }
00140         return NULL;
00141     }
00142 
00143 protected:
00144     //--------------------------------------------------------------------------
00145     /**
00146      * コンストラクタ
00147      * @param initializePath 初期化するDagパス
00148      * @param initializeName 初期化する名前
00149      */
00150     TranslationInstance(
00151         const MDagPath& initializePath, const String& initializeName);
00152 
00153     /**
00154      * インスタンスの分析
00155      * @return 成功すればtrue
00156      */
00157     virtual bool analyzeInstance();
00158 
00159     /**
00160      * シーンノードアニメーションの変換
00161      * @param animationManager アニメーションマネージャ
00162      * @param animationSet アニメーションセット
00163      * @param sourceSceneNode コピー元シーンノード
00164      * @param destinationSceneNode コピー先シーンノード
00165      */
00166     virtual bool convertSceneNodeAnimation(
00167         AnimationManager* animationManager, AnimationSet* animationSet,
00168         SceneNode* sourceSceneNode, SceneNode* destinationSceneNode);
00169 
00170     /**
00171      * シーンリーフアニメーションの変換
00172      * @param animationManager アニメーションマネージャ
00173      * @param animationSet アニメーションセット
00174      * @param sourceSceneLeaf コピー元シーンリーフ
00175      * @param destinationSceneLeaf コピー先シーンリーフ
00176      */
00177     virtual bool convertSceneLeafAnimation(
00178         AnimationManager* animationManager, AnimationSet* animationSet,
00179         SceneLeaf* sourceSceneLeaf, SceneLeaf* destinationSceneLeaf);
00180 
00181     /// Dagパス
00182     MDagPath dagPath_;
00183     /// オブジェクト
00184     MObject object_;
00185     /// 名前
00186     String name_;
00187     /// 親シーンノードの名前
00188     String parentSceneNodeName_;
00189     /// 表示フラグ
00190     bool visibility_;
00191 
00192 private:
00193     // コピーコンストラクタの隠蔽
00194     TranslationInstance(const TranslationInstance& copy);
00195 
00196     // 代入コピーの隠蔽
00197     void operator =(const TranslationInstance& copy);
00198 
00199 
00200 };
00201 
00202 //------------------------------------------------------------------------------
00203 } // End of namespace LampForMaya
00204 #endif // End of TRANSLATION_INSTANCE_H_
00205 //------------------------------------------------------------------------------
00206 

Generated on Wed Mar 16 10:29:55 2005 for LampForMaya by doxygen 1.3.2