SRMP-Public/SRMP/Patches/Patch_SplashOnTrigger.cs
2023-05-29 22:23:11 +02:00

41 lines
No EOL
1.3 KiB
C#

using HarmonyLib;
using SRMultiplayer.Packets;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
namespace SRMultiplayer.Patches
{
[HarmonyPatch(typeof(SplashOnTrigger))]
[HarmonyPatch("SpawnAndPlayFX")]
class SplashOnTrigger_SpawnAndPlayFX
{
static void Prefix(SplashOnTrigger __instance, GameObject prefab, Collider collider)
{
if (!Globals.IsMultiplayer || Globals.HandlePacket) return;
Ray ray = new Ray(collider.gameObject.transform.position, Vector3.down);
float num = float.PositiveInfinity;
Vector3 position = collider.gameObject.transform.position;
Collider[] array = __instance.splashColliders;
for (int i = 0; i < array.Length; i++)
{
RaycastHit raycastHit;
if (array[i].Raycast(ray, out raycastHit, 2f) && raycastHit.distance < num)
{
num = raycastHit.distance;
position = raycastHit.point;
}
}
new PacketGlobalFX()
{
Name = prefab.name,
Position = position
}.Send();
}
}
}