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]; }
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(); }
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()); }
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); }
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(); }
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; }
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(); }
public override void Initialize(BaseStateMachine m) { this.localFSM = m; ai = m.transform.parent.GetComponent <AiCore>(); //done = false; }
public override void Initialize(BaseStateMachine m) { localFSM = m; ai = m.GetComponentInParent <AiCore>(); Debug.Log(ai.ToString()); }
// 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(); }
public override void Initialize(BaseStateMachine m) { ai = m.GetComponentInParent <AiCore>(); }