* Add extensible building placement module for strategy/ETS games Introduce eve.Building with data-driven definitions, grid occupancy worlds, ghost previews, and pluggable validate/snap/change hooks. Includes design docs, user module guide, unit tests, and a gitignore fix so build*/ no longer ignores src/modules/building/. Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com> * fix(building): preserve free-snap world pose on placeAtWorld placeAtWorld now keeps the snap rule's worldX/worldY on the placed instance instead of always rewriting to the cell origin, so free and custom snap modes stay accurate for ETS-style soft placement. Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com> * Add examples/building town placement sandbox demo Interactive demo covering grid snap ghost preview, terrain (dock on water), road adjacency (stall), L-mask barn, rotate/remove, and resource costs. Also adds make building shortcut, docs links, and a unit test locking the demo building definitions. Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com> * fix(ci): vendor CesiumMan test assets to avoid flaky Linux SSL download Linux CI failed linking unit_test when PRE_BUILD curl hit a self-signed certificate fetching CesiumMan from api.github.com. Commit the ~464 KiB glTF fixture, skip download when files are present, and add curl retries with explicit CA bundle for refresh runs. Co-authored-by: 西风逍遥游 <sunxfancy@gmail.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Skinned character fixtures
Run scripts/download_skinned_character.sh (or make download-skinned-character) to refresh CesiumMan under cesium_man/glTF/.
The glTF files are also committed in-repo (~464 KiB) so CI and offline builds do not depend on a network fetch.
See ATTRIBUTION.md for license and CMake options.