private void MakeAnimationCurves(GameObject root, AnimationClip animClip, Animation animation) { var acb = new AnimationCurveBuilder(); //Set all gameobjects to inactive in first frame SetActiveRecursive(root.transform, false); root.SetActive(true); foreach(var mainlineKey in animation.MainlineKeys) { //Debug.Log(string.Format("Starting MainlineKey for {0} at {1} seconds", animation.Name, mainlineKey.Time)); SetGameObjectForKey(root, animClip, mainlineKey); //Take a snapshot for our animation //AnimationMode.SampleAnimationClip(root, animClip, mainlineKey.Time); acb.SetCurveRecursive(root.transform, mainlineKey.Time); } acb.AddCurves(animClip); }
public AnimationClip MakeAnimationClip(GameObject root, Animation animation) { //Clear local caches lastGameObjectCache.Clear(); animationEvents.Clear(); var animClip = new AnimationClip(); animClip.name = animation.Name; //Set clip to Generic type AnimationUtility.SetAnimationType(animClip, ModelImporterAnimationType.Generic); //Populate the animation curves & events MakeAnimationCurves(root, animClip, animation); //Add events to the clip AnimationUtility.SetAnimationEvents(animClip, animationEvents.ToArray()); return animClip; }