Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Decompiled with JetBrains decompiler
- // Type: GameMod.TelemetryMod
- // Assembly: GameMod, Version=0.5.13.0, Culture=neutral, PublicKeyToken=null
- // MVID: 07E71B55-E588-4E1E-892E-01FD6C135707
- // Assembly location: D:\SteamLibrary\steamapps\common\Overload\GameMod.dll
- using HarmonyLib;
- using Overload;
- using System.Collections;
- using System.Net;
- using System.Net.Sockets;
- using System.Text;
- using UnityEngine;
- using UnityEngine.Networking;
- #nullable disable
- namespace GameMod
- {
- internal class TelemetryMod
- {
- private static bool telemetry_enabled = true;
- private static float event_boosting = 0.0f;
- private static float event_primary_fire = 0.0f;
- private static float event_secondary_fire = 0.0f;
- private static float event_picked_up_item = 0.0f;
- private static float event_damage_taken = 0.0f;
- private static TelemetryMod.Telemetry telemetryComponent;
- private static bool initialized = false;
- private static GameObject udpSenderObject;
- private static Vector3 previousVelocity = Vector3.zero;
- [HarmonyPatch(typeof(PlayerShip), "FixedUpdateProcessControlsInternal")]
- private class TelemetryMod_PlayerShip_FixedUpdateProcessControlsInternal
- {
- private static void Prefix()
- {
- if (!TelemetryMod.telemetry_enabled)
- return;
- TelemetryMod.event_primary_fire = GameManager.m_local_player.IsPressed((CCInput) 14) ? 1f : 0.0f;
- TelemetryMod.event_secondary_fire = GameManager.m_local_player.IsPressed((CCInput) 15) ? 1f : 0.0f;
- }
- }
- [HarmonyPatch(typeof(Item), "PlayItemPickupFX")]
- private class TelemetryMod_Item_PlayItemPickupFX
- {
- private static void Postfix(Player player)
- {
- if (!TelemetryMod.telemetry_enabled || !Object.op_Inequality((Object) player, (Object) null) || !((NetworkBehaviour) player).isLocalPlayer)
- return;
- TelemetryMod.event_secondary_fire = 1f;
- }
- }
- [HarmonyPatch(typeof(PlayerShip), "ApplyDamage")]
- private class TelemetryMod_PlayerShip_ApplyDamage
- {
- private static void Postfix(DamageInfo di, PlayerShip __instance)
- {
- if (!TelemetryMod.telemetry_enabled || !Object.op_Inequality((Object) __instance, (Object) null) || !((NetworkBehaviour) __instance).isLocalPlayer)
- return;
- TelemetryMod.event_damage_taken += di.damage;
- }
- }
- [HarmonyPatch(typeof(GameManager), "FixedUpdate")]
- private class TelemetryMod_GameManager_FixedUpdate
- {
- private static void Postfix()
- {
- if (!TelemetryMod.initialized & Object.op_Inequality((Object) GameManager.m_local_player, (Object) null))
- {
- TelemetryMod.initialized = true;
- TelemetryMod.udpSenderObject = new GameObject("UdpTelemetrySender");
- TelemetryMod.telemetryComponent = TelemetryMod.udpSenderObject.AddComponent<TelemetryMod.Telemetry>();
- TelemetryMod.telemetryComponent.IP = "127.0.0.1";
- TelemetryMod.telemetryComponent.port = 4123;
- }
- else
- {
- if (!TelemetryMod.initialized)
- return;
- TelemetryMod.event_boosting = GameManager.m_local_player.c_player_ship.m_boosting ? 1f : 0.0f;
- if (GameplayManager.m_gameplay_state == 0)
- {
- Rigidbody cRigidbody = GameManager.m_local_player.c_player_ship.c_rigidbody;
- Quaternion rotation = cRigidbody.rotation;
- Vector3 eulerAngles = rotation.eulerAngles;
- Vector3 angularVelocity = cRigidbody.angularVelocity;
- // Convert world-space velocity to local-space velocity
- Vector3 localVelocity = cRigidbody.transform.InverseTransformDirection(cRigidbody.velocity);
- // Highlighted change: Convert world velocity to local velocity
- Vector3 gForce = Vector3.op_Division(Vector3.op_Division(Vector3.op_Subtraction(localVelocity, TelemetryMod.previousVelocity), Time.fixedDeltaTime), 9.81f);
- // Highlighted change: Use local velocity for g-force calculation
- TelemetryMod.previousVelocity = localVelocity;
- // Send local-space telemetry data
- TelemetryMod.Telemetry.Telemetry_SendTelemetry(
- (eulerAngles.z > 180.0 ? eulerAngles.z - 360f : eulerAngles.z),
- (eulerAngles.x > 180.0 ? eulerAngles.x - 360f : eulerAngles.x),
- (eulerAngles.y > 180.0 ? eulerAngles.y - 360f : eulerAngles.y),
- angularVelocity.z, angularVelocity.x, angularVelocity.y,
- gForce.x, gForce.y, gForce.z,
- TelemetryMod.event_boosting, TelemetryMod.event_primary_fire, TelemetryMod.event_secondary_fire,
- TelemetryMod.event_picked_up_item, TelemetryMod.event_damage_taken);
- // Highlighted change: Sending local-space telemetry data
- }
- else
- TelemetryMod.Telemetry.Telemetry_SendTelemetry(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
- TelemetryMod.event_boosting = 0.0f;
- TelemetryMod.event_primary_fire = 0.0f;
- TelemetryMod.event_secondary_fire = 0.0f;
- TelemetryMod.event_picked_up_item = 0.0f;
- TelemetryMod.event_damage_taken = 0.0f;
- }
- }
- }
- private class PlayerData
- {
- public float Roll;
- public float Pitch;
- public float Yaw;
- public float Heave;
- public float Sway;
- public float Surge;
- public float Extra1;
- public float Extra2;
- public float Extra3;
- public float EventBoosting;
- public float EventPrimaryFire;
- public float EventSecondaryFire;
- public float EventItemPickup;
- public float EventDamageTaken;
- public PlayerData() { }
- public PlayerData(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3, float Boosting, float PrimaryFire, float SecondaryFire, float ItemPickup, float DamageTaken)
- {
- this.Roll = Roll;
- this.Pitch = Pitch;
- this.Yaw = Yaw;
- this.Heave = Heave;
- this.Sway = Sway;
- this.Surge = Surge;
- this.Extra1 = Extra1;
- this.Extra2 = Extra2;
- this.Extra3 = Extra3;
- this.EventBoosting = Boosting;
- this.EventPrimaryFire = PrimaryFire;
- this.EventSecondaryFire = SecondaryFire;
- this.EventItemPickup = ItemPickup;
- this.EventDamageTaken = DamageTaken;
- }
- }
- public class Telemetry : MonoBehaviour
- {
- public string IP = "127.0.0.1";
- public int port = 4123;
- private IPEndPoint remoteEndPoint;
- private static UdpClient client;
- private static TelemetryMod.PlayerData local_player_data;
- private void Start()
- {
- Object.DontDestroyOnLoad((Object)((Component)this).gameObject);
- this.remoteEndPoint = new IPEndPoint(IPAddress.Parse(this.IP), this.port);
- TelemetryMod.Telemetry.client = new UdpClient();
- TelemetryMod.Telemetry.local_player_data = new TelemetryMod.PlayerData();
- this.StartCoroutine("Telemetry_Start");
- }
- public static void Telemetry_SendTelemetry(float Roll, float Pitch, float Yaw, float Heave, float Sway, float Surge, float Extra1, float Extra2, float Extra3, float Boosting, float PrimaryFire, float SecondaryFire, float ItemPickup, float DamageTaken)
- {
- TelemetryMod.Telemetry.local_player_data = new TelemetryMod.PlayerData(Roll, Pitch, Yaw, Heave, Sway, Surge, Extra1, Extra2, Extra3, Boosting, PrimaryFire, SecondaryFire, ItemPickup, DamageTaken);
- }
- private IEnumerator Telemetry_Start()
- {
- while (true)
- {
- string info = string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};{10};
Add Comment
Please, Sign In to add comment