public void ProcessAnimationAction(AnimationEventTemplate aeTemplate, ActionTemplate action, string animEvent) { var character = aeTemplate.Entity.FindTemplate <CharacterTemplate>(); var ae = new ActionEvent(character, character, aeTemplate.AnimEvent.Position, aeTemplate.AnimEvent.Rotation, AnimationEvents.ToStateEvent(animEvent)); if (ae.State == ActionState.Activate) { Debug.DrawLine( aeTemplate.AnimEvent.Position, aeTemplate.AnimEvent.Rotation.GetPosition(aeTemplate.AnimEvent.Position, 2.5f), Color.red, 5f); } var animationList = action.Config.GetEventHandler(animEvent); if (animationList != null) { for (int i = 0; i < animationList.Count; i++) { animationList[i].Trigger(ae, animEvent); } } if (ae.State != ActionState.None) { aeTemplate.Entity.Post(ae); action.Entity.PostNoGlobal(ae); } if (ae.State == ActionState.Start) { for (int i = 0; i < action.Config.Costs.Count; i++) { action.Config.Costs[i].ProcessCost(ae.Origin, action.Entity); } } }
private void FindEventPositionRotation(AnimationEventTemplate aet, ActionTemplate action) { var target = aet.Target; if (action != null) { if (action.Weapon?.Loaded != null) { aet.AnimEvent.Position = action.Weapon.Loaded.Spawn.position; aet.AnimEvent.Rotation = target?.GetLookAtTarget(aet.AnimEvent.Position) ?? action.Weapon.Loaded.Spawn.rotation; return; } if (action.SpawnPivot != null) { aet.AnimEvent.Position = action.SpawnPivot.position; aet.AnimEvent.Rotation = target?.GetLookAtTarget(aet.AnimEvent.Position) ?? action.SpawnPivot.rotation; return; } } if (aet.SpriteAnimator?.CurrentFrame != null) { if (aet.SpriteRenderer != null) { aet.AnimEvent.Position = aet.SpriteRenderer.GetEventPosition(aet.SpriteAnimator.CurrentFrame); aet.AnimEvent.Rotation = target?.GetLookAtTarget(aet.AnimEvent.Position) ?? aet.SpriteRenderer.BaseTr.rotation; } else { aet.AnimEvent.Position = aet.SimpleSpriteRenderer.GetEventPosition(aet.SpriteAnimator.CurrentFrame, action?.Config.EquippedSlot ?? 0); aet.AnimEvent.Rotation = target?.GetLookAtTarget(aet.AnimEvent.Position) ?? aet.SimpleSpriteRenderer.Rotation; } return; } if (aet.SpawnPivot != null) { aet.AnimEvent.Position = aet.SpawnPivot.position; aet.AnimEvent.Rotation = target?.GetLookAtTarget(aet.AnimEvent.Position) ?? aet.SpawnPivot.rotation; } else { aet.AnimEvent.Position = aet.Tr.position; aet.AnimEvent.Rotation = target?.GetLookAtTarget(aet.AnimEvent.Position) ?? aet.Tr.rotation; } }