private void Launch() { _launched = true; var launchDirection = LaunchDirector.transform.position - transform.position; var ray = new Ray(transform.position, launchDirection); bool resetLaunch = true; RaycastHit hit; if (Physics.Raycast(ray, out hit, LaunchDistance)) { NodeBehaviour nodeObj = hit.transform.GetComponent <NodeBehaviour>(); if (nodeObj != null) { if (nodeObj.IsSelected) { if (nodeObj.IsOpen) { EnergizeNode(hit.transform.gameObject); CurrentSymbolData.ProcessUpdate(nodeObj._keyData); nodeObj.OnTravelTo(); resetLaunch = false; } } else { nodeObj.FlashWarningColor(); } } } if (resetLaunch) { _launched = false; } }