public void Update <TCollision, TConstraint>(ref CollidablePairPointers pointers, ref TCollision collisionCache, ref TConstraint constraintCache, int manifoldTypeAsConstraintType) where TCollision : IPairCacheEntry where TConstraint : IPairCacheEntry { WorkerCacheAdd(ref collisionCache, ref constraintCache, manifoldTypeAsConstraintType, out pointers); }
private unsafe void WorkerCacheAdd <TCollision, TConstraint>(ref TCollision collisionCache, ref TConstraint constraintCache, int manifoldTypeAsConstraintType, out CollidablePairPointers pointers) where TCollision : IPairCacheEntry where TConstraint : IPairCacheEntry { pointers.ConstraintCache = new PairCacheIndex(workerIndex, manifoldTypeAsConstraintType, constraintCaches[constraintCache.TypeId].Add(ref constraintCache, minimumPerTypeCapacity, pool)); if (typeof(TCollision) == typeof(EmptyCollisionCache)) { pointers.CollisionDetectionCache = new PairCacheIndex(); } else { pointers.CollisionDetectionCache = new PairCacheIndex(workerIndex, collisionCache.TypeId, collisionCaches[collisionCache.TypeId].Add(ref collisionCache, minimumPerTypeCapacity, pool)); } }