public Space(IThreadManager threadManager)
{
timeStepSettings = new TimeStepSettings();
this.threadManager = threadManager;
SpaceObjectBuffer = new SpaceObjectBuffer(this);
EntityStateWriteBuffer = new EntityStateWriteBuffer();
DeactivationManager = new DeactivationManager(TimeStepSettings, ThreadManager);
ForceUpdater = new ForceUpdater(TimeStepSettings, ThreadManager);
BoundingBoxUpdater = new BoundingBoxUpdater(TimeStepSettings, ThreadManager);
BroadPhase = new DynamicHierarchy(ThreadManager);
NarrowPhase = new NarrowPhase(TimeStepSettings, BroadPhase.Overlaps, ThreadManager);
Solver = new Solver(TimeStepSettings, DeactivationManager, ThreadManager);
NarrowPhase.Solver = Solver;
PositionUpdater = new ContinuousPositionUpdater(TimeStepSettings, ThreadManager);
BufferedStates = new BufferedStatesManager(ThreadManager);
DeferredEventDispatcher = new DeferredEventDispatcher();
DuringForcesUpdateables = new DuringForcesUpdateableManager(timeStepSettings, ThreadManager);
BeforeNarrowPhaseUpdateables = new BeforeNarrowPhaseUpdateableManager(timeStepSettings, ThreadManager);
BeforeSolverUpdateables = new BeforeSolverUpdateableManager(timeStepSettings, ThreadManager);
BeforePositionUpdateUpdateables = new BeforePositionUpdateUpdateableManager(timeStepSettings, ThreadManager);
EndOfTimeStepUpdateables = new EndOfTimeStepUpdateableManager(timeStepSettings, ThreadManager);
EndOfFrameUpdateables = new EndOfFrameUpdateableManager(timeStepSettings, ThreadManager);
}