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(); }
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(); }
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(); }