Beispiel #1
0
    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);
    }