0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 09:50:43 -05:00
modules/project/SPT.Debugging/Patches/CoordinatesPatch.cs
2024-05-21 19:10:17 +01:00

67 lines
2.2 KiB
C#

using SPT.Reflection.Patching;
using EFT;
using TMPro;
using UnityEngine;
using System;
using System.Reflection;
using HarmonyLib;
namespace SPT.Debugging.Patches
{
public class CoordinatesPatch : ModulePatch
{
private static TextMeshProUGUI _alphaLabel;
protected override MethodBase GetTargetMethod()
{
return AccessTools.Method(typeof(BaseLocalGame<EftGamePlayerOwner>), nameof(BaseLocalGame<EftGamePlayerOwner>.Update));
}
[PatchPrefix]
private static void PatchPrefix(BaseLocalGame<EftGamePlayerOwner> __instance)
{
if (!Input.GetKeyDown(KeyCode.LeftControl)) return;
if (_alphaLabel == null)
{
_alphaLabel = GameObject.Find("AlphaLabel").GetComponent<TextMeshProUGUI>();
_alphaLabel.color = Color.green;
_alphaLabel.fontSize = 22;
_alphaLabel.font = Resources.Load<TMP_FontAsset>("Fonts & Materials/ARIAL SDF");
}
var playerOwner = __instance.PlayerOwner;
var aiming = LookingRaycast(playerOwner.Player);
if (_alphaLabel != null)
{
_alphaLabel.text = $"Looking at: [{aiming.x}, {aiming.y}, {aiming.z}]";
Logger.LogInfo(_alphaLabel.text);
}
var position = playerOwner.transform.position;
var rotation = playerOwner.transform.rotation.eulerAngles;
Logger.LogInfo($"Character position: [{position.x},{position.y},{position.z}] | Rotation: [{rotation.x},{rotation.y},{rotation.z}]");
}
public static Vector3 LookingRaycast(Player player)
{
try
{
if (player == null || player.Fireport == null)
{
return Vector3.zero;
}
Physics.Linecast(player.Fireport.position, player.Fireport.position - player.Fireport.up * 1000f, out var raycastHit, 331776);
return raycastHit.point;
}
catch (Exception e)
{
Logger.LogError($"Coordinate Debug raycast failed: {e.Message}");
return Vector3.zero;
}
}
}
}