using TMPro; using UdonSharp; using UnityEngine; using VRC.SDK3.UdonNetworkCalling; using VRC.Udon.Common.Interfaces; [UdonBehaviourSyncMode(BehaviourSyncMode.Manual)] public class RiskCard : UdonSharpBehaviour { [UdonSynced] public int RiskAmount = 0; [SerializeField] private RiskCardGroup CardGroup = null; [SerializeField] private Collider _Holder; [SerializeField] private TextMeshProUGUI _RiskCardText; [SerializeField] private Transform _SpawnPosition; [SerializeField] private Transform _HeldPosition; private bool _IsInHeldCollider = false; void Start() { _RiskCardText.text = RiskAmount.ToString(); } void OnTriggerEnter(Collider OtherCollider) { if (OtherCollider == _Holder) { _IsInHeldCollider = true; } } private void OnTriggerExit(Collider OtherCollider) { if (OtherCollider == _Holder) { _IsInHeldCollider = false; } } public override void OnPickup() { CardGroup.SendCustomNetworkEvent(NetworkEventTarget.All, "RiskCardPickedUp", RiskAmount); base.OnPickup(); } public override void Interact() { CardGroup.SendCustomNetworkEvent(NetworkEventTarget.All, "RiskCardInteract", RiskAmount); base.Interact(); } public override void OnDrop() { if (_IsInHeldCollider) { transform.position = _Holder.transform.position; transform.rotation = _Holder.transform.rotation; } base.OnDrop(); } public void SetCardGroup(RiskCardGroup ParentCardGroup) { CardGroup = ParentCardGroup; } [NetworkCallable] public void SetToHeldPosition() { transform.SetParent(_HeldPosition, false); transform.localPosition = Vector3.zero; transform.localEulerAngles = Vector3.zero; InteractionText = "Reveal"; } [NetworkCallable] public void ResetPosition() { transform.SetParent(_SpawnPosition, false); transform.localPosition = Vector3.zero; transform.localEulerAngles = Vector3.zero; InteractionText = "Choose"; } }