Exemplo n.º 1
0
        public DateTimeProvider(IEntityLogger logger, IActivePeriodicObjectCommonContext syncContext)
            : base(logger)
        {
            var activeContext = new ActivePeriodicObjectContext(syncContext);

            _activeObject = new AsyncActivePeriodicObject(activeContext)
            {
                PeriodicMethod = NRun
            };
        }
Exemplo n.º 2
0
        public VisionComponent(IEntityLogger logger, IVisionProvider visionProvider, HumanoidNPCGameComponentContext internalContext, IWorldCoreGameComponentContext worldContext)
            : base(logger)
        {
            _internalContext = internalContext;
            _selfInstanceId  = internalContext.SelfInstanceId;
            _worldContext    = worldContext;
            _visionProvider  = visionProvider;

            _activePeriodicObjectContext = new ActivePeriodicObjectContext(worldContext.SyncContext);
            _activeObject = new AsyncActivePeriodicObject(_activePeriodicObjectContext);
            _activeObject.PeriodicMethod = CommandLoop;
        }
Exemplo n.º 3
0
        public void Run()
        {
            _logger.Log("Begin");

            var commonActiveContext = new ActivePeriodicObjectCommonContext();

            var activeContext = new ActivePeriodicObjectContext(commonActiveContext);

            var activeObject = new AsyncActivePeriodicObject(activeContext)
            {
                PeriodicMethod = NRun
            };

            var activeObject2 = new AsyncActivePeriodicObject(activeContext)
            {
                PeriodicMethod = NRun_2
            };

            _logger.Log($"activeObject.IsWaited (0) = {activeObject.IsWaited}");
            _logger.Log($"activeObject.IsActive (0) = {activeObject.IsActive}");

            var taskValue = activeObject.Start();

            _logger.Log($"taskValue = {taskValue}");

            activeObject2.Start();

            Thread.Sleep(10000);

            _logger.Log($"activeObject.IsWaited = {activeObject.IsWaited}");
            _logger.Log($"activeObject.IsActive = {activeObject.IsActive}");

            commonActiveContext.Lock();

            activeContext.WaitWhenAllIsNotWaited();

            Thread.Sleep(1000);

            _logger.Log($"activeObject.IsWaited (2) = {activeObject.IsWaited}");
            _logger.Log($"activeObject.IsActive (2) = {activeObject.IsActive}");

            Thread.Sleep(1000);

            commonActiveContext.UnLock();

            Thread.Sleep(1000);

            _logger.Log($"activeObject.IsWaited (3) = {activeObject.IsWaited}");
            _logger.Log($"activeObject.IsActive (3) = {activeObject.IsActive}");

            //Thread.Sleep(1000);

            //activeObject.Stop();

            //_logger.Log($"activeObject.IsWaited (4) = {activeObject.IsWaited}");
            //_logger.Log($"activeObject.IsActive (4) = {activeObject.IsActive}");

            //Thread.Sleep(10000);

            //taskValue = activeObject.Start();

            //_logger.Log($"taskValue = {taskValue}");

            //Thread.Sleep(1000);

            //activeObject.Stop();

            //Thread.Sleep(1000);

            //_logger.Log($"activeObject.TaskValue = {activeObject.TaskValue}");

            //activeObject.Dispose();

            //Thread.Sleep(1000);

            //taskValue = activeObject.Start();

            //_logger.Log($"taskValue = {taskValue}");

            Thread.Sleep(1000);

            _logger.Log("End");
        }