mirror of
https://github.com/NotAKidoS/NAK_CVR_Mods.git
synced 2025-09-02 06:19:22 +00:00
63 lines
No EOL
2.3 KiB
C#
63 lines
No EOL
2.3 KiB
C#
using ABI_RC.Core;
|
|
using ABI_RC.Core.InteractionSystem;
|
|
using ABI_RC.Core.IO;
|
|
using ABI_RC.Core.Player;
|
|
using ABI_RC.Core.Savior;
|
|
using HarmonyLib;
|
|
using UnityEngine;
|
|
|
|
namespace NAK.Stickers.Patches;
|
|
|
|
internal static class PlayerSetupPatches
|
|
{
|
|
[HarmonyPostfix]
|
|
[HarmonyPatch(typeof(PlayerSetup), nameof(PlayerSetup.GetCurrentPropSelectionMode))]
|
|
private static void Postfix_PlayerSetup_GetCurrentPropSelectionMode(ref PlayerSetup.PropSelectionMode __result)
|
|
{
|
|
if (StickerSystem.Instance.IsInStickerMode) __result = (PlayerSetup.PropSelectionMode)4;
|
|
}
|
|
}
|
|
|
|
internal static class ControllerRayPatches
|
|
{
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(ControllerRay), nameof(ControllerRay.HandlePropSpawn))]
|
|
private static void Prefix_ControllerRay_HandlePropSpawn(ref ControllerRay __instance)
|
|
{
|
|
if (!StickerSystem.Instance.IsInStickerMode)
|
|
return;
|
|
|
|
StickerSystem.Instance.PlaceStickerFromControllerRay(__instance.rayDirectionTransform, __instance.hand, true); // preview
|
|
|
|
if (__instance._gripDown) StickerSystem.Instance.IsInStickerMode = false;
|
|
if (__instance._hitUIInternal || !__instance._interactDown)
|
|
return;
|
|
|
|
StickerSystem.Instance.PlaceStickerFromControllerRay(__instance.rayDirectionTransform, __instance.hand);
|
|
}
|
|
}
|
|
|
|
internal static class ShaderFilterHelperPatches
|
|
{
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(ShaderFilterHelper), nameof(ShaderFilterHelper.SetupFilter))]
|
|
private static void Prefix_ShaderFilterHelper_SetupFilter()
|
|
{
|
|
if (!MetaPort.Instance.settings.GetSettingsBool("ExperimentalShaderLimitEnabled"))
|
|
return;
|
|
|
|
StickerMod.Logger.Warning("ExperimentalShaderLimitEnabled found to be true. Disabling setting to prevent crashes when spawning stickers!");
|
|
MetaPort.Instance.settings.SetSettingsBool("ExperimentalShaderLimitEnabled", false);
|
|
}
|
|
}
|
|
|
|
internal static class CVRToolsPatches
|
|
{
|
|
[HarmonyPrefix]
|
|
[HarmonyPatch(typeof(CVRTools), nameof(CVRTools.ReplaceShaders), typeof(Material), typeof(string))]
|
|
private static bool Prefix_CVRTools_ReplaceShaders(Material material, string fallbackShaderName = "")
|
|
{
|
|
if (material == null || material.shader == null) return true;
|
|
return material.shader != StickerMod.DecalSimpleShader; // prevent replacing decals with fallback shader
|
|
}
|
|
} |