// Token: 0x06003AB2 RID: 15026 RVA: 0x0012860C File Offset: 0x00126A0C
    public bool UpdatePlayback(ref ArrayList entries)
    {
        if (!this.IsPlaying())
        {
            return(false);
        }
        OVRLipSyncContextSequencer.Sequence sequence = (OVRLipSyncContextSequencer.Sequence) this.sequences[this.currentSequence];
        if (this.currentSequenceEntry >= sequence.entries.Count)
        {
            this.currentSequence      = -1;
            this.currentSequenceEntry = 0;
            return(false);
        }
        float num = Time.time - this.startTime;

        OVRLipSyncContextSequencer.SequenceEntry sequenceEntry = (OVRLipSyncContextSequencer.SequenceEntry)sequence.entries[this.currentSequenceEntry];
        float timestamp = sequenceEntry.timestamp;

        while (num > timestamp)
        {
            if (sequenceEntry.action != -1)
            {
                entries.Add(sequenceEntry.Clone());
            }
            this.currentSequenceEntry++;
            if (this.currentSequenceEntry >= sequence.entries.Count)
            {
                this.currentSequence = -1;
                return(false);
            }
            sequenceEntry = (OVRLipSyncContextSequencer.SequenceEntry)sequence.entries[this.currentSequenceEntry];
            timestamp     = sequenceEntry.timestamp;
        }
        return(true);
    }
    // Token: 0x06003AA9 RID: 15017 RVA: 0x00127FF4 File Offset: 0x001263F4
    public bool LoadSequence(string sequenceName)
    {
        for (int i = 0; i < this.sequences.Count; i++)
        {
            if (((OVRLipSyncContextSequencer.Sequence) this.sequences[i]).name == sequenceName)
            {
                this.currentSequence = i;
                return(true);
            }
        }
        if (PlayerPrefs.GetString(sequenceName, string.Empty) == string.Empty)
        {
            Debug.Log("OVRLipSyncContextSequencer WARNING: Cannot load sequence " + sequenceName);
            return(false);
        }
        OVRLipSyncContextSequencer.Sequence sequence = new OVRLipSyncContextSequencer.Sequence(0);
        sequence.name = sequenceName;
        string text = string.Empty;

        text                = sequenceName + "_INFO";
        sequence.info       = PlayerPrefs.GetString(text, "NO INFO");
        text                = sequenceName + "_NE";
        sequence.numEntries = PlayerPrefs.GetInt(text, 0);
        for (int j = 0; j < sequence.numEntries; j++)
        {
            OVRLipSyncContextSequencer.SequenceEntry sequenceEntry = new OVRLipSyncContextSequencer.SequenceEntry(0);
            text  = sequenceName + "_E_";
            text += j;
            string text2 = string.Empty;
            text2  = text;
            text2 += "_TIMESTAMP";
            sequenceEntry.timestamp = PlayerPrefs.GetFloat(text2, 0f);
            text2  = text;
            text2 += "_ACTION";
            sequenceEntry.action = PlayerPrefs.GetInt(text2, -1);
            text2  = text;
            text2 += "_DATA1";
            sequenceEntry.data1 = PlayerPrefs.GetInt(text2, 0);
            text2  = text;
            text2 += "_DATA2";
            sequenceEntry.data2 = PlayerPrefs.GetInt(text2, 0);
            text2  = text;
            text2 += "_DATA3";
            sequenceEntry.data3 = PlayerPrefs.GetInt(text2, 0);
            sequence.entries.Add(sequenceEntry);
        }
        if (sequence.numEntries != sequence.entries.Count)
        {
            Debug.Log("OVRLipSyncContextSequencer WARNING: " + sequenceName + " might be corrupted.");
            return(false);
        }
        this.sequences.Add(sequence);
        return(true);
    }
 // Token: 0x06003AA4 RID: 15012 RVA: 0x00127CDC File Offset: 0x001260DC
 private void RecordVisemeSignalSequenceEntry(OVRLipSync.ovrLipSyncSignals signal, int viseme, int arg1, int arg2)
 {
     if (this.sequencer != null && this.sequencer.IsRecording())
     {
         OVRLipSyncContextSequencer.SequenceEntry sequenceEntry = default(OVRLipSyncContextSequencer.SequenceEntry);
         sequenceEntry.action = (int)signal;
         sequenceEntry.data1  = viseme;
         sequenceEntry.data2  = arg1;
         sequenceEntry.data3  = arg2;
         this.sequencer.AddEntryToRecording(ref sequenceEntry);
     }
 }
 // Token: 0x06003AAD RID: 15021 RVA: 0x00128420 File Offset: 0x00126820
 public bool AddEntryToRecording(ref OVRLipSyncContextSequencer.SequenceEntry entry)
 {
     if (!this.recording)
     {
         return(false);
     }
     OVRLipSyncContextSequencer.SequenceEntry sequenceEntry = entry.Clone();
     sequenceEntry.timestamp = Time.time - this.startTime;
     this.recordingSequence.entries.Add(sequenceEntry);
     this.recordingSequence.numEntries = this.recordingSequence.numEntries + 1;
     return(true);
 }
 // Token: 0x06003AB6 RID: 15030 RVA: 0x001287BC File Offset: 0x00126BBC
 public OVRLipSyncContextSequencer.Sequence Clone()
 {
     OVRLipSyncContextSequencer.Sequence result = new OVRLipSyncContextSequencer.Sequence(0);
     result.name       = this.name;
     result.info       = this.info;
     result.numEntries = this.numEntries;
     for (int i = 0; i < this.entries.Count; i++)
     {
         OVRLipSyncContextSequencer.SequenceEntry sequenceEntry = (OVRLipSyncContextSequencer.SequenceEntry) this.entries[i];
         result.entries.Add(sequenceEntry.Clone());
     }
     return(result);
 }
    /// <summary>
    /// Records the viseme signal.
    /// </summary>
    /// <param name="key">Key.</param>
    /// <param name="viseme">Viseme.</param>
    /// <param name="arg1">Arg1.</param>
    void RecordVisemeSignalSequenceEntry(OVRLipSync.ovrLipSyncSignals signal, int viseme, int arg1, int arg2)
    {
        // If record is on, add this to the list
        if ((sequencer != null) && sequencer.IsRecording())
        {
            OVRLipSyncContextSequencer.SequenceEntry e = new OVRLipSyncContextSequencer.SequenceEntry();
            e.action = (int)signal;
            e.data1  = viseme;
            e.data2  = arg1;
            e.data3  = arg2;

            sequencer.AddEntryToRecording(ref e);
        }
    }
    // Token: 0x06003AAA RID: 15018 RVA: 0x0012820C File Offset: 0x0012660C
    public bool SaveSequence(string sequenceName)
    {
        int num = -1;

        for (int i = 0; i < this.sequences.Count; i++)
        {
            if (((OVRLipSyncContextSequencer.Sequence) this.sequences[i]).name == sequenceName)
            {
                num = i;
                break;
            }
        }
        if (num == -1)
        {
            Debug.Log("OVRPhonemeContextSequencer WARNING: " + sequenceName + " does not exist, cannot save.");
            return(false);
        }
        OVRLipSyncContextSequencer.Sequence sequence = (OVRLipSyncContextSequencer.Sequence) this.sequences[num];
        PlayerPrefs.SetString(sequenceName, sequence.name);
        string text = sequenceName + "_INFO";

        PlayerPrefs.SetString(text, sequence.info);
        text = sequenceName + "_NE";
        PlayerPrefs.SetInt(text, sequence.numEntries);
        for (int j = 0; j < sequence.entries.Count; j++)
        {
            OVRLipSyncContextSequencer.SequenceEntry sequenceEntry = (OVRLipSyncContextSequencer.SequenceEntry)sequence.entries[j];
            text  = sequenceName + "_E_";
            text += j;
            string text2 = string.Empty;
            text2  = text;
            text2 += "_TIMESTAMP";
            PlayerPrefs.SetFloat(text2, sequenceEntry.timestamp);
            text2  = text;
            text2 += "_ACTION";
            PlayerPrefs.SetInt(text2, sequenceEntry.action);
            text2  = text;
            text2 += "_DATA1";
            PlayerPrefs.SetInt(text2, sequenceEntry.data1);
            text2  = text;
            text2 += "_DATA2";
            PlayerPrefs.SetInt(text2, sequenceEntry.data2);
            text2  = text;
            text2 += "_DATA3";
            PlayerPrefs.SetInt(text2, sequenceEntry.data3);
        }
        return(true);
    }
    // Token: 0x06003AA5 RID: 15013 RVA: 0x00127D44 File Offset: 0x00126144
    private bool SendVisemeSignalsPlaySequence()
    {
        if (this.sequencer == null)
        {
            return(false);
        }
        ArrayList arrayList = new ArrayList();
        bool      result    = this.sequencer.UpdatePlayback(ref arrayList);

        for (int i = 0; i < arrayList.Count; i++)
        {
            OVRLipSyncContextSequencer.SequenceEntry sequenceEntry = (OVRLipSyncContextSequencer.SequenceEntry)arrayList[i];
            this.lipsyncContext.SendSignal((OVRLipSync.ovrLipSyncSignals)sequenceEntry.action, sequenceEntry.data1, sequenceEntry.data2);
        }
        return(result);
    }
    /// <summary>
    /// Plaies the viseme signal.
    /// </summary>
    /// <returns><c>true</c>, if viseme signal was played, <c>false</c> otherwise.</returns>
    bool SendVisemeSignalsPlaySequence()
    {
        if (sequencer == null)
        {
            return(false);
        }

        ArrayList entries = new ArrayList();            // We will add SequenceEntries here

        bool result = sequencer.UpdatePlayback(ref entries);

        for (int i = 0; i < entries.Count; i++)
        {
            OVRLipSyncContextSequencer.SequenceEntry e = (OVRLipSyncContextSequencer.SequenceEntry)entries[i];
            lipsyncContext.SendSignal((OVRLipSync.ovrLipSyncSignals)e.action,
                                      e.data1, e.data2);             // e.data3 reserved
        }

        return(result);
    }
 // Token: 0x06003AAE RID: 15022 RVA: 0x00128480 File Offset: 0x00126880
 public bool StopRecording()
 {
     if (!this.recording)
     {
         return(false);
     }
     OVRLipSyncContextSequencer.SequenceEntry sequenceEntry = new OVRLipSyncContextSequencer.SequenceEntry(0);
     sequenceEntry.timestamp = Time.time - this.startTime;
     this.recordingSequence.entries.Add(sequenceEntry);
     for (int i = 0; i < this.sequences.Count; i++)
     {
         if (((OVRLipSyncContextSequencer.Sequence) this.sequences[i]).name == this.recordingSequence.name)
         {
             this.sequences.RemoveAt(i);
         }
     }
     this.sequences.Add(this.recordingSequence.Clone());
     this.recording = false;
     return(true);
 }