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); }
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; } } } }