예제 #1
0
    void Start()
    {
        if (!objectTarget)
        {
            GameObject go = new GameObject("Cam Target");
            go.transform.position = transform.position + (transform.forward * distance);
            objectTarget          = go.transform;
        }
        highlightedGObject     = null;
        dictAtMaterialShader   = new Dictionary <Material, string>();
        dictAtChilds           = new Dictionary <GameObject, Dictionary <Material, string> >();
        dictLastMaterialShader = new Dictionary <Material, string>();
        dictLastChilds         = new Dictionary <GameObject, Dictionary <Material, string> >();
        lastRenderer           = null;
        atRenderer             = null;

        distance        = Vector3.Distance(transform.position, objectTarget.position);
        currentDistance = distance;
        desiredDistance = distance;

        //be sure to grab the current rotations as starting points.
        position        = transform.position;
        rotation        = transform.rotation;
        currentRotation = transform.rotation;
        desiredRotation = transform.rotation;

        xDeg        = Vector3.Angle(Vector3.right, transform.right);
        yDeg        = Vector3.Angle(Vector3.up, transform.up);
        targetState = TargetStates.Off;

        mode = PickerMode.Object;
        Debug.Log("RHS>>> " + this.name + " " + this.GetType() + " is ready.");
    }
예제 #2
0
 private void Update()
 {
     if (Vector2.Distance(transform.position, Target.transform.position) <= _transitionRange)
     {
         NeedTransit  = true;
         _targetState = TargetStates.Where(value => value is GoblinAttackState).First();
     }
 }
예제 #3
0
    private void Update()
    {
        if (GetComponent <GoblinSearchTargetState>().IsEndSearch)
        {
            NeedTransit = true;

            _targetState = TargetStates.Find(value => value is GoblinMoverState);
        }
    }
예제 #4
0
    private void Update()
    {
        if (_elapsedTime > GetComponent <GoblinAttackState>().Dalay)
        {
            NeedTransit  = true;
            _targetState = TargetStates.Find(value => value is GoblinSearchTargetState);
        }

        _elapsedTime += Time.deltaTime;
    }
예제 #5
0
    private void Update()
    {
        bool isGap = Physics2D.Raycast(_gapCheck.position, Vector2.down, _distanceCheck, _whatIsGround);

        if (!isGap)
        {
            NeedTransit  = true;
            _targetState = TargetStates.Find(value => value is GoblinJumpState);
        }
    }
예제 #6
0
 public void chooseOnEnvironment()
 {
     if (targetState == TargetStates.Off)
     {
         targetState = TargetStates.Set;
         mode        = PickerMode.Position;
     }
     else
     {
         highlightMode();
     }
 }
예제 #7
0
        /// <summary>
        /// Adds a new target state to the target state
        /// list if it isn't on the list already.
        /// </summary>
        /// <param name="targetState">A target state to
        /// be added to the target state list</param>
        /// <returns>Was the state added to the list</returns>
        public bool AddTransition(ScreenStateType targetState)
        {
            // Attempts to add a target state.
            // Will return false if the state was already added.

            if (TargetStates.Contains(targetState))
            {
                return(false);
            }
            else
            {
                TargetStates.Add(targetState);
                return(true);
            }
        }
예제 #8
0
 /// <summary>
 /// Checks if it is legal to go from this state to the target state.
 /// </summary>
 /// <param name="targetState">The target state to go to.</param>
 /// <returns>True, if the transition is legal, false otherwise.</returns>
 public virtual bool CheckTransition(AIStateType targetState)
 {
     return(TargetStates.Contains(targetState));
 }
예제 #9
0
 /// <summary>
 /// Removes a target state from TargetStates data structure.
 /// </summary>
 /// <param name="targetState">The state to be removed.</param>
 /// <returns>True, if the target state was succesfully removed from the
 /// data structure. False otherwise.</returns>
 public bool RemoveTransition(AIStateType targetState)
 {
     return(TargetStates.Remove(targetState));
 }
예제 #10
0
 /// <summary>
 /// Add a valid state to which we can go from this state.
 /// </summary>
 /// <param name="targetState">The target state</param>
 /// <returns>True, if the state was added succesfully (not present in our
 /// datastructure already). False otherwise.</returns>
 public bool AddTransition(AIStateType targetState)
 {
     // Use the extension method AddUnique to add a target state. Will return false
     // if the state was already added.
     return(TargetStates.AddUnique(targetState));
 }
예제 #11
0
 public void highlightMode()
 {
     targetState = TargetStates.Off;
     mode        = PickerMode.Object;
 }
예제 #12
0
    void Update()
    {
        if (GetComponent <Camera>().enabled)
        {
            if (targetState == TargetStates.Off)
            {
                targetPicker.gameObject.SetActive(false);
            }
            else
            {
                targetPicker.gameObject.SetActive(true);
            }
            if (mode == PickerMode.Object)
            {
                if (Input.GetMouseButtonDown(0))
                {
                    if (EventSystem.current.IsPointerOverGameObject())
                    {
                        //print(EventSystem.current.currentSelectedGameObject == dropActions.gameObject);
                        GameObject aux = EventSystem.current.currentSelectedGameObject;
                        if (aux == null)
                        {
                            ray = GetComponent <Camera>().ScreenPointToRay(Input.mousePosition);

                            if (Physics.Raycast(ray, out hit))
                            {
                                string     itemName = hit.collider.gameObject.name;
                                GameObject gO       = hit.collider.gameObject;

                                if (itemName.Contains("Collider", StringComparison.OrdinalIgnoreCase) || itemName.Contains("GameObject", StringComparison.OrdinalIgnoreCase))
                                {
                                    gO = hit.collider.transform.parent.gameObject;
                                }
                                highlightObject(gO);
                            }
                        }
                    }
                }
            }
            else
            {
                //print(EventSystem.current.currentSelectedGameObject == dropActions.gameObject);
                GameObject aux = EventSystem.current.currentSelectedGameObject;
                if (aux == null)
                {
                    if (targetState == TargetStates.Set)
                    {
                        Ray        ray = GetComponent <Camera>().ScreenPointToRay(Input.mousePosition);
                        RaycastHit hit;
                        if (!Physics.Raycast(ray, out hit))
                        {
                            return;
                        }
                        targetPicker.position = hit.point + hit.normal * surfaceOffset;
                        if (Input.GetMouseButtonDown(0))
                        {
                            targetPickerPosition = targetPicker.position;
                            targetState          = TargetStates.Fixed;
                        }
                    }
                    else if (targetState == TargetStates.Fixed)
                    {
                        if (Input.GetMouseButtonDown(0))
                        {
                            targetState = TargetStates.Set;
                        }
                    }
                }
            }
        }
        else
        {
            resetHighlight();
        }
    }
예제 #13
0
 public bool AddTransition(AIStateType targetState)
 {
     return(TargetStates.AddUnique(targetState));
 }
예제 #14
0
 // Use this for initialization
 void Start()
 {
     gl = (GameLogic)FindObjectOfType(typeof(GameLogic));
     origin = transform.position;
     targetState = Target.TargetStates.waiting;
 }
예제 #15
0
        private string BuildResponseMessage(ChangePortStateRequest[] changePortStateRequests, TargetStates targetState)
        {
            string activatedWord       = "ligado";
            string activatedWordPlus   = "ligados";
            string deactivatedWord     = "desligado";
            string deactivatedWordPlus = "desligados";
            string willWord            = "será";
            string willWordPlus        = "serão";
            string inCurrentState      = "estava";
            string inCurrentStatePlus  = "estavam";

            var changed    = changePortStateRequests.Where(p => p.StateChanged).ToArray();
            var notChanged = changePortStateRequests.Where(p => !p.StateChanged).ToArray();

            string changedStateWord;
            string notChangedStateWord;

            switch (targetState)
            {
            case TargetStates.Activate:
                changedStateWord    = changed.Length > 1 ? activatedWordPlus : activatedWord;
                notChangedStateWord = notChanged.Length > 1 ? activatedWordPlus : activatedWord;
                break;

            case TargetStates.Deactivate:
                changedStateWord    = changed.Length > 1 ? deactivatedWordPlus : deactivatedWord;
                notChangedStateWord = notChanged.Length > 1 ? deactivatedWordPlus : deactivatedWord;
                break;

            default:
                throw new SpeechletException($"TargetStates '{targetState}' não é suportado");
            }

            var sb = new StringBuilder();

            if (changed.Any())
            {
                var changedPorts   = string.Join(", ", changed.Select(p => p.PortName));
                var changedMessage = $"{changedPorts} {(changed.Length > 1 ? willWordPlus : willWord)} {changedStateWord}. ";
                sb.Append(changedMessage);
            }
            if (notChanged.Any())
            {
                var changedPorts   = string.Join(", ", notChanged.Select(p => p.PortName));
                var changedMessage = $"{changedPorts} já {(notChanged.Length > 1 ? inCurrentStatePlus : inCurrentState)} {notChangedStateWord}. ";
                sb.Append(changedMessage);
            }
            return(sb.ToString());
        }