Esempio n. 1
0
        public RuntimeEngine(RuntimeEntityService entityService, ISystemManager systemManager, EventQueue eventQueue, ILogger logger)
        {
            AddEntityAccessGate = new AccessGate();
            EventQueue = eventQueue;
            _logger = logger;
            EntityService = entityService;
            EntityService.AddEntityAccessGate = AddEntityAccessGate;
            SystemManager = systemManager;
            SystemUpdateScheduler = new SystemUpdateScheduler(SystemManager.Systems);

            foreach (var updateBurst in SystemUpdateScheduler.UpdateBursts)
            {
                _logger.Info($"Update Burst: {string.Join(", ", updateBurst.Systems.Select(p => p.System.Name))}");
            }

            // Add any entities that are already loaded into the engine.
            SystemManager.AddEntities(entityService.Entities);
        }
Esempio n. 2
0
 public void GateDoesNotThrowWhenUnlocked()
 {
     var gate = new AccessGate {IsLocked = false};
     Should.NotThrow(() => gate.Enter());
 }
Esempio n. 3
0
 public void TryEnterReturnsTrueWhenUnlocked()
 {
     var gate = new AccessGate {IsLocked = false};
     gate.TryEnter().ShouldBeTrue();
 }
Esempio n. 4
0
 public void GateThrowsWhenLocked()
 {
     var gate = new AccessGate {IsLocked = true};
     Should.Throw<InvalidOperationException>(() => gate.Enter());
 }
Esempio n. 5
0
 public void TryEnterReturnsFalseWhenLocked()
 {
     var gate = new AccessGate {IsLocked = true};
     gate.TryEnter().ShouldBeFalse();
 }