/// <summary> /// コアからパーツ情報を読み出す。 /// </summary> private void InitializeParts() { int count = CubismCore.CsmGetPartCount(ModelPtr); if (count < 0) { throw new ArgumentOutOfRangeException(); } // パーツの不透明度を取得する PartOpacities = IntPtrToFloatArray(CubismCore.CsmGetPartOpacities(ModelPtr), count); // パーツIDを取得し、IDマネージャを作成する string[] id_name_list = IntPtrToStringArray(CubismCore.CsmGetPartIds(ModelPtr), count); PartManager = new CubismIdManager <CubismPart>(count); for (int index = 0; index < count; index++) { var id = new CubismPart(id_name_list[index], index, PartOpacities); PartManager.RegisterId(id); } }
/// <summary> /// コアからパラメータ情報を読み出す。 /// </summary> private void InitializeParameters() { int count = CubismCore.CsmGetParameterCount(ModelPtr); if (count < 0) { throw new ArgumentOutOfRangeException(); } // パラメータの現在値、最大値、最小値、デフォルト値を取得する ParameterValues = IntPtrToFloatArray(CubismCore.CsmGetParameterValues(ModelPtr), count); var maximum_values = IntPtrToFloatArray(CubismCore.CsmGetParameterMaximumValues(ModelPtr), count); var minimum_values = IntPtrToFloatArray(CubismCore.CsmGetParameterMinimumValues(ModelPtr), count); var default_values = IntPtrToFloatArray(CubismCore.CsmGetParameterDefaultValues(ModelPtr), count); // パラメータIDを取得し、IDマネージャを作成する string[] id_name_list = IntPtrToStringArray(CubismCore.CsmGetParameterIds(ModelPtr), count); ParameterManager = new CubismIdManager <CubismParameter>(count); for (int index = 0; index < count; index++) { var id = new CubismParameter(id_name_list[index], index, minimum_values[index], maximum_values[index], default_values[index], ParameterValues); ParameterManager.RegisterId(id); } }