public void Dispose() { this.StandardCleanup(); if (_solverPool != null) { _solverPool.Dispose(); _solverPool = null; } if (_parallelSolver != null) { _parallelSolver.Dispose(); _parallelSolver = null; } }
public MultiThreadedDemoSimulation() { CreateSchedulers(); NextTaskScheduler(); using (var collisionConfigurationInfo = new DefaultCollisionConstructionInfo { DefaultMaxPersistentManifoldPoolSize = 80000, DefaultMaxCollisionAlgorithmPoolSize = 80000 }) { CollisionConfiguration = new DefaultCollisionConfiguration(collisionConfigurationInfo); }; Dispatcher = new CollisionDispatcherMultiThreaded(CollisionConfiguration); Broadphase = new DbvtBroadphase(); _solverPool = new ConstraintSolverPoolMultiThreaded(MaxThreadCount); _parallelSolver = new SequentialImpulseConstraintSolverMultiThreaded(); World = new DiscreteDynamicsWorldMultiThreaded(Dispatcher, Broadphase, _solverPool, _parallelSolver, CollisionConfiguration); World.SolverInfo.SolverMode = SolverModes.Simd | SolverModes.UseWarmStarting; CreateGround(); CreateBoxes(); }