Adds buffered pixelDataSize reading, fast uint16_t parsing via readU16FromBuffer, and separates useAlpha/!useAlpha loops to minimize branching and improve performance.
Refactored loadSpriteSheet and getSpriteImage for faster loading, fewer allocations, direct memory access, and more efficient pixel processing. Reduces memory usage and improves startup performance.
- Integrated font glyphs into texture atlas (reduces glBindTexture)
- Fixed foreground smoothing (UI/2D rendering)
- Refactored and improved DrawPool logic and parallelism
- FPS is now more stable during high update rates
- Applied camera stabilization formula based on player speed
Closes#1134, #1031
A Texture Atlas system was implemented on the client, resulting in a performance boost of 1.3x to 3x. For those not familiar with rendering, an atlas is essentially a large texture that combines multiple images used on screen, reducing texture switches and GPU communication overhead. The result? Stable FPS even with lots of objects and effects being rendered simultaneously.
- "Clear Messages" now works for any tab, not just the active one.
- Readonly panel is cleared and closed on relogin/character switch.
- Refactored clear logic to always target the correct tab and readonly state.
This update removes the use of `std::mutex` during asynchronous sprite loading and replaces it with an `std::atomic` variable to improve performance and reduce contention between threads.
Additionally, a bug causing black tiles to appear due to synchronization issues has been identified and fixed.
## Changes
- Replaced `mutex` with `atomic` for concurrent sprite read access
- Improved performance and loading stability under high concurrency
- Fixed visual glitch where tiles were rendered black during async sprite access
* Fix map resizing issue in extended view when toggling topmenu with Ctrl+Shift+T
Fixes an issue where the game map panel would not return to its original size after toggling the top menu visibility (Ctrl+Shift+T) in extended view mode.
**Problem:**
- In extended view mode, hiding the top menu would correctly expand the map
- However, showing the top menu again would not restore the map to its proper size
- This was caused by incorrect anchoring of the gameRootPanel
**Solution:**
- Modified hide() and show() functions in topmenu.lua to check for extended view mode
- Ensures proper anchoring to topMenu.bottom when in extended view mode
- Maintains backward compatibility with normal view mode