private static void DrawInteractor(ICECreatureControl _control, InteractionObject _interaction_object, int _index) { ICEEditorStyle.SplitterByIndent(EditorGUI.indentLevel); InteractorObject _interactor_object = _interaction_object.Interactors[_index]; ICEEditorLayout.BeginHorizontal(); _interactor_object.Foldout = EditorGUILayout.Foldout(_interactor_object.Foldout, "Interactor '" + _interactor_object.Name + "' (" + _interactor_object.Rules.Count + " Rules) ", ICEEditorStyle.Foldout); if (GUILayout.Button(new GUIContent("SAVE", "Saves selected interactor to file"), ICEEditorStyle.ButtonMiddle)) { CreatureIO.SaveInteractorToFile(_interactor_object, _interactor_object.Name); } if (GUILayout.Button(new GUIContent("LOAD", "Replaces selected interactor settings"), ICEEditorStyle.ButtonMiddle)) { _control.Creature.Interaction.Interactors.Insert(_index, CreatureIO.LoadInteractorFromFile(new InteractorObject())); _interaction_object.Interactors.Remove(_interactor_object); return; } if (GUILayout.Button(new GUIContent("REMOVE", "Removes selected interactor"), ICEEditorStyle.ButtonMiddle)) { _interaction_object.Interactors.RemoveAt(_index); --_index; return; } ICEEditorLayout.EndHorizontal(Info.INTERACTION_INTERACTOR); if (!_interactor_object.Foldout) { return; } EditorGUILayout.Separator(); _interactor_object.Enabled = ICEEditorLayout.ToggleLeft("Enabled", "", _interactor_object.Enabled, false, Info.INTERACTION_INTERACTOR_ENABLED); EditorGUI.BeginDisabledGroup(_interactor_object.Enabled == false); EditorGUILayout.Separator(); EditorSharedTools.DrawTargetSelectors(_control, _interactor_object.Selectors, TargetType.INTERACTOR, Init.SELECTION_RANGE_MIN, Init.SELECTION_RANGE_MAX); if (_interactor_object.Selectors.SelectionRange == 0) { EditorGUI.indentLevel++; Info.Note("Selection Range adjusted to zero - no regional selection restriction!"); EditorGUI.indentLevel--; } _interactor_object = DrawInteractorOffset(_control, _interactor_object); _interactor_object.BehaviourModeKey = EditorBehaviour.BehaviourSelect(_control, "Behaviour", "Behaviour while sensing this interactor", _interactor_object.BehaviourModeKey, "SENSE"); EditorGUILayout.Separator(); ICEEditorLayout.Label("Additional Rules for meeting '" + _interactor_object.Name + "' creatures.", true); if (_interactor_object.Rules.Count == 0) { Info.Note(Info.INTERACTION_INTERACTOR_NO_RULES); } else { EditorGUILayout.Separator(); for (int _behaviour_index = 0; _behaviour_index < _interactor_object.Rules.Count; _behaviour_index++) { DrawInteractorRule(_control, _interactor_object, _behaviour_index); } } ICEEditorStyle.SplitterByIndent(EditorGUI.indentLevel + 1); ICEEditorLayout.BeginHorizontal(); EditorGUILayout.LabelField("Add Interaction Rule for '" + _interactor_object.Name + "'", EditorStyles.boldLabel); if (GUILayout.Button("ADD", ICEEditorStyle.ButtonMiddle)) { _interactor_object.Rules.Add(new InteractorRuleObject("")); } ICEEditorLayout.EndHorizontal(); EditorGUILayout.Separator(); EditorGUI.EndDisabledGroup(); }
public static void Print(ICECreatureControl _control) { if (m_creature_register == null) { m_creature_register = ICECreatureRegister.Register; } if (m_creature_register == null) { return; } if (!_control.Display.ShowInteractionSettings) { return; } ICEEditorStyle.SplitterByIndent(0); ICEEditorLayout.BeginHorizontal(); _control.Display.FoldoutInteraction = ICEEditorLayout.Foldout(_control.Display.FoldoutInteraction, "Interaction"); if (GUILayout.Button(new GUIContent("SAVE", "Saves the complete interaction settings to file"), ICEEditorStyle.ButtonMiddle)) { CreatureIO.SaveInteractionToFile(_control.Creature.Interaction, _control.gameObject.name); } if (GUILayout.Button(new GUIContent("LOAD", "Loads existing interaction settings form file"), ICEEditorStyle.ButtonMiddle)) { _control.Creature.Interaction = CreatureIO.LoadInteractionFromFile(_control.Creature.Interaction); } if (GUILayout.Button(new GUIContent("RESET", "Removes all interaction settings"), ICEEditorStyle.ButtonMiddle)) { _control.Creature.Interaction.Reset(); } ICEEditorLayout.EndHorizontal(Info.INTERACTION); if (!_control.Display.FoldoutInteraction) { return; } EditorGUILayout.Separator(); EditorGUI.indentLevel++; for (int _interactor_index = 0; _interactor_index < _control.Creature.Interaction.Interactors.Count; ++_interactor_index) { DrawInteractor(_control, _control.Creature.Interaction, _interactor_index); } EditorGUI.indentLevel--; ICEEditorStyle.SplitterByIndent(EditorGUI.indentLevel + 1); ICEEditorLayout.BeginHorizontal(); EditorGUILayout.LabelField("Add Interactor", ICEEditorStyle.LabelBold); if (GUILayout.Button(new GUIContent("LOAD", "Load existing interactor settings from file"), ICEEditorStyle.ButtonMiddle)) { _control.Creature.Interaction.Interactors.Add(CreatureIO.LoadInteractorFromFile(new InteractorObject())); } if (GUILayout.Button(new GUIContent("ADD", "Create a new interactor record"), ICEEditorStyle.ButtonMiddle)) { _control.Creature.Interaction.Interactors.Add(new InteractorObject()); } ICEEditorLayout.EndHorizontal(); EditorGUILayout.Separator(); }