using UnityEngine; using Normal.Realtime; public class HeadphoneSyncController : RealtimeComponent { public GameObject headphoneObject; // Assign your player's headphone GameObject here public AudioSource click; // Optional: plays a sound when toggled protected override void OnRealtimeModelReplaced(HeadphoneSharedState previousModel, HeadphoneSharedState currentModel) { // Unsubscribe from previous model if (previousModel != null) previousModel.headphonesOnDidChange -= UpdateHeadphones; // Subscribe to current model if (currentModel != null) { if (currentModel.isFreshModel) currentModel.headphonesOn = false; currentModel.headphonesOnDidChange += UpdateHeadphones; UpdateHeadphones(currentModel, currentModel.headphonesOn); } } private void UpdateHeadphones(RealtimeModel model, bool isActive) { if (headphoneObject != null) headphoneObject.SetActive(isActive); // Sync headphone visibility across all players } public void ToggleHeadphones() { if (model != null && GetComponent().isOwnedLocally) { model.headphonesOn = !model.headphonesOn; if (click != null) click.Play(); } } private void Start() { // Optional fallback: find the headphone object dynamically if (headphoneObject == null) headphoneObject = transform.Find("Sampler Headphones")?.gameObject; } }