コード例 #1
0
 ///<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();
 }
コード例 #2
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);
 }
コード例 #3
0
 //#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());
 }
コード例 #4
0
 /// <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());
 }
コード例 #5
0
 /// <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());
 }
コード例 #6
0
 /// <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());
 }
コード例 #7
0
 /// <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());
 }
コード例 #8
0
 /// <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());
 }
コード例 #9
0
 /// <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());
 }
コード例 #10
0
 /// <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());
 }
コード例 #11
0
 /// <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);
 }
コード例 #12
0
 /// <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);
 }
コード例 #13
0
 /// <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);
 }
コード例 #14
0
 /// <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);
 }
コード例 #15
0
 /// <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);
 }
コード例 #16
0
 /// <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);
 }
コード例 #17
0
 /// <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);
 }
コード例 #18
0
 /// <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);
 }
コード例 #19
0
        /// <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);
        }
コード例 #20
0
 ///<summary>
 /// Constructs a new manifold.
 ///</summary>
 public BoxContactManifold()
 {
     contacts               = new RawList <Contact>(4);
     unusedContacts         = new UnsafeResourcePool <Contact>(4);
     contactIndicesToRemove = new RawList <int>(4);
 }