protected override void ImportJointData(Joint joint) { #if UNITY_2020_1_OR_NEWER AdjustMovement(joint); if (joint.dynamics != null) { unityJoint.linearDamping = (float)joint.dynamics.damping; unityJoint.jointFriction = (float)joint.dynamics.friction; } else { unityJoint.angularDamping = 0; unityJoint.jointFriction = 0; } #else ArticulationBody prismaticJoint = (ArticulationBody)unityJoint; prismaticJoint.axis = (joint.axis != null) ? GetAxis(joint.axis) : GetDefaultAxis(); if (joint.dynamics != null) { prismaticJoint.xDrive = GetJointDrive(joint.dynamics); } if (joint.limit != null) { PrismaticJointLimitsManager prismaticLimits = GetComponent <PrismaticJointLimitsManager>(); prismaticLimits.InitializeLimits(joint.limit); } #endif }
private void Start() { jointStateWriter = GetComponent <JointStateWriter>(); urdfJoint = GetComponent <UrdfJoint>(); hingeJointLimitsManager = GetComponent <HingeJointLimitsManager>(); prismaticJointLimitsManager = GetComponent <PrismaticJointLimitsManager>(); useLimits = (hingeJointLimitsManager != null || prismaticJointLimitsManager != null); }
protected override Joint.Limit ExportLimitData() { PrismaticJointLimitsManager prismaticLimits = GetComponent<PrismaticJointLimitsManager>(); return new Joint.Limit( Math.Round(prismaticLimits.PositionLimitMin, RoundDigits), Math.Round(prismaticLimits.PositionLimitMax, RoundDigits), EffortLimit, VelocityLimit); }
public override bool AreLimitsCorrect() { #if UNITY_2020_1_OR_NEWER ArticulationBody joint = GetComponent <ArticulationBody>(); return(joint.linearLockX == ArticulationDofLock.LimitedMotion && joint.xDrive.lowerLimit < joint.xDrive.upperLimit); #else PrismaticJointLimitsManager limits = GetComponent <PrismaticJointLimitsManager>(); return(limits != null && limits.PositionLimitMin < limits.PositionLimitMax); #endif }
protected override void ImportJointData(Joint joint) { ConfigurableJoint prismaticJoint = (ConfigurableJoint) UnityJoint; prismaticJoint.axis = (joint.axis != null) ? GetAxis(joint.axis) : GetDefaultAxis(); if (joint.dynamics != null) prismaticJoint.xDrive = GetJointDrive(joint.dynamics); if (joint.limit != null) { PrismaticJointLimitsManager prismaticLimits = GetComponent<PrismaticJointLimitsManager>(); prismaticLimits.InitializeLimits(joint.limit); } }
protected override Joint.Limit ExportLimitData() { #if UNITY_2020_1_OR_NEWER ArticulationDrive drive = GetComponent <ArticulationBody>().xDrive; return(new Joint.Limit(drive.lowerLimit, drive.upperLimit, drive.forceLimit, unityJoint.maxLinearVelocity)); #else PrismaticJointLimitsManager prismaticLimits = GetComponent <PrismaticJointLimitsManager>(); return(new Joint.Limit( Math.Round(prismaticLimits.PositionLimitMin, RoundDigits), Math.Round(prismaticLimits.PositionLimitMax, RoundDigits), EffortLimit, VelocityLimit)); #endif }
public override bool AreLimitsCorrect() { PrismaticJointLimitsManager limits = GetComponent <PrismaticJointLimitsManager>(); return(limits != null && limits.PositionLimitMin < limits.PositionLimitMax); }