private void AdvancedSettingsEditing()
        {
            EditorGUILayout.BeginVertical();
            {
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField(Simulation.Strings.AttachSpecificDBLabel, EditorExtensionSettings.StandardEditorFieldWidth);
                    EditorExtensionSettings.StandardMargin();
                    EditorGUI.BeginChangeCheck();
                    myDatabase = EditorGUILayout.ObjectField(myDatabase, typeof(Simulation.DatabaseAsset), false, EditorExtensionSettings.MediumEditorFieldWidth) as Simulation.DatabaseAsset;
                    if (EditorGUI.EndChangeCheck())
                    {
                        if (myDatabase != null)
                        {
                            DatabaseName.stringValue = myDatabase.DatabaseName;
                        }
                        else
                        {
                            DatabaseName.stringValue = Strings.DefaultDatabaseName;
                        }

                        myDatabase = Resources.Load(DatabaseName.stringValue) as Simulation.DatabaseAsset;
                    }
                }
                EditorGUILayout.EndHorizontal();
                EditorExtensionSettings.StandardMargin();
                EditorGUILayout.LabelField(DatabaseName.stringValue, EditorExtensionSettings.SmallText);
            }
            EditorGUILayout.EndVertical();
        }
        private void InteractionEditing(int loop)
        {
            int indexer = 0;

            for (int i = 1; i < interactionOptions.Length; i++)
            {
                if (serializedObject.FindProperty(string.Format(InteractionDataAccess, loop)).stringValue == interactionOptions[i])
                {
                    indexer = i;
                    break;
                }
            }

            if (CustomGUI.ChangeCheckingPopup(ref indexer, interactionOptions, Simulation.Strings.InteractionLabelToExtend(loop + 1)))
            {
                serializedObject.FindProperty(string.Format(InteractionDataAccess, loop)).stringValue = interactionOptions[indexer];
            }

            EditorGUILayout.BeginHorizontal();
            {
                EditorExtensionSettings.LargeMargin();
                EditorExtensionSettings.LargeMargin();
                EditorExtensionSettings.LargeMargin();
                EditorExtensionSettings.LargeMargin();
                EditorExtensionSettings.LargeMargin();
                EditorExtensionSettings.LargeMargin();
                EditorExtensionSettings.MediumMargin();

                if (GUILayout.Button("Edit interactions"))
                {
                    NEEDSIMEditor.CustomMainWindow.MainWindowInit(CustomMainWindow.Screens.Interactions);
                }
            }
            EditorGUILayout.EndHorizontal();
        }
        private void AgentEditing()
        {
            EditorExtensionSettings.StandardMargin();
            speciesSelector = SelectionPosition(speciesOptions, SpeciesName.stringValue);
            if (CustomGUI.ChangeCheckingPopup(ref speciesSelector, speciesOptions, ""))
            {
                if (speciesSelector > 0)
                {
                    SpeciesName.stringValue = speciesOptions[speciesSelector];
                }
                else
                {
                    SpeciesName.stringValue = "";
                }
            }

            selectedPlan.enumValueIndex = (int)(NEEDSIMNode.ExamplePlans)EditorGUILayout.EnumPopup((NEEDSIMNode.ExamplePlans)selectedPlan.enumValueIndex, EditorExtensionSettings.MediumEditorFieldWidth);

            EditorExtensionSettings.StandardMargin();
            ShowDebugInGame.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.DebugIngameLabel, ShowDebugInGame.boolValue, EditorExtensionSettings.MediumEditorFieldWidth);
            EditorExtensionSettings.StandardMargin();
            //ShowDebugInSpector.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.DebugInSpectorLabel, ShowDebugInSpector.boolValue, EditorExtensionSettings.MediumEditorFieldWidth);
            //CustomGUI.StandardMargin();
            SpecificSatisfactionLevelsAtStart.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.RandomStartLevelsLabel, SpecificSatisfactionLevelsAtStart.boolValue, EditorExtensionSettings.MediumEditorFieldWidth);

            if (SpecificSatisfactionLevelsAtStart.boolValue)
            {
                StartNeedSatisfactionEditing();
            }

            EditorExtensionSettings.StandardMargin();
        }
示例#4
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            EditorGUILayout.BeginVertical();
            {
                if (GUILayout.Button("Edit data for NEEDSIM Life simulation"))
                {
                    NEEDSIMEditor.CustomMainWindow.MainWindowInit(NEEDSIMEditor.CustomMainWindow.Screens.Start);
                }
            }
            EditorGUILayout.EndVertical();

            if (generalSettings = EditorGUILayout.Foldout(generalSettings, Simulation.Strings.GeneralSettings))
            {
                EditorExtensionSettings.StandardMargin();
                GeneralSettingsEditing();
            }

            EditorExtensionSettings.LargeMargin();
            if (advancedSettings = EditorGUILayout.Foldout(advancedSettings, Simulation.Strings.AdvancedSettings))
            {
                EditorExtensionSettings.StandardMargin();
                AdvancedSettingsEditing();
            }
            serializedObject.ApplyModifiedProperties();
        }
 private void GeneralSettingsEditing()
 {
     EditorGUILayout.BeginVertical();
     {
         LogSimulation.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.LogSimulationLabel, LogSimulation.boolValue, EditorExtensionSettings.LongEditorFieldWidth);
         BuildAffordanceTreeFromScene.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.BuildAffordanceTreeFromSceneLabel, BuildAffordanceTreeFromScene.boolValue, EditorExtensionSettings.LongEditorFieldWidth);
         EditorExtensionSettings.StandardMargin();
         EditorExtensionSettings.StandardMargin();
         if (GUILayout.Button(Simulation.Strings.PrintSimDebugLogLabel, EditorExtensionSettings.MediumEditorFieldWidth))
         {
             NEEDSIMManager.PrintSimulationDebugLogToConsole();
         }
     }
     EditorGUILayout.EndVertical();
 }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            if (generalSettings = EditorGUILayout.Foldout(generalSettings, Simulation.Strings.GeneralSettings))
            {
                EditorExtensionSettings.StandardMargin();
                GeneralSettingsEditing();
            }

            EditorExtensionSettings.LargeMargin();
            if (advancedSettings = EditorGUILayout.Foldout(advancedSettings, Simulation.Strings.AdvancedSettings))
            {
                EditorExtensionSettings.StandardMargin();
                AdvancedSettingsEditing();
            }
            serializedObject.ApplyModifiedProperties();
        }
        private void SmartObjectGUI()
        {
            EditorGUILayout.BeginVertical();
            {
                EditorExtensionSettings.StandardMargin();
                //This can be used if you want to have more than one interaction on a NEEDSIM Node, but we do not yet officially
                //support this.

                /*EditorGUILayout.BeginHorizontal();
                 * {
                 *  EditorGUILayout.LabelField(Simulation.Strings.InspectorNumberOfInteractionsLabel, EditorSettings.StandardEditorFieldWidth);
                 *  CustomGUI.LargeMargin();
                 *  EditorGUI.BeginChangeCheck();
                 *  serializedObject.FindProperty(InteractionDataLength).intValue
                 *      = EditorGUILayout.IntSlider(serializedObject.FindProperty(InteractionDataLength).intValue,
                 *                                  1,
                 *                                  EditorSettings.MaxNumberOfInteractionPerSmartObject,
                 *                                  EditorSettings.StandardEditorFieldWidth);
                 * } EditorGUILayout.EndHorizontal();
                 * CustomGUI.LargeMargin();*/

                if (serializedObject.FindProperty(InteractionDataLength).intValue < 1)
                {
                    serializedObject.FindProperty(InteractionDataLength).intValue = 1;
                }

                for (int i = 0; i < serializedObject.FindProperty(InteractionDataLength).intValue; i++)
                {
                    InteractionEditing(i);
                }

                EditorExtensionSettings.StandardMargin();
                IsAgent.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.IsAgentLabel, IsAgent.boolValue, EditorExtensionSettings.StandardEditorFieldWidth);
                if (IsAgent.boolValue)
                {
                    AgentEditing();
                }

                EditorExtensionSettings.MediumMargin();
                if (territorySettings = EditorGUILayout.Foldout(territorySettings, Simulation.Strings.TerritoryControlHeadline))
                {
                    SlotEditing();
                }
            }
            EditorGUILayout.EndVertical();
        }
        private void AgentEditing()

        {
            EditorExtensionSettings.StandardMargin();
            EditorGUILayout.BeginHorizontal();
            {
                speciesSelector = SelectionPosition(speciesOptions, SpeciesName.stringValue);
                if (CustomGUI.ChangeCheckingPopup(ref speciesSelector, speciesOptions, "Species: "))
                {
                    if (speciesSelector > 0)
                    {
                        SpeciesName.stringValue = speciesOptions[speciesSelector];
                    }
                    else
                    {
                        SpeciesName.stringValue = "";
                    }
                }

                if (GUILayout.Button("Edit species"))
                {
                    NEEDSIMEditor.CustomMainWindow.MainWindowInit(CustomMainWindow.Screens.Species);
                }
            }
            EditorGUILayout.EndHorizontal();

            EditorExtensionSettings.StandardMargin();

            selectedPlan.enumValueIndex = (int)(NEEDSIMNode.ExamplePlans)EditorGUILayout.EnumPopup("Behavior: ", (NEEDSIMNode.ExamplePlans)selectedPlan.enumValueIndex);

            EditorExtensionSettings.StandardMargin();
            ShowDebugInGame.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.DebugIngameLabel, ShowDebugInGame.boolValue, EditorExtensionSettings.MediumEditorFieldWidth);
            EditorExtensionSettings.StandardMargin();
            //ShowDebugInSpector.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.DebugInSpectorLabel, ShowDebugInSpector.boolValue, EditorExtensionSettings.MediumEditorFieldWidth);
            //CustomGUI.StandardMargin();
            SpecificSatisfactionLevelsAtStart.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.RandomStartLevelsLabel, SpecificSatisfactionLevelsAtStart.boolValue, EditorExtensionSettings.MediumEditorFieldWidth);

            if (SpecificSatisfactionLevelsAtStart.boolValue)
            {
                StartNeedSatisfactionEditing();
            }

            EditorExtensionSettings.StandardMargin();
        }
        private void StartNeedSatisfactionEditing()
        {
            EditorExtensionSettings.StandardMargin();

            for (int i = 0; i < serializedObject.FindProperty(StartingSatisfactionLevels_NeedKeys_arraySize).intValue; i++)
            {
                //Only show the needs in the species
                if (species.needs.Contains(serializedObject.FindProperty(string.Format(StartingSatisfactionLevels_NeedKeys_access, i)).stringValue))
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUILayout.LabelField(serializedObject.FindProperty(string.Format(StartingSatisfactionLevels_NeedKeys_access, i)).stringValue, EditorExtensionSettings.StandardEditorFieldWidth);

                        EditorGUI.BeginChangeCheck();

                        float value = serializedObject.FindProperty(string.Format(StartingSatisfactionLevels_FloatValues_access, i)).floatValue;

                        value = EditorGUILayout.FloatField(value, EditorExtensionSettings.StandardEditorFieldWidth);

                        if (EditorGUI.EndChangeCheck())
                        {
                            if (value > GeneralSettings.DefaultNeedMaxValue)
                            {
                                value = GeneralSettings.DefaultNeedMaxValue;
                            }
                            if (value < GeneralSettings.DefaultNeedMinValue)
                            {
                                value = GeneralSettings.DefaultNeedMinValue;
                            }
                            serializedObject.FindProperty(string.Format(StartingSatisfactionLevels_FloatValues_access, i)).floatValue = value;
                        }
                    }
                    EditorGUILayout.EndHorizontal();
                }
            }
        }
        private void SlotEditing()
        {
            EditorGUILayout.BeginVertical();
            {
                EditorExtensionSettings.StandardMargin();
                EditorGUILayout.BeginHorizontal();
                {
                    EditorGUILayout.LabelField(Simulation.Strings.NumberOfSlotsLabel, EditorExtensionSettings.StandardEditorFieldWidth);
                    EditorExtensionSettings.StandardMargin();
                    EditorGUI.BeginChangeCheck();
                    int oldSize = serializedObject.FindProperty(arraySizeWorldSlotPositions).intValue;

                    if (serializedObject.FindProperty(arraySizeWorldSlotPositions).intValue != serializedObject.FindProperty(arraySizeLocalLookAtTarget).intValue)
                    {
                        Debug.LogError("A mismatch in array lenghts has been detected for slots.");
                    }

                    int newSize = serializedObject.FindProperty(arraySizeWorldSlotPositions).intValue;

                    newSize = EditorGUILayout.IntSlider(newSize, 0, EditorExtensionSettings.MaxSlots, EditorExtensionSettings.StandardEditorFieldWidth);

                    if (EditorGUI.EndChangeCheck())
                    {
                        serializedObject.FindProperty(arraySizeLocalSlotPositions).intValue = newSize;
                        serializedObject.FindProperty(arraySizeAuctionable).intValue        = newSize;
                        serializedObject.FindProperty(arraySizeLocalLookAtTarget).intValue  = newSize;
                        serializedObject.FindProperty(arraySizeWorldSlotPositions).intValue = newSize;

                        if (oldSize < newSize)
                        {
                            for (int i = oldSize; i < newSize; i++)
                            {
                                //world position
                                serializedObject.FindProperty(string.Format(accessWorldSlotPositions, i)).vector3Value = transform.TransformPoint(SpawningPosition(i));
                                //local position
                                serializedObject.FindProperty(string.Format(accessLocalSlotPositions, i)).vector3Value = SpawningPosition(i);
                                serializedObject.FindProperty(string.Format(accessLocalLookAtTarget, i)).vector3Value  = Vector3.zero;
                                serializedObject.FindProperty(string.Format(accessAuctionable, i)).boolValue           = true;
                            }
                        }
                    }
                }

                EditorGUILayout.EndHorizontal();
                EditorExtensionSettings.StandardMargin();

                for (int i = 0; i < serializedObject.FindProperty(arraySizeLocalSlotPositions).intValue; i++)
                {
                    EditorGUILayout.BeginHorizontal();
                    {
                        EditorGUI.BeginChangeCheck();

                        Vector3 localPosition = serializedObject.FindProperty(string.Format(accessLocalSlotPositions, i)).vector3Value;
                        //local position
                        serializedObject.FindProperty(string.Format(accessLocalSlotPositions, i)).vector3Value
                            = EditorGUILayout.Vector3Field(Simulation.Strings.SlotNumberLabel(i), localPosition);

                        if (EditorGUI.EndChangeCheck())
                        {
                            //world position
                            serializedObject.FindProperty(string.Format(accessWorldSlotPositions, i)).vector3Value
                                = transform.TransformPoint(serializedObject.FindProperty(string.Format(accessLocalSlotPositions, i)).vector3Value);
                        }
                    }
                    EditorGUILayout.EndHorizontal();

                    if (ModifyLookAt.boolValue)
                    {
                        EditorGUILayout.BeginHorizontal();
                        {
                            serializedObject.FindProperty(string.Format(accessLocalLookAtTarget, i)).vector3Value
                                = EditorGUILayout.Vector3Field("Look at target", serializedObject.FindProperty(string.Format(accessLocalLookAtTarget, i)).vector3Value);

                            //Use this if you want the option to make slots not available to agents.
                            //CustomGUI.StandardMargin();
                            //serializedObject.FindProperty(string.Format(accessAuctionable, i)).boolValue
                            //    = EditorGUILayout.ToggleLeft(Simulation.Strings.IsAuctionableLabel,
                            //                                 serializedObject.FindProperty(string.Format(accessAuctionable, i)).boolValue,
                            //                                 EditorSettings.StandardEditorFieldWidth);
                        }
                        EditorGUILayout.EndHorizontal();
                        EditorExtensionSettings.StandardMargin();
                    }
                }
                ModifyLookAt.boolValue = EditorGUILayout.ToggleLeft(Simulation.Strings.ModifyLookAt, ModifyLookAt.boolValue, EditorExtensionSettings.MediumEditorFieldWidth);
                ShowDebug.boolValue    = EditorGUILayout.ToggleLeft(Simulation.Strings.ShowDebugGizmosLabel, ShowDebug.boolValue, EditorExtensionSettings.MediumEditorFieldWidth);
            }
            EditorGUILayout.EndVertical();
        }