From e7a9447c03aa2aaac7b6ab664a1a72623d12c89c Mon Sep 17 00:00:00 2001 From: Benjamin Nauck Date: Sun, 12 Feb 2023 21:59:31 +0100 Subject: [PATCH] Add gravcomp to body in unity plugin The unity plugin is missing gravcomp which makes it impossible for buoyancy --- unity/Runtime/Components/Bodies/MjBody.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/unity/Runtime/Components/Bodies/MjBody.cs b/unity/Runtime/Components/Bodies/MjBody.cs index 8d6a8cd3..e29de5c0 100644 --- a/unity/Runtime/Components/Bodies/MjBody.cs +++ b/unity/Runtime/Components/Bodies/MjBody.cs @@ -20,17 +20,23 @@ namespace Mujoco { // The component represents the apex of hierarchy that defines a single rigid body. public class MjBody : MjBaseBody { + + [Tooltip("Gravity compensation force, specified as fraction of body weight.")] + public float GravityCompensation; + protected override void OnParseMjcf(XmlElement mjcf) { // Transform transform.localPosition = MjEngineTool.UnityVector3(mjcf.GetVector3Attribute("pos", defaultValue: Vector3.zero)); transform.localRotation = MjEngineTool.UnityQuaternion( mjcf.GetQuaternionAttribute("quat", defaultValue: MjEngineTool.MjQuaternionIdentity)); + GravityCompensation = mjcf.GetFloatAttribute("gravcomp", defaultValue: 0.0f); } protected override XmlElement OnGenerateMjcf(XmlDocument doc) { var mjcf = (XmlElement)doc.CreateElement("body"); MjEngineTool.PositionRotationToMjcf(mjcf, this); + mjcf.SetAttribute("gravcomp", MjEngineTool.MakeLocaleInvariant($"{GravityCompensation}")); return mjcf; }