the initial commit to the repo.

This commit is contained in:
NukedBart 2025-10-25 01:27:14 +08:00
parent 025c032b8c
commit 1b757591b9
264 changed files with 21882 additions and 0 deletions

View file

@ -0,0 +1,75 @@
using System;
using System.Linq;
using EFT;
using EscapeFromTarkovCheat.Utils;
using UnityEngine;
namespace EscapeFromTarkovCheat.Data
{
public class GamePlayer
{
public Player Player { get; }
public Vector3 ScreenPosition => screenPosition;
public Vector3 HeadScreenPosition => headScreenPosition;
public bool IsOnScreen { get; private set; }
public bool IsVisible { get; private set; }
public float Distance { get; private set; }
public bool IsAI { get; private set; }
public string FormattedDistance => $"{(int)Math.Round(Distance)}m";
private Vector3 screenPosition;
private Vector3 headScreenPosition;
public GamePlayer(Player player)
{
if (player == null)
throw new ArgumentNullException(nameof(player));
this.Player = player;
screenPosition = default;
headScreenPosition = default;
IsOnScreen = false;
Distance = 0f;
IsAI = true;
}
public Vector3 GetBonePosition(BoneType boneType)
{
if (Player.PlayerBody?.SkeletonRootJoint?.Bones == null)
return Vector3.zero;
Transform boneTransform = Player.PlayerBody.SkeletonRootJoint.Bones.ElementAtOrDefault((int)boneType).Value;
if (boneTransform == null)
return Vector3.zero;
return GameUtils.WorldPointToScreenPoint(boneTransform.position);
}
public void RecalculateDynamics()
{
if (!GameUtils.IsPlayerValid(Player))
return;
screenPosition = GameUtils.WorldPointToScreenPoint(Player.Transform.position);
if (Player.PlayerBones != null)
headScreenPosition = GameUtils.WorldPointToScreenPoint(Player.PlayerBones.Head.position);
IsOnScreen = GameUtils.IsScreenPointVisible(screenPosition);
Distance = Vector3.Distance(Main.MainCamera.transform.position, Player.Transform.position);
if ((Player.Profile != null) && (Player.Profile.Info != null))
IsAI = (Player.Profile.Info.RegistrationDate <= 0);
}
}
}