Bicameral Engine
GPU-resident engine for a magic-research open-world game
Loading...
Searching...
No Matches
bicameral::frame::SimScheduler Class Reference

#include <sim_scheduler.h>

Collaboration diagram for bicameral::frame::SimScheduler:
[legend]

Public Member Functions

 SimScheduler (uint32_t unitsPerTick, const SimSchedulerSettings &settings={})
void AddRealTime (double seconds, double speedScale=1.0)
void ClearBacklog ()
void AddTicks (uint32_t ticks)
void SetStopTick (uint64_t tick)
bool ReachedStopTick () const
void SetBreakInterval (uint64_t ticks)
void Rewind (uint64_t tick)
void ReportUnitTime (uint32_t unit, double gpuMilliseconds)
void ReportRenderTime (double gpuMilliseconds)
uint32_t TakeUnits ()
SimCursor Cursor () const
uint32_t UnitsPerTick () const
double BudgetMilliseconds () const
double UnitMilliseconds (uint32_t unit) const
double RenderMilliseconds () const
double PendingTicks () const
uint64_t DroppedTicks () const

Private Member Functions

double EstimateMilliseconds (uint32_t unit, double budgetMilliseconds) const

Private Attributes

SimSchedulerSettings m_settings
uint32_t m_unitsPerTick = 1
SimCursor m_cursor
uint64_t m_stopTick = UINT64_MAX
uint64_t m_breakInterval = 0
double m_pendingTicks = 0.0
uint64_t m_droppedTicks = 0
double m_renderMilliseconds = 0.0
std::vector< double > m_unitMilliseconds

Detailed Description

Definition at line 42 of file sim_scheduler.h.

Constructor & Destructor Documentation

◆ SimScheduler()

bicameral::frame::SimScheduler::SimScheduler ( uint32_t unitsPerTick,
const SimSchedulerSettings & settings = {} )

Definition at line 16 of file sim_scheduler.cpp.

References m_settings, m_unitMilliseconds, and m_unitsPerTick.

Member Function Documentation

◆ AddRealTime()

void bicameral::frame::SimScheduler::AddRealTime ( double seconds,
double speedScale = 1.0 )

Definition at line 19 of file sim_scheduler.cpp.

References m_droppedTicks, m_pendingTicks, and m_settings.

Referenced by bicameral::editor::TimeControl::AdvanceRealTime().

Here is the caller graph for this function:

◆ AddTicks()

void bicameral::frame::SimScheduler::AddTicks ( uint32_t ticks)
inline

Definition at line 53 of file sim_scheduler.h.

References m_pendingTicks.

Referenced by bicameral::editor::TimeControl::Apply().

Here is the caller graph for this function:

◆ BudgetMilliseconds()

double bicameral::frame::SimScheduler::BudgetMilliseconds ( ) const
nodiscard

Definition at line 46 of file sim_scheduler.cpp.

References m_renderMilliseconds, and m_settings.

Referenced by TakeUnits().

Here is the caller graph for this function:

◆ ClearBacklog()

void bicameral::frame::SimScheduler::ClearBacklog ( )
inline

Definition at line 52 of file sim_scheduler.h.

References m_pendingTicks.

Referenced by bicameral::editor::TimeControl::Apply().

Here is the caller graph for this function:

◆ Cursor()

SimCursor bicameral::frame::SimScheduler::Cursor ( ) const
inlinenodiscard

Definition at line 75 of file sim_scheduler.h.

References m_cursor.

◆ DroppedTicks()

uint64_t bicameral::frame::SimScheduler::DroppedTicks ( ) const
inlinenodiscard

Definition at line 83 of file sim_scheduler.h.

References m_droppedTicks.

◆ EstimateMilliseconds()

double bicameral::frame::SimScheduler::EstimateMilliseconds ( uint32_t unit,
double budgetMilliseconds ) const
nodiscardprivate

Definition at line 53 of file sim_scheduler.cpp.

References m_unitMilliseconds.

Referenced by TakeUnits().

Here is the caller graph for this function:

◆ PendingTicks()

double bicameral::frame::SimScheduler::PendingTicks ( ) const
inlinenodiscard

Definition at line 82 of file sim_scheduler.h.

References m_pendingTicks.

◆ ReachedStopTick()

bool bicameral::frame::SimScheduler::ReachedStopTick ( ) const
inlinenodiscard

Definition at line 57 of file sim_scheduler.h.

References m_cursor, and m_stopTick.

◆ RenderMilliseconds()

double bicameral::frame::SimScheduler::RenderMilliseconds ( ) const
inlinenodiscard

Definition at line 81 of file sim_scheduler.h.

References m_renderMilliseconds.

◆ ReportRenderTime()

void bicameral::frame::SimScheduler::ReportRenderTime ( double gpuMilliseconds)

Definition at line 39 of file sim_scheduler.cpp.

References m_renderMilliseconds, and m_settings.

◆ ReportUnitTime()

void bicameral::frame::SimScheduler::ReportUnitTime ( uint32_t unit,
double gpuMilliseconds )

Definition at line 32 of file sim_scheduler.cpp.

References m_settings, m_unitMilliseconds, and m_unitsPerTick.

◆ Rewind()

void bicameral::frame::SimScheduler::Rewind ( uint64_t tick)
inline

Definition at line 63 of file sim_scheduler.h.

References m_cursor.

◆ SetBreakInterval()

void bicameral::frame::SimScheduler::SetBreakInterval ( uint64_t ticks)
inline

Definition at line 61 of file sim_scheduler.h.

References m_breakInterval.

◆ SetStopTick()

void bicameral::frame::SimScheduler::SetStopTick ( uint64_t tick)
inline

Definition at line 56 of file sim_scheduler.h.

References m_stopTick.

◆ TakeUnits()

uint32_t bicameral::frame::SimScheduler::TakeUnits ( )
nodiscard

Definition at line 58 of file sim_scheduler.cpp.

References BudgetMilliseconds(), EstimateMilliseconds(), m_breakInterval, m_cursor, m_pendingTicks, m_settings, m_stopTick, and m_unitsPerTick.

Here is the call graph for this function:

◆ UnitMilliseconds()

double bicameral::frame::SimScheduler::UnitMilliseconds ( uint32_t unit) const
inlinenodiscard

Definition at line 80 of file sim_scheduler.h.

References m_unitMilliseconds.

◆ UnitsPerTick()

uint32_t bicameral::frame::SimScheduler::UnitsPerTick ( ) const
inlinenodiscard

Definition at line 76 of file sim_scheduler.h.

References m_unitsPerTick.

Member Data Documentation

◆ m_breakInterval

uint64_t bicameral::frame::SimScheduler::m_breakInterval = 0
private

Definition at line 94 of file sim_scheduler.h.

Referenced by SetBreakInterval(), and TakeUnits().

◆ m_cursor

SimCursor bicameral::frame::SimScheduler::m_cursor
private

Definition at line 92 of file sim_scheduler.h.

Referenced by Cursor(), ReachedStopTick(), Rewind(), and TakeUnits().

◆ m_droppedTicks

uint64_t bicameral::frame::SimScheduler::m_droppedTicks = 0
private

Definition at line 96 of file sim_scheduler.h.

Referenced by AddRealTime(), and DroppedTicks().

◆ m_pendingTicks

double bicameral::frame::SimScheduler::m_pendingTicks = 0.0
private

Definition at line 95 of file sim_scheduler.h.

Referenced by AddRealTime(), AddTicks(), ClearBacklog(), PendingTicks(), and TakeUnits().

◆ m_renderMilliseconds

double bicameral::frame::SimScheduler::m_renderMilliseconds = 0.0
private

Definition at line 99 of file sim_scheduler.h.

Referenced by BudgetMilliseconds(), RenderMilliseconds(), and ReportRenderTime().

◆ m_settings

SimSchedulerSettings bicameral::frame::SimScheduler::m_settings
private

◆ m_stopTick

uint64_t bicameral::frame::SimScheduler::m_stopTick = UINT64_MAX
private

Definition at line 93 of file sim_scheduler.h.

Referenced by ReachedStopTick(), SetStopTick(), and TakeUnits().

◆ m_unitMilliseconds

std::vector<double> bicameral::frame::SimScheduler::m_unitMilliseconds
private

◆ m_unitsPerTick

uint32_t bicameral::frame::SimScheduler::m_unitsPerTick = 1
private

Definition at line 89 of file sim_scheduler.h.

Referenced by ReportUnitTime(), SimScheduler(), TakeUnits(), and UnitsPerTick().


The documentation for this class was generated from the following files: