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);
            }
        }
示例#6
0
        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);
        }