private void HandleItemCreation() { if (Input.GetKeyUp(KeyCode.LeftShift)) { _selected = null; } if (!Input.GetMouseButtonDown(0) || _selected == null) { return; } var ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (!Physics.Raycast(ray, out hit)) { return; } var go = MapLoader.Instance.CreateItem(new MapItem { PrefabName = _selected.ItemName }); go.transform.position = hit.point; _dragging = go.GetComponent <MapItemHolder>(); _dragging.Item.Position = go.transform.position; MapLoader.Instance.BindItem(go); if (!Input.GetKey(KeyCode.LeftShift)) { _selected = null; } }
private void HandleDragging() { if (Input.GetMouseButtonDown(0) && _selected == null) { _dragging = GetObjectUnderCursor(); } if (_dragging != null) { var delta = Input.mousePosition - (Vector3)_lastMousePos; if (!Input.GetKey(KeyCode.LeftControl)) { delta.z = delta.y; delta.y = 0; } var rotation = Quaternion.AngleAxis( Camera.main.transform.rotation.eulerAngles.y, Vector3.up ); _dragging.Translate(rotation * delta * DragFactor); } if (Input.GetMouseButtonUp(0)) { _dragging = null; } }
private void Update() { HandleRotation(); HandleItemCreation(); HandleDragging(); HandleItemDeletion(); if (_dragging != null) { LastSelected = _dragging; } _lastMousePos = Input.mousePosition; }
private void Update() { var notNull = Selector.LastSelected != null; _name.interactable = notNull; _scale.interactable = notNull; _rotation.interactable = notNull; _threshold.interactable = notNull; _target.interactable = notNull; if (Selector.LastSelected == _holder || !notNull) { return; } _holder = Selector.LastSelected; _title.text = _holder.Item.PrefabName; _name.text = _holder.Item.Name; _scale.text = _holder.Item.Scale.ToString(CultureInfo.CurrentCulture); _rotation.text = _holder.Item.YRotation.ToString(CultureInfo.CurrentCulture); _threshold.text = _holder.Item.ActivationThreshold.ToString(); _target.text = _holder.Item.ActivationTarget; }