载入中...
搜索中...
未找到
MeshAdhereLive.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Export.h"
4#include "common/Result.h"
5#include "procgen/MeshBuild.h"
7
8#include <cstdint>
9#include <string>
10
11namespace eve::procgen {
12
20public:
22 [[nodiscard]] Result<void> activateResult(const MeshBuild& sourceA, const MeshBuild& surfaceB);
23 [[nodiscard]] bool isActive() const noexcept { return active_; }
24 [[nodiscard]] std::uint64_t revision() const noexcept { return revision_; }
25
26 [[nodiscard]] Result<void> setParamsResult(const MeshContactBlendParams& params);
27 [[nodiscard]] const MeshContactBlendParams& params() const noexcept { return params_; }
29 [[nodiscard]] Result<void> setSoftSnapPositionsResult(bool enabled) noexcept;
30
32 [[nodiscard]] Result<void> setSurfaceResult(const MeshBuild& surfaceB);
34 [[nodiscard]] Result<void> setSourceResult(const MeshBuild& sourceA);
35
40 [[nodiscard]] Result<std::uint64_t> evaluateResult(bool force = false);
41 [[nodiscard]] bool isDirty() const noexcept { return dirty_; }
42
49 [[nodiscard]] const MeshBuild* derivedMesh() const noexcept;
55 [[nodiscard]] Result<MeshBuild> derivedMeshResult() const;
62 [[nodiscard]] const MeshBuild* sourceMesh() const noexcept;
63
65 void removeSetup() noexcept;
69 [[nodiscard]] Result<MeshBuild> bakeToMeshResult();
70
71private:
72 bool active_ = false;
73 bool dirty_ = false;
74 std::uint64_t revision_ = 0;
75 MeshBuild source_{};
76 MeshBuild surface_{};
77 MeshBuild derived_{};
78 MeshContactBlendParams params_{};
79 std::string falloffStorage_ = "smooth";
80};
81
86[[nodiscard]] EVENGINE_API_DOMAINS Result<MeshBuild> meshAdhereResult(const MeshBuild& sourceA,
87 const MeshBuild& surfaceB,
88 const MeshContactBlendParams& params);
89
90} // namespace eve::procgen
#define EVENGINE_API_DOMAINS
Definition Export.h:110
Move-only, checked operation results for the common layer.
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Real-time dynamic fusion session: source A sticks to surface B with adjustable params.
const MeshContactBlendParams & params() const noexcept
bool isActive() const noexcept
bool isDirty() const noexcept
std::uint64_t revision() const noexcept
CPU triangle mesh from procedural mesh recipes (e.g. marching cubes). Positions/normals are xyz-packe...
Definition MeshBuild.h:19
std::vector< ParamSpec > params
Result< MeshBuild > meshAdhereResult(const MeshBuild &sourceA, const MeshBuild &surfaceB, const MeshContactBlendParams &params)
One-shot adhere of A onto B (soft snap on) using contact blend.
bool enabled
Parameters for contact-band edge and material fusion.