static SphereBoxCollisionAlgorithm AllocFromPool(PersistentManifold mf,CollisionAlgorithmConstructionInfo ci,CollisionObject col0,CollisionObject col1, bool isSwapped) { SphereBoxCollisionAlgorithm result; if (ObjPool.Count > 0) result = ObjPool.Dequeue(); else result = new SphereBoxCollisionAlgorithm(); result.Constructor(mf, ci, col0, col1,isSwapped); return result; }
static CollisionAlgorithm AllocFromPool(PersistentManifold mf, CollisionAlgorithmConstructionInfo ci, CollisionObject body0, CollisionObject body1, ISimplexSolver simplexSolver, IConvexPenetrationDepthSolver pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold) { ConvexConvexAlgorithm result; if (ObjPool.Count > 0) result = ObjPool.Dequeue(); else result = new ConvexConvexAlgorithm(); result.Constructor(mf, ci, body0, body1, simplexSolver, pdSolver, numPerturbationIterations, minimumPointsPerturbationThreshold); return result; }
static SphereSphereCollisionAlgorithm AllocFromPool(PersistentManifold mf,CollisionAlgorithmConstructionInfo ci,CollisionObject body0,CollisionObject body1) { SphereSphereCollisionAlgorithm result; if (ObjPool.Count > 0) result = ObjPool.Dequeue(); else result = new SphereSphereCollisionAlgorithm(); result.Constructor(mf, ci, body0, body1); return result; }
static ConvexPlaneCollisionAlgorithm AllocFromPool(PersistentManifold mf, CollisionAlgorithmConstructionInfo ci, CollisionObject col0, CollisionObject col1, bool isSwapped, int numPerturbationIterations, int minimumPointsPerturbationThreshold) { ConvexPlaneCollisionAlgorithm result; if (ObjPool.Count > 0) result = ObjPool.Dequeue(); else result = new ConvexPlaneCollisionAlgorithm(); result.Constructor(mf, ci, col0, col1, isSwapped, numPerturbationIterations, minimumPointsPerturbationThreshold); return result; }
//オブジェクトプールを使うので初期化処理の代わりを…… public void Constructor(PersistentManifold mf, CollisionAlgorithmConstructionInfo ci, CollisionObject body0, CollisionObject body1, ISimplexSolver simplexSolver, IConvexPenetrationDepthSolver pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold) { base.Constructor(ci); m_simplexSolver = simplexSolver; m_pdSolver = pdSolver; m_ownManifold = false; m_manifoldPtr = mf; m_lowLevelOfDetail = false; m_numPerturbationIterations = numPerturbationIterations; m_minimumPointsPerturbationThreshold = minimumPointsPerturbationThreshold; }
public void Constructor(PersistentManifold mf, CollisionAlgorithmConstructionInfo ci, CollisionObject col0, CollisionObject col1) { base.Constructor(ci); m_ownManifold = false; m_manifoldPtr = mf; if (m_manifoldPtr == null) { m_manifoldPtr = m_dispatcher.getNewManifold(col0, col1); m_ownManifold = true; } }
protected void Constructor(PersistentManifold mf, CollisionAlgorithmConstructionInfo ci, CollisionObject col0, CollisionObject col1, bool isSwapped) { base.Constructor(ci); m_ownManifold = false; m_manifoldPtr=mf; m_isSwapped=isSwapped; CollisionObject sphereObj = m_isSwapped? col1 : col0; CollisionObject boxObj = m_isSwapped? col0 : col1; if (m_manifoldPtr==null && m_dispatcher.needsCollision(sphereObj,boxObj)) { m_manifoldPtr = m_dispatcher.getNewManifold(sphereObj,boxObj); m_ownManifold = true; } }
//オブジェクトプールを使うので初期化処理の代わりを…… public void Constructor(PersistentManifold mf, CollisionAlgorithmConstructionInfo ci, CollisionObject col0, CollisionObject col1, bool isSwapped, int numPerturbationIterations, int minimumPointsPerturbationThreshold) { base.Constructor(ci); m_ownManifold = false; m_manifoldPtr = mf; m_isSwapped = isSwapped; m_numPerturbationIterations = numPerturbationIterations; m_minimumPointsPerturbationThreshold = minimumPointsPerturbationThreshold; CollisionObject convexObj = m_isSwapped ? col1 : col0; CollisionObject planeObj = m_isSwapped ? col0 : col1; if (m_manifoldPtr == null && m_dispatcher.needsCollision(convexObj, planeObj)) { m_manifoldPtr = m_dispatcher.getNewManifold(convexObj, planeObj); m_ownManifold = true; } }
protected void Constructor(CollisionAlgorithmConstructionInfo ci) { m_dispatcher = ci.m_dispatcher1; m_AlgorithmID = nextID++; }
public override CollisionAlgorithm CreateCollisionAlgorithm(CollisionAlgorithmConstructionInfo ci, CollisionObject body0, CollisionObject body1) { if (!m_swapped) return AllocFromPool(null, ci, body0, body1, false); else return AllocFromPool(null, ci, body0, body1, true); }
public override CollisionAlgorithm CreateCollisionAlgorithm(CollisionAlgorithmConstructionInfo info, CollisionObject body0, CollisionObject body1) { throw new NotImplementedException(); }
public override CollisionAlgorithm CreateCollisionAlgorithm(CollisionAlgorithmConstructionInfo ci, CollisionObject body0, CollisionObject body1) { return AllocFromPool(ci.m_manifold, ci, body0, body1, m_simplexSolver, m_pdSolver, m_numPerturbationIterations, m_minimumPointsPerturbationThreshold); }
public override CollisionAlgorithm CreateCollisionAlgorithm(CollisionAlgorithmConstructionInfo info, CollisionObject body0, CollisionObject body1) { return AllocFromPool(null, info, body0, body1); }
public override CollisionAlgorithm CreateCollisionAlgorithm(CollisionAlgorithmConstructionInfo ci, CollisionObject body0, CollisionObject body1) { if (!m_swapped) { return AllocFromPool(null, ci, body0, body1, false, m_numPerturbationIterations, m_minimumPointsPerturbationThreshold); } else { return AllocFromPool(null, ci, body0, body1, true, m_numPerturbationIterations, m_minimumPointsPerturbationThreshold); } }
public abstract CollisionAlgorithm CreateCollisionAlgorithm(CollisionAlgorithmConstructionInfo info, CollisionObject body0, CollisionObject body1);