using TMPro; using UdonSharp; using UnityEngine; using VRC.SDK3.Image; using VRC.SDK3.UdonNetworkCalling; using VRC.SDKBase; using VRC.Udon; using VRC.Udon.Common.Interfaces; [UdonBehaviourSyncMode(BehaviourSyncMode.NoVariableSync)] public class ACMECrimenetComputer : UdonSharpBehaviour { [SerializeField] private GameManagerRound1 _GameManager; [SerializeField] private AudioManager _AudioManager; [Space] [SerializeField] private GameObject _ComputerBase; [SerializeField] private MeshRenderer _ClueImageCard; [Space] [SerializeField] private Transform _UntranslatedCard; [SerializeField] private Transform _UntranslatedCardSpawn; [SerializeField] private Transform _UntranslatedCardAnimator; [SerializeField] private TextMeshProUGUI _UntranslatedTextGUI; [Space] [SerializeField] private Transform _TranslatedCard; [SerializeField] private Transform _TranslatedCardAnimator; [SerializeField] private TextMeshProUGUI _TranslatedTextGUI; [Space] [SerializeField] private GameObject[] _Interactables; private VRCImageDownloader _ClueImageDownloader; private Texture2D _ClueImage; private Animator _Animator; private void Start() { _ClueImageDownloader = new VRCImageDownloader(); _Animator = GetComponent(); } void OnDestroy() { _ClueImageDownloader.Dispose(); } [NetworkCallable] public void ResetComputer() { foreach (GameObject Interactable in _Interactables) { Interactable.SetActive(false); } _Animator.SetBool("Swooce Right In", false); _Animator.SetBool("Open Compartment", false); _Animator.SetBool("Throw Clue Into The Air", false); _Animator.SetBool("Run Translator", false); _ClueImageCard.transform.localPosition = Vector3.zero; _ClueImageCard.transform.localRotation = Quaternion.identity; _UntranslatedCard.SetParent(_UntranslatedCardSpawn); _UntranslatedCard.localPosition = Vector3.zero; _UntranslatedCard.localRotation = Quaternion.identity; _TranslatedCard.SetParent(_TranslatedCardAnimator); _TranslatedCard.localPosition = Vector3.zero; _TranslatedCard.localRotation = Quaternion.identity; } [NetworkCallable] public void SetCardTexts(string Untranslated, string Translated) { _UntranslatedTextGUI.text = Untranslated; _TranslatedTextGUI.text = Translated; } [NetworkCallable] public void SwooceRightIn() { _Animator.SetBool("Swooce Right In", true); foreach (GameObject Interactable in _Interactables) { Interactable.SetActive(true); } TextureInfo AdditionalTextureInfo = new TextureInfo(); AdditionalTextureInfo.WrapModeU = TextureWrapMode.Clamp; AdditionalTextureInfo.WrapModeV = TextureWrapMode.Clamp; AdditionalTextureInfo.GenerateMipMaps = true; _ClueImageDownloader.DownloadImage( _GameManager.GetClueImageURL(0), null, (IUdonEventReceiver)this, AdditionalTextureInfo); } public override void OnImageLoadSuccess(IVRCImageDownload Result) { _ClueImageCard.material.SetTexture("_MainTex", Result.Result); base.OnImageLoadSuccess(Result); } [NetworkCallable] public void OpenCompartment() { _AudioManager.PlaySFX(SFXEventType.LeverCartoon); _Animator.SetBool("Open Compartment", true); } [NetworkCallable] public void ThrowClueIntoTheAir() { _AudioManager.PlaySFX(SFXEventType.Boing); _Animator.SetBool("Throw Clue Into The Air", true); } [NetworkCallable] public void RunTranslator() { _AudioManager.PlaySFX(SFXEventType.Printer); _UntranslatedCard.SetParent(_UntranslatedCardAnimator); _UntranslatedCard.localPosition = Vector3.zero; _UntranslatedCard.localRotation = Quaternion.identity; _TranslatedCard.SetParent(_TranslatedCardAnimator); _TranslatedCard.localPosition = Vector3.zero; _TranslatedCard.localRotation = Quaternion.identity; _Animator.SetBool("Run Translator", true); } }