using UnityEngine; public class MultiplayerFishingSetSpawner : MonoBehaviour { [SerializeField] private ScriptableEventNetworkObjectSpawn OnNetworkObjectSpawn; private PlayerFishingGearController playerFishingGearController; private MultiplayerFishingSetControler setInHands; private void MultiplayerManager_OnInSession() { if (playerFishingGearController == null) { playerFishingGearController = Object.FindFirstObjectByType(); if ((bool)playerFishingGearController) { playerFishingGearController.OnFishingSetEquiped += PlayerFishingGearController_OnFishingSetEquiped; playerFishingGearController.OnFishingSetUnequip += PlayerFishingGearController_OnFishingSetUnequip; } } SpawnSetInPlayerHands(); } private void MultiplayerManager_OnLeaveingSession() { if ((bool)playerFishingGearController) { playerFishingGearController.OnFishingSetEquiped -= PlayerFishingGearController_OnFishingSetEquiped; playerFishingGearController.OnFishingSetUnequip -= PlayerFishingGearController_OnFishingSetUnequip; playerFishingGearController = null; } } private void MultiplayerFishingSetControler_OnStartLocal(MultiplayerFishingSetControler mfsc) { DespawnSetInPlayerHands(); setInHands = mfsc; if ((bool)playerFishingGearController && (bool)playerFishingGearController.EquipedFishingSet) { setInHands.Init(playerFishingGearController.EquipedFishingSet); } else { DespawnSetInPlayerHands(); } } private void PlayerFishingGearController_OnFishingSetEquiped(FishingSetController fishingSetController) { SpawnSetInPlayerHands(); } private void PlayerFishingGearController_OnFishingSetUnequip() { DespawnSetInPlayerHands(); } private void OnEnable() { MultiplayerManager.OnInSession += MultiplayerManager_OnInSession; MultiplayerManager.OnLeaveingSession += MultiplayerManager_OnLeaveingSession; MultiplayerFishingSetControler.OnStartLocal += MultiplayerFishingSetControler_OnStartLocal; } private void OnDisable() { MultiplayerManager.OnInSession -= MultiplayerManager_OnInSession; MultiplayerManager.OnLeaveingSession -= MultiplayerManager_OnLeaveingSession; MultiplayerFishingSetControler.OnStartLocal -= MultiplayerFishingSetControler_OnStartLocal; } private void DespawnSetInPlayerHands() { if ((bool)setInHands) { setInHands.Deinit(); setInHands = null; } } private void SpawnSetInPlayerHands() { DespawnSetInPlayerHands(); if ((bool)playerFishingGearController && (bool)playerFishingGearController.EquipedFishingSet) { OnNetworkObjectSpawn.Raise(new NetworkObjectSpawn("MultiplayerFishingSetControler", playerFishingGearController.EquipedFishingSet.transform.position, playerFishingGearController.EquipedFishingSet.transform.rotation)); } } }