// -------------------------------------------------------------------------------------------- private void OnPointerUp(object sender, EventSystemEventArgs e) { bool upOnUnitView = false; PointerEventData pointerEventData = e.eventData as PointerEventData; if (Time.time - _potentialSelectedUnitTime < SelectUnitTimeLimit && _potentialSelectedUnitView != null) { // if we have no potential selected unit yet, try to find one Ray ray = _game.gameCamera.ScreenPointToRay(pointerEventData.position); if (Physics.Raycast(ray, out RaycastHit hit)) { // if pointer up is called and we hit same potential selected unit, then we've selected that unit! UnitView view = hit.collider.GetComponentInParent <UnitView>(); if (view != null && view == _potentialSelectedUnitView) { foreach (IListener listener in _listeners) { listener.OnSelectedUnitView(view); } upOnUnitView = true; } } } if (!upOnUnitView) { foreach (IListener listener in _listeners) { listener.OnReleasedBoard(pointerEventData.position); } } _potentialSelectedUnitView = null; }
// -------------------------------------------------------------------------------------------- private void OnPointerDown(object sender, EventSystemEventArgs e) { PointerEventData pointerEventData = e.eventData as PointerEventData; Ray ray = _game.gameCamera.ScreenPointToRay(pointerEventData.position); if (_potentialSelectedUnitView == null) { // if we have no potential selected unit yet, try to find one if (Physics.Raycast(ray, out RaycastHit unitViewHit)) { _potentialSelectedUnitView = unitViewHit.collider.GetComponentInParent <UnitView>(); if (_potentialSelectedUnitView) // remember, GameObjects can be cast as bools (false if destroyed or null) { _potentialSelectedUnitTime = Time.time; foreach (IListener listener in _listeners) { listener.OnPointerDownOverUnitView(_potentialSelectedUnitView); } } } if (_potentialSelectedUnitView == null) { // if the potential slected unit view is still null, lets raycast to our plane _previousDragPoint = pointerEventData.position; } } // see if we hit a board tile view if (Physics.Raycast(ray, out RaycastHit hit)) { BoardTileView boardTileView = hit.collider.GetComponentInParent <BoardTileView>(); if (boardTileView != null) { foreach (IListener listener in _listeners) { listener.OnPointerDownOverBoardTileView(boardTileView); } } } }
// -------------------------------------------------------------------------------------------- private void OnPointerDrag(object sender, EventSystemEventArgs e) { PointerEventData pointerEventData = e.eventData as PointerEventData; Vector2 dragDelta = pointerEventData.position - _previousDragPoint; if (_potentialSelectedUnitView != null) { foreach (IListener listener in _listeners) { listener.OnDragFromUnitView(_potentialSelectedUnitView, _previousDragPoint, dragDelta); } } else { foreach (IListener listener in _listeners) { listener.OnDragBoard(_previousDragPoint, dragDelta); } } _previousDragPoint = pointerEventData.position; }
// Item dragged over dropzone public void dragOver(object sender, EventSystemEventArgs e) { DragEventArgs args = e.data as DragEventArgs; if (args != null) { args.Handled = true; args.Effects = DragDropEffects.Copy; } }
// Item Dropped onto dropzone public void dataDropped(object sender, EventSystemEventArgs e) { DragEventArgs args = e.data as DragEventArgs; if (args != null) { // Put paths into array string[] temp = null; if (args.Data.GetDataPresent(DataFormats.FileDrop)) temp = ((string[]) args.Data.GetData(DataFormats.FileDrop)); foreach (string s in temp) { // is directory if (FileFolderUtil.IsPathADirectory(s) == true) { items.Add(new ShortcutItem { displayName = FileFolderUtil.GetDirectoryName(s), path = s, isFile = false, image = ImageUtil.LoadBitmapImageFromResources("Resources/folder_32.png") }); } // is file else if (File.Exists(s) == true) { items.Add(new ShortcutItem { displayName = Path.GetFileNameWithoutExtension(s), path = s, isFile = true, image = MainData.GetInstance().GetFileImage(s) }); } } } }
// -------------------------------------------------------------------------------------------- private void OnClicked(object sender, EventSystemEventArgs e) { _onClicked?.Invoke(); }
// -------------------------------------------------------------------------------------------- private void OnPointerUp(object sender, EventSystemEventArgs e) { UnPress(); }
// -------------------------------------------------------------------------------------------- private void OnPointerDown(object sender, EventSystemEventArgs e) { Press(); }
// -------------------------------------------------------------------------------------------- private void OnPointerExit(object sender, EventSystemEventArgs e) { UnHighlight(); }