public void StressTest()
        {
            AiBrain[] b = new AiBrain[StressTestSize];
            AiState[] s = new AiState[StressTestSize];

            DummyInterface dummy = new DummyInterface();

            AiCore.InitCore();
            Thread thread = new Thread(AiCore.Run);

            thread.Start();

            for (int i = 0; i < StressTestSize; i++)
            {
                s[i] = new AiState(template, "0");
                b[i] = new AiBrain(dummy, s[i]);
                AiCore.AddBrain(b[i]);
            }

            Thread.Sleep(1000);
            AiCore.Shutdown();

            for (int i = 0; i < StressTestSize; i++)
            {
                Assert.AreEqual(10, ((Accumulator)s[i].nodes["0"]).val);
            }

            thread.Join();
        }
 public override void OnStateEnter(StateMachine m)
 {
     if (ai == null)
     {
         ai = m.GetComponent <AiCore>();
         r  = ai.routeList[selectedRoute];
     }
     ai.agent.destination = r.routePoints[waypointIndex];
 }
Exemple #3
0
    public override void OnStateEnter(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
    {
        if (core == null)
        {
            core = animator.GetComponent <AiCore>();
        }

        core.anim.SetTrigger("Attack");
    }
    public override void Initialize(BaseStateMachine m)
    {
        this.localFSM = m;
        ai            = m.transform.parent.GetComponent <AiCore>();
        routeList     = ai.transform.GetComponent <RouteList>();
        //ai.OnFinishPath += NextPoint;

        Debug.Log("INIT " + name + " State.....................DONE");
        //throw new System.NotImplementedException();
    }
Exemple #5
0
    public override void OnStateEnter(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
    {
        if (core == null)
        {
            core = animator.GetComponent <AiCore>();
        }


        core.anim.SetBool("Walk", false);
        //Debug.Log(core.anim.ToString());
    }
Exemple #6
0
    public override void OnStateEnter(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex)
    {
        triggered = false;
        if (core == null)
        {
            core = animator.GetComponent <AiCore>();
        }

        if (p == null)
        {
            p = GameObject.FindGameObjectWithTag("Player").transform.root;
        }

        core.anim.SetBool("Walk", true);
    }
Exemple #7
0
        private static HashSet <Point2D> CalculateVisionMap(IEnumerable <IWorld2DEntity> worldEntities)
        {
            var visionMap = new HashSet <Point2D>();

            foreach (var entity in worldEntities.Where(x => x.Stats.Alive).ToArray())
            {
                var core = new AiCore(new AiWorld2D(entity.World), entity, _simulation.CurrentTick);
                using (var map = core.GetVisibleWorld())
                {
                    var tiles = map.TilesInRange(new Circle2D(entity.Location, core.Stats.VisionRadius));

                    foreach (var tile in tiles)
                    {
                        visionMap.Add(tile.Location);
                    }
                }
            }

            return(visionMap);
        }
        public void TestMethod1()
        {
            AiCore.InitCore();
            Thread thread = new Thread(AiCore.Run);

            thread.Start();
            DummyInterface dummy = new DummyInterface();
            AiBrain        b1    = new AiBrain(dummy, state_1);
            AiBrain        b2    = new AiBrain(dummy, state_2);

            AiCore.AddBrain(b1);
            AiCore.AddBrain(b2);

            Thread.Sleep(1000);
            AiCore.Shutdown();

            Assert.AreEqual(1, ((Accumulator)state_1.nodes["0"]).val);
            Assert.AreEqual(1, ((Accumulator)state_2.nodes["0"]).val);
            thread.Join();
        }
        public void RemoveTest()
        {
            AiBrain[] b = new AiBrain[RemoveTestSize];
            AiState[] s = new AiState[RemoveTestSize];

            DummyInterface dummy = new DummyInterface();

            AiCore.InitCore();
            Thread thread = new Thread(AiCore.Run);

            thread.Start();

            for (int i = 0; i < RemoveTestSize; i++)
            {
                s[i] = new AiState(template, "0");
                b[i] = new AiBrain(dummy, s[i]);
                AiCore.AddBrain(b[i]);
                if (i > RemoveTestSize * parity)
                {
                    AiCore.RemoveBrain(b[i]);
                }
            }

            Thread.Sleep(1000);

            AiCore.Shutdown();

            for (int i = 0; i < RemoveTestSize; i++)
            {
                if (i > RemoveTestSize * parity)
                {
                    Assert.IsFalse(AiCore.HasBrain(b[i]));
                }
                else
                {
                    Assert.IsTrue(AiCore.HasBrain(b[i]));
                }
            }

            thread.Join();
        }
Exemple #10
0
    void PossessTarget()
    {
        victim           = target.GetComponent <AiCore>();
        job.victim       = victim;
        job.life.intType = life.life;
        victim.QuitPath();
        victim.tempSpell = fireball;
        foreach (MyStateMachine.BaseStateMachine j in victim.listOfJobs)
        {
            j.enabled = false;
        }

        transform.SetParent(target);

        job.tranformToDemon.fromSprite = victim.sprite;
        job.tranformToDemon.toSprite   = formSprite;
        job.tranformToDemon.hitbox     = hitbox;
        job.tranformToDemon.toState    = true;


        job.returnBackToNormal.fromSprite = formSprite;
        job.returnBackToNormal.toSprite   = victim.sprite;
        job.returnBackToNormal.hitbox     = hitbox;
        job.returnBackToNormal.toState    = false;

        job.deathReturnNormalForm.fromSprite = formSprite;
        job.deathReturnNormalForm.toSprite   = victim.sprite;
        job.deathReturnNormalForm.hitbox     = hitbox;
        job.deathReturnNormalForm.toState    = false;



        job.InitializeNewBody();
        particles.Stop();
        body.bodyType = RigidbodyType2D.Kinematic;
        col.enabled   = false;
        state         = SoulStates.POSSESS;
    }
Exemple #11
0
        public override void OnStateEnter(StateMachine m)
        {
            if (player == null)
            {
                player = GameObject.FindGameObjectWithTag("Player").transform;

                //Debug.Log(player.ToString());
            }

            if (ai == null)
            {
                ai             = m.GetComponent <AiCore>();
                lastspeed      = ai.agent.speed;
                lastStopDist   = ai.agent.stoppingDistance;
                ai.agent.speed = speed;
            }

            if (sight == null)
            {
                sight = m.GetComponent <FieldOfView>();
            }

            searchState.Reset();
        }
Exemple #12
0
 public override void Initialize(BaseStateMachine m)
 {
     this.localFSM = m;
     ai            = m.transform.parent.GetComponent <AiCore>();
     //done = false;
 }
Exemple #13
0
 public override void Initialize(BaseStateMachine m)
 {
     localFSM = m;
     ai       = m.GetComponentInParent <AiCore>();
     Debug.Log(ai.ToString());
 }
Exemple #14
0
    // Start is called before the first frame update
    public override void Start()
    {
        ai = GetComponentInParent <AiCore>();
        ai.OnStunned.AddListener(InterruptEvent);
        ai.OnExitStun.AddListener(EndInterruptEvent);

        manager = GameObject.FindGameObjectWithTag("GAMEMANAGER").GetComponent <GameManager>();

        Parameter workParam = new Parameter(Parameter.ParamTypes.BOOLEAN, "GOWORK");

        InterruptParam = new Parameter(Parameter.ParamTypes.TRIGGER, "STUN");
        JudgeParam     = new Parameter(Parameter.ParamTypes.TRIGGER, "JUDGE");

        HourParam = new Parameter(Parameter.ParamTypes.INTEGER, "TIME");

        EnergyParam           = new Parameter(Parameter.ParamTypes.FLOAT, "ENERGY");
        EnergyParam.floatType = ai.Energy;

        lowEnergyParam = new Parameter(Parameter.ParamTypes.TRIGGER, "LOWENERGY");

        parameters.Add(workParam);
        parameters.Add(InterruptParam);
        parameters.Add(JudgeParam);
        parameters.Add(HourParam);
        parameters.Add(EnergyParam);
        parameters.Add(lowEnergyParam);

        REST_STATE sleep = new REST_STATE();

        sleep.name       = "SLEEP";
        sleep.multiplier = 6;

        WORK_STATE work = new WORK_STATE();

        work.name        = "WORK";
        work.workStation = workStation;
        work.directory   = areaDirectory;
        work.workArea    = AreaDirectory.COFEESHOP_AREA;
        work.ShopMenu    = ShopMenu;

        WORK_STATE home = new WORK_STATE();

        home.name        = "HOME";
        home.workStation = homeStation;
        home.directory   = areaDirectory;
        home.workArea    = AreaDirectory.HOME_ROOM1_AREA;

        IDLE_STATE Interrupted = new IDLE_STATE();

        Interrupted.name = "INTERRUPTED";


        IDLE_STATE Judge = new IDLE_STATE();

        Judge.name = "JUDGE";


        REST_STATE Rest = new REST_STATE();

        Rest.name        = "REST";
        Rest.searchBench = true;

        sleep.CreateTransition(work, new Condition(Condition.ConditionTypes.GREATER, HourParam, 6), new Condition(Condition.ConditionTypes.LESS, HourParam, 16));


        work.CreateTransition(home, new Condition(Condition.ConditionTypes.GREATER, HourParam, 15));

        home.CreateTransition(sleep, new Condition(Condition.ConditionTypes.LESS, HourParam, 1));

        Rest.CreateTransition(Judge, new Condition(Condition.ConditionTypes.GREATER, EnergyParam, 50f));

        //sleep.CreateTransition(work, new Condition(Condition.ConditionTypes.TRUE, workParam, true));

        Interrupted.CreateTransition(Judge, new Condition(Condition.ConditionTypes.TRUE, JudgeParam, true));

        Judge.CreateTransition(work, new Condition(Condition.ConditionTypes.GREATER, HourParam, 6), new Condition(Condition.ConditionTypes.LESS, HourParam, 17));
        Judge.CreateTransition(home, new Condition(Condition.ConditionTypes.GREATER, HourParam, 15));

        CreateImpulseTransition(Interrupted, new Condition(Condition.ConditionTypes.TRUE, InterruptParam, true));
        CreateImpulseTransition(Rest, new Condition(Condition.ConditionTypes.TRUE, lowEnergyParam, true));

        sleep.Initialize(this);
        work.Initialize(this);
        home.Initialize(this);
        Interrupted.Initialize(this);
        Judge.Initialize(this);
        Rest.Initialize(this);

        AddToStateList(sleep, work, home, Interrupted, Judge, Rest);

        currentState = sleep;

        base.Start();
    }
Exemple #15
0
 public override void Initialize(BaseStateMachine m)
 {
     ai = m.GetComponentInParent <AiCore>();
 }