Пример #1
0
 public void addBody( Body body )
 {
     if ( bodySet.Contains( body ) )
         throw new ArgumentException( "body already added" );
     bodies.Add( body );
     bodySet.Add( body );
 }
Пример #2
0
 public void addBody( Body body, Mesh mesh )
 {
     addBody( body );
     mesh.Transform.set( body.Transform );
     bodyMeshMap.Add( body, mesh );
 }
Пример #3
0
 void removeContact( Body b1, Body b2 )
 {
     HashSet<Body> contacts;
     contactMap.TryGetValue( b1, out contacts );
     if ( contacts != null ) {
         contacts.Remove( b2 );
     }
     contactMap.TryGetValue( b2, out contacts );
     if ( contacts != null ) {
         contacts.Remove( b1 );
     }
 }
Пример #4
0
 bool hasContact( Body b1, Body b2 )
 {
     HashSet<Body> contacts;
     contactMap.TryGetValue( b1, out contacts );
     if ( contacts != null && contacts.Contains( b2 ) )
         return true;
     contactMap.TryGetValue( b2, out contacts );
     return contacts != null && contacts.Contains( b1 );
 }
Пример #5
0
 void collide( Collider collider, bool contact, Body body1, Body body2, int i, int j )
 {
     if ( collider.collide( body1, body2 ) ) {
         if ( contact ) {
             //Console.WriteLine( "contact continued: " + body1 + " [" + i + "] vs " + body2 + " [" + j + "]" );
         } else {
             //Console.WriteLine( "contact started: " + body1 + " [" + i + "] vs " + body2 + " [" + j + "]" );
             addContact( body1, body2 );
         }
     } else if ( contact ) {
         //Console.WriteLine( "contact ended: " + body1 + " [" + i + "] vs " + body2 + " [" + j + "]" );
         removeContact( body1, body2 );
     }
 }
Пример #6
0
 void addContact( Body b1, Body b2 )
 {
     HashSet<Body> contacts;
     contactMap.TryGetValue( b1, out contacts );
     if ( contacts == null ) {
         contacts = new HashSet<Body>();
         contactMap.Add( b1, contacts );
     }
     contacts.Add( b2 );
     contactMap.TryGetValue( b2, out contacts );
     if ( contacts == null ) {
         contacts = new HashSet<Body>();
         contactMap.Add( b2, contacts );
     }
     contacts.Add( b1 );
 }