Ejemplo n.º 1
0
 public void TriggerEvent(ActionStateEvent actionEvent)
 {
     for (int i = 0; i < _actionData.Length; i++)
     {
         if (_actionData[i].Event == actionEvent.State || (_actionData[i].Event == ActionStateEvents.CollisionOrImpact && (actionEvent.State == ActionStateEvents.Impact || actionEvent.State == ActionStateEvents.Collision)))
         {
             if (_actionData[i].Sound != null)
             {
                 AudioPool.PlayClip(_actionData[i].Sound, actionEvent.Position, 0.5f);
             }
             if (_actionData[i].Particle.Animation == null)
             {
                 continue;
             }
             switch (_actionData[i].Event)
             {
             case ActionStateEvents.Collision:
             case ActionStateEvents.CollisionOrImpact:
             case ActionStateEvents.Impact:
                 if (actionEvent.Target != null)
                 {
                     var impactRenderer = actionEvent.Target.Get <ImpactRendererComponent>();
                     if (impactRenderer != null)
                     {
                         impactRenderer.PlayAnimation(_actionData[i].Particle.Animation, _actionData[i].Particle.Color);
                         continue;
                     }
                 }
                 break;
             }
             //var spawn = ItemPool.SpawnScenePrefab(_actionPrefabs[i].Prefab, actionEvent.Position, actionEvent.Rotation);
             //CheckObjectForListener(spawn, actionEvent);
             var particle = SpriteParticleSystem.PlayParticle(_actionData[i].Particle, actionEvent.Position, actionEvent.Rotation);
             if (!_actionData[i].Parent)
             {
                 continue;
             }
             TransformComponent tr = null;
             if (actionEvent.Target == null)
             {
                 tr = actionEvent.Origin.Tr;
             }
             else
             {
                 tr = actionEvent.Target.Tr;
             }
             if (tr != null)
             {
                 tr.SetChild(particle.Tr);
             }
         }
     }
 }
Ejemplo n.º 2
0
 public void TriggerEvent(ActionState state, Vector3 position, Quaternion rotation, CharacterTemplate target)
 {
     for (int i = 0; i < _actionData.Length; i++)
     {
         if (_actionData[i].Event == state || (_actionData[i].Event == ActionState.CollisionOrImpact && (state == ActionState.Impact || state == ActionState.Collision)))
         {
             if (_actionData[i].Sound != null)
             {
                 AudioPool.PlayClip(_actionData[i].Sound, position, 0.5f);
             }
             if (_actionData[i].Particle.Animation == null)
             {
                 continue;
             }
             switch (_actionData[i].Event)
             {
             case ActionState.Collision:
             case ActionState.CollisionOrImpact:
             case ActionState.Impact:
                 if (target != null)
                 {
                     var impactRenderer = target.Entity.Get <ImpactRendererComponent>();
                     if (impactRenderer != null)
                     {
                         impactRenderer.PlayAnimation(_actionData[i].Particle.Animation, _actionData[i].Particle.Color);
                         continue;
                     }
                 }
                 break;
             }
             //var spawn = ItemPool.SpawnScenePrefab(_actionPrefabs[i].Prefab, actionEvent.Position, actionEvent.Rotation);
             //CheckObjectForListener(spawn, actionEvent);
             var particle = SpriteParticleSystem.PlayParticle(_actionData[i].Particle, position, rotation);
             if (_actionData[i].Parent && target != null && target.Tr != null)
             {
                 target.Tr.SetChild(particle.Tr);
             }
         }
     }
 }