载入中...
搜索中...
未找到
SoftBodyModelDefinition.cpp
浏览该文件的文档.
16bool hasExactFields(const eve::Value::Object& object, std::initializer_list<std::string_view> expected) {
45 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "sourceMesh must not be empty", "sourceMesh"));
52 if (surfaceResolution < 2 || surfaceResolution > 128 || volumeResolution < 2 || volumeResolution > 128 ||
55 eve::DiagnosticCode::InvalidArgument, "sampling resolutions must be in [2, 128]", "resolution"));
61 eve::Diagnostic::error(eve::DiagnosticCode::InvalidArgument, "smoothing must be in [0, 1]", "smoothing"));
62 if (surfaceSampling == SoftBodySurfaceSampling::None && volumeSampling == SoftBodyVolumeSampling::None)
64 eve::DiagnosticCode::InvalidArgument, "at least one sampling mode must be enabled", "sampling"));
85eve::Result<SoftBodyModelDefinition> SoftBodyModelDefinition::fromValue(const eve::Value& value) {
95 eve::DiagnosticCode::InvalidArgument, "soft-body model fields do not match version 1", "softbodyModel"));
107 if (!mesh || !mesh->isString() || !surface || !surface->isString() || !volume || !volume->isString())
109 eve::DiagnosticCode::InvalidArgument, "model string field has the wrong type", "softbodyModel"));
114 else if (surface->asString() == "vertices") result.surfaceSampling = SoftBodySurfaceSampling::Vertices;
115 else if (surface->asString() == "voxels") result.surfaceSampling = SoftBodySurfaceSampling::Voxels;
120 else if (volume->asString() == "voxels") result.volumeSampling = SoftBodyVolumeSampling::Voxels;
140 !integer("volumeResolution", result.volumeResolution) || !integer("shapeResolution", result.shapeResolution) ||
143 eve::DiagnosticCode::InvalidArgument, "model numeric field has the wrong type", "softbodyModel"));
171 schema.description = "Mesh source and deterministic sampling settings used to cook a SoftBodyModel.";
192 if (eve::schema::SchemaRegistry::resolve(std::string(SchemaId), static_cast<int>(SchemaVersion)))
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 eve::Result< SchemaRegistrationStatus > registerVersioned(const SchemaDefinition &definition)
Registers a new exact (id, version) entry without replacing it.
Definition SchemaRegistry.cpp:864
static const SchemaDefinition * resolve(const std::string &schemaId, int schemaVersion)
Resolves one exact (schemaId, schemaVersion) pair, or nullptr.
Definition SchemaRegistry.cpp:879
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ InvalidArgument
Definition Container.h:602
Versioned authoring recipe used to cook a mesh-backed SoftBodyModel.
Definition SoftBodyModelDefinition.h:21
int volumeResolution
Definition SoftBodyModelDefinition.h:29
static eve::Result< void > ensureSchemaRegistered()
Idempotently register version 1 in the process schema registry.
Definition SoftBodyModelDefinition.cpp:191
eve::Result< void > validate() const
Validate the complete immutable cooking recipe.
Definition SoftBodyModelDefinition.cpp:42
static constexpr std::string_view SchemaId
Definition SoftBodyModelDefinition.h:22
float smoothing
Definition SoftBodyModelDefinition.h:32
int shapeResolution
Definition SoftBodyModelDefinition.h:30
std::string sourceMesh
Definition SoftBodyModelDefinition.h:25
static eve::schema::SchemaDefinition schemaDefinition()
Return the registry schema for tooling and generic JSON validation.
Definition SoftBodyModelDefinition.cpp:149
int surfaceResolution
Definition SoftBodyModelDefinition.h:27
SoftBodyVolumeSampling volumeSampling
Definition SoftBodyModelDefinition.h:28
float maxAnisotropy
Definition SoftBodyModelDefinition.h:31
static eve::Result< SoftBodyModelDefinition > fromValue(const eve::Value &value)
Decode version 1 transactionally and reject unknown fields.
Definition SoftBodyModelDefinition.cpp:85
eve::Result< eve::Value > toValue() const
Encode every version-1 field into an owning persistent value.
Definition SoftBodyModelDefinition.cpp:68
SoftBodySurfaceSampling surfaceSampling
Definition SoftBodyModelDefinition.h:26
static constexpr std::uint32_t SchemaVersion
Definition SoftBodyModelDefinition.h:23
Metadata and validation constraints for one object member.
Definition SchemaTypes.h:77
std::vector< FieldDefinition > fields
Definition SchemaTypes.h:99
bool additionalProperties
Definition SchemaTypes.h:98