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); } } } }
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); } } } }