// Use this for initialization protected override void Initialize() { Vector3 new_pos = new Vector3((right) - transform.localScale.x * 0.4f, (top + bottom) / 2, 0); transform.position = new_pos; behavior = null; StartShooting(); }
// Use this for initialization private void Start() { manager = FindObjectOfType <T12_GameManager>(); agent = gameObject.GetComponent <NavMeshAgent>(); agent.autoBraking = false; CurrentState = BeastAIState.Tutorial; playerReference = GameObject.FindGameObjectWithTag("Phone"); firstUpdate = true; canSeePlayer = false; visibleToPlayer = false; stateChanged = false; playerDistance = 100.0f; //just something big until the first update numRoomSearched = 0; tutorial = new StateBehavior(StateTutorialBehavior); wander = new StateBehavior(StateWanderBehavior); approach = new StateBehavior(StateApproachBehavior); pursue = new StateBehavior(StatePursueBehavior); search = new StateBehavior(StateSearchBehavior); currentBehavior = tutorial; }
protected virtual void Persuing() { agent.isStopped = false; agent.speed = runSpeed; anim.SetBool("isWalking", false); anim.SetBool("isAttacking", false); anim.SetBool("isHurt", false); anim.SetBool("isRunning", true); float distanceToPlayer = Vector3.Distance(transform.position, PlayerPosition()); if (PlayerPosition() != Vector3.zero) { agent.SetDestination(PlayerPosition()); } if (!IsFindTarget()) { State = StateBehavior.Patrol; } else { if (distanceToPlayer < attackDistance) { State = StateBehavior.Attack; } } if (_isHurt) { State = StateBehavior.Hurt; } }
void Patrol_Route() { agent.speed = walkSpeed; anim.SetBool("isWalking", true); anim.SetBool("isAttacking", false); anim.SetBool("isHurt", false); anim.SetBool("isRunning", false); if (!IsFindTarget()) { float distanceToNextPatrolPoint = Vector3.Distance(transform.position, patrolPoints[nextPatrolPointIndex].position); if (distanceToNextPatrolPoint > 1.5f) { agent.SetDestination(patrolPoints[nextPatrolPointIndex].position); } else { nextPatrolPointIndex += 1; if (nextPatrolPointIndex > patrolPoints.Length - 1) { nextPatrolPointIndex = 0; } } } else { State = StateBehavior.Persuing; } if (_isHurt) { State = StateBehavior.Hurt; } }
void Idle() { anim.SetBool("isWalking", false); anim.SetBool("isAttacking", false); anim.SetBool("isHurt", false); anim.SetBool("isRunning", false); if (!IsFindTarget()) { if (currentstoppTime < stoppingTime) { currentstoppTime += Time.deltaTime; } else { currentstoppTime = 0; State = StateBehavior.Patrol; } } else { currentstoppTime = 0; State = StateBehavior.Persuing; } if (_isHurt) { State = StateBehavior.Hurt; } }
void SendCollisions(StateBehavior collision) { foreach (StateBehavior state in FindObjectsOfType <StateBehavior>()) { state.GotCollision(collision.transform); } }
void LoadState(StateData stateData) { //find state object Transform parent = transform.Find(stateData.name); if (parent == null) { return; } //instiate prefab as child GameObject StateGO = Instantiate(StatePrefab, parent); //initialize gameobject behavior StateBehavior stateBehavior = StateGO.GetComponent <StateBehavior>(); currStates.Add(stateBehavior); stateBehavior.Init(stateData); //change color of state StateTransform stateTransform = parent.GetComponent <StateTransform>(); float.TryParse(stateData.positive, out float positiveCases); float percentOfTotal = positiveCases / (float)positiveTotal; stateTransform.SetColor(percentOfTotal); }
// Use this for initialization override protected void Initialize() { Vector3 new_pos = new Vector3((right) - transform.localScale.x * 0.4f, (top + bottom) / 2, 0); transform.position = new_pos; behavior = null; StartShooting(); }
// Use this for initialization void Start() { Vector3 new_pos = new Vector3((InterestingGameStuff.right) - transform.localScale.x * 0.62f, 0, 0); transform.position = new_pos; behavior = null; RandomMove(); }
internal void SetState(RaftEngineState state) { if (state == State) { return; } if (State == RaftEngineState.Leader) { _leaderSelectedEvent.Reset(); } var oldState = State; if (StateBehavior != null) { StateBehavior.Dispose(); } switch (state) { case RaftEngineState.Follower: case RaftEngineState.FollowerAfterStepDown: StateBehavior = new FollowerStateBehavior(this, state == RaftEngineState.FollowerAfterStepDown); break; case RaftEngineState.CandidateByRequest: StateBehavior = new CandidateStateBehavior(this, true); break; case RaftEngineState.Candidate: StateBehavior = new CandidateStateBehavior(this, false); StateBehavior.HandleTimeout(); break; case RaftEngineState.SnapshotInstallation: StateBehavior = new SnapshotInstallationStateBehavior(this); break; case RaftEngineState.Leader: StateBehavior = new LeaderStateBehavior(this); CurrentLeader = Name; OnElectedAsLeader(); break; case RaftEngineState.SteppingDown: StateBehavior = new SteppingDownStateBehavior(this); CurrentLeader = Name; break; default: throw new ArgumentOutOfRangeException(state.ToString()); } Debug.Assert(StateBehavior != null, "StateBehavior != null"); OnStateChanged(state); _log.Debug("{0} ==> {1}", oldState, state); }
public void SetState(StateBehavior <T> tBehavior) { if (StateOnExit != null) { StateOnExit(m_tOwner); } eState = tBehavior.eState; tBehavior.SetActions(this); StateOnEnter(m_tOwner); }
// ------------------------------------------------------------------------ // Functions - Unity // ------------------------------------------------------------------------ // Use this for initialization public void Start() { this.player = GameObject.FindGameObjectWithTag("player2"); this.state = MoleStateFactory.creaLook4Player(); this.attackType = new MeleeHandAttackType(this); this.currentHealth = this.healthStart; this.isAlive = true; this.isBlocking = false; this.isRunningAway = false; }
void GotHit(GameObject go) { if (go.transform.childCount > 0) { StateBehavior stateBehavior = go.transform.GetChild(0).GetComponent <StateBehavior>(); if (stateBehavior != null) { SendCollisions(stateBehavior); } } }
public GarageDoor() { StateOpen = new StateOpenBehavior(this); StateOpening = new StateOpeningBehavior(this); StateStopWhileOpening = new StateStoppedWhileOpeningBehavior(this); StateClosing = new StateClosingBehavior(this); StateStopWhileClosing = new StateStoppedWhileClosingBehavior(this); StateClosed = new StateClosedBehavior(this); CurrentState = StateClosed; }
// boss starts dancing and will sometime shoot void StartRegularBehavior() { rotation_speed = rotation_speed_normal; target_vector = sway_vector; // probably use time values in following Invoking in some setting or public variable InvokeRepeating("SwitchHappyToRotation", 0.6f, 0.6f); InvokeRepeating("RandomizeGoTo", goto_change_time, goto_change_time); Invoke("StartShooting", Random.value * random_behavior_max_time); behavior = null; behavior += RotateHappily; behavior += JumpToGoTo; }
// Change the jumping behavior or whatever to SHOOTING tatatatata! void StartShooting() { CancelInvoke("SwitchHappyToRotation"); behavior = ShootingBehavior; rotation_speed = rotation_speed_fire; Vector3 new_target = transform.position; new_target.x -= 5; target_vector = new Vector3(-5, 0, 0); Invoke("StopShooting", Random.value * random_behavior_max_time); InvokeRepeating("ShootEnemy", 0.42f, fire_delay); }
void Hurt() { agent.isStopped = true; anim.SetBool("isWalking", false); anim.SetBool("isAttacking", false); anim.SetBool("isHurt", true); anim.SetBool("isRunning", false); if (anim.GetCurrentAnimatorStateInfo(0).IsName("Hurt") && anim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 0.95f) { _isHurt = false; State = StateBehavior.Persuing; } }
// Start firing sequence void Fire() { behavior = null; Shiver(); int shots = shots_per_shooting; while (shots-- > 0) { Invoke("SingleShot", shots * fire_delay); // each shot has increasing delay } Invoke("StopShiver", fire_delay * (shots_per_shooting - 1)); Invoke("RandomMove", fire_delay * (shots_per_shooting - 1) + change_behavior_time); }
void Attack() { Vector3 newPos = new Vector3(PlayerPosition().x, transform.position.y, PlayerPosition().z); transform.LookAt(newPos); agent.isStopped = true; anim.SetBool("isWalking", false); anim.SetBool("isAttacking", true); anim.SetBool("isHurt", false); anim.SetBool("isRunning", false); if (anim.GetCurrentAnimatorStateInfo(0).IsName("Attack") && anim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 0.95f) { State = StateBehavior.Persuing; } }
public void TransitionStateTo(string targetState) { if (mCurrentState == null) { mCurrentState = mStateMap [targetState]; mCurrentState.BeginState(); return; } if (mCurrentState.StateName != targetState) { mCurrentState.EndState(); mCurrentState = mStateMap [targetState]; mCurrentState.BeginState(); } }
public void CancelEdit() { if (!IsInEdit) { return; } SecurityToken = BackupSecurityToken; Attributes.Run(a => a.RestoreEditBackup()); IsDirty = false; if (!StateBehavior.HasFlag(StateBehavior.StayInEdit)) { IsInEdit = false; } Notification = null; }
public async Task Save() { try { var result = await Client.ExecuteActionAsync("PersistentObject.Save", this).ConfigureAwait(false); if (result == null) { return; } await RefreshFromResult(result).ConfigureAwait(false); if (string.IsNullOrWhiteSpace(Notification) || NotificationType != NotificationType.Error) { IsDirty = false; IsInEdit = StateBehavior.HasFlag(StateBehavior.StayInEdit); if (OwnerAttributeWithReference != null) { if (OwnerAttributeWithReference.ObjectId != ObjectId) { OwnerAttributeWithReference.Parent.Edit(); var fakeSelectedItem = new JObject(new JProperty("id", ObjectId), new JProperty("values", new JArray())); await OwnerAttributeWithReference.ChangeReference(new QueryResultItem(fakeSelectedItem, OwnerAttributeWithReference.Lookup)).ConfigureAwait(false); } } else if (OwnerQuery != null) { await OwnerQuery.RefreshQueryAsync().ConfigureAwait(false); if (OwnerQuery.SemanticZoomOwner != null) { await OwnerQuery.SemanticZoomOwner.RefreshQueryAsync().ConfigureAwait(false); } } } } catch (Exception ex) { SetNotification(ex.Message); } }
public void AppendCommand(Command command) { if (command == null) { throw new ArgumentNullException("command"); } var leaderStateBehavior = StateBehavior as LeaderStateBehavior; if (leaderStateBehavior == null || leaderStateBehavior.State != RaftEngineState.Leader) { throw new NotLeadingException("Command can be appended only on leader node. This node behavior type is " + StateBehavior.GetType().Name) { CurrentLeader = CurrentLeader } } ; leaderStateBehavior.AppendCommand(command); }
public void ActiveAccessories() { for (int i = 0; i < 7; i++) { upgrade_Objs[i].collider.enabled = true; upgrade_sprites[i].color = Color.white; upgrade_sprites [i].spriteId = upgrade_sprites [0].GetSpriteIdByName (accessoriesData.NameSpeccify[i]); if(UpgradeOutsideManager.CanDecoration_Accessories_list.Contains(i) == false) { itemPrice_textmesh[i].gameObject.SetActiveRecursively(true); itemPrice_textmesh[i].text = accessoriesData.upgradePrices[i].ToString(); itemPrice_textmesh[i].Commit(); } else { itemPrice_textmesh[i].gameObject.SetActiveRecursively(false); } } previousButton_Obj.active = true; nextButton_Obj.active = true; currentStateBehavior = StateBehavior.activeAccessories; currentPage = 0; }
void Patrol_RANDOM() { agent.isStopped = false; agent.speed = walkSpeed; anim.SetBool("isWalking", true); anim.SetBool("isAttacking", false); anim.SetBool("isHurt", false); anim.SetBool("isRunning", false); if (!IsFindTarget()) { if (!isFinding) { StartCoroutine(FindNewPath()); } } else { State = StateBehavior.Persuing; } if (_isHurt) { State = StateBehavior.Hurt; } }
internal void SetState(RaftEngineState state) { if (state == State) { return; } if (State == RaftEngineState.Leader) { _leaderSelectedEvent.Reset(); } var oldState = State; if (StateBehavior != null) { StateBehavior.Dispose(); } switch (state) { case RaftEngineState.Follower: case RaftEngineState.FollowerAfterStepDown: StateBehavior = new FollowerStateBehavior(this, state == RaftEngineState.FollowerAfterStepDown); break; case RaftEngineState.CandidateByRequest: StateBehavior = new CandidateStateBehavior(this, true); //setting state before calling election because the state may change to leader before //we set it to CandidateByRequest AssertStateAndRaiseStateChanged(state, oldState); StateBehavior.HandleTimeout(); return; case RaftEngineState.Candidate: StateBehavior = new CandidateStateBehavior(this, false); //setting state before calling election because the state may change to leader before //we set it to CandidateStateBehavior AssertStateAndRaiseStateChanged(state, oldState); StateBehavior.HandleTimeout(); return; case RaftEngineState.SnapshotInstallation: StateBehavior = new SnapshotInstallationStateBehavior(this); break; case RaftEngineState.Leader: StateBehavior = new LeaderStateBehavior(this); CurrentLeader = Name; OnElectedAsLeader(); break; case RaftEngineState.SteppingDown: StateBehavior = new SteppingDownStateBehavior(this); CurrentLeader = Name; break; default: throw new ArgumentOutOfRangeException(state.ToString()); } AssertStateAndRaiseStateChanged(state, oldState); }
// Set current AI state public void SetState(StateBehavior <MoleEnemyController> state) { this.state.OnExit(this); this.state = state; this.state.OnEnter(this); }
internal void ActivePet() { for (int i = 0; i < 7; i++) { upgrade_Objs[i].collider.enabled = true; upgrade_sprites[i].color = Color.white; upgrade_sprites[i].spriteId = upgrade_sprites[0].GetSpriteIdByName(petData.NameSpecify[i]); itemPrice_textmesh[i].gameObject.active = false; if(CanAlimentPet_id_list.Contains(i) == false) { upgrade_sprites[i].color = Color.grey; upgrade_Objs[i].collider.enabled = false; } } previousButton_Obj.active = false; nextButton_Obj.active = false; currentStateBehavior = StateBehavior.activePet; currentPage = 0; }
private void UpdateAIState() { stateChanged = false; //assume AI state unchanged until seen otherwise //state transition conditions based on current state switch (CurrentState) { case BeastAIState.Tutorial: // tutorial --> wander if (!player.InTutorial) { //teleport to random location and then proceed to normal gameplay TeleportToRoom(GetRandomRoomNode()); CurrentState = BeastAIState.Wander; stateChanged = true; currentBehavior = wander; } break; case BeastAIState.Wander: // wander --> approach if (canSeePlayer && !player.isHiding) { CurrentState = BeastAIState.Approach; stateChanged = true; currentBehavior = approach; } break; case BeastAIState.Approach: // approach --> wander if (player.isHiding || !canSeePlayer) { CurrentState = BeastAIState.Wander; stateChanged = true; currentBehavior = wander; } // approach --> pursue else if (visibleToPlayer || (playerDistance <= minApproachDistance)) { CurrentState = BeastAIState.Pursue; stateChanged = true; currentBehavior = pursue; } break; case BeastAIState.Pursue: // pursue --> search if (!canSeePlayer) { lastKnownPlayerPos = player.gameObject.transform.position; CurrentState = BeastAIState.Search; stateChanged = true; currentBehavior = search; } break; case BeastAIState.Search: // search --> pursue if (canSeePlayer && !player.isHiding) { CurrentState = BeastAIState.Pursue; stateChanged = true; currentBehavior = pursue; } // search --> wander else if (numRoomSearched >= maxSearchRooms) { CurrentState = BeastAIState.Wander; stateChanged = true; currentBehavior = wander; } break; default: Debug.LogError(string.Format("ERROR in {0}({1}): BeastController does not know how to update from its current AI state.", gameObject.name, gameObject.GetInstanceID())); break; } }
void RandomMove() { target_position = new Vector3(transform.position.x, InterestingGameStuff.top + Random.value * (InterestingGameStuff.bottom - InterestingGameStuff.top), 0); behavior = MoveTowardsTarget; Invoke("Fire", change_behavior_time); }
// Change the jumping behavior or whatever to SHOOTING tatatatata! void StartShooting() { CancelInvoke("SwitchHappyToRotation"); behavior = ShootingBehavior; rotation_speed = rotation_speed_fire; Vector3 new_target = transform.position; new_target.x -= 5; target_vector = new Vector3(-5, 0 , 0); Invoke("StopShooting", Random.value * random_behavior_max_time); InvokeRepeating("ShootEnemy", 0.42f, fire_delay); }
internal PersistentObject(Client client, JObject model) : base(client, model) { if (model.TryGetValue("attributes", out var attributesToken)) { var attributes = (JArray)attributesToken; Attributes = attributes.Select(jAttr => { if (jAttr["lookup"] != null) { return(new PersistentObjectAttributeWithReference(client, (JObject)jAttr, this)); } if (jAttr["details"] != null) { return(new PersistentObjectAttributeAsDetail(client, (JObject)jAttr, this)); } return(new PersistentObjectAttribute(client, (JObject)jAttr, this)); }).ToArray(); } else { Attributes = new PersistentObjectAttribute[0]; } if (model.TryGetValue("queries", out var queriesToken)) { var queries = (JArray)queriesToken; Queries = new KeyValueList <string, Query>(queries.Select(jQuery /* :-) */ => client.Hooks.OnConstruct(client, (JObject)jQuery, this, false)).ToDictionary(q => q.Name, q => q)); } else { Queries = new KeyValueList <string, Query>(new Dictionary <string, Query>()); } var parent = (JObject)model["parent"]; if (parent != null) { Parent = client.Hooks.OnConstruct(client, parent); } // Initialize Tabs and Groups var tabIndex = 0; var attributeTabs = !IsHidden?Attributes.OrderBy(attr => attr.Offset).GroupBy(attr => attr.Tab).Select(tab => { var groups = tab.OrderBy(attr => attr.Offset).GroupBy(attr => attr.GroupName).Select(group => new PersistentObjectAttributeGroup(client, group.Key, group.ToArray())).ToArray(); if (groups.Length == 1) { groups[0].IsNameVisible = false; } var t = (PersistentObjectTab)CreateAttributesTab(groups.SelectMany(g => g.Attributes).ToArray(), string.IsNullOrEmpty(tab.Key) ? Label : tab.Key, this); t.Index = tabIndex++; return(t); }) : new PersistentObjectTabAttributes[0]; Tabs = attributeTabs.Concat(Queries.OrderBy(q => q.Value.Offset).Select(q => CreateQueryTab(q.Value))).ToList(); if (!IsHidden) { // Initialize Action if (model.TryGetValue("actions", out var actionsToken)) { var actions = ActionBase.GetActions(client, actionsToken, this); Actions = actions.Where(a => !a.IsPinned).ToArray(); PinnedActions = actions.Where(a => a.IsPinned).ToArray(); Actions.Run(a => a.Initialize()); PinnedActions.Run(a => a.Initialize()); } else { Actions = PinnedActions = new ActionBase[0]; } } else { Actions = PinnedActions = new ActionBase[0]; } // Also check IsInEdit (Object could have been reconstructed after suspend/resume) IsInEdit = IsInEdit || IsNew || StateBehavior.HasFlag(StateBehavior.OpenInEdit) || StateBehavior.HasFlag(StateBehavior.StayInEdit); IsDirty = IsDirty; // Also triggers reconstructed changes // Specials HasNotification = !string.IsNullOrWhiteSpace(Notification); client.Hooks.OnConstruct(this); Tabs.Select((tab, n) => tab.Index = n).Run(); }
void StartShooting() { behavior = null; InvokeRepeating("Shoot", 0.0f, fire_delay); Invoke("StartTurning", change_behavior_rate); }
void StopTurning() { behavior -= TurnStep; Invoke("StartTurning", change_behavior_rate); }
private void Update() { AnimateFootprints(); StateBehavior?.Invoke(); Senses(); }