private void Scan(Vector2d center, long radius)
 {
     InfluenceManager.ScanAll(
         center,
         radius,
         this.AgentConditional,
         this.BucketConditional,
         ScanOutput
         );
 }
예제 #2
0
        internal static void Initialize(ILockstepEventsHandler[] helpers, NetworkHelper networkHelper)
        {
            PlayRate = FixedMath.One;
            //PauseCount = 0;

            if (!Loaded)
            {
                Setup();
                Loaded = true;
            }

            DefaultMessageRaiser.EarlyInitialize();

            LSDatabaseManager.Initialize();
            LSUtility.Initialize(1);
            InfluenceCount = 0;
            Time.timeScale = 1f;

            Stalled = true;

            FrameCount          = 0;
            InfluenceFrameCount = 0;
            MainNetworkHelper   = networkHelper;

            AgentController.Initialize();

            ClientManager.Initialize(MainNetworkHelper);

            BehaviourHelperManager.Initialize(helpers);

            GridManager.Initialize();

            CoroutineManager.Initialize();
            FrameManager.Initialize();

            CommandManager.Initialize();


            PhysicsManager.Initialize();
            PlayerManager.Initialize();

            //   GridBuilder.Initialize();

            //Initialized in UserInputHelper
            //	SelectionManager.Initialize ();
            InfluenceManager.Initialize();
            ProjectileManager.Initialize();

            DefaultMessageRaiser.LateInitialize();
            BehaviourHelperManager.LateInitialize();
            if (onInitialize != null)
            {
                onInitialize();
            }
        }
예제 #3
0
        protected virtual LSAgent DoScan()
        {
            Func <LSAgent, bool> agentConditional = AgentConditional;

            LSAgent agent = InfluenceManager.Scan(
                this.cachedBody.Position,
                this.Sight,
                agentConditional,
                (bite) =>
            {
                return((this.Agent.Controller.GetAllegiance(bite) & this.TargetAllegiance) != 0);
            }
                );

            return(agent);
        }
예제 #4
0
        internal static void Simulate()
        {
            MainNetworkHelper.Simulate();
            DefaultMessageRaiser.EarlySimulate();
            if (InfluenceCount == 0)
            {
                InfluenceSimulate();
                InfluenceCount = InfluenceResolution - 1;
                if (FrameManager.CanAdvanceFrame == false)
                {
                    Stalled = true;
                    return;
                }
                Stalled = false;

                FrameManager.Simulate();
                InfluenceFrameCount++;
            }
            else
            {
                InfluenceCount--;
            }
            if (Stalled || IsPaused)
            {
                return;
            }

            if (FrameCount == 0)
            {
                GameStart();
            }
            BehaviourHelperManager.Simulate();
            AgentController.Simulate();
            PhysicsManager.Simulate();
            CoroutineManager.Simulate();
            InfluenceManager.Simulate();
            ProjectileManager.Simulate();

            LateSimulate();
            FrameCount++;
        }
예제 #5
0
        protected virtual RTSAgent DoScan()
        {
            Func <RTSAgent, bool> agentConditional = AgentConditional;

            RTSAgent agent = null;

            if (agentConditional.IsNotNull())
            {
                agent = InfluenceManager.Scan(
                    this.cachedBody.Position,
                    scanRange,
                    agentConditional,
                    (bite) =>
                {
                    return((cachedAgent.Controller.GetAllegiance(bite) & _targetAllegiance) != 0);
                }
                    );
            }

            return(agent);
        }