Commit Graph

13 Commits

Author SHA1 Message Date
8ca02fd492 Add spawn/delete commands, fix session state and entity broadcast
- marathonctl now supports spawn/delete entity commands
- Fixed session state bug (was transitioning to Left every 5s)
- Fixed entity broadcast to detect Added<NetworkedEntity>
- Added AppCommandQueue pattern for app-level control commands

References: #131, #132
2025-12-24 12:53:50 +00:00
a0c13be6d6 Add CLI arguments for multi-instance support
Added --db-path and --control-socket arguments to app binary to enable
running multiple instances simultaneously.

Updated marathonctl to use clap with --socket argument for targeting
different instances.

Enables multi-client testing with isolated databases and control sockets.

Refs #131, #132

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 11:58:30 +00:00
da886452bd Add headless mode for automated testing
Implemented headless mode using MinimalPlugins and ScheduleRunnerPlugin
to enable running the app without rendering, controlled via Unix socket.

Changes:
- Added conditional compilation based on 'headless' feature flag
- Use MinimalPlugins with 60 FPS ScheduleRunner in headless mode
- Skip rendering plugins (Camera, Rendering, DebugUI, SessionUI)
- Made cube mesh/material assets optional for headless spawning
- Direct NetworkingPlugin + PersistencePlugin instead of MarathonPlugin
- Use app.run() instead of platform executor in headless mode

This enables:
- Running multiple instances for multi-client testing
- Automated testing via marathonctl without GUI overhead
- Background server instances for development
- CI/CD integration for networking tests

Refs #131, #132

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 11:50:56 +00:00
6303c4b409 Fix egui session panel sync with engine state
The session UI panel was not updating when networking started via
control socket because poll_engine_events used commands.insert_resource
which queued updates until end of schedule. The UI could run before
the command was applied.

Fixed by:
- Initialize CurrentSession at startup in offline state (session.rs)
- Use direct ResMut mutation in poll_engine_events (engine_bridge.rs)
- Check session.state instead of resource existence (session_ui.rs)

This ensures Bevy's change detection triggers immediately when engine
events update the session state.

Refs #131, #132

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 11:32:30 +00:00
f3f8094530 Vendor Bevy rendering crates (Phase 1 complete)
Closes #6, #7, #8, #9, #10
Refs #2, #122

Vendored bevy_render, bevy_core_pipeline, and bevy_pbr from Bevy v0.17.2
(commit 566358363126dd69f6e457e47f306c68f8041d2a) into libmarathon.

- ~51K LOC vendored to crates/libmarathon/src/render/
- Merged bevy_render_macros into crates/macros/
- Fixed 773→0 compilation errors
- Updated dependencies (encase 0.10→0.11, added 4 new deps)
- Removed bevy_render/pbr/core_pipeline from app Cargo features

All builds passing, macOS smoke test successful.

Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-24 00:04:24 +00:00
7b8fed178e checkpoint before render engine vendoring
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-17 22:40:51 +00:00
82ba23bfa2 first successful ipad build
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-14 22:50:35 +00:00
70735a33a5 moved some things around.
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-14 21:25:52 +00:00
5493faa1f1 vendored bevy_egui and removed legacy code :/
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-14 20:25:55 +00:00
b0f62dae38 dried stuff
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-13 22:50:13 +00:00
5cb258fe6b initial arhitectural overhaul
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-13 22:22:05 +00:00
b098a19d6b initial commit for session and lock features
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-12 20:18:41 +00:00
28c56defe7 initial working demo sans networking
Signed-off-by: Sienna Meridian Satterwhite <sienna@r3t.io>
2025-12-11 22:10:06 +00:00