// 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();
 }
Ejemplo n.º 2
0
    // 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;
    }
Ejemplo n.º 3
0
    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;
        }
    }
Ejemplo n.º 4
0
 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;
     }
 }
Ejemplo n.º 5
0
 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);
     }
 }
Ejemplo n.º 7
0
    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();
    }
Ejemplo n.º 10
0
        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);
        }
Ejemplo n.º 11
0
 public void SetState(StateBehavior <T> tBehavior)
 {
     if (StateOnExit != null)
     {
         StateOnExit(m_tOwner);
     }
     eState = tBehavior.eState;
     tBehavior.SetActions(this);
     StateOnEnter(m_tOwner);
 }
Ejemplo n.º 12
0
    // ------------------------------------------------------------------------
    // 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;
    }
Ejemplo n.º 13
0
 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);
    }
Ejemplo n.º 17
0
 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);
    }
Ejemplo n.º 19
0
    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;
        }
    }
    // 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);
    }
Ejemplo n.º 21
0
    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();
        }
    }
Ejemplo n.º 22
0
        public void CancelEdit()
        {
            if (!IsInEdit)
            {
                return;
            }

            SecurityToken = BackupSecurityToken;
            Attributes.Run(a => a.RestoreEditBackup());
            IsDirty = false;

            if (!StateBehavior.HasFlag(StateBehavior.StayInEdit))
            {
                IsInEdit = false;
            }

            Notification = null;
        }
Ejemplo n.º 23
0
        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);
            }
        }
Ejemplo n.º 24
0
        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);
        }
Ejemplo n.º 25
0
    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;
    }
Ejemplo n.º 26
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;
     }
 }
Ejemplo n.º 27
0
        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);
        }
Ejemplo n.º 28
0
 // Set current AI state
 public void SetState(StateBehavior <MoleEnemyController> state)
 {
     this.state.OnExit(this);
     this.state = state;
     this.state.OnEnter(this);
 }
Ejemplo n.º 29
0
    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;
    }
Ejemplo n.º 30
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;
        }
    }
 // 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();
 }
 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);
 }
 // 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;
 }
Ejemplo n.º 35
0
        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 StartShooting()
 {
     behavior = null;
     InvokeRepeating("Shoot", 0.0f, fire_delay);
     Invoke("StartTurning", change_behavior_rate);
 }
 void StopTurning()
 {
     behavior -= TurnStep;
     Invoke("StartTurning", change_behavior_rate);
 }
 void StopTurning()
 {
     behavior -= TurnStep;
     Invoke("StartTurning", change_behavior_rate);
 }
Ejemplo n.º 40
0
 private void Update()
 {
     AnimateFootprints();
     StateBehavior?.Invoke();
     Senses();
 }