/*---------------------------------------------------------------------------* Project: NintendoWare File: lyt_Material.h Copyright (C)2009-2010 Nintendo Co., Ltd./HAL Laboratory, Inc. All rights reserved. These coded instructions, statements, and computer programs contain proprietary information of Nintendo of America Inc. and/or Nintendo Company Ltd., and are protected by Federal copyright law. They may not be disclosed to third parties or copied or duplicated in any form, in whole or in part, without the prior written consent of Nintendo. $Revision: 25949 $ *---------------------------------------------------------------------------*/ #ifndef NW_LYT_MATERIAL_H_ #define NW_LYT_MATERIAL_H_ //#include #include #include #include #include #include #include namespace nw { namespace lyt { namespace res { struct Material; } // namespace nw::lyt::res namespace internal { // Matrix Member Numbers struct MatMemNums { u32 texMap: 2; u32 texSRT: 2; u32 texCoordGen: 2; u32 tevStage: 3; u32 alpComp: 1; u32 blendMode: 1; }; } // namespace nw::lyt::internal class AnimTransform; class AnimResource; class DrawInfo; class Layout; class TexMap; struct ResBlockSet; //--------------------------------------------------------------------------- //! :category 描画 //! //! @brief マテリアルの情報クラスです。 //! //! @since 2009/09/18 初版。 //--------------------------------------------------------------------------- class Material { public: enum { //! ユーザーがマテリアルを構築したかを示します。 FLAG_USER_ALLOCATED, //! テクスチャのみを設定します。 FLAG_TEXTURE_ONLY, //! テクスチャに関する内部のキャッシュがクリーンなことを示します。 FLAG_TEXTURE_CLEAN, //! 列挙子の総数です。 FLAG_MAX }; //---------------------------------------- //! @name コンストラクタ/デストラクタ //@{ //! @brief コンストラクタです。 //! //! @details //! デフォルト設定の状態で初期化します。 //! //! @since 2009/09/18 初版。 //! Material(); //! @brief コンストラクタです。 //! //! @details //! データブロックを反映した状態で初期化します。 //! //! @param pRes マテリアルデータブロックへのポインタです。 //! @param resBlockSet ResBlockSet への参照です。 //! //! @since 2009/09/18 初版。 //! Material( const res::Material* pRes, const ResBlockSet& resBlockSet); //! @brief デストラクタです。 //! //! @since 2009/09/18 初版。 //! virtual ~Material(); //@} //---------------------------------------- //! @name 取得/設定 //@{ //! @brief マテリアルの設定を保持する領域を確保します。 //! //! @param texMapNum 格納可能なテクスチャの数です。 //! @param texSRTNum 格納可能なテクスチャ SRT 変換行列の数です。 //! @param texCoordGenNum 格納可能なテクスチャ座標生成の数です。 //! @param tevStageNum 格納可能な TEV ステージの数です。 //! @param allocAlpComp アルファコンペアの設定領域を確保するには true を指定します。 //! @param allocBlendMode ブレンドモードの設定領域を確保するには true を指定します。 //! //! @since 2009/09/18 初版。 //! void ReserveMem( u8 texMapNum, u8 texSRTNum, u8 texCoordGenNum, u8 tevStageNum = 0, bool allocAlpComp = false, bool allocBlendMode = false); //! @brief マテリアルに格納することのできるテクスチャの上限数を取得します。 //! //! @return TexMap を格納できる上限数を返します。 //! //! @sa ReserveMem //! //! @since 2009/09/18 初版。 //! u8 GetTexMapCap() const { return u8(m_MemCap.texMap); } //! @brief マテリアルに格納することのできるテクスチャ SRT 変換行列の上限数を取得します。 //! //! @return テクスチャ SRT 変換行列を格納できる上限数を返します。 //! //! @sa ReserveMem //! //! @since 2009/09/18 初版。 //! u8 GetTexSRTCap() const { return u8(m_MemCap.texSRT); } //! @brief マテリアルに格納することのできるテクスチャ座標生成の上限数を取得します。 //! //! @return テクスチャ座標生成を格納できる上限数を返します。 //! //! @sa ReserveMem //! //! @since 2009/09/18 初版。 //! u8 GetTexCoordGenCap() const { return u8(m_MemCap.texCoordGen); } //! @brief マテリアルに格納することのできる TEV ステージの上限数を取得します。 //! //! @return TEV ステージを格納できる上限数を返します。 //! //! @sa ReserveMem //! //! @since 2009/09/18 初版。 //! u8 GetTevStageCap() const { return u8(m_MemCap.tevStage); } //! @brief マテリアルがアルファコンペアの設定を格納することができるかどうかを取得します。 //! //! @return アルファコンペアの設定を格納できる場合は true を返します。 //! //! @sa ReserveMem //! //! @since 2009/09/18 初版。 //! bool IsAlphaCompareCap() const { return m_MemCap.alpComp != 0; } //! @brief マテリアルがブレンドモード設定を格納することができるかどうかを取得します。 //! //! @return ブレンドモード設定を格納できる場合は true を返します。 //! //! @sa ReserveMem //! //! @since 2009/09/18 初版。 //! bool IsBlendModeCap() const { return m_MemCap.blendMode != 0; } //! @brief マテリアルの名前を取得します。 //! //! @return マテリアルの名前を返します。 //! //! @sa SetName //! //! @since 2009/09/18 初版。 //! const char* GetName() const { return m_Name; } //! @brief マテリアルの名前を設定します。 //! //! @details //! セットできるマテリアル名文字列の最大長は lyt::MaterialNameStrMax です。 //! //! @param name 設定する名前です。 //! //! @sa GetName //! //! @since 2009/09/18 初版。 //! void SetName(const char* name); //@} //---------------------------------------- //! @name テクスチャ //@{ //! @brief テクスチャの数を取得します。 //! //! @return テクスチャの数を返します。 //! //! @sa SetTexMapNum //! //! @since 2009/09/18 初版。 //! u8 GetTexMapNum() const { return u8(m_MemNum.texMap); } //! @brief テクスチャの数を設定します。 //! //! @param num テクスチャの数です。 //! //! @sa GetTexMapNum //! //! @since 2009/09/18 初版。 //! void SetTexMapNum(u8 num); //! @brief テクスチャ座標生成の数を取得します。 //! //! @return テクスチャ座標生成の数を返します。 //! //! @sa SetTexCoordGenNum //! //! @since 2009/09/18 初版。 //! u8 GetTexCoordGenNum() const { return u8(m_MemNum.texCoordGen); } //! @brief テクスチャ座標生成の数を設定します。 //! //! @param num テクスチャ座標生成の数です。 //! //! @sa GetTexCoordGenNum //! //! @since 2009/09/18 初版。 //! void SetTexCoordGenNum(u8 num); //! @brief テクスチャSRTの数を取得します。 //! //! @return テクスチャSRTの数を返します。 //! //! @sa SetSRTNum //! //! @since 2010/03/26 初版。 //! u8 GetTexSRTNum() const { return u8(m_MemNum.texSRT); } //! @brief テクスチャSRTの数を設定します。 //! //! @param num テクスチャSRTの数です。 //! //! @sa GetTexSRTNum //! //! @since 2010/03/26 初版。 //! void SetTexSRTNum(u8 num); //! @brief テクスチャデータを取得します。 //! //! @details //! idx に ReserveMem() または SetTexMapNum() で設定したテクスチャの数よりも //! 大きな値を渡した場合はアサートが発生します。 //! //! @param idx インデックスです。 //! //! @return オブジェクトへの参照を返します。 //! //! @sa SetTexMap //! @sa ReserveMem //! @sa SetTexMapNum //! //! @since 2009/09/18 初版。 //! const TexMap& GetTexMap(u32 idx) const { NW_ASSERT(idx < m_MemNum.texMap); return GetTexMapAry()[idx]; } //! @brief テクスチャデータを設定します。 //! //! @details //! idx に ReserveMem() または SetTexMapNum() で設定したテクスチャ数よりも //! 大きな値を渡した場合はアサートが発生します。 //! //! @param idx インデックスです。 //! @param value TexMap オブジェクトへの参照です。 //! //! @sa GetTexMap //! @sa ReserveMem //! @sa SetTexMapNum //! //! @since 2009/09/18 初版。 //! void SetTexMap(u32 idx, const TexMap& value) { NW_ASSERT(idx < m_MemNum.texMap); GetTexMapAry()[idx] = value; this->SetTextureDirty(); } //! @brief テクスチャデータを設定します。 //! //! @details //! idx に ReserveMem() または SetTexMapNum() で設定したテクスチャ数よりも //! 大きな値を渡した場合はアサートが発生します。 //! //! @param idx インデックスです。 //! @param value TextureInfo オブジェクトへの参照です。 //! //! @sa GetTexMap //! @sa ReserveMem //! @sa SetTexMapNum //! //! @since 2010/05/26 初版。 //! void SetTexMap(u32 idx, const TextureInfo& value) { NW_ASSERT(idx < m_MemNum.texMap); GetTexMapAry()[idx].Set(value); this->SetTextureDirty(); } //! @brief テクスチャ SRT 行列を取得します。 //! //! @details //! idx に ReserveMem() または SetTexSRTNum() で設定したテクスチャ SRT 行列の数よりも //! 大きな値を渡した場合はアサートが発生します。 //! //! @param idx インデックスです。 //! //! @return オブジェクトへの参照を返します。 //! //! @sa SetTexSRT //! @sa ReserveMem //! @sa SetTexSRTNum //! //! @since 2009/09/18 初版。 //! const TexSRT& GetTexSRT(u32 idx) const { NW_ASSERT(idx < m_MemNum.texSRT); return GetTexSRTAry()[idx]; } //! @brief テクスチャ SRT 行列を設定します。 //! //! @details //! idx に ReserveMem() または SetTexSRTNum() で設定したテクスチャ SRT 行列の数よりも //! 大きな値を渡した場合はアサートが発生します。 //! //! @param idx インデックスです。 //! @param value 設定するテクスチャ SRT 行列です。 //! //! @sa GetTexSRT //! @sa ReserveMem //! @sa SetTexSRTNum //! //! @since 2009/09/18 初版。 //! void SetTexSRT(u32 idx, const TexSRT& value) { NW_ASSERT(idx < m_MemNum.texSRT); GetTexSRTAry()[idx] = value; this->SetTextureDirty(); } //! @brief テクスチャ座標生成を取得します。 //! //! @details //! idx に ReserveMem() または SetTexCoordGenNum() で設定した //! テクスチャ座標生成の数よりも大きな値を渡した場合は //! アサートが発生します。 //! //! @param idx インデックスです。 //! //! @return オブジェクトへの参照を返します。 //! //! @sa SetTexCoordGen //! @sa ReserveMem //! @sa GetTexCoordGenNum //! @sa SetTexCoordGenNum //! //! @since 2009/09/18 初版。 //! const TexCoordGen& GetTexCoordGen(u32 idx) const { NW_ASSERT(idx < m_MemNum.texCoordGen); return GetTexCoordGenAry()[idx]; } //! @brief テクスチャ座標生成を設定します。 //! //! @details //! idx に ReserveMem() または SetTexCoordGenNum() で設定したテクスチャ座標生成の //! 格納可能数よりも大きな値を渡した場合はアサートが発生します。 //! //! @param idx インデックスです。 //! @param value 設定するテクスチャ座標生成です。 //! //! @sa GetTexCoordGen //! @sa ReserveMem //! //! @since 2009/09/18 初版。 //! void SetTexCoordGen(u32 idx, const TexCoordGen& value) { NW_ASSERT(idx < m_MemNum.texCoordGen); GetTexCoordGenAry()[idx] = value; this->SetTextureDirty(); } //! @brief 成分を指定してテクスチャ SRT のパラメータを取得します。 //! //! @details //! テクスチャSRTの表示位置、回転、拡大率の成分を指定して取得します。 //! //! eleIdx の指定には lyt::AnimTargetTexSRT の値を使用してください。 //! //! @param idx TexSRT のインデックスです。 //! @param eleIdx 成分のインデックスです。 //! //! @return テクスチャSRTの指定された成分を返します。 //! //! @sa AnimTargetTexSRT //! @sa SetTexSRTElement //! //! @since 2009/09/18 初版。 //! f32 GetTexSRTElement(u32 idx, u32 eleIdx) const { NW_ASSERT(idx < m_MemNum.texSRT); const f32 *const srtAry = &GetTexSRTAry()[idx].translate.x; return srtAry[eleIdx]; } //! @brief 成分を指定してテクスチャ SRT のパラメータを設定します。 //! //! @details //! テクスチャの表示位置、回転、拡大率の成分を指定して設定します。 //! //! eleIdx の指定には lyt::AnimTargetTexSRT を使用してください。 //! //! idx に ReserveMem() または SetTexSRTNum() で設定したテクスチャ SRT 行列の //! 格納可能数よりも大きな値を渡した場合はアサートが発生します。 //! //! @param idx TexSRT のインデックスです。 //! @param eleIdx 成分のインデックスです。 //! @param value 成分の値です。 //! //! @sa AnimTargetTexSRT //! @sa GetTexSRTElement //! @sa ReserveMem //! @sa SetTexSRTNum //! //! @since 2009/09/18 初版。 //! void SetTexSRTElement(u32 idx, u32 eleIdx, f32 value) { NW_ASSERT(idx < m_MemNum.texSRT); f32 *const srtAry = &GetTexSRTAry()[idx].translate.x; srtAry[eleIdx] = value; this->SetTextureDirty(); } //@} //---------------------------------------- //! @name TEV //@{ //! @brief TEV ステージ数を取得します。 //! //! @return TEV ステージ数を返します。 //! //! @sa SetTevStageNum //! //! @since 2009/09/18 初版。 //! u8 GetTevStageNum() const { return u8(m_MemNum.tevStage); } //! @brief TEV ステージ数を設定します。 //! //! @param num TEV ステージの数です。 //! //! @sa GetTevStageNum //! //! @since 2009/09/18 初版。 //! void SetTevStageNum(u8 num); //! @brief カラーを取得します。 //! //! @details //! idx には lyt::TevKonstSel の値を指定します。 //! //! @param idx インデックスです。 //! //! @return オブジェクトへの参照を返します。 //! //! @sa SetColor //! @sa lyt::TevKonstSel //! //! @since 2009/09/18 初版。 //! const ut::Color8& GetColor(u32 idx) const { NW_ASSERT(idx < MatColorMax); return m_Colors[idx]; } //! @brief カラーを設定します。 //! //! @details //! idx には lyt::TevKonstSel の値を指定します。 //! //! @param idx インデックスです。 //! @param value カラーの値です。 //! //! @sa GetColor //! @sa lyt::TevKonstSel //! //! @since 2009/09/18 初版。 //! void SetColor(u32 idx, ut::Color8 value) { NW_ASSERT(idx < MatColorMax); m_Colors[idx] = value; } //! @brief カラーの種類を指定して TEV のカラーの成分を取得します。 //! //! @details //! colorType の指定には lyt::AnimTargetMatColor を使用してください。 //! //! @param colorType カラーの種類です。 //! //! @return カラー成分の値を返します。 //! //! @sa SetColorElement //! @sa lyt::AnimTargetMatColor //! //! @since 2009/09/18 初版。 //! u8 GetColorElement(u32 colorType) const; //! @brief カラーの種類を指定して TEV のカラーの成分を設定します。 //! //! @details //! colorType の指定には lyt::AnimTargetMatColor を使用してください。 //! //! @param colorType カラーの種類です。 //! @param value カラー値です。 //! //! @sa GetColorElement //! @sa lyt::AnimTargetMatColor //! //! @since 2009/09/18 初版。 //! void SetColorElement(u32 colorType, u8 value); //! @brief TEV ステージを取得します。 //! //! @details //! idx に ReserveMem() 関数または SetTevStageNum() 関数で設定した //! TEVステージ数よりも大きな値を渡した場合にはアサートが発生します。 //! //! @param idx インデックスです。 //! //! @return TevStage オブジェクトへの参照を返します。 //! //! @sa SetTevStage //! @sa ReserveMem //! @sa GetTevStageNum //! @sa SetTevStageNum //! //! @since 2009/09/18 初版。 //! const TevStage& GetTevStage(u32 idx) const { NW_ASSERT(idx < m_MemNum.tevStage); return GetTevStageAry()[idx]; } //! @brief TEV ステージを設定します。 //! //! @param idx インデックスです。 //! @param value TEV ステージ設定です。 //! //! @details //! idx に ReserveMem または SetTevStageNum で設定したTEVステージ数よりも //! 大きな値を渡した場合はアサートが発生します。 //! //! @sa ReserveMem //! @sa GetTevStage //! //! @since 2009/09/18 初版。 //! void SetTevStage(u32 idx, const TevStage& value) { NW_ASSERT(idx < m_MemNum.tevStage); GetTevStageAry()[idx] = value; } //@} //---------------------------------------- //! @name マテリアル //@{ //! @brief アルファコンペア設定を取得します。 //! //! @return アルファコンペア設定を返します。 //! //! @sa SetAlphaCompare //! //! @since 2009/09/18 初版。 //! const AlphaCompare& GetAlphaCompare() const { NW_ASSERT(IsAlphaCompareCap()); return *GetAlphaComparePtr(); } //! @brief アルファコンペアの設定を行います。 //! //! @param value アルファコンペア設定です。 //! //! @sa GetAlphaCompare //! //! @since 2009/09/18 初版。 //! void SetAlphaCompare(AlphaCompare value) { NW_ASSERT(IsAlphaCompareCap()); *GetAlphaComparePtr() = value; } //! @brief ブレンドモード設定を取得します。 //! //! @return ブレンドモード設定を返します。 //! //! @sa SetBlendMode //! //! @since 2009/09/18 初版。 //! const BlendMode& GetBlendMode() const { NW_ASSERT(IsBlendModeCap()); return *GetBlendModePtr(); } //! @brief ブレンドモードの設定を行います。 //! //! @param value ブレンドモード設定です。 //! //! @sa GetBlendMode //! //! @since 2009/09/18 初版。 //! void SetBlendMode(BlendMode value) { NW_ASSERT(IsBlendModeCap()); *GetBlendModePtr() = value; } //! @brief テクスチャのみ使うかを取得します。 //! //! @return テクスチャのみ使う場合は true を返します。 //! //! @sa SetTextureOnly //! //! @since 2010/04/23 初版。 //! bool GetTextureOnly() const { return internal::TestBit(m_Flag, FLAG_TEXTURE_ONLY); } //! @brief テクスチャのみ使うか取得します。 //! //! @details //! テクスチャ以外の設定は以前のマテリアルの設定をそのまま使います。 //! //! @param value テクスチャのみ使う場合は true を指定します。 //! //! @sa GetTextureOnly //! //! @since 2010/04/23 初版。 //! void SetTextureOnly(bool value) { m_Flag = internal::SetBit(m_Flag, FLAG_TEXTURE_ONLY, value); } //@} //---------------------------------------- //! @name アニメーション //@{ //! @brief アニメーションを関連付けます。 //! //! @param pAnimTrans pAnimTrans アニメーションへのポインタです。 //! //! @sa UnbindAnimation //! @sa UnbindAllAnimation //! //! @since 2009/09/18 初版。 //! virtual void BindAnimation(AnimTransform* pAnimTrans); //! @brief アニメーションの関連付けを解除します。 //! //! @details //! pAnimTrans に NULL を渡した場合はすべての関連付けが解除されます。 //! (UnbindAllAnimation と同義) //! //! @param pAnimTrans アニメーションへのポインタです。 //! //! @sa BindAnimation //! @sa UnbindAllAnimation //! //! @since 2009/09/18 初版。 //! virtual void UnbindAnimation(AnimTransform* pAnimTrans); //! @brief すべてのアニメーションの関連付けを解除します。 //! //! @details //! UnbindAnimation の引数に NULL を渡すのと同義です。 //! //! @sa BindAnimation //! @sa UnbindAnimation //! //! @since 2009/09/18 初版。 //! virtual void UnbindAllAnimation(); //! @brief アニメーションの結果を計算します。 //! //! @since 2009/09/18 初版。 //! virtual void Animate(); //! @brief アニメーションリンク情報を追加します。 //! //! @param pAnimationLink アニメーションリンク情報へのポインタです。 //! //! @since 2009/09/18 初版。 //! void AddAnimationLink(AnimationLink* pAnimationLink); //! @brief アニメーションリンク情報を検索します。 //! //! @details //! pAnimTrans で指定したアニメーションを持つアニメーションリンク情報を検索します。 //! //! @param pAnimTrans アニメーションへのポインタです。 //! //! @return 見つかった場合はそのアニメーションリンク情報へのポインタを、 //! 見つからなかった場合は NULL を返します。 //! //! @since 2009/09/18 初版。 //! virtual AnimationLink* FindAnimationLink(AnimTransform* pAnimTrans); //! @brief アニメーションリンク情報を検索します。 //! //! @details //! animRes で指定したアニメーションリソースを使用するアニメーション //! (AnimTransform)を持つアニメーションリンク情報を検索します。 //! //! @param animRes アニメーションリソースオブジェクトへの参照です。 //! //! @return 見つかった場合はそのアニメーションリンク情報へのポインタを、 //! 見つからなかった場合は NULL を返します。 //! //! @sa AnimTransform //! //! @since 2009/09/18 初版。 //! virtual AnimationLink* FindAnimationLink(const AnimResource& animRes); //! @brief アニメーションの有効/無効状態を設定します。 //! //! @details //! 指定したアニメーションの有効/無効状態を設定します。 //! //! @param pAnimTrans アニメーションへのポインタです。 //! @param bEnable 設定する状態です。 //! //! @since 2009/09/18 初版。 //! virtual void SetAnimationEnable( AnimTransform* pAnimTrans, bool bEnable); //! @brief アニメーションの有効/無効状態を設定します。 //! //! @details //! 指定されたアニメーションリソースを使用するアニメーション //! (AnimTransform)の有効/無効状態を設定します。 //! //! @param animRes アニメーションリソースオブジェクトへの参照です。 //! @param bEnable 設定する状態です。 //! //! @sa AnimTransform //! //! @since 2009/09/18 初版。 //! virtual void SetAnimationEnable( const AnimResource& animRes, bool bEnable); //! @brief 関連付けられているアニメーションのリストを取得します。 //! //! @return アニメーションリンク情報のリンクリストを返します。 //! //! @sa AnimationLink //! //! @since 2009/09/18 初版。 //! const AnimationList& GetAnimationList() const { return m_AnimList; } //! @brief 関連付けられているアニメーションのリストを取得します。 //! //! @return アニメーションリンク情報のリンクリストを返します。 //! //! @sa AnimationLink //! //! @since 2009/09/18 初版。 //! AnimationList& GetAnimationList() { return m_AnimList; } //@} //---------------------------------------- //! @name その他 //@{ //! @brief ユーザーがマテリアルを構築したかどうかを判定します。 //! //! @return マテリアルをユーザーが構築した場合は true を返します。 //! //! @since 2009/09/18 初版。 //! bool IsUserAllocated() const { return internal::TestBit(m_Flag, FLAG_USER_ALLOCATED); } //! @brief ユーザーが構築したマテリアルであることを宣言します。 //! //! @details //! ユーザが構築したと宣言されたマテリアルはライブラリによって //! 解放されません。 //! //! @since 2010/08/27 初版。 //! void SetUserAllocated() { internal::SetBit(&m_Flag, FLAG_USER_ALLOCATED, true); } //@} #ifdef NW_LYT_DMPGL_ENABLED //! :private //! @brief マテリアルの設置をグラフィックスシステムに送信します。 //! //! @details //! ペインの描画中に呼び出されます。 //! //! @param drawInfo 描画情報です。 //! @param alpha マテリアルカラーに対するアルファ値です。 //! @param bInitFrameTransform フレーム変換にデフォルト値を設定する場合は true を指定します。 //! virtual void SetupGraphics( const DrawInfo& drawInfo, u8 alpha, bool bInitFrameTransform = true); #endif //! @details :private bool IsTextureDirty() const { return ! internal::TestBit(m_Flag, FLAG_TEXTURE_CLEAN); } //! @details :private void SetTextureDirty(bool bDirty = true) { internal::SetBit(&m_Flag, FLAG_TEXTURE_CLEAN, ! bDirty); } protected: //! @brief テクスチャ画像設定の配列を取得します。 //! //! @return テクスチャ画像設定の配列を返します。 //! //! @since 2010/05/26 初版。 //! const TexMap* GetTexMapAry() const; //! @brief テクスチャ画像設定の配列を取得します。 //! //! @return テクスチャ画像設定の配列を返します。 //! //! @since 2010/05/26 初版。 //! TexMap* GetTexMapAry(); //! @brief テクスチャ座標変換設定の配列を取得します。 //! //! @return テクスチャ座標変換設定の配列を返します。 //! //! @since 2010/05/26 初版。 //! const TexSRT* GetTexSRTAry() const; //! @brief テクスチャ座標変換設定の配列を取得します。 //! //! @return テクスチャ座標変換設定の配列を返します。 //! //! @since 2010/05/26 初版。 //! TexSRT* GetTexSRTAry(); //! @brief テクスチャ座標生成設定の配列を取得します。 //! //! @return テクスチャ座標生成設定の配列を返します。 //! //! @since 2010/05/26 初版。 //! const TexCoordGen* GetTexCoordGenAry() const; //! @brief テクスチャ座標生成設定の配列を取得します。 //! //! @return テクスチャ座標生成設定の配列を返します。 //! //! @since 2010/05/26 初版。 //! TexCoordGen* GetTexCoordGenAry(); //! @brief アルファコンペア設定のアドレスを取得します。 //! //! @return アルファコンペア設定のアドレスを返します。 //! //! @since 2010/05/26 初版。 //! const AlphaCompare* GetAlphaComparePtr() const; //! @brief アルファコンペア設定のアドレスを取得します。 //! //! @return アルファコンペア設定のアドレスを返します。 //! //! @since 2010/05/26 初版。 //! AlphaCompare* GetAlphaComparePtr(); //! @brief ブレンドモード設定のアドレスを取得します。 //! //! @return ブレンドモード設定のアドレスを返します。 //! //! @since 2010/05/26 初版。 //! const BlendMode* GetBlendModePtr() const; //! @brief ブレンドモード設定のアドレスを取得します。 //! //! @return ブレンドモード設定のアドレスを返します。 //! //! @since 2010/05/26 初版。 //! BlendMode* GetBlendModePtr(); //! @brief TEV設定のアドレスを取得します。 //! //! @return TEV設定のアドレスを返します。 //! //! @since 2010/05/26 初版。 //! const TevStage* GetTevStageAry() const; //! @brief TEV設定の配列を取得します。 //! //! @return TEV設定の配列を返します。 //! //! @since 2010/05/26 初版。 //! TevStage* GetTevStageAry(); private: void Init(); void InitMatMemNums(internal::MatMemNums* ptr); AnimationList m_AnimList; ut::Color8 m_Colors[MatColorMax]; internal::MatMemNums m_MemCap; internal::MatMemNums m_MemNum; void* m_pMem; char m_Name[MaterialNameStrMax + 1]; u8 m_Flag; u8 m_Padding[2]; private: // コピーコンストラクタと代入演算子の呼び出しを禁止します。実装してはいけません。 Material(const Material& other); Material& operator = (const Material& other); }; } // namespace nw::lyt } // namespace nw #endif // NW_LYT_MATERIAL_H_