void AddKey(int startIndex, Dictionary <string, string> traitPropMap) { AnimationClip clip = wAnimationWindowHelper.GetAnimationWindowCurrentClip(); if (clip == null) { Debug.Log("編集中のアニメーションクリップが存在しません"); return; } for (int i = 0; i < halfHandMusclesCount; i++) { int rightIndex = startIndex + i; float muscleValue = handModelPose.muscles[rightIndex]; string muscleName = HumanTrait.MuscleName[rightIndex]; EditorCurveBinding curveBinding = new EditorCurveBinding(); curveBinding.path = targetPath; curveBinding.propertyName = traitPropMap[muscleName]; curveBinding.type = typeof(Animator); AnimationCurve curve = AnimationUtility.GetEditorCurve(clip, curveBinding); if (curve == null) { curve = new AnimationCurve(); } AnimationWindowController.SetKey(curve, animationTime, muscleValue); AnimationUtility.SetEditorCurve(clip, curveBinding, curve); } }
void SetKey(AnimationClip clip, string propertyName, int value) { EditorCurveBinding curveBinding = new EditorCurveBinding(); curveBinding.path = targetPath; curveBinding.propertyName = propertyName; curveBinding.type = typeof(TexFacialController); AnimationCurve curve = AnimationUtility.GetEditorCurve(clip, curveBinding); if (curve == null) { curve = new AnimationCurve(); } int keyIndex = AnimationWindowController.SetKey(curve, animationTime, value); //Constantカーブにする AnimationUtility.SetKeyLeftTangentMode(curve, keyIndex, AnimationUtility.TangentMode.Constant); AnimationUtility.SetKeyRightTangentMode(curve, keyIndex, AnimationUtility.TangentMode.Constant); AnimationUtility.SetEditorCurve(clip, curveBinding, curve); }