Exemplo n.º 1
0
 public void StartWait(float fTime)
 {
     m_eCurrProcess = E_PROCESS_TYPE.WAIT;
     m_fTargetTime  = Time.realtimeSinceStartup + fTime;
     //m_fTimer = 0.0f;
     m_bWaiting = true;
 }
Exemplo n.º 2
0
    public void StartProcess(E_PROCESS_TYPE eProcess)
    {
        this.m_eCurrProcess = eProcess;

        if (m_eCurrProcess != E_PROCESS_TYPE.PAUSE)
        {
            Resume();
        }

        switch (this.m_eCurrProcess)
        {
        case E_PROCESS_TYPE.WAIT:
            StartWait(CoroutineManager.m_fWaitSecond);
            break;

        case E_PROCESS_TYPE.END:
            RemoveThis();
            break;

        case E_PROCESS_TYPE.PAUSE:
            Pause();
            break;

        case E_PROCESS_TYPE.WWW:
            if (CoroutineManager.m_Www != null)
            {
                m_WWW      = CoroutineManager.m_Www;
                m_bWaitWWW = true;
            }
            break;
        }
    }
Exemplo n.º 3
0
    public void SetState()
    {
        m_eCurrProcess = CoroutineManager.m_eCurrProcess;
        StartProcess(m_eCurrProcess);

#if UNITY_EDITOR
        m_nReturnCount++;
        for (int i = 0; i < CoroutineManager.m_strMsg.Count; i++)
        {
            m_strLog.Add("[" + m_nReturnCount.ToString() + "]" + CoroutineManager.m_strMsg[i]);
        }
        if (m_strLog.Count > 50)
        {
            m_strLog.RemoveAt(0);
        }
#endif
    }
Exemplo n.º 4
0
    public void SetupUpdater(IEnumerator Main)
    {
        m_Iterator = Main;
#if UNITY_EDITOR
        m_strIterName = m_Iterator.ToString();
#endif
        m_fTimer      = 0.0f;
        m_fTargetTime = 0.0f;
        m_bWaiting    = false;
        m_Next_IteratorList.Clear();
        m_Next_RoutineList.Clear();
        m_nMonoKey     = 0;
        m_bPause       = false;
        m_bWaitWWW     = false;
        m_WWW          = null;
        m_eCurrProcess = E_PROCESS_TYPE.PASS;
        m_nUpdateCount = 0;
        m_bFirstUpdate = true;
    }
Exemplo n.º 5
0
    private void ExecuteProcess(E_PROCESS_TYPE eProcess)
    {
        this.m_eCurrProcess = eProcess;
        switch (this.m_eCurrProcess)
        {
        case E_PROCESS_TYPE.PASS:
            this.Update();
            break;

        case E_PROCESS_TYPE.WAIT:
            if (this.m_bWaiting)
            {
                if (this.ProcessWait())
                {
                    this.InitTimer();
                    this.Update();
                }
            }
            break;

        case E_PROCESS_TYPE.END:
            RemoveThis();
            break;

        case E_PROCESS_TYPE.PAUSE:
            Pause();
            break;

        case E_PROCESS_TYPE.WWW:
            if (this.m_WWW.isDone)
            {
                this.Update();
                this.m_bWaitWWW = false;
            }
            break;
        }
    }
Exemplo n.º 6
0
 static public object WWW(WWW Www)
 {
     m_Www          = Www;
     m_eCurrProcess = E_PROCESS_TYPE.WWW;
     return(null);
 }
Exemplo n.º 7
0
 static public object End()
 {
     m_eCurrProcess = E_PROCESS_TYPE.END;
     return(null);
 }
Exemplo n.º 8
0
 static public object Pause()
 {
     m_eCurrProcess = E_PROCESS_TYPE.PAUSE;
     return(null);
 }
Exemplo n.º 9
0
 static public object Wait(float fSecond)
 {
     m_fWaitSecond  = fSecond;
     m_eCurrProcess = E_PROCESS_TYPE.WAIT;
     return(null);
 }
Exemplo n.º 10
0
 static public object Pass()
 {
     m_eCurrProcess = E_PROCESS_TYPE.PASS;
     return(null);
 }
Exemplo n.º 11
0
    public override void OnInspectorGUI()
    {
        GUILayout.Label(string.Format("사용중인 객체 수 : {0}", m_This.g_nObjectCount));
        GUILayout.Label(string.Format("사용중인 모든 코루틴 수 : {0}", m_This.g_nCoroutineCount));
        GUILayout.Label(string.Format("사용중인 전역 코루틴 수 : {0}", m_This.g_nGlobalCoroutineCount));

        GUIStyle AlignmentStyle = new GUIStyle("Button");

        AlignmentStyle.alignment = TextAnchor.MiddleLeft;

        m_ScrollPos = GUILayout.BeginScrollView(m_ScrollPos);

        for (int i = 0; i < m_This.g_ObjectList.Count; i++)
        {
            bool bOpen = m_This.g_ObjectList[i].m_bOpen;
            if (GUILayout.Button(string.Concat(bOpen ? "▼" : "△", " [", m_This.g_ObjectList[i].m_CoroutineList.Count, "]\t", m_This.g_ObjectList[i].m_Mono.gameObject.name), AlignmentStyle))
            {
                m_This.g_ObjectList[i].m_bOpen = !m_This.g_ObjectList[i].m_bOpen;
            }

            if (m_This.g_ObjectList[i].m_bOpen)
            {
                GUILayout.BeginVertical(EditorStyles.textArea);
                EditorGUILayout.ObjectField(m_This.g_ObjectList[i].m_Mono, typeof(MonoBehaviour), false);
                SerializedProperty g_ObjectList = serializedObject.FindProperty("g_ObjectList");
                SerializedProperty ObjectInfo   = g_ObjectList.GetArrayElementAtIndex(i);
                for (int j = 0; j < m_This.g_ObjectList[i].m_CoroutineList.Count; j++)
                {
                    GUILayout.BeginVertical(EditorStyles.textArea);
                    string  strName     = m_This.g_ObjectList[i].m_CoroutineList[j].m_strIterName;
                    Updater CurrUpdater = m_This.g_ObjectList[i].m_CoroutineList[j];
                    GUILayout.BeginHorizontal();
                    GUILayout.Label(string.Format("{0}", strName));
                    if (GUILayout.Button((CurrUpdater.m_bOpenLog ? "▼" : "△") + "Log", AlignmentStyle))
                    {
                        CurrUpdater.m_bOpenLog = !CurrUpdater.m_bOpenLog;
                    }
                    if (GUILayout.Button((CurrUpdater.m_bOpenInfo ? "▼" : "△") + "Detail", AlignmentStyle))
                    {
                        CurrUpdater.m_bOpenInfo = !CurrUpdater.m_bOpenInfo;
                    }
                    GUILayout.EndHorizontal();
                    if (CurrUpdater.m_bOpenLog)
                    {
                        GUILayout.BeginVertical(EditorStyles.textArea);
                        for (int k = 0; k < CurrUpdater.m_strLog.Count; k++)
                        {
                            GUILayout.BeginHorizontal(EditorStyles.textArea);
                            GUILayout.Label(string.Concat("[", k.ToString(), "]"));
                            GUILayout.Label(CurrUpdater.m_strLog[k]);
                            GUILayout.EndHorizontal();
                        }
                        GUILayout.EndVertical();
                    }
                    if (CurrUpdater.m_bOpenInfo)
                    {
                        SerializedProperty CoroutineList = ObjectInfo.FindPropertyRelative("m_CoroutineList");
                        SerializedProperty Item          = CoroutineList.GetArrayElementAtIndex(j);
                        EditorGUILayout.PropertyField(Item, true);
                    }
                    GUILayout.BeginHorizontal();
                    GUILayout.Label(string.Format("상태 : "));
                    EditorGUI.BeginChangeCheck();
                    E_PROCESS_TYPE eNextProcess = (E_PROCESS_TYPE)EditorGUILayout.EnumPopup(CurrUpdater.m_eCurrProcess, GUILayout.Width(150));
                    if (EditorGUI.EndChangeCheck())
                    {
                        if (eNextProcess == E_PROCESS_TYPE.WAIT)
                        {
                            CoroutineManager.m_fWaitSecond = 10.0f;
                        }
                        CurrUpdater.StartProcess(eNextProcess);
                    }
                    if (CurrUpdater.m_eCurrProcess == E_PROCESS_TYPE.WAIT)
                    {
                        GUILayout.Label("대기시간 ");
                        float fSecond = (CurrUpdater.m_fTargetTime - CurrUpdater.m_fTimer);
                        EditorGUI.BeginChangeCheck();
                        fSecond = EditorGUILayout.FloatField(fSecond, GUILayout.Width(100));
                        if (EditorGUI.EndChangeCheck())
                        {
                            CurrUpdater.m_fTargetTime = CurrUpdater.m_fTimer + fSecond;
                        }
                        GUILayout.Label("초");
                    }

                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.EndVertical();
                }
                GUILayout.EndVertical();
            }
        }

        GUILayout.EndScrollView();

        if (!Application.isPlaying)
        {
            if (GUILayout.Button(string.Format("{0} 에디터 실행", CoroutineManager.Instance.IsRunningOnEditor ? "(On)" : "(Off)")))
            {
                CoroutineManager.Instance.Init();
            }
        }

        if (GUILayout.Button("코루틴초기화"))
        {
            CoroutineManager.Instance.Clear();
        }

        base.OnInspectorGUI();
    }