Esempio n. 1
0
        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));
        }