using NitroxClient.Communication.Packets.Processors.Abstract; using NitroxClient.MonoBehaviours; using NitroxModel.Packets; using UnityEngine; namespace NitroxClient.Communication.Packets.Processors; public class FMODStudioEventEmitterProcessor : ClientPacketProcessor { public override void Process(FMODStudioEmitterPacket packet) { if (!NitroxEntity.TryGetObjectFrom(packet.Id, out GameObject emitterControllerObject)) { Log.ErrorOnce($"[{nameof(FMODStudioEventEmitterProcessor)}] Couldn't find entity {packet.Id}"); return; } if (!emitterControllerObject.TryGetComponent(out FMODEmitterController fmodEmitterController)) { fmodEmitterController = emitterControllerObject.AddComponent(); fmodEmitterController.LateRegisterEmitter(); } using (PacketSuppressor.Suppress()) { if (packet.Play) { fmodEmitterController.PlayStudioEmitter(packet.AssetPath); } else { fmodEmitterController.StopStudioEmitter(packet.AssetPath, packet.AllowFadeout); } } } }