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(); } }