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