mirror of https://github.com/axmolengine/axmol.git
168 lines
4.6 KiB
C++
168 lines
4.6 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.
|
|
*/
|
|
|
|
#include "CubismMotionJson.hpp"
|
|
#include "Id/CubismId.hpp"
|
|
#include "Id/CubismIdManager.hpp"
|
|
|
|
namespace Live2D { namespace Cubism { namespace Framework {
|
|
|
|
namespace {
|
|
// JSON keys
|
|
const csmChar* Meta = "Meta";
|
|
const csmChar* Duration = "Duration";
|
|
const csmChar* Loop = "Loop";
|
|
const csmChar* AreBeziersRestricted = "AreBeziersRestricted";
|
|
const csmChar* CurveCount = "CurveCount";
|
|
const csmChar* Fps = "Fps";
|
|
const csmChar* TotalSegmentCount = "TotalSegmentCount";
|
|
const csmChar* TotalPointCount = "TotalPointCount";
|
|
const csmChar* Curves = "Curves";
|
|
const csmChar* Target = "Target";
|
|
const csmChar* Id = "Id";
|
|
const csmChar* FadeInTime = "FadeInTime";
|
|
const csmChar* FadeOutTime = "FadeOutTime";
|
|
const csmChar* Segments = "Segments";
|
|
const csmChar* UserData = "UserData";
|
|
const csmChar* UserDataCount = "UserDataCount";
|
|
const csmChar* TotalUserDataSize = "TotalUserDataSize";
|
|
const csmChar* Time = "Time";
|
|
const csmChar* Value = "Value";
|
|
}
|
|
|
|
CubismMotionJson::CubismMotionJson(const csmByte* buffer, csmSizeInt size)
|
|
{
|
|
CreateCubismJson(buffer, size);
|
|
}
|
|
|
|
CubismMotionJson::~CubismMotionJson()
|
|
{
|
|
DeleteCubismJson();
|
|
}
|
|
|
|
csmFloat32 CubismMotionJson::GetMotionDuration() const
|
|
{
|
|
return _json->GetRoot()[Meta][Duration].ToFloat();
|
|
}
|
|
|
|
csmBool CubismMotionJson::IsMotionLoop() const
|
|
{
|
|
return _json->GetRoot()[Meta][Loop].ToBoolean();
|
|
}
|
|
|
|
csmBool CubismMotionJson::GetEvaluationOptionFlag(const csmInt32 flagType) const
|
|
{
|
|
if (EvaluationOptionFlag_AreBeziersRistricted == flagType)
|
|
{
|
|
return _json->GetRoot()[Meta][AreBeziersRestricted].ToBoolean();
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
csmInt32 CubismMotionJson::GetMotionCurveCount() const
|
|
{
|
|
return _json->GetRoot()[Meta][CurveCount].ToInt();
|
|
}
|
|
|
|
csmFloat32 CubismMotionJson::GetMotionFps() const
|
|
{
|
|
return _json->GetRoot()[Meta][Fps].ToFloat();
|
|
}
|
|
|
|
csmInt32 CubismMotionJson::GetMotionTotalSegmentCount() const
|
|
{
|
|
return _json->GetRoot()[Meta][TotalSegmentCount].ToInt();
|
|
}
|
|
|
|
csmInt32 CubismMotionJson::GetMotionTotalPointCount() const
|
|
{
|
|
return _json->GetRoot()[Meta][TotalPointCount].ToInt();
|
|
}
|
|
|
|
csmBool CubismMotionJson::IsExistMotionFadeInTime() const
|
|
{
|
|
return !_json->GetRoot()[Meta][FadeInTime].IsNull();
|
|
}
|
|
|
|
csmBool CubismMotionJson::IsExistMotionFadeOutTime() const
|
|
{
|
|
return !_json->GetRoot()[Meta][FadeOutTime].IsNull();
|
|
}
|
|
|
|
csmFloat32 CubismMotionJson::GetMotionFadeInTime() const
|
|
{
|
|
return _json->GetRoot()[Meta][FadeInTime].ToFloat();
|
|
}
|
|
|
|
csmFloat32 CubismMotionJson::GetMotionFadeOutTime() const
|
|
{
|
|
return _json->GetRoot()[Meta][FadeOutTime].ToFloat();
|
|
}
|
|
|
|
const csmChar* CubismMotionJson::GetMotionCurveTarget(csmInt32 curveIndex) const
|
|
{
|
|
return _json->GetRoot()[Curves][curveIndex][Target].GetRawString();
|
|
}
|
|
|
|
CubismIdHandle CubismMotionJson::GetMotionCurveId(csmInt32 curveIndex) const
|
|
{
|
|
return CubismFramework::GetIdManager()->GetId(_json->GetRoot()[Curves][curveIndex][Id].GetRawString());
|
|
}
|
|
|
|
csmBool CubismMotionJson::IsExistMotionCurveFadeInTime(csmInt32 curveIndex) const
|
|
{
|
|
return !_json->GetRoot()[Curves][curveIndex][FadeInTime].IsNull();
|
|
}
|
|
|
|
csmBool CubismMotionJson::IsExistMotionCurveFadeOutTime(csmInt32 curveIndex) const
|
|
{
|
|
return !_json->GetRoot()[Curves][curveIndex][FadeOutTime].IsNull();
|
|
}
|
|
|
|
csmFloat32 CubismMotionJson::GetMotionCurveFadeInTime(csmInt32 curveIndex) const
|
|
{
|
|
return _json->GetRoot()[Curves][curveIndex][FadeInTime].ToFloat();
|
|
}
|
|
|
|
csmFloat32 CubismMotionJson::GetMotionCurveFadeOutTime(csmInt32 curveIndex) const
|
|
{
|
|
return _json->GetRoot()[Curves][curveIndex][FadeOutTime].ToFloat();
|
|
}
|
|
|
|
csmInt32 CubismMotionJson::GetMotionCurveSegmentCount(csmInt32 curveIndex) const
|
|
{
|
|
return static_cast<csmInt32>(_json->GetRoot()[Curves][curveIndex][Segments].GetVector()->GetSize());
|
|
}
|
|
|
|
csmFloat32 CubismMotionJson::GetMotionCurveSegment(csmInt32 curveIndex, csmInt32 segmentIndex) const
|
|
{
|
|
return _json->GetRoot()[Curves][curveIndex][Segments][segmentIndex].ToFloat();
|
|
}
|
|
|
|
csmInt32 CubismMotionJson::GetEventCount() const
|
|
{
|
|
return _json->GetRoot()[Meta][UserDataCount].ToInt();
|
|
}
|
|
|
|
csmInt32 CubismMotionJson::GetTotalEventValueSize() const
|
|
{
|
|
return _json->GetRoot()[Meta][TotalUserDataSize].ToInt();
|
|
}
|
|
|
|
csmFloat32 CubismMotionJson::GetEventTime(csmInt32 userDataIndex) const
|
|
{
|
|
return _json->GetRoot()[UserData][userDataIndex][Time].ToFloat();
|
|
}
|
|
|
|
const csmChar* CubismMotionJson::GetEventValue(csmInt32 userDataIndex) const
|
|
{
|
|
return _json->GetRoot()[UserData][userDataIndex][Value].GetRawString();
|
|
}
|
|
|
|
}}}
|