Beispiel #1
0
        private void OnSceneGUI()
        {
            SortingMap _target = (SortingMap)target;

            GUIStyle style = new GUIStyle();

            style.normal.textColor  = Color.white;
            style.normal.background = Resource.GreyTexture;

            for (int i = 0; i < _target.sortingAreas.Count; i++)
            {
                Vector3 newPosition = _target.GetAreaPosition(i);
                newPosition = Handles.PositionHandle(newPosition, Quaternion.identity);
                _target.sortingAreas [i].z = (newPosition - _target.transform.position).magnitude / _target.transform.forward.magnitude;

                Vector3 midPoint = _target.transform.position;
                if (i == 0)
                {
                    midPoint += _target.transform.forward * _target.sortingAreas [i].z / 2f;
                }
                else
                {
                    midPoint += _target.transform.forward * (_target.sortingAreas [i].z + _target.sortingAreas [i - 1].z) / 2f;
                }

                string label = (_target.mapType == SortingMapType.OrderInLayer) ? _target.sortingAreas [i].order.ToString() : _target.sortingAreas [i].layer;

                Handles.Label(midPoint, label, style);
            }

            UnityVersionHandler.CustomSetDirty(_target);
        }
Beispiel #2
0
        private void OnSceneGUI()
        {
            SortingMap _target = (SortingMap)target;

            for (int i = 0; i < _target.sortingAreas.Count; i++)
            {
                Vector3 newPosition = _target.GetAreaPosition(i);
                newPosition = Handles.PositionHandle(newPosition, Quaternion.identity);
                _target.sortingAreas [i].z = (newPosition - _target.transform.position).magnitude / _target.transform.forward.magnitude;

                Vector3 midPoint = _target.transform.position;
                if (i == 0)
                {
                    midPoint += _target.transform.forward * _target.sortingAreas [i].z / 2f;
                }
                else
                {
                    midPoint += _target.transform.forward * (_target.sortingAreas [i].z + _target.sortingAreas [i - 1].z) / 2f;
                }
                if (_target.mapType == SortingMapType.OrderInLayer)
                {
                    Handles.Label(midPoint, _target.sortingAreas [i].order.ToString());
                }
                else
                {
                    Handles.Label(midPoint, _target.sortingAreas [i].layer);
                }
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(_target);
            }
        }
        private void UpdateRenderers()
        {
                        #if UNITY_EDITOR
            if (!Application.isPlaying && livePreview)
            {
                UpdateSortingMap();
            }
                        #endif

            if (lockSorting || sortingMap == null || _renderer == null)
            {
                return;
            }

                        #if UNITY_EDITOR
            if (!Application.isPlaying && !livePreview && sortingMap != null && sortingMap.affectScale)
            {
                if (GetComponentInParent <Char>() != null && GetComponentInParent <Char>().spriteChild != null)
                {
                    GetComponentInParent <Char>().transform.localScale = Vector3.one;
                    return;
                }
            }
                        #endif

            sortingMap.UpdateSimilarFollowers(this);

            if (sortingMap.sortingAreas.Count > 0)
            {
                // Set initial value as below the last line
                if (sortingMap.mapType == SortingMapType.OrderInLayer)
                {
                    sortingOrder       = sortingMap.sortingAreas [sortingMap.sortingAreas.Count - 1].order;
                    sortingOrderString = sortingOrder.ToString();
                }
                else if (sortingMap.mapType == SortingMapType.SortingLayer)
                {
                    sortingLayer = sortingMap.sortingAreas [sortingMap.sortingAreas.Count - 1].layer;
                }

                for (int i = 0; i < sortingMap.sortingAreas.Count; i++)
                {
                    // Determine angle between SortingMap's normal and relative position - if <90, must be "behind" the plane
                    if (Vector3.Angle(sortingMap.transform.forward, sortingMap.GetAreaPosition(i) - transform.position) < 90f)
                    {
                        if (sortingMap.mapType == SortingMapType.OrderInLayer)
                        {
                            sortingOrder       = sortingMap.sortingAreas [i].order;
                            sortingOrderString = sortingOrder.ToString();
                        }
                        else if (sortingMap.mapType == SortingMapType.SortingLayer)
                        {
                            sortingLayer = sortingMap.sortingAreas [i].layer;
                        }
                        break;
                    }
                }
            }

                        #if UNITY_EDITOR
            if (!Application.isPlaying && livePreview && GetComponentInParent <Char>() != null && GetComponentInParent <Char>().spriteChild != null && sortingMap != null)
            {
                float localScale = GetLocalScale();
                if (localScale != 0f)
                {
                    GetComponentInParent <Char>().transform.localScale = Vector3.one * localScale;
                }
            }
                        #endif

            if (!affectChildren)
            {
                if (sortingMap.mapType == SortingMapType.OrderInLayer)
                {
                    _renderer.sortingOrder = sortingOrder;

                    if (offsetOriginal && offsets.Count > 0)
                    {
                        _renderer.sortingOrder += offsets[0];
                    }
                }
                else if (sortingMap.mapType == SortingMapType.SortingLayer)
                {
                    _renderer.sortingLayerName = sortingLayer;

                    if (offsetOriginal && offsets.Count > 0)
                    {
                        _renderer.sortingOrder = offsets[0];
                    }
                    else
                    {
                        _renderer.sortingOrder = 0;
                    }
                }

                return;
            }

            for (int i = 0; i < renderers.Length; i++)
            {
                if (sortingMap.mapType == SortingMapType.OrderInLayer)
                {
                    renderers[i].sortingOrder = sortingOrder;

                    if (offsetOriginal && offsets.Count > i)
                    {
                        renderers[i].sortingOrder += offsets[i];
                    }
                }
                else if (sortingMap.mapType == SortingMapType.SortingLayer)
                {
                    renderers[i].sortingLayerName = sortingLayer;

                    if (offsetOriginal && offsets.Count > i)
                    {
                        renderers[i].sortingOrder = offsets[i];
                    }
                    else
                    {
                        renderers[i].sortingOrder = 0;
                    }
                }
            }
        }
        protected void UpdateRenderers()
        {
                        #if UNITY_EDITOR
            if (!Application.isPlaying && livePreview)
            {
                UpdateSortingMap();
            }
                        #endif

            if (lockSorting || sortingMap == null)
            {
                return;
            }

            if (sortingGroup == null)
            {
                if (affectChildren)
                {
                    if (renderers == null || renderers.Length == 0)
                    {
                        return;
                    }
                }
                else
                {
                    if (_renderer == null)
                    {
                        return;
                    }
                }
            }

            if (sortingMap.sortingAreas.Count > 0)
            {
                // Set initial value as below the last line
                if (sortingMap.mapType == SortingMapType.OrderInLayer)
                {
                    sortingOrder = sortingMap.sortingAreas [sortingMap.sortingAreas.Count - 1].order;
                }
                else if (sortingMap.mapType == SortingMapType.SortingLayer)
                {
                    sortingLayer = sortingMap.sortingAreas [sortingMap.sortingAreas.Count - 1].layer;
                }

                for (int i = 0; i < sortingMap.sortingAreas.Count; i++)
                {
                    // Determine angle between SortingMap's normal and relative position - if <90, must be "behind" the plane
                    if (Vector3.Angle(sortingMap.transform.forward, sortingMap.GetAreaPosition(i) - transform.position) < 90f)
                    {
                        if (sortingMap.mapType == SortingMapType.OrderInLayer)
                        {
                            sortingOrder = sortingMap.sortingAreas [i].order;
                        }
                        else if (sortingMap.mapType == SortingMapType.SortingLayer)
                        {
                            sortingLayer = sortingMap.sortingAreas [i].layer;
                        }
                        break;
                    }
                }
            }

                        #if UNITY_EDITOR
            Char _char = GetComponentInParent <Char>();
            if (!Application.isPlaying && livePreview && _char != null && _char.spriteChild != null && sortingMap != null)
            {
                float localScale = GetLocalScale();
                if (!Mathf.Approximately(localScale, 0f))
                {
                    _char.transform.localScale = Vector3.one * localScale;
                }
            }

            if (!Application.isPlaying && !livePreview)
            {
                return;
            }

            if (sortingGroup == null)
            {
                sortingGroup = GetComponentInChildren <SortingGroup>();
            }
                        #endif

            if (sortingGroup != null)
            {
                switch (sortingMap.mapType)
                {
                case SortingMapType.OrderInLayer:
                    sortingGroup.sortingOrder = sortingOrder;
                    break;

                case SortingMapType.SortingLayer:
                    sortingGroup.sortingLayerName = sortingLayer;
                    break;
                }
                return;
            }

            if (!affectChildren)
            {
                switch (sortingMap.mapType)
                {
                case SortingMapType.OrderInLayer:
                {
                    _renderer.sortingOrder = sortingOrder;

                    if (offsetOriginal && offsets.Count > 0)
                    {
                        _renderer.sortingOrder += offsets[0];
                    }
                    break;
                }

                case SortingMapType.SortingLayer:
                {
                    _renderer.sortingLayerName = sortingLayer;

                    if (offsetOriginal && offsets.Count > 0)
                    {
                        _renderer.sortingOrder = offsets[0];
                    }
                    else
                    {
                        _renderer.sortingOrder = 0;
                    }

                    break;
                }
                }
                return;
            }

            for (int i = 0; i < renderers.Length; i++)
            {
                switch (sortingMap.mapType)
                {
                case SortingMapType.OrderInLayer:
                {
                    renderers[i].sortingOrder = sortingOrder;
                    if (offsetOriginal && offsets.Count > i)
                    {
                        renderers[i].sortingOrder += offsets[i];
                    }
                    break;
                }

                case SortingMapType.SortingLayer:
                {
                    renderers[i].sortingLayerName = sortingLayer;

                    if (offsetOriginal && offsets.Count > i)
                    {
                        renderers[i].sortingOrder = offsets[i];
                    }
                    else
                    {
                        renderers[i].sortingOrder = 0;
                    }
                    break;
                }
                }
            }
        }