using UdonSharp; using UnityEngine; using VRC.SDKBase; using VRC.Udon; using VRC.Udon.Common; [UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] public class JailCallOverlay : CameraOverlay { [Space] [SerializeField] private MeshRenderer _OverlayMesh; [SerializeField] private int _CrookMaterialSlot; [Space] [SerializeField] private Texture[] _CrookPortraits; [UdonSynced] private AccusedCrook _AccusedCrook = AccusedCrook.INDEX_MAX; public override void OnDeserialization(DeserializationResult Result) { _SetCrook_Synced(); base.OnDeserialization(Result); } public void SetCrook(AccusedCrook Crook) { _AccusedCrook = Crook; _SetCrook_Synced(); RequestSerialization(); } private void _SetCrook_Synced() { int Crook = (int)_AccusedCrook; if (Crook >= 0 && Crook < _CrookPortraits.Length) { _OverlayMesh.materials[_CrookMaterialSlot].mainTexture = _CrookPortraits[Crook]; } } }