This change should fix objects lagging behind animations for some props.

This commit is contained in:
2026-06-06 23:55:22 -04:00
parent 80a8471a5f
commit 1085d5a3c0
37 changed files with 1445 additions and 650 deletions
File diff suppressed because it is too large Load Diff
@@ -2,6 +2,7 @@
using TMPro;
using UdonSharp;
using UnityEngine;
using VRC.SDK3.Components;
using VRC.SDK3.Image;
using VRC.SDK3.UdonNetworkCalling;
using VRC.SDKBase;
@@ -17,18 +18,19 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
[Space]
[SerializeField] private GameObject _ComputerBase;
[SerializeField] private MeshRenderer _ClueImageCard;
[SerializeField] private VRCObjectSync _ClueImageCard;
[SerializeField] private MeshRenderer _ClueImageCardMesh;
[Space]
[SerializeField] private Transform _UntranslatedCard;
[SerializeField] private VRCObjectSync _UntranslatedCard;
[SerializeField] private Transform _UntranslatedCardSpawn;
[SerializeField] private Transform _UntranslatedCardAnimator;
[SerializeField] private TextMeshProUGUI _UntranslatedTextGUI;
[Space]
[SerializeField] private Transform _TranslatedCard;
[SerializeField] private VRCObjectSync _TranslatedCard;
[SerializeField] private Transform _TranslatedCardAnimator;
[SerializeField] private TextMeshProUGUI _TranslatedTextGUI;
@@ -51,7 +53,6 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
private VRCImageDownloader _ClueImageDownloader;
private Texture2D _ClueImageDownload;
private Animator _Animator;
@@ -92,7 +93,7 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
}
private void SwooceRightIn()
private void _SwooceRightIn()
{
_Animator.SetBool("Swooce Right In", true);
foreach (GameObject Interactable in _Interactables)
@@ -100,11 +101,13 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
Interactable.SetActive(true);
}
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "PlayMusicLoop", MusicEventType.ACMECrimenetComputerIdle);
_EnableCards(false);
_DisableAllCardSync();
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "PlayMusicLoop", MusicEventType.ACMECrimenetComputerIdle);
}
private void SwooceRightBackOutAgain()
private void _SwooceRightBackOutAgain()
{
foreach (GameObject Interactable in _Interactables)
{
@@ -121,18 +124,45 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
_AudioManager.SendCustomNetworkEvent(NetworkEventTarget.All, "FadeOutMusic");
_ClueImageCard.transform.localPosition = Vector3.zero;
_ClueImageCard.transform.localRotation = Quaternion.identity;
_DisableAllCardSync();
_UntranslatedCard.SetParent(_UntranslatedCardSpawn);
_UntranslatedCard.localPosition = Vector3.zero;
_UntranslatedCard.localRotation = Quaternion.identity;
_TranslatedCard.transform.SetParent(_TranslatedCardAnimator);
_TranslatedCard.transform.localPosition = Vector3.zero;
_TranslatedCard.transform.localRotation = Quaternion.identity;
_TranslatedCard.SetParent(_TranslatedCardAnimator);
_TranslatedCard.localPosition = Vector3.zero;
_TranslatedCard.localRotation = Quaternion.identity;
_EnableCards(false);
}
public void EnableClueImageCardSync()
{
_ClueImageCard.enabled = true;
}
public void EnableUntranslatedCardSync()
{
_UntranslatedCard.enabled = true;
}
public void EnableTranslatedCardSync()
{
_TranslatedCard.enabled = true;
}
private void _DisableAllCardSync()
{
_ClueImageCard.enabled = false;
_UntranslatedCard.enabled = false;
_TranslatedCard.enabled = false;
}
private void _EnableCards(bool Enable)
{
_ClueImageCard.gameObject.SetActive(Enable);
_UntranslatedCard.gameObject.SetActive(Enable);
_TranslatedCard.gameObject.SetActive(Enable);
}
private void LoadClueImage()
{
@@ -146,7 +176,7 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
}
public override void OnImageLoadSuccess(IVRCImageDownload Result)
{
_ClueImageCard.material.SetTexture("_MainTex", Result.Result);
_ClueImageCardMesh.material.SetTexture("_MainTex", Result.Result);
base.OnImageLoadSuccess(Result);
}
@@ -154,6 +184,10 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
[NetworkCallable]
public void OpenCompartment()
{
_ClueImageCard.gameObject.SetActive(true);
_ClueImageCard.transform.localPosition = Vector3.zero;
_ClueImageCard.transform.localRotation = Quaternion.identity;
_AudioManager.PlaySFX(SFXEventType.LeverCartoon);
_Animator.SetBool("Open Compartment", true);
}
@@ -161,6 +195,11 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
[NetworkCallable]
public void ThrowClueIntoTheAir()
{
_UntranslatedCard.gameObject.SetActive(true);
_UntranslatedCard.transform.SetParent(_UntranslatedCardSpawn);
_UntranslatedCard.transform.localPosition = Vector3.zero;
_UntranslatedCard.transform.localRotation = Quaternion.identity;
_AudioManager.PlaySFX(SFXEventType.Boing);
_Animator.SetBool("Throw Clue Into The Air", true);
}
@@ -170,15 +209,17 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
{
_AudioManager.PlaySFX(SFXEventType.Printer);
_UntranslatedCard.SetParent(_UntranslatedCardAnimator);
_UntranslatedCard.localPosition = Vector3.zero;
_UntranslatedCard.localRotation = Quaternion.identity;
_UntranslatedCard.transform.SetParent(_UntranslatedCardAnimator);
_UntranslatedCard.transform.localPosition = Vector3.zero;
_UntranslatedCard.transform.localRotation = Quaternion.identity;
_TranslatedCard.SetParent(_TranslatedCardAnimator);
_TranslatedCard.localPosition = Vector3.zero;
_TranslatedCard.localRotation = Quaternion.identity;
_TranslatedCard.transform.SetParent(_TranslatedCardAnimator);
_TranslatedCard.transform.localPosition = Vector3.zero;
_TranslatedCard.transform.localRotation = Quaternion.identity;
_Animator.SetBool("Run Translator", true);
_UntranslatedCard.enabled = false;
}
@@ -189,11 +230,11 @@ public class ACMECrimenetComputer : UdonSharpBehaviour
_Activate = value;
if (_Activate)
{
SwooceRightIn();
_SwooceRightIn();
}
else
{
SwooceRightBackOutAgain();
_SwooceRightBackOutAgain();
}
RequestSerialization();
}