Helios Engine
A modular ECS based data-oriented C++23 game engine framework
Loading...
Searching...
No Matches
helios::ecs::Scheduler Class Reference

Orchestrates multiple named schedules, handles transitions, and executes them in topological order. More...

#include <scheduler.hpp>

Public Member Functions

 Scheduler ()=default
 Scheduler (const Scheduler &)=delete
 Scheduler (Scheduler &&) noexcept=default
 ~Scheduler ()=default
Scheduleroperator= (const Scheduler &)=delete
Scheduleroperator= (Scheduler &&) noexcept=default
void Build ()
void Build (async::Executor &executor)
void Run (World &world, Executor &executor)
void Run (World &world)
void RunStage (StageTypeIndex stage, World &world)
void RunStage (StageTypeIndex stage, World &world, Executor &executor)
template<StageTrait T>
void RunStage (const T &stage, World &world)
template<StageTrait T>
void RunStage (const T &stage, World &world, Executor &executor)
void Clear ()
ScheduleOrdering Order (ScheduleTypeIndex index)
template<ScheduleTrait T>
ScheduleOrdering Order (const T &schedule={})
StageOrdering OrderStage (StageTypeIndex index)
template<StageTrait T>
StageOrdering OrderStage (const T &stage={})
ScheduleIn (size_t schedule_hash)
ScheduleIn (ScheduleTypeIndex index)
template<ScheduleTrait T>
ScheduleIn (const T &schedule={})
ScheduleOrdering Add (ScheduleTypeId id, Schedule &&schedule)
template<ScheduleTrait T>
ScheduleOrdering Add (const T &schedule, ecs::Schedule &&sched)
StageOrdering AddStage (StageTypeId id)
template<StageTrait T>
StageOrdering AddStage (const T &stage={})
bool Remove (ScheduleTypeIndex index)
template<ScheduleTrait T>
bool Remove (const T &schedule={})
ScheduleTryGetSchedule (ScheduleTypeIndex index)
const ScheduleTryGetSchedule (ScheduleTypeIndex index) const
template<ScheduleTrait T>
ScheduleTryGetSchedule (const T &schedule={})
template<ScheduleTrait T>
const ScheduleTryGetSchedule (const T &schedule={}) const
bool HasStage (StageTypeIndex index) const
template<StageTrait T>
bool HasStage (const T &stage={}) const
bool IsDirty () const noexcept

Friends

class ScheduleOrdering
class StageOrdering

Detailed Description

Orchestrates multiple named schedules, handles transitions, and executes them in topological order.

Schedules are identified by types (empty structs satisfying ScheduleTrait). Stages group schedules via InStage and are ordered with OrderStage. When Run() is called, all schedules are executed in topological order; system-local data (commands, messages) is flushed at each schedule boundary.

Definition at line 150 of file scheduler.hpp.

Constructor & Destructor Documentation

◆ Scheduler() [1/3]

helios::ecs::Scheduler::Scheduler ( )
default

◆ Scheduler() [2/3]

helios::ecs::Scheduler::Scheduler ( const Scheduler & )
delete

◆ Scheduler() [3/3]

helios::ecs::Scheduler::Scheduler ( Scheduler && )
defaultnoexcept

◆ ~Scheduler()

helios::ecs::Scheduler::~Scheduler ( )
default

Member Function Documentation

◆ Add() [1/2]

template<ScheduleTrait T>
ScheduleOrdering helios::ecs::Scheduler::Add ( const T & schedule,
ecs::Schedule && sched )
inline

Definition at line 200 of file scheduler.hpp.

◆ Add() [2/2]

ScheduleOrdering helios::ecs::Scheduler::Add ( ScheduleTypeId id,
Schedule && schedule )
inline

Definition at line 436 of file scheduler.hpp.

◆ AddStage() [1/2]

template<StageTrait T>
StageOrdering helios::ecs::Scheduler::AddStage ( const T & stage = {})
inline

Definition at line 207 of file scheduler.hpp.

◆ AddStage() [2/2]

StageOrdering helios::ecs::Scheduler::AddStage ( StageTypeId id)
inline

Definition at line 454 of file scheduler.hpp.

◆ Build() [1/2]

void helios::ecs::Scheduler::Build ( )
inline

Definition at line 361 of file scheduler.hpp.

◆ Build() [2/2]

void helios::ecs::Scheduler::Build ( async::Executor & executor)
inline

Definition at line 368 of file scheduler.hpp.

◆ Clear()

void helios::ecs::Scheduler::Clear ( )
inline

Definition at line 396 of file scheduler.hpp.

◆ HasStage() [1/2]

template<StageTrait T>
bool helios::ecs::Scheduler::HasStage ( const T & stage = {}) const
inlinenodiscard

Definition at line 234 of file scheduler.hpp.

◆ HasStage() [2/2]

bool helios::ecs::Scheduler::HasStage ( StageTypeIndex index) const
inlinenodiscard

Definition at line 492 of file scheduler.hpp.

◆ In() [1/3]

template<ScheduleTrait T>
Schedule & helios::ecs::Scheduler::In ( const T & schedule = {})
inline

Definition at line 417 of file scheduler.hpp.

◆ In() [2/3]

Schedule & helios::ecs::Scheduler::In ( ScheduleTypeIndex index)
inline

Definition at line 412 of file scheduler.hpp.

◆ In() [3/3]

Schedule & helios::ecs::Scheduler::In ( size_t schedule_hash)
inline

Definition at line 405 of file scheduler.hpp.

◆ IsDirty()

bool helios::ecs::Scheduler::IsDirty ( ) const
inlinenodiscardnoexcept

Definition at line 496 of file scheduler.hpp.

◆ operator=() [1/2]

Scheduler & helios::ecs::Scheduler::operator= ( const Scheduler & )
delete

◆ operator=() [2/2]

Scheduler & helios::ecs::Scheduler::operator= ( Scheduler && )
defaultnoexcept

◆ Order() [1/2]

template<ScheduleTrait T>
ScheduleOrdering helios::ecs::Scheduler::Order ( const T & schedule = {})
inlinenodiscard

Definition at line 180 of file scheduler.hpp.

◆ Order() [2/2]

ScheduleOrdering helios::ecs::Scheduler::Order ( ScheduleTypeIndex index)
inlinenodiscard

Definition at line 424 of file scheduler.hpp.

◆ OrderStage() [1/2]

template<StageTrait T>
StageOrdering helios::ecs::Scheduler::OrderStage ( const T & stage = {})
inlinenodiscard

Definition at line 187 of file scheduler.hpp.

◆ OrderStage() [2/2]

StageOrdering helios::ecs::Scheduler::OrderStage ( StageTypeIndex index)
inlinenodiscard

Definition at line 430 of file scheduler.hpp.

◆ Remove() [1/2]

template<ScheduleTrait T>
bool helios::ecs::Scheduler::Remove ( const T & schedule = {})
inline

Definition at line 214 of file scheduler.hpp.

◆ Remove() [2/2]

bool helios::ecs::Scheduler::Remove ( ScheduleTypeIndex index)
inline

Definition at line 465 of file scheduler.hpp.

◆ Run() [1/2]

void helios::ecs::Scheduler::Run ( World & world)

Definition at line 125 of file scheduler.cpp.

◆ Run() [2/2]

void helios::ecs::Scheduler::Run ( World & world,
Executor & executor )

Definition at line 107 of file scheduler.cpp.

◆ RunStage() [1/4]

template<StageTrait T>
void helios::ecs::Scheduler::RunStage ( const T & stage,
World & world )
inline

Definition at line 376 of file scheduler.hpp.

◆ RunStage() [2/4]

template<StageTrait T>
void helios::ecs::Scheduler::RunStage ( const T & stage,
World & world,
Executor & executor )
inline

Definition at line 386 of file scheduler.hpp.

◆ RunStage() [3/4]

void helios::ecs::Scheduler::RunStage ( StageTypeIndex stage,
World & world )

Definition at line 143 of file scheduler.cpp.

◆ RunStage() [4/4]

void helios::ecs::Scheduler::RunStage ( StageTypeIndex stage,
World & world,
Executor & executor )

Definition at line 170 of file scheduler.cpp.

◆ TryGetSchedule() [1/4]

template<ScheduleTrait T>
Schedule * helios::ecs::Scheduler::TryGetSchedule ( const T & schedule = {})
inlinenodiscard

Definition at line 222 of file scheduler.hpp.

◆ TryGetSchedule() [2/4]

template<ScheduleTrait T>
const Schedule * helios::ecs::Scheduler::TryGetSchedule ( const T & schedule = {}) const
inlinenodiscard

Definition at line 227 of file scheduler.hpp.

◆ TryGetSchedule() [3/4]

Schedule * helios::ecs::Scheduler::TryGetSchedule ( ScheduleTypeIndex index)
inlinenodiscard

Definition at line 475 of file scheduler.hpp.

◆ TryGetSchedule() [4/4]

const Schedule * helios::ecs::Scheduler::TryGetSchedule ( ScheduleTypeIndex index) const
inlinenodiscard

Definition at line 483 of file scheduler.hpp.

◆ ScheduleOrdering

friend class ScheduleOrdering
friend

Definition at line 292 of file scheduler.hpp.

◆ StageOrdering

friend class StageOrdering
friend

Definition at line 293 of file scheduler.hpp.