Example #1
0
        /// <summary>
        /// モデルのパラメータを更新する。
        /// </summary>
        public void Update()
        {
            // 現在のパラメータ設定値をコアに戻す
            Marshal.Copy(ParameterValues, 0, CubismCore.CsmGetParameterValues(ModelPtr), ParameterCount);
            Marshal.Copy(PartOpacities, 0, CubismCore.CsmGetPartOpacities(ModelPtr), PartCount);

            // 次のパラメータを計算する
            CubismCore.CsmUpdateModel(ModelPtr);

            // 新しいパラメータ設定値をコアから読み出す
            Marshal.Copy(CubismCore.CsmGetParameterValues(ModelPtr), ParameterValues, 0, ParameterCount);
            Marshal.Copy(CubismCore.CsmGetPartOpacities(ModelPtr), PartOpacities, 0, PartCount);

            // Drawableの情報をコアから読み出す
            UpdateDrawables();

            // 動的フラグをクリアする
            CubismCore.CsmResetDrawableDynamicFlags(ModelPtr);
        }
Example #2
0
        /// <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);
            }
        }