///<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.");
            }
        }
示例#2
0
        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);
        }