Esempio n. 1
0
        protected override void Construct(agx.ElementaryConstraint tmpEc)
        {
            base.Construct(tmpEc);

            m_frictionCoefficient         = Convert.ToSingle(agx.FrictionController.safeCast(tmpEc).getFrictionCoefficient());
            m_nonLinearDirectSolveEnabled = agx.FrictionController.safeCast(tmpEc).getEnableNonLinearDirectSolveUpdate();
        }
        protected override void Construct(agx.ElementaryConstraint tmpEc)
        {
            base.Construct(tmpEc);

            m_speed           = Convert.ToSingle(agx.TargetSpeedController.safeCast(tmpEc).getSpeed());
            m_lockAtZeroSpeed = agx.TargetSpeedController.safeCast(tmpEc).getLockedAtZeroSpeed();
        }
        /// <summary>
        /// Callback from Constraint when it's being initialized.
        /// </summary>
        /// <param name="constraint">Constraint object this elementary constraint is part of.</param>
        /// <returns>True if successful.</returns>
        public virtual bool OnConstraintInitialize(Constraint constraint)
        {
            Native = constraint.Native.getElementaryConstraintGivenName(NativeName) ??
                     constraint.Native.getSecondaryConstraintGivenName(NativeName);

            return(GetInitialized <ElementaryConstraint>() != null);
        }
        protected override void Construct(agx.ElementaryConstraint tmpEc)
        {
            base.Construct(tmpEc);

            m_voltage            = Convert.ToSingle(agx.ElectricMotorController.safeCast(tmpEc).getVoltage());
            m_armatureResistance = Convert.ToSingle(agx.ElectricMotorController.safeCast(tmpEc).getArmatureResistance());
            m_torqueConstant     = Convert.ToSingle(agx.ElectricMotorController.safeCast(tmpEc).getTorqueConstant());
        }
 protected virtual void Construct(agx.ElementaryConstraint tmpEc)
 {
     m_nativeName = tmpEc.getName();
     m_enable     = tmpEc.getEnable();
     m_rowData    = new ElementaryConstraintRowData[tmpEc.getNumRows()];
     for (uint i = 0; i < tmpEc.getNumRows(); ++i)
     {
         m_rowData[i] = new ElementaryConstraintRowData(this, Convert.ToInt32(i), tmpEc);
     }
 }
Esempio n. 6
0
        /// <summary>
        /// Create instance given temporary native elementary constraint.
        /// </summary>
        /// <param name="tmpEc">Temporary elementary constraint.</param>
        /// <returns>New instance, as similar as possible, to the given native elementary constraint.</returns>
        public static ElementaryConstraint Create(GameObject gameObject, agx.ElementaryConstraint tmpEc)
        {
            if (tmpEc == null)
            {
                return(null);
            }

            ElementaryConstraint elementaryConstraint = null;

            // It's possible to know the type of controllers. We're basically not
            // interested in knowing the type of the ordinary ones.
            Type controllerType = null;

            if (agx.RangeController.safeCast(tmpEc) != null)
            {
                controllerType = agx.RangeController.safeCast(tmpEc).GetType();
            }
            else if (agx.TargetSpeedController.safeCast(tmpEc) != null)
            {
                controllerType = agx.TargetSpeedController.safeCast(tmpEc).GetType();
            }
            else if (agx.LockController.safeCast(tmpEc) != null)
            {
                controllerType = agx.LockController.safeCast(tmpEc).GetType();
            }
            else if (agx.ScrewController.safeCast(tmpEc) != null)
            {
                controllerType = agx.ScrewController.safeCast(tmpEc).GetType();
            }
            else if (agx.ElectricMotorController.safeCast(tmpEc) != null)
            {
                controllerType = agx.ElectricMotorController.safeCast(tmpEc).GetType();
            }
            else if (agx.FrictionController.safeCast(tmpEc) != null)
            {
                controllerType = agx.FrictionController.safeCast(tmpEc).GetType();
            }

            // This is a controller, instantiate the controller.
            if (controllerType != null)
            {
                elementaryConstraint = gameObject.AddComponent(Type.GetType("AGXUnity." + controllerType.Name)) as ElementaryConstraint;
            }
            // This is an ordinary elementary constraint.
            else
            {
                elementaryConstraint = gameObject.AddComponent <ElementaryConstraint>();
            }

            // Copies data from the native instance.
            elementaryConstraint.Construct(tmpEc);

            return(elementaryConstraint);
        }
Esempio n. 7
0
        protected override void Construct(agx.ElementaryConstraint tmpEc)
        {
            base.Construct(tmpEc);

            m_position = Convert.ToSingle(agx.LockController.safeCast(tmpEc).getPosition());
        }
        protected override void Construct(agx.ElementaryConstraint tmpEc)
        {
            base.Construct(tmpEc);

            m_lead = Convert.ToSingle(agx.ScrewController.safeCast(tmpEc).getLead());
        }
        protected override void Construct(agx.ElementaryConstraint tmpEc)
        {
            base.Construct(tmpEc);

            m_range = new RangeReal(agx.RangeController.safeCast(tmpEc).getRange());
        }
Esempio n. 10
0
        protected override void OnDestroy()
        {
            Native = null;

            base.OnDestroy();
        }
Esempio n. 11
0
 /// <summary>
 /// Construct given elementary constraint, row in the elementary constraint and (optional)
 /// a native instance to copy default values from.
 /// </summary>
 /// <param name="elementaryConstraint">Elementary constraint this row data belongs to.</param>
 /// <param name="row">Row index in the elementary constraint.</param>
 /// <param name="tmpEc">Temporary native instance to copy default values from.</param>
 public ElementaryConstraintRowData(ElementaryConstraint elementaryConstraint, int row, agx.ElementaryConstraint tmpEc = null)
 {
     m_elementaryConstraint = elementaryConstraint;
     m_row = row;
     if (tmpEc != null)
     {
         m_compliance = Convert.ToSingle(tmpEc.getCompliance(RowUInt));
         // AGX Dynamics damping is optimized for 60 Hz simulations. Assuming
         // a fixed update of 50 Hz in Unity we scale the damping by 60 / 50 = 1.2
         // to transform the damping to 50 Hz.
         m_damping    = 1.2f * Convert.ToSingle(tmpEc.getDamping(RowUInt));
         m_forceRange = new RangeReal(tmpEc.getForceRange(RowUInt));
     }
 }
 /// <summary>
 /// Construct given elementary constraint, row in the elementary constraint and (optional)
 /// a native instance to copy default values from.
 /// </summary>
 /// <param name="elementaryConstraint">Elementary constraint this row data belongs to.</param>
 /// <param name="row">Row index in the elementary constraint.</param>
 /// <param name="tmpEc">Temporary native instance to copy default values from.</param>
 public ElementaryConstraintRowData(ElementaryConstraint elementaryConstraint, int row, agx.ElementaryConstraint tmpEc = null)
 {
     m_elementaryConstraint = elementaryConstraint;
     m_row = row;
     if (tmpEc != null)
     {
         m_compliance = Convert.ToSingle(tmpEc.getCompliance(RowUInt));
         m_damping    = Convert.ToSingle(tmpEc.getDamping(RowUInt));
         m_forceRange = new RangeReal(tmpEc.getForceRange(RowUInt));
     }
 }