/// <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); }
public override Timeline Copy() { MagicTimeline NewTimelineEvent = new MagicTimeline(); NewTimelineEvent.UpdateFrom(this); return(NewTimelineEvent); }
/// <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); }