<--Home Page

Event System

Passive Check

class CollisionSystem {
  void Update(){
      //.../
      if(collisionHappened) {
        eventBus->EmitEvent<CollisionEvent>();
      }
  }
}

class DamageSystem {
  void Update() {
    for (auto e: eventBus->GetEvents<CollisionEvent>() {
      //......
    }
  }
}

Blocking

 class CollisionSystem {
   void Update(){
       //.../
       if(collisionHappened) {
         eventBus->EmitEvent<CollisionEvent>(a, b);
       }
   }
 }

 class DamageSystem {
   eventBus->SubscribeToEvent<CollisionEvent>(onCollision);

   void onCollision(Entity a, Entity b) {
      //....
   }
}

Date: <2024-01-11 Thu>

Author: TerryFung

Emacs30.1 (Org mode 9.7.11)