using UnityEngine; using Normal.Realtime; using System; public class HeadphoneSync : RealtimeComponent { [SerializeField] private GameObject headphoneObject; public void SetHeadphoneActiveEvent(bool active) { if (!realtimeView.isOwnedLocallyInHierarchy) return; SetHeadphoneActive(active); } protected override void OnRealtimeModelReplaced(HeadPhoneSyncModel previousModel, HeadPhoneSyncModel currentModel) { if (previousModel != null) { previousModel.isActiveDidChange -= OnIsActiveChanged; } if (currentModel != null) { if (currentModel.isFreshModel) currentModel.isActive = headphoneObject.activeSelf; UpdateHeadphoneState(); currentModel.isActiveDidChange += OnIsActiveChanged; } } private void OnIsActiveChanged(HeadPhoneSyncModel model, bool isActive) { UpdateHeadphoneState(); } private void UpdateHeadphoneState() { headphoneObject.SetActive(model.isActive); } public void SetHeadphoneActive(bool active) { model.isActive = active; } }