示例#1
0
    void OnGUI()
    {
        if (mDebugGuiScale <= 0 || mMovie == null)
        {
            return;
        }

        //	draw in the bottom left and move along
        int  wh        = (int)Mathf.Min(Screen.height * mDebugGuiScale, Screen.width * mDebugGuiScale);
        Rect debugRect = new Rect(0, Screen.height - wh, wh, wh);

        //	draw graphs on the row below
        if (mPerformanceTextures.Count > 0)
        {
            debugRect.y -= debugRect.height;
        }

        for (int t = 0; t < mStreamTextures.Count; t++)
        {
            var texture = mStreamTextures[t];
            if (texture == null)
            {
                continue;
            }

            GUI.DrawTexture(debugRect, texture);
            debugRect.x += debugRect.width;
        }

        //	draw graphs on the row below
        if (mPerformanceTextures.Count > 0)
        {
            debugRect.y += debugRect.height;
            debugRect.x  = 0;
        }

        for (int t = 0; t < mPerformanceTextures.Count; t++)
        {
            var texture = mPerformanceTextures[t];
            if (texture == null)
            {
                continue;
            }

            GUI.DrawTexture(debugRect, texture);
            debugRect.x += debugRect.width;
        }

        //	draw some other debug
        String Text = "";

        Text += "Codec: " + mMovie.GetCodec() + "\n";
        Text += "Error: " + mMovie.GetFatalError() + "\n";
        Text += "Last Frame Requested: " + mMovie.GetTimeMs() + "\n";
        Text += "Last Frame Copied: " + mMovie.GetLastFrameCopiedMs() + "\n";
        Text += "OutOfSync: " + ((long)mMovie.GetLastFrameCopiedMs() - (long)mMovie.GetTimeMs()) + "\n";
        GUI.Label(new Rect(0, Screen.height - (wh * 3), wh * 2, wh), Text);
    }
    void UpdateMovie()
    {
        //	queue not initialised (we haven't started)
        if (mFilenameQueue == null)
        {
            return;
        }

        //	see if movie is finished to move onto next
        if (mMovie != null)
        {
            //	check duration
            var Duration    = mMovie.GetDurationMs();
            var CurrentTime = mMovie.GetTimeMs();
            if (Duration > 0 && CurrentTime >= Duration)
            {
                mMovie = null;
                System.GC.Collect();
            }
            else
            {
                //Debug.Log("Current duration: " + CurrentTime + "/" + Duration );
            }
        }

        //	need to alloc next
        if (mMovie == null)
        {
            if (mFilenameQueue.Count == 0)
            {
                Debug.Log("queue finished.... ");
                OnFinished();
                return;
            }

            var Filename = mFilenameQueue [0];
            mFilenameQueue.RemoveAt(0);

            var Params = new PopMovieParams();
            //Params.mSkipPushFrames = true;
            try {
                mMovie = new PopMovie(Filename, Params, true);

                if (mEnableDebugLog)
                {
                    mMovie.AddDebugCallback(Debug.Log);
                }
            } catch (System.Exception e) {
                Debug.LogError("Error creating movie; " + e.Message);
                if (mErrorText != null)
                {
                    mErrorText.text = e.Message;
                }
            }
        }

        if (mMovie != null)
        {
            mMovie.Update();
        }
    }