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 FreeCam v1.1.0
Cam.dll
Decompiled 2 weeks agousing System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("")] [assembly: AssemblyCompany("McHorse")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+0033f06e376c3eac5c04c11ad201961f3674d637")] [assembly: AssemblyProduct("Cam")] [assembly: AssemblyTitle("Cam")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.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 Cam { [BepInPlugin("McHorse.FreeCam", "FreeCam", "1.1")] public class FreeCam : BaseUnityPlugin { private ConfigEntry<KeyCode> _toggleCameraKey = null; private ConfigEntry<KeyCode> _setEyesKey = null; private ConfigEntry<KeyCode> _toggleHUD = null; private ConfigEntry<KeyCode> _screenshot = null; private ConfigEntry<int> _fov = null; private ConfigEntry<float> _moveSpeed = null; private ConfigEntry<float> _lookSensitivity = null; private ConfigEntry<float> _fovSensitivity = null; private ConfigEntry<bool> _resetPosition = null; private ConfigEntry<bool> _smoothingEnabled = null; private ConfigEntry<float> _smoothingFactor = null; private bool _camDetached; private bool _cameraControlActive; private bool _hudVisible; private float _fovOffset; private float _currentMoveSpeed; private Vector3? _lastDetachedPosition; private Quaternion? _lastDetachedRotation; private float _smoothedFov; private Vector3 _targetPosition; private Quaternion _targetRotation; private const float MoveSpeedMin = 0.5f; private const float MoveSpeedMax = 50f; private Camera? _gameCam; private Transform? _cameraParent; private Vector3 _cameraGlobalPosition; private Vector3 _cameraLocalPosition; private Quaternion _cameraLocalRotation; private Transform? _flashlightParent; private Vector3 _flashlightLocalPosition; private Quaternion _flashlightLocalRotation; private bool _flashlightCached; private int _flashlightLayer = -1; private int _playerLayer = -1; private List<Camera> _allCameras = new List<Camera>(); private List<int> _allCamerasCulling = new List<int>(); private FieldInfo? _fieldLeftScaleAmount = typeof(PlayerExpression).GetField("pupilLeftScaleAmount", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); private FieldInfo? _fieldRightScaleAmount = typeof(PlayerExpression).GetField("pupilRightScaleAmount", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); internal static FreeCam Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } private void Awake() { //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Expected O, but got Unknown //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Expected O, but got Unknown //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown //IL_0175: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Expected O, but got Unknown //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: 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_020b: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Expected O, but got Unknown Instance = this; ((Component)this).gameObject.transform.parent = null; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; Patch(); _toggleCameraKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "ToggleCam", (KeyCode)122, "Toggle camera view"); _setEyesKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "SetEyes", (KeyCode)118, "Set eyes"); _toggleHUD = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "ToggleHUD", (KeyCode)280, "Toggle HUD"); _screenshot = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "Screenshot", (KeyCode)281, "Take a screenshot"); _fov = ((BaseUnityPlugin)this).Config.Bind<int>("Options", "FOV", 50, new ConfigDescription("Set FOV", (AcceptableValueBase)(object)new AcceptableValueRange<int>(0, 180), Array.Empty<object>())); _moveSpeed = ((BaseUnityPlugin)this).Config.Bind<float>("Options", "MoveSpeed", 5f, new ConfigDescription("Default free-cam movement speed.", (AcceptableValueBase)null, Array.Empty<object>())); _lookSensitivity = ((BaseUnityPlugin)this).Config.Bind<float>("Options", "LookSensitivity", 2f, new ConfigDescription("Mouse look sensitivity when controlling detached camera.", (AcceptableValueBase)null, Array.Empty<object>())); _fovSensitivity = ((BaseUnityPlugin)this).Config.Bind<float>("Options", "FovSensitivity", 0.5f, new ConfigDescription("Mouse FOV change sensitivity when holding Alt.", (AcceptableValueBase)null, Array.Empty<object>())); _resetPosition = ((BaseUnityPlugin)this).Config.Bind<bool>("Options", "ResetPosition", true, new ConfigDescription("When enabled, reset the camera's position and rotation to player's head.", (AcceptableValueBase)null, Array.Empty<object>())); _smoothingEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("Smoothing", "Enabled", false, new ConfigDescription("Smooth camera position, rotation and FOV by lerping toward target values.", (AcceptableValueBase)null, Array.Empty<object>())); _smoothingFactor = ((BaseUnityPlugin)this).Config.Bind<float>("Smoothing", "SmoothingFactor", 0.2f, new ConfigDescription("Lerp factor per frame (higher = snappier, lower = smoother).", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0.01f, 1f), Array.Empty<object>())); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!"); } internal void Patch() { //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_0021: Expected O, but got Unknown //IL_0026: Expected O, but got Unknown if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); } internal void Unpatch() { Harmony? harmony = Harmony; if (harmony != null) { harmony.UnpatchSelf(); } } private void Update() { //IL_051b: Unknown result type (might be due to invalid IL or missing references) //IL_0446: Unknown result type (might be due to invalid IL or missing references) //IL_0466: Unknown result type (might be due to invalid IL or missing references) //IL_04ce: 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_049f: Unknown result type (might be due to invalid IL or missing references) //IL_04bc: Unknown result type (might be due to invalid IL or missing references) //IL_04c1: 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) //IL_00dc: 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_01a3: Unknown result type (might be due to invalid IL or missing references) //IL_01a9: 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_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_01c6: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01df: 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_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_01fd: Unknown result type (might be due to invalid IL or missing references) //IL_0202: Unknown result type (might be due to invalid IL or missing references) //IL_0207: 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_0221: Unknown result type (might be due to invalid IL or missing references) //IL_0226: Unknown result type (might be due to invalid IL or missing references) //IL_022b: Unknown result type (might be due to invalid IL or missing references) //IL_0239: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Unknown result type (might be due to invalid IL or missing references) //IL_025d: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_0267: Unknown result type (might be due to invalid IL or missing references) //IL_0275: 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_0296: Unknown result type (might be due to invalid IL or missing references) //IL_029b: Unknown result type (might be due to invalid IL or missing references) //IL_02a9: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02ca: Unknown result type (might be due to invalid IL or missing references) //IL_02cf: 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_02e2: Unknown result type (might be due to invalid IL or missing references) //IL_02e7: Unknown result type (might be due to invalid IL or missing references) //IL_035e: 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_0365: Unknown result type (might be due to invalid IL or missing references) //IL_03a0: Unknown result type (might be due to invalid IL or missing references) //IL_03aa: 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_03d2: Unknown result type (might be due to invalid IL or missing references) //IL_03e2: Unknown result type (might be due to invalid IL or missing references) //IL_03c3: Unknown result type (might be due to invalid IL or missing references) //IL_03fd: Unknown result type (might be due to invalid IL or missing references) //IL_0403: Unknown result type (might be due to invalid IL or missing references) //IL_0413: Unknown result type (might be due to invalid IL or missing references) //IL_03f4: Unknown result type (might be due to invalid IL or missing references) //IL_0421: Unknown result type (might be due to invalid IL or missing references) //IL_0426: Unknown result type (might be due to invalid IL or missing references) if (_camDetached) { UpdateAnimations(); float num = Mathf.Clamp((float)_fov.Value + _fovOffset, 5f, 120f); bool value = _smoothingEnabled.Value; _smoothedFov = (value ? Mathf.Lerp(_smoothedFov, num, _smoothingFactor.Value) : num); CameraZoom.Instance.OverrideZoomSet(_smoothedFov, 0.1f, 2000f, 2000f, ((Component)this).gameObject, 0); if (Input.GetMouseButtonDown(2) && (Object)(object)_gameCam != (Object)null) { _cameraControlActive = !_cameraControlActive; if (_cameraControlActive) { _targetPosition = ((Component)_gameCam).transform.position; _targetRotation = ((Component)_gameCam).transform.rotation; } } if (_cameraControlActive && (Object)(object)_gameCam != (Object)null) { GameDirector instance = GameDirector.instance; if (instance != null) { instance.SetDisableInput(0.1f); } float axis = Input.GetAxis("Mouse ScrollWheel"); if (axis != 0f) { _currentMoveSpeed += axis * 10f; _currentMoveSpeed = Mathf.Clamp(_currentMoveSpeed, 0.5f, 50f); } Transform transform = ((Component)_gameCam).transform; float unscaledDeltaTime = Time.unscaledDeltaTime; if (Input.GetKey((KeyCode)119)) { _targetPosition += _targetRotation * Vector3.forward * (_currentMoveSpeed * unscaledDeltaTime); } if (Input.GetKey((KeyCode)115)) { _targetPosition -= _targetRotation * Vector3.forward * (_currentMoveSpeed * unscaledDeltaTime); } if (Input.GetKey((KeyCode)100)) { _targetPosition += _targetRotation * Vector3.right * (_currentMoveSpeed * unscaledDeltaTime); } if (Input.GetKey((KeyCode)97)) { _targetPosition -= _targetRotation * Vector3.right * (_currentMoveSpeed * unscaledDeltaTime); } if (Input.GetKey((KeyCode)304)) { _targetPosition += Vector3.up * (_currentMoveSpeed * unscaledDeltaTime); } if (Input.GetKey((KeyCode)306)) { _targetPosition -= Vector3.up * (_currentMoveSpeed * unscaledDeltaTime); } if (Input.GetKey((KeyCode)308)) { _fovOffset -= Input.GetAxis("Mouse Y") * _fovSensitivity.Value; } else { float num2 = Input.GetAxis("Mouse X") * _lookSensitivity.Value; float num3 = (0f - Input.GetAxis("Mouse Y")) * _lookSensitivity.Value; Vector3 eulerAngles = ((Quaternion)(ref _targetRotation)).eulerAngles; float num4 = eulerAngles.x + num3; if (num4 > 180f) { num4 -= 360f; } num4 = Mathf.Clamp(num4, -89f, 89f); _targetRotation = Quaternion.Euler(num4, eulerAngles.y + num2, eulerAngles.z); } transform.position = (value ? Vector3.Lerp(transform.position, _targetPosition, _smoothingFactor.Value) : _targetPosition); transform.rotation = (value ? Quaternion.Slerp(transform.rotation, _targetRotation, _smoothingFactor.Value) : _targetRotation); _cameraGlobalPosition = transform.position; } } if (IsInPlayableLevel(out PlayerController playerController)) { if (Input.GetKeyDown(_toggleCameraKey.Value)) { ToggleCameraDetachment(playerController); } if (Input.GetKeyDown(_setEyesKey.Value)) { PlayerAvatar instance2 = PlayerAvatar.instance; PlayerAvatarVisuals playerAvatarVisuals = instance2.playerAvatarVisuals; if (TryGetHit(playerAvatarVisuals.headUpTransform.position, ((Component)instance2.localCamera).transform.forward, out var hit, 200f)) { _cameraGlobalPosition = ((RaycastHit)(ref hit)).point; } } if (Input.GetKeyDown(_toggleHUD.Value)) { GameObject hUDCanvas = GetHUDCanvas(); if ((Object)(object)hUDCanvas != (Object)null) { _hudVisible = !_hudVisible; hUDCanvas.SetActive(_hudVisible); } } } if (!Input.GetKeyDown(_screenshot.Value)) { return; } try { string text = Path.Combine(Paths.BepInExRootPath, "screenshots"); Directory.CreateDirectory(text); string path = $"screenshot_{DateTime.Now:yyyy-MM-dd_HH-mm-ss_fff}.png"; string text2 = Path.Combine(text, path); MenuManager instance3 = MenuManager.instance; if (instance3 != null) { instance3.MenuEffectClick((MenuClickEffectType)0, (MenuPage)null, -1f, -1f, true); } MenuManager instance4 = MenuManager.instance; if (instance4 != null) { instance4.MenuEffectHover(-1f, -1f); } ScreenCapture.CaptureScreenshot(text2); Logger.LogMessage((object)("Screenshot saved: " + text2)); } catch (IOException arg) { Logger.LogError((object)$"Failed to save screenshot: {arg}"); } catch (UnauthorizedAccessException arg2) { Logger.LogError((object)$"Failed to save screenshot: {arg2}"); } catch (ArgumentException arg3) { Logger.LogError((object)$"Failed to save screenshot: {arg3}"); } } public static bool TryGetHit(Vector3 position, Vector3 forward, out RaycastHit hit, float maxDistance = 100f, int layerMask = -5) { //IL_0003: 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_000a: 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) forward = ((Vector3)(ref forward)).normalized; return Physics.Raycast(position, forward, ref hit, maxDistance, layerMask, (QueryTriggerInteraction)1); } private static GameObject? GetHUDCanvas() { GameObject[] array = (from t in Resources.FindObjectsOfTypeAll<Transform>() where ((Object)t).name == "HUD Canvas" select ((Component)t).gameObject).ToArray(); return (array.Length == 0) ? null : array[0]; } private static bool IsInPlayableLevel(out PlayerController playerController) { playerController = null; if (!LevelGenerator.Instance.Generated) { return false; } if (!TryGetLocalPlayerController(out playerController)) { return false; } return true; } private static bool TryGetLocalPlayerController(out PlayerController pc) { pc = null; PlayerController instance = PlayerController.instance; if ((Object)(object)instance != (Object)null && ((Behaviour)instance).isActiveAndEnabled && ((Component)instance).gameObject.activeInHierarchy) { pc = instance; return true; } return false; } private void ToggleCameraDetachment(PlayerController player) { _hudVisible = true; if (!_camDetached) { DetachCamera(player); } else { ReattachCamera(); } } private void DetachCamera(PlayerController player) { //IL_0058: 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_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_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: 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_00e6: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: 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_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: 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_0201: Unknown result type (might be due to invalid IL or missing references) //IL_0206: Unknown result type (might be due to invalid IL or missing references) //IL_026e: Unknown result type (might be due to invalid IL or missing references) //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_0287: Unknown result type (might be due to invalid IL or missing references) if (!TryGetPlayersViewCamera(player, out Camera cam)) { Logger.LogWarning((object)"ToggleDetachGameplayCamera: Couldn't find player's view camera."); return; } _gameCam = cam; _camDetached = true; _fovOffset = 0f; _smoothedFov = _fov.Value; _targetPosition = ((Component)cam).transform.position; _targetRotation = ((Component)cam).transform.rotation; _currentMoveSpeed = _moveSpeed.Value; _cameraParent = ((Component)cam).transform.parent; _cameraGlobalPosition = new Vector3(((Component)((Component)cam).transform).transform.position.x, ((Component)((Component)cam).transform).transform.position.y, ((Component)((Component)cam).transform).transform.position.z); _cameraLocalPosition = ((Component)cam).transform.localPosition; _cameraLocalRotation = ((Component)cam).transform.localRotation; _playerLayer = PlayerAvatar.instance.playerAvatarVisuals.meshParent.layer; _allCameras.Clear(); _allCameras.AddRange(((Component)Camera.main).GetComponentsInChildren<Camera>(true)); _allCamerasCulling.Clear(); foreach (Camera allCamera in _allCameras) { _allCamerasCulling.Add(allCamera.cullingMask); } ((Component)cam).transform.SetParent((Transform)null, true); if (!_resetPosition.Value && _lastDetachedPosition.HasValue && _lastDetachedRotation.HasValue) { ((Component)cam).transform.position = _lastDetachedPosition.Value; ((Component)cam).transform.rotation = _lastDetachedRotation.Value; _cameraGlobalPosition = _lastDetachedPosition.Value; } PlayerAvatar.instance.playerAvatarVisuals.meshParent.SetActive(true); ((Behaviour)PlayerAvatar.instance.playerAvatarVisuals.animator).enabled = true; BindFlashlightToClientHand(enable: true); ApplyFlashlightCameraMaskRouting(); GameObject? hUDCanvas = GetHUDCanvas(); if (hUDCanvas != null) { hUDCanvas.SetActive(_hudVisible); } ManualLogSource logger = Logger; object arg = ((Component)cam).transform.position; Quaternion rotation = ((Component)cam).transform.rotation; logger.LogMessage((object)$"Camera detached at world pos={arg} rot={((Quaternion)(ref rotation)).eulerAngles}"); } private void ReattachCamera() { //IL_0030: 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_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)_gameCam == (Object)null) { _camDetached = false; Logger.LogWarning((object)"ToggleDetachGameplayCamera: Missing cached camera; resetting state."); return; } _lastDetachedPosition = _cameraGlobalPosition; _lastDetachedRotation = ((Component)_gameCam).transform.rotation; Transform transform = ((Component)_gameCam).transform; if ((Object)(object)_cameraParent != (Object)null) { transform.SetParent(_cameraParent, false); transform.localPosition = _cameraLocalPosition; transform.localRotation = _cameraLocalRotation; } else { Logger.LogWarning((object)"ToggleDetachGameplayCamera: Original parent was null/missing; leaving camera unparented."); } _camDetached = false; _cameraControlActive = false; PlayerAvatar.instance.playerAvatarVisuals.meshParent.SetActive(false); ((Behaviour)PlayerAvatar.instance.playerAvatarVisuals.animator).enabled = false; GameObject? hUDCanvas = GetHUDCanvas(); if (hUDCanvas != null) { hUDCanvas.SetActive(true); } for (int i = 0; i < _allCameras.Count; i++) { _allCameras[i].cullingMask = _allCamerasCulling[i]; } BindFlashlightToClientHand(enable: false); Logger.LogMessage((object)"Camera reattached and restored."); } private static bool TryGetPlayersViewCamera(PlayerController player, out Camera cam) { cam = null; Camera componentInChildren = ((Component)player).GetComponentInChildren<Camera>(true); if ((Object)(object)componentInChildren != (Object)null && ((Behaviour)componentInChildren).isActiveAndEnabled && ((Component)componentInChildren).gameObject.activeInHierarchy) { cam = componentInChildren; return true; } if ((Object)(object)Camera.main != (Object)null && ((Behaviour)Camera.main).isActiveAndEnabled && ((Component)Camera.main).gameObject.activeInHierarchy) { cam = Camera.main; return true; } return false; } private void UpdateAnimations() { //IL_027e: Unknown result type (might be due to invalid IL or missing references) //IL_0283: Unknown result type (might be due to invalid IL or missing references) //IL_0294: 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_0070: 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_02c1: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: 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_00bb: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: 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_00cb: 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_00d4: 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_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_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0120: 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_0127: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_0159: Unknown result type (might be due to invalid IL or missing references) //IL_015e: Unknown result type (might be due to invalid IL or missing references) //IL_0160: 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_00a4: 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_0342: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0245: Unknown result type (might be due to invalid IL or missing references) //IL_025b: Unknown result type (might be due to invalid IL or missing references) //IL_0262: Unknown result type (might be due to invalid IL or missing references) //IL_03ef: 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_042e: Unknown result type (might be due to invalid IL or missing references) //IL_0439: Unknown result type (might be due to invalid IL or missing references) //IL_044d: Unknown result type (might be due to invalid IL or missing references) //IL_0468: Unknown result type (might be due to invalid IL or missing references) //IL_049f: Unknown result type (might be due to invalid IL or missing references) //IL_0530: Unknown result type (might be due to invalid IL or missing references) //IL_0535: Unknown result type (might be due to invalid IL or missing references) //IL_0539: Unknown result type (might be due to invalid IL or missing references) //IL_054f: Unknown result type (might be due to invalid IL or missing references) //IL_0554: Unknown result type (might be due to invalid IL or missing references) //IL_0556: Unknown result type (might be due to invalid IL or missing references) //IL_055b: Unknown result type (might be due to invalid IL or missing references) //IL_0562: Unknown result type (might be due to invalid IL or missing references) //IL_0567: Unknown result type (might be due to invalid IL or missing references) //IL_056f: Unknown result type (might be due to invalid IL or missing references) //IL_0577: Unknown result type (might be due to invalid IL or missing references) //IL_057c: Unknown result type (might be due to invalid IL or missing references) //IL_0584: Unknown result type (might be due to invalid IL or missing references) //IL_0592: Unknown result type (might be due to invalid IL or missing references) //IL_0597: Unknown result type (might be due to invalid IL or missing references) //IL_059e: Unknown result type (might be due to invalid IL or missing references) //IL_05a9: Unknown result type (might be due to invalid IL or missing references) //IL_05ae: Unknown result type (might be due to invalid IL or missing references) //IL_05d3: Unknown result type (might be due to invalid IL or missing references) //IL_05d8: Unknown result type (might be due to invalid IL or missing references) //IL_05dd: Unknown result type (might be due to invalid IL or missing references) //IL_05e1: Unknown result type (might be due to invalid IL or missing references) //IL_05ec: Unknown result type (might be due to invalid IL or missing references) //IL_0721: Unknown result type (might be due to invalid IL or missing references) //IL_0723: Unknown result type (might be due to invalid IL or missing references) //IL_072e: Unknown result type (might be due to invalid IL or missing references) //IL_0746: Unknown result type (might be due to invalid IL or missing references) //IL_074b: Unknown result type (might be due to invalid IL or missing references) //IL_0756: Unknown result type (might be due to invalid IL or missing references) //IL_0611: Unknown result type (might be due to invalid IL or missing references) //IL_061c: Unknown result type (might be due to invalid IL or missing references) //IL_07ad: Unknown result type (might be due to invalid IL or missing references) //IL_07af: Unknown result type (might be due to invalid IL or missing references) //IL_07c5: Unknown result type (might be due to invalid IL or missing references) //IL_07ca: Unknown result type (might be due to invalid IL or missing references) //IL_06f6: Unknown result type (might be due to invalid IL or missing references) //IL_06fd: Unknown result type (might be due to invalid IL or missing references) //IL_0702: Unknown result type (might be due to invalid IL or missing references) //IL_06d2: Unknown result type (might be due to invalid IL or missing references) //IL_06dc: Unknown result type (might be due to invalid IL or missing references) //IL_06e1: Unknown result type (might be due to invalid IL or missing references) //IL_0641: Unknown result type (might be due to invalid IL or missing references) //IL_064c: Unknown result type (might be due to invalid IL or missing references) //IL_07a0: Unknown result type (might be due to invalid IL or missing references) //IL_07a5: Unknown result type (might be due to invalid IL or missing references) //IL_0671: Unknown result type (might be due to invalid IL or missing references) //IL_067c: Unknown result type (might be due to invalid IL or missing references) //IL_080f: Unknown result type (might be due to invalid IL or missing references) //IL_0814: Unknown result type (might be due to invalid IL or missing references) //IL_0822: Unknown result type (might be due to invalid IL or missing references) //IL_0824: Unknown result type (might be due to invalid IL or missing references) //IL_08b4: Unknown result type (might be due to invalid IL or missing references) //IL_08b9: Unknown result type (might be due to invalid IL or missing references) //IL_08bb: Unknown result type (might be due to invalid IL or missing references) //IL_08bd: Unknown result type (might be due to invalid IL or missing references) //IL_08e9: Unknown result type (might be due to invalid IL or missing references) //IL_08f1: Unknown result type (might be due to invalid IL or missing references) //IL_08ce: Unknown result type (might be due to invalid IL or missing references) //IL_08d0: Unknown result type (might be due to invalid IL or missing references) //IL_08d5: Unknown result type (might be due to invalid IL or missing references) //IL_08da: Unknown result type (might be due to invalid IL or missing references) //IL_0a10: Unknown result type (might be due to invalid IL or missing references) //IL_0a1b: Unknown result type (might be due to invalid IL or missing references) //IL_0ade: Unknown result type (might be due to invalid IL or missing references) //IL_0ae3: Unknown result type (might be due to invalid IL or missing references) //IL_0afa: Unknown result type (might be due to invalid IL or missing references) //IL_0aff: Unknown result type (might be due to invalid IL or missing references) //IL_0b16: Unknown result type (might be due to invalid IL or missing references) //IL_0b1b: Unknown result type (might be due to invalid IL or missing references) //IL_0b32: Unknown result type (might be due to invalid IL or missing references) //IL_0b37: Unknown result type (might be due to invalid IL or missing references) //IL_0f9d: Unknown result type (might be due to invalid IL or missing references) //IL_0fa2: Unknown result type (might be due to invalid IL or missing references) if (!Object.op_Implicit((Object)(object)PlayerAvatar.instance) || !Object.op_Implicit((Object)(object)PlayerAvatar.instance.playerAvatarVisuals)) { return; } PlayerAvatar instance = PlayerAvatar.instance; PlayerAvatarVisuals playerAvatarVisuals = PlayerAvatar.instance.playerAvatarVisuals; if (Object.op_Implicit((Object)(object)playerAvatarVisuals.playerEyes) && Object.op_Implicit((Object)(object)instance)) { Vector3 position = playerAvatarVisuals.headUpTransform.position; Vector3 forward = ((Component)instance.localCamera).transform.forward; if (Object.op_Implicit((Object)(object)instance.tumble) && instance.tumble.isTumbling) { forward = ((Component)instance.tumble).transform.forward; } Vector3 val = _cameraGlobalPosition - position; Vector3 val2 = SemiFunc.ClampDirection(val, forward, 40f); Vector3 val3 = SemiFunc.ClampDirection(val, forward, 60f); playerAvatarVisuals.headLookAtTransform.rotation = Quaternion.Slerp(playerAvatarVisuals.headLookAtTransform.rotation, Quaternion.LookRotation(val2), playerAvatarVisuals.deltaTime * 15f); playerAvatarVisuals.playerEyes.eyeLeft.rotation = Quaternion.Slerp(playerAvatarVisuals.playerEyes.eyeLeft.rotation, Quaternion.LookRotation(val3), playerAvatarVisuals.deltaTime * 15f); playerAvatarVisuals.playerEyes.eyeRight.rotation = Quaternion.Slerp(playerAvatarVisuals.playerEyes.eyeRight.rotation, Quaternion.LookRotation(val3), playerAvatarVisuals.deltaTime * 15f); PlayerExpression playerExpression = instance.playerExpression; FieldInfo fieldLeftScaleAmount = _fieldLeftScaleAmount; FieldInfo fieldRightScaleAmount = _fieldRightScaleAmount; if ((Object)(object)playerExpression != (Object)null && fieldLeftScaleAmount != null && fieldRightScaleAmount != null) { float num = (float)fieldLeftScaleAmount.GetValue(playerExpression) * playerAvatarVisuals.playerEyes.pupilSizeMultiplier * playerAvatarVisuals.playerEyes.pupilLeftSizeMultiplier; float num2 = (float)fieldRightScaleAmount.GetValue(playerExpression) * playerAvatarVisuals.playerEyes.pupilSizeMultiplier * playerAvatarVisuals.playerEyes.pupilRightSizeMultiplier; num = Mathf.Clamp(num, 0.25f, 2.5f); num2 = Mathf.Clamp(num2, 0.25f, 2.5f); playerAvatarVisuals.playerEyes.pupilLeft.localScale = Vector3.one * num; playerAvatarVisuals.playerEyes.pupilRight.localScale = Vector3.one * num2; } } else { playerAvatarVisuals.headLookAtTransform.localRotation = Quaternion.Slerp(playerAvatarVisuals.headLookAtTransform.localRotation, Quaternion.identity, playerAvatarVisuals.deltaTime * 15f); } float num3 = 0f; if (!instance.isTumbling) { num3 = ((Component)instance.localCamera).transform.eulerAngles.x; } if (playerAvatarVisuals.headTiltOverrideTimer > 0f) { num3 += playerAvatarVisuals.headTiltOverrideAmount; playerAvatarVisuals.headTiltOverrideAmount = 0f; } if (num3 > 90f) { num3 -= 360f; } if (instance.isCrawling) { num3 *= 0.4f; } else if (instance.isCrouching) { num3 *= 0.75f; } float num4 = playerAvatarVisuals.headLookAtTransform.localEulerAngles.x; if (num4 > 90f) { num4 -= 360f; } num3 += num4; num3 = (instance.isCrouching ? Mathf.Clamp(num3, -40f, 40f) : ((!instance.isCrouching) ? Mathf.Clamp(num3, -75f, 85f) : Mathf.Clamp(num3, -60f, 65f))); float num5 = SemiFunc.SpringFloatGet(playerAvatarVisuals.lookUpSpring, num3, playerAvatarVisuals.deltaTime); playerAvatarVisuals.headUpTransform.localRotation = Quaternion.Euler(num5 * 0.5f, 0f, 0f); playerAvatarVisuals.bodyTopUpTransform.localRotation = Quaternion.Euler(num5 * 0.25f, 0f, 0f); playerAvatarVisuals.upDifference = Quaternion.Angle(Quaternion.Euler(playerAvatarVisuals.upPrevious, 0f, 0f), Quaternion.Euler(playerAvatarVisuals.headUpTransform.eulerAngles.x, 0f, 0f)); float num6 = playerAvatarVisuals.upPrevious - playerAvatarVisuals.headUpTransform.eulerAngles.x; if (Mathf.Abs(num6) < 180f) { playerAvatarVisuals.upDirection = Mathf.Sign(num6); } playerAvatarVisuals.upPrevious = playerAvatarVisuals.headUpTransform.eulerAngles.x; playerAvatarVisuals.headTiltOverrideTimer -= playerAvatarVisuals.deltaTime; float num7 = 0f; if (playerAvatarVisuals.turnDifference > 1f) { num7 = playerAvatarVisuals.turnDifference * 5f * (0f - playerAvatarVisuals.turnDirection); } num7 = Mathf.Clamp(num7, -100f, 100f); playerAvatarVisuals.headSideSteer = Mathf.Lerp(playerAvatarVisuals.headSideSteer, num7, 20f * playerAvatarVisuals.deltaTime); Quaternion localRotation = playerAvatarVisuals.headLookAtTransform.localRotation; Quaternion val4 = Quaternion.Euler(0f, ((Quaternion)(ref localRotation)).eulerAngles.y + playerAvatarVisuals.headSideSteer, 0f); val4 = Quaternion.Slerp(Quaternion.identity, val4, 0.5f); Quaternion val5 = SemiFunc.SpringQuaternionGet(playerAvatarVisuals.lookSideSpring, val4, playerAvatarVisuals.deltaTime); playerAvatarVisuals.headSideTransform.localRotation = val5; playerAvatarVisuals.bodyTopSideTransform.localRotation = Quaternion.Slerp(Quaternion.identity, val5, 0.5f); Vector3 zero = Vector3.zero; if (((Vector3)(ref instance.rbVelocity)).magnitude > 0.1f) { Vector3 val6 = ((Component)this).transform.TransformDirection(instance.rbVelocity); if (Vector3.Dot(((Vector3)(ref val6)).normalized, ((Component)this).transform.forward) < -0.5f) { zero.x = -3f; } if (Vector3.Dot(((Vector3)(ref val6)).normalized, ((Component)this).transform.forward) > 0.5f) { zero.x = 3f; } if (Vector3.Dot(((Vector3)(ref val6)).normalized, ((Component)this).transform.right) > 0.5f) { zero.z = -3f; } if (Vector3.Dot(((Vector3)(ref val6)).normalized, ((Component)this).transform.right) < -0.5f) { zero.z = 3f; } } if (playerAvatarVisuals.tiltSprinting != playerAvatarVisuals.animSprinting) { if (playerAvatarVisuals.tiltSprinting) { playerAvatarVisuals.tiltTimer = 0.25f; playerAvatarVisuals.tiltTarget = playerAvatarVisuals.leanSpringTargetPrevious * 2f; } else { playerAvatarVisuals.tiltTimer = 0.25f; playerAvatarVisuals.tiltTarget = zero * 3f; } playerAvatarVisuals.tiltSprinting = playerAvatarVisuals.animSprinting; } playerAvatarVisuals.leanTransform.localRotation = SemiFunc.SpringQuaternionGet(playerAvatarVisuals.leanSpring, Quaternion.Euler(zero), playerAvatarVisuals.deltaTime); playerAvatarVisuals.tiltTransform.localRotation = SemiFunc.SpringQuaternionGet(playerAvatarVisuals.tiltSpring, Quaternion.Euler(playerAvatarVisuals.tiltTarget), playerAvatarVisuals.deltaTime); if (playerAvatarVisuals.tiltTimer > 0f) { playerAvatarVisuals.tiltTimer -= playerAvatarVisuals.deltaTime; if (playerAvatarVisuals.tiltTimer <= 0f) { playerAvatarVisuals.tiltTarget = Vector3.zero; } } playerAvatarVisuals.leanSpringTargetPrevious = zero; bool flag = false; float num8 = 15f; float num9 = 0.5f; Vector3 val7 = Vector3.zero; if (instance.isMoving && !playerAvatarVisuals.animJumping && ((Vector3)(ref instance.rbVelocity)).magnitude > 0.1f) { flag = true; num8 = 10f; num9 = 0.7f; Vector3 normalized = ((Vector3)(ref instance.rbVelocity)).normalized; normalized.y = 0f; val7 = normalized; } if (playerAvatarVisuals.legTwistActive != flag) { playerAvatarVisuals.legTwistActive = flag; playerAvatarVisuals.legTwistSpring.speed = num8; playerAvatarVisuals.legTwistSpring.damping = num9; } else { playerAvatarVisuals.legTwistSpring.speed = Mathf.Lerp(playerAvatarVisuals.legTwistSpring.speed, num8, playerAvatarVisuals.deltaTime * 5f); playerAvatarVisuals.legTwistSpring.damping = Mathf.Lerp(playerAvatarVisuals.legTwistSpring.damping, num9, playerAvatarVisuals.deltaTime * 5f); } Quaternion val8 = Quaternion.identity; if (val7 != Vector3.zero) { val8 = Quaternion.LookRotation(val7, Vector3.up); } playerAvatarVisuals.legTwistTransform.localRotation = SemiFunc.SpringQuaternionGet(playerAvatarVisuals.legTwistSpring, val8, playerAvatarVisuals.deltaTime); bool flag2 = false; if (instance.isTumbling) { if (!playerAvatarVisuals.animSprinting && !playerAvatarVisuals.animTumbling) { playerAvatarVisuals.animator.SetTrigger("TumblingImpulse"); playerAvatarVisuals.animTumbling = true; } if ((((Vector3)(ref instance.tumble.physGrabObject.rbVelocity)).magnitude > 1f && !instance.tumble.physGrabObject.impactDetector.inCart) || ((Vector3)(ref instance.tumble.physGrabObject.rbAngularVelocity)).magnitude > 1f) { playerAvatarVisuals.animator.SetBool("TumblingMove", true); flag2 = true; } else { playerAvatarVisuals.animator.SetBool("TumblingMove", false); } playerAvatarVisuals.animator.SetBool("Tumbling", true); } else { playerAvatarVisuals.animator.SetBool("Tumbling", false); playerAvatarVisuals.animator.SetBool("TumblingMove", false); playerAvatarVisuals.animTumbling = false; } if (playerAvatarVisuals.playerAvatarRightArm.poseNew == playerAvatarVisuals.playerAvatarRightArm.grabberPose) { playerAvatarVisuals.animator.SetBool("Grabbing", true); } else { playerAvatarVisuals.animator.SetBool("Grabbing", false); } if (instance.isCrouching || instance.isTumbling) { playerAvatarVisuals.animator.SetBool("Crouching", true); } else { playerAvatarVisuals.animator.SetBool("Crouching", false); } if (instance.isCrawling || instance.isTumbling) { playerAvatarVisuals.animator.SetBool("Crawling", true); } else { playerAvatarVisuals.animator.SetBool("Crawling", false); } AnimatorStateInfo currentAnimatorStateInfo = playerAvatarVisuals.animator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("Crouch to Crawl")) { currentAnimatorStateInfo = playerAvatarVisuals.animator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("Crawl")) { currentAnimatorStateInfo = playerAvatarVisuals.animator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("Crawl Move")) { currentAnimatorStateInfo = playerAvatarVisuals.animator.GetCurrentAnimatorStateInfo(0); if (!((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("Slide")) { playerAvatarVisuals.animInCrawl = false; goto IL_0b62; } } } } playerAvatarVisuals.animInCrawl = true; goto IL_0b62; IL_0b62: if (instance.isMoving && !playerAvatarVisuals.animJumping) { playerAvatarVisuals.animator.SetBool("Moving", true); } else { playerAvatarVisuals.animator.SetBool("Moving", false); } if (!instance.isMoving && !playerAvatarVisuals.animJumping && Mathf.Abs(playerAvatarVisuals.turnDifference) > 0.5f) { playerAvatarVisuals.animator.SetBool("Turning", true); } else { playerAvatarVisuals.animator.SetBool("Turning", false); } if (instance.isSprinting && !playerAvatarVisuals.animJumping && !playerAvatarVisuals.animTumbling) { if (!playerAvatarVisuals.animSprinting && !playerAvatarVisuals.animSliding) { playerAvatarVisuals.animator.SetTrigger("SprintingImpulse"); playerAvatarVisuals.animSprinting = true; } playerAvatarVisuals.animator.SetBool("Sprinting", true); } else { playerAvatarVisuals.animator.SetBool("Sprinting", false); playerAvatarVisuals.animSprinting = false; } playerAvatarVisuals.animSlidingImpulse = false; if (instance.isSliding && !playerAvatarVisuals.animJumping && !playerAvatarVisuals.animTumbling) { if (!playerAvatarVisuals.animSliding) { playerAvatarVisuals.animSlidingImpulse = true; playerAvatarVisuals.animator.SetTrigger("SlidingImpulse"); } playerAvatarVisuals.animator.SetBool("Sliding", true); playerAvatarVisuals.animSliding = true; } else { playerAvatarVisuals.animator.SetBool("Sliding", false); playerAvatarVisuals.animSliding = false; } if (playerAvatarVisuals.animJumping) { if (playerAvatarVisuals.animJumpingImpulse) { playerAvatarVisuals.animJumpTimer = 0.2f; playerAvatarVisuals.animJumpingImpulse = false; playerAvatarVisuals.animator.SetTrigger("JumpingImpulse"); playerAvatarVisuals.animator.SetBool("Jumping", true); playerAvatarVisuals.animator.SetBool("Falling", false); } else if (instance.rbVelocityRaw.y < -0.5f && playerAvatarVisuals.animJumpTimer <= 0f) { playerAvatarVisuals.animator.SetBool("Falling", true); } if (instance.isGrounded && playerAvatarVisuals.animJumpTimer <= 0f) { playerAvatarVisuals.animJumpedTimer = 0.5f; playerAvatarVisuals.animJumping = false; } playerAvatarVisuals.animJumpTimer -= playerAvatarVisuals.deltaTime; } else { playerAvatarVisuals.animator.SetBool("Jumping", false); playerAvatarVisuals.animator.SetBool("Falling", false); } if (playerAvatarVisuals.animJumpedTimer > 0f) { playerAvatarVisuals.animJumpedTimer -= playerAvatarVisuals.deltaTime; } if (!playerAvatarVisuals.playerAvatar.isGrounded) { playerAvatarVisuals.animFallingTimer += playerAvatarVisuals.deltaTime; } else { playerAvatarVisuals.animFallingTimer = 0f; } if (!instance.isCrawling && !playerAvatarVisuals.animJumping && !playerAvatarVisuals.animSliding && !playerAvatarVisuals.animTumbling && playerAvatarVisuals.animFallingTimer > 0.25f && playerAvatarVisuals.animJumpedTimer <= 0f) { playerAvatarVisuals.animJumpTimer = 0.2f; playerAvatarVisuals.animJumping = true; playerAvatarVisuals.animJumpingImpulse = false; playerAvatarVisuals.animator.SetTrigger("FallingImpulse"); playerAvatarVisuals.animator.SetBool("Jumping", true); playerAvatarVisuals.animator.SetBool("Falling", true); } if (flag2) { float num10 = Mathf.Max(((Vector3)(ref instance.tumble.physGrabObject.rbVelocity)).magnitude, ((Vector3)(ref instance.tumble.physGrabObject.rbAngularVelocity)).magnitude) * 0.5f; num10 = Mathf.Clamp(num10, 0.5f, 1.25f); playerAvatarVisuals.animator.speed = num10 * playerAvatarVisuals.animationSpeedMultiplier; instance.tumble.TumbleMoveSoundSet(flag2, num10); return; } currentAnimatorStateInfo = playerAvatarVisuals.animator.GetCurrentAnimatorStateInfo(0); if (((AnimatorStateInfo)(ref currentAnimatorStateInfo)).IsName("Sprint")) { playerAvatarVisuals.animator.speed = (1f + (float)StatsManager.instance.playerUpgradeSpeed[instance.steamID] * 0.1f) * playerAvatarVisuals.animationSpeedMultiplier; } else if (instance.isMoving && instance.mapToolController.Active) { playerAvatarVisuals.animator.speed = 0.5f * playerAvatarVisuals.animationSpeedMultiplier; } else { playerAvatarVisuals.animator.speed = 1f * playerAvatarVisuals.animationSpeedMultiplier; } } private void BindFlashlightToClientHand(bool enable) { //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_013f: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: 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_0067: 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_0078: 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) FlashlightController instance = FlashlightController.Instance; if ((Object)(object)instance == (Object)null) { return; } if (enable) { if (!((Object)(object)instance.FollowTransformClient == (Object)null)) { if (!_flashlightCached) { _flashlightCached = true; _flashlightParent = ((Component)instance).transform.parent; _flashlightLocalPosition = ((Component)instance).transform.localPosition; _flashlightLocalRotation = ((Component)instance).transform.localRotation; } _flashlightLayer = ((Component)instance).gameObject.layer; ((Component)instance).transform.SetParent(instance.FollowTransformClient, false); ((Component)instance).transform.localPosition = Vector3.zero; ((Component)instance).transform.localRotation = Quaternion.identity; Renderer[] componentsInChildren = ((Component)instance).GetComponentsInChildren<Renderer>(true); foreach (Renderer val in componentsInChildren) { val.forceRenderingOff = false; val.allowOcclusionWhenDynamic = false; } } } else if (_flashlightCached) { ((Component)instance).transform.SetParent(_flashlightParent, false); ((Component)instance).transform.localPosition = _flashlightLocalPosition; ((Component)instance).transform.localRotation = _flashlightLocalRotation; _flashlightCached = false; _flashlightParent = null; _flashlightLayer = -1; } } private void ApplyFlashlightCameraMaskRouting() { if (_flashlightLayer < 0) { return; } foreach (Camera allCamera in _allCameras) { if (_playerLayer >= 0 && (allCamera.cullingMask & (1 << _playerLayer)) != 0) { allCamera.cullingMask |= 1 << _flashlightLayer; } else { allCamera.cullingMask &= ~(1 << _flashlightLayer); } } } } }