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); } }
/// <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); }
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()); }
protected override void OnDestroy() { Native = null; base.OnDestroy(); }
/// <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)); } }