private void SubmitToEngine(int playerIndex, List <Cmd> commandsToSubmit)
        {
            if (commandsToSubmit.Count == 1)
            {
                ITaskEngine taskEngine = m_engine.GetClientTaskEngine(playerIndex);
                taskEngine.TerminateAll();

                m_engine.Submit(playerIndex, commandsToSubmit[0]);

                //Render hit;
            }
            else if (commandsToSubmit.Count > 1)
            {
                CompositeCmd cmd = new CompositeCmd
                {
                    Commands = commandsToSubmit.ToArray()
                };

                ITaskEngine taskEngine = m_engine.GetClientTaskEngine(playerIndex);
                taskEngine.TerminateAll();

                m_engine.Submit(playerIndex, cmd);
            }
            else
            {
                Debug.LogWarning("No commands to submit");
            }
        }
        public void Reset()
        {
            m_taskEngine.TaskStateChanged -= OnTaskStateChanged;
            m_playerView.UnitCreated      -= OnUnitCreated;
            m_playerView.UnitRemoved      -= OnUnitRemoved;
            m_playerView.AssetCreated     -= OnAssetCreated;
            m_playerView.AssetRemoved     -= OnAssetRemoved;

            foreach (RunningTaskInfo task in m_state.TaskIdToTask.Values)
            {
                TaskInfo taskInfo = m_taskEngine.TerminateTask(task.TaskId);
                m_state.TaskTemplates[task.Type].Release(taskInfo);
            }

            m_taskEngine.TerminateAll();
            m_state.TaskIdToTask.Clear();
            m_state.UnitIdToTask.Clear();
            m_state.BusyUnits.Clear();
            m_state.FreeUnits.Clear();
        }