(attr: str, prop_name: str, ue_type: str,
vec3_convert: Optional[str] = None)
| 331 | |
| 332 | |
| 333 | def _emit_import_line(attr: str, prop_name: str, ue_type: str, |
| 334 | vec3_convert: Optional[str] = None) -> str: |
| 335 | toggle = override_toggle_name(prop_name) |
| 336 | key = f'TEXT("{attr}")' |
| 337 | if ue_type == "float": |
| 338 | return f' MjXmlUtils::ReadAttrFloat(Node, {key}, {prop_name}, {toggle});\n' |
| 339 | if ue_type == "double": |
| 340 | return f' MjXmlUtils::ReadAttrDouble(Node, {key}, {prop_name}, {toggle});\n' |
| 341 | if ue_type == "int32": |
| 342 | return f' MjXmlUtils::ReadAttrInt(Node, {key}, {prop_name}, {toggle});\n' |
| 343 | if ue_type == "bool": |
| 344 | return f' MjXmlUtils::ReadAttrBool(Node, {key}, {prop_name}, {toggle});\n' |
| 345 | if ue_type == "FString": |
| 346 | return (f' if (MjXmlUtils::ReadAttrString(Node, {key}, {prop_name}))' |
| 347 | f' {toggle} = true;\n') |
| 348 | if ue_type == "FVector": |
| 349 | out = f' MjXmlUtils::ReadAttrVec3(Node, {key}, {prop_name}, {toggle});\n' |
| 350 | # MuJoCo direction vectors don't carry units but DO use opposite Y |
| 351 | # handedness vs UE. Apply Y-negate post-read when configured. |
| 352 | if vec3_convert == "y_negate": |
| 353 | out += f' if ({toggle}) {prop_name}.Y = -{prop_name}.Y;\n' |
| 354 | return out |
| 355 | if ue_type == "FLinearColor": |
| 356 | return f' MjXmlUtils::ReadAttrColor(Node, {key}, {prop_name}, {toggle});\n' |
| 357 | if ue_type.startswith("TArray<float"): |
| 358 | return f' MjXmlUtils::ReadAttrFloatArray(Node, {key}, {prop_name}, {toggle});\n' |
| 359 | if ue_type.startswith("TArray<int"): |
| 360 | return f' MjXmlUtils::ReadAttrIntArray(Node, {key}, {prop_name}, {toggle});\n' |
| 361 | if ue_type.startswith("TArray<double"): |
| 362 | return f' MjXmlUtils::ReadAttrDoubleArray(Node, {key}, {prop_name}, {toggle});\n' |
| 363 | # Fallback (logged once) |
| 364 | return f' MjXmlUtils::ReadAttrFloat(Node, {key}, {prop_name}, {toggle});\n' |
| 365 | |
| 366 | |
| 367 | # Per-strategy resolvers for the schema-attr -> mjs-field name mapper. |
no test coverage detected