Beispiel #1
0
        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();
        }
Beispiel #2
0
        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();
        }