void BuildRaycast() { Ray ray = cam.ScreenPointToRay(Input.mousePosition); RaycastHit hitInfo; if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, groundLayerMask)) { groundPos = hitInfo.point; SelectedNodes = GridTransform.GetNodes( groundPos, NowObjectToBuild.Dimensions.x, NowObjectToBuild.Dimensions.y, GetRotation().eulerAngles.y); if (OldNodes == null) { OldNodes = SelectedNodes; } if (SelectedNodes != null) { if (SelectedNodes != OldNodes) { highlight.Enable(); } Node aNode = SelectedNodes.First(); Node bNode = SelectedNodes.Last(); Quaternion rotation = GetRotation(); if (aNode != null && bNode != null) { Vector3 position = GridTransform.CenterVector3FromCoords(aNode.coords, bNode.coords); if (!GridTransform.IsBlocked(SelectedNodes, NowObjectToBuild.ObjType)) { highlight.PlaceHighlight(position, rotation); } else { highlight.PlaceHighlight(position, rotation, blockedMaterial); } } else { highlight.Disable(); } OldNodes = SelectedNodes; } } else { SelectedNodes = null; highlight.Disable(); } }