Files
Nitrox/NitroxClient/Communication/Packets/Processors/FMODCustomEmitterProcessor.cs
2025-07-06 00:23:46 +02:00

38 lines
1.3 KiB
C#

using NitroxClient.Communication.Packets.Processors.Abstract;
using NitroxClient.MonoBehaviours;
using NitroxModel.Packets;
using UnityEngine;
namespace NitroxClient.Communication.Packets.Processors;
public class FMODCustomEmitterProcessor : ClientPacketProcessor<FMODCustomEmitterPacket>
{
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>();
fmodEmitterController.LateRegisterEmitter();
}
using (PacketSuppressor<FMODCustomEmitterPacket>.Suppress())
using (PacketSuppressor<FMODCustomLoopingEmitterPacket>.Suppress())
{
if (packet.Play)
{
fmodEmitterController.PlayCustomEmitter(packet.AssetPath);
}
else
{
fmodEmitterController.StopCustomEmitter(packet.AssetPath);
}
}
}
}