protected virtual void OnGUI() { if (m_windowInformation == null) { m_windowInformation = new RopeCreatorWindowInformation(); } EditorGUILayout.BeginHorizontal(); bool v_refreshClicked = GUILayout.Button("Refresh Informations"); EditorGUILayout.EndHorizontal(); if (v_refreshClicked) { Refresh(); } EditorGUILayout.BeginHorizontal(); m_windowInformation.RopeParent = (Transform)EditorGUILayout.ObjectField("Rope Parent", m_windowInformation.RopeParent, typeof(Transform), true); EditorGUILayout.EndHorizontal(); if (m_windowInformation.Ropes != null) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Ropes"); m_windowInformation.SelectedRopeIndex = EditorGUILayout.Popup(m_windowInformation.SelectedRopeIndex, m_windowInformation.Ropes.GetStringList().ToArray()); Rope2D v_rope = m_windowInformation.Ropes != null && m_windowInformation.SelectedRopeIndex >= 0 && m_windowInformation.Ropes.Count > m_windowInformation.SelectedRopeIndex? m_windowInformation.Ropes[m_windowInformation.SelectedRopeIndex] : null; if (m_windowInformation.Rope != v_rope) { m_windowInformation.Rope = v_rope; if (v_rope != null) { m_windowInformation.RopeDepth = v_rope.RopeDepth; m_windowInformation.CustomPrefabNode = v_rope.CustomNodePrefab; } } EditorGUILayout.EndHorizontal(); } if (m_windowInformation.Rope != null) { EditorGUILayout.BeginHorizontal(); m_windowInformation.ObjectA = (GameObject)EditorGUILayout.ObjectField("Object A", m_windowInformation.ObjectA, typeof(GameObject), true); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); m_windowInformation.ObjectB = (GameObject)EditorGUILayout.ObjectField("Object B", m_windowInformation.ObjectB, typeof(GameObject), true); EditorGUILayout.EndHorizontal(); //Sorting Layer string[] v_sortingLayers = GetSortingLayerNames(); int v_sortingIndex = EditorGUILayout.Popup("Rope Sorting Layer", GetObjectIndexInArrayOrStrings(v_sortingLayers, m_windowInformation.RopeSortingLayerName), v_sortingLayers); m_windowInformation.RopeSortingLayerName = v_sortingLayers.Length > v_sortingIndex && v_sortingIndex >= 0? v_sortingLayers[v_sortingIndex] : "Default"; m_windowInformation.RopeDepth = EditorGUILayout.IntField("Rope Z Order", m_windowInformation.RopeDepth); m_windowInformation.CustomPrefabNode = EditorGUILayout.ObjectField("Custom Node Prefab", m_windowInformation.CustomPrefabNode, typeof(GameObject), false) as GameObject; if (m_windowInformation.ObjectA != null && m_windowInformation.ObjectB != null) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Automatic Calculate Amount of Nodes"); m_windowInformation.AutomaticCalculateNodes = EditorGUILayout.BeginToggleGroup("", m_windowInformation.AutomaticCalculateNodes); EditorGUILayout.EndToggleGroup(); EditorGUILayout.EndHorizontal(); if (!m_windowInformation.AutomaticCalculateNodes) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Amount of Nodes"); m_windowInformation.AmountOfNodes = EditorGUILayout.IntField(m_windowInformation.AmountOfNodes); EditorGUILayout.EndHorizontal(); } EditorGUILayout.BeginHorizontal(); GUILayout.Label("Use Prefab Rope Scale"); m_windowInformation.UsePrefabRopeScale = EditorGUILayout.BeginToggleGroup("", m_windowInformation.UsePrefabRopeScale); EditorGUILayout.EndToggleGroup(); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); bool v_buttonClicked = GUILayout.Button("Create Rope"); EditorGUILayout.EndHorizontal(); if (v_buttonClicked) { CreateRopeClicked(); } } } if (GUI.changed) { EditorUtility.SetDirty(this); } }
protected virtual void OnGUI () { if(m_windowInformation == null) m_windowInformation = new RopeCreatorWindowInformation(); EditorGUILayout.BeginHorizontal(); bool v_refreshClicked = GUILayout.Button("Refresh Informations"); EditorGUILayout.EndHorizontal (); if(v_refreshClicked) Refresh(); EditorGUILayout.BeginHorizontal(); m_windowInformation.RopeParent = (Transform)EditorGUILayout.ObjectField ("Rope Parent", m_windowInformation.RopeParent, typeof(Transform), true); EditorGUILayout.EndHorizontal (); if(m_windowInformation.Ropes != null) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Ropes"); m_windowInformation.SelectedRopeIndex = EditorGUILayout.Popup(m_windowInformation.SelectedRopeIndex, m_windowInformation.Ropes.GetStringList().ToArray()); Rope2D v_rope = m_windowInformation.Ropes != null && m_windowInformation.SelectedRopeIndex >=0 && m_windowInformation.Ropes.Count > m_windowInformation.SelectedRopeIndex? m_windowInformation.Ropes[m_windowInformation.SelectedRopeIndex] : null; if(m_windowInformation.Rope != v_rope) { m_windowInformation.Rope = v_rope; if(v_rope != null) { m_windowInformation.RopeDepth = v_rope.RopeDepth; m_windowInformation.CustomPrefabNode = v_rope.CustomNodePrefab; } } EditorGUILayout.EndHorizontal (); } if(m_windowInformation.Rope != null) { EditorGUILayout.BeginHorizontal(); m_windowInformation.ObjectA = (GameObject)EditorGUILayout.ObjectField ("Object A", m_windowInformation.ObjectA, typeof(GameObject), true); EditorGUILayout.EndHorizontal (); EditorGUILayout.BeginHorizontal(); m_windowInformation.ObjectB = (GameObject)EditorGUILayout.ObjectField ("Object B", m_windowInformation.ObjectB, typeof(GameObject), true); EditorGUILayout.EndHorizontal (); //Sorting Layer string[] v_sortingLayers = GetSortingLayerNames(); int v_sortingIndex = EditorGUILayout.Popup("Rope Sorting Layer", GetObjectIndexInArrayOrStrings(v_sortingLayers, m_windowInformation.RopeSortingLayerName), v_sortingLayers); m_windowInformation.RopeSortingLayerName = v_sortingLayers.Length > v_sortingIndex && v_sortingIndex >=0? v_sortingLayers[v_sortingIndex] : "Default"; m_windowInformation.RopeDepth = EditorGUILayout.IntField("Rope Z Order", m_windowInformation.RopeDepth); m_windowInformation.CustomPrefabNode = EditorGUILayout.ObjectField("Custom Node Prefab", m_windowInformation.CustomPrefabNode, typeof(GameObject), false) as GameObject; if(m_windowInformation.ObjectA != null && m_windowInformation.ObjectB != null) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Automatic Calculate Amount of Nodes"); m_windowInformation.AutomaticCalculateNodes = EditorGUILayout.BeginToggleGroup("", m_windowInformation.AutomaticCalculateNodes); EditorGUILayout.EndToggleGroup(); EditorGUILayout.EndHorizontal (); if(!m_windowInformation.AutomaticCalculateNodes) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Amount of Nodes"); m_windowInformation.AmountOfNodes = EditorGUILayout.IntField(m_windowInformation.AmountOfNodes); EditorGUILayout.EndHorizontal (); } EditorGUILayout.BeginHorizontal(); GUILayout.Label("Use Prefab Rope Scale"); m_windowInformation.UsePrefabRopeScale = EditorGUILayout.BeginToggleGroup("", m_windowInformation.UsePrefabRopeScale); EditorGUILayout.EndToggleGroup(); EditorGUILayout.EndHorizontal (); EditorGUILayout.BeginHorizontal(); bool v_buttonClicked = GUILayout.Button("Create Rope"); EditorGUILayout.EndHorizontal (); if(v_buttonClicked) CreateRopeClicked(); } } if(GUI.changed) EditorUtility.SetDirty(this); }