Advance M16 modifier parity and context governance
This commit is contained in:
@@ -1475,7 +1475,7 @@ std::string modifier_type_name(const int64_t type)
|
||||
"GREASE_PENCIL_SMOOTH", "GREASE_PENCIL_OFFSET", "GREASE_PENCIL_NOISE", "GREASE_PENCIL_MIRROR",
|
||||
"GREASE_PENCIL_THICKNESS", "GREASE_PENCIL_LATTICE", "GREASE_PENCIL_DASH", "GREASE_PENCIL_MULTIPLY",
|
||||
"GREASE_PENCIL_LENGTH", "GREASE_PENCIL_VERTEX_WEIGHT_ANGLE", "GREASE_PENCIL_ARRAY",
|
||||
"GREASE_PENCIL_VERTEX_WEIGHT_PROXIMITY", "GREASE_PENCIL_HOOK", "GREASE_PENCIL_LINEART",
|
||||
"GREASE_PENCIL_VERTEX_WEIGHT_PROXIMITY", "GREASE_PENCIL_HOOK", "LINEART",
|
||||
"GREASE_PENCIL_ARMATURE", "GREASE_PENCIL_TIME", "GREASE_PENCIL_ENVELOPE",
|
||||
"GREASE_PENCIL_OUTLINE", "GREASE_PENCIL_SHRINKWRAP", "GREASE_PENCIL_BUILD",
|
||||
"GREASE_PENCIL_SIMPLIFY", "GREASE_PENCIL_TEXTURE"};
|
||||
@@ -1626,6 +1626,11 @@ json modifier_parameters(const ParsedBlend &blend,
|
||||
parameters["deformMethod"] = read_integer(*blend.sdna, modifier, "mode").value_or(0);
|
||||
parameters["deformAxis"] = read_integer(*blend.sdna, modifier, "deform_axis").value_or(0);
|
||||
break;
|
||||
case 42:
|
||||
parameters["branchSmoothing"] = read_float(*blend.sdna, modifier, "branch_smoothing").value_or(0.0f);
|
||||
parameters["skinFlags"] = read_integer(*blend.sdna, modifier, "flag").value_or(0);
|
||||
parameters["symmetryAxes"] = read_integer(*blend.sdna, modifier, "symmetry_axes").value_or(1);
|
||||
break;
|
||||
case 33:
|
||||
parameters["thickness"] = read_float(*blend.sdna, modifier, "offset_fac").value_or(0.01f);
|
||||
parameters["offset"] = read_float(*blend.sdna, modifier, "offset").value_or(-1.0f);
|
||||
@@ -1686,7 +1691,7 @@ json modifier_stack_from_object(const ParsedBlend &blend,
|
||||
const bool known_metadata = type == 1 || type == 2 || type == 3 || type == 4 || type == 5 ||
|
||||
type == 6 || type == 7 || type == 8 || type == 9 || type == 11 ||
|
||||
type == 12 || type == 13 || type == 14 || type == 16 || type == 17 ||
|
||||
type == 18 || type == 24 || type == 25 || type == 28 || type == 33 ||
|
||||
type == 18 || type == 24 || type == 25 || type == 28 || type == 42 || type == 33 ||
|
||||
type == 34 || type == 44 || type == 48 || type == 53 || type == 54 ||
|
||||
type == 55 || type == 57;
|
||||
stack.push_back({{"uuid", uuid},
|
||||
|
||||
@@ -4288,6 +4288,16 @@ bool web_engine_blend_main_physics_simulation_json(WebBlendMainState *state,
|
||||
error = "PHYSICS_MANIFEST_INVALID: authoritative Main is not open";
|
||||
return false;
|
||||
}
|
||||
#ifdef WITH_WEB
|
||||
/* Legacy particle systems are metadata-only in the Web runtime. Their desktop modifier chain
|
||||
* can contain file-space pointers that are unsafe for the physics manifest walker. */
|
||||
for (const Object &object : state->main->objects) {
|
||||
if (object.particlesystem.first != nullptr) {
|
||||
physics_json = json({{"schemaVersion", 1}, {"systems", json::array()}}).dump();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
constexpr size_t max_systems = 4096;
|
||||
auto canonical_number = [](const float value) -> json {
|
||||
return std::isfinite(value) && std::trunc(value) == value ? json(int64_t(value)) : json(value);
|
||||
|
||||
Reference in New Issue
Block a user