Example #1
0
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        CheckAndCreateSubEditors(friendShip.friendShipCondition);

        EditorGUILayout.PropertyField(friendlyProperty);

        for (int i = 0; i < subEditors.Length; i++)
        {
            subEditors[i].OnInspectorGUI();
            EditorGUILayout.Space();
        }

        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Add Collection", GUILayout.Width(collectionButtonWidth)))
        {
            FriendShipCondition newCollection = FriendShipConditionEditor.CreateConditionCollection();
            friendShipConditionProperty.AddToObjectArray(newCollection);
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();;

        serializedObject.ApplyModifiedProperties();
    }
Example #2
0
    protected override void DrawReaction()
    {
        serializedObject.Update();

        CheckAndCreateSubEditors(interactableCallback.conditionCollectionsText);

        for (int i = 0; i < subEditors.Length; i++)
        {
            subEditors[i].OnInspectorGUI();
            EditorGUILayout.Space();
        }

        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Add Collection", GUILayout.Width(collectionButtonWidth)))
        {
            ConditionCollectionText newCollection = ConditionCollectionTextEditor.CreateConditionCollection();
            collectionsProperty.AddToObjectArray(newCollection);
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();



        serializedObject.ApplyModifiedProperties();
    }
    // Select the Type of the Rectangle Containing InspectorGUI (Drop&Drag Area & ReactionCollectionsProperties)
    private void TypeSelectionGUI(Rect containingRect)
    {
        // Create a Rectangle for the Top
        Rect topHalf = containingRect;

        // Set to Half
        topHalf.height *= 0.5f;
        // Create BottomHalf
        Rect bottomHalf = topHalf;

        // set BottomHalf on Bottom
        bottomHalf.y += bottomHalf.height;

        //Display ReactionType popup on TopHalf
        selectedIndex = EditorGUI.Popup(topHalf, selectedIndex, reactionTypeNames);

        // If Button is Click, display BottomHalf
        if (GUI.Button(bottomHalf, "Add Selected Reaction"))
        {
            // Find Type of SelectedPopup
            Type reactionType = reactionTypes[selectedIndex];
            // Create Appropriate Reaction
            Reaction newReaction = ReactionEditor.CreateReaction(reactionType);
            // Add Reaction to ReactionCollectionArray
            reactionProperty.AddToObjectArray(newReaction);
        }
    }
Example #4
0
        private void ExpandedGUI()
        {
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(descriptionProperty);
            EditorGUILayout.Space();
            float space = EditorGUIUtility.currentViewWidth / 3f;

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Condition", GUILayout.Width(space));
            EditorGUILayout.LabelField("Satisfied?", GUILayout.Width(space));
            EditorGUILayout.LabelField("Add/Remove", GUILayout.Width(space));
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.BeginVertical(GUI.skin.box);
            for (int i = 0; i < subEditors.Length; i++)
            {
                subEditors[i].OnInspectorGUI();
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("+", GUILayout.Width(conditionButtonWidth)))
            {
                Condition newCondition = ConditionEditor.CreateCondition();
                conditionsProperty.AddToObjectArray(newCondition);
            }
            EditorGUILayout.EndHorizontal();
            EditorGUILayout.Space();
            EditorGUILayout.PropertyField(reactionCollectionProperty);
        }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();                                   //updejt i zapis na koncu, reszta kodu leci pomiedzy

        CheckAndCreateSubEditors(interactable.conditionCollections); // w kazdym framie chcemy wiedziec ile editorow potrzebujemy, bo byc moze zmiana, dlatego update

        EditorGUILayout.PropertyField(interactionLocationProperty);  //interaction location, pierwsza rzecz ktora wyswietlamy

        for (int i = 0; i < subEditors.Length; i++)                  // condition collection maja swoje edytory, ale musimy im powiedziec zeby sie tu wyswietlily
        {
            subEditors[i].OnInspectorGUI();                          // te edytory sa czescia tak jak zwykly inspektor
            // i funkcje jak onispectorgiu trzeba wywolywac recznie
            EditorGUILayout.Space();
            // pomiedzy chcemy miec troche miejsca
        }

        // potrzebujemy buttona do dodawania kolekcji
        EditorGUILayout.BeginHorizontal();                                              //jak begin to i end
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Add Collection", GUILayout.Width(collectionButtonWidth))) // nasz button, add colection as a string,
        //no i jakies width, mamy wczesniej ustalony constant
        {
            // w srodku to co mamy zrobic jezeli jest klikniety
            ConditionCollection newCollection = ConditionCollectionEditor.CreateConditionCollection();
            collectionsProperty.AddToObjectArray(newCollection);
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();                                          // troche miejsca

        EditorGUILayout.PropertyField(defaultReactionCollectionProperty); // default

        serializedObject.ApplyModifiedProperties();                       // zapisanie zmian
    }
 public static void AddObjectToArrayAsSubAsset <TElement>(this SerializedProperty arrayProp, Object collectionAsset, string name, TElement newElement)
     where TElement : ScriptableObject
 {
     AssetDatabase.AddObjectToAsset(newElement, collectionAsset);
     newElement.name = name;
     arrayProp.AddToObjectArray(newElement);
 }
Example #7
0
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        CheckAndCreateSubEditors(interactable.conditionCollections);

        EditorGUILayout.PropertyField(interactionLocationProperty);

        for (int i = 0; i < subEditors.Length; i++)
        {
            subEditors[i].OnInspectorGUI();
            EditorGUILayout.Space();
        }

        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Add Collection", GUILayout.Width(collectionButtonWidth)))
        {
            ConditionCollection newCollection = ConditionCollectionEditor.CreateConditionCollection();
            collectionsProperty.AddToObjectArray(newCollection);
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();

        EditorGUILayout.PropertyField(defaultReactionCollectionProperty);

        EditorGUILayout.PropertyField(isSkipProperty);

        serializedObject.ApplyModifiedProperties();
    }
    public static void AddObjectToArrayAsSubAsset <TElement>(this SerializedProperty arrayProp, Object collectionAsset)
        where TElement : ScriptableObject
    {
        TElement newElement = ScriptableObject.CreateInstance <TElement>();

        AssetDatabase.AddObjectToAsset(newElement, collectionAsset);
        newElement.name = "New Element";
        arrayProp.AddToObjectArray(newElement);
    }
 public static void AddObjectToArrayAsSubAsset <TElement>(this SerializedProperty arrayProp, Object collectionAsset, bool hideSubAsset, TElement newElement)
     where TElement : ScriptableObject
 {
     if (hideSubAsset)
     {
         newElement.hideFlags = HideFlags.HideInHierarchy;
     }
     AssetDatabase.AddObjectToAsset(newElement, collectionAsset);
     arrayProp.AddToObjectArray(newElement);
 }
    // Expand the Inspector GUI
    private void ExpandedGUI()
    {
        // Create Space between Entries
        EditorGUILayout.Space();
        // Set the Description Space
        EditorGUILayout.PropertyField(descriptionProperty);
        // Crate Space between Description and Fold-Out
        EditorGUILayout.Space();

        // Set float for constant space of width
        float space = EditorGUIUtility.currentViewWidth / 3f;

        // Begin Horizontal box
        EditorGUILayout.BeginHorizontal();
        // Add Label with name Condition
        EditorGUILayout.LabelField("Condition", GUILayout.Width(space));
        // Add Label with name Statisfied?
        EditorGUILayout.LabelField("Statisfied?", GUILayout.Width(space));
        // Add LAbel with name Add/Remove
        EditorGUILayout.LabelField("Add/Remove", GUILayout.Width(space));
        // End Horizontal box
        EditorGUILayout.EndHorizontal();

        // Begin Vertical box
        EditorGUILayout.BeginVertical(GUI.skin.box);
        // Go through all SubEditors
        for (int i = 0; i < subEditor.Length; i++)
        {
            // Call all SubEditors OnInspectorGUI Function
            subEditor[i].OnInspectorGUI();
        }
        // End Horizontalbox? or Verical
        EditorGUILayout.EndHorizontal();
        //?	EditorGUILayout.EndVertical ();

        // Begin HorizontalBox
        EditorGUILayout.BeginHorizontal();
        // Create a FlexableSpace for Buttons
        GUILayout.FlexibleSpace();
        // Create Add-NewCondition Button
        if (GUILayout.Button("+", GUILayout.Width(conditionButtonWidth)))
        {
            // Create new Condition
            Condition newCondition = ConditionEditor.CreateCondition();
            // Add newCondition to Array
            conditionsProperty.AddToObjectArray(newCondition);
        }
        // End the Horizontal box
        EditorGUILayout.EndHorizontal();
        // Create space between foldout Name and Property
        EditorGUILayout.Space();
        // Set Propertyfield to Property
        EditorGUILayout.PropertyField(reactionCollectionProperty);
    }
Example #11
0
        public override void OnInspectorGUI()
        {
            // Pull information from the target into the serializedObject.
            serializedObject.Update();

            // Draw interaction handling buttons
            GUILayout.BeginHorizontal();
            if (Application.isPlaying)
            {
                if (GUILayout.Button("INTERACT"))
                {
                    _interactable.Interact();
                }
            }

            if (GUILayout.Button("Focus on object!"))
            {
                EditorGUIUtility.PingObject(_interactable.gameObject.gameObject);
            }
            GUILayout.EndHorizontal();

            // If necessary, create editors for the ConditionCollections.
            CheckAndCreateSubEditors(_interactable.ConditionCollections);

            // Use the default object field GUI for the interactionLocation.
            EditorGUILayout.PropertyField(_interactionLocationProperty);

            // Display all of the ConditionCollections.
            for (int i = 0; i < subEditors.Length; i++)
            {
                subEditors[i].OnInspectorGUI();
                EditorGUILayout.Space();
            }

            // Create a right-aligned button which when clicked, creates a new ConditionCollection in the ConditionCollections array.
            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("Add Collection", GUILayout.Width(COLLECTION_BUTTON_WIDTH)))
            {
                ConditionCollection newCollection = ConditionCollectionEditor.CreateConditionCollection();
                _collectionsProperty.AddToObjectArray(newCollection);
            }
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.Space();

            // Use the default object field GUI for the defaultReaction.
            EditorGUILayout.PropertyField(_defaultReactionCollectionProperty);

            // Push information back to the target from the serializedObject.
            serializedObject.ApplyModifiedProperties();
        }
    public static void AddObjectToArrayAsSubAsset <TElement>(this SerializedProperty arrayProp, Object collectionAsset, bool hideSubAsset, string name)
        where TElement : ScriptableObject
    {
        TElement newElement = ScriptableObject.CreateInstance <TElement>();

        if (hideSubAsset)
        {
            newElement.hideFlags = HideFlags.HideInHierarchy;
        }
        AssetDatabase.AddObjectToAsset(newElement, collectionAsset);
        newElement.name = name;
        arrayProp.AddToObjectArray(newElement);
    }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        // Recreate subeditors if needed, draw subeditors.
        RecreateSubEditors(ReactionCollection.Reactions);
        for (int i = 0; i < subEditors.Length; i++)
        {
            if (subEditors[i] != null)
            {
                subEditors[i].OnInspectorGUI();
            }
        }
        if (ReactionCollection.Reactions.Length > 0)
        {
            EditorGUILayout.Space();
        }
        EditorGUILayout.BeginHorizontal();

        // Pop-up to select appropriate reaction for adding purposes
        SelectedIndex = EditorGUILayout.Popup(SelectedIndex, ReactionTypeNames);

        // Button to add selected reaction
        if (GUILayout.Button("Add Selected Reaction"))
        {
            Type     reactionType = ReactionTypes[SelectedIndex];
            Reaction newReaction  = ReactionEditor.CreateReaction(reactionType);
            ReactionsProperty.AddToObjectArray(newReaction);
        }

        // Button to remove undefined/null reactions
        if (GUILayout.Button("Remove Null"))
        {
            // Iterate through collection until all reactions removed
            while (AreThereNullReactions())
            {
                for (int j = 0; j < ReactionCollection.Reactions.Length; j++)
                {
                    if (ReactionCollection.Reactions[j] == null)
                    {
                        ReactionsProperty.RemoveFromObjectArrayAt(j);
                        break;
                    }
                }
            }
        }

        serializedObject.ApplyModifiedProperties();
        EditorGUILayout.EndHorizontal();
    }
        private void DisplayPasteButton()
        {
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();

            GUIStyle centredStyle = GUI.skin.button;

            centredStyle.alignment        = TextAnchor.MiddleCenter;
            centredStyle.normal.textColor = GUI.skin.button.normal.textColor;

            // Paste copied reaction from clipboard
            if (GUILayout.Button("Paste copied\n reaction from clipboard", centredStyle, GUILayout.Height(40)))
            {
                try
                {
                    string bufferValue = EditorGUIUtility.systemCopyBuffer;
                    var    obj         = EditorUtility.InstanceIDToObject(Int32.Parse(bufferValue)) as Reaction;

                    if (obj != null)
                    {
                        Reaction reactionCopy = Instantiate(obj);
                        _reactionsProperty.AddToObjectArray(reactionCopy);
                        _reactionsListProperty.AddToObjectArray(reactionCopy);
                    }
                    else
                    {
                        Debug.LogWarning("Can't paste object! Copied object is not derived from reaction");
                    }
                }
                catch (FormatException)
                {
                    Debug.LogWarning("Paste object error! Wrong Instance ID format");
                }
            }

            GUILayout.EndHorizontal();
        }
Example #15
0
    private void ExpandedGUI()
    {
        EditorGUILayout.Space();

        // Display the description for editing.
        EditorGUILayout.PropertyField(descriptionProperty);

        EditorGUILayout.Space();

        // Display the Labels for the Conditions evenly split over the width of the inspector.
        float conditionSpace = (EditorGUIUtility.currentViewWidth / 2f) - 20f;
        float space          = (conditionSpace / 2);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Condition", GUILayout.Width(conditionSpace));
        EditorGUILayout.LabelField("Satisfied?", GUILayout.Width(space));
        EditorGUILayout.LabelField("Remove", GUILayout.Width(space));
        EditorGUILayout.EndHorizontal();

        // Display each of the Conditions.
        EditorGUILayout.BeginVertical(GUI.skin.box);
        for (int i = 0; i < subEditors.Length; i++)
        {
            if (subEditors[i] != null)
            {
                subEditors[i].OnInspectorGUI();
            }
        }
        EditorGUILayout.EndVertical();


        // Display a right aligned button which when clicked adds a Condition to the array.
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button(" Add Condition ", GUILayout.ExpandWidth(false)))
        {
            Condition newCondition = ConditionEditor.CreateCondition();
            conditionsProperty.AddToObjectArray(newCondition);
        }

        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();

        // Display the reference to the ReactionCollection for editing.
        EditorGUILayout.PropertyField(reactionCollectionProperty);
    }
Example #16
0
    private void TypeSelectionGUI(Rect containingRect)
    {
        Rect topHalf = containingRect;

        topHalf.height *= 0.5f;

        Rect bottomHalf = topHalf;

        bottomHalf.y += bottomHalf.height;
        selectedIndex = EditorGUI.Popup(topHalf, selectedIndex, reactionTypeNames);
        if (GUI.Button(bottomHalf, "Add Selected Reaction"))
        {
            Type     reactionType = reactionTypes[selectedIndex];
            Reaction newReaction  = ReactionEditor.CreateReaction(reactionType);
            reactionsProperty.AddToObjectArray(newReaction);
        }
    }
    private void ExpandedGUI()
    {
        EditorGUILayout.Space();

        EditorGUILayout.PropertyField(descriptionProperty);

        EditorGUILayout.Space();

        float space = EditorGUIUtility.currentViewWidth / 3f;

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Condition", GUILayout.Width(space));
        EditorGUILayout.LabelField("Satisfied?", GUILayout.Width(space));
        EditorGUILayout.LabelField("Add/Remove", GUILayout.Width(space));
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginVertical(GUI.skin.box);
        for (int i = 0; i < subEditors.Length; i++)
        {
            subEditors[i].OnInspectorGUI();
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("+", GUILayout.Width(conditionButtonWidth)))
        {
            Condition newCondition = ConditionEditor.CreateCondition();
            conditionsProperty.AddToObjectArray(newCondition);
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Dialogue", GUILayout.Width(EditorGUIUtility.labelWidth - areaWidthOffset));
        dialogueProperty.stringValue = EditorGUILayout.TextArea(dialogueProperty.stringValue, GUILayout.Height(EditorGUIUtility.singleLineHeight * messageGUILines));
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Name", GUILayout.Width(EditorGUIUtility.labelWidth - areaWidthOffset));
        characterNameProperty.stringValue = EditorGUILayout.TextArea(characterNameProperty.stringValue, GUILayout.Height(EditorGUIUtility.singleLineHeight));
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.PropertyField(characterImageProperty);
    }
Example #18
0
        private void TypeSelectionGUI(Rect containingRect)
        {
            Rect topHalf = containingRect;

            topHalf.height *= 0.5f;
            Rect bottomHalf = topHalf;

            bottomHalf.y += bottomHalf.height;

            selectedIndex = EditorGUI.Popup(topHalf, selectedIndex, commandTypeNames);

            if (GUI.Button(bottomHalf, "Add Selected Command"))
            {
                Type             commandType = commandTypes[selectedIndex];
                GameEventCommand newCommand  = GameEventCommandEditor.CreateCommand(commandType);
                commandsProperty.AddToObjectArray(newCommand);
            }
        }
Example #19
0
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        CheckAndCreateSubEditors(interactable.conditionCollections);

        EditorGUILayout.PropertyField(interactionLocationProperty);

        for (int i = 0; i < subEditors.Length; i++)
        {
            subEditors[i].OnInspectorGUI();
            EditorGUILayout.Space();
        }

        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Add Collection", GUILayout.Width(collectionButtonWidth)))
        {
            ConditionCollection newCollection = ConditionCollectionEditor.CreateConditionCollection();
            collectionsProperty.AddToObjectArray(newCollection);
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();

        EditorGUILayout.PropertyField(defaultReactionCollectionProperty);

        SerializedProperty tps = serializedObject.FindProperty("actionate");
        SerializedProperty tp  = serializedObject.FindProperty("conditions");

        EditorGUI.BeginChangeCheck();
        EditorGUILayout.PropertyField(tps, true);
        EditorGUILayout.PropertyField(tp, true);
        if (EditorGUI.EndChangeCheck())
        {
            serializedObject.ApplyModifiedProperties();
        }
        EditorGUIUtility.LookLikeControls();

        EditorGUILayout.Space();


        serializedObject.ApplyModifiedProperties();
    }
Example #20
0
    private void TypeSelectionGUI(Rect containingRect)
    {
        //podzial na gorna i dolna polowe, gora - selector, dol - button. wszystko robilbym w tym stylu, gdyby nie fakt, ze to ostatnia notacja ktorej sie nauczylem :d
        Rect topHalf = containingRect;

        topHalf.height *= 0.5f;
        Rect bottomHalf = topHalf;

        bottomHalf.y += bottomHalf.height;

        selectedIndex = EditorGUI.Popup(topHalf, selectedIndex, reactionTypeNames);

        if (GUI.Button(bottomHalf, "Add Selected Reaction"))
        {
            Type     reactionType = reactionTypes[selectedIndex];
            Reaction newReaction  = ReactionEditor.CreateReaction(reactionType);
            reactionsProperty.AddToObjectArray(newReaction);
        }
    }
Example #21
0
    // Called when Inspector is Open (Every Frame)
    public override void OnInspectorGUI()
    {
        // Update the SerializedObjects Propertiess
        serializedObject.Update();

        // Create Editors for ConditionCollection
        CheckAndCreateSubEditors(interactable.conditionCollections);
        // Display InteractionLocation property
        EditorGUILayout.PropertyField(interactionLocationProperty);

        // go through all ConditionCollection Editors
//		for (int i = 0; i < subEditors.Length; i++) {
        // Display the ConditionCollection
//			subEditors[i].OnInspectorGUI ();
        // Create Space between Elements
        EditorGUILayout.Space();
//		}

        // Begin HorizontalBox for ConditionCollection
        EditorGUILayout.BeginHorizontal();
        // Create a FlexibleSpace
        GUILayout.FlexibleSpace();

        // Create Button to Add ConditionCollection to all ConditionCollections
        if (GUILayout.Button("Add Collection", GUILayout.Width(collectionButtonWidth)))
        {
            // Create a new Collection
            ConditionCollection newCollection = ConditionCollectionEditor.CreateConditionCollection();
            // Add the newCollection to Collection Array
            collectionProperty.AddToObjectArray(newCollection);
        }

        // End Horizontal Box for ConditionCollection
        EditorGUILayout.EndHorizontal();

        // Create Space between Elements
        EditorGUILayout.Space();
        // Display default Reaction property
        EditorGUILayout.PropertyField(defaultReactionProperty);

        // Apply the Modified Properties to the SerializedObject
        serializedObject.ApplyModifiedProperties();
    }
Example #22
0
        private void TypeSelectionGUI(Rect containingRect)
        {
            // Create Rects for the top and bottom half.
            Rect topHalf = containingRect;

            topHalf.height *= 0.5f;
            Rect bottomHalf = topHalf;

            bottomHalf.y += bottomHalf.height;

            // Display a popup in the top half showing all the reaction types.
            selectedIndex = EditorGUI.Popup(topHalf, selectedIndex, reactionTypeNames);

            // Display a button in the bottom half that if clicked...
            if (GUI.Button(bottomHalf, "Add Selected Reaction"))
            {
                // ... finds the type selected by the popup, creates an appropriate reaction and adds it to the array.
                Type     reactionType = reactionTypes[selectedIndex];
                Reaction newReaction  = ReactionEditor.CreateReaction(reactionType);
                reactionsProperty.AddToObjectArray(newReaction);
            }
        }
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        GUILayout.Space(5);
        EditorGUILayout.PropertyField(m_idProperty);
        GUILayout.Space(5);

        DisplayBinderLink();

        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();

        if (GUILayout.Button("Add New Data Binder Link", GUILayout.Width(200), GUILayout.Height(30)))
        {
            DataBinderLink newBinderLink = CreateBinderLink();
            m_binderLinksProperty.AddToObjectArray(newBinderLink);
        }
        EditorGUILayout.EndHorizontal();
        GUILayout.Space(5);

        serializedObject.ApplyModifiedProperties();
    }
        public void AddChild(IQuest item, IQuest parent)
        {
            serializedObject.ApplyModifiedProperties();
            serializedObject.Update();

            if (parent == null)
            {
                Debug.LogError("Adding null parent");
                return;
            }

            SerializedProperty children             = serializedObject.FindProperty(PROP_CHILDREN);
            SerializedObject   itemSerializedObject = new SerializedObject(item);

            itemSerializedObject.FindProperty(PROP_PARENT).objectReferenceValue = parent;
            itemSerializedObject.ApplyModifiedProperties();
            itemSerializedObject.Update();

            children.AddToObjectArray <IQuest>(item);

            serializedObject.ApplyModifiedProperties();
            serializedObject.Update();
        }
Example #25
0
    public override void OnInspectorGUI()
    {
        // Pull information from the target into the serializedObject.
        serializedObject.Update();

        // If necessary, create editors for the ConditionCollections.
        CheckAndCreateSubEditors(interactable.conditionCollections);

        EditorGUILayout.PropertyField(interactionTextProperty);
        // Use the default object field GUI for the interactionLocation.
        EditorGUILayout.PropertyField(interactionLocationProperty);

        // Display all of the ConditionCollections.
        for (int i = 0; i < subEditors.Length; i++)
        {
            subEditors[i].OnInspectorGUI();
            EditorGUILayout.Space();
        }

        // Create a right-aligned button which when clicked, creates a new ConditionCollection in the ConditionCollections array.
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("Add Collection", GUILayout.Width(collectionButtonWidth)))
        {
            ConditionCollection newCollection = ConditionCollectionEditor.CreateConditionCollection();
            collectionsProperty.AddToObjectArray(newCollection);
        }
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();

        // Use the default object field GUI for the defaultReaction.
        EditorGUILayout.PropertyField(defaultReactionCollectionProperty);

        // Push information back to the target from the serializedObject.
        serializedObject.ApplyModifiedProperties();
    }
Example #26
0
    public override void OnInspectorGUI()
    {
        // Pull information from the target into the serializedObject.
        serializedObject.Update();

        EditorTools.createHorizontalSeparator();
        EditorTools.createTitleBox("Interactable Reactions", true);

        EditorGUILayout.Space();

        // If necessary, create editors for the ConditionCollections.
        CheckAndCreateSubEditors(interactable.conditionCollections);

        EditorGUILayout.BeginVertical(GUI.skin.box);

        GUILayout.BeginHorizontal(EditorStyles.inspectorDefaultMargins);

        isExpanded[0] = EditorGUILayout.Foldout(isExpanded[0], new GUIContent("Conditioned Reactions"), true, EditorStyles.foldout);

        EditorGUILayout.EndHorizontal();

        if (isExpanded[0])
        {
            GUILayout.BeginHorizontal(EditorStyles.inspectorDefaultMargins);
            // Create a right-aligned button which when clicked, creates a new ConditionCollection in the ConditionCollections array.
            if (GUILayout.Button("Add Condition Collection", GUILayout.ExpandWidth(false)))
            {
                ConditionCollection newCollection = ConditionCollectionEditor.CreateConditionCollection();
                collectionsProperty.AddToObjectArray(newCollection);
            }

            EditorGUILayout.EndHorizontal();

            // Display all of the ConditionCollections.
            for (int i = 0; i < subEditors.Length; i++)
            {
                subEditors[i].OnInspectorGUI();

                EditorGUILayout.Separator();
            }
        }

        EditorGUILayout.EndVertical();


        EditorGUILayout.Separator();


        EditorGUILayout.BeginVertical(GUI.skin.box);

        GUILayout.BeginHorizontal(EditorStyles.inspectorDefaultMargins);

        isExpanded[1] = EditorGUILayout.Foldout(isExpanded[1], new GUIContent("Default Reactions"), true, EditorStyles.foldout);

        EditorGUILayout.EndHorizontal();

        //EditorGUILayout.PropertyField(defaultReactionCollectionProperty.FindPropertyRelative("Array.size"));
        if (isExpanded[1])
        {
            //Show options for defaultReaction only when there was more than one DefaultReactionCollection
            if (defaultReactionCollectionProperty.arraySize > 1)
            {
                EditorGUILayout.BeginHorizontal(EditorStyles.inspectorDefaultMargins);
                EditorGUILayout.PropertyField(randomDefaultReactionProperty);

                //If the random DefaultReaction is disabled, show the texfield for the defaultReactionCollection index
                if (!randomDefaultReactionProperty.boolValue)
                {
                    EditorGUILayout.PropertyField(defaultReactionIndexProperty);
                }

                EditorGUILayout.EndHorizontal();
            }

            //Buttons to add or remove default ReactionCollection
            EditorGUILayout.BeginHorizontal(EditorStyles.inspectorDefaultMargins);
            if (GUILayout.Button("+", GUILayout.Width(collectionButtonWidth)))
            {
                defaultReactionCollectionProperty.arraySize++;
            }

            if (GUILayout.Button("-", GUILayout.Width(collectionButtonWidth)) && defaultReactionCollectionProperty.arraySize > 0)
            {
                defaultReactionCollectionProperty.arraySize--;
            }
            EditorGUILayout.EndHorizontal();

            //Fields for the array of ReactionCollections

            for (int i = 0; i < defaultReactionCollectionProperty.arraySize; i++)
            {
                EditorGUILayout.BeginHorizontal(EditorStyles.inspectorDefaultMargins);
                EditorGUILayout.BeginVertical(GUI.skin.box);
                EditorGUILayout.PropertyField(defaultReactionCollectionProperty.GetArrayElementAtIndex(i), new GUIContent("Default Reaction " + i));
                EditorGUILayout.EndVertical();
                EditorGUILayout.EndHorizontal();
            }
        }

        EditorGUILayout.EndVertical();

        EditorGUILayout.Separator();

        EditorTools.createHorizontalSeparator();
        EditorTools.createTitleBox("Interactable Events", true);

        EditorGUILayout.Space();


        EditorGUILayout.PropertyField(serializedObject.FindProperty("onInteractionStart"), true);
        EditorGUILayout.PropertyField(serializedObject.FindProperty("onInteractionEnd"), true);

        EditorGUILayout.Separator();

        EditorTools.createHorizontalSeparator();

        GUI.enabled = Application.isPlaying;

        if (GUILayout.Button("Interact"))
        {
            interactable.Interact();
        }

        // Push information back to the target from the serializedObject.
        serializedObject.ApplyModifiedProperties();
    }
Example #27
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            CheckAndCreateSubEditors(gameEvent.commands.ToArray());

            EditorGUILayout.PropertyField(serializedObject.FindProperty("trigger"));
            serializedObject.ApplyModifiedProperties();
            serializedObject.Update();

            /* EditorGUILayout.BeginHorizontal();
             * EditorGUILayout.LabelField("Trigger Type");
             * gameEvent.trigger =  (TriggerType)EditorGUILayout.EnumPopup(gameEvent.trigger);
             * EditorGUILayout.EndHorizontal();*/


            EditorGUILayout.BeginVertical(GUI.skin.box);
            for (int i = 0; i < conditionsProperty.arraySize; i++)
            {
                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.BeginVertical();
                //serializedObject
                SerializedProperty prop1           = serializedObject.FindProperty("conditions").GetArrayElementAtIndex(i);
                SerializedObject   propChild1      = new SerializedObject(prop1.objectReferenceValue);
                SerializedProperty propChildValue1 = propChild1.FindProperty("conditionKey");
                EditorGUILayout.PropertyField(propChildValue1);
                propChild1.ApplyModifiedProperties();

                SerializedProperty prop2           = serializedObject.FindProperty("conditions").GetArrayElementAtIndex(i);
                SerializedObject   propChild2      = new SerializedObject(prop2.objectReferenceValue);
                SerializedProperty propChildValue2 = propChild2.FindProperty("conditionValue");
                EditorGUILayout.PropertyField(propChildValue2);
                propChild2.ApplyModifiedProperties();

                SerializedProperty prop3           = serializedObject.FindProperty("conditions").GetArrayElementAtIndex(i);
                SerializedObject   propChild3      = new SerializedObject(prop3.objectReferenceValue);
                SerializedProperty propChildValue3 = propChild3.FindProperty("conditionComparer");
                EditorGUILayout.PropertyField(propChildValue3);
                propChild3.ApplyModifiedProperties();

                SerializedProperty prop4           = serializedObject.FindProperty("conditions").GetArrayElementAtIndex(i);
                SerializedObject   propChild4      = new SerializedObject(prop4.objectReferenceValue);
                SerializedProperty propChildValue4 = propChild4.FindProperty("structCast");
                EditorGUILayout.PropertyField(propChildValue4);
                propChild4.ApplyModifiedProperties();

                EditorGUILayout.EndVertical();

                if (GUILayout.Button("X", GUILayout.MaxHeight(50)))
                {
                    conditionsProperty.RemoveFromObjectArrayAt(i);
                }
                EditorGUILayout.EndHorizontal();
            }

            if (GUILayout.Button("Add New Condition"))
            {
                GameEventCondition newCondition = GameEventCondition.CreateInstance <GameEventCondition>();
                conditionsProperty.AddToObjectArray(newCondition);
            }
            EditorGUILayout.EndVertical();


            for (int i = 0; i < subEditors.Length; i++)
            {
                string[] commandNames = new string[gameEvent.commands.Count + 1];
                int[]    commandIDs   = new int[gameEvent.commands.Count + 1];
                for (int k = 0; k < gameEvent.commands.Count; k++)
                {
                    if (k < i)
                    {
                        commandNames[k] = "Command ID: " + k;
                        commandIDs[k]   = k;
                    }
                    else if (k > i)
                    {
                        commandNames[k - 1] = "Command ID: " + k;
                        commandIDs[k - 1]   = k;
                    }
                }
                commandNames[gameEvent.commands.Count] = "End Event";
                commandIDs[gameEvent.commands.Count]   = -1;
                //Debug.Log(subEditors[i]);
                subEditors[i].ProcessCurrentEventCommands(commandNames, commandIDs);
                serializedObject.Update();

                ////////////////////////
                EditorGUILayout.BeginVertical(GUI.skin.box);
                EditorGUI.indentLevel++;
                EditorGUILayout.BeginHorizontal();

                subEditors[i].showCommand = EditorGUILayout.Foldout(subEditors[i].showCommand, "#" + i.ToString() + ": " + subEditors[i].GetFoldoutLabel());

                if (GUILayout.Button("↑", GUILayout.Width(30)))
                {
                    if (i > 0)
                    {
                        SwapCommandIndexPositions(i, i - 1);
                    }
                }
                if (GUILayout.Button("↓", GUILayout.Width(30)))
                {
                    if (i < subEditors.Length - 1)
                    {
                        SwapCommandIndexPositions(i, i + 1);
                    }
                }
                if (GUILayout.Button("X", GUILayout.Width(30)))
                {
                    commandsProperty.RemoveFromObjectArrayAt(i);
                }

                EditorGUILayout.EndHorizontal();

                if (subEditors[i].showCommand)
                {
                    subEditors[i].OnInspectorGUI();
                }

                EditorGUI.indentLevel--;
                EditorGUILayout.EndVertical();
                /////////////////////

                serializedObject.ApplyModifiedProperties();
            }

            if (gameEvent.commands.ToArray().Length > 0)
            {
                EditorGUILayout.Space();
                EditorGUILayout.Space();
            }

            Rect fullWidthRect = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Height(dropAreaHeight + verticalSpacing));

            Rect leftAreaRect = fullWidthRect;

            leftAreaRect.y += verticalSpacing * 0.5f;

            leftAreaRect.width *= 0.5f;
            leftAreaRect.width -= controlSpacing * 0.5f;

            leftAreaRect.height = dropAreaHeight;

            Rect rightAreaRect = leftAreaRect;

            rightAreaRect.x += rightAreaRect.width + controlSpacing;

            TypeSelectionGUI(leftAreaRect);

            serializedObject.ApplyModifiedProperties();
        }