Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of PortableSignalTranslator v1.0.1
PortableSignalTranslatorMod.dll
Decompiled a year agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyVersion("0.0.0.0")] namespace PortableSignalTranslator; public class PortableSignalTranslatorMod : MonoBehaviour { private static PortableSignalTranslatorMod instance; public static PortableSignalTranslatorMod Instance { get { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown if ((Object)(object)instance == (Object)null) { instance = Object.FindObjectOfType<PortableSignalTranslatorMod>(); if ((Object)(object)instance == (Object)null) { GameObject val = new GameObject("PortableSignalTranslatorMod"); instance = val.AddComponent<PortableSignalTranslatorMod>(); Object.DontDestroyOnLoad((Object)(object)val); } } return instance; } } private void Awake() { if ((Object)(object)instance == (Object)null) { instance = this; Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); } else if ((Object)(object)instance != (Object)(object)this) { Object.Destroy((Object)(object)((Component)this).gameObject); } } private void Start() { ((MonoBehaviour)this).StartCoroutine(InitializeMod()); } private IEnumerator InitializeMod() { yield return (object)new WaitUntil((Func<bool>)(() => (Object)(object)StartOfRound.Instance != (Object)null)); yield return (object)new WaitForSeconds(2f); AddPortableSignalTranslatorToStore(); } private void AddPortableSignalTranslatorToStore() { try { Terminal val = Object.FindObjectOfType<Terminal>(); if ((Object)(object)val != (Object)null && val.buyableItemsList != null) { Item[] array = (Item[])(object)new Item[val.buyableItemsList.Length + 1]; Array.Copy(val.buyableItemsList, array, val.buyableItemsList.Length); Item val2 = CreatePortableSignalTranslatorItem(); array[^1] = val2; val.buyableItemsList = array; Debug.Log((object)"Portable Signal Translator added to store successfully!"); } else { Debug.LogError((object)"Terminal not found or buyableItemsList is null!"); } } catch (Exception arg) { Debug.LogError((object)$"Error adding Portable Signal Translator to store: {arg}"); } } private Item CreatePortableSignalTranslatorItem() { //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) Item val = ScriptableObject.CreateInstance<Item>(); val.itemId = 999; val.itemName = "Portable Signal Translator"; val.creditsWorth = 150; val.weight = 1.5f; val.twoHanded = false; val.twoHandedAnimation = false; val.disableHandsOnWall = false; val.canBeGrabbedBeforeGameStart = false; val.itemIsTrigger = false; val.holdButtonUse = false; val.itemSpawnsOnGround = true; val.isConductiveMetal = false; val.isScrap = false; val.lockedInDemo = false; val.highestSalePercentage = 80; val.maxValue = 0; val.minValue = 0; val.requiresBattery = true; val.batteryUsage = 20f; val.automaticallySetUsingPower = true; val.grabAnim = "Grab"; val.useAnim = "Use"; val.pocketAnim = "Pocket"; val.throwAnim = "Throw"; val.syncUseFunction = true; val.syncDiscardFunction = true; val.syncInteractLRFunction = true; val.saveItemVariable = false; val.allowDroppingAheadOfPlayer = true; val.restingRotation = new Vector3(0f, 0f, 90f); val.rotationOffset = Vector3.zero; val.positionOffset = Vector3.zero; val.meshOffset = true; val.usableInSpecialAnimations = false; val.canBeInspected = true; val.spawnPrefab = CreatePortableSignalTranslatorPrefab(); return val; } private GameObject CreatePortableSignalTranslatorPrefab() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Expected O, but got Unknown //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Expected O, but got Unknown //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Expected O, but got Unknown //IL_0072: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("PortableSignalTranslatorPrefab"); PortableSignalTranslatorItem portableSignalTranslatorItem = val.AddComponent<PortableSignalTranslatorItem>(); GameObject val2 = new GameObject("Visual"); val2.transform.SetParent(val.transform); MeshFilter val3 = val2.AddComponent<MeshFilter>(); MeshRenderer val4 = val2.AddComponent<MeshRenderer>(); Mesh mesh = CreateCubeMesh(); val3.mesh = mesh; Material val5 = new Material(Shader.Find("Standard")); val5.color = new Color(0.2f, 0.8f, 0.2f); ((Renderer)val4).material = val5; BoxCollider val6 = val2.AddComponent<BoxCollider>(); val6.size = new Vector3(0.3f, 0.1f, 0.2f); NetworkObject val7 = val.AddComponent<NetworkObject>(); ((GrabbableObject)portableSignalTranslatorItem).itemProperties = CreatePortableSignalTranslatorItemProperties(); return val; } private Mesh CreateCubeMesh() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Unknown result type (might be due to invalid IL or missing references) Mesh val = new Mesh(); Vector3[] vertices = (Vector3[])(object)new Vector3[8] { new Vector3(-0.5f, -0.5f, -0.5f), new Vector3(0.5f, -0.5f, -0.5f), new Vector3(0.5f, 0.5f, -0.5f), new Vector3(-0.5f, 0.5f, -0.5f), new Vector3(-0.5f, -0.5f, 0.5f), new Vector3(0.5f, -0.5f, 0.5f), new Vector3(0.5f, 0.5f, 0.5f), new Vector3(-0.5f, 0.5f, 0.5f) }; int[] triangles = new int[36] { 0, 2, 1, 0, 3, 2, 2, 3, 4, 2, 4, 5, 1, 2, 5, 1, 5, 6, 0, 7, 4, 0, 4, 1, 0, 6, 7, 0, 1, 6, 7, 6, 5, 7, 5, 4 }; val.vertices = vertices; val.triangles = triangles; val.RecalculateNormals(); return val; } private Item CreatePortableSignalTranslatorItemProperties() { Item val = ScriptableObject.CreateInstance<Item>(); val.itemName = "Portable Signal Translator"; val.creditsWorth = 150; val.weight = 1.5f; val.requiresBattery = true; val.batteryUsage = 20f; val.toolTips = new string[5] { "Portable Signal Translator", "[LMB] Open Message UI", "[E] Use (same as LMB)", "[ESC] Close UI", "[Enter] Send Message" }; return val; } } public class PortableSignalTranslatorItem : GrabbableObject { [Header("Portable Signal Translator")] public bool isActive = false; public float batteryDrainRate = 2f; [Header("Audio")] public AudioSource audioSource; public AudioClip activateSound; public AudioClip deactivateSound; public AudioClip transmitSound; [Header("Visual Effects")] public Light indicatorLight; public Material activeMaterial; public Material inactiveMaterial; public MeshRenderer mainRenderer; [Header("UI")] public GameObject messageUIPrefab; private GameObject messageUIInstance; private TMP_InputField messageInput; private TextMeshProUGUI characterCountText; private bool wasActiveLastFrame = false; private float lastBatteryCheck = 0f; private bool isUIOpen = false; private const int MAX_MESSAGE_LENGTH = 9; public override void Start() { ((GrabbableObject)this).Start(); if ((Object)(object)audioSource == (Object)null) { audioSource = ((Component)this).GetComponent<AudioSource>(); if ((Object)(object)audioSource == (Object)null) { audioSource = ((Component)this).gameObject.AddComponent<AudioSource>(); } } if ((Object)(object)indicatorLight == (Object)null) { indicatorLight = ((Component)this).GetComponentInChildren<Light>(); } if ((Object)(object)mainRenderer == (Object)null) { mainRenderer = ((Component)this).GetComponentInChildren<MeshRenderer>(); } InitializeItem(); } private void InitializeItem() { isActive = false; UpdateVisuals(); if ((Object)(object)base.itemProperties == (Object)null) { Debug.LogWarning((object)"PortableSignalTranslatorItem: itemProperties is null!"); } } public override void Update() { ((GrabbableObject)this).Update(); if (isActive && base.insertedBattery != null) { HandleBatteryDrain(); } if (wasActiveLastFrame != isActive) { UpdateVisuals(); wasActiveLastFrame = isActive; } if (isUIOpen && (Object)(object)messageInput != (Object)null) { HandleUIInput(); } } private void HandleBatteryDrain() { if (Time.time - lastBatteryCheck >= 1f) { lastBatteryCheck = Time.time; if (base.insertedBattery != null) { base.insertedBattery.charge = base.insertedBattery.charge * 0.25f; if (base.insertedBattery.charge <= 0f) { base.insertedBattery.charge = 0f; isActive = false; ((GrabbableObject)this).UseUpBatteries(); } } } else { lastBatteryCheck = Time.time; } } public override void ItemActivate(bool used, bool buttonDown = true) { if (used && buttonDown) { if (base.insertedBattery == null || base.insertedBattery.charge <= 0f) { Debug.Log((object)"Portable Signal Translator: No battery or battery is dead!"); } else if (isUIOpen) { CloseMessageUI(); } else { OpenMessageUI(); } } } private void OpenMessageUI() { if (isUIOpen) { return; } if ((Object)(object)messageUIInstance == (Object)null) { CreateMessageUI(); } if ((Object)(object)messageUIInstance != (Object)null) { messageUIInstance.SetActive(true); isUIOpen = true; if ((Object)(object)messageInput != (Object)null) { messageInput.text = ""; ((Selectable)messageInput).Select(); messageInput.ActivateInputField(); } UpdateCharacterCount(""); if ((Object)(object)audioSource != (Object)null && (Object)(object)activateSound != (Object)null) { audioSource.PlayOneShot(activateSound); } Debug.Log((object)"Portable Signal Translator UI opened!"); } } private void CloseMessageUI() { if (isUIOpen && (Object)(object)messageUIInstance != (Object)null) { messageUIInstance.SetActive(false); isUIOpen = false; if ((Object)(object)messageInput != (Object)null) { messageInput.text = ""; messageInput.DeactivateInputField(false); } if ((Object)(object)audioSource != (Object)null && (Object)(object)deactivateSound != (Object)null) { audioSource.PlayOneShot(deactivateSound); } Debug.Log((object)"Portable Signal Translator UI closed!"); } } private void CreateMessageUI() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Expected O, but got Unknown //IL_013b: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01bd: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Expected O, but got Unknown //IL_020f: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Expected O, but got Unknown //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0277: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_029a: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_031a: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Expected O, but got Unknown //IL_034f: Unknown result type (might be due to invalid IL or missing references) //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_0373: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03c3: Unknown result type (might be due to invalid IL or missing references) //IL_03ca: Expected O, but got Unknown //IL_03f8: Unknown result type (might be due to invalid IL or missing references) //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Unknown result type (might be due to invalid IL or missing references) //IL_042c: Unknown result type (might be due to invalid IL or missing references) //IL_0433: Expected O, but got Unknown //IL_0453: Unknown result type (might be due to invalid IL or missing references) //IL_0460: Unknown result type (might be due to invalid IL or missing references) //IL_046d: Unknown result type (might be due to invalid IL or missing references) //IL_0492: Unknown result type (might be due to invalid IL or missing references) //IL_04a2: Unknown result type (might be due to invalid IL or missing references) //IL_04a9: Expected O, but got Unknown //IL_04c9: Unknown result type (might be due to invalid IL or missing references) //IL_04d6: Unknown result type (might be due to invalid IL or missing references) //IL_04e3: Unknown result type (might be due to invalid IL or missing references) //IL_0513: Unknown result type (might be due to invalid IL or missing references) //IL_0542: Unknown result type (might be due to invalid IL or missing references) //IL_054c: Expected O, but got Unknown messageUIInstance = new GameObject("PortableSignalTranslatorUI"); messageUIInstance.transform.SetParent(GameObject.Find("Canvas").transform, false); RectTransform val = messageUIInstance.AddComponent<RectTransform>(); val.anchorMin = new Vector2(0.5f, 0.5f); val.anchorMax = new Vector2(0.5f, 0.5f); val.anchoredPosition = Vector2.zero; val.sizeDelta = new Vector2(400f, 200f); GameObject val2 = new GameObject("Background"); val2.transform.SetParent(messageUIInstance.transform, false); RectTransform val3 = val2.AddComponent<RectTransform>(); val3.anchorMin = Vector2.zero; val3.anchorMax = Vector2.one; val3.sizeDelta = Vector2.zero; Image val4 = val2.AddComponent<Image>(); ((Graphic)val4).color = new Color(0f, 0f, 0f, 0.8f); GameObject val5 = new GameObject("Title"); val5.transform.SetParent(messageUIInstance.transform, false); RectTransform val6 = val5.AddComponent<RectTransform>(); val6.anchorMin = new Vector2(0f, 0.8f); val6.anchorMax = new Vector2(1f, 1f); val6.sizeDelta = Vector2.zero; val6.offsetMin = new Vector2(10f, 0f); val6.offsetMax = new Vector2(-10f, 0f); TextMeshProUGUI val7 = val5.AddComponent<TextMeshProUGUI>(); ((TMP_Text)val7).text = "PORTABLE SIGNAL TRANSLATOR"; ((TMP_Text)val7).fontSize = 16f; ((Graphic)val7).color = Color.white; ((TMP_Text)val7).alignment = (TextAlignmentOptions)514; GameObject val8 = new GameObject("InputField"); val8.transform.SetParent(messageUIInstance.transform, false); RectTransform val9 = val8.AddComponent<RectTransform>(); val9.anchorMin = new Vector2(0.1f, 0.4f); val9.anchorMax = new Vector2(0.9f, 0.6f); val9.sizeDelta = Vector2.zero; GameObject val10 = new GameObject("InputBackground"); val10.transform.SetParent(val8.transform, false); RectTransform val11 = val10.AddComponent<RectTransform>(); val11.anchorMin = Vector2.zero; val11.anchorMax = Vector2.one; val11.sizeDelta = Vector2.zero; Image val12 = val10.AddComponent<Image>(); ((Graphic)val12).color = Color.white; messageInput = val8.AddComponent<TMP_InputField>(); messageInput.textComponent = (TMP_Text)(object)val8.AddComponent<TextMeshProUGUI>(); messageInput.textComponent.fontSize = 14f; ((Graphic)messageInput.textComponent).color = Color.black; messageInput.textComponent.alignment = (TextAlignmentOptions)514; messageInput.characterLimit = 9; GameObject val13 = new GameObject("CharacterCount"); val13.transform.SetParent(messageUIInstance.transform, false); RectTransform val14 = val13.AddComponent<RectTransform>(); val14.anchorMin = new Vector2(0.1f, 0.25f); val14.anchorMax = new Vector2(0.9f, 0.35f); val14.sizeDelta = Vector2.zero; characterCountText = val13.AddComponent<TextMeshProUGUI>(); ((TMP_Text)characterCountText).fontSize = 12f; ((Graphic)characterCountText).color = Color.white; ((TMP_Text)characterCountText).alignment = (TextAlignmentOptions)514; GameObject val15 = new GameObject("SendButton"); val15.transform.SetParent(messageUIInstance.transform, false); RectTransform val16 = val15.AddComponent<RectTransform>(); val16.anchorMin = new Vector2(0.3f, 0.1f); val16.anchorMax = new Vector2(0.7f, 0.2f); val16.sizeDelta = Vector2.zero; GameObject val17 = new GameObject("SendBackground"); val17.transform.SetParent(val15.transform, false); RectTransform val18 = val17.AddComponent<RectTransform>(); val18.anchorMin = Vector2.zero; val18.anchorMax = Vector2.one; val18.sizeDelta = Vector2.zero; Image val19 = val17.AddComponent<Image>(); ((Graphic)val19).color = new Color(0.2f, 0.6f, 1f); GameObject val20 = new GameObject("SendText"); val20.transform.SetParent(val15.transform, false); RectTransform val21 = val20.AddComponent<RectTransform>(); val21.anchorMin = Vector2.zero; val21.anchorMax = Vector2.one; val21.sizeDelta = Vector2.zero; TextMeshProUGUI val22 = val20.AddComponent<TextMeshProUGUI>(); ((TMP_Text)val22).text = "TRANSMIT"; ((TMP_Text)val22).fontSize = 14f; ((Graphic)val22).color = Color.white; ((TMP_Text)val22).alignment = (TextAlignmentOptions)514; Button val23 = val15.AddComponent<Button>(); ((UnityEvent)val23.onClick).AddListener((UnityAction)delegate { SendMessage(); }); ((UnityEvent<string>)(object)messageInput.onValueChanged).AddListener((UnityAction<string>)OnMessageChanged); ((UnityEvent<string>)(object)messageInput.onSubmit).AddListener((UnityAction<string>)delegate { SendMessage(); }); messageUIInstance.SetActive(false); } private void OnMessageChanged(string newText) { UpdateCharacterCount(newText); } private void UpdateCharacterCount(string text) { //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)characterCountText != (Object)null) { ((TMP_Text)characterCountText).text = $"{text.Length}/{9}"; if (text.Length >= 9) { ((Graphic)characterCountText).color = Color.red; } else if ((float)text.Length >= 7.2000003f) { ((Graphic)characterCountText).color = Color.yellow; } else { ((Graphic)characterCountText).color = Color.white; } } } private void HandleUIInput() { if (Input.GetKeyDown((KeyCode)13) || Input.GetKeyDown((KeyCode)271)) { SendMessage(); } if (Input.GetKeyDown((KeyCode)27)) { CloseMessageUI(); } } private void SendMessage() { if ((Object)(object)messageInput == (Object)null || string.IsNullOrEmpty(messageInput.text)) { return; } string text = messageInput.text.Trim(); if (text.Length > 9) { text = text.Substring(0, 9); } if (base.insertedBattery == null || base.insertedBattery.charge <= 0f) { Debug.Log((object)"Portable Signal Translator: No battery or battery is dead!"); } else if ((Object)(object)HUDManager.Instance != (Object)null) { if (base.insertedBattery != null) { Battery insertedBattery = base.insertedBattery; insertedBattery.charge -= 5f; if (base.insertedBattery.charge <= 0f) { base.insertedBattery.charge = 0f; ((GrabbableObject)this).UseUpBatteries(); } } if ((Object)(object)audioSource != (Object)null && (Object)(object)transmitSound != (Object)null) { audioSource.PlayOneShot(transmitSound); } HUDManager.Instance.UseSignalTranslatorServerRpc(text); Debug.Log((object)("Portable Signal Translator transmitted: " + text)); CloseMessageUI(); } else { Debug.LogError((object)"Portable Signal Translator: HUDManager.Instance is null!"); } } private void UpdateVisuals() { //IL_0035: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)indicatorLight != (Object)null) { ((Behaviour)indicatorLight).enabled = isActive; if (isActive) { indicatorLight.color = Color.blue; indicatorLight.intensity = 1f; } } if ((Object)(object)mainRenderer != (Object)null) { if (isActive && (Object)(object)activeMaterial != (Object)null) { ((Renderer)mainRenderer).material = activeMaterial; } else if (!isActive && (Object)(object)inactiveMaterial != (Object)null) { ((Renderer)mainRenderer).material = inactiveMaterial; } } } public override void UseUpBatteries() { ((GrabbableObject)this).UseUpBatteries(); if (isUIOpen) { CloseMessageUI(); } } public override void EquipItem() { ((GrabbableObject)this).EquipItem(); ((GrabbableObject)this).SetControlTipsForItem(); } public override void SetControlTipsForItem() { ((GrabbableObject)this).SetControlTipsForItem(); } public override void DiscardItem() { if (isUIOpen) { CloseMessageUI(); } ((GrabbableObject)this).DiscardItem(); } public override void PocketItem() { if (isUIOpen) { CloseMessageUI(); } ((GrabbableObject)this).PocketItem(); } [ServerRpc(RequireOwnership = false)] public void SetActiveStateServerRpc(bool active) { if (((NetworkBehaviour)this).IsServer) { SetActiveStateClientRpc(active); } } [ClientRpc] public void SetActiveStateClientRpc(bool active) { if (active != isActive) { if (active) { isActive = true; } else { isActive = false; } UpdateVisuals(); } } private void OnDestroy() { if ((Object)(object)messageUIInstance != (Object)null) { Object.Destroy((Object)(object)messageUIInstance); } } }