///<summary>
 /// Constructs a new contact manifold.
 ///</summary>
 protected TriangleMeshConvexContactManifold()
 {
     contacts               = new RawList <Contact>(4);
     unusedContacts         = new UnsafeResourcePool <Contact>(4);
     contactIndicesToRemove = new RawList <int>(4);
     candidatesToAdd        = new RawValueList <ContactData>(8);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList<RayCastResult> list)
 {
     if (SubPoolRayCastResultList == null)
         SubPoolRayCastResultList = new UnsafeResourcePool<RawList<RayCastResult>>();
     list.Clear();
     SubPoolRayCastResultList.GiveBack(list);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList<BroadPhaseEntry> list)
 {
     if (SubPoolBroadPhaseEntryList == null)
         SubPoolBroadPhaseEntryList = new UnsafeResourcePool<RawList<BroadPhaseEntry>>();
     list.Clear();
     SubPoolBroadPhaseEntryList.GiveBack(list);
 }
 ///<summary>
 /// Constructs a new convex-convex manifold.
 ///</summary>
 public GeneralConvexContactManifold()
 {
     contacts = new RawList<Contact>(4);
     unusedContacts = new UnsafeResourcePool<Contact>(4);
     contactIndicesToRemove = new RawList<int>(4);
     pairTester = new GeneralConvexPairTester();
 }
Example #5
0
 ///<summary>
 /// Constructs a new manifold.
 ///</summary>
 public TriangleConvexContactManifold()
 {
     contacts               = new RawList <Contact>(4);
     unusedContacts         = new UnsafeResourcePool <Contact>(4);
     contactIndicesToRemove = new RawList <int>(4);
     pairTester             = new TriangleConvexPairTester();
 }
Example #6
0
 ///<summary>
 /// Constructs a new contact manifold.
 ///</summary>
 protected TriangleMeshConvexContactManifold()
 {
     contacts               = new RawList <Contact>(4);
     unusedContacts         = new UnsafeResourcePool <Contact>(4);
     contactIndicesToRemove = new RawList <int>(4);
     activePairTesters      = new QuickDictionary <TriangleIndices, TrianglePairTester>(BufferPools <TriangleIndices> .Locking, BufferPools <TrianglePairTester> .Locking, BufferPools <int> .Locking, 3);
 }
 /// <summary>
 /// Retrieves a Triangle shape from the resource pool.
 /// </summary>
 /// <returns>Initialized TriangleShape.</returns>
 public static TriangleShape GetTriangle()
 {
     if (SubPoolTriangleShape == null)
     {
         SubPoolTriangleShape = new UnsafeResourcePool <TriangleShape>();
     }
     return(SubPoolTriangleShape.Take());
 }
 /// <summary>
 /// Retrieves an Entity RawList from the resource pool.
 /// </summary>
 /// <returns>Empty Entity raw list.</returns>
 public static RawList <Entity> GetEntityRawList()
 {
     if (SubPoolEntityRawList == null)
     {
         SubPoolEntityRawList = new UnsafeResourcePool <RawList <Entity> >();
     }
     return(SubPoolEntityRawList.Take());
 }
 /// <summary>
 /// Retrieves an CompoundChild list from the resource pool.
 /// </summary>
 /// <returns>Empty information list.</returns>
 public static RawList <CompoundChild> GetCompoundChildList()
 {
     if (SubPoolCompoundChildList == null)
     {
         SubPoolCompoundChildList = new UnsafeResourcePool <RawList <CompoundChild> >();
     }
     return(SubPoolCompoundChildList.Take());
 }
 /// <summary>
 /// Retrieves a Collidable list from the resource pool.
 /// </summary>
 /// <returns>Empty Collidable list.</returns>
 public static RawList <Collidable> GetCollidableList()
 {
     if (SubPoolCollidableList == null)
     {
         SubPoolCollidableList = new UnsafeResourcePool <RawList <Collidable> >();
     }
     return(SubPoolCollidableList.Take());
 }
 /// <summary>
 /// Retrieves a TriangleCollidable from the resource pool.
 /// </summary>
 /// <returns>Initialized TriangleCollidable.</returns>
 public static TriangleCollidable GetTriangleCollidable()
 {
     if (SubPoolTriangleCollidables == null)
     {
         SubPoolTriangleCollidables = new UnsafeResourcePool <TriangleCollidable>();
     }
     return(SubPoolTriangleCollidables.Take());
 }
 /// <summary>
 /// Retrieves an BroadPhaseEntry list from the resource pool.
 /// </summary>
 /// <returns>Empty BroadPhaseEntry list.</returns>
 public static RawList <BroadPhaseEntry> GetBroadPhaseEntryList()
 {
     if (SubPoolBroadPhaseEntryList == null)
     {
         SubPoolBroadPhaseEntryList = new UnsafeResourcePool <RawList <BroadPhaseEntry> >();
     }
     return(SubPoolBroadPhaseEntryList.Take());
 }
 //#endif
 /// <summary>
 /// Retrieves a ray cast result list from the resource pool.
 /// </summary>
 /// <returns>Empty ray cast result list.</returns>
 public static RawList <RayCastResult> GetRayCastResultList()
 {
     if (SubPoolRayCastResultList == null)
     {
         SubPoolRayCastResultList = new UnsafeResourcePool <RawList <RayCastResult> >();
     }
     return(SubPoolRayCastResultList.Take());
 }
 /// <summary>
 /// Retrieves a simulation island connection from the resource pool.
 /// </summary>
 /// <returns>Uninitialized simulation island connection.</returns>
 public static SimulationIslandConnection GetSimulationIslandConnection()
 {
     if (SimulationIslandConnections == null)
     {
         SimulationIslandConnections = new UnsafeResourcePool <SimulationIslandConnection>();
     }
     return(SimulationIslandConnections.Take());
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList <Collidable> list)
 {
     if (SubPoolCollidableList == null)
     {
         SubPoolCollidableList = new UnsafeResourcePool <RawList <Collidable> >();
     }
     list.Clear();
     SubPoolCollidableList.GiveBack(list);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList <BroadPhaseEntry> list)
 {
     if (SubPoolBroadPhaseEntryList == null)
     {
         SubPoolBroadPhaseEntryList = new UnsafeResourcePool <RawList <BroadPhaseEntry> >();
     }
     list.Clear();
     SubPoolBroadPhaseEntryList.GiveBack(list);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList <RayCastResult> list)
 {
     if (SubPoolRayCastResultList == null)
     {
         SubPoolRayCastResultList = new UnsafeResourcePool <RawList <RayCastResult> >();
     }
     list.Clear();
     SubPoolRayCastResultList.GiveBack(list);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="connection">Connection to return.</param>
 public static void GiveBack(SimulationIslandConnection connection)
 {
     if (SimulationIslandConnections == null)
     {
         SimulationIslandConnections = new UnsafeResourcePool <SimulationIslandConnection>();
     }
     connection.CleanUp();
     SimulationIslandConnections.GiveBack(connection);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="triangle">Triangle collidable to return.</param>
 public static void GiveBack(TriangleCollidable triangle)
 {
     if (SubPoolTriangleCollidables == null)
     {
         SubPoolTriangleCollidables = new UnsafeResourcePool <TriangleCollidable>();
     }
     triangle.CleanUp();
     SubPoolTriangleCollidables.GiveBack(triangle);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList <CompoundChild> list)
 {
     if (SubPoolCompoundChildList == null)
     {
         SubPoolCompoundChildList = new UnsafeResourcePool <RawList <CompoundChild> >();
     }
     list.Clear();
     SubPoolCompoundChildList.GiveBack(list);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList <Entity> list)
 {
     if (SubPoolEntityRawList == null)
     {
         SubPoolEntityRawList = new UnsafeResourcePool <RawList <Entity> >();
     }
     list.Clear();
     SubPoolEntityRawList.GiveBack(list);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="triangle">Triangle to return.</param>
 public static void GiveBack(TriangleShape triangle)
 {
     if (SubPoolTriangleShape == null)
     {
         SubPoolTriangleShape = new UnsafeResourcePool <TriangleShape>();
     }
     triangle.collisionMargin = 0;
     triangle.sidedness       = TriangleSidedness.DoubleSided;
     SubPoolTriangleShape.GiveBack(triangle);
 }
        /// <summary>
        /// Retrieves a TriangleCollidable from the resource pool.
        /// </summary>
        /// <param name="a">First vertex in the triangle.</param>
        /// <param name="b">Second vertex in the triangle.</param>
        /// <param name="c">Third vertex in the triangle.</param>
        /// <returns>Initialized TriangleCollidable.</returns>
        public static TriangleCollidable GetTriangleCollidable(ref Vector3 a, ref Vector3 b, ref Vector3 c)
        {
            if (SubPoolTriangleCollidables == null)
            {
                SubPoolTriangleCollidables = new UnsafeResourcePool <TriangleCollidable>();
            }
            var tri   = SubPoolTriangleCollidables.Take();
            var shape = tri.Shape;

            shape.vA = a;
            shape.vB = b;
            shape.vC = c;
            var identity = RigidTransform.Identity;

            tri.UpdateBoundingBoxForTransform(ref identity);
            return(tri);
        }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="triangle">Triangle collidable to return.</param>
 public static void GiveBack(TriangleCollidable triangle)
 {
     if (SubPoolTriangleCollidables == null)
         SubPoolTriangleCollidables = new UnsafeResourcePool<TriangleCollidable>();
     triangle.CleanUp();
     SubPoolTriangleCollidables.GiveBack(triangle);
 }
        /// <summary>
        /// Retrieves a simulation island connection from the resource pool.
        /// </summary>
        /// <returns>Uninitialized simulation island connection.</returns>
        public static SimulationIslandConnection GetSimulationIslandConnection()
        {
            if (SimulationIslandConnections == null)
                SimulationIslandConnections = new UnsafeResourcePool<SimulationIslandConnection>();
            return SimulationIslandConnections.Take();

        }
        /// <summary>
        /// Retrieves a TriangleCollidable from the resource pool.
        /// </summary>
        /// <param name="a">First vertex in the triangle.</param>
        /// <param name="b">Second vertex in the triangle.</param>
        /// <param name="c">Third vertex in the triangle.</param>
        /// <returns>Initialized TriangleCollidable.</returns>
        public static TriangleCollidable GetTriangleCollidable(ref Vector3 a, ref Vector3 b, ref Vector3 c)
        {
            if (SubPoolTriangleCollidables == null)
                SubPoolTriangleCollidables = new UnsafeResourcePool<TriangleCollidable>();
            var tri = SubPoolTriangleCollidables.Take();
            var shape = tri.Shape;
            shape.vA = a;
            shape.vB = b;
            shape.vC = c;
            var identity = RigidTransform.Identity;
            tri.UpdateBoundingBoxForTransform(ref identity);
            return tri;

        }
 /// <summary>
 /// Retrieves a TriangleCollidable from the resource pool.
 /// </summary>
 /// <returns>Initialized TriangleCollidable.</returns>
 public static TriangleCollidable GetTriangleCollidable()
 {
     if (SubPoolTriangleCollidables == null)
         SubPoolTriangleCollidables = new UnsafeResourcePool<TriangleCollidable>();
     return SubPoolTriangleCollidables.Take();
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="triangle">Triangle to return.</param>
 public static void GiveBack(TriangleShape triangle)
 {
     if (SubPoolTriangleShape == null)
         SubPoolTriangleShape = new UnsafeResourcePool<TriangleShape>();
     triangle.collisionMargin = 0;
     triangle.sidedness = TriangleSidedness.DoubleSided;
     SubPoolTriangleShape.GiveBack(triangle);
 }
 /// <summary>
 /// Retrieves a Triangle shape from the resource pool.
 /// </summary>
 /// <returns>Initialized TriangleShape.</returns>
 public static TriangleShape GetTriangle()
 {
     if (SubPoolTriangleShape == null)
         SubPoolTriangleShape = new UnsafeResourcePool<TriangleShape>();
     return SubPoolTriangleShape.Take();
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList<Entity> list)
 {
     if (SubPoolEntityRawList == null)
         SubPoolEntityRawList = new UnsafeResourcePool<RawList<Entity>>();
     list.Clear();
     SubPoolEntityRawList.GiveBack(list);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList<Collidable> list)
 {
     if (SubPoolCollidableList == null)
         SubPoolCollidableList = new UnsafeResourcePool<RawList<Collidable>>();
     list.Clear();
     SubPoolCollidableList.GiveBack(list);
 }
        /// <summary>
        /// Returns a resource to the pool.
        /// </summary>
        /// <param name="connection">Connection to return.</param>
        public static void GiveBack(SimulationIslandConnection connection)
        {
            if (SimulationIslandConnections == null)
                SimulationIslandConnections = new UnsafeResourcePool<SimulationIslandConnection>();
            connection.CleanUp();
            SimulationIslandConnections.GiveBack(connection);

        }
 //#endif
 /// <summary>
 /// Retrieves a ray cast result list from the resource pool.
 /// </summary>
 /// <returns>Empty ray cast result list.</returns>
 public static RawList<RayCastResult> GetRayCastResultList()
 {
     if (SubPoolRayCastResultList == null)
         SubPoolRayCastResultList = new UnsafeResourcePool<RawList<RayCastResult>>();
     return SubPoolRayCastResultList.Take();
 }
 /// <summary>
 /// Retrieves an CompoundChild list from the resource pool.
 /// </summary>
 /// <returns>Empty information list.</returns>
 public static RawList<CompoundChild> GetCompoundChildList()
 {
     if (SubPoolCompoundChildList == null)
         SubPoolCompoundChildList = new UnsafeResourcePool<RawList<CompoundChild>>();
     return SubPoolCompoundChildList.Take();
 }
 /// <summary>
 /// Retrieves an BroadPhaseEntry list from the resource pool.
 /// </summary>
 /// <returns>Empty BroadPhaseEntry list.</returns>
 public static RawList<BroadPhaseEntry> GetBroadPhaseEntryList()
 {
     if (SubPoolBroadPhaseEntryList == null)
         SubPoolBroadPhaseEntryList = new UnsafeResourcePool<RawList<BroadPhaseEntry>>();
     return SubPoolBroadPhaseEntryList.Take();
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="list">List to return.</param>
 public static void GiveBack(RawList<CompoundChild> list)
 {
     if (SubPoolCompoundChildList == null)
         SubPoolCompoundChildList = new UnsafeResourcePool<RawList<CompoundChild>>();
     list.Clear();
     SubPoolCompoundChildList.GiveBack(list);
 }
 /// <summary>
 /// Retrieves a Collidable list from the resource pool.
 /// </summary>
 /// <returns>Empty Collidable list.</returns>
 public static RawList<Collidable> GetCollidableList()
 {
     if (SubPoolCollidableList == null)
         SubPoolCollidableList = new UnsafeResourcePool<RawList<Collidable>>();
     return SubPoolCollidableList.Take();
 }
 /// <summary>
 /// Retrieves an Entity RawList from the resource pool.
 /// </summary>
 /// <returns>Empty Entity raw list.</returns>
 public static RawList<Entity> GetEntityRawList()
 {
     if (SubPoolEntityRawList == null)
         SubPoolEntityRawList = new UnsafeResourcePool<RawList<Entity>>();
     return SubPoolEntityRawList.Take();
 }
Example #39
0
 public FCOContactManifold()
 {
     contacts = new RawList<Contact>(4);
     unusedContacts = new UnsafeResourcePool<Contact>(4);
     contactIndicesToRemove = new RawList<int>(4);
 }
 /// <summary>
 /// Retrieves a TriangleIndices list from the resource pool.
 /// </summary>
 /// <returns>TriangleIndices list.</returns>
 public static RawList<TriangleMeshConvexContactManifold.TriangleIndices> GetTriangleIndicesList()
 {
     if (SubPoolTriangleIndicesList == null)
         SubPoolTriangleIndicesList = new UnsafeResourcePool<RawList<TriangleMeshConvexContactManifold.TriangleIndices>>();
     return SubPoolTriangleIndicesList.Take();
 }
Example #41
0
 public FCOContactManifold()
 {
     contacts               = new RawList <Contact>(4);
     unusedContacts         = new UnsafeResourcePool <Contact>(4);
     contactIndicesToRemove = new RawList <int>(4);
 }
 /// <summary>
 /// Returns a resource to the pool.
 /// </summary>
 /// <param name="triangleIndices">TriangleIndices list to return.</param>
 public static void GiveBack(RawList<TriangleMeshConvexContactManifold.TriangleIndices> triangleIndices)
 {
     if (SubPoolTriangleIndicesList == null)
         SubPoolTriangleIndicesList = new UnsafeResourcePool<RawList<TriangleMeshConvexContactManifold.TriangleIndices>>();
     triangleIndices.Clear();
     SubPoolTriangleIndicesList.GiveBack(triangleIndices);
 }