quantum-space-buddies/QSB/SatelliteSync/Patches/SatelliteProjectorPatches.cs

71 lines
2.2 KiB
C#
Raw Normal View History

2021-11-03 09:18:52 +00:00
using HarmonyLib;
using QSB.Events;
using QSB.Patches;
2021-11-03 11:56:50 +00:00
using UnityEngine;
2021-11-03 09:18:52 +00:00
namespace QSB.SatelliteSync.Patches
{
[HarmonyPatch]
2021-11-09 19:39:56 +00:00
internal class SatelliteProjectorPatches : QSBPatch
2021-11-03 09:18:52 +00:00
{
public override QSBPatchTypes Type => QSBPatchTypes.OnClientConnect;
2021-11-30 19:17:26 +00:00
[HarmonyPostfix]
[HarmonyPatch(typeof(SatelliteSnapshotController), nameof(SatelliteSnapshotController.Awake))]
public static void CreateNewRenderTexture(SatelliteSnapshotController __instance)
{
__instance._snapshotTexture = SatelliteProjectorManager.Instance.SatelliteCameraSnapshot;
__instance._satelliteCamera.targetTexture = __instance._snapshotTexture;
}
2021-11-03 09:18:52 +00:00
[HarmonyPrefix]
[HarmonyPatch(typeof(SatelliteSnapshotController), nameof(SatelliteSnapshotController.OnPressInteract))]
public static bool UseProjector()
{
QSBEventManager.FireEvent(EventNames.QSBEnterSatelliteCamera);
return true;
}
[HarmonyPrefix]
[HarmonyPatch(typeof(SatelliteSnapshotController), nameof(SatelliteSnapshotController.TurnOffProjector))]
public static bool LeaveProjector()
{
QSBEventManager.FireEvent(EventNames.QSBExitSatelliteCamera);
return true;
}
2021-11-03 11:56:50 +00:00
[HarmonyPrefix]
[HarmonyPatch(typeof(SatelliteSnapshotController), nameof(SatelliteSnapshotController.Update))]
public static bool UpdateReplacement(SatelliteSnapshotController __instance)
{
if (!OWInput.IsInputMode(InputMode.SatelliteCam))
{
return false;
}
if (OWInput.IsNewlyPressed(InputLibrary.toolActionPrimary, InputMode.All))
{
QSBEventManager.FireEvent(EventNames.QSBSatelliteSnapshot, true);
__instance._satelliteCamera.transform.localEulerAngles = __instance._initCamLocalRot;
__instance.RenderSnapshot();
return false;
}
if (__instance._allowRearview && OWInput.IsNewlyPressed(InputLibrary.toolActionSecondary, InputMode.All))
{
QSBEventManager.FireEvent(EventNames.QSBSatelliteSnapshot, false);
__instance._satelliteCamera.transform.localEulerAngles = __instance._initCamLocalRot + new Vector3(0f, 180f, 0f);
__instance.RenderSnapshot();
return false;
}
if (OWInput.IsNewlyPressed(InputLibrary.cancel, InputMode.All))
{
__instance.TurnOffProjector();
}
return false;
}
2021-11-03 09:18:52 +00:00
}
}