载入中...
搜索中...
未找到
FractureRecipe.cpp
浏览该文件的文档.
19bool hasExactFields(const eve::Value::Object& object, std::initializer_list<std::string_view> expected) {
30 eve::DiagnosticCode::InvalidArgument, "fracture-recipe field must be an integer", std::string(name)));
38 eve::DiagnosticCode::InvalidArgument, "fracture-recipe field must be numeric", std::string(name)));
39 const double parsed = value->isDouble() ? value->asDouble() : static_cast<double>(value->asInt());
43 eve::DiagnosticCode::InvalidArgument, "fracture-recipe number must be a finite float", std::string(name)));
51 eve::DiagnosticCode::InvalidArgument, "fracture-recipe field must be a string", std::string(name)));
60 eve::DiagnosticCode::InvalidArgument, "fracture-recipe seed must be non-negative", std::string(name)));
64eve::Result<std::vector<float>> floatArray(const eve::Value::Object& object, std::string_view name) {
69 eve::DiagnosticCode::InvalidArgument, "fracture-recipe field must be an array", std::string(name)));
98 if (name == "UniformVoronoi") return eve::Result<FractureMode>::success(FractureMode::UniformVoronoi);
99 if (name == "ClusteredVoronoi") return eve::Result<FractureMode>::success(FractureMode::ClusteredVoronoi);
118 eve::DiagnosticCode::InvalidArgument, "clusterRadius must be finite and positive", "clusterRadius"));
121 eve::DiagnosticCode::InvalidArgument, "radialPlanes/Spokes are outside supported ranges", "radial"));
124 eve::DiagnosticCode::InvalidArgument, "planeNormals must contain xyz triples", "planeNormals"));
127 eve::DiagnosticCode::InvalidArgument, "planeOffsets must match planeNormals triple count", "planeOffsets"));
140 eve::DiagnosticCode::InvalidArgument, "Planar mode requires at least one plane", "planeOffsets"));
143 eve::DiagnosticCode::InvalidArgument, "randomStreamName must be a non-empty string up to 128 chars",
149 if (!std::isfinite(defaultDensity) || defaultDensity <= 0.f || !std::isfinite(defaultFriction) ||
243 if (eve::schema::SchemaRegistry::resolve(std::string(SchemaId), static_cast<int>(SchemaVersion)))
262 eve::DiagnosticCode::InvalidArgument, "fracture-recipe has unknown or missing fields", "recipe"));
271 eve::DiagnosticCode::Unsupported, "fracture-recipe schema version is unsupported", "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
const std::string & asString() const
Return the string payload; the caller must have checked the kind.
Definition Value.cpp:87
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
@ UniformVoronoi
@ ClusteredVoronoi
const EditorValue * field(const EditorValue &value, const char *name)
Definition RoadNetworkEditTarget.cpp:15
@ InvalidArgument
@ Unsupported
Definition Container.h:602
Versioned cook recipe for Chaos-style pre-fracture (schema v1).
Definition FractureRecipe.h:29
static eve::Result< void > ensureSchemaRegistered()
Ensure schema registered.
Definition FractureRecipe.cpp:242
std::string randomStreamName
Definition FractureRecipe.h:43
static constexpr std::uint32_t SchemaVersion
Definition FractureRecipe.h:31
float minimumThickness
Minimum AABB axis length in metres; thinner meshes are rejected.
Definition FractureRecipe.h:50
static constexpr std::string_view SchemaId
Definition FractureRecipe.h:30
std::string interiorMaterialLogicalId
Definition FractureRecipe.h:42
static eve::Result< FractureRecipe > fromValue(const eve::Value &value)
From value.
Definition FractureRecipe.cpp:250
static eve::schema::SchemaDefinition schemaDefinition()
Schema definition.
Definition FractureRecipe.cpp:202
float defaultStrainThreshold
Definition FractureRecipe.h:45
float defaultRestitution
Definition FractureRecipe.h:48
std::vector< float > planeOffsets
Definition FractureRecipe.h:41
std::vector< float > planeNormals
Definition FractureRecipe.h:40
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