///<summary> /// Initializes the manifold. ///</summary> ///<param name="newCollidableA">First collidable.</param> ///<param name="newCollidableB">Second collidable.</param> public override void Initialize(Collidable newCollidableA, Collidable newCollidableB) { collidableA = newCollidableA as ConvexCollidable; collidableB = newCollidableB as ConvexCollidable; pairTester.Initialize(newCollidableA, newCollidableB); if (collidableA == null || collidableB == null) { throw new Exception("Inappropriate types used to initialize pair tester."); } }
private GeneralConvexPairTester GetPair(ref Vector3i position) { // TODO: Efficiency! GeneralConvexPairTester pair = testerPool.Take(); ReusableGenericCollidable <ConvexShape> boxCollidable = new ReusableGenericCollidable <ConvexShape>(mesh.ChunkShape.ShapeAt(position.X, position.Y, position.Z, out Vector3 offs)); pair.Initialize(convex, boxCollidable); boxCollidable.WorldTransform = new RigidTransform(new Vector3( mesh.Position.X + position.X + offs.X, mesh.Position.Y + position.Y + offs.Y, mesh.Position.Z + position.Z + offs.Z)); return(pair); }