phunkaeg

Overload Telemetry Export - Local Space

Jul 28th, 2024
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.76 KB | Gaming | 0 0
  1. // Decompiled with JetBrains decompiler
  2. // Type: GameMod.TelemetryMod
  3. // Assembly: GameMod, Version=0.5.13.0, Culture=neutral, PublicKeyToken=null
  4. // MVID: 07E71B55-E588-4E1E-892E-01FD6C135707
  5. // Assembly location: D:\SteamLibrary\steamapps\common\Overload\GameMod.dll
  6.  
  7. using HarmonyLib;
  8. using Overload;
  9. using System.Collections;
  10. using System.Net;
  11. using System.Net.Sockets;
  12. using System.Text;
  13. using UnityEngine;
  14. using UnityEngine.Networking;
  15.  
  16. #nullable disable
  17. namespace GameMod
  18. {
  19.   internal class TelemetryMod
  20.   {
  21.     private static bool telemetry_enabled = true;
  22.     private static float event_boosting = 0.0f;
  23.     private static float event_primary_fire = 0.0f;
  24.     private static float event_secondary_fire = 0.0f;
  25.     private static float event_picked_up_item = 0.0f;
  26.     private static float event_damage_taken = 0.0f;
  27.     private static TelemetryMod.Telemetry telemetryComponent;
  28.     private static bool initialized = false;
  29.     private static GameObject udpSenderObject;
  30.     private static Vector3 previousVelocity = Vector3.zero;
  31.  
  32.     [HarmonyPatch(typeof(PlayerShip), "FixedUpdateProcessControlsInternal")]
  33.     private class TelemetryMod_PlayerShip_FixedUpdateProcessControlsInternal
  34.     {
  35.       private static void Prefix()
  36.       {
  37.         if (!TelemetryMod.telemetry_enabled)
  38.           return;
  39.         TelemetryMod.event_primary_fire = GameManager.m_local_player.IsPressed((CCInput) 14) ? 1f : 0.0f;
  40.         TelemetryMod.event_secondary_fire = GameManager.m_local_player.IsPressed((CCInput) 15) ? 1f : 0.0f;
  41.       }
  42.     }
  43.  
  44.     [HarmonyPatch(typeof(Item), "PlayItemPickupFX")]
  45.     private class TelemetryMod_Item_PlayItemPickupFX
  46.     {
  47.       private static void Postfix(Player player)
  48.       {
  49.         if (!TelemetryMod.telemetry_enabled || !Object.op_Inequality((Object) player, (Object) null) || !((NetworkBehaviour) player).isLocalPlayer)
  50.           return;
  51.         TelemetryMod.event_secondary_fire = 1f;
  52.       }
  53.     }
  54.  
  55.     [HarmonyPatch(typeof(PlayerShip), "ApplyDamage")]
  56.     private class TelemetryMod_PlayerShip_ApplyDamage
  57.     {
  58.       private static void Postfix(DamageInfo di, PlayerShip __instance)
  59.       {
  60.         if (!TelemetryMod.telemetry_enabled || !Object.op_Inequality((Object) __instance, (Object) null) || !((NetworkBehaviour) __instance).isLocalPlayer)
  61.           return;
  62.         TelemetryMod.event_damage_taken += di.damage;
  63.       }
  64.     }
  65.  
  66.     [HarmonyPatch(typeof(GameManager), "FixedUpdate")]
  67.     private class TelemetryMod_GameManager_FixedUpdate
  68.     {
  69.       private static void Postfix()
  70.       {
  71.         if (!TelemetryMod.initialized & Object.op_Inequality((Object) GameManager.m_local_player, (Object) null))
  72.         {
  73.           TelemetryMod.initialized = true;
  74.           TelemetryMod.udpSenderObject = new GameObject("UdpTelemetrySender");
  75.           TelemetryMod.telemetryComponent = TelemetryMod.udpSenderObject.AddComponent<TelemetryMod.Telemetry>();
  76.           TelemetryMod.telemetryComponent.IP = "127.0.0.1";
  77.           TelemetryMod.telemetryComponent.port = 4123;
  78.         }
  79.         else
  80.         {
  81.           if (!TelemetryMod.initialized)
  82.             return;
  83.           TelemetryMod.event_boosting = GameManager.m_local_player.c_player_ship.m_boosting ? 1f : 0.0f;
  84.           if (GameplayManager.m_gameplay_state == 0)
  85.           {
  86.             Rigidbody cRigidbody = GameManager.m_local_player.c_player_ship.c_rigidbody;
  87.             Quaternion rotation = cRigidbody.rotation;
  88.             Vector3 eulerAngles = rotation.eulerAngles;
  89.             Vector3 angularVelocity = cRigidbody.angularVelocity;
  90.  
  91.             // Convert world-space velocity to local-space velocity
  92.             Vector3 localVelocity = cRigidbody.transform.InverseTransformDirection(cRigidbody.velocity);
  93.             // Highlighted change: Convert world velocity to local velocity
  94.             Vector3 gForce = Vector3.op_Division(Vector3.op_Division(Vector3.op_Subtraction(localVelocity, TelemetryMod.previousVelocity), Time.fixedDeltaTime), 9.81f);
  95.             // Highlighted change: Use local velocity for g-force calculation
  96.             TelemetryMod.previousVelocity = localVelocity;
  97.  
  98.             // Send local-space telemetry data
  99.             TelemetryMod.Telemetry.Telemetry_SendTelemetry(
  100.               (eulerAngles.z > 180.0 ? eulerAngles.z - 360f : eulerAngles.z),
  101.               (eulerAngles.x > 180.0 ? eulerAngles.x - 360f : eulerAngles.x),
  102.               (eulerAngles.y > 180.0 ? eulerAngles.y - 360f : eulerAngles.y),
  103.               angularVelocity.z, angularVelocity.x, angularVelocity.y,
  104.               gForce.x, gForce.y, gForce.z,
  105.               TelemetryMod.event_boosting, TelemetryMod.event_primary_fire, TelemetryMod.event_secondary_fire,
  106.               TelemetryMod.event_picked_up_item, TelemetryMod.event_damage_taken);
  107.             // Highlighted change: Sending local-space telemetry data
  108.           }
  109.           else
  110.             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);
  111.  
  112.           TelemetryMod.event_boosting = 0.0f;
  113.           TelemetryMod.event_primary_fire = 0.0f;
  114.           TelemetryMod.event_secondary_fire = 0.0f;
  115.           TelemetryMod.event_picked_up_item = 0.0f;
  116.           TelemetryMod.event_damage_taken = 0.0f;
  117.         }
  118.       }
  119.     }
  120.  
  121.     private class PlayerData
  122.     {
  123.       public float Roll;
  124.       public float Pitch;
  125.       public float Yaw;
  126.       public float Heave;
  127.       public float Sway;
  128.       public float Surge;
  129.       public float Extra1;
  130.       public float Extra2;
  131.       public float Extra3;
  132.       public float EventBoosting;
  133.       public float EventPrimaryFire;
  134.       public float EventSecondaryFire;
  135.       public float EventItemPickup;
  136.       public float EventDamageTaken;
  137.  
  138.       public PlayerData() { }
  139.  
  140.       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)
  141.       {
  142.         this.Roll = Roll;
  143.         this.Pitch = Pitch;
  144.         this.Yaw = Yaw;
  145.         this.Heave = Heave;
  146.         this.Sway = Sway;
  147.         this.Surge = Surge;
  148.         this.Extra1 = Extra1;
  149.         this.Extra2 = Extra2;
  150.         this.Extra3 = Extra3;
  151.         this.EventBoosting = Boosting;
  152.         this.EventPrimaryFire = PrimaryFire;
  153.         this.EventSecondaryFire = SecondaryFire;
  154.         this.EventItemPickup = ItemPickup;
  155.         this.EventDamageTaken = DamageTaken;
  156.       }
  157.     }
  158.  
  159.     public class Telemetry : MonoBehaviour
  160.     {
  161.       public string IP = "127.0.0.1";
  162.       public int port = 4123;
  163.       private IPEndPoint remoteEndPoint;
  164.       private static UdpClient client;
  165.       private static TelemetryMod.PlayerData local_player_data;
  166.  
  167.       private void Start()
  168.       {
  169.         Object.DontDestroyOnLoad((Object)((Component)this).gameObject);
  170.         this.remoteEndPoint = new IPEndPoint(IPAddress.Parse(this.IP), this.port);
  171.         TelemetryMod.Telemetry.client = new UdpClient();
  172.         TelemetryMod.Telemetry.local_player_data = new TelemetryMod.PlayerData();
  173.         this.StartCoroutine("Telemetry_Start");
  174.       }
  175.  
  176.       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)
  177.       {
  178.         TelemetryMod.Telemetry.local_player_data = new TelemetryMod.PlayerData(Roll, Pitch, Yaw, Heave, Sway, Surge, Extra1, Extra2, Extra3, Boosting, PrimaryFire, SecondaryFire, ItemPickup, DamageTaken);
  179.       }
  180.  
  181.       private IEnumerator Telemetry_Start()
  182.       {
  183.         while (true)
  184.         {
  185.           string info = string.Format("{0};{1};{2};{3};{4};{5};{6};{7};{8};{9};{10};
  186.  
Add Comment
Please, Sign In to add comment