载入中...
搜索中...
未找到
GtsMeshSplitter.cpp
浏览该文件的文档.
73Result<GtsMeshSplitResult> splitGtsMesh(const MeshBuild& source, int xSplits, int zSplits, GtsMeshPivot pivot) {
75 if (vertexCount < 3 || indexCount < 3 || indexCount % 3 != 0 || xSplits < 0 || zSplits < 0 || xSplits > 255 ||
78 DiagnosticCode::InvalidArgument, "GTS mesh split requires a valid triangle mesh, split counts and pivot",
82 Vertex v{source.getPositionX(i), source.getPositionY(i), source.getPositionZ(i), source.getNormalX(i),
87 Diagnostic::error(DiagnosticCode::InvalidArgument, "GTS mesh streams must contain only finite values",
100 DiagnosticCode::InvalidArgument, "GTS mesh must have non-zero X/Z bounds", "procgen.gtsMeshSplit"));
159Result<void> splitGtsMeshInto(GtsMeshSplitResult& output, const MeshBuild& source, int xSplits, int zSplits,
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
Owned row-major result of a GTS X/Z plane split.
Definition GtsMeshSplitter.h:20
float getTileOffsetZ(int index) const noexcept
Return the Z offset that restores one translated tile to world space.
Definition GtsMeshSplitter.cpp:68
std::unique_ptr< MeshBuild > copyTileMesh(int index) const
Copy one tile mesh for independent ownership, or null for an invalid index.
Definition GtsMeshSplitter.cpp:60
float getTileOffsetX(int index) const noexcept
Return the X offset that restores one translated tile to world space.
Definition GtsMeshSplitter.cpp:64
const GtsMeshSplitTile * tileAt(int index) const noexcept
Borrow one indexed tile. @ownership This result retains ownership; the caller must not delete the poi...
Definition GtsMeshSplitter.cpp:57
CPU triangle mesh from procedural mesh recipes (e.g. marching cubes). Positions/normals are xyz-packe...
Definition MeshBuild.h:19
Definition EvpackPointGraphLoader.h:12
Result< GtsMeshSplitResult > splitGtsMesh(const MeshBuild &source, int xSplits, int zSplits, GtsMeshPivot pivot)
Split every source triangle against a regular X/Z grid like GTSMeshSplitter.
Definition GtsMeshSplitter.cpp:73
Result< void > splitGtsMeshInto(GtsMeshSplitResult &output, const MeshBuild &source, int xSplits, int zSplits, GtsMeshPivot pivot)
Atomically replace an owned result with a GTS mesh split.
Definition GtsMeshSplitter.cpp:159
GtsMeshPivot
Pivot translation applied independently to each GTS split mesh.
Definition GtsMeshSplitter.h:11
@ CenterXZ
@ MinimumXZ
@ InvalidArgument
One row-major GTS mesh cell and the world offset restoring its source position.
Definition GtsMeshSplitter.h:14