对照 Unity Grid/Tilemap 与 Grid Placement System 架构补齐建筑放置能力: - 新增 grid 模块:GridConfig(rectangle/hexagon/isometric/staggered/iso-z-as-y、cellGap、stagger、XY/XZ 平面轴)+ 投影/占地旋转纯函数;map::TileProjection 委托复用,公开 API 不变。 - PlacementWorld 支持可选 GridConfig、多通道占用(channel)、bindTileLayer + GID 地形懒解析、XZ 平面 3D 放置、surface 表面接口(内置 plane)。 - BuildingDefinition 新增 channel/renderMode/visual2d/visual3d;rotationMode 支持 hex(60°)。 - 新增 buildingfx 渲染桥:按定义生成/同步 Renderable2D/3D、鬼影+占地光标、2D/3D 网格可视化。 - 新增 PlacementSession(放置/拆除/旋转/指针更新)。 - 测试:grid/building/buildingfx 新用例(REQUIRE 级)+ map/sceneloader 回归;示例 building-tilemap(等距/六角)、building-3d(XZ 地面)。 - 顺带修复 HEAD 上 sceneloader 未迁移 SceneLink 新 API 导致的编译失败(SceneLoader.cpp / test/sceneloader.cpp)。
Tilemap 建筑放置示例
演示在多样式 tilemap 上放置建筑:
map模块创建等距(或六角)TileLayer,world.bindTileLayer(layer)直接复用其投影world.setTerrainGid(gid, semantic)让地形语义从 tile GID 懒解析(水域/陆地)eve.BuildingFx按定义visual2d生成 2D 精灵,进入统一 2D 队列按脚点 Y 穿插PlacementSession封装放置 / 拆除 / 旋转 / 鬼影校验
make run/<platform>-debug GAME=examples/building-tilemap
| 输入 | 作用 |
|---|---|
1–3 |
选择建筑(房屋 / 码头 / 塔楼) |
| 鼠标移动 | 鬼影跟随并吸附(等距/六角投影) |
R |
旋转 |
| 左键 | 放置 |
| 右键 | 拆除指针下建筑 |
T |
切换网格叠加 |