载入中...
搜索中...
未找到
MeshModifierGraphScript.cpp
浏览该文件的文档.
22 std::function<DynamicMeshUvPaintSession*()>([]() -> DynamicMeshUvPaintSession* { return nullptr; }), true);
23 dynamicPaint.addFunc("initialize", [vm = dynamicPaint.getHandle()](DynamicMeshUvPaintSession* self,
31 dynamicPaint.addFunc("updateMesh", [vm = dynamicPaint.getHandle()](DynamicMeshUvPaintSession* self,
43 return eve::script::projectResult(vm, self->paintSurfacePointResult(triangle, x, y, z, radius, r, g, b, a,
49 dynamicPaint.addFunc("currentImageResult", [vm = dynamicPaint.getHandle()](DynamicMeshUvPaintSession* self) {
52 auto instance = eve::script::makeOwnedSquirrelInstance<image::ImageData>(vm, std::move(result).takeValue());
56 dynamicPaint.addFunc("getMeshRevision", [](DynamicMeshUvPaintSession* self) { return self->meshRevision(); });
57 dynamicPaint.addFunc("getPaintRevision", [](DynamicMeshUvPaintSession* self) { return self->paintRevision(); });
58 auto sample = table.addClass<SplineSample>("ProcgenSplineSample", ssq::Class::Ctor<SplineSample()>());
65 sample.addFunc("getNormalizedDistance", [](SplineSample* self) { return self->normalizedDistance; });
73 auto frame = table.addClass<SplineFrameSample>("ProcgenSplineFrameSample", ssq::Class::Ctor<SplineFrameSample()>());
89 frame.addFunc("getNormalizedDistance", [](SplineFrameSample* self) { return self->sample.normalizedDistance; });
90 frame.addFunc("getRollDegrees", [](SplineFrameSample* self) { return self->sample.rollDegrees; });
98 distribution.addFunc("getSampleResult", [vm = distribution.getHandle()](SplineDistribution* self, int index) {
104 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
106 distribution.addFunc("getFrameResult", [vm = distribution.getHandle()](SplineDistribution* self, int index) {
112 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
116 "ProcgenSplinePolyline", std::function<SplinePolyline*()>([]() -> SplinePolyline* { return nullptr; }), true);
122 polyline.addFunc("getPointResult", [vm = polyline.getHandle()](SplinePolyline* self, int index) {
128 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
130 polyline.addFunc("getChunkPointResult", [vm = polyline.getHandle()](SplinePolyline* self, int chunk, int index) {
136 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
140 "ProcgenSplinePath", std::function<SplinePath*()>([]() -> SplinePath* { return nullptr; }), true);
149 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
151 spline.addFunc("setKind", [projectSplineVoid](SplinePath* self, const std::string& kind) mutable {
155 spline.addFunc("addPoint", [projectSplineVoid](SplinePath* self, float x, float y, float z, float inX, float inY,
159 spline.addFunc("setPoint", [projectSplineVoid](SplinePath* self, int index, float x, float y, float z, float inX,
161 return projectSplineVoid(self->setPointResult(index, {x, y, z, inX, inY, inZ, outX, outY, outZ}));
163 spline.addFunc("setPointProfile", [projectSplineVoid](SplinePath* self, int index, float rollDegrees, float scaleX,
167 spline.addFunc("setPointChunkBreak", [projectSplineVoid](SplinePath* self, int index, bool disconnected) mutable {
170 spline.addFunc("setPointRotation", [projectSplineVoid](SplinePath* self, int index, float pitchDegrees,
172 return projectSplineVoid(self->setPointRotationResult(index, pitchDegrees, yawDegrees, rollDegrees));
189 spline.addFunc("travelResult", [projectSample](SplinePath* self, float distance, const std::string& wrapMode,
200 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
203 [vm = spline.getHandle()](SplinePath* self, int count, bool includeEnd, int samplesPerSegment) {
209 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
218 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
220 spline.addFunc("applyShapePreset", [projectSplineVoid](SplinePath* self, const std::string& preset, int pointCount,
222 return projectSplineVoid(self->applyShapePresetResult(preset, pointCount, radius, height, turns));
224 spline.addFunc("lengthResult", [vm = spline.getHandle()](SplinePath* self, int samplesPerSegment) {
236 auto stroke = table.addClass<GeometryStroke>("ProcgenGeometryStroke", ssq::Class::Ctor<GeometryStroke()>());
240 stroke.addFunc("setShape", [projectStrokeVoid](GeometryStroke* self, const std::string& shape) mutable {
243 stroke.addFunc("setInputSpace", [projectStrokeVoid](GeometryStroke* self, const std::string& inputSpace,
247 stroke.addFunc("setSize", [projectStrokeVoid](GeometryStroke* self, float width, float depth) mutable {
250 stroke.addFunc("setMinimumSpacing", [projectStrokeVoid](GeometryStroke* self, float spacing) mutable {
253 stroke.addFunc("addPoint", [vm = stroke.getHandle()](GeometryStroke* self, float x, float y, float z) {
268 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
272 stroke.addFunc("getInputSpace", [](GeometryStroke* self) { return std::string(self->inputSpace()); });
277 std::function<MeshDeformationSession*()>([]() -> MeshDeformationSession* { return nullptr; }), true);
281 session.addFunc("initialize", [projectSessionVoid](MeshDeformationSession* self, MeshBuild* mesh) mutable {
284 Result<void>::failure(Diagnostic::error(DiagnosticCode::InvalidArgument, "initialize requires a mesh",
300 [projectSessionVoid](MeshDeformationSession* self, float x, float y, float z, float radius, float strength,
302 return projectSessionVoid(self->applyBrushResult("directional", x, y, z, radius, strength, falloff,
309 return projectSessionVoid(self->applyImpactResult(x, y, z, impulseX, impulseY, impulseZ, radius,
330 [projectSessionVoid](MeshDeformationSession* self, float x, float y, float z, float normalX, float normalY,
333 return projectSessionVoid(self->applySurfaceContactResult(x, y, z, normalX, normalY, normalZ, velocityX,
347 session.addFunc("stepSlime", [projectSessionVoid](MeshDeformationSession* self, float dt, float stiffness,
353 [projectSessionVoid](MeshDeformationSession* self, const std::string& mode, float interval, float offsetX,
355 return projectSessionVoid(self->configureColliderRefreshResult(mode, interval, offsetX, offsetY, offsetZ));
357 session.addFunc("requestColliderRefresh", [projectSessionVoid](MeshDeformationSession* self) mutable {
360 session.addFunc("updateColliderRefresh", [vm = session.getHandle()](MeshDeformationSession* self, float dt) {
364 session.addFunc("colliderMeshResult", [vm = session.getHandle()](MeshDeformationSession* self) {
370 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
372 session.addFunc("selectVerticesSphere", [vm = session.getHandle()](MeshDeformationSession* self, float x, float y,
374 return eve::script::projectResult(vm, self->selectVerticesSphereResult(x, y, z, radius, replace),
377 session.addFunc("selectVerticesBox", [vm = session.getHandle()](MeshDeformationSession* self, float minX,
384 session.addFunc("clearVertexSelection", [](MeshDeformationSession* self) { self->clearVertexSelection(); });
385 session.addFunc("getSelectedVertexCount", [](MeshDeformationSession* self) { return self->selectedVertexCount(); });
412 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
415 session.addFunc("getUndoCount", [](MeshDeformationSession* self) { return self->undoCount(); });
416 session.addFunc("isInitialized", [](MeshDeformationSession* self) { return self->isInitialized(); });
419 "ProcgenMeshModifierGraph", std::function<MeshModifierGraph*()>([]() -> MeshModifierGraph* { return nullptr; }),
425 [projectVoid](MeshModifierGraph* self, const std::string& id, const std::string& operation) mutable {
428 graph.addFunc("removeNode", [projectVoid](MeshModifierGraph* self, const std::string& id) mutable {
431 graph.addFunc("connect", [projectVoid](MeshModifierGraph* self, const std::string& from, const std::string& to,
433 graph.addFunc("disconnect", [projectVoid](MeshModifierGraph* self, const std::string& to, int input) mutable {
437 "setNodeMesh", [projectVoid](MeshModifierGraph* self, const std::string& id, MeshBuild* mesh) mutable {
445 "setNodeSplinePath", [projectVoid](MeshModifierGraph* self, const std::string& id, SplinePath* path) mutable {
452 graph.addFunc("setNodeSplineProfile", [projectVoid](MeshModifierGraph* self, const std::string& id,
471 graph.addFunc("setNodeString", [projectVoid](MeshModifierGraph* self, const std::string& id, const std::string& key,
478 graph.addFunc("executeResult", [vm = graph.getHandle()](MeshModifierGraph* self, const std::string& output) {
484 return eve::script::projectStatusResult(vm, Status::success(), std::move(instance).takeValue());
490 graph.addFunc("getCompiledSegmentCount", [](MeshModifierGraph* self) { return self->compiledSegmentCount(); });
491 graph.addFunc("getFusedOperationCount", [](MeshModifierGraph* self) { return self->fusedOperationCount(); });
492 graph.addFunc("hasNode", [](MeshModifierGraph* self, const std::string& id) { return self->hasNode(id); });
494 graph.addFunc("getNodeId", [](MeshModifierGraph* self, int index) { return self->nodeId(index); });
497 graph.addFunc("getOperationCount", [](MeshModifierGraph*) { return MeshModifierGraph::operationCount(); });
506 graph.addFunc("getOperationParamKey", [](MeshModifierGraph*, const std::string& operation, int index) {
509 graph.addFunc("getOperationParamKind", [](MeshModifierGraph*, const std::string& operation, int index) {
The single Squirrel projection for common Result, Status and Value.
Explicit Value/Owned/Borrowed semantics at the Squirrel boundary.
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
static Status success(StatusCode code=StatusCode::Ok)
Construct a successful status with an explicit non-error outcome.
Definition Status.h:81
Integrates dynamic-mesh hit mapping with the canonical image UV-paint session.
Definition DynamicMeshUvPaintSession.h:19
Result< void > initializeResult(const MeshBuild &mesh, const image::ImageData &image)
Initialize owning mesh and RGBA8 image snapshots atomically.
Definition DynamicMeshUvPaintSession.cpp:13
CPU triangle mesh from procedural mesh recipes (e.g. marching cubes). Positions/normals are xyz-packe...
Definition MeshBuild.h:19
static std::string operationParamDefault(std::string_view operation, int index)
Return encoded reflected parameter default.
Definition MeshModifierGraph.cpp:2036
static int operationParamCount(std::string_view operation)
Return reflected parameter count.
Definition MeshModifierGraph.cpp:2020
static std::string operationParamKind(std::string_view operation, int index)
Return reflected parameter kind: float, int, or string.
Definition MeshModifierGraph.cpp:2030
static std::string operationParamKey(std::string_view operation, int index)
Return reflected parameter key.
Definition MeshModifierGraph.cpp:2024
static int operationInputCount(std::string_view operation)
Return required mesh input count, or -1 for an unknown operation.
Definition MeshModifierGraph.cpp:2016
static std::string operationId(int index)
Return reflected operation id, or an empty string for an invalid index.
Definition MeshModifierGraph.cpp:2012
Definition EvpackPointGraphLoader.h:12
void exposeMeshModifierGraph(ssq::Table &table)
Register MeshModifierGraph script types on the Procgen module table.
Definition MeshModifierGraphScript.cpp:19
ssq::Table projectStatusResult(HSQUIRRELVM vm, const Status &status)
Project a checked native status that carries no payload.
Definition SquirrelBinding.cpp:454
ssq::Table projectResult(HSQUIRRELVM vm, Result< void > &&result)
Consume and project a void native Result using the common schema.
Definition SquirrelBinding.cpp:470
@ InvalidArgument