Exemplo n.º 1
0
		internal void removeConstraintRef( btTypedConstraint c )
		{
			int index = m_constraintRefs.IndexOf( c );
			//don't remove constraints that are not referenced
			if( index != -1 )
			{
				m_constraintRefs.Remove( c );
				btCollisionObject colObjA = c.getRigidBodyA();
				btCollisionObject colObjB = c.getRigidBodyB();
				if( colObjA == this )
				{
					colObjA.setIgnoreCollisionCheck( colObjB, false );
				}
				else
				{
					colObjB.setIgnoreCollisionCheck( colObjA, false );
				}
			}
		}
Exemplo n.º 2
0
		public override void addConstraint( btTypedConstraint constraint, bool disableCollisionsBetweenLinkedBodies = false )
		{
			m_constraints.Add( constraint );
			//Make sure the two bodies of a type constraint are different (possibly add this to the btTypedConstraint constructor?)
			Debug.Assert( constraint.getRigidBodyA() != constraint.getRigidBodyB() );

			if( disableCollisionsBetweenLinkedBodies )
			{
				constraint.m_rbA.addConstraintRef( constraint );
				constraint.m_rbB.addConstraintRef( constraint );
			}
		}
Exemplo n.º 3
0
		internal void addConstraintRef( btTypedConstraint c )
		{
			///disable collision with the 'other' body

			int index = m_constraintRefs.IndexOf( c );
			//don't add constraints that are already referenced
			//Debug.Assert(index == m_constraintRefs.Count);
			if( index == -1 )
			{
				m_constraintRefs.Add( c );
				btCollisionObject colObjA = c.getRigidBodyA();
				btCollisionObject colObjB = c.getRigidBodyB();
				if( colObjA == this )
				{
					colObjA.setIgnoreCollisionCheck( colObjB, true );
				}
				else
				{
					colObjB.setIgnoreCollisionCheck( colObjA, true );
				}
			}
		}
Exemplo n.º 4
0
		public static int btGetConstraintIslandId( btTypedConstraint lhs )
		{
			int islandId;

			btCollisionObject rcolObj0 = lhs.getRigidBodyA();
			btCollisionObject rcolObj1 = lhs.getRigidBodyB();
			islandId = rcolObj0.getIslandTag() >= 0 ? rcolObj0.getIslandTag() : rcolObj1.getIslandTag();
			return islandId;

		}