axmol/extensions/Live2D/Framework/src/Motion/CubismMotionManager.hpp

107 lines
3.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 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になる。モーションファイルを別スレッドで読み込むときの機能。
};
}}}