private void ScaleGameObject(GameObject myGameObject)
        {
            Transform[] children = DetachReattach.DetachChildren(myGameObject);

            // scale to fit
            Bounds bounds = myGameObject.GetComponent <MeshFilter>().mesh.bounds;
            float  x      = bounds.size.x;
            float  y      = bounds.size.y;
            float  z      = bounds.size.z;
            float  max    = x;

            if (y > max)
            {
                max = y;
            }
            if (z > max)
            {
                max = z;
            }

            float newScale = Ratio.SolveForD(max, 1f, height);

            myGameObject.transform.localScale = new Vector3(newScale, newScale, newScale);

            DetachReattach.ReattachChildren(children, myGameObject);
        }
Exemplo n.º 2
0
        protected virtual void OnTransformChildrenChanged()
        {
#if UNITY_EDITOR
            if (EditorApplication.isPlaying)
            {
                return;
            }
#endif
            if (!DetachReattach.DetachInProgress(gameObject))
            {
                dirty = true;
            }
        }
Exemplo n.º 3
0
        public void Resize()
        {
#if UNITY_EDITOR
            Undo.SetCurrentGroupName("PanelContainer Resize");
            int group = Undo.GetCurrentGroup();
#endif

            CalculateBounds();

            float maxWidth  = bounds.size.x;
            float maxHeight = bounds.size.y;

#if UNITY_EDITOR
            for (int i = 0; i < gameObject.transform.childCount; i++)
            {
                Undo.RecordObject(gameObject.transform.GetChild(i), "Resize Child");
            }
#endif

            Transform[] children = DetachReattach.DetachChildren(gameObject);

#if UNITY_EDITOR
            Undo.RecordObject(transform, "Resize Panel");
#endif

            PanelUtils.PanelResizeWidth  panelResizeWidth  = PanelUtils.ResizeWidth(gameObject, maxWidth, 0);
            PanelUtils.PanelResizeHeight panelResizeHeight = PanelUtils.ResizeHeight(gameObject, maxHeight, 0);
            if (panelResizeWidth.xScale > 0 && panelResizeHeight.yScale > 0)
            {
                transform.localScale = new Vector3(panelResizeWidth.xScale, panelResizeHeight.yScale, transform.localScale.z);
            }

            DetachReattach.ReattachChildren(children, gameObject);

            transform.position = transform.position + transform.right * panelResizeWidth.xOffset + transform.up * panelResizeHeight.yOffset;

#if UNITY_EDITOR
            Undo.CollapseUndoOperations(group);
#endif

            dirty = false;
        }