private void MouseEvents() { RaycastHit hit; if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit)) { LaserLabObject target = hit.collider.GetComponent <LaserLabObject>(); if (target != null) { if (target != previousHover) { if (previousHover != null) { previousHover.OnHoverExit(); } target.OnHoverEnter(); previousHover = target; } if (target is BoardObject) { BoardObject boardObject = target as BoardObject; Vector2Int pos = boardObject.getPos(); if (Input.GetMouseButtonDown(0)) { if (boardObject.CanRotate) { boardObject.Rotate(); CalculateLaserPaths(); audioPlayer.PlayClip(rotateSound); } else { audioPlayer.PlayClip(dropSound); } SelectObject(-1); } else if (Input.GetMouseButtonDown(1)) { if (boardObject.CanMove) { boardObject.Pickup(); level.board.SetBoardObject(pos, null); AddToUnplaced(boardObject); audioPlayer.PlayClip(pickupSound); } else { SelectObject(-1); audioPlayer.PlayClip(dropSound); } } if (selectedObjectIndex > -1) { SelectedObject.SetPreview(false); } } else if (target is FloorTile) { FloorTile floor = target as FloorTile; Vector2Int pos = floor.getPos(); if (Input.GetMouseButtonDown(0)) { if (!level.board.GetBoardObject(pos) && selectedObjectIndex != -1) { Place(pos); audioPlayer.PlayClip(placeSound); } else { SelectObject(-1); } } else if (Input.GetMouseButtonDown(1)) { audioPlayer.PlayClip(dropSound); SelectObject(-1); } if (selectedObjectIndex > -1) { if (level.board.GetBoardObject(pos)) { SelectedObject.SetPreview(false); } else { SelectedObject.SetPreview(true); SelectedObject.Move(pos); } } } else if (target is WallObject) { WallObject wall = target as WallObject; Vector2Int pos = wall.getPos(); if ((Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) && selectedObjectIndex > -1) { audioPlayer.PlayClip(dropSound); SelectObject(-1); } if (selectedObjectIndex > -1) { SelectedObject.SetPreview(false); } } } else { if (previousHover != null) { previousHover.OnHoverExit(); previousHover = null; } if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) { SelectObject(-1); audioPlayer.PlayClip(dropSound); } if (selectedObjectIndex > -1) { SelectedObject.SetPreview(false); } } } else { if (previousHover != null) { previousHover.OnHoverExit(); previousHover = null; } if (selectedObjectIndex > -1) { SelectedObject.SetPreview(false); } if (Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1)) { SelectObject(-1); } } }