Beispiel #1
0
 public void CollectState(NetStream stream)
 {
     stream.Write(isSpawned);
     if (isSpawned)
     {
         posEncoderBlock.CollectState(stream, base.transform.position);
         rotEncoderBlock.CollectState(stream, base.transform.rotation);
         for (int i = 0; i < letters.Count; i++)
         {
             CreditsLetter creditsLetter = letters[i];
             if (creditsLetter == null)
             {
                 stream.Write(v: false);
                 continue;
             }
             stream.Write(v: true);
             NetVector3Encoder netVector3Encoder = posEncoder;
             Vector3           localPosition     = creditsLetter.transform.localPosition;
             Character         character         = characters[i];
             netVector3Encoder.CollectState(stream, localPosition - character.spawnPos);
             rotEncoder.CollectState(stream, creditsLetter.transform.localRotation);
         }
     }
     bucket.Collecting();
 }
    public void ReleaseLetter(CreditsLetter letter)
    {
        List <CreditsLetter> list = repository[letter.character];

        list.Add(letter);
        letter.gameObject.SetActive(value: false);
        letter.GetComponent <Rigidbody>().isKinematic = true;
    }
Beispiel #3
0
 private void SpawnLetter(int idx)
 {
     if (!(letters[idx] != null))
     {
         Character     character = characters[idx];
         CreditsLetter letter    = ctext.GetLetter(character.c);
         letter.transform.SetParent(base.transform, worldPositionStays: false);
         letter.transform.localPosition = character.spawnPos;
         letter.transform.localScale    = new Vector3(character.size, character.size, character.size);
         letter.Attach(this, centerOffset);
         letters[idx] = letter;
         activeLetters++;
     }
 }
Beispiel #4
0
    public void ApplyState(NetStream state)
    {
        bool flag = state.ReadBool();

        if (flag != isSpawned)
        {
            if (flag)
            {
                SpawnLetters(Vector3.zero);
            }
            else
            {
                DespawnAll();
            }
        }
        if (!flag)
        {
            return;
        }
        base.transform.position = posEncoderBlock.ApplyState(state).SetY(lineY);
        base.transform.rotation = rotEncoderBlock.ApplyState(state);
        for (int i = 0; i < letters.Count; i++)
        {
            bool          flag2         = state.ReadBool();
            CreditsLetter creditsLetter = letters[i];
            if (creditsLetter != null && !flag2)
            {
                DespawnLetter(i);
                creditsLetter = null;
            }
            else if (creditsLetter == null && flag2)
            {
                SpawnLetter(i);
                creditsLetter = letters[i];
            }
            if (flag2)
            {
                Transform transform = creditsLetter.transform;
                Vector3   a         = posEncoder.ApplyState(state);
                Character character = characters[i];
                transform.localPosition = a + character.spawnPos;
                creditsLetter.transform.localRotation = rotEncoder.ApplyState(state);
            }
        }
    }
    public CreditsLetter GetLetter(char character)
    {
        if (!repository.ContainsKey(character))
        {
            Debug.LogError("Letter missing: " + character);
            if (character == 'é')
            {
                character = 'e';
            }
        }
        List <CreditsLetter> list          = repository[character];
        CreditsLetter        creditsLetter = null;

        if (list.Count > 0)
        {
            creditsLetter = list[0];
            list.RemoveAt(0);
        }
        else
        {
            creditsLetter = Object.Instantiate(masters[character].gameObject).GetComponent <CreditsLetter>();
        }
        return(creditsLetter);
    }
Beispiel #6
0
    public void ApplyLerpedState(NetStream state0, NetStream state1, float mix)
    {
        bool flag  = state0?.ReadBool() ?? false;
        bool flag2 = state1.ReadBool();

        if (flag2 != isSpawned)
        {
            if (flag2)
            {
                SpawnLetters(Vector3.zero);
            }
            else
            {
                DespawnAll();
            }
        }
        if (flag && flag2)
        {
            base.transform.position = posEncoderBlock.ApplyLerpedState(state0, state1, mix).SetY(lineY);
            base.transform.rotation = rotEncoderBlock.ApplyLerpedState(state0, state1, mix);
        }
        else if (flag2)
        {
            base.transform.position = posEncoderBlock.ApplyState(state1).SetY(lineY);
            base.transform.rotation = rotEncoderBlock.ApplyState(state1);
        }
        else if (flag)
        {
            posEncoderBlock.ApplyState(state0);
            rotEncoderBlock.ApplyState(state0);
        }
        for (int i = 0; i < letters.Count; i++)
        {
            bool          flag3         = flag && state0.ReadBool();
            bool          flag4         = flag2 && state1.ReadBool();
            CreditsLetter creditsLetter = letters[i];
            if (creditsLetter != null && !flag4)
            {
                DespawnLetter(i);
                creditsLetter = null;
            }
            else if (creditsLetter == null && flag4)
            {
                SpawnLetter(i);
                creditsLetter = letters[i];
            }
            if (flag3 && flag4)
            {
                Transform transform = creditsLetter.transform;
                Vector3   a         = posEncoder.ApplyLerpedState(state0, state1, mix);
                Character character = characters[i];
                transform.localPosition = a + character.spawnPos;
                creditsLetter.transform.localRotation = rotEncoder.ApplyLerpedState(state0, state1, mix);
            }
            else if (flag4)
            {
                Transform transform2 = creditsLetter.transform;
                Vector3   a2         = posEncoder.ApplyState(state1);
                Character character2 = characters[i];
                transform2.localPosition = a2 + character2.spawnPos;
                creditsLetter.transform.localRotation = rotEncoder.ApplyState(state1);
            }
            else if (flag3)
            {
                posEncoder.ApplyState(state0);
                rotEncoder.ApplyState(state0);
            }
        }
    }