Dev - #296
Conversation
…rRegistry and add command buffer initialization
…update command submission details
…ated implementation
… namespace usage prevents circular dependencies with StateTransitionRules and listener classes
…istry access method
…d and UpdateContext
…ntext version to 4.1
to conform w/ OpenGL 4.1
Ecs rendering
There was a problem hiding this comment.
Pull request overview
This PR refactors Helios’ runtime command/handler plumbing to decouple systems and managers from GameWorld by injecting typed command buffers into update() and registering handlers through a CommandHandlerRegistry. In parallel, it migrates the timing subsystem from helios::gameplay::timing into helios::runtime::timing, and introduces a dedicated PlatformCommandBuffer for platform/window command dispatch.
Changes:
- Switches systems to
update(UpdateContext&, TCommandBuffer&)withCommandBuffer_typefor command submission viacmdBuffer.add<...>()(removingUpdateContext::queueCommand). - Moves timer types/components/commands/systems under
helios::runtime::timingand updates call sites (TimerManager::getTimer,TimerBindingComponent, etc.). - Adds platform-focused command buffer + GLFW integration updates, plus a few new foundational components (
BindingComponent,SizeComponent) and module/export adjustments.
Reviewed changes
Copilot reviewed 135 out of 140 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| include/helios/ui/widgets/systems/MenuNavigationSystem.ixx | Updates menu navigation system to injected command buffer + template get usage. |
| include/helios/ui/widgets/systems/MenuDisplaySystem.ixx | Adds template disambiguators for dependent component ops. |
| include/helios/ui/transform/systems/UiTransformSystem.ixx | Adds missing include + template disambiguators; switch default in anchor handling. |
| include/helios/ui/layout/components/TimeFormatterComponent.ixx | Updates doc reference to renamed timer binding system. |
| include/helios/ui/binding/systems/_module.ixx | Re-exports renamed timer→UI binding system module. |
| include/helios/ui/binding/systems/Score2UiTextUpdateSystem.ixx | Adds template keyword for dependent formatter call. |
| include/helios/ui/binding/systems/MaxScore2UiTextUpdateSystem.ixx | Adds template keyword for dependent formatter call; import ordering cleanup. |
| include/helios/ui/binding/systems/Lives2UiTextUpdateSystem.ixx | Moves SystemRole import; adds template keyword for dependent get. |
| include/helios/ui/binding/systems/GameTimer2UiTextUpdateSystem.ixx | Renames to Timer2UiTextUpdateSystem and migrates to runtime timing API. |
| include/helios/ui/UiActionCommandManager.ixx | Registers handler via CommandHandlerRegistry instead of GameWorld. |
| include/helios/tooling/FramePacer.ixx | Replaces owned Stopwatch pointer with value member and removes ctor injection. |
| include/helios/state/commands/DelayedStateCommand.ixx | Migrates delayed commands from GameTimerId to TimerId and renames accessor. |
| include/helios/state/StateToIdMap.ixx | Adds <utility> include. |
| include/helios/state/StateManager.ixx | Registers state command handlers via CommandHandlerRegistry. |
| include/helios/state/CombinedStateToIdMapPair.ixx | Adds <utility> include. |
| include/helios/spatial/transform/components/_module.ixx | Exports newly added SizeComponent. |
| include/helios/spatial/transform/components/SizeComponent.ixx | Introduces a dirty-tracked 2D size component. |
| include/helios/scene/systems/SceneMemberRenderExtractionSystem.ixx | Uses injected command buffer; tightens culler concept binding to handle type. |
| include/helios/scene/concepts/IsFrustumCullerLike.ixx | Generalizes concept to accept a handle type rather than EntityHandle<StrongId>. |
| include/helios/runtime/world/concepts/_module.ixx | Removes re-export of deleted HasInit world concept. |
| include/helios/runtime/world/concepts/IsSystemLike.ixx | Imports full UpdateContext rather than forward decl partition. |
| include/helios/runtime/world/concepts/IsManagerLike.ixx | Imports full UpdateContext rather than forward decl partition. |
| include/helios/runtime/world/concepts/HasUpdate.ixx | Imports full UpdateContext rather than forward decl partition. |
| include/helios/runtime/world/concepts/HasInit.ixx | Deletes obsolete world-level optional init concept. |
| include/helios/runtime/world/UpdateContextFwd.ixx | Deletes forward declaration partition in favor of direct imports. |
| include/helios/runtime/world/UpdateContext.ixx | Removes command submission + ResourceRegistry dependency; clarifies doc for injected cmd buffers. |
| include/helios/runtime/world/System.ixx | Removes type-erased System::init forwarding; switches to world concept module import. |
| include/helios/runtime/world/Session.ixx | Adjusts state type imports to narrower module import. |
| include/helios/runtime/world/ResourceRegistry.ixx | Exposes CommandBufferRegistry& accessor. |
| include/helios/runtime/world/Manager.ixx | Changes optional manager init to accept CommandHandlerRegistry& instead of GameWorld&. |
| include/helios/runtime/world/GameWorldFwd.ixx | Deletes GameWorld forward decl partition. |
| include/helios/runtime/world/GameWorld.ixx | Initializes managers via handler registry; initializes command buffers with handler registry + timer manager. |
| include/helios/runtime/timing/types/_module.ixx | Adds runtime timing types aggregator module. |
| include/helios/runtime/timing/types/TimerState.ixx | Migrates module/namespace from gameplay timing to runtime timing. |
| include/helios/runtime/timing/types/TimerRevision.ixx | Adds TimerRevision alias in runtime timing. |
| include/helios/runtime/timing/types/TimerId.ixx | Adds runtime TimerId strong id type. |
| include/helios/runtime/timing/types/TimerControlContext.ixx | Migrates timer control context to runtime timing and TimerId. |
| include/helios/runtime/timing/types/README.md | Adds timing types documentation. |
| include/helios/runtime/timing/systems/_module.ixx | Adds runtime timing systems aggregator module. |
| include/helios/runtime/timing/systems/TimerUpdateSystem.ixx | Migrates timer update system to runtime timing and injected command buffer. |
| include/helios/runtime/timing/systems/TimerClearSystem.ixx | Migrates timer clear system to runtime timing. |
| include/helios/runtime/timing/systems/README.md | Adds timing systems documentation. |
| include/helios/runtime/timing/components/_module.ixx | Adds runtime timing components aggregator module. |
| include/helios/runtime/timing/components/TimerBindingComponent.ixx | Migrates binding component to runtime timing and TimerId. |
| include/helios/runtime/timing/components/README.md | Adds timing components documentation. |
| include/helios/runtime/timing/commands/_module.ixx | Adds runtime timing commands aggregator module. |
| include/helios/runtime/timing/commands/TimerControlCommand.ixx | Migrates timer control command to runtime timing. |
| include/helios/runtime/timing/commands/README.md | Adds timing commands documentation. |
| include/helios/runtime/timing/_module.ixx | Adds runtime timing aggregate module. |
| include/helios/runtime/timing/TimerManager.ixx | Migrates timer manager to runtime timing and handler-registry-based init. |
| include/helios/runtime/timing/Timer.ixx | Migrates timer type to runtime timing and TimerId. |
| include/helios/runtime/timing/README.md | Adds runtime timing module documentation. |
| include/helios/runtime/pooling/EntityPoolManager.ixx | Decouples pooling manager from GameWorld; uses EngineWorld for cloning/finding. |
| include/helios/runtime/messaging/command/concepts/_module.ixx | Exports new IsPlatformCommandBuffer concept. |
| include/helios/runtime/messaging/command/concepts/IsPlatformCommandBuffer.ixx | Introduces concept used to constrain platform command buffer types. |
| include/helios/runtime/messaging/command/concepts/IsCommandBufferLike.ixx | Updates contract to flush(UpdateContext&) (no GameWorld arg). |
| include/helios/runtime/messaging/command/_module.ixx | Exports new PlatformCommandBuffer. |
| include/helios/runtime/messaging/command/TypedCommandBuffer.ixx | Removes GameWorld dependency; routes via stored handler registry + timer manager pointers. |
| include/helios/runtime/messaging/command/PlatformCommandBuffer.ixx | Adds a typed buffer for platform/window/environment commands. |
| include/helios/runtime/messaging/command/NullCommandBuffer.ixx | Updates flush(UpdateContext&) signature and tag alias. |
| include/helios/runtime/messaging/command/EngineCommandBuffer.ixx | Removes platform/window commands from engine buffer; uses runtime timing command. |
| include/helios/runtime/messaging/command/CommandHandlerRegistry.ixx | Adds convenience helper for bulk handler registration. |
| include/helios/runtime/messaging/command/CommandBuffer.ixx | Updates flush signature; adds init(handlerRegistry, timerManager) plumbing. |
| include/helios/runtime/gameloop/_module.ixx | Switches to partition exports (export import :X). |
| include/helios/runtime/gameloop/TypedPass.ixx | Converts to module partition; removes per-system init pass-through. |
| include/helios/runtime/gameloop/Phase.ixx | Converts to module partition; updates imports. |
| include/helios/runtime/gameloop/PassCommitListener.ixx | Converts to module partition; updates imports. |
| include/helios/runtime/gameloop/Pass.ixx | Converts to module partition; updates world concept import. |
| include/helios/runtime/gameloop/GameLoop.ixx | Converts to module partition; updates UpdateContext construction to new signature. |
| include/helios/runtime/gameloop/CommitPoint.ixx | Converts to module partition. |
| include/helios/runtime/concepts/_module.ixx | Removes re-export of world/messaging concept modules. |
| include/helios/runtime/_module.ixx | Re-exports new helios.runtime.timing. |
| include/helios/rendering/viewport/Viewport.ixx | Imports full Framebuffer; removes passkey parameter from setFramebuffer. |
| include/helios/rendering/viewport/FramebufferFwd.ixx | Deletes framebuffer forward-decl partition. |
| include/helios/rendering/shader/systems/ShaderCompileSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/rendering/framebuffer/Framebuffer.ixx | Removes viewport import; comments out viewport handle list member. |
| include/helios/platform/window/systems/WindowCreateSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/platform/window/systems/SwapBuffersSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/platform/opengl/OpenGLShaderCompileManager.ixx | Registers handlers via CommandHandlerRegistry. |
| include/helios/platform/lifecycle/systems/WindowBasedShutdownSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/platform/lifecycle/systems/WarmupDoneSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/platform/lifecycle/systems/PlatformInitSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/platform/glfw/types/GLFWWindowUserPointer.ixx | Replaces GameWorld* with PlatformCommandBuffer* for callback command submission. |
| include/helios/platform/glfw/systems/GLFWWindowCloseSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/platform/glfw/components/GLFWWindowUserPointerComponent.ixx | Updates payload type to include platform command buffer type parameter. |
| include/helios/platform/glfw/GLFWPlatformManager.ixx | Reworks init/boot flow and callback command submission via platform command buffer registry item. |
| include/helios/platform/environment/systems/PollEventsSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/physics/collision/systems/GridCollisionDetectionSystem.ixx | Fixes collision component pointer types to include THandle template. |
| include/helios/physics/collision/systems/CollisionStateResponseSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/physics/collision/systems/CollisionStateClearSystem.ixx | Import cleanup for SystemRole. |
| include/helios/helios_config.h | Adds cross-compiler function signature macro HELIOS_FUNCTION_SIGNATURE. |
| include/helios/gameplay/timing/types/_module.ixx | Removes gameplay timing types module (migrated to runtime). |
| include/helios/gameplay/timing/types/TimerRevision.ixx | Removes gameplay timing revision type (migrated to runtime). |
| include/helios/gameplay/timing/types/GameTimerId.ixx | Removes gameplay GameTimerId (replaced by runtime TimerId). |
| include/helios/gameplay/timing/systems/_module.ixx | Removes gameplay timing systems module (migrated to runtime). |
| include/helios/gameplay/timing/components/_module.ixx | Removes gameplay timing components module (migrated to runtime). |
| include/helios/gameplay/timing/commands/_module.ixx | Removes gameplay timing commands module (migrated to runtime). |
| include/helios/gameplay/timing/_module.ixx | Removes gameplay timing aggregate module (migrated to runtime). |
| include/helios/gameplay/spawn/systems/EntitySpawnSystem.ixx | Uses injected command buffer and makes world type a template parameter. |
| include/helios/gameplay/spawn/scheduling/SpawnScheduler.ixx | Generalizes scheduler interface over world type. |
| include/helios/gameplay/spawn/scheduling/DefaultSpawnScheduler.ixx | Generalizes default scheduler over world type. |
| include/helios/gameplay/spawn/scheduling/DefaultRuleProcessor.ixx | Generalizes rule processor over world type; uses world manager lookups. |
| include/helios/gameplay/spawn/scheduling/CyclicSpawnScheduler.ixx | Generalizes cyclic scheduler over world type. |
| include/helios/gameplay/spawn/SpawnManager.ixx | Generalizes spawn manager over world type; init now uses handler registry. |
| include/helios/gameplay/scoring/systems/CombatScoringSystem.ixx | Uses injected command buffer + template disambiguators. |
| include/helios/gameplay/scoring/ScorePoolManager.ixx | Registers handler via CommandHandlerRegistry instead of GameWorld. |
| include/helios/gameplay/matchstate/systems/MatchRuleSystem.ixx | Import ordering cleanup. |
| include/helios/gameplay/matchstate/systems/MatchFlowSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/gameplay/lifecycle/systems/EntityLifecycleSystem.ixx | Uses injected command buffer + template disambiguators. |
| include/helios/gameplay/lifecycle/WorldLifecycleManager.ixx | Registers handler via registry; removes stored GameWorld* dependency. |
| include/helios/gameplay/input/systems/TwinStickInputSystem.ixx | Uses injected command buffer + template disambiguators. |
| include/helios/gameplay/health/HealthManager.ixx | Registers handler via registry + template disambiguators. |
| include/helios/gameplay/gamestate/systems/GameStateInputResponseSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/gameplay/gamestate/systems/GameFlowSystem.ixx | Updates concept import to messaging command concepts. |
| include/helios/gameplay/damage/systems/DamageOnCollisionSystem.ixx | Uses injected command buffer + template disambiguators. |
| include/helios/gameplay/combat/systems/ProjectileSpawnSystem.ixx | Uses injected command buffer + ensures correct concept qualification. |
| include/helios/gameplay/combat/commands/Aim2DCommand.ixx | Adds template keyword for dependent get. |
| include/helios/gameplay/builder/spawnSystem/builders/configs/SpawnPoolConfig.ixx | Generalizes spawn system configuration over world type and updated policy templates. |
| include/helios/gameplay/builder/spawnSystem/builders/configs/SchedulerConfig.ixx | Updates fixed amount policy template usage. |
| include/helios/gameplay/builder/spawnSystem/builders/SchedulerBuilder.ixx | Generalizes scheduler builder over world type. |
| include/helios/gameplay/builder/spawnSystem/SpawnSystemFactory.ixx | Generalizes factory over world type. |
| include/helios/gameplay/builder/entity/builders/configs/UiTransformConfig.ixx | Adds template keyword for dependent get. |
| include/helios/gameplay/builder/entity/builders/configs/SteeringConfig.ixx | Adds template keyword for dependent get. |
| include/helios/gameplay/builder/entity/builders/configs/SceneNodeConfig.ixx | Adds template keyword for dependent get. |
| include/helios/gameplay/builder/entity/builders/configs/ObserverConfig.ixx | Migrates time observer to runtime timing binding component + template disambiguators. |
| include/helios/gameplay/builder/entity/builders/configs/Move2DConfig.ixx | Adds template keyword for dependent get. |
| include/helios/gameplay/builder/entity/EntityFactory.ixx | Switches imports from gameplay timing to runtime timing. |
| include/helios/gameplay/bounds/systems/LevelBoundsBehaviorSystem.ixx | Uses injected command buffer + adds CommandBuffer_type. |
| include/helios/gameplay/_module.ixx | Stops exporting gameplay timing aggregate module. |
| include/helios/ecs/components/_module.ixx | Exports new BindingComponent. |
| include/helios/ecs/components/BindingComponent.ixx | Adds generic handle-to-handle binding component. |
| include/helios/ecs/EntityManager.ixx | Documents and enforces move-only semantics (explicitly deletes copy). |
| include/helios/bootstrap.ixx | Registers runtime TimerManager and new PlatformCommandBuffer. |
| include/ext/opengl/rendering/OpenGLMeshRenderer.ixx | Removes unused friend declarations and adjusts public section placement. |
| include/ext/opengl/rendering/OpenGLGlyphTextRenderer.ixx | Makes init() public (moved out from private section). |
| include/ext/opengl/rendering/OpenGLDevice.ixx | Adds missing include and marks textRenderer() as override. |
| examples/v0.0.1-alpha/ecs_rendering/resources/cube.vert | Adjusts GLSL version and removes explicit layout locations. |
| examples/v0.0.1-alpha/ecs_rendering/resources/cube.frag | Adjusts GLSL version and removes explicit uniform location. |
| examples/v0.0.1-alpha/ecs_rendering/main.cpp | Adapts example to PlatformCommandBuffer usage and FramePacer default construction. |
| examples/v0.0.1-alpha/ecs_rendering/Namespaces.h | Updates timing namespace usings to helios::runtime::timing. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| void setSize(const vec2<TNumericType> size) noexcept { | ||
|
|
||
| if (size_.same(size)) { | ||
| return; | ||
| } | ||
|
|
||
| size_ = size; | ||
| isDirty_ = true; | ||
| }; | ||
|
|
There was a problem hiding this comment.
setSize is terminated with };, which closes the function with an extra semicolon and will fail to compile. It should end with } (and the class should continue with }; after the class body).
No description provided.