internal static SelectionRenderState GetSelectionRenderState() { #if UNITY_5_3 || UNITY_5_4 return(SelectionRenderState.Wireframe); #else bool wireframe = false, outline = false; try { wireframe = (bool)ReflectionUtility.GetValue(null, "UnityEditor.AnnotationUtility", "showSelectionWire"); outline = (bool)ReflectionUtility.GetValue(null, "UnityEditor.AnnotationUtility", "showSelectionOutline"); } catch { Debug.LogWarning("Looks like Unity changed the AnnotationUtility \"showSelectionOutline\"\nPlease email [email protected] and let Karl know!"); } SelectionRenderState state = SelectionRenderState.None; if (wireframe) { state |= SelectionRenderState.Wireframe; } if (outline) { state |= SelectionRenderState.Outline; } return(state); #endif }
void OnEnable() { if (EditorApplication.isPlayingOrWillChangePlaymode) { return; } m_Mesh = (ProBuilderMesh)target; if (!m_Mesh) { return; } m_GameObjectsSerializedObject = new SerializedObject(serializedObject.targetObjects.Select(t => ((Component)t).gameObject).ToArray()); m_UnwrapParameters = serializedObject.FindProperty("m_UnwrapParameters"); m_StaticEditorFlags = m_GameObjectsSerializedObject.FindProperty("m_StaticEditorFlags"); m_MeshRenderer = m_Mesh.gameObject.GetComponent <Renderer>(); SelectionRenderState s = EditorUtility.GetSelectionRenderState(); EditorUtility.SetSelectionRenderState(m_MeshRenderer, editor != null ? s & SelectionRenderState.Outline : s); foreach (var mesh in Selection.transforms.GetComponents <ProBuilderMesh>()) { EditorUtility.SynchronizeWithMeshFilter(mesh); } VertexManipulationTool.beforeMeshModification += OnBeginMeshModification; VertexManipulationTool.afterMeshModification += OnFinishMeshModification; }
/// <summary> /// Set the selected render state for an object. In Unity 5.4 and lower, this just toggles wireframe on or off. /// </summary> /// <param name="renderer">Renderer to change selection state</param> /// <param name="state">State to be set</param> internal static void SetSelectionRenderState(Renderer renderer, SelectionRenderState state) { #if UNITY_5_3 || UNITY_5_4 EditorUtility.SetSelectedWireframeHidden(renderer, state == 0); #else EditorUtility.SetSelectedRenderState(renderer, (EditorSelectedRenderState)state); #endif }
/// <summary> /// Set the selected render state for an object. In Unity 5.4 and lower, this just toggles wireframe on or off. /// </summary> /// <param name="renderer"></param> /// <param name="state"></param> internal static void SetSelectionRenderState(Renderer renderer, SelectionRenderState state) { UnityEditor.EditorUtility.SetSelectedRenderState(renderer, (EditorSelectedRenderState)state); }