예제 #1
0
 public void Stop()
 {
     PlayingState  = PlayingStareType.Stopped;
     Recorder.time = (float)(lastPlayedTime - StartTime);
     Player.Pause();
     vp.Pause();
     Recorder.Pause();
 }
예제 #2
0
    public void StartReviewing(RecordingManager sender, VideoPlayer videoPlayer, AudioSource recorder, AudioClip master, double startTime, int endPos, AudioSource player)
    {
        ReviewPanel.SetActive(true);
        Sender            = sender;
        vp                = videoPlayer;
        Recorder          = recorder;
        Player            = player;
        StartTime         = startTime;
        InitialStartTime  = startTime;
        Master            = master;
        EndPosInRecording = endPos;
        lastPlayedTime    = startTime;
        int samples = Recorder.clip.frequency;

        LengthTime       = (float)endPos / samples;
        EndTime          = StartTime + LengthTime;
        InitialEndTime   = EndTime;
        StartPosInMaster = Master.channels * Mathf.FloorToInt(Master.samples * ((float)startTime / Master.length));
        vp.time          = startTime;
        Player.time      = (float)startTime;
        Player.Pause();
        vp.Pause();
        Recorder.Pause();
        Player.volume = OverwriteToggle.isOn ? 0 : 1;
        if (isFirstTime)
        {
            ObservableEventTrigger et = SeekBar.gameObject.AddComponent <ObservableEventTrigger>();
            et.OnPointerDownAsObservable().Subscribe(x => { focusOnSeekBar = true; });
            et.OnPointerUpAsObservable().Subscribe(x => { focusOnSeekBar = false; });

            SeekBar.OnValueChangedAsObservable().Where(x => !seekingByPlaying && isRunning).Throttle(new System.TimeSpan(500)).Subscribe(x =>
            {
                double time    = StartTime + x * LengthTime;
                lastPlayedTime = time;
                vp.time        = time;
                Player.time    = (float)time;
                Recorder.time  = (float)(x * LengthTime);
                Player.Pause();
                vp.Pause();
                Recorder.Pause();
            });
            OverwriteToggle.OnValueChangedAsObservable().Subscribe(overwrite =>
            {
                if (isRunning)
                {
                    Player.volume = overwrite ? 0 : 1;
                }
            });
            vp.seekCompleted += OnSeekCompleted;
        }
        PlayingState = PlayingStareType.Playing;
        isFirstTime  = false;
        isRunning    = true;
    }
예제 #3
0
    public void Play()
    {
        PlayingState = PlayingStareType.Playing;
        double time = lastPlayedTime;

        vp.time       = time;
        Player.time   = (float)time;
        Recorder.time = (float)(SeekBar.value * LengthTime);
        Player.Pause();
        vp.Pause();
        Recorder.Pause();
    }