private void DataGridCell_MouseDoubleClick(object sender, MouseButtonEventArgs e) { if (!_excelItemChoosed.IsEditing) { return; } DataGridCell cell = sender as DataGridCell; DataGridRow row = WPFHelper.GetParentObject <DataGridRow>(cell, null); PropertyListItem itemSource = row.Item as PropertyListItem; string branchName; for (int i = 0; i < GlobalCfg.BranchCount; i++) { branchName = Enum.GetName(typeof(Branch), i); if ((string)(cell.Column.Header) == branchName && itemSource.EnName != "id" && itemSource.EnName != "ID") { PropertyEditWindow propertyEditWindow = new PropertyEditWindow(itemSource, _IDItemSelected.ID, i); propertyEditWindow.ShowDialog(); break; } } }
void ExtrusionUI() { LevelSegment segment = (LevelSegment)target; showProperties = EditorGUILayout.Foldout(showProperties, "Objects (" + segment.objectProperties.Length + ")"); if (showProperties) { GUI.color = Color.clear; GUILayout.Box("", GUILayout.Width(Screen.width - 50)); GUI.color = Color.white; if (searchField == null) { searchField = new UnityEditor.IMGUI.Controls.SearchField(); } string lastFilter = propertyFilter; propertyFilter = searchField.OnGUI(GUILayoutUtility.GetLastRect(), propertyFilter); if (lastFilter != propertyFilter) { List <PropertyBinder> found = new List <PropertyBinder>(); for (int i = 0; i < segment.objectProperties.Length; i++) { if (segment.objectProperties[i].transform.name.ToLower().Contains(propertyFilter.ToLower())) { found.Add(new PropertyBinder(i, segment.objectProperties[i].transform.name)); } } properties = found.ToArray(); } else if (propertyFilter == "") { if (properties.Length != segment.objectProperties.Length) { properties = new PropertyBinder[segment.objectProperties.Length]; } for (int i = 0; i < segment.objectProperties.Length; i++) { if (properties[i] == null) { properties[i] = new PropertyBinder(i, segment.objectProperties[i].transform.name); } else { properties[i].name = segment.objectProperties[i].transform.name; properties[i].index = i; } } } if (selectedProperties.Count > 0) { if (propertyWindow == null) { propertyWindow = EditorWindow.GetWindow <PropertyEditWindow>(true); propertyWindow.segment = segment; propertyWindow.selectedProperties = selectedProperties; EditorWindow inspectorWindow = GetWindowByName("UnityEditor.InspectorWindow"); if (inspectorWindow != null) { propertyWindow.Init(new Vector2(inspectorWindow.position.x, inspectorWindow.position.y + 250)); } else { propertyWindow.Init(new Vector2(2560 - Screen.width, 1080 / 2)); } } } ObjectPropertiesUI(properties, segment.objectProperties); if (selectedProperties.Count > 0) { if (Event.current.type == EventType.KeyDown) { if (Event.current.keyCode == KeyCode.DownArrow) { if (selectedProperties.Count > 1) { int temp = selectedProperties[selectedProperties.Count - 1]; selectedProperties.Clear(); selectedProperties.Add(temp); } selectedProperties[0]++; } if (Event.current.keyCode == KeyCode.UpArrow) { if (selectedProperties.Count > 1) { int temp = selectedProperties[0]; selectedProperties.Clear(); selectedProperties.Add(temp); } selectedProperties[0]--; } if (selectedProperties[0] < 0) { selectedProperties[0] = 0; } if (selectedProperties[0] >= segment.objectProperties.Length) { selectedProperties[0] = segment.objectProperties.Length - 1; } Repaint(); if (propertyWindow != null) { propertyWindow.Repaint(); } SceneView.RepaintAll(); Event.current.Use(); } } else if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Space) { selectedProperties.Clear(); selectedProperties.Add(0); } GUI.color = Color.white; } }