update main branch - #38
Merged
Merged
Conversation
TODO : make shuttest code readable an d convenient
…zation, and stabilized runtime. - Implemented ServiceLocator for core engine systems. - Added Solid and Wireframe modes for collision visualization with depth testing. - Fixed build errors in EngineTests and ChainedRuntime. - Resolved player spawn and physics BVH issues. - Optimized alpha blending and Z-fighting for debug graphics. - Temporarily disabled (commented out) editor grid.
…io stopping in Edit Mode
TODO : fix audio and collision(meshvsmesh)
…Audio modulation - Implemented iterative impulse solver in CollisionCore. - Added type-aware GetWorldAABB for tight broadphase (Sphere/Capsule/Mesh). - Tightened Mesh AABB via BVH root node bounds. - Disabled expensive Mesh-Mesh collision dispatch. - Integrated AudioComponent into PlayerFall.cs with dynamically modulated wind volume.
refactor: remove legacy code from ComponentSerializer
- Content Browser: Implemented deferred directory refresh to prevent iterator invalidation (crash) during folder navigation. - UI System: Introduced startup input cooldown in UIRenderer to prevent accidental triggers (phantom clicks) when entering Play mode. - Scripting: Updated ButtonControl API with IsClicked and IsDown properties; updated ExitScript to use IsDown. - Build System: Stabilized Clang-on-Windows build for GameNetworkingSockets and Protobuf; fixed linking issues in mingw_compat.h. - Quality of Life: Added safety guards for empty asset directories and refined CMake project helpers.
- Add SceneResourceManager to centralize asset/animation/audio handling - Migrate logic from AssetResolutionSystem, AnimationSystem, SceneAudioSystem - Remove old system files and update scene registration and CMake
- Created base Camera class to independently manage projection parameters and matrix caching - Removed redundant SceneCamera abstraction - EditorCameraController now inherits from Camera, separating user-input from core projection math - Eliminated runtime projection recalculations (glm::perspective) inside SceneRenderer and Renderer by piping matrices natively via Camera3D - Relocated camera_types.h to engine/graphics namespace
TODO : fix all code
…iplayer scene sync - Implement 3D nametag rendering system with FreeType-GL font atlas and distance-compensated dynamic scaling - Add in-game scriptable chat system (InGameChat.cs) with network synchronization and input focus handling - Add Cyrillic and Ukrainian font glyph baking (0x0400..0x04FF) for ImGui UI and 3D world text - Fix client scene transition from lobby by dispatching SceneChangeRequestEvent on SceneChangeMessage - Fix client LocalNetworkID persistence across scene loads and ensure IsOwner is assigned to local player avatar - Reorganize C# scripts into lowercase domain folders (gameplay/, network/, player/, ui/) - Guard against duplicate script instantiations in ScriptEngine and add IsOwner checks on player scripts - Fix peer avatar velocity replication in Jolt physics for network-driven avatars - Refactor glue registration file to script_glue_generated_reg.inl
- Move nametag_system from engine_scene to engine_graphics to break circular dependency (scene_renderer -> nametag_system) - Remove Renderer* parameter from DrawNametags, use ServiceLocator instead (consistent with Network/AssetManager pattern) - Remove dead engine_dummy.cpp (never compiled, CH_ENGINE_SHARED=OFF)
…action + UPnP status Networking refactoring: - Extract NetworkSession (connection state machine, ENet lifecycle) - Extract NetworkTransport (send/recv, crypto, packet callbacks) - Extract NetworkPlayerManager (player list, names, skins, IDs) - Add NetworkError enum for error handling (Initialize/HostGame/ConnectTo) - Add connection/disconnection callbacks - Network class now composes the three components (facade pattern) - Add Network.IsUpnpAvailable() for C++/C# API - Show UPnP status in editor panel and LobbyUI Camera system: - Add CameraAutoSelectSystem for menu scenes - Selects camera by BackgroundMode (orthographic 2D / perspective 3D) - Added MenuCamera2D and MenuCamera3D to start_menu.chscene UI module: - Extract engine/graphics/ui/ -> engine/ui/ as standalone CMake module - Replace UIFactory with CreateDefaultWidgetData()/WidgetTypeName() functions - Update all consumers to use new include paths README: - Add networking module to project structure - Add ENet/libsodium/miniupnpc to dependencies - Add multiplayer capability to overview
…ort DLL filtering, PackMode::Max Physics: - Fix HasCachedMeshShape to check both raw key and _convex suffix for convex hull cache hits - Fix QueuePrebuildShape dedup to also check convex hull cache with both keys - Remove redundant InitializeBodies call from Scene::InitializePhysicsStartup - Add Physics* context emplacement directly in InitializePhysicsStartup Mesh merger: - Fuse separate vertex/normal/tangent loops into single pass with reserve() Editor: - Fix ImGui DisplayHex/DisplayRGB mutually exclusive flag assertion - Append .chscene/.chenv extensions in save dialogs if missing - Fix OpenScene filter name - Redesign export dialog with 4 mode buttons (Fast/Balanced/Max/Raw) - Add PackMode::Max (threshold=0.0 forced) Export: - Filter DLLs by CH_BUILD_CONFIG define: Debug-only for debug, release-only for release - Only copy .chproject in raw mode (already in resources.pack for others) - Add CH_BUILD_CONFIG/CH_BUILD_PRESET compile definitions via CMake
- Add firewall_helper.h/cpp with cross-platform support: - Windows: netsh advfirewall (requires admin) - Linux: iptables/nftables (requires root) - Auto-add inbound UDP rule on HostGame(), remove on Shutdown() - Expose IsFirewallRuleActive to C# scripting and editor panel - Show firewall status in lobby UI (FW: OK / FW: No rule) - Network panel shows green/orange firewall status indicator
… timeout, unregister UPnP/Firewall glue Firewall: - Replace _popen with CreateProcess for reliable netsh output capture - Add detailed logging for IsElevated, AddUDPRule, RuleExists - Fix rule detection: match ruleName in output (not just 'Ok.') Connection state: - Add m_Connected flag to NetworkSession (set only on ENET_EVENT_TYPE_CONNECT) - Expose IsFullyConnected() through Network service + C# scripting - ConnectButton polls IsFullyConnected with 5s timeout before loading lobby - Shows error if connection fails/times out Script glue: - Register missing IsUpnpAvailable, IsFirewallRuleActive, IsFullyConnected - These were declared in C# but never wired up in script_glue.cpp UI: - FW status: only show when active (hide 'no rule' text, just show disabled hint) - Lobby header: 'FW: OK' appended only when rule exists
- Each test gets a unique port (atomic counter) to avoid binding conflicts - Increase PumpUntil timeout from 5s to 10s for slow CI containers - Add <atomic> include for std::atomic
- Add SetTestMode(true) to Network service - Skips upnpDiscover(2s blocking) and firewall rule creation in tests - Tests enable test mode in SetUp() before Initialize() - This eliminates the 2-second UPnP block per HostGame call that was causing cascading timeouts in CI containers
- Editor panel: bullet list with Radmin VPN setup instructions - Lobby UI: one-line tip when UPnP is Manual - Gives players a practical alternative to port forwarding
Pure encode/decode tests (NetworkMessageTest) still run. Loopback tests only run locally.
- Builds windows-clang debug and release presets - Runs resource sync via Python - Uploads artifacts per preset
- Fix SplitCustom flag not persisting: auto-detect from SplitSizeMB when loading export dialog - Update project exporter to respect custom split size - Various other fixes across engine, editor, and game code
Squashed history of opengl branch: - OpenGL rendering (glad/glfw, PBR shaders, shadow mapping) - Editor (ImGui scene manager, content browser, property inspector) - ECS (EnTT components, scene decomposition, ServiceLocator) - Physics (Jolt integration, colliders, force velocity) - Networking (ENet + libsodium, multiplayer lobby, UPnP, firewall) - Scripting (Roslyn source generator, ABI safety) - Audio (miniaudio, PlayOnStart, listener) - Build (CMake presets, CI for Linux/Windows, clang/msvc) - Export (pack pipeline, animation graphs, project export) No Co-Authored-By lines in history.
…ersistence, and editor improvements
…ynamic event type system
…ybox Six-Faces cubemap support
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Just take changes from opengl branch