Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Hover v0.13.7
Hover.dll
Decompiled an hour ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security.Cryptography; using System.Text; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Hover.NetcodePatcher; using LethalCompanyInputUtils.Api; using LethalLevelLoader; using Microsoft.CodeAnalysis; using TMPro; using Unity.Netcode; using UnityEngine; using UnityEngine.Events; using UnityEngine.InputSystem; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Hover")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Hover")] [assembly: AssemblyTitle("Hover")] [assembly: AssemblyVersion("1.0.0.0")] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace Hover { public class CruiserParts : MonoBehaviour { public List<Collider> keepDisabled = new List<Collider>(); public List<InteractTrigger> keepUninteractable = new List<InteractTrigger>(); private InteractTrigger lastReported; private void Enforce() { foreach (Collider item in keepDisabled) { if ((Object)(object)item != (Object)null && item.enabled) { item.enabled = false; } } foreach (InteractTrigger item2 in keepUninteractable) { if ((Object)(object)item2 != (Object)null) { item2.interactable = false; } } } private void FixedUpdate() { Enforce(); } private void LateUpdate() { Enforce(); } private void Update() { InteractTrigger val = GameNetworkManager.Instance?.localPlayerController?.hoveringOverTrigger; if (!((Object)(object)val == (Object)null) && !((Object)(object)val == (Object)(object)lastReported) && keepUninteractable.Contains(val)) { lastReported = val; Plugin.Log.LogWarning((object)$"Player looks at leftover Cruiser trigger '{((Object)val).name}' (tip '{val.hoverTip}', layer {((Component)val).gameObject.layer})"); } } } public class HoverDeck : MonoBehaviour { private const int Front = 0; private const int Rear = 1; private VehicleController vc; private PlaceableObjectsSurface[] slots = (PlaceableObjectsSurface[])(object)new PlaceableObjectsSurface[2]; private InteractTrigger[] seats = (InteractTrigger[])(object)new InteractTrigger[2]; private BoxCollider[] seatBoxes = (BoxCollider[])(object)new BoxCollider[2]; private BoxCollider[] hull; private bool wasSeated; public InteractTrigger FrontSeat => seats[0]; public PlayerControllerB FrontOccupant { get { if (!((Object)(object)seats[0] != (Object)null) || !((Object)(object)seats[0].lockedPlayer != (Object)null)) { return null; } return ((Component)seats[0].lockedPlayer).GetComponent<PlayerControllerB>(); } } private void Awake() { vc = ((Component)this).GetComponent<VehicleController>(); PlaceableObjectsSurface[] componentsInChildren = ((Component)this).GetComponentsInChildren<PlaceableObjectsSurface>(true); foreach (PlaceableObjectsSurface val in componentsInChildren) { if (((Object)val).name == "LeftShelfPlacementCollider") { slots[0] = val; } if (((Object)val).name == "RightShelfPlacementCollider") { slots[1] = val; } } seats[0] = Array.Find(((Component)this).GetComponentsInChildren<InteractTrigger>(true), (InteractTrigger t) => ((Object)t).name == "FrontSeatTrigger"); seats[1] = vc.passengerSeatTrigger; for (int num = 0; num < 2; num++) { if ((Object)(object)seats[num] != (Object)null) { seatBoxes[num] = Array.Find(((Component)seats[num]).GetComponents<BoxCollider>(), (BoxCollider b) => b.center == Vector3.zero); } } } internal bool IsSeated(PlayerControllerB p) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)p != (Object)null && !p.isPlayerDead && p.inSpecialInteractAnimation) { return Vector3.Distance(((Component)p).transform.position, ((Component)this).transform.position) < 4f; } return false; } private bool HasPlayer(int slot) { return IsSeated((slot == 0) ? FrontOccupant : vc.currentPassenger); } private void CountItems(int slot, out int small, out int big) { //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) small = (big = 0); float num = ((slot == 0) ? HoverModel.SlotFront.z : HoverModel.SlotRear.z); GrabbableObject[] componentsInChildren = ((Component)this).GetComponentsInChildren<GrabbableObject>(); foreach (GrabbableObject val in componentsInChildren) { if (val.isHeld) { continue; } Vector3 val2 = ((Component)this).transform.InverseTransformPoint(((Component)val).transform.position); if (!(Mathf.Abs(val2.z - num) > 0.4f) && !(Mathf.Abs(val2.x) > 0.45f)) { if (val.itemProperties.twoHanded) { big++; } else { small++; } } } } internal bool CanPlace(PlaceableObjectsSurface surface, GrabbableObject held, out string why) { why = ""; int num = Array.IndexOf(slots, surface); if (num < 0) { return (Object)(object)held != (Object)null; } if ((Object)(object)held == (Object)null) { return false; } if (held is HoverItem) { why = "No room for a hover here"; return false; } if (HasPlayer(num)) { why = "Someone is sitting here"; return false; } CountItems(num, out var small, out var big); bool num2; if (!held.itemProperties.twoHanded) { if (big > 0) { goto IL_007e; } num2 = small >= 2; } else { num2 = small + big > 0; } if (!num2) { return true; } goto IL_007e; IL_007e: why = "No room left here"; return false; } private void UpdatePassengerTips(PlayerControllerB local) { bool flag = (Object)(object)local != (Object)null && ((Object)(object)FrontOccupant == (Object)(object)local || vc.localPlayerInPassengerSeat); if (flag && !wasSeated) { HUDManager.Instance.ChangeControlTipMultiple(HoverInput.PassengerTips(), false, (Item)null); } if (!flag && wasSeated) { if ((Object)(object)local.currentlyHeldObjectServer != (Object)null) { local.currentlyHeldObjectServer.SetControlTipsForItem(); } else { HUDManager.Instance.ClearControlTips(); } } wasSeated = flag; } private void Update() { PlayerControllerB val = GameNetworkManager.Instance?.localPlayerController; UpdatePassengerTips(val); bool flag = (Object)(object)val != (Object)null && val.isHoldingObject; for (int i = 0; i < 2; i++) { if (!((Object)(object)seats[i] == (Object)null)) { CountItems(i, out var small, out var big); bool flag2 = small + big > 0; if ((Object)(object)seatBoxes[i] != (Object)null && !HasPlayer(i)) { ((Collider)seatBoxes[i]).enabled = !flag && !flag2; } if (!HasPlayer(i)) { seats[i].interactable = !flag2; seats[i].disabledHoverTip = "Take the items off first"; } } } } private void FixedUpdate() { if (hull == null) { hull = Array.FindAll(((Component)this).GetComponents<BoxCollider>(), (BoxCollider c) => ((Collider)c).enabled); } PlayerControllerB frontOccupant = FrontOccupant; PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (!((Object)(object)val == (Object)null) && !((Object)(object)val.thisController == (Object)null)) { bool flag = ((Object)(object)val == (Object)(object)vc.currentDriver || (Object)(object)val == (Object)(object)vc.currentPassenger || (Object)(object)val == (Object)(object)frontOccupant) && IsSeated(val); BoxCollider[] array = hull; foreach (BoxCollider val2 in array) { Physics.IgnoreCollision((Collider)(object)val.thisController, (Collider)(object)val2, flag); } } } } } public class HoverFlight : MonoBehaviour { public float hoverHeight = 1.6f; public float restHeight = 0.05f; public bool parked; public float minHeight = 0.6f; public float maxHeight = 4f; public float heightRate = 1.5f; public float hullHalfHeight = 0.41f; public float groundRange = 12f; public float altitudeK = 6f; public float altitudeD = 4f; public float attitudeK = 25f; public float attitudeD = 6f; public float terrainFollow = 0.6f; public float thrust = 16f; public float reverseThrust = 8f; public float maxSpeed = 28f; public float turnRate = 1.8f; public float yawResponse = 4f; public float leanMax = 25f; public float lateralGrip = 5f; public float idleDrag = 1.2f; private static readonly float[] Lookahead = new float[3] { 1.5f, 3f, 4.5f }; private HoverVehicle hover; private VehicleController vc; private Rigidbody rb; private Transform[] points; private bool comSet; private bool wasDriving; private float pendingDrain; private float drainTimer; private Transform handlebar; private Quaternion handlebarRest; private float steer; private float lastYaw; private static readonly FieldRef<VehicleController, string[]> CarTooltips = AccessTools.FieldRefAccess<VehicleController, string[]>("carTooltips"); public bool IsResting { get { if (!((Object)(object)vc.currentDriver == (Object)null) && !parked) { return hover.Charge.Value <= 0f; } return true; } } private void Awake() { //IL_00eb: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) hover = ((Component)this).GetComponent<HoverVehicle>(); vc = ((Component)this).GetComponent<VehicleController>(); rb = vc.mainRigidbody; vc.hasBeenSpawned = true; vc.stability = 0f; vc.speed = 0.01f; points = Array.FindAll(((Component)this).GetComponentsInChildren<Transform>(true), (Transform t) => ((Object)t).name == "HoverPoint"); WheelCollider[] componentsInChildren = ((Component)this).GetComponentsInChildren<WheelCollider>(true); for (int num = 0; num < componentsInChildren.Length; num++) { ((Collider)componentsInChildren[num]).enabled = false; } handlebar = Array.Find(((Component)this).GetComponentsInChildren<Transform>(true), (Transform t) => ((Object)t).name == "HandlebarPivot"); if ((Object)(object)handlebar != (Object)null) { handlebarRest = handlebar.localRotation; } } private static Vector2 MoveInput() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) return InputSystem.actions.FindAction("Move", false).ReadValue<Vector2>(); } private void Update() { if (vc.localPlayerInControl && !wasDriving) { CarTooltips.Invoke(vc) = HoverInput.RiderTips(); } wasDriving = vc.localPlayerInControl; TurnHandlebar(); } private void TurnHandlebar() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)handlebar == (Object)null) && !(Time.deltaTime <= 0f)) { float y = ((Component)this).transform.eulerAngles.y; float num = (vc.localPlayerInControl ? MoveInput().x : Mathf.Clamp(Mathf.DeltaAngle(lastYaw, y) / Time.deltaTime / 100f, -1f, 1f)); lastYaw = y; steer = Mathf.MoveTowards(steer, num, 5f * Time.deltaTime); handlebar.localRotation = handlebarRest * Quaternion.AngleAxis(steer * 25f, Vector3.up); } } private void FixedUpdate() { //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01e5: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_023d: Unknown result type (might be due to invalid IL or missing references) //IL_0242: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0298: Unknown result type (might be due to invalid IL or missing references) //IL_02ac: Unknown result type (might be due to invalid IL or missing references) //IL_02b1: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02e6: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_0309: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_032f: Unknown result type (might be due to invalid IL or missing references) //IL_033a: Unknown result type (might be due to invalid IL or missing references) //IL_033f: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_0354: Unknown result type (might be due to invalid IL or missing references) //IL_0359: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_0360: Unknown result type (might be due to invalid IL or missing references) //IL_0368: Unknown result type (might be due to invalid IL or missing references) //IL_036d: Unknown result type (might be due to invalid IL or missing references) //IL_036f: Unknown result type (might be due to invalid IL or missing references) //IL_0374: Unknown result type (might be due to invalid IL or missing references) //IL_037c: Unknown result type (might be due to invalid IL or missing references) //IL_0387: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_0391: Unknown result type (might be due to invalid IL or missing references) //IL_0396: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_03a3: Unknown result type (might be due to invalid IL or missing references) //IL_03ab: Unknown result type (might be due to invalid IL or missing references) //IL_03b0: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03bd: Unknown result type (might be due to invalid IL or missing references) //IL_03ce: Unknown result type (might be due to invalid IL or missing references) //IL_03ec: Unknown result type (might be due to invalid IL or missing references) //IL_03f9: Unknown result type (might be due to invalid IL or missing references) //IL_0404: Unknown result type (might be due to invalid IL or missing references) //IL_040f: Unknown result type (might be due to invalid IL or missing references) //IL_041a: Unknown result type (might be due to invalid IL or missing references) //IL_041c: Unknown result type (might be due to invalid IL or missing references) //IL_0425: Unknown result type (might be due to invalid IL or missing references) //IL_0462: Unknown result type (might be due to invalid IL or missing references) //IL_04ac: Unknown result type (might be due to invalid IL or missing references) //IL_04ae: Unknown result type (might be due to invalid IL or missing references) //IL_04b9: Unknown result type (might be due to invalid IL or missing references) //IL_0442: Unknown result type (might be due to invalid IL or missing references) //IL_044a: Unknown result type (might be due to invalid IL or missing references) //IL_044f: Unknown result type (might be due to invalid IL or missing references) //IL_0455: Unknown result type (might be due to invalid IL or missing references) //IL_04c4: Unknown result type (might be due to invalid IL or missing references) //IL_04c6: Unknown result type (might be due to invalid IL or missing references) //IL_04cb: Unknown result type (might be due to invalid IL or missing references) //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_04d2: Unknown result type (might be due to invalid IL or missing references) //IL_04d7: Unknown result type (might be due to invalid IL or missing references) //IL_04df: Unknown result type (might be due to invalid IL or missing references) //IL_04e1: Unknown result type (might be due to invalid IL or missing references) //IL_04ec: Unknown result type (might be due to invalid IL or missing references) //IL_0486: Unknown result type (might be due to invalid IL or missing references) //IL_048e: Unknown result type (might be due to invalid IL or missing references) //IL_0493: Unknown result type (might be due to invalid IL or missing references) //IL_0499: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)hover).IsSpawned || !((NetworkBehaviour)vc).IsOwner || rb.isKinematic || vc.carDestroyed) { return; } if (!comSet) { rb.centerOfMass = new Vector3(0f, -0.95f, 0f); comSet = true; } if ((Object)(object)vc.currentDriver == (Object)null) { parked = false; } bool flag = !IsResting; int num; Vector2 val; if (flag) { num = (vc.localPlayerInControl ? 1 : 0); if (num != 0) { val = MoveInput(); goto IL_00a7; } } else { num = 0; } val = Vector2.zero; goto IL_00a7; IL_00a7: Vector2 val2 = val; if (num != 0) { if (Plugin.Input.HoverUp.IsPressed()) { hoverHeight += heightRate * Time.fixedDeltaTime; } if (Plugin.Input.HoverDown.IsPressed()) { hoverHeight -= heightRate * Time.fixedDeltaTime; } hoverHeight = Mathf.Clamp(hoverHeight, minHeight, maxHeight); } int num2 = StartOfRound.Instance.collidersAndRoomMaskAndDefault & -1073741825; float num3 = float.MinValue; Vector3 val3 = Vector3.zero; Transform[] array = points; RaycastHit val4 = default(RaycastHit); for (int i = 0; i < array.Length; i++) { if (Physics.Raycast(array[i].position + Vector3.up, Vector3.down, ref val4, groundRange + 1f, num2, (QueryTriggerInteraction)1)) { num3 = Mathf.Max(num3, ((RaycastHit)(ref val4)).point.y); val3 += ((RaycastHit)(ref val4)).normal; } } if (num3 == float.MinValue) { return; } Vector3 val5 = Vector3.ProjectOnPlane(rb.velocity, Vector3.up); Vector3 val6 = Vector3.ProjectOnPlane(((Component)this).transform.forward, Vector3.up); Vector3 normalized = ((Vector3)(ref val6)).normalized; Vector3 val7 = ((((Vector3)(ref val5)).magnitude > 1f) ? ((Vector3)(ref val5)).normalized : normalized); float[] lookahead = Lookahead; RaycastHit val8 = default(RaycastHit); foreach (float num4 in lookahead) { if (Physics.Raycast(rb.worldCenterOfMass + val7 * num4 + Vector3.up * 2f, Vector3.down, ref val8, groundRange + 2f, num2, (QueryTriggerInteraction)1)) { num3 = Mathf.Max(num3, ((RaycastHit)(ref val8)).point.y); } } float num5 = num3 + (flag ? hoverHeight : restHeight) - (rb.worldCenterOfMass.y - hullHalfHeight); val6 = Physics.gravity; float num6 = ((Vector3)(ref val6)).magnitude + altitudeK * num5 - altitudeD * rb.velocity.y; val6 = Physics.gravity; float num7 = Mathf.Clamp(num6, 0f, 3f * ((Vector3)(ref val6)).magnitude); rb.AddForce(Vector3.up * num7, (ForceMode)5); float num8 = Mathf.Clamp01(((Vector3)(ref val5)).magnitude / 8f); Vector3 val9 = Vector3.Slerp(Vector3.up, ((Vector3)(ref val3)).normalized, terrainFollow); val9 = Quaternion.AngleAxis((0f - leanMax) * val2.x * num8, normalized) * val9; Vector3 val10 = Vector3.Cross(((Component)this).transform.up, val9); Vector3 val11 = rb.angularVelocity - Vector3.Project(rb.angularVelocity, Vector3.up); rb.AddTorque(val10 * attitudeK - val11 * attitudeD, (ForceMode)5); float num9 = turnRate * val2.x * (0.5f + 0.5f * num8); rb.AddTorque(Vector3.up * (num9 - rb.angularVelocity.y) * yawResponse, (ForceMode)5); float num10 = Vector3.Dot(val5, normalized); if (val2.y > 0.1f && num10 < maxSpeed) { rb.AddForce(normalized * thrust * val2.y, (ForceMode)5); } else if (val2.y < -0.1f && num10 > (0f - maxSpeed) * 0.4f) { rb.AddForce(normalized * reverseThrust * val2.y, (ForceMode)5); } else { rb.AddForce(-val5 * idleDrag, (ForceMode)5); } Vector3 val12 = Vector3.Project(val5, Vector3.Cross(Vector3.up, normalized)); rb.AddForce(-val12 * lateralGrip, (ForceMode)5); if (flag && ((Vector3)(ref val5)).magnitude > 1f) { pendingDrain += Time.fixedDeltaTime / 60f; } drainTimer += Time.fixedDeltaTime; if (drainTimer >= 0.5f && pendingDrain > 0f) { hover.ConsumeServerRpc(pendingDrain); pendingDrain = 0f; drainTimer = 0f; } } } public class HoverInput : LcInputActions { [InputAction("<Keyboard>/f", Name = "Hover: fold / get off")] public InputAction FoldKey { get; set; } [InputAction("<Keyboard>/x", Name = "Hover: park")] public InputAction ParkKey { get; set; } [InputAction("<Keyboard>/space", Name = "Hover: higher")] public InputAction HoverUp { get; set; } [InputAction("<Keyboard>/leftCtrl", Name = "Hover: lower")] public InputAction HoverDown { get; set; } internal static void OnFoldKey() { //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) PlayerControllerB val = GameNetworkManager.Instance?.localPlayerController; if ((Object)(object)val == (Object)null || val.isPlayerDead || val.inTerminalMenu || val.isTypingChat || val.quickMenuManager.isMenuOpen) { return; } HoverVehicle[] array = Object.FindObjectsOfType<HoverVehicle>(); foreach (HoverVehicle hoverVehicle in array) { if (SeatedOn(val, hoverVehicle, out var seat)) { Plugin.Log.LogInfo((object)("Getting off the hover from the " + ((Object)seat).name + ".")); VehicleController vc = hoverVehicle.Vc; if ((Object)(object)seat == (Object)(object)vc.driverSeatTrigger) { vc.ExitDriverSideSeat(); return; } if ((Object)(object)seat == (Object)(object)vc.passengerSeatTrigger) { vc.ExitPassengerSideSeat(); return; } seat.StopSpecialAnimation(); val.TeleportPlayer(((Component)hoverVehicle).transform.TransformPoint(new Vector3(1.2f, -0.6f, HoverModel.SlotFront.z)), false, 0f, false, true); return; } } Transform transform = ((Component)val.gameplayCamera).transform; RaycastHit[] array2 = Physics.RaycastAll(transform.position, transform.forward, 4f, -1, (QueryTriggerInteraction)2); Array.Sort(array2, (RaycastHit a, RaycastHit b) => ((RaycastHit)(ref a)).distance.CompareTo(((RaycastHit)(ref b)).distance)); RaycastHit[] array3 = array2; for (int i = 0; i < array3.Length; i++) { RaycastHit val2 = array3[i]; if (((RaycastHit)(ref val2)).transform.IsChildOf(((Component)val).transform)) { continue; } HoverItem componentInParent = ((Component)((RaycastHit)(ref val2)).collider).GetComponentInParent<HoverItem>(); if ((Object)(object)componentInParent != (Object)null && !((GrabbableObject)componentInParent).isHeld) { TryUnfold(val, componentInParent); break; } HoverVehicle componentInParent2 = ((Component)((RaycastHit)(ref val2)).collider).GetComponentInParent<HoverVehicle>(); if ((Object)(object)componentInParent2 != (Object)null) { if (!componentInParent2.IsEmpty) { HUDManager.Instance.DisplayTip("Hover", "Everyone has to get off first.", false, false, "LC_Tip1"); } else if (componentInParent2.HasItems) { HUDManager.Instance.DisplayTip("Hover", "Take the items off first.", false, false, "LC_Tip1"); } else { componentInParent2.FoldServerRpc(); } break; } if (!((RaycastHit)(ref val2)).collider.isTrigger) { break; } } } private static bool SeatedOn(PlayerControllerB p, HoverVehicle h, out InteractTrigger seat) { //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) seat = p.currentTriggerInAnimationWith; if ((Object)(object)seat == (Object)null || !p.inSpecialInteractAnimation || (Object)(object)seat.lockedPlayer != (Object)(object)((Component)p).transform) { return false; } if ((Object)(object)seat != (Object)(object)h.Vc.driverSeatTrigger && (Object)(object)seat != (Object)(object)h.Vc.passengerSeatTrigger && (Object)(object)seat != (Object)(object)h.Deck.FrontSeat) { return false; } return Vector3.Distance(((Component)p).transform.position, ((Component)h).transform.position) < 4f; } private static string Key(InputAction a) { return InputActionRebindingExtensions.GetBindingDisplayString(a, (DisplayStringOptions)0, (string)null); } internal static string[] RiderTips() { return new string[4] { "Ride : [W][A][S][D]", "Higher / lower : [" + Key(Plugin.Input.HoverUp) + "] / [" + Key(Plugin.Input.HoverDown) + "]", "Park : [" + Key(Plugin.Input.ParkKey) + "]", "Get off : [" + Key(Plugin.Input.FoldKey) + "]" }; } internal static string[] PassengerTips() { return new string[1] { "Get off : [" + Key(Plugin.Input.FoldKey) + "]" }; } internal static void OnParkKey() { HoverVehicle[] array = Object.FindObjectsOfType<HoverVehicle>(); foreach (HoverVehicle hoverVehicle in array) { if (hoverVehicle.Vc.localPlayerInControl) { hoverVehicle.Flight.parked = !hoverVehicle.Flight.parked; HUDManager.Instance.DisplayTip("Hover", hoverVehicle.Flight.parked ? "Parked" : "Hovering", false, false, "LC_Tip1"); } } } internal static void TryUnfold(PlayerControllerB p, HoverItem item) { //IL_0038: Unknown result type (might be due to invalid IL or missing references) if (p.isInsideFactory || p.isInHangarShipRoom) { HUDManager.Instance.DisplayTip("Hover", "Too cramped here. Unfold it outdoors.", false, false, "LC_Tip1"); } else { item.UnfoldServerRpc(((Component)p.gameplayCamera).transform.eulerAngles.y); } } } [HarmonyPatch(typeof(PlayerControllerB), "BeginGrabObject")] internal static class HoldToUnfold { private const float HoldTime = 0.6f; private static bool bypass; private static readonly FieldRef<PlayerControllerB, int> Mask = AccessTools.FieldRefAccess<PlayerControllerB, int>("interactableObjectsMask"); private static bool Prefix(PlayerControllerB __instance) { //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) if (bypass) { return true; } Transform transform = ((Component)__instance.gameplayCamera).transform; RaycastHit val = default(RaycastHit); if (!Physics.Raycast(transform.position, transform.forward, ref val, __instance.grabDistance, Mask.Invoke(__instance))) { return true; } HoverItem component = ((Component)((RaycastHit)(ref val)).collider).GetComponent<HoverItem>(); if ((Object)(object)component == (Object)null || ((GrabbableObject)component).isHeld || __instance.twoHanded) { return true; } ((MonoBehaviour)__instance).StartCoroutine(WaitForRelease(__instance, component)); return false; } private static IEnumerator WaitForRelease(PlayerControllerB p, HoverItem item) { InputAction interact = InputSystem.actions.FindAction("Interact", false); float t = 0f; while (interact.IsPressed()) { if (t >= 0.6f) { if ((Object)(object)item != (Object)null && ((NetworkBehaviour)item).IsSpawned && !((GrabbableObject)item).isHeld) { HoverInput.TryUnfold(p, item); } yield break; } yield return null; t += Time.deltaTime; } bypass = true; try { AccessTools.Method(typeof(PlayerControllerB), "BeginGrabObject", (Type[])null, (Type[])null).Invoke(p, null); } finally { bypass = false; } } } public class HoverItem : GrabbableObject { public override void Start() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Expected O, but got Unknown ((GrabbableObject)this).Start(); if (base.insertedBattery == null) { base.insertedBattery = new Battery(false, 1f); } } [ServerRpc(RequireOwnership = false)] public void UnfoldServerRpc(float yaw) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0114: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val2 = default(ServerRpcParams); FastBufferWriter val = ((NetworkBehaviour)this).__beginSendServerRpc(1409331897u, val2, (RpcDelivery)0); ((FastBufferWriter)(ref val)).WriteValueSafe<float>(ref yaw, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendServerRpc(ref val, 1409331897u, val2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; if (((NetworkBehaviour)this).IsSpawned && !base.isHeld && !base.isHeldByEnemy) { GameObject obj = Object.Instantiate<GameObject>(Plugin.VehiclePrefab, ((Component)this).transform.position + Vector3.up * 1.5f, Quaternion.Euler(0f, yaw, 0f), RoundManager.Instance.VehiclesContainer); float value = base.insertedBattery?.charge ?? 1f; obj.GetComponent<NetworkObject>().Spawn(false); ((NetworkBehaviour)this).NetworkObject.Despawn(true); obj.GetComponent<HoverVehicle>().Charge.Value = value; } } } protected override void __initializeVariables() { ((GrabbableObject)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(1409331897u, new RpcReceiveHandler(__rpc_handler_1409331897), "UnfoldServerRpc"); ((GrabbableObject)this).__initializeRpcs(); } private static void __rpc_handler_1409331897(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { float yaw = default(float); ((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref yaw, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((HoverItem)(object)target).UnfoldServerRpc(yaw); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "HoverItem"; } } internal static class HoverModel { private static readonly Vector4[] Deck = (Vector4[])(object)new Vector4[5] { new Vector4(2.48f, 0.1f, -1f, -0.93f), new Vector4(2.4f, 0.24f, -1.05f, -0.88f), new Vector4(2.25f, 0.36f, -1.12f, -0.83f), new Vector4(2.05f, 0.43f, -1.17f, -0.8f), new Vector4(0.3f, 0.43f, -1.18f, -0.8f) }; private static readonly Vector4[] Rear = (Vector4[])(object)new Vector4[4] { new Vector4(0.45f, 0.43f, -1.2f, -0.78f), new Vector4(0.2f, 0.75f, -1.25f, -0.76f), new Vector4(-1.2f, 0.85f, -1.25f, -0.76f), new Vector4(-1.6f, 0.6f, -1.2f, -0.8f) }; private static readonly Vector4[] Engine = (Vector4[])(object)new Vector4[4] { new Vector4(-0.55f, 0.3f, -0.8f, -0.62f), new Vector4(-0.8f, 0.34f, -0.8f, -0.25f), new Vector4(-1.15f, 0.34f, -0.8f, -0.2f), new Vector4(-1.65f, 0.34f, -0.8f, -0.7f) }; internal static readonly Vector3 ChargerSlopeMid = new Vector3(0f, -0.45f, -1.4f); internal static readonly Vector3 ChargerSlopeNormal = new Vector3(0f, 0.7071f, -0.7071f); private static readonly Vector4[] Saddle = (Vector4[])(object)new Vector4[5] { new Vector4(0.08f, 0.1f, -0.78f, -0.72f), new Vector4(-0.05f, 0.2f, -0.78f, -0.66f), new Vector4(-0.3f, 0.24f, -0.78f, -0.64f), new Vector4(-0.45f, 0.24f, -0.78f, -0.6f), new Vector4(-0.55f, 0.2f, -0.78f, -0.55f) }; private static readonly Vector4[] Backrest = (Vector4[])(object)new Vector4[2] { new Vector4(-0.54f, 0.18f, -0.56f, -0.3f), new Vector4(-0.6f, 0.21f, -0.6f, -0.27f) }; internal static readonly Vector3 SeatTop = new Vector3(0f, -0.62f, -0.3f); internal static readonly Vector3 SlotFront = new Vector3(0f, -0.77f, 1.56f); internal static readonly Vector3 SlotRear = new Vector3(0f, -0.77f, 0.77f); internal static readonly Vector3 HandlebarTop = new Vector3(0f, -0.41f, 0.15f); internal static readonly Vector3 Nose = new Vector3(0f, -0.96f, 2.48f); internal static readonly Vector3[] Lamps = (Vector3[])(object)new Vector3[2] { new Vector3(-0.16f, -0.92f, 2.41f), new Vector3(0.16f, -0.92f, 2.41f) }; internal const float RestGroundY = -1.3f; private static readonly Vector3 StemBase = new Vector3(0f, -0.78f, 0.3f); private static readonly Color Red = new Color(0.62f, 0.17f, 0.08f); private static readonly Color Leather = new Color(0.16f, 0.12f, 0.1f); private static readonly Color Dark = new Color(0.1f, 0.1f, 0.1f); private static readonly Color Metal = new Color(0.32f, 0.32f, 0.34f); internal const float BarWidth = 0.22f; private static Texture2D grime; internal static void Build(Transform parent, Material baseMat) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_022f: Unknown result type (might be due to invalid IL or missing references) //IL_028e: Unknown result type (might be due to invalid IL or missing references) //IL_02a2: Unknown result type (might be due to invalid IL or missing references) //IL_02d1: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_0305: Unknown result type (might be due to invalid IL or missing references) //IL_0319: Unknown result type (might be due to invalid IL or missing references) //IL_0339: Unknown result type (might be due to invalid IL or missing references) //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_0357: Unknown result type (might be due to invalid IL or missing references) //IL_037b: Unknown result type (might be due to invalid IL or missing references) //IL_0380: Unknown result type (might be due to invalid IL or missing references) //IL_0396: Unknown result type (might be due to invalid IL or missing references) //IL_039b: Unknown result type (might be due to invalid IL or missing references) //IL_03b1: Unknown result type (might be due to invalid IL or missing references) //IL_03b6: Unknown result type (might be due to invalid IL or missing references) //IL_03cc: Unknown result type (might be due to invalid IL or missing references) //IL_03d1: Unknown result type (might be due to invalid IL or missing references) //IL_03e1: Unknown result type (might be due to invalid IL or missing references) //IL_03e6: Unknown result type (might be due to invalid IL or missing references) //IL_03e9: Unknown result type (might be due to invalid IL or missing references) //IL_03eb: Unknown result type (might be due to invalid IL or missing references) //IL_03fc: Unknown result type (might be due to invalid IL or missing references) //IL_0401: Unknown result type (might be due to invalid IL or missing references) //IL_0412: Unknown result type (might be due to invalid IL or missing references) //IL_0423: Unknown result type (might be due to invalid IL or missing references) //IL_0428: Unknown result type (might be due to invalid IL or missing references) //IL_042d: Unknown result type (might be due to invalid IL or missing references) //IL_043e: Unknown result type (might be due to invalid IL or missing references) //IL_0443: Unknown result type (might be due to invalid IL or missing references) //IL_04a3: Unknown result type (might be due to invalid IL or missing references) //IL_04b4: Unknown result type (might be due to invalid IL or missing references) //IL_04d1: Unknown result type (might be due to invalid IL or missing references) //IL_04e2: Unknown result type (might be due to invalid IL or missing references) //IL_04ff: Unknown result type (might be due to invalid IL or missing references) //IL_0510: Unknown result type (might be due to invalid IL or missing references) //IL_052e: Unknown result type (might be due to invalid IL or missing references) //IL_0548: Unknown result type (might be due to invalid IL or missing references) //IL_0557: Unknown result type (might be due to invalid IL or missing references) //IL_05a7: Unknown result type (might be due to invalid IL or missing references) //IL_05bb: Unknown result type (might be due to invalid IL or missing references) //IL_05f0: Unknown result type (might be due to invalid IL or missing references) //IL_0604: Unknown result type (might be due to invalid IL or missing references) Material val = Mat(baseMat, Red); Material mat = Mat(baseMat, Leather); Material val2 = Mat(baseMat, Dark); Material val3 = Mat(baseMat, Metal); Material mat2 = Mat(baseMat, new Color(0.2f, 0.4f, 0.8f), new Color(0.3f, 0.6f, 1f) * 2f, textured: false); Material mat3 = Mat(baseMat, new Color(0.6f, 0.05f, 0.05f), new Color(1f, 0.1f, 0.05f) * 2f, textured: false); Add(parent, "Deck", Loft(Deck, 0f, 16, 4.5f), val); Add(parent, "Rear", Loft(Rear, 0f, 16, 5f), val); Add(parent, "Engine", Loft(Engine, 0f, 16, 4f), val); Add(parent, "Saddle", Loft(Saddle, 0f, 16, 2.4f), mat); Add(parent, "Backrest", Loft(Backrest, 0f, 16, 2.6f), mat); BuildNose(parent, val, val2, val3, baseMat); BuildDeckDetails(parent, val, val2, val3); float[] array = new float[2] { -1f, 1f }; foreach (float num in array) { for (int j = 0; j < 4; j++) { Box(parent, new Vector3(0.345f * num, -0.5f, -0.9f - (float)j * 0.12f), new Vector3(0.02f, 0.2f, 0.05f), val2); } Box(parent, new Vector3(0.4f * num, -0.95f, -1.6f), new Vector3(0.15f, 0.06f, 0.02f), mat3); } for (int k = 0; k < 3; k++) { float num2 = -0.85f - (float)k * 0.08f; Box(parent, new Vector3(0f, Mathf.Lerp(-0.25f, -0.2f, (-0.8f - num2) / 0.35f) + 0.004f, num2), new Vector3(0.28f, 0.012f, 0.03f), val2); } BuildRearAirflow(parent, val, val2); Tube(parent, new Vector3(0.24f, -0.2f, -1.05f), new Vector3(0.24f, 0.3f, -1.12f), 0.006f, val3); Tube(parent, new Vector3(0.24f, 0.3f, -1.12f), new Vector3(0.24f, 0.32f, -1.123f), 0.015f, val2); Material mat4 = Mat(baseMat, new Color(0.15f, 0.35f, 0.5f), new Color(0.2f, 0.5f, 0.8f) * 0.8f, textured: false); Vector3[] array2 = (Vector3[])(object)new Vector3[4] { new Vector3(-0.2f, -1.18f, 1.6f), new Vector3(0.2f, -1.18f, 1.6f), new Vector3(-0.55f, -1.25f, -0.9f), new Vector3(0.55f, -1.25f, -0.9f) }; foreach (Vector3 val4 in array2) { Tube(parent, val4, val4 + new Vector3(0f, -0.03f, 0f), 0.11f, val2); Tube(parent, val4 + new Vector3(0f, -0.03f, 0f), val4 + new Vector3(0f, -0.035f, 0f), 0.08f, mat4); } array = new float[2] { -1f, 1f }; foreach (float num3 in array) { float num4 = 0.55f * num3; Tube(parent, new Vector3(num4, -0.9f, -1f), new Vector3(num4, -0.9f, -1.85f), 0.2f, val); Tube(parent, new Vector3(num4, -0.9f, -1.85f), new Vector3(num4, -0.9f, -1.95f), 0.17f, val3); Tube(parent, new Vector3(num4, -0.9f, -1.95f), new Vector3(num4, -0.9f, -1.96f), 0.13f, mat2); Slab(parent, new Vector3(num4, -0.72f, -1.3f), new Vector3(num4 + 0.4f * num3, -0.35f, -2.3f), new Vector2(0.06f, 0.3f), val); } array = new float[2] { -0.35f, 0.35f }; foreach (float num5 in array) { Box(parent, new Vector3(num5, -1.27f, 0.2f), new Vector3(0.06f, 0.04f, 3.2f), val3); float[] array3 = new float[3] { 1.5f, 0.2f, -1.1f }; foreach (float num6 in array3) { Box(parent, new Vector3(num5, -1.225f, num6), new Vector3(0.04f, 0.06f, 0.04f), val3); } } BuildHandlebar(parent, val3, val2, baseMat); } private static void BuildNose(Transform parent, Material red, Material dark, Material metal, Material baseMat) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_0198: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) Material mat = Mat(baseMat, new Color(0.9f, 0.85f, 0.7f), new Color(1f, 0.9f, 0.7f) * 1.5f, textured: false); Vector3[] lamps = Lamps; foreach (Vector3 val in lamps) { Tube(parent, val + new Vector3(0f, 0f, -0.08f), val, 0.065f, dark); Tube(parent, val, val + new Vector3(0f, 0f, 0.01f), 0.05f, mat); } Tube(parent, new Vector3(-0.3f, -1.08f, 2.46f), new Vector3(0.3f, -1.08f, 2.46f), 0.025f, metal); float[] array = new float[2] { -0.24f, 0.24f }; foreach (float num in array) { Tube(parent, new Vector3(num, -1.08f, 2.46f), new Vector3(num, -1.1f, 2.26f), 0.018f, metal); } for (int j = 0; j < 3; j++) { Box(parent, new Vector3(0f, -0.806f - (float)j * 0.01f, 2.1f + (float)j * 0.06f), new Vector3(0.3f, 0.012f, 0.03f), dark); } Box(parent, new Vector3(0f, -1.13f, 2.2f), new Vector3(0.38f, 0.03f, 0.22f), dark); } private static void BuildRearAirflow(Transform parent, Material red, Material dark) { //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_01ae: Unknown result type (might be due to invalid IL or missing references) //IL_01c2: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_024a: Unknown result type (might be due to invalid IL or missing references) //IL_0259: Unknown result type (might be due to invalid IL or missing references) float[] array = new float[2] { -1f, 1f }; foreach (float num in array) { float num2 = (Side(-0.2f) + 0.03f) * num; Add(parent, "Scoop", Loft((Vector4[])(object)new Vector4[3] { new Vector4(0.1f, 0.045f, -1.03f, -0.87f), new Vector4(-0.2f, 0.05f, -1.03f, -0.87f), new Vector4(-0.5f, 0.02f, -0.99f, -0.93f) }, num2, 16, 3f), red); Box(parent, new Vector3(num2, -0.95f, 0.102f), new Vector3(0.07f, 0.13f, 0.015f), dark); for (int j = 0; j < 3; j++) { float num3 = -1.12f + (float)j * 0.07f; Slab(parent, new Vector3((Side(-0.55f) + 0.01f) * num, num3, -0.55f), new Vector3((Side(-1.15f) + 0.01f) * num, num3 + 0.08f, -1.15f), new Vector2(0.02f, 0.02f), dark); } Slab(parent, new Vector3(0.6f * num, -0.755f, 0.15f), new Vector3(0.62f * num, -0.74f, -1.1f), new Vector2(0.04f, 0.035f), red); Box(parent, new Vector3(0.45f * num, -0.758f, -0.35f), new Vector3(0.1f, 0.006f, 0.26f), dark); Box(parent, new Vector3(0.45f * num, -0.758f, -0.2f), new Vector3(0.06f, 0.006f, 0.06f), dark); Slab(parent, new Vector3((Side(0.2f) * 0.985f + 0.012f) * num, -1.15f, 0.2f), new Vector3((Side(-1.2f) * 0.985f + 0.012f) * num, -1.15f, -1.2f), new Vector2(0.03f, 0.05f), dark); } static float Side(float z) { return 0.75f + Mathf.Clamp01((0.2f - z) / 1.4f) * 0.1f; } } private static void BuildDeckDetails(Transform parent, Material red, Material dark, Material metal) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01d4: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0234: Unknown result type (might be due to invalid IL or missing references) Vector3[] array = (Vector3[])(object)new Vector3[2] { SlotFront, SlotRear }; float[] array2; foreach (Vector3 val in array) { Box(parent, val + new Vector3(0f, -0.015f, 0f), new Vector3(0.55f, 0.04f, 0.55f), dark); array2 = new float[2] { -1f, 1f }; foreach (float num in array2) { Box(parent, val + new Vector3(0.29f * num, -0.015f, 0f), new Vector3(0.025f, 0.05f, 0.6f), metal); Box(parent, val + new Vector3(0f, -0.015f, 0.29f * num), new Vector3(0.6f, 0.05f, 0.025f), metal); } } array2 = new float[2] { -1f, 1f }; foreach (float num2 in array2) { Box(parent, new Vector3(0.33f * num2, -0.795f, 1.17f), new Vector3(0.04f, 0.05f, 1.6f), red); Box(parent, new Vector3(0.44f * num2, -0.97f, 1.2f), new Vector3(0.03f, 0.025f, 1.9f), dark); for (int k = 0; k < 3; k++) { Box(parent, new Vector3(0.435f * num2, -0.9f, 1.95f - (float)k * 0.08f), new Vector3(0.02f, 0.04f, 0.05f), dark); } } array2 = new float[3] { 1.95f, 1.18f, 0.38f }; foreach (float num3 in array2) { Box(parent, new Vector3(0f, -0.797f, num3), new Vector3(0.5f, 0.005f, 0.012f), dark); } } private static void BuildHandlebar(Transform parent, Material metal, Material dark, Material baseMat) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0128: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0192: Unknown result type (might be due to invalid IL or missing references) //IL_0197: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01aa: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01ea: Unknown result type (might be due to invalid IL or missing references) //IL_01ef: Unknown result type (might be due to invalid IL or missing references) //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_020d: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0232: Unknown result type (might be due to invalid IL or missing references) //IL_0237: Unknown result type (might be due to invalid IL or missing references) //IL_023c: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_027a: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Unknown result type (might be due to invalid IL or missing references) //IL_02b0: Unknown result type (might be due to invalid IL or missing references) //IL_02c4: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02ea: Unknown result type (might be due to invalid IL or missing references) //IL_02ff: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_0328: Unknown result type (might be due to invalid IL or missing references) //IL_0333: Unknown result type (might be due to invalid IL or missing references) //IL_0347: Unknown result type (might be due to invalid IL or missing references) //IL_0363: Unknown result type (might be due to invalid IL or missing references) //IL_0377: Unknown result type (might be due to invalid IL or missing references) //IL_038c: Unknown result type (might be due to invalid IL or missing references) //IL_0393: Unknown result type (might be due to invalid IL or missing references) //IL_0399: Unknown result type (might be due to invalid IL or missing references) //IL_03bf: Unknown result type (might be due to invalid IL or missing references) //IL_03d3: Unknown result type (might be due to invalid IL or missing references) //IL_03d9: Unknown result type (might be due to invalid IL or missing references) //IL_03e0: Unknown result type (might be due to invalid IL or missing references) //IL_03e6: Unknown result type (might be due to invalid IL or missing references) Tube(parent, StemBase + new Vector3(0f, -0.02f, 0f), StemBase + new Vector3(0f, 0.06f, -0.03f), 0.07f, dark); Transform transform = new GameObject("HandlebarPivot").transform; transform.SetParent(parent, false); transform.localPosition = StemBase; transform.localRotation = Quaternion.FromToRotation(Vector3.up, HandlebarTop - StemBase); Transform transform2 = new GameObject("tmp").transform; transform2.SetParent(parent, false); Tube(transform2, StemBase, HandlebarTop, 0.045f, metal); Box(transform2, HandlebarTop, new Vector3(0.12f, 0.05f, 0.08f), dark); Vector3 val = HandlebarTop + new Vector3(0f, 0f, 0f); Tube(transform2, val + new Vector3(-0.12f, 0f, 0f), val + new Vector3(0.12f, 0f, 0f), 0.022f, metal); float[] array = new float[2] { -1f, 1f }; foreach (float num in array) { Vector3 val2 = val + new Vector3(0.3f * num, 0.05f, -0.07f); Tube(transform2, val + new Vector3(0.12f * num, 0f, 0f), val2, 0.022f, metal); Tube(transform2, val2, val2 + new Vector3(0.1f * num, 0.005f, -0.03f), 0.035f, dark); Tube(transform2, val2 + new Vector3(0.1f * num, 0.005f, -0.03f), val2 + new Vector3(0.115f * num, 0.005f, -0.035f), 0.04f, metal); Tube(transform2, val2 + new Vector3(-0.04f * num, 0f, 0.01f), val2 + new Vector3(-0.02f * num, 0.14f, 0.03f), 0.008f, metal); Box(transform2, val2 + new Vector3(-0.02f * num, 0.16f, 0.03f), new Vector3(0.09f, 0.05f, 0.01f), dark); } Vector3 val3 = HandlebarTop + new Vector3(0f, 0.2f, 0.03f); Tube(transform2, HandlebarTop, val3 + new Vector3(0f, -0.04f, 0f), 0.015f, metal); Transform transform3 = new GameObject("Dash").transform; transform3.SetParent(transform2, false); transform3.localPosition = val3; transform3.localRotation = Quaternion.Euler(20f, 0f, 0f); Box(transform3, Vector3.zero, new Vector3(0.3f, 0.1f, 0.04f), dark); ((Object)Box(transform3, new Vector3(0f, 0f, -0.021f), new Vector3(0.24f, 0.05f, 0.005f), Mat(baseMat, new Color(0.05f, 0.05f, 0.05f), default(Color), textured: false))).name = "HoverBatteryBack"; ((Object)Box(transform3, new Vector3(0f, 0f, -0.025f), new Vector3(0.22f, 0.035f, 0.005f), Mat(baseMat, Color.green, default(Color), textured: false))).name = "HoverBatteryFill"; foreach (Transform item in new List<Transform>(((Component)transform2).GetComponentsInChildren<Transform>())) { if ((Object)(object)item.parent == (Object)(object)transform2) { item.SetParent(transform, true); } } Object.DestroyImmediate((Object)(object)((Component)transform2).gameObject); } internal static MeshRenderer BuildFolded(Transform parent, Bounds fit, Material baseMat) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) Transform transform = new GameObject("HoverFolded").transform; transform.SetParent(parent, false); transform.localPosition = ((Bounds)(ref fit)).center; Vector3 size = ((Bounds)(ref fit)).size; if (size.x >= size.y && size.x >= size.z) { transform.localRotation = Quaternion.Euler(0f, 90f, 0f); } else if (size.y >= size.x && size.y >= size.z) { transform.localRotation = Quaternion.Euler(90f, 0f, 0f); } float num = Mathf.Max(size.x, Mathf.Max(size.y, size.z)); transform.localScale = Vector3.one * (num / 3.8f); Transform transform2 = new GameObject("Centre").transform; transform2.SetParent(transform, false); transform2.localPosition = new Vector3(0f, 0.95f, 0.2f); Material mat = Mat(baseMat, Red); MeshRenderer result = Add(transform2, "Deck", Loft(Deck, 0f, 16, 6f), mat); Add(transform2, "Rear", Loft(Rear, 0f, 16, 5f), mat); Add(transform2, "Engine", Loft(Engine, 0f, 16, 4f), mat); return result; } internal static (Animator anim, Vector3 panel) CopyShipCharger(ItemCharger station, Transform vehicle) { //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e7: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0137: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Expected O, but got Unknown //IL_024f: Unknown result type (might be due to invalid IL or missing references) //IL_0266: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_028c: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_02a4: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_02bc: Unknown result type (might be due to invalid IL or missing references) //IL_02c3: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02dd: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) Animator chargeStationAnimator = station.chargeStationAnimator; if ((Object)(object)chargeStationAnimator == (Object)null) { return default((Animator, Vector3)); } Transform val = ((Component)chargeStationAnimator).transform; Bounds val2; while ((Object)(object)val.parent != (Object)null) { val2 = WorldBounds(val.parent); Vector3 size = ((Bounds)(ref val2)).size; if (!(((Vector3)(ref size)).magnitude < 1.8f)) { break; } val = val.parent; } Bounds val3 = LocalBounds(val); if (((Bounds)(ref val3)).size == Vector3.zero) { return default((Animator, Vector3)); } Transform val4 = (((Object)(object)station.triggerScript != (Object)null) ? station.triggerScript.playerPositionNode : null); Vector3 val5 = Snap(val.InverseTransformDirection(Vector3.up)); Transform obj = val; Vector3 val6; if (!((Object)(object)val4 != (Object)null)) { val2 = StartOfRound.Instance.shipInnerRoomBounds.bounds; val6 = ((Bounds)(ref val2)).center; } else { val6 = val4.position; } Vector3 val7 = Snap(Vector3.ProjectOnPlane(obj.InverseTransformPoint(val6) - ((Bounds)(ref val3)).center, val5)); Vector3 val8 = Vector3.Cross(Vector3.right, ChargerSlopeNormal); Quaternion localRotation = Quaternion.LookRotation(-ChargerSlopeNormal, val8) * Quaternion.Inverse(Quaternion.LookRotation(-val7, val5)); float num = val.lossyScale.x / vehicle.lossyScale.x; float num2 = Vector3.Dot(Abs(val7), ((Bounds)(ref val3)).extents) * num; Vector3 val9 = ChargerSlopeMid + ChargerSlopeNormal * (num2 + 0.01f); GameObject val10 = new GameObject("ChargerHolder"); val10.SetActive(false); GameObject val11 = Object.Instantiate<GameObject>(((Component)val).gameObject, val10.transform); NetworkBehaviour[] componentsInChildren = val11.GetComponentsInChildren<NetworkBehaviour>(true); for (int i = 0; i < componentsInChildren.Length; i++) { Object.DestroyImmediate((Object)(object)componentsInChildren[i]); } MonoBehaviour[] componentsInChildren2 = val11.GetComponentsInChildren<MonoBehaviour>(true); for (int i = 0; i < componentsInChildren2.Length; i++) { Object.DestroyImmediate((Object)(object)componentsInChildren2[i]); } Component[] componentsInChildren3 = val11.GetComponentsInChildren<Component>(true); foreach (Component val12 in componentsInChildren3) { if (!(val12 is Transform) && !(val12 is MeshFilter) && !(val12 is Renderer) && !(val12 is Animator)) { Object.DestroyImmediate((Object)(object)val12); } } Transform transform = new GameObject("ShipCharger").transform; transform.SetParent(vehicle, false); transform.localPosition = val9; transform.localRotation = localRotation; val11.transform.SetParent(transform, false); val11.transform.localRotation = Quaternion.identity; val11.transform.localScale = Vector3.one * num; val11.transform.localPosition = -((Bounds)(ref val3)).center * num; Object.Destroy((Object)(object)val10); return (anim: val11.GetComponentInChildren<Animator>(), panel: val9 + ChargerSlopeNormal * num2); } private static Bounds WorldBounds(Transform t) { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) Renderer[] componentsInChildren = ((Component)t).GetComponentsInChildren<Renderer>(); if (componentsInChildren.Length == 0) { return new Bounds(t.position, Vector3.zero); } Bounds bounds = componentsInChildren[0].bounds; Renderer[] array = componentsInChildren; foreach (Renderer val in array) { ((Bounds)(ref bounds)).Encapsulate(val.bounds); } return bounds; } private static Bounds LocalBounds(Transform t) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) bool flag = false; Bounds result = default(Bounds); MeshFilter[] componentsInChildren = ((Component)t).GetComponentsInChildren<MeshFilter>(); foreach (MeshFilter val in componentsInChildren) { if ((Object)(object)val.sharedMesh == (Object)null) { continue; } Bounds bounds = val.sharedMesh.bounds; Matrix4x4 val2 = t.worldToLocalMatrix * ((Component)val).transform.localToWorldMatrix; for (int j = 0; j < 8; j++) { Vector3 val3 = ((Matrix4x4)(ref val2)).MultiplyPoint3x4(((Bounds)(ref bounds)).center + Vector3.Scale(((Bounds)(ref bounds)).extents, new Vector3((float)(((j & 1) != 0) ? 1 : (-1)), (float)(((j & 2) != 0) ? 1 : (-1)), (float)(((j & 4) != 0) ? 1 : (-1))))); if (!flag) { ((Bounds)(ref result))..ctor(val3, Vector3.zero); flag = true; } else { ((Bounds)(ref result)).Encapsulate(val3); } } } return result; } private static Vector3 Snap(Vector3 v) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Abs(v); if (val.x >= val.y && val.x >= val.z) { return new Vector3(Mathf.Sign(v.x), 0f, 0f); } if (val.y >= val.z) { return new Vector3(0f, Mathf.Sign(v.y), 0f); } return new Vector3(0f, 0f, Mathf.Sign(v.z)); } private static Vector3 Abs(Vector3 v) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) return new Vector3(Mathf.Abs(v.x), Mathf.Abs(v.y), Mathf.Abs(v.z)); } private static Texture2D Grime() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Expected O, but got Unknown //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)grime != (Object)null) { return grime; } grime = new Texture2D(128, 128, (TextureFormat)4, true) { wrapMode = (TextureWrapMode)0, filterMode = (FilterMode)1, name = "HoverGrime" }; Color[] array = (Color[])(object)new Color[16384]; for (int i = 0; i < 128; i++) { for (int j = 0; j < 128; j++) { float num = 0.8f + 0.12f * Mathf.PerlinNoise((float)j * 0.08f, (float)i * 0.08f) + 0.08f * Mathf.PerlinNoise((float)j * 0.3f + 7f, (float)i * 0.3f); if (Mathf.PerlinNoise((float)j * 0.03f + 50f, (float)i * 0.03f + 20f) > 0.63f) { num *= 0.72f; } if (j % 64 == 0 || i % 64 == 0) { num *= 0.55f; } if ((j % 64 == 4 || j % 64 == 60) && i % 16 == 8) { num *= 0.6f; } array[i * 128 + j] = new Color(num, num, num, 1f); } } grime.SetPixels(array); grime.Apply(true); return grime; } private static Material Mat(Material baseMat, Color color, Color emissive = default(Color), bool textured = true) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) Material val = new Material(baseMat); string[] array = new string[5] { "_BaseColorMap", "_MainTex", "_MaskMap", "_NormalMap", "_DetailMap" }; foreach (string text in array) { if (val.HasProperty(text)) { val.SetTexture(text, (Texture)null); } } if (textured) { if (val.HasProperty("_BaseColorMap")) { val.SetTexture("_BaseColorMap", (Texture)(object)Grime()); } if (val.HasProperty("_MainTex")) { val.SetTexture("_MainTex", (Texture)(object)Grime()); } } val.SetColor("_BaseColor", color); val.SetColor("_Color", color); if (emissive != default(Color)) { val.SetColor("_EmissiveColor", emissive); } return val; } private static MeshRenderer Add(Transform parent, string name, Mesh mesh, Material mat) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(name); val.transform.SetParent(parent, false); val.AddComponent<MeshFilter>().sharedMesh = mesh; MeshRenderer obj = val.AddComponent<MeshRenderer>(); ((Renderer)obj).sharedMaterial = mat; return obj; } private static GameObject Primitive(Transform parent, PrimitiveType type, Material mat) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) GameObject obj = GameObject.CreatePrimitive(type); Object.DestroyImmediate((Object)(object)obj.GetComponent<Collider>()); obj.transform.SetParent(parent, false); ((Renderer)obj.GetComponent<MeshRenderer>()).sharedMaterial = mat; return obj; } private static GameObject Box(Transform parent, Vector3 centre, Vector3 size, Material mat) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) GameObject obj = Primitive(parent, (PrimitiveType)3, mat); obj.transform.localPosition = centre; obj.transform.localScale = size; return obj; } private static void Tube(Transform parent, Vector3 from, Vector3 to, float radius, Material mat) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) Transform transform = Primitive(parent, (PrimitiveType)2, mat).transform; transform.localPosition = (from + to) / 2f; transform.localRotation = Quaternion.FromToRotation(Vector3.up, to - from); float num = radius * 2f; Vector3 val = to - from; transform.localScale = new Vector3(num, ((Vector3)(ref val)).magnitude / 2f, radius * 2f); } private static void Slab(Transform parent, Vector3 from, Vector3 to, Vector2 size, Material mat) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) Transform transform = Primitive(parent, (PrimitiveType)3, mat).transform; transform.localPosition = (from + to) / 2f; transform.localRotation = Quaternion.LookRotation(to - from, Vector3.up); float x = size.x; float y = size.y; Vector3 val = to - from; transform.localScale = new Vector3(x, y, ((Vector3)(ref val)).magnitude); } private static void Orient(List<int> tris, List<Vector3> v, Vector3 outward) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) Vector3 val = v[tris[0]]; Vector3 val2 = v[tris[1]]; Vector3 val3 = v[tris[2]]; if (!(Vector3.Dot(Vector3.Cross(val2 - val, val3 - val), outward) >= 0f)) { for (int i = 0; i < tris.Count; i += 3) { int index = i + 1; int index2 = i + 2; int value = tris[i + 2]; int value2 = tris[i + 1]; tris[index] = value; tris[index2] = value2; } } } private static Mesh Loft(Vector4[] sections, float xOffset = 0f, int seg = 16, float roundness = 2.5f) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0208: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_028a: Unknown result type (might be due to invalid IL or missing references) //IL_0297: Expected O, but got Unknown //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_02d0: Unknown result type (might be due to invalid IL or missing references) //IL_02d5: Unknown result type (might be due to invalid IL or missing references) //IL_02db: Unknown result type (might be due to invalid IL or missing references) //IL_02e0: Unknown result type (might be due to invalid IL or missing references) //IL_02e5: Unknown result type (might be due to invalid IL or missing references) //IL_02eb: Unknown result type (might be due to invalid IL or missing references) //IL_02f2: Unknown result type (might be due to invalid IL or missing references) //IL_030b: Unknown result type (might be due to invalid IL or missing references) //IL_0312: Unknown result type (might be due to invalid IL or missing references) //IL_02fb: Unknown result type (might be due to invalid IL or missing references) //IL_0302: Unknown result type (might be due to invalid IL or missing references) //IL_0330: Unknown result type (might be due to invalid IL or missing references) //IL_0337: Unknown result type (might be due to invalid IL or missing references) //IL_033e: Unknown result type (might be due to invalid IL or missing references) //IL_031b: Unknown result type (might be due to invalid IL or missing references) //IL_0322: Unknown result type (might be due to invalid IL or missing references) //IL_0329: Unknown result type (might be due to invalid IL or missing references) //IL_0345: Unknown result type (might be due to invalid IL or missing references) //IL_034c: Unknown result type (might be due to invalid IL or missing references) //IL_0353: Unknown result type (might be due to invalid IL or missing references) //IL_035d: Unknown result type (might be due to invalid IL or missing references) //IL_0362: Unknown result type (might be due to invalid IL or missing references) List<Vector3> list = new List<Vector3>(); List<int> list2 = new List<int>(); float num = 2f / roundness; foreach (Vector4 val in sections) { float num2 = (val.z + val.w) / 2f; float num3 = (val.w - val.z) / 2f; for (int j = 0; j < seg; j++) { float num4 = MathF.PI * 2f * (float)j / (float)seg; float num5 = Mathf.Cos(num4); float num6 = Mathf.Sin(num4); list.Add(new Vector3(xOffset + val.y * Mathf.Sign(num5) * Mathf.Pow(Mathf.Abs(num5), num), num2 + num3 * Mathf.Sign(num6) * Mathf.Pow(Mathf.Abs(num6), num), val.x)); } } List<int> list3 = new List<int>(); for (int k = 0; k < sections.Length - 1; k++) { for (int l = 0; l < seg; l++) { int num7 = k * seg + l; int num8 = k * seg + (l + 1) % seg; int num9 = num7 + seg; int num10 = num8 + seg; list3.AddRange(new int[6] { num7, num9, num8, num8, num9, num10 }); } } Orient(list3, list, Vector3.right); list2.AddRange(list3); float num11 = Mathf.Sign(sections[0].x - sections[^1].x); (int, float)[] array = new(int, float)[2] { (0, num11), (sections.Length - 1, 0f - num11) }; for (int i = 0; i < array.Length; i++) { (int, float) tuple = array[i]; int item = tuple.Item1; float item2 = tuple.Item2; Vector4 val2 = sections[item]; int count = list.Count; list.Add(new Vector3(xOffset, (val2.z + val2.w) / 2f, val2.x)); List<int> list4 = new List<int>(); for (int m = 0; m < seg; m++) { list4.AddRange(new int[3] { count, item * seg + m, item * seg + (m + 1) % seg }); } Orient(list4, list, new Vector3(0f, 0f, item2)); list2.AddRange(list4); } Mesh val3 = new Mesh { name = "HoverLoft" }; val3.SetVertices(list); val3.SetTriangles(list2, 0); val3.RecalculateNormals(); Vector3[] normals = val3.normals; Vector2[] array2 = (Vector2[])(object)new Vector2[list.Count]; for (int n = 0; n < list.Count; n++) { Vector3 val4 = list[n]; Vector3 val5 = Abs(normals[n]); array2[n] = ((val5.x >= val5.y && val5.x >= val5.z) ? new Vector2(val4.z, val4.y) : ((val5.y >= val5.z) ? new Vector2(val4.x, val4.z) : new Vector2(val4.x, val4.y))) * 0.9f; } val3.uv = array2; val3.RecalculateBounds(); return val3; } } public class HoverPower : MonoBehaviour { private HoverVehicle hover; private HoverFlight flight; private VehicleController vc; private InteractTrigger charger; private Animator stationAnim; private AudioClip zap; private bool warnedLow; private bool warnedEmpty; private Transform barFill; private Material barMat; private int barBand = -1; private void Awake() { hover = ((Component)this).GetComponent<HoverVehicle>(); flight = ((Component)this).GetComponent<HoverFlight>(); vc = ((Component)this).GetComponent<VehicleController>(); charger = Array.Find(((Component)this).GetComponentsInChildren<InteractTrigger>(true), (InteractTrigger t) => ((Object)t).name == "HoverCharger"); if ((Object)(object)charger != (Object)null) { ((UnityEvent<PlayerControllerB>)(object)charger.onInteract).AddListener((UnityAction<PlayerControllerB>)delegate(PlayerControllerB p) { ChargeHeldItem(p ?? GameNetworkManager.Instance.localPlayerController); }); } barFill = Array.Find(((Component)this).GetComponentsInChildren<Transform>(true), (Transform t) => ((Object)t).name == "HoverBatteryFill"); if ((Object)(object)barFill != (Object)null) { barMat = ((Renderer)((Component)barFill).GetComponent<MeshRenderer>()).material; } } private void Start() { //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0072: