* feat(map): add dual-grid autotile resolve for TileLayer
Implement Oskar Stålberg-style dual-grid: logic layer paints fill/empty,
display layer gets a half-tile offset 15-tile resolve. Document that Tiled
has no native dual-grid (Terrain/Wang Corner Set is same-grid only).
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* fix(map): use ComponentRef for DualGrid config access
TileLayer::config() returns ecs::ComponentRef, not a raw pointer.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* test(map): fix dual-grid filledGid expectations and clean layers
Correct corner sampling for a single logic cell (BR vs TL) and clear
layers after resolve tests to avoid ECS draw pollution.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* test(map): fix ComponentRef usage in dual-grid orientation tests
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
* feat(map): add extensible grid pathfinding with group Flow Field
Implement A* and same-goal Flow Field pathfinding on PathGrid with
pluggable topologies (ortho4/ortho8/hex) for orthogonal, isometric,
staggered, and hexagonal maps. Expose Pathfinder/Path/FlowField via
Map::newPathfinder and document the design.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* fix(map): use ComponentRef accessors in PathGrid sync
TileLayer::config()/tiles() return ComponentRef, not raw pointers.
Also cast PathTopology in zeroerr CHECKs for streamability.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* fix(map): shrink Windows export surface for pathfinding
MSVC LNK1189 (65535 library objects) is hit when WINDOWS_EXPORT_ALL_SYMBOLS
exports every PathGrid/topology symbol. Collapse grid/topology into an
internal Pathfinder impl (anonymous namespace) and a single TU so eve.exe
stays under the export limit.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
* fix(windows): disable WINDOWS_EXPORT_ALL_SYMBOLS to avoid LNK1189
MSVC cannot export every symbol from eve.exe once the binary grows past
the 65535-object limit. Plugins already import EVENGINE_API symbols
(ModuleManager / ModuleRegister); keep ENABLE_EXPORTS without exporting
the entire object set.
Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com>
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
- Implemented multi-layer tilemap functionality, allowing for the reading and saving of Tiled JSON formats.
- Added support for various tile projections (orthogonal, isometric, staggered, hexagonal) and depth calculations.
- Introduced object layer parsing and caching for improved map object management.
- Updated the rendering system to unify 2D depth queues and enhance sprite handling.
- Added new methods for accessing object properties, including position and dimensions.
This update significantly improves the map module's capabilities and integration with the rendering system.
- Updated the physics module to include Box2D support, enabling management of physics bodies and collision events.
- Enhanced the map module to support tile layers and improved hot-reload functionality for tilemaps.
- Updated documentation to reflect the new features in the physics and map systems, including usage examples and API references.
- Modified CMakeLists.txt to include new modules for physics and font management, ensuring proper build configurations.
Co-authored-by: Cursor <cursoragent@cursor.com>