diff --git a/plugin/usd_decoder/usd_decoder.cc b/plugin/usd_decoder/usd_decoder.cc index 59b7f1f6..ff7e3021 100644 --- a/plugin/usd_decoder/usd_decoder.cc +++ b/plugin/usd_decoder/usd_decoder.cc @@ -1829,6 +1829,12 @@ void ParseUsdPhysicsCollider(mjSpec* spec, } } +void ParseJointEnabled(mjsEquality* eq, const pxr::UsdPhysicsJoint& joint) { + bool jointEnabled = true; + joint.GetJointEnabledAttr().Get(&jointEnabled); + eq->active = jointEnabled ? 1 : 0; +} + void ParseMjcEqualityAPISolverParams( mjsEquality* eq, const pxr::MjcPhysicsEqualityAPI& equality_api, const pxr::UsdPrim& prim) { @@ -1897,6 +1903,9 @@ void ParseConstraint(mjSpec* spec, const pxr::UsdPrim& prim, mjsBody* body, eq_joint_api.GetCoef3Attr().Get(&eq->data[3]); eq_joint_api.GetCoef4Attr().Get(&eq->data[4]); + pxr::UsdPhysicsJoint joint(prim); + ParseJointEnabled(eq, joint); + ParseMjcEqualityAPISolverParams(eq, equality_api, prim); } else if (prim.IsA() || prim.IsA()) { @@ -2060,6 +2069,8 @@ void ParseConstraint(mjSpec* spec, const pxr::UsdPrim& prim, mjsBody* body, } } } + + ParseJointEnabled(eq, joint); } }