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