internal static void DrawSelectObjectEditor(IExpressionInspector inode) { var otypes = GetDerivedTypeInfo(typeof(UnityEngine.Object)); var typeName = inode.GetProperty <string>("type", null); var selectedTypeIndex = otypes.names.FindIndex(n => n == typeName); var typeLabel = selectedTypeIndex == -1 ? null : otypes.labels[selectedTypeIndex]; inode.DrawSelectionPopup("Type", typeLabel ?? "Select type...", otypes.labels, selectedIndex => inode.SetProperty("type", otypes.names[selectedIndex])); if (typeName != null) { if (selectedTypeIndex != -1) { var selectedType = otypes.types[selectedTypeIndex]; var properties = GetTypePropertyNames(selectedType); var propertyName = inode.GetProperty <string>("field", null); var propertyLabel = properties.FirstOrDefault(p => p.name == propertyName).label; inode.DrawSelectionPopup("Property", propertyLabel ?? "Select property...", properties.Select(p => p.label), selectedIndex => { inode.SetProperty("field", properties[selectedIndex].name); }); } } DrawMappedControl(inode); }
public static bool Draw(string selectType, IExpressionInspector inspector) { selectType = selectType.ToLowerInvariant(); if (s_SelectorDrawers.TryGetValue(selectType, out var handler)) { if (handler == null) { return(false); } handler(inspector); return(true); } foreach (var methodInfo in drawerMethods) { var attribute = (ExpressionSelectDrawerAttribute)methodInfo.GetCustomAttribute(typeof(ExpressionSelectDrawerAttribute)); if (!selectType.Equals(attribute.name, StringComparison.OrdinalIgnoreCase)) { continue; } handler = (ExpressionSelectDrawer)methodInfo.CreateDelegate(typeof(ExpressionSelectDrawer)); s_SelectorDrawers[selectType] = handler; handler(inspector); return(true); } s_SelectorDrawers[selectType] = null; return(false); }
private static void DrawMappedControl(IExpressionInspector m_Node) { EditorGUI.BeginChangeCheck(); var mapped = EditorGUILayout.Toggle("Mapped", m_Node.GetProperty(ExpressionKeyName.Mapped, false)); if (EditorGUI.EndChangeCheck()) { m_Node.SetProperty(ExpressionKeyName.Mapped, mapped); } }
internal static void DrawSelectReferencesEditor(IExpressionInspector m_Node) { var refPropertyType = m_Node.GetProperty("type", ""); var refDepth = m_Node.GetProperty("depth", 1); EditorGUI.BeginChangeCheck(); refPropertyType = EditorGUILayout.DelayedTextField("Type", refPropertyType); refDepth = EditorGUILayout.IntSlider("Depth", refDepth, 0, 9); if (EditorGUI.EndChangeCheck()) { m_Node.SetProperty("type", refPropertyType); m_Node.SetProperty("depth", refDepth); } }
internal static void DrawSelectComponentEditor(IExpressionInspector inode) { var ctypes = GetDerivedTypeInfo(typeof(Component)); var typeName = inode.GetProperty <string>("type", null); var selectedTypeIndex = ctypes.names.FindIndex(n => n == typeName); var typeLabel = selectedTypeIndex == -1 ? null : ctypes.labels[selectedTypeIndex]; inode.DrawSelectionPopup("Type", typeLabel ?? "Select type...", ctypes.labels, selectedIndex => inode.SetProperty("type", ctypes.names[selectedIndex])); if (typeName != null) { if (selectedTypeIndex != -1) { var selectedType = ctypes.types[selectedTypeIndex]; var properties = GetTypePropertyNames(selectedType); var propertyName = inode.GetProperty <string>("field", null); var propertyLabel = properties.FirstOrDefault(p => p.name == propertyName).label; inode.DrawSelectionPopup("Property", propertyLabel ?? "Select property...", properties.Select(p => p.label), selectedIndex => { inode.SetProperty("field", properties[selectedIndex].name); }); } } EditorGUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); var originalSource = EditorGUILayout.Toggle("Overrides", inode.GetProperty(ExpressionKeyName.Overrides, true)); if (EditorGUI.EndChangeCheck()) { inode.SetProperty(ExpressionKeyName.Overrides, originalSource); } DrawMappedControl(inode); EditorGUILayout.EndHorizontal(); }
internal static void DrawSelectAssetEditor(IExpressionInspector inspector) { DrawSelectObjectEditor(inspector); }
internal static void DrawSelectDefaultEditor(IExpressionInspector m_Node) { GUILayout.Space(40f); }