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

258 lines
7.6 KiB
C++
Raw Normal View History

/**
* 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 "ACubismMotion.hpp"
#include "Type/csmVector.hpp"
#include "Model/CubismUserModel.hpp"
namespace Live2D { namespace Cubism { namespace Framework {
class CubismMotion;
/**
* @brief CubismMotionQueueManagerで再生している各モーションの管理
*
* CubismMotionQueueManagerで再生している各モーションの管理クラス
*/
class CubismMotionQueueEntry
{
friend class CubismMotionQueueManager;
friend class ACubismMotion;
friend class CubismMotion;
public:
/**
* @brief
*
*
*/
CubismMotionQueueEntry();
/**
* @brief
*
*
*/
virtual ~CubismMotionQueueEntry();
/**
* @brief
*
*
*
* @param[in] fadeOutSeconds []
*/
void SetFadeout(csmFloat32 fadeOutSeconds);
/**
* @brief
*
*
*
* @param[in] fadeOutSeconds []
* @param[in] userTimeSeconds []
*/
void StartFadeout(csmFloat32 fadeOutSeconds, csmFloat32 userTimeSeconds);
/**
* @brief
*
*
*
* @retval true
* @retval false
*/
csmBool IsFinished() const;
/**
* @brief
*
*
*
* @retval true
* @retval false
*/
csmBool IsStarted() const;
/**
* @brief
*
*
*
* @return []
*/
csmFloat32 GetStartTime() const;
/**
* @brief
*
*
*
* @return []
*/
csmFloat32 GetFadeInStartTime() const;
/**
* @brief
*
*
*
* @return []
*/
csmFloat32 GetEndTime() const;
/**
* @brief
*
*
*
* @param[in] startTime []
*/
void SetStartTime(csmFloat32 startTime);
/**
* @brief
*
*
*
* @param[in] startTime []
*/
void SetFadeInStartTime(csmFloat32 startTime);
/**
* @brief
*
*
*
* @param[in] endTime []
*/
void SetEndTime(csmFloat32 endTime);
/**
* @brief
*
*
*
* @param[in] f trueならモーションの終了
*/
void IsFinished(csmBool f);
/**
* @brief
*
*
*
* @param[in] f trueならモーションの開始
*/
void IsStarted(csmBool f);
/**
* @brief
*
*
*
* @retval true
* @retval false
*/
csmBool IsAvailable() const;
/**
* @brief
*
*
*
* @param[in] v trueならモーションは有効
*/
void IsAvailable(csmBool v);
/**
* @brief
*
*
*
* @param[in] timeSeconds []
* @param[in] weight
*/
void SetState(csmFloat32 timeSeconds, csmFloat32 weight);
/**
* @brief
*
*
*
* @return []
*/
csmFloat32 GetStateTime() const;
/**
* @brief
*
*
*
* @return
*/
csmFloat32 GetStateWeight() const;
/**
* @brief
*
*
*
* @return []
*/
csmFloat32 GetLastCheckEventTime() const;
/**
* @brief
*
*
*
* @param[in] checkTime []
*/
void SetLastCheckEventTime(csmFloat32 checkTime);
/**
* @brief
*
*
*
* @return
*/
csmBool IsTriggeredFadeOut();
/**
* @brief
*
*
*
* @return []
*/
csmFloat32 GetFadeOutSeconds();
private:
csmBool _autoDelete; ///< 自動削除
ACubismMotion* _motion; ///< モーション
csmBool _available; ///< 有効化フラグ
csmBool _finished; ///< 終了フラグ
csmBool _started; ///< 開始フラグ0.9.00以降)
csmFloat32 _startTimeSeconds; ///< モーション再生開始時刻[秒]
csmFloat32 _fadeInStartTimeSeconds; ///< フェードイン開始時刻(ループの時は初回のみ)[秒]
csmFloat32 _endTimeSeconds; ///< 終了予定時刻[秒]
csmFloat32 _stateTimeSeconds; ///< 時刻の状態[秒]
csmFloat32 _stateWeight; ///< 重みの状態
csmFloat32 _lastEventCheckSeconds; ///< 最終のMotion側のチェックした時間
csmFloat32 _fadeOutSeconds;
csmBool _IsTriggeredFadeOut;
CubismMotionQueueEntryHandle _motionQueueEntryHandle; ///< インスタンスごとに一意の値を持つ識別番号
};
}}}