public bool AddConstraint(BTypedConstraint c) { if (!isDisposed) { if (physicWorldParameters.worldType < WorldType.RigidBodyDynamics) { Debug.LogError("World type must not be collision only"); return(false); } if (physicWorldParameters.debugType >= BDebug.DebugType.Debug) { Debug.LogFormat("Adding constraint {0} to world", c); } if (c._BuildConstraint()) { DWorld.AddConstraint(c.GetConstraint(), c.disableCollisionsBetweenConstrainedBodies); c.m_isInWorld = true; } return(true); } return(false); }
public static void DrawTypedConstraint(BTypedConstraint btc) { EditorGUILayout.LabelField("Reference Frame Local To This Object", EditorStyles.boldLabel); btc.localConstraintPoint = EditorGUILayout.Vector3Field("Local Constraint Point", btc.localConstraintPoint); btc.localConstraintAxisX = EditorGUILayout.Vector3Field("Local Constraint Axis X", btc.localConstraintAxisX); btc.localConstraintAxisY = EditorGUILayout.Vector3Field("Local Constraint Axis Y", btc.localConstraintAxisY); btc.constraintType = (BTypedConstraint.ConstraintType)EditorGUILayout.EnumPopup("Constraint Type", btc.constraintType); EditorGUILayout.Separator(); btc.breakingImpulseThreshold = EditorGUILayout.FloatField("Breaking Impulse Threshold", btc.breakingImpulseThreshold); btc.disableCollisionsBetweenConstrainedBodies = EditorGUILayout.Toggle("Disable Collisions Between Bodies", btc.disableCollisionsBetweenConstrainedBodies); btc.otherRigidBody = (BRigidBody)EditorGUILayout.ObjectField("Other Rigid Body", btc.otherRigidBody, typeof(BRigidBody), true); btc.debugDrawSize = EditorGUILayout.FloatField("Debug Draw Size", btc.debugDrawSize); }