public static ElementAnimationsViewModel FromSave(ElementAnimationsSave save, Gum.DataTypes.ElementSave element) { ElementAnimationsViewModel toReturn = new ElementAnimationsViewModel(); foreach (var animation in save.Animations) { var vm = AnimationViewModel.FromSave(animation, element); toReturn.Animations.Add(vm); } return(toReturn); }
public static AnimationViewModel FromSave(AnimationSave save, ElementSave element, ElementAnimationsSave allAnimationSaves = null) { AnimationViewModel toReturn = new AnimationViewModel(); toReturn.Name = save.Name; toReturn.mLoops = save.Loops; foreach (var stateSave in save.States) { var foundState = element.AllStates.FirstOrDefault(item => item.Name == stateSave.StateName); var newAnimatedStateViewModel = AnimatedKeyframeViewModel.FromSave(stateSave); newAnimatedStateViewModel.HasValidState = foundState != null; toReturn.Keyframes.Add(newAnimatedStateViewModel); } foreach (var animationReference in save.Animations) { AnimationSave animationSave = null; ElementSave subAnimationElement = null; ElementAnimationsSave subAnimationSiblings = null; if (string.IsNullOrEmpty(animationReference.SourceObject)) { if (allAnimationSaves == null) { allAnimationSaves = AnimationCollectionViewModelManager.Self.GetElementAnimationsSave(element); } animationSave = allAnimationSaves.Animations.FirstOrDefault(item => item.Name == animationReference.RootName); subAnimationElement = element; subAnimationSiblings = allAnimationSaves; } else { var instance = element.Instances.FirstOrDefault(item => item.Name == animationReference.SourceObject); if (instance != null) { ElementSave instanceElement = Gum.Managers.ObjectFinder.Self.GetElementSave(instance); subAnimationElement = instanceElement; if (instanceElement != null) { var allAnimations = AnimationCollectionViewModelManager.Self.GetElementAnimationsSave(instanceElement); animationSave = allAnimations.Animations.FirstOrDefault(item => item.Name == animationReference.RootName); subAnimationElement = instanceElement; subAnimationSiblings = allAnimations; } } } var newVm = AnimatedKeyframeViewModel.FromSave(animationReference); if (animationSave != null) { newVm.SubAnimationViewModel = AnimationViewModel.FromSave(animationSave, subAnimationElement, subAnimationSiblings); } newVm.HasValidState = animationReference != null; toReturn.Keyframes.Add(newVm); } toReturn.SortList(); return(toReturn); }