Manages the buffered and interpolated states of entities.
コード例 #1
0
ファイル: Space.cs プロジェクト: Telanor/bepu-fork
        ///<summary>
        /// Constructs a new space for things to live in.
        ///</summary>
        ///<param name="parallelLooper">Used by the space to perform multithreaded updates. Pass null if multithreading is not required.</param>
        public Space(IParallelLooper parallelLooper)
        {
            timeStepSettings = new TimeStepSettings();

            this.parallelLooper = parallelLooper;

            SpaceObjectBuffer = new SpaceObjectBuffer(this);
            EntityStateWriteBuffer = new EntityStateWriteBuffer();
            DeactivationManager = new DeactivationManager(TimeStepSettings, ParallelLooper);
            ForceUpdater = new ForceUpdater(TimeStepSettings, ParallelLooper);
            BoundingBoxUpdater = new BoundingBoxUpdater(TimeStepSettings, ParallelLooper);
            BroadPhase = new DynamicHierarchy(ParallelLooper);
            NarrowPhase = new NarrowPhase(TimeStepSettings, BroadPhase.Overlaps, ParallelLooper);
            Solver = new Solver(TimeStepSettings, DeactivationManager, ParallelLooper);
            NarrowPhase.Solver = Solver;
            PositionUpdater = new ContinuousPositionUpdater(TimeStepSettings, ParallelLooper);
            BufferedStates = new BufferedStatesManager(ParallelLooper);
            DeferredEventDispatcher = new DeferredEventDispatcher();

            DuringForcesUpdateables = new DuringForcesUpdateableManager(timeStepSettings, ParallelLooper);
            BeforeNarrowPhaseUpdateables = new BeforeNarrowPhaseUpdateableManager(timeStepSettings, ParallelLooper);
            BeforeSolverUpdateables = new BeforeSolverUpdateableManager(timeStepSettings, ParallelLooper);
            BeforePositionUpdateUpdateables = new BeforePositionUpdateUpdateableManager(timeStepSettings, ParallelLooper);
            EndOfTimeStepUpdateables = new EndOfTimeStepUpdateableManager(timeStepSettings, ParallelLooper);
            EndOfFrameUpdateables = new EndOfFrameUpdateableManager(timeStepSettings, ParallelLooper);
        }
コード例 #2
0
 ///<summary>
 /// Constructs a new interpolated states manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 /// <param name="parallelLooper">Parallel loop provider to use.</param>
 public InterpolatedStatesManager(BufferedStatesManager manager, IParallelLooper parallelLooper)
 {
     this.manager = manager;
     multithreadedWithReadBuffersDelegate = UpdateIndex;
     FlipLocker = new object();
     ParallelLooper = parallelLooper;
     AllowMultithreading = true;
 }
コード例 #3
0
 ///<summary>
 /// Constructs a new interpolated states manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 /// <param name="parallelLooper">Parallel loop provider to use.</param>
 public InterpolatedStatesManager(BufferedStatesManager manager, IParallelLooper parallelLooper)
 {
     this.manager = manager;
     multithreadedWithReadBuffersDelegate = UpdateIndex;
     FlipLocker          = new object();
     ParallelLooper      = parallelLooper;
     AllowMultithreading = true;
 }
コード例 #4
0
 ///<summary>
 /// Constructs a read buffer manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 ///<param name="parallelLooper">Parallel loop provider to use.</param>
 public StateReadBuffers(BufferedStatesManager manager, IParallelLooper parallelLooper)
 {
     this.manager = manager;
     multithreadedStateUpdateDelegate = MultithreadedStateUpdate;
     FlipLocker          = new object();
     ParallelLooper      = parallelLooper;
     AllowMultithreading = true;
 }
コード例 #5
0
 ///<summary>
 /// Constructs a read buffer manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 ///<param name="threadManager">Thread manager to use.</param>
 public StateReadBuffers(BufferedStatesManager manager, IThreadManager threadManager)
 {
     this.manager = manager;
     multithreadedStateUpdateDelegate = MultithreadedStateUpdate;
     FlipLocker          = new object();
     ThreadManager       = threadManager;
     AllowMultithreading = true;
 }
コード例 #6
0
 ///<summary>
 /// Constructs a read buffer manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 ///<param name="parallelLooper">Parallel loop provider to use.</param>
 public StateReadBuffers(BufferedStatesManager manager, IParallelLooper parallelLooper)
 {
     this.manager = manager;
     multithreadedStateUpdateDelegate = MultithreadedStateUpdate;
     FlipLocker = new object();
     ParallelLooper = parallelLooper;
     AllowMultithreading = true;
 }
コード例 #7
0
 ///<summary>
 /// Constructs a new interpolated states manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 public InterpolatedStatesManager(BufferedStatesManager manager)
 {
     this.manager = manager;
     multithreadedWithReadBuffersDelegate = UpdateIndex;
     FlipLocker = new object();
 }
コード例 #8
0
 ///<summary>
 /// Constructs a new interpolated states manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 public InterpolatedStatesManager(BufferedStatesManager manager)
 {
     this.manager = manager;
     multithreadedWithReadBuffersDelegate = UpdateIndex;
     FlipLocker = new object();
 }
コード例 #9
0
 ///<summary>
 /// Constructs a read buffer manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 ///<param name="threadManager">Thread manager to use.</param>
 public StateReadBuffers(BufferedStatesManager manager, IThreadManager threadManager)
 {
     this.manager = manager;
     multithreadedStateUpdateDelegate = MultithreadedStateUpdate;
     FlipLocker = new object();
     ThreadManager = threadManager;
     AllowMultithreading = true;
 }
コード例 #10
0
 ///<summary>
 /// Constructs a read buffer manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 public StateReadBuffers(BufferedStatesManager manager)
 {
     this.manager = manager;
     multithreadedStateUpdateDelegate = MultithreadedStateUpdate;
     FlipLocker = new object();
 }
コード例 #11
0
 ///<summary>
 /// Constructs a read buffer manager.
 ///</summary>
 ///<param name="manager">Owning buffered states manager.</param>
 public StateReadBuffers(BufferedStatesManager manager)
 {
     this.manager = manager;
     multithreadedStateUpdateDelegate = MultithreadedStateUpdate;
     FlipLocker = new object();
 }
コード例 #12
0
ファイル: Space.cs プロジェクト: VICOGameStudio-Ujen/igf
        ///<summary>
        /// Constructs a new space for things to live in.
        ///</summary>
        public Space()
        {
            NarrowPhaseHelper.CollisionManagers = NarrowPhaseHelper.CollisionManagers; //Forces the NarrowPhaseHelper to run the static constructor.  Better to do it now instead of mid-simulation.

            timeStepSettings = new TimeStepSettings();

#if !WINDOWS
            threadManager = new SpecializedThreadManager();
#else
            threadManager = new SpecializedThreadManager();
#endif

            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);

        }