mirror of https://github.com/axmolengine/axmol.git
107 lines
3.3 KiB
C++
107 lines
3.3 KiB
C++
/**
|
||
* Copyright(c) Live2D Inc. All rights reserved.
|
||
*
|
||
* Use of this source code is governed by the Live2D Open Software license
|
||
* that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
|
||
*/
|
||
|
||
#pragma once
|
||
|
||
#include "Model/CubismModel.hpp"
|
||
#include "ACubismMotion.hpp"
|
||
#include "CubismMotionQueueManager.hpp"
|
||
|
||
namespace Live2D { namespace Cubism { namespace Framework {
|
||
|
||
/**
|
||
* @brief モーションの管理
|
||
*
|
||
* モーションの管理を行うクラス。
|
||
*/
|
||
class CubismMotionManager : public CubismMotionQueueManager
|
||
{
|
||
public:
|
||
/**
|
||
* @brief コンストラクタ
|
||
*
|
||
* コンストラクタ。
|
||
*/
|
||
CubismMotionManager();
|
||
|
||
/**
|
||
* @brief デストラクタ
|
||
*
|
||
* デストラクタ。
|
||
*/
|
||
virtual ~CubismMotionManager();
|
||
|
||
/**
|
||
* @brief 再生中のモーションの優先度の取得
|
||
*
|
||
* 再生中のモーションの優先度の取得する。
|
||
*
|
||
* @return モーションの優先度
|
||
*/
|
||
csmInt32 GetCurrentPriority() const;
|
||
|
||
/**
|
||
* @brief 予約中のモーションの優先度の取得
|
||
*
|
||
* 予約中のモーションの優先度を取得する。
|
||
*
|
||
* @return モーションの優先度
|
||
*/
|
||
csmInt32 GetReservePriority() const;
|
||
|
||
/**
|
||
* @brief 予約中のモーションの優先度の設定
|
||
*
|
||
* 予約中のモーションの優先度を設定する。
|
||
*
|
||
* @param[in] val 優先度
|
||
*/
|
||
void SetReservePriority(csmInt32 val);
|
||
|
||
/**
|
||
* @brief 優先度を設定してモーションの開始
|
||
*
|
||
* 優先度を設定してモーションを開始する。
|
||
*
|
||
* @param[in] motion モーション
|
||
* @param[in] autoDelete 再生が狩猟したモーションのインスタンスを削除するならtrue
|
||
* @param[in] priority 優先度
|
||
* @return 開始したモーションの識別番号を返す。個別のモーションが終了したか否かを判定するIsFinished()の引数で使用する。開始できない時は「-1」
|
||
*/
|
||
CubismMotionQueueEntryHandle StartMotionPriority(ACubismMotion* motion, csmBool autoDelete, csmInt32 priority);
|
||
|
||
/**
|
||
* @brief モーションの更新
|
||
*
|
||
* モーションを更新して、モデルにパラメータ値を反映する。
|
||
*
|
||
* @param[in] model 対象のモデル
|
||
* @param[in] deltaTimeSeconds デルタ時間[秒]
|
||
* @param[in][out] opacity 透明度の値(Nullable)
|
||
* @retval true 更新されている
|
||
* @retval false 更新されていない
|
||
*/
|
||
csmBool UpdateMotion(CubismModel* model, csmFloat32 deltaTimeSeconds, csmFloat32* opacity = NULL);
|
||
|
||
/**
|
||
* @brief モーションの予約
|
||
*
|
||
* モーションを予約する。
|
||
*
|
||
* @param[in] priority 優先度
|
||
* @retval true 予約できた
|
||
* @retval false 予約できなかった
|
||
*/
|
||
csmBool ReserveMotion(csmInt32 priority);
|
||
|
||
private:
|
||
csmInt32 _currentPriority; ///< 現在再生中のモーションの優先度
|
||
csmInt32 _reservePriority; ///< 再生予定のモーションの優先度。再生中は0になる。モーションファイルを別スレッドで読み込むときの機能。
|
||
};
|
||
|
||
}}}
|