Skip to content
This repository was archived by the owner on Jul 29, 2026. It is now read-only.

Dev - #296

Merged
ThorstenSuckow merged 21 commits into
mainfrom
dev
Apr 22, 2026
Merged

Dev#296
ThorstenSuckow merged 21 commits into
mainfrom
dev

Conversation

@ThorstenSuckow

Copy link
Copy Markdown
Owner

No description provided.

…rRegistry and add command buffer initialization
… namespace usage

prevents circular dependencies with StateTransitionRules and listener classes
Copilot AI review requested due to automatic review settings April 22, 2026 18:57
@ThorstenSuckow
ThorstenSuckow merged commit 3a6e181 into main Apr 22, 2026
1 of 4 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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&) with CommandBuffer_type for command submission via cmdBuffer.add<...>() (removing UpdateContext::queueCommand).
  • Moves timer types/components/commands/systems under helios::runtime::timing and 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.

Comment on lines +113 to +122
void setSize(const vec2<TNumericType> size) noexcept {

if (size_.same(size)) {
return;
}

size_ = size;
isDirty_ = true;
};

Copilot AI Apr 22, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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).

Copilot uses AI. Check for mistakes.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants