118 lines
3.0 KiB
TypeScript
118 lines
3.0 KiB
TypeScript
/**
|
|
* 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.
|
|
*/
|
|
|
|
import { CubismIdHandle } from '../id/cubismid';
|
|
import { CubismFramework } from '../live2dcubismframework';
|
|
import { CubismJson } from '../utils/cubismjson';
|
|
|
|
const Meta = 'Meta';
|
|
const UserDataCount = 'UserDataCount';
|
|
const TotalUserDataSize = 'TotalUserDataSize';
|
|
const UserData = 'UserData';
|
|
const Target = 'Target';
|
|
const Id = 'Id';
|
|
const Value = 'Value';
|
|
|
|
export class CubismModelUserDataJson {
|
|
/**
|
|
* コンストラクタ
|
|
* @param buffer userdata3.jsonが読み込まれているバッファ
|
|
* @param size バッファのサイズ
|
|
*/
|
|
public constructor(buffer: ArrayBuffer, size: number) {
|
|
this._json = CubismJson.create(buffer, size);
|
|
}
|
|
|
|
/**
|
|
* デストラクタ相当の処理
|
|
*/
|
|
public release(): void {
|
|
CubismJson.delete(this._json);
|
|
}
|
|
|
|
/**
|
|
* ユーザーデータ個数の取得
|
|
* @return ユーザーデータの個数
|
|
*/
|
|
public getUserDataCount(): number {
|
|
return this._json
|
|
.getRoot()
|
|
.getValueByString(Meta)
|
|
.getValueByString(UserDataCount)
|
|
.toInt();
|
|
}
|
|
|
|
/**
|
|
* ユーザーデータ総文字列数の取得
|
|
*
|
|
* @return ユーザーデータ総文字列数
|
|
*/
|
|
public getTotalUserDataSize(): number {
|
|
return this._json
|
|
.getRoot()
|
|
.getValueByString(Meta)
|
|
.getValueByString(TotalUserDataSize)
|
|
.toInt();
|
|
}
|
|
|
|
/**
|
|
* ユーザーデータのタイプの取得
|
|
*
|
|
* @return ユーザーデータのタイプ
|
|
*/
|
|
public getUserDataTargetType(i: number): string {
|
|
return this._json
|
|
.getRoot()
|
|
.getValueByString(UserData)
|
|
.getValueByIndex(i)
|
|
.getValueByString(Target)
|
|
.getRawString();
|
|
}
|
|
|
|
/**
|
|
* ユーザーデータのターゲットIDの取得
|
|
*
|
|
* @param i インデックス
|
|
* @return ユーザーデータターゲットID
|
|
*/
|
|
public getUserDataId(i: number): CubismIdHandle {
|
|
return CubismFramework.getIdManager().getId(
|
|
this._json
|
|
.getRoot()
|
|
.getValueByString(UserData)
|
|
.getValueByIndex(i)
|
|
.getValueByString(Id)
|
|
.getRawString()
|
|
);
|
|
}
|
|
|
|
/**
|
|
* ユーザーデータの文字列の取得
|
|
*
|
|
* @param i インデックス
|
|
* @return ユーザーデータ
|
|
*/
|
|
public getUserDataValue(i: number): string {
|
|
return this._json
|
|
.getRoot()
|
|
.getValueByString(UserData)
|
|
.getValueByIndex(i)
|
|
.getValueByString(Value)
|
|
.getRawString();
|
|
}
|
|
|
|
private _json: CubismJson;
|
|
}
|
|
|
|
// Namespace definition for compatibility.
|
|
import * as $ from './cubismmodeluserdatajson';
|
|
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
export namespace Live2DCubismFramework {
|
|
export const CubismModelUserDataJson = $.CubismModelUserDataJson;
|
|
export type CubismModelUserDataJson = $.CubismModelUserDataJson;
|
|
}
|