public override void Initialize( BroadPhaseEntry entryA, BroadPhaseEntry entryB ) { voxelBlob = entryA as VoxelBlob; convex = entryB as ConvexCollidable; if( voxelBlob == null || convex == null ) { voxelBlob = entryB as VoxelBlob; convex = entryA as ConvexCollidable; if( voxelBlob == null || convex == null ) throw new ArgumentException( "Inappropriate types used to initialize pair." ); } //Contact normal goes from A to B. broadPhaseOverlap = new BroadPhaseOverlap( convex, voxelBlob, broadPhaseOverlap.CollisionRule ); Debugger.Break(); //UpdateMaterialProperties( convex.Entity != null ? convex.Entity.Material : null, voxelBlob.Material ); base.Initialize( entryA, entryB ); }
///<summary> /// Cleans up the pair handler. ///</summary> public override void CleanUp() { base.CleanUp(); voxelBlob = null; convex = null; }
public override void Initialize( Collidable newCollidableA, Collidable newCollidableB ) { convex = newCollidableA as ConvexCollidable; voxelBlob = newCollidableB as VoxelBlob; if( convex == null || voxelBlob == null ) { convex = newCollidableB as ConvexCollidable; voxelBlob = newCollidableA as VoxelBlob; if( convex == null || voxelBlob == null ) throw new ArgumentException( "Inappropriate types used to initialize contact manifold." ); } ActivePairs = new QuickDictionary<Int3, GeneralConvexPairTester>( BufferPools<Int3>.Locking, BufferPools<GeneralConvexPairTester>.Locking, BufferPools<int>.Locking, 3 ); activePairsBackBuffer = new QuickDictionary<Int3, GeneralConvexPairTester>( BufferPools<Int3>.Locking, BufferPools<GeneralConvexPairTester>.Locking, BufferPools<int>.Locking, 3 ); }