109 lines
2.4 KiB
C#
109 lines
2.4 KiB
C#
|
|
using System;
|
|
using TMPro;
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDK3.Image;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon;
|
|
using VRC.Udon.Common.Interfaces;
|
|
|
|
|
|
[UdonBehaviourSyncMode(BehaviourSyncMode.Manual)]
|
|
public class FilingCabinetNoteDispenser : UdonSharpBehaviour
|
|
{
|
|
[SerializeField] private GameManagerRound1 _GameManager;
|
|
[SerializeField] private AudioManager _AudioManager;
|
|
|
|
[SerializeField] private Animator _Animator;
|
|
[SerializeField] private Transform _ClueCard;
|
|
[SerializeField] private TextMeshProUGUI _ClueCardText;
|
|
[SerializeField] private MeshRenderer _ImageCard;
|
|
|
|
[UdonSynced, FieldChangeCallback(nameof(Activate))] private bool _Activate = false;
|
|
|
|
[UdonSynced, FieldChangeCallback(nameof(Note))] private string _Note = "";
|
|
[UdonSynced, FieldChangeCallback(nameof(Image))] private int _Image = -1;
|
|
[UdonSynced, FieldChangeCallback(nameof(ImageScale))] private float _ImageScale = 1.0f;
|
|
|
|
private VRCImageDownloader _ClueImageDownloader;
|
|
|
|
|
|
private void Start()
|
|
{
|
|
_ClueImageDownloader = new VRCImageDownloader();
|
|
}
|
|
|
|
public bool Activate
|
|
{
|
|
set
|
|
{
|
|
_Activate = value;
|
|
|
|
if (_Note != "") _Animator.SetBool("Spring Action", _Activate);
|
|
|
|
_ClueCard.localPosition = Vector3.zero;
|
|
_ClueCard.localRotation = Quaternion.identity;
|
|
|
|
RequestSerialization();
|
|
}
|
|
get => _Activate;
|
|
}
|
|
|
|
|
|
private void LoadClueImage()
|
|
{
|
|
if (_Image >= 0)
|
|
{
|
|
TextureInfo AdditionalTextureInfo = new TextureInfo();
|
|
AdditionalTextureInfo.WrapModeU = TextureWrapMode.Clamp;
|
|
AdditionalTextureInfo.WrapModeV = TextureWrapMode.Clamp;
|
|
AdditionalTextureInfo.GenerateMipMaps = true;
|
|
_ClueImageDownloader.DownloadImage(
|
|
_GameManager.GetClueImageURL(_Image), null,
|
|
(IUdonEventReceiver)this, AdditionalTextureInfo);
|
|
}
|
|
else
|
|
{
|
|
_ImageCard.gameObject.SetActive(false);
|
|
}
|
|
}
|
|
public override void OnImageLoadSuccess(IVRCImageDownload Result)
|
|
{
|
|
_ImageCard.material.SetTexture("_MainTex", Result.Result);
|
|
_ImageCard.gameObject.SetActive(true);
|
|
base.OnImageLoadSuccess(Result);
|
|
}
|
|
|
|
|
|
public string Note
|
|
{
|
|
set
|
|
{
|
|
_Note = value;
|
|
_ClueCardText.text = _Note;
|
|
}
|
|
get => _Note;
|
|
}
|
|
|
|
public int Image
|
|
{
|
|
set
|
|
{
|
|
_Image = value;
|
|
LoadClueImage();
|
|
}
|
|
get => _Image;
|
|
}
|
|
|
|
public float ImageScale
|
|
{
|
|
set
|
|
{
|
|
_ImageScale = value;
|
|
_ImageCard.transform.localScale = new Vector3(_ImageScale, _ImageScale, _ImageScale);
|
|
}
|
|
get => _ImageScale;
|
|
}
|
|
}
|