void Update() { if (!Game.GameActive) { return; } //if (_debug) { // DebugText.UpdatePermText("World Control", "Game Not Active"); //} //if (GenericDraggableController.Dragging) { // if (_debug) { // DebugText.UpdatePermText("World Control", "Dragging"); // } // return; //} _foundControl = false; //_eventData.position = Input.mousePosition; //EventSystem.current.RaycastAll(_eventData, _result); if (PlayerInput.IsCursorOverUI) { SetCurrentNull(); //if (_debug) { // var go = PlayerInput.CurrentInput != null ? PlayerInput.CurrentInput.GameObjectUnderPointer() : null; // DebugText.UpdatePermText("World Control", string.Format("Over UI: {0}", go != null ? go.name : // EventSystem.current.currentSelectedGameObject != null ? EventSystem.current.currentSelectedGameObject.name : " null ?")); //} return; } _mouseRay = Cam.ScreenPointToRay(Input.mousePosition); Entity currentActor = null; var cnt = Physics.RaycastNonAlloc(_mouseRay, _hits, _currentEnemyRayDistance, _worldControlsMask); _hits.SortByDistanceAsc(cnt); for (int i = 0; i < cnt; i++) { var hit = _hits[i]; if (!_foundControl) { if (hit.transform.gameObject == _currentGameObject) { _foundControl = true; continue; } if (hit.distance <= _currentRayDistance) { hit.transform.GetComponentsInChildren(_tempControls); for (int j = 0; j < _tempControls.Count; j++) { if (_tempControls[j] == null) { continue; } if (_tempControls[j].WorldControlActive) { SetNewCurrent(_tempControls[j], hit.transform.gameObject); _foundControl = true; break; } } } } if (currentActor == null) { currentActor = MonoBehaviourToEntity.GetEntity(hit.collider); } if (LayerMasks.Environment.ContainsLayer(hit.transform.gameObject.layer)) { if (_debug) { DebugText.UpdatePermText("World Control", "Environment " + cnt); } break; } } if (currentActor != null) { if (_debug) { DebugText.UpdatePermText("World Control", currentActor.Id.ToString()); } } //RaycastHit hit; //if (Physics.Raycast(_mouseRay, out hit, _enemyDistance, _worldControlsMask)) { // if (hit.transform.gameObject == _currentGameObject) { // _foundControl = true; // } // else { // if (hit.distance <= _rayDistance) { // var newCurrent = hit.transform.GetComponent<IWorldControl>(); // if (newCurrent != null) { // SetNewCurrent(newCurrent, hit.transform.gameObject); // _foundControl = true; // } // } // else { // if (currentActor == null) { // Actor.Actors.TryGetValue(hit.collider, out currentActor); // } // } // } //} UICenterTarget.SetTargetActor(currentActor.GetNode <VisibleNode>()); if (!_foundControl || currentActor != null) { SetCurrentNull(); } if (_debug) { DebugText.UpdatePermText("World Control", string.Format("Current: {0}", _currentGameObject != null ? _currentGameObject.name : "None")); } //if (_current == null && AlternativeUse == null) { // var wasActive = GenericDraggableController.HasTarget; // if (GenericDraggableController.main.CanDrag()) { // UICenterTarget.SetText("Drag"); // } // else if (wasActive){ // UICenterTarget.Clear(); // } //} //else { // GenericDraggableController.ClearTarget(); //} }