public Vector3[] GetWorldCorners(Transform transform, bool preferColliders) { Bounds bounds = new Bounds(); bool worldSpaceBounds = false; Collider collider = null; Collider2D collider2D = null; if (preferColliders) { collider = transform.GetComponent <Collider>(); collider2D = transform.GetComponent <Collider2D>(); } if (preferColliders && collider != null) { bounds = collider.bounds; worldSpaceBounds = true; } else if (preferColliders && collider2D != null) { bounds = collider2D.bounds; worldSpaceBounds = true; } else if (state.context.type == ContextType.Canvas && transform.GetComponent <RectTransform>() != null) { Vector3[] corners = new Vector3[4]; transform.GetComponent <RectTransform>().GetWorldCorners(corners); return(corners); } else if (state.context.type == ContextType.NGUI && ngui.HasWidget(transform.gameObject)) { bounds = ngui.GetBounds(transform.gameObject); } else { Renderer renderer = transform.GetComponent <Renderer>(); if (renderer != null) { bounds = renderer.bounds; worldSpaceBounds = true; } else { Vector3[] corners = new Vector3[4]; for (int i = 0; i < 4; i++) { corners[i] = transform.position; } return(corners); } } return(GetCorners(transform, bounds, worldSpaceBounds)); }