Esempio n. 1
0
        private void Init()
        {
            if (_init)
            {
                return;
            }
            _init = true;

            _manager = CreateManager();
            _agent   = _manager.ActiveAgent;
            _tester  = _manager.Tester;
            _mode    = _manager.Mode;
            _remake  = _manager.Remake;
            _term    = _manager.Terminator;
            Directory.CreateDirectory(STORY_PATH);
            _stories      = QStory.LoadForScene(STORY_PATH, EditorApplication.currentScene); // Should read this when serialization works
            _currentStory = _currentStory == null ? null : _stories.Find(s => s.Id == _currentStory.Id);
            _benchmark    = _manager.Benchmark;
        }
Esempio n. 2
0
        private void OnGUI()
        {
            Init();
            if (_manager == null || _manager != FindObjectOfType <QAIManager>())
            {
                _init = false;
            }

            _mode = _manager.ModeOverride;

            _scrollPosition = EditorGUILayout.BeginScrollView(_scrollPosition);
            EditorApplication.playmodeStateChanged -= PlayModeChange;
            EditorApplication.playmodeStateChanged += PlayModeChange;

            //PROGRESS BAR
            ProgressBars();

            //SETUP
            GUILayout.Space(10);
            EditorGUILayout.LabelField("Setup");
            _agent  = (GameObject)EditorGUILayout.ObjectField("Current Agent", _agent, typeof(GameObject), true);
            _tester = (QTester)EditorGUILayout.ObjectField("Current Tester", _tester, typeof(QTester), true);
            _term   = EditorGUILayout.IntField("Iterations", _term);
            GUILayout.Space(10);

            //BUTTONS
            Buttons();
            if (GUILayout.Button("Reload all", GUILayout.Height(15)))
            {
                _init = false;
            }

            //IMITATION LEARNING
            if (_stories.Count == 0)
            {
                var newStory = new QStory();
                newStory.ScenePath = EditorApplication.currentScene;
                newStory.Save(STORY_PATH);
                _stories.Add(newStory);
            }
            var story = _stories[0];

            GUILayout.Space(20);
            EditorGUILayout.LabelField("Training data");

            //Imitation training
            EditorGUILayout.BeginHorizontal();
            GUILayout.Space(17);
            GUILayout.Label("Imitation learning");
            if (GUILayout.Button("Record"))
            {
                _mode         = QAIMode.Imitating;
                _currentStory = story;
                ChangePlayMode();
            }
            EditorGUILayout.EndHorizontal();
            foreach (var exp in story.ImitationExperiences)
            {
                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(35);
                GUILayout.Label(exp.Name);
                if (GUILayout.Button("Delete"))
                {
                    story.ImitationExperiences.Remove(exp);
                    story.Save(STORY_PATH);
                    return;
                }
                EditorGUILayout.EndHorizontal();
            }

            EditorGUILayout.EndScrollView();

            if (_showAdvanced = EditorGUILayout.Foldout(_showAdvanced, "Advanced options"))
            {
                EditorGUI.indentLevel++;
                _visualize = EditorGUILayout.Toggle("Visualize Network", _visualize);
                _manager.PrioritizedSweeping = EditorGUILayout.Toggle("Priority Sweeping", _manager.PrioritizedSweeping);
            }


            // Set the values in the AI manager to be saved with the scene.
            if (_manager.ActiveAgent != _agent ||
                _manager.Remake != _remake ||
                _manager.Terminator != _term ||
                _manager.ActiveAgent != _agent ||
                _manager.Tester != _tester ||
                _manager.Mode != _mode ||
                _manager.VisualizeNetwork != _visualize)
            {
                EditorApplication.MarkSceneDirty();
            }

            _manager.Remake           = _remake;
            _manager.Benchmark        = _benchmark;
            _manager.Terminator       = _term;
            _manager.ActiveAgent      = _agent;
            _manager.Tester           = _tester;
            _manager.VisualizeNetwork = _visualize;
            _manager.Mode             = _mode;
            _manager.ModeOverride     = _mode;

//            _manager.OptionWindow = this;

            if (_forceStart)
            {
                _forceStart = false;
                ChangePlayMode();
            }
        }