using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using HarmonyLib; using PluginConfig.API; using PluginConfig.API.Fields; using ULTRAKILL.Portal; using UnityEngine; using ukmod_improvedcamera.src.main; using ukmod_improvedcamera.src.util; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: AssemblyTitle("ukmod_improvedcamera")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ukmod_improvedcamera")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("eaf9a541-f3ca-446e-90b8-e42e924004e9")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace ukmod_improvedcamera { [StructLayout(LayoutKind.Sequential, Size = 1)] public struct PluginInfo { public const string PLUGIN_GUID = "com.gunnanthapop.ukmod_improvedcamera"; public const string PLUGIN_NAME = "Improved Camera Movement"; public const string PLUGIN_VERSION = "1.0.0"; } public class PluginConfigVar { public BoolField enabledScreenshake; public FloatField screenshakeMaster; public FloatField screenshakeFrequency; public FloatField screenshakePitch; public FloatField screenshakeYaw; public FloatField screenshakeRoll; public BoolField enabledViewtilt; public FloatField viewtiltMaster; public FloatField viewtiltPitch; public FloatField viewtiltYaw; public FloatField viewtiltRoll; public FloatField viewtiltRecoveryFrequency; public FloatField viewtiltRecoveryDamping; public PluginConfigVar(PluginConfigurator config) { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Expected O, but got Unknown //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Expected O, but got Unknown //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Expected O, but got Unknown //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Expected O, but got Unknown //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Expected O, but got Unknown //IL_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_00e6: Expected O, but got Unknown //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Expected O, but got Unknown //IL_011d: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Expected O, but got Unknown //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Expected O, but got Unknown //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Expected O, but got Unknown //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Expected O, but got Unknown //IL_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01ad: Expected O, but got Unknown //IL_01cd: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Expected O, but got Unknown //IL_01f7: Unknown result type (might be due to invalid IL or missing references) //IL_0201: Expected O, but got Unknown //IL_0221: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Expected O, but got Unknown //IL_024b: Unknown result type (might be due to invalid IL or missing references) //IL_0255: Expected O, but got Unknown //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_026c: Expected O, but got Unknown enabledScreenshake = new BoolField(config.rootPanel, "Enabled Screenshake", "enabledScreenshake", true); ConfigDivision screenshakeDivision = new ConfigDivision(config.rootPanel, "screenshakeDivision"); screenshakeMaster = new FloatField((ConfigPanel)(object)screenshakeDivision, "Master", "screenshakeMaster", 1f, 0f, 999f); screenshakeFrequency = new FloatField((ConfigPanel)(object)screenshakeDivision, "Frequency", "screenshakeFrequency", 150f, 1f, 999f); screenshakePitch = new FloatField((ConfigPanel)(object)screenshakeDivision, "Pitch", "screenshakePitch", 1f, 0f, 1f); screenshakeYaw = new FloatField((ConfigPanel)(object)screenshakeDivision, "Yaw", "screenshakeYaw", 1f, 0f, 1f); screenshakeRoll = new FloatField((ConfigPanel)(object)screenshakeDivision, "Roll", "screenshakeRoll", 1f, 0f, 1f); enabledScreenshake.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e) { ((ConfigField)screenshakeDivision).interactable = e.value; }; enabledViewtilt = new BoolField(config.rootPanel, "Enabled Camera tilt", "enabledViewtilt", true); ConfigDivision viewtiltDivision = new ConfigDivision(config.rootPanel, "viewtiltDivision"); viewtiltMaster = new FloatField((ConfigPanel)(object)viewtiltDivision, "Master", "viewtiltMaster", 1f, 0f, 999f); viewtiltPitch = new FloatField((ConfigPanel)(object)viewtiltDivision, "Pitch", "viewtiltPitch", 1f, 0f, 1f); viewtiltYaw = new FloatField((ConfigPanel)(object)viewtiltDivision, "Yaw", "viewtiltYaw", 1f, 0f, 1f); viewtiltRoll = new FloatField((ConfigPanel)(object)viewtiltDivision, "Roll", "viewtiltRoll", 1f, 0f, 1f); viewtiltRecoveryFrequency = new FloatField((ConfigPanel)(object)viewtiltDivision, "Recovery Frequency", "viewtiltRecoveryFrequency", 2.5f, 0f, 999f); viewtiltRecoveryDamping = new FloatField((ConfigPanel)(object)viewtiltDivision, "Damping Ratio", "viewtiltRecoveryDamping", 0.5f, 0f, 1f); enabledViewtilt.onValueChange += (BoolValueChangeEventDelegate)delegate(BoolValueChangeEvent e) { ((ConfigField)viewtiltDivision).interactable = e.value; }; } } [BepInPlugin("com.gunnanthapop.ukmod_improvedcamera", "Improved Camera Movement", "1.0.0")] public class MainPluginModule : BaseUnityPlugin { public static PluginConfigVar pluginConfigVar; private void Awake() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown Harmony val = new Harmony("com.gunnanthapop.ukmod_improvedcamera"); val.PatchAll(); PluginConfigurator config = PluginConfigurator.Create("Improved Camera Movement", "com.gunnanthapop.ukmod_improvedcamera"); pluginConfigVar = new PluginConfigVar(config); } } } namespace ukmod_improvedcamera.src.util { public class SpringFloat { public float frequency = 5f; public float dampingRatio = 0.5f; public float Target; public float Position; public float Velocity; public SpringFloat(float startingPosition, float target) { Position = startingPosition; Target = target; Velocity = 0f; } public void Reset() { Position = Target; Velocity = 0f; } public void Update(float deltaTime) { if (!(deltaTime <= 0f)) { float num = frequency * 2f * (float)Math.PI; float num2 = Position - Target; float num3 = (0f - num) * num * num2 - 2f * dampingRatio * num * Velocity; Velocity += num3 * deltaTime; Position += Velocity * deltaTime; } } } public class SpringVector3 { public float frequency = 5f; public float dampingRatio = 0.5f; public Vector3 Target; public Vector3 Position; public Vector3 Velocity; public SpringVector3(Vector3 startingPosition, Vector3 target) { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_0025: 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_0030: Unknown result type (might be due to invalid IL or missing references) Position = startingPosition; Target = target; Velocity = Vector3.zero; } public void Reset() { //IL_0002: 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_0012: Unknown result type (might be due to invalid IL or missing references) Position = Target; Velocity = Vector3.zero; } public void Update(float deltaTime) { //IL_001d: 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_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_0033: 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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_0056: 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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_0060: 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_006a: 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_0077: 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_0082: 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) if (!(deltaTime <= 0f)) { float num = frequency * 2f * (float)Math.PI; Vector3 val = Position - Target; Vector3 val2 = (0f - num) * num * val - 2f * dampingRatio * num * Velocity; Velocity += val2 * deltaTime; Position += Velocity * deltaTime; } } } } namespace ukmod_improvedcamera.src.patches { [HarmonyPatch(typeof(Revolver), "Shoot")] internal class RevolverPatches { private static void Postfix(Revolver __instance, int shotType) { float num = 0.25f; if (__instance.altVersion) { num *= 2f; } if (shotType == 2) { num *= 2f; } MonoSingleton.Instance.camShakeEffect.StartBasicShake(num); } } } namespace ukmod_improvedcamera.src.patches.newmovementpatches { [HarmonyPatch(typeof(NewMovement), "OnTravel")] internal class OnTravelPatch { private static void Postfix(NewMovement __instance, PortalTravelDetails details) { //IL_000a: Unknown result type (might be due to invalid IL or missing references) MonoSingleton.Instance.viewRollEffect.OnPortalTravesal(details); } } [HarmonyPatch(typeof(NewMovement), "Awake")] internal class AwakePatch { private static void Postfix(NewMovement __instance) { __instance.rb.interpolation = (RigidbodyInterpolation)1; } } } namespace ukmod_improvedcamera.src.patches.cameracontroller { [HarmonyPatch(typeof(CameraController), "Awake")] internal class AwakePatch { private static void Postfix(CameraController __instance) { ((Component)__instance).gameObject.AddComponent(); } } [HarmonyPatch(typeof(CameraController), "LateUpdate")] internal class LateUpdatePatch { private static void Postfix(CameraController __instance) { __instance.StopShake(); __instance.tiltRotationZ = 0f; __instance.tiltRotationZSmooth = 0f; } } [HarmonyPatch(typeof(CameraController), "CameraShake")] internal class CameraShakePatch { private static void Prefix(float shakeAmount) { MonoSingleton.Instance.camShakeEffect.StartBasicShake(shakeAmount); } } [HarmonyPatch(typeof(CameraController), "ApplyRotations")] internal class ApplyRotationsPatch { private static bool Prefix(CameraController __instance) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0074: 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_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0089: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_009e: 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_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) //IL_00b4: 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_00d4: 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_00da: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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) Vector3 val = MonoSingleton.Instance.FinalResult; if (GameStateManager.Instance.CameraLocked) { val = Vector3.zero; } __instance.player.transform.localRotation = __instance.gravityRotation * Quaternion.AngleAxis(__instance.rotationY, Vector3.up); MonoSingleton.Instance.rb.rotation = __instance.player.transform.rotation; ((Component)__instance).transform.localRotation = Quaternion.AngleAxis(0f - __instance.rotationX, Vector3.right) * Quaternion.AngleAxis(__instance.transitionRotationZ, Vector3.forward) * Quaternion.AngleAxis(__instance.tiltRotationZ, Vector3.forward) * __instance.rotationOffset * Quaternion.Euler(val); ((Component)__instance.hudCamera).transform.GetChild(0).localRotation = Quaternion.Euler(-val); return false; } } } namespace ukmod_improvedcamera.src.main { public class CameraMovementController : MonoSingleton { public Vector3 FinalResult; public List currentFrameVectorList = new List(); public CameraShakeEffect camShakeEffect; public ViewRollEffect viewRollEffect; private void Awake() { camShakeEffect = ((Component)this).gameObject.AddComponent(); viewRollEffect = ((Component)this).gameObject.AddComponent(); } private void Update() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: 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_001b: 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) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_001e: 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_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) Vector3 val = Vector3.zero; foreach (Vector3 currentFrameVector in currentFrameVectorList) { val += currentFrameVector; } currentFrameVectorList.Clear(); FinalResult = val; } } public class CameraShakeInstance { public float Amplitude; public float Frequency; public float Duration; public float FadeInDuration; public float FadeOutDuration; public float Age; public bool IsDestroyed() { return Age > Duration; } public CameraShakeInstance(float amplitude, float frequency, float duration, float fadeIn, float fadeOut) { Amplitude = amplitude; Frequency = frequency; Duration = duration; FadeInDuration = fadeIn; FadeOutDuration = fadeOut; Age = 0f; } public void Update(float deltaTime) { Age += deltaTime; } public Vector3 GetCurrentOffset() { //IL_0008: 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_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00d7: Unknown result type (might be due to invalid IL or missing references) if (IsDestroyed()) { return Vector3.zero; } float num = Age * Frequency; float num2 = Mathf.Sin(num) * MainPluginModule.pluginConfigVar.screenshakePitch.value; float num3 = Mathf.Cos(num / 2f) * MainPluginModule.pluginConfigVar.screenshakeYaw.value; float num4 = Mathf.Sin(num / 2f) * MainPluginModule.pluginConfigVar.screenshakeRoll.value; float num5 = 1f; if (Age < FadeInDuration) { num5 = Age / FadeInDuration; } else if (Age > Duration - FadeOutDuration) { float num6 = Duration - Age; num5 = num6 / FadeOutDuration; } return new Vector3(num2, num3, num4) * Amplitude * num5; } } public class CameraShakeEffect : MonoBehaviour { private List activeShakes = new List(); public void StartBasicShake(float shakeAmount) { CameraShakeInstance item = new CameraShakeInstance(shakeAmount / 2f, MainPluginModule.pluginConfigVar.screenshakeFrequency.value, Mathf.Max(shakeAmount / 3f, 0.5f), 0.05f, 0.275f); activeShakes.Add(item); } public void StartShake(float amplitude, float frequency, float duration, float fadein, float fadeout) { CameraShakeInstance item = ((frequency != -1f) ? new CameraShakeInstance(amplitude, frequency, duration, fadein, fadeout) : new CameraShakeInstance(amplitude, MainPluginModule.pluginConfigVar.screenshakeFrequency.value, duration, fadein, fadeout)); activeShakes.Add(item); } private void Update() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: 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_0069: Unknown result type (might be due to invalid IL or missing references) //IL_006e: 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_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: 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) Vector3 val = Vector3.zero; for (int num = activeShakes.Count - 1; num >= 0; num--) { CameraShakeInstance cameraShakeInstance = activeShakes[num]; cameraShakeInstance.Update(Time.unscaledDeltaTime); if (cameraShakeInstance.IsDestroyed()) { activeShakes.RemoveAt(num); } else { val += cameraShakeInstance.GetCurrentOffset(); } } val *= MainPluginModule.pluginConfigVar.screenshakeMaster.value; if (MainPluginModule.pluginConfigVar.enabledScreenshake.value) { MonoSingleton.Instance.currentFrameVectorList.Add(val); } } } public class ViewRollEffect : MonoBehaviour { private Rigidbody rb; private Vector3 previousRBPosition; private Vector3 currentRBPosition; private SpringVector3 trackingSpring = new SpringVector3(Vector3.zero, Vector3.zero); private Vector3 SpringOffsetBeforePortal; private void Awake() { //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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) rb = ((Component)((Component)this).transform.parent).GetComponent(); previousRBPosition = rb.position; currentRBPosition = rb.position; } private void Start() { //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) trackingSpring.Position = rb.position; } private void FixedUpdate() { //IL_0002: 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_0013: 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) previousRBPosition = currentRBPosition; currentRBPosition = rb.position; } public Vector3 GetInterpolatedPosition(Vector3 prev, Vector3 cur) { //IL_0019: 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_001c: Unknown result type (might be due to invalid IL or missing references) float num = (Time.time - Time.fixedTime) / Time.fixedDeltaTime; num = Mathf.Clamp01(num); return Vector3.Lerp(prev, cur, num); } private void Update() { //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_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_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0072: 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_0082: 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_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) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: 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) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0100: 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_0135: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) trackingSpring.frequency = MainPluginModule.pluginConfigVar.viewtiltRecoveryFrequency.value; trackingSpring.dampingRatio = MainPluginModule.pluginConfigVar.viewtiltRecoveryDamping.value; trackingSpring.Target = GetInterpolatedPosition(previousRBPosition, currentRBPosition); trackingSpring.Update(Time.deltaTime); float num = Vector3.Dot(trackingSpring.Position - trackingSpring.Target, ((Component)this).transform.up) * MainPluginModule.pluginConfigVar.viewtiltPitch.value; float num2 = Vector3.Dot(trackingSpring.Position - trackingSpring.Target, ((Component)this).transform.right) * -0.5f * MainPluginModule.pluginConfigVar.viewtiltYaw.value; float num3 = Vector3.Dot(trackingSpring.Position - trackingSpring.Target, ((Component)this).transform.right) * MainPluginModule.pluginConfigVar.viewtiltRoll.value; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(num, num2, num3); val *= MainPluginModule.pluginConfigVar.viewtiltMaster.value; if (MainPluginModule.pluginConfigVar.enabledViewtilt.value) { MonoSingleton.Instance.currentFrameVectorList.Add(val); } SpringOffsetBeforePortal = trackingSpring.Position - trackingSpring.Target; } public void OnPortalTravesal(PortalTravelDetails details) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: 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) //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_003e: 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_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) trackingSpring.Position = rb.position + SpringOffsetBeforePortal; trackingSpring.Target = rb.position; previousRBPosition = rb.position; currentRBPosition = rb.position; } } }