载入中...
搜索中...
未找到
DualGrid.cpp
浏览该文件的文档.
52 auto sample = [seed](int px, int py) { return float(hash2(seed, px, py) & 0xffffu) / 32767.5f - 1.f; };
77 if (x + 1 < width && y + 1 < height) d = std::min(d, out[size_t((y + 1) * width + x + 1)] + diagonal);
103 !std::isfinite(config.noiseScale) || config.noiseScale < 0.f || !std::isfinite(config.noiseStrength) ||
106 eve::DiagnosticCode::InvalidArgument, "invalid dual-grid mask dimensions or shaping parameters",
164 if (terrainA.width != config.width || terrainA.height != config.height || terrainB.width != config.width ||
165 terrainB.height != config.height || terrainA.pixels.size() != expected || terrainB.pixels.size() != expected) {
244bool resolveDualGrid(TileLayer* logic, TileLayer* display, const DualGridOptions& opts, std::string* error) {
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
ECS tile layer entity. Script mutates tile GIDs / tileset / draw; TileRenderSystem batch-draws atlas ...
Definition TileLayer.h:32
void resize(int mapW, int mapH)
Resizes the tile grid (existing GIDs preserved where possible).
Definition TileLayer.cpp:46
void setCamera(graphics::Camera2D *camera)
Definition TileLayer.cpp:521
void setTileSize(float tileW, float tileH)
Definition TileLayer.cpp:40
放置世界:格子占用(多通道)+ 地形语义 + 已放置建筑实例。 行为由 PlacementSystem 提供;本类暴露便于脚本绑定的薄封装方法。 坐标换算统一走 eve::grid(支持 rectang...
Definition PlacementWorld.h:19
@ Hexagonal
@ Orthogonal
@ Isometric
@ Staggered
int dualGridMaskAt(TileLayer &logic, int dx, int dy, int filledGid)
4-bit corner mask for display cell (dx,dy) on a (logicW+1)×(logicH+1) grid. Samples logic (dx-1,...
Definition DualGrid.cpp:236
bool dualGridLogicFilled(TileLayer &logic, int tx, int ty, int filledGid)
Whether logic cell (tx,ty) is filled under options. Out of bounds → false.
Definition DualGrid.cpp:227
int dualGridMaskFromCorners(bool tl, bool tr, bool bl, bool br)
Pack four corner occupancy bits: TL=1, TR=2, BL=4, BR=8.
Definition DualGrid.h:128
eve::Result< DualGridRgbaImage > bakeDualGridTransitionAtlas(const DualGridRgbaImage &terrainA, const DualGridRgbaImage &terrainB, const DualGridMaskConfig &config)
Bake two ordinary same-size RGBA8 tiles into a row-major 4x4 transition atlas.
Definition DualGrid.cpp:160
void dualGridHalfOffset(const TileLayer::Config &cfg, float &offX, float &offY)
Half-step origin delta for the display layer (added to logic origin). Orthogonal: (-tileW/2,...
Definition DualGrid.cpp:202
uint32_t tileGid(uint32_t raw)
Strip Tiled flip / rotate flags; keep low 28 bits.
Definition TileLayer.h:383
const std::array< int, 16 > & dualGridDefaultFrameTable()
Copy of the default frame table (16 entries).
Definition DualGrid.cpp:195
bool resolveDualGrid(TileLayer *logic, TileLayer *display, const DualGridOptions &opts, std::string *error)
Resolve logic → display dual-grid tiles. Resizes display to (logicW+1)×(logicH+1),...
Definition DualGrid.cpp:244
int dualGridDefaultFrame(int mask)
Default 4x4 atlas frame index for mask 0..15. -1 means draw nothing. Matches the SpriteCook / common ...
Definition DualGrid.cpp:197
eve::Result< DualGridMaskAtlas > generateDualGridMaskAtlas(const DualGridMaskConfig &config)
Generate the complete reusable 16-frame dual-grid mask atlas.
Definition DualGrid.cpp:100
@ InvalidArgument
Owning CPU result containing all 16 dual-grid masks and their signed-distance fields.
Definition DualGrid.h:72
float signedDistanceAt(int mask, int x, int y) const
Read normalized signed distance. Invalid coordinates return zero.
Definition DualGrid.cpp:89
std::vector< float > signedDistance
Definition DualGrid.h:76
float bandAt(int mask, int x, int y, float center, float halfWidth, float softness=0.01f) const
Select a band such as wet sand or foam around the generated boundary.
Definition DualGrid.cpp:94
float coverageAt(int mask, int x, int y) const
Read normalized coverage. Invalid coordinates return zero.
Definition DualGrid.cpp:84
Deterministic settings for the reusable 16-frame procedural transition-mask atlas.
Definition DualGrid.h:52
bool hideLogic
Hide the logic layer after resolve (logic stays for gameplay queries).
Definition DualGrid.h:43
int filledGid
0 = any non-zero logic GID counts as filled; else only this GID.
Definition DualGrid.h:34
bool applyHalfOffset
Apply projection-correct half-step origin offset on the display layer.
Definition DualGrid.h:41
int firstDisplayGid
GID of atlas local id 0 on the display tileset. 0 = use display->getTilesetFirstGid() (fallback 1).
Definition DualGrid.h:39
bool useDefaultFrameTable
When true, use the default SpriteCook-style 4x4 atlas frame table. When false, GID = firstDisplayGid ...
Definition DualGrid.h:48
Owning RGBA8 image used by the renderer-neutral transition-atlas baker.
Definition DualGrid.h:87