示例#1
0
        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);
                }
            }
        }
示例#2
0
 public PrepareDamageEvent(ImpactEvent impact, CharacterTemplate origin, CharacterTemplate target)
 {
     Entries = GenericPools.New <List <DamageEntry> >();
     Impact  = impact;
     Origin  = origin;
     Target  = target;
     Action  = impact.Action;
 }
示例#3
0
 public ActionEvent(ActionTemplate action, CharacterTemplate origin, CharacterTemplate target, Vector3 position, Quaternion rotation, ActionState state)
 {
     Action   = action;
     Origin   = origin;
     Target   = target;
     Position = position;
     Rotation = rotation;
     State    = state;
 }
示例#4
0
 public ActionHolder(int chanceNotNormalized, Entity actionEntity, AdvancedTargeting targeting)
 {
     Chance = chanceNotNormalized;
     if (actionEntity != null)
     {
         Action = actionEntity.GetTemplate <ActionTemplate>();
     }
     Targeting = targeting;
     LastRoll  = 0;
 }
示例#5
0
 public TakeDamageEvent(ref PrepareDamageEvent prepareEvent)
 {
     Action  = prepareEvent.Action;
     Origin  = prepareEvent.Origin;
     Target  = prepareEvent.Target;
     Impact  = prepareEvent.Impact;
     Entries = prepareEvent.Entries;
     Amount  = prepareEvent.CurrentTotal();
     prepareEvent.Entries = null;
 }
 public ImpactEvent(CollisionEvent collisionEvent, ActionTemplate action, CharacterTemplate origin, CharacterTemplate target)
 {
     Source    = collisionEvent.Source;
     Hit       = collisionEvent.Hit;
     Origin    = origin;
     Target    = target;
     HitPoint  = collisionEvent.HitPoint;
     HitNormal = collisionEvent.HitNormal;
     Action    = action;
 }
示例#7
0
 public void EquipToEmpty(ActionTemplate actionConfig)
 {
     for (int i = 0; i < _actions.Length; i++)
     {
         if (_actions[i] == null)
         {
             EquipAction(actionConfig, i);
             return;
         }
     }
 }
示例#8
0
 public void EquipAction(ActionTemplate template, int slot)
 {
     if (_actions.Length <= slot)
     {
         System.Array.Resize(ref _actions, slot + 1);
     }
     if (_actions[slot] != null)
     {
         RemoveAction(slot);
     }
     if (template == null)
     {
         return;
     }
     _actions[slot] = template;
     template.Config.EquippedSlot = slot;
     this.GetEntity().Post(new ReadyActionsChanged(slot, template, this));
 }
        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;
            }
        }
示例#10
0
 public RaiseDeadEvent(CharacterTemplate source, CharacterTemplate target)
 {
     Action = source.CurrentAction;
     Origin = source;
     Target = target;
 }
示例#11
0
 public ReadyActionsChanged(int index, ActionTemplate action, ReadyActions container)
 {
     Index     = index;
     Action    = action;
     Container = container;
 }