Example #1
0
        /// <summary>
        ///
        /// </summary>
        /// <returns>Timelines by Key Frames</returns>
        public override Dictionary <int, Timeline> GetExtraTimelines(AnimationClass NewAnimation)
        {
            MagicProjectileSandboxStartAnimation AnimationStartSandbox = GetAnimationStartSandbox(NewAnimation.AnimationOrigin.Position);

            Dictionary <int, Timeline> DicExtraTimeline = new Dictionary <int, Timeline>();
            MagicTimeline NewTimeline = new MagicTimeline(new MagicSpell(Owner, Owner.GlobalContext.ActiveTarget), GlobalContext, SharedParams);

            NewTimeline.DeathFrame = AnimationStartSandbox.TotalSimulationFrames;
            NewAnimation.LoopEnd   = Math.Max(NewAnimation.LoopEnd, NewTimeline.DeathFrame);

            for (int i = 0; i < NewAnimation.ListAnimationLayer.BasicLayerCount; ++i)
            {
                foreach (KeyValuePair <int, List <Timeline> > Timelines in NewAnimation.ListAnimationLayer[i].DicTimelineEvent)
                {
                    foreach (Timeline ActiveTimeline in Timelines.Value)
                    {
                        ActiveTimeline.DeathFrame = Math.Max(ActiveTimeline.DeathFrame, NewTimeline.DeathFrame);
                    }
                }
            }
            DicExtraTimeline.Add(0, NewTimeline);

            SharedParams.OwnerPosition = NewAnimation.AnimationOrigin.Position;
            SharedParams.OwnerAngle    = 0;

            return(DicExtraTimeline);
        }
        public override Timeline Copy(AnimationClass.AnimationLayer ActiveLayer)
        {
            MagicTimeline NewTimelineEvent = new MagicTimeline();

            NewTimelineEvent.UpdateFrom(this, ActiveLayer);

            return(NewTimelineEvent);
        }
Example #3
0
        public override Timeline Copy()
        {
            MagicTimeline NewTimelineEvent = new MagicTimeline();

            NewTimelineEvent.UpdateFrom(this);

            return(NewTimelineEvent);
        }
Example #4
0
        /// <summary>
        ///
        /// </summary>
        /// <returns>Timelines by Key Frames</returns>
        public override Dictionary <int, Timeline> GetExtraTimelines(AnimationClass NewAnimation)
        {
            Vector2   OriginalPosition = SharedParams.OwnerPosition;
            Rectangle EnemyBounds      = GetEnemyPosition(NewAnimation);

            MagicProjectileSandboxEndAnimation AnimationEndSanbox = new MagicProjectileSandboxEndAnimation(EnemyBounds);

            SharedParams.OwnerPosition = OriginalPosition;
            SharedParams.OwnerAngle    = 0;
            List <Projectile> ListProjectileAfterStartAnimationEnded;
            Attack            SpellAttack = GetAnimationStartSandbox(Owner, OriginalPosition, out ListProjectileAfterStartAnimationEnded);

            foreach (Projectile ActiveProjectile in ListProjectileAfterStartAnimationEnded)
            {
                AnimationEndSanbox.AddProjectile(ActiveProjectile);
            }

            Dictionary <int, Timeline> DicExtraTimeline = new Dictionary <int, Timeline>();

            GlobalContext.OwnerSandbox = AnimationEndSanbox;
            SharedParams.OwnerPosition = Vector2.Zero;
            SharedParams.OwnerAngle    = 0;

            AnimationEndSanbox.SimulateAttack(SpellAttack);

            Owner = new MagicSpell(Owner, Owner.GlobalContext.ActiveTarget);
            MagicTimeline NewTimeline = new MagicTimeline(Owner, GlobalContext, SharedParams);

            SharedParams.OwnerPosition = OriginalPosition;
            SharedParams.OwnerAngle    = 0;
            GetAnimationStartSandbox(Owner, OriginalPosition, out ListProjectileAfterStartAnimationEnded);

            foreach (Projectile ActiveProjectile in ListProjectileAfterStartAnimationEnded)
            {
                NewTimeline.AddProjectile(ActiveProjectile);
            }

            NewTimeline.DeathFrame = AnimationEndSanbox.TotalSimulationFrames;
            NewAnimation.LoopEnd   = Math.Max(NewAnimation.LoopEnd, NewTimeline.DeathFrame);
            DicExtraTimeline.Add(0, NewTimeline);

            SharedParams.OwnerPosition = OriginalPosition;
            SharedParams.OwnerAngle    = 0;

            return(DicExtraTimeline);
        }