示例#1
0
        private void RenderNewVariableSection()
        {
            EditorGUILayout.LabelField("New Variable");

            EditorGUI.indentLevel += 2;

            newVariableName = EditorGUILayout.TextField("Name: ", newVariableName);

            Rect controlRect = EditorGUILayout.GetControlRect();

            newVariableType = TypeReferencePropertyDrawer.DrawTypeSelectionControl(controlRect,
                                                                                   typeWindowContent, newVariableType, newVariableTypeFilter);

            EditorGUILayout.BeginHorizontal();

            GUILayout.FlexibleSpace();

            if (GUILayout.Button("Cancel", GUILayout.MinWidth(100f)))
            {
                ResetNewVariableSection();
            }

            if (GUILayout.Button("Add", GUILayout.MinWidth(100f)) && AddAction != null)
            {
                Type selectionAsType = Type.GetType(newVariableType);
                AddAction(newVariableName, selectionAsType);
                serializedVariables.SerializedContainer.Update();
                ResetNewVariableSection();
            }

            EditorGUILayout.EndHorizontal();

            EditorGUI.indentLevel -= 2;
        }
        /// <summary>
        /// Displays the drop down box for the type to be displayed
        /// </summary>
        /// <param name="position">The position to render this at. It is ref so
        /// that it can be adjusted to exclude the used area</param>
        /// <param name="label">The label to be displayed</param>
        /// <param name="currentSelection">The current selection</param>
        /// <returns>The selected item</returns>
        protected string RenderTypeSelection(ref Rect position, GUIContent label, string currentSelection)
        {
            Type   interfaceType       = typeof(InterfaceType);
            string interfaceTypeString = interfaceType.FullName;

            Rect drawRect = new Rect(position)
            {
                height = EditorGUIUtility.singleLineHeight
            };

            position.yMin += drawRect.height;

            string selection = TypeReferencePropertyDrawer.DrawTypeSelectionControl(drawRect, label,
                                                                                    currentSelection, new ClassImplementsAttribute(interfaceType));

            return(selection);
        }
        private void RenderTypeSelection()
        {
            if (sceneHunterTypeFilter == null)
            {
                return;
            }

            string previousSelection = selectedSceneHunterType;

            Rect controlRect = EditorGUILayout.GetControlRect();

            selectedSceneHunterType = TypeReferencePropertyDrawer.DrawTypeSelectionControl(
                controlRect, typeWindowContent, selectedSceneHunterType, sceneHunterTypeFilter);

            if (previousSelection != selectedSceneHunterType)
            {
                ChangeScenePopulator();
            }
        }
        private void RenderCodeParameter(CodeGenerationParameter parameter)
        {
            System.Object existingValue;

            parameterValues.TryGetValue(parameter.Identifier, out existingValue);

            string displayName = ObjectNames.NicifyVariableName(parameter.Identifier);

            System.Object newValue = null;

            switch (parameter.ParameterType)
            {
            case "int":
                int intValue = existingValue == null ? 0 : (int)existingValue;

                intValue = EditorGUILayout.IntField(displayName, intValue);

                parameterValues[parameter.Identifier] = intValue;
                newValue = intValue;
                break;

            case "string":
                string stringValue = existingValue == null ? string.Empty : (string)existingValue;

                stringValue = EditorGUILayout.TextField(displayName, stringValue);

                parameterValues[parameter.Identifier] = stringValue;
                newValue = stringValue;
                break;

            case "float":
                float floatValue = existingValue == null ? 0f : (float)existingValue;

                floatValue = EditorGUILayout.FloatField(displayName, floatValue);

                parameterValues[parameter.Identifier] = floatValue;
                newValue = floatValue;
                break;

            case "double":
                double doubleValue = existingValue == null ? 0 : (double)existingValue;

                doubleValue = EditorGUILayout.DoubleField(displayName, doubleValue);

                parameterValues[parameter.Identifier] = doubleValue;
                newValue = doubleValue;
                break;

            case "type":
                Type typeValue = existingValue as Type;

                string currentSelection = typeValue == null ? "" : typeValue.AssemblyQualifiedName;

                Rect typeRect = EditorGUILayout.GetControlRect();

                string selection = TypeReferencePropertyDrawer.DrawTypeSelectionControl(typeRect,
                                                                                        new GUIContent(displayName), currentSelection, typeDropdownFilter);

                typeValue = Type.GetType(selection);

                parameterValues[parameter.Identifier] = typeValue;
                newValue = typeValue;
                break;

            default:
                Debug.LogError(parameter.ParameterType + " is not a supported input type");
                break;
            }

            if (newValue != null && newValue.Equals(existingValue))
            {
                RefreshReplacementString();
            }
        }