DamageOnCollisionSystem.ixx File
System that applies damage when solid collisions occur. More...
Included Headers
#include <format>
#include <string>
#include <helios.util>
#include <helios.math>
#include <helios.engine.mechanics.health.events>
#include <helios.engine.mechanics.spawn.components.EmittedByComponent>
#include <helios.engine.common.tags.SystemRole>
#include <helios.engine.runtime.world.UpdateContext>
#include <helios.engine.mechanics.damage.components.DamageDealerComponent>
#include <helios.engine.runtime.world.GameWorld>
#include <helios.engine.state.Bindings>
#include <helios.engine.mechanics.damage.components.LastDamageComponent>
#include <helios.engine.ecs.GameObject>
#include <helios.engine.runtime.messaging.command.EngineCommandBuffer>
#include <helios.engine.modules.physics.collision.events.SolidCollisionEvent>
#include <helios.engine.mechanics.damage.commands.ApplyDamageCommand>
#include <helios.engine.common.types>
#include <helios.engine.mechanics.health.components.HealthComponent>
#include <helios.engine.mechanics.health.types>
Namespaces Index
| namespace | helios |
| namespace | engine |
|
Main engine module aggregating core infrastructure and game systems. More... | |
| namespace | mechanics |
|
High-level gameplay systems and components for game logic. More... | |
| namespace | damage |
|
Damage dealing system for game entities. More... | |
| namespace | systems |
|
Systems for damage processing. More... | |
Classes Index
| class | DamageOnCollisionSystem |
|
Emits HealthChangedEvents when solid collisions involve damage dealers. More... | |
Macro Definitions Index
| #define | HELIOS_LOG_SCOPE "helios::engine::mechanics::damage::systems::DamageOnCollisionSystem" |
Description
System that applies damage when solid collisions occur.
Macro Definitions
HELIOS_LOG_SCOPE
|
Definition at line 50 of file DamageOnCollisionSystem.ixx.
50#define HELIOS_LOG_SCOPE "helios::engine::mechanics::damage::systems::DamageOnCollisionSystem"
File Listing
The file content with the documentation metadata removed is:
41using namespace helios::engine::mechanics::health::types;
42using namespace helios::engine::mechanics::health::events;
43using namespace helios::engine::mechanics::health::components;
44using namespace helios::engine::mechanics::damage::components;
45using namespace helios::engine::mechanics::damage::commands;
46using namespace helios::engine::mechanics::spawn::components;
48using namespace helios::engine::common::types;
50#define HELIOS_LOG_SCOPE "helios::engine::mechanics::damage::systems::DamageOnCollisionSystem"
51export namespace helios::engine::mechanics::damage::systems {
62 class DamageOnCollisionSystem {
65 inline static const helios::util::log::Logger& logger_ = helios::util::log::LogManager::loggerForScope(
66 HELIOS_LOG_SCOPE);
78 void update(helios::engine::runtime::world::UpdateContext& updateContext) noexcept {
83 for (const auto& event : eventPass) {
85 auto go = updateContext.find(event.collisionContext().source);
91 auto* ddc = go->get<DamageDealerComponent>();
105 auto* hc = target->get<HealthComponent>();
111 const auto damageApplied = ddc->damage(event.collisionContext().otherCollisionLayerId);
121 auto* ebc = go->get<EmittedByComponent>();
128 const auto interactionContext = InteractionContext{
135 auto dc = DamageContext{
140 updateContext.queueCommand<ApplyDamageCommand>(dc);
Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.