void HandleInput() { if (currentTerraform == TerraFormType.BUILD) //TODO: Change to something else, not conflicting with WASD { if (Input.GetKeyDown(KeyCode.A)) { direction--; if (direction <= -1) { direction = 3; } direction %= 4; } if (Input.GetKeyDown(KeyCode.D)) { direction++; if (direction <= -1) { direction = 3; } direction %= 4; } } didRelease = Input.GetMouseButtonUp(0); didPress = Input.GetMouseButtonDown(0); isDragging = Input.GetMouseButton(0); //Setup raycast Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; //Cast ray to see if we are interacting with terrain if (Physics.Raycast(ray, out hit, 2048f, terrainMask)) { currentPointerPos = GetHeightMapCoords(hit.point) + (IsTileOperation(currentTerraform) ? HalfTileSize() : Vector3.zero); currentTile = world.GetTileFromWorldPosition(currentPointerPos); if (didPress) { startPos = currentPointerPos; dragStartTile = currentTile; } if (didRelease) { dragStopTile = currentTile; } } if (currentTerraform == TerraFormType.NONE && Input.GetMouseButtonDown(0) && !eventSystem.IsPointerOverGameObject() && Physics.Raycast(ray, out hit, 2048f, buildingMask)) { var buildingScript = hit.collider.GetComponent <SimpleBuildingBehaviour>(); if (buildingScript != null) { buildingScript.HandleBuildingClicked(); OnBuildingClicked.Invoke(buildingScript); } } }