private static AnimatorOverrideController CreateAnimatorOverride(Sprite[] sprites, AnimationClip[] overrideClips) { var settings = DefaultAnimationsSettings.Instance; var animatorOverride = AssetHelper.GetAsset <AnimatorOverrideController>(sprites.GetSpritesheetName()); animatorOverride.runtimeAnimatorController = settings.AnimatorController; animatorOverride.ApplyOverrides( settings.AnimationsMapping.Select(m => m.ClipToOverride).ToArray(), overrideClips); animatorOverride.SaveAsset(); return(animatorOverride); }
private static AnimationClip CreateAnimationClip(DefaultAnimationsSettings.AnimationMapping map, DefaultAnimationsSettings settings, params Sprite[] sprites) { var clip = AssetHelper.GetAsset <AnimationClip>($"{sprites.GetSpritesheetName()}-{map.Name}"); clip.frameRate = map.ClipToOverride.frameRate; clip.wrapMode = map.ClipToOverride.wrapMode; // In more complex animation clip, maybe will be needed to copy more settings. var clipToOverrideSettings = AnimationUtility.GetAnimationClipSettings(map.ClipToOverride); clip.EditSettings(s => s.loopTime = clipToOverrideSettings.loopTime); // Create the keyframes based on source animation, but with the new sprites. var keyFramesToOverride = map.ClipToOverride.GetKeyFrames(); var keyFrames = keyFramesToOverride.CreateWithSprites(sprites); clip.SetKeyFrames(keyFrames); clip.SaveAsset(); return(clip); }