92 lines
1.9 KiB
C#
92 lines
1.9 KiB
C#
|
|
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";
|
|
}
|
|
}
|