axmol/extensions/Live2D/Framework/src/CubismCdiJson.cpp

115 lines
2.9 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 "CubismCdiJson.hpp"
//--------- LIVE2D NAMESPACE ------------
namespace Live2D { namespace Cubism { namespace Framework {
namespace {
// JSON keys
const csmChar* Version = "Version";
const csmChar* Parameters = "Parameters";
const csmChar* ParameterGroups = "ParameterGroups";
const csmChar* Parts = "Parts";
const csmChar* Id = "Id";
const csmChar* GroupId = "GroupId";
const csmChar* Name = "Name";
}
CubismCdiJson::CubismCdiJson(const csmByte* buffer, csmSizeInt size)
{
CreateCubismJson(buffer, size);
}
CubismCdiJson::~CubismCdiJson()
{
DeleteCubismJson();
}
// キーが存在するかどうかのチェック
csmBool CubismCdiJson::IsExistParameters() const
{
Utils::Value& node = (_json->GetRoot()[Parameters]);
return !node.IsNull() && !node.IsError();
}
csmBool CubismCdiJson::IsExistParameterGroups() const
{
Utils::Value& node = (_json->GetRoot()[ParameterGroups]);
return !node.IsNull() && !node.IsError();
}
csmBool CubismCdiJson::IsExistParts() const
{
Utils::Value& node = (_json->GetRoot()[Parts]);
return !node.IsNull() && !node.IsError();
}
// パラメータについて
csmInt32 CubismCdiJson::GetParametersCount()
{
if (!IsExistParameters()) return 0;
return _json->GetRoot()[Parameters].GetSize();
}
const csmChar* CubismCdiJson::GetParametersId(csmInt32 index)
{
return _json->GetRoot()[Parameters][index][Id].GetRawString();
}
const csmChar* CubismCdiJson::GetParametersGroupId(csmInt32 index)
{
return _json->GetRoot()[Parameters][index][GroupId].GetRawString();
}
const csmChar* CubismCdiJson::GetParametersName(csmInt32 index)
{
return _json->GetRoot()[Parameters][index][Name].GetRawString();
}
// パラメータグループについて
csmInt32 CubismCdiJson::GetParameterGroupsCount()
{
if (!IsExistParameterGroups()) return 0;
return _json->GetRoot()[ParameterGroups].GetSize();
}
const csmChar* CubismCdiJson::GetParameterGroupsId(csmInt32 index)
{
return _json->GetRoot()[ParameterGroups][index][Id].GetRawString();
}
const csmChar* CubismCdiJson::GetParameterGroupsGroupId(csmInt32 index)
{
return _json->GetRoot()[ParameterGroups][index][GroupId].GetRawString();
}
const csmChar* CubismCdiJson::GetParameterGroupsName(csmInt32 index)
{
return _json->GetRoot()[ParameterGroups][index][Name].GetRawString();
}
// パーツについて
csmInt32 CubismCdiJson::GetPartsCount()
{
if (!IsExistParts()) return 0;
return _json->GetRoot()[Parts].GetSize();
}
const csmChar* CubismCdiJson::GetPartsId(csmInt32 index)
{
return _json->GetRoot()[Parts][index][Id].GetRawString();
}
const csmChar* CubismCdiJson::GetPartsName(csmInt32 index)
{
return _json->GetRoot()[Parts][index][Name].GetRawString();
}
}}}