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);
        }
Example #2
0
        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);
        }