void TryPinning() { //Do a raycast to see what kind of object is being hit. PointerEventData pointerData = new PointerEventData(EventSystem.current); pointerData.position = Input.mousePosition; List <RaycastResult> raycastResults = new List <RaycastResult>(); EventSystem.current.RaycastAll(pointerData, raycastResults); //print("raycastResults.Count: " + raycastResults.Count); foreach (var obj in raycastResults) { if ((CursorMode == DetectiveCursorMode.Idle && obj.gameObject.tag == "DWall_Pins") || obj.gameObject.tag == "DWall_QuitButton") { return; } } if (CursorMode != DetectiveCursorMode.Pinning) { //print("Start"); GameObject pinStringGo = Instantiate(pinStringPf, Input.mousePosition, Quaternion.identity, detectiveWallCanvasGroup.transform) as GameObject; activePinStringGrp = pinStringGo.GetComponent <PingString>(); activePinStringGrp.BeginPlacement(this); CursorMode = DetectiveCursorMode.Pinning; } else if (CursorMode == DetectiveCursorMode.Pinning && activePinStringGrp != null) { //print("Finished"); activePinStringGrp.FinishPlacement(); activePinStringGrp = null; CursorMode = DetectiveCursorMode.Idle; } }