using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
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 Photon.Pun;
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("Omniscye")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("Hcart")]
[assembly: AssemblyTitle("Hcart")]
[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 Hcart
{
[BepInPlugin("Omniscye.Hcart", "Hcart", "1.0")]
public class Hcart : BaseUnityPlugin
{
internal static Hcart Instance { get; private set; }
internal static ManualLogSource Logger => Instance._logger;
private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger;
internal Harmony? Harmony { get; set; }
private void Awake()
{
Instance = this;
((Component)this).gameObject.transform.parent = null;
((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
Patch();
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()
{
}
}
}
namespace Empress.CartSwap
{
[BepInPlugin("com.empress.repo.cart.poolswap", "Empress Cart Pool+SO Swap", "1.4.0")]
public sealed class CartSwap_PoolAndSO : BaseUnityPlugin
{
private sealed class SwapPool : IPunPrefabPool
{
public readonly IPunPrefabPool Inner;
private readonly string _targetId;
private readonly GameObject _replacement;
private readonly bool _enableAnimator;
private readonly string _mode;
private readonly string _boolPush;
private readonly string _boolPull;
private readonly string _floatSignedSpeed;
private readonly string _trigForward;
private readonly string _trigBackward;
private readonly bool _useGrabberForward;
private readonly float _speedThreshold;
private readonly float _cooldown;
public SwapPool(IPunPrefabPool inner, string targetId, GameObject replacement, bool enableAnimator, string mode, string boolPush, string boolPull, string floatSignedSpeed, string trigFwd, string trigBack, bool useGrabberForward, float speedThreshold, float cooldown)
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
Inner = (IPunPrefabPool)(((object)inner) ?? ((object)new DefaultPool()));
_targetId = targetId;
_replacement = replacement;
_enableAnimator = enableAnimator;
_mode = (string.IsNullOrWhiteSpace(mode) ? "Bools" : mode);
_boolPush = (string.IsNullOrWhiteSpace(boolPush) ? "IsPushing" : boolPush);
_boolPull = (string.IsNullOrWhiteSpace(boolPull) ? "IsPulling" : boolPull);
_floatSignedSpeed = (string.IsNullOrWhiteSpace(floatSignedSpeed) ? "SignedSpeed" : floatSignedSpeed);
_trigForward = (string.IsNullOrWhiteSpace(trigFwd) ? "Forward" : trigFwd);
_trigBackward = (string.IsNullOrWhiteSpace(trigBack) ? "Backwards" : trigBack);
_useGrabberForward = useGrabberForward;
_speedThreshold = Mathf.Max(0f, speedThreshold);
_cooldown = Mathf.Clamp(cooldown, 0f, 5f);
}
public GameObject Instantiate(string prefabId, Vector3 position, Quaternion rotation)
{
//IL_0133: 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_0035: 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)
try
{
if (string.Equals(prefabId, _targetId, StringComparison.Ordinal) || (prefabId != null && _targetId.EndsWith(prefabId, StringComparison.Ordinal)))
{
GameObject val = Object.Instantiate<GameObject>(_replacement, position, rotation);
if (val.activeSelf)
{
val.SetActive(false);
}
if (_enableAnimator && Object.op_Implicit((Object)(object)val))
{
CartPushPullAnimator cartPushPullAnimator = val.GetComponent<CartPushPullAnimator>() ?? val.AddComponent<CartPushPullAnimator>();
cartPushPullAnimator.fireMode = (string.Equals(_mode, "Triggers", StringComparison.OrdinalIgnoreCase) ? CartPushPullAnimator.FireMode.Triggers : CartPushPullAnimator.FireMode.Bools);
cartPushPullAnimator.boolPushing = _boolPush;
cartPushPullAnimator.boolPulling = _boolPull;
cartPushPullAnimator.floatSignedSpeed = _floatSignedSpeed;
cartPushPullAnimator.triggerForward = _trigForward;
cartPushPullAnimator.triggerBackward = _trigBackward;
cartPushPullAnimator.speedThreshold = _speedThreshold;
cartPushPullAnimator.retriggerCooldown = _cooldown;
cartPushPullAnimator.useGrabberForward = _useGrabberForward;
}
return val;
}
}
catch (Exception arg)
{
ManualLogSource logS = LogS;
if (logS != null)
{
logS.LogError((object)$"SwapPool Instantiate error: {arg}");
}
}
return Inner.Instantiate(prefabId, position, rotation);
}
public void Destroy(GameObject gameObject)
{
Inner.Destroy(gameObject);
}
}
[CompilerGenerated]
private sealed class <InitLate>d__26 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public CartSwap_PoolAndSO <>4__this;
private int <i>5__1;
private int <i>5__2;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <InitLate>d__26(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<i>5__1 = 0;
goto IL_005e;
case 1:
<>1__state = -1;
<i>5__1++;
goto IL_005e;
case 2:
{
<>1__state = -1;
<i>5__2++;
break;
}
IL_005e:
if (<i>5__1 < 120)
{
<>2__current = null;
<>1__state = 1;
return true;
}
if (<>4__this._patchScriptableObjects.Value)
{
<>4__this.TryPatchItemScriptableObjects();
}
if (<>4__this._wrapPhotonPool.Value)
{
<>4__this.TryWrapPhotonPool();
}
<i>5__2 = 0;
break;
}
if (<i>5__2 < 120)
{
<>2__current = null;
<>1__state = 2;
return true;
}
if (<>4__this._wrapPhotonPool.Value && !<>4__this._wrapped)
{
LogS.LogWarning((object)"Pool wasn’t wrapped yet; trying again...");
<>4__this.TryWrapPhotonPool();
}
return false;
}
bool IEnumerator.MoveNext()
{
//ILSpy generated this explicit interface implementation from .override directive in MoveNext
return this.MoveNext();
}
[DebuggerHidden]
void IEnumerator.Reset()
{
throw new NotSupportedException();
}
}
public const string PluginGuid = "com.empress.repo.cart.poolswap";
public const string PluginName = "Empress Cart Pool+SO Swap";
public const string PluginVersion = "1.4.0";
internal static ManualLogSource LogS;
private ConfigEntry<string> _bundleFileName;
private ConfigEntry<string> _replacementAssetName;
private ConfigEntry<string> _resourcesPathId;
private ConfigEntry<string> _itemNameMatch;
private ConfigEntry<bool> _patchScriptableObjects;
private ConfigEntry<bool> _wrapPhotonPool;
private ConfigEntry<bool> _enableAnimatorDriver;
private ConfigEntry<string> _animMode;
private ConfigEntry<string> _animBoolPushing;
private ConfigEntry<string> _animBoolPulling;
private ConfigEntry<string> _animFloatSignedSpeed;
private ConfigEntry<string> _animTriggerForward;
private ConfigEntry<string> _animTriggerBackward;
private ConfigEntry<float> _animSpeedThreshold;
private ConfigEntry<float> _animRetriggerCooldown;
private ConfigEntry<bool> _animUseGrabberForward;
private AssetBundle _bundle;
private GameObject _replacementPrefab;
private IPunPrefabPool _originalPool;
private bool _wrapped;
private void Awake()
{
LogS = ((BaseUnityPlugin)this).Logger;
_bundleFileName = ((BaseUnityPlugin)this).Config.Bind<string>("Cart", "BundleFileName", "hcart", "AssetBundle file name next to this DLL.");
_replacementAssetName = ((BaseUnityPlugin)this).Config.Bind<string>("Cart", "ReplacementAssetName", "Item Cart Medium", "Prefab name inside your bundle.");
_resourcesPathId = ((BaseUnityPlugin)this).Config.Bind<string>("Cart", "ResourcesPathId", "Items/Item Cart Medium", "Prefab ID used by Photon (usually Resources path).");
_itemNameMatch = ((BaseUnityPlugin)this).Config.Bind<string>("Cart", "ItemName", "Item Cart Medium", "Item.itemName to retarget (SO -> prefab).");
_patchScriptableObjects = ((BaseUnityPlugin)this).Config.Bind<bool>("Cart", "PatchScriptableObjects", true, "Also retarget Item ScriptableObject prefab for SP/direct instantiates.");
_wrapPhotonPool = ((BaseUnityPlugin)this).Config.Bind<bool>("Cart", "WrapPhotonPool", true, "Wrap PhotonNetwork.PrefabPool to intercept this cart.");
_enableAnimatorDriver = ((BaseUnityPlugin)this).Config.Bind<bool>("Cart.Animator", "EnableAnimatorDriver", true, "Attach a driver that feeds bools/triggers and a SignedSpeed float.");
_animMode = ((BaseUnityPlugin)this).Config.Bind<string>("Cart.Animator", "Mode", "Bools", "Bools or Triggers.");
_animBoolPushing = ((BaseUnityPlugin)this).Config.Bind<string>("Cart.Animator", "BoolPushingName", "IsPushing", "Animator bool for pushing forward.");
_animBoolPulling = ((BaseUnityPlugin)this).Config.Bind<string>("Cart.Animator", "BoolPullingName", "IsPulling", "Animator bool for pulling backward.");
_animFloatSignedSpeed = ((BaseUnityPlugin)this).Config.Bind<string>("Cart.Animator", "FloatSignedSpeedName", "SignedSpeed", "Animator float with signed speed along cart.forward.");
_animTriggerForward = ((BaseUnityPlugin)this).Config.Bind<string>("Cart.Animator", "ForwardTriggerName", "Forward", "Animator Trigger name for pushing (used if Mode=Triggers).");
_animTriggerBackward = ((BaseUnityPlugin)this).Config.Bind<string>("Cart.Animator", "BackwardTriggerName", "Backwards", "Animator Trigger name for pulling (used if Mode=Triggers).");
_animSpeedThreshold = ((BaseUnityPlugin)this).Config.Bind<float>("Cart.Animator", "SpeedThreshold", 0.25f, "Minimum |signed speed| along forward to consider push/pull.");
_animRetriggerCooldown = ((BaseUnityPlugin)this).Config.Bind<float>("Cart.Animator", "RetriggerCooldown", 0.3f, "Seconds between trigger fires / bool flips.");
_animUseGrabberForward = ((BaseUnityPlugin)this).Config.Bind<bool>("Cart.Animator", "UseGrabberForward", true, "If true, project velocity onto the grabber’s forward (else cart.forward).");
if (!LoadBundleAndPrefab())
{
LogS.LogError((object)"Cart swap disabled: failed to load bundle or prefab.");
}
else
{
((MonoBehaviour)this).StartCoroutine(InitLate());
}
}
private bool LoadBundleAndPrefab()
{
try
{
string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? ".";
string text = Path.Combine(path, _bundleFileName.Value);
if (!File.Exists(text))
{
LogS.LogError((object)("AssetBundle not found: " + text));
return false;
}
_bundle = AssetBundle.LoadFromFile(text);
if ((Object)(object)_bundle == (Object)null)
{
LogS.LogError((object)("Failed to load AssetBundle: " + text));
return false;
}
_replacementPrefab = _bundle.LoadAsset<GameObject>(_replacementAssetName.Value);
if ((Object)(object)_replacementPrefab == (Object)null)
{
LogS.LogError((object)("Prefab '" + _replacementAssetName.Value + "' not found in bundle '" + _bundleFileName.Value + "'."));
return false;
}
LogS.LogInfo((object)("Loaded replacement prefab '" + ((Object)_replacementPrefab).name + "' from '" + _bundleFileName.Value + "'."));
return true;
}
catch (Exception arg)
{
LogS.LogError((object)$"Bundle load error: {arg}");
return false;
}
}
[IteratorStateMachine(typeof(<InitLate>d__26))]
private IEnumerator InitLate()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <InitLate>d__26(0)
{
<>4__this = this
};
}
private void TryPatchItemScriptableObjects()
{
try
{
Item[] array = Resources.FindObjectsOfTypeAll<Item>();
int num = 0;
Item[] array2 = array;
foreach (Item val in array2)
{
if (!((Object)(object)val == (Object)null) && (string.Equals(val.itemName, _itemNameMatch.Value, StringComparison.Ordinal) || string.Equals(val.itemAssetName, _replacementAssetName.Value, StringComparison.Ordinal)) && (Object)(object)val.prefab != (Object)(object)_replacementPrefab)
{
val.prefab = _replacementPrefab;
num++;
}
}
LogS.LogInfo((object)$"Retargeted {num} Item ScriptableObject(s) to prefab '{((Object)_replacementPrefab).name}'.");
}
catch (Exception arg)
{
LogS.LogError((object)$"SO retarget failed: {arg}");
}
}
private void TryWrapPhotonPool()
{
//IL_000e: Unknown result type (might be due to invalid IL or missing references)
//IL_0018: Expected O, but got Unknown
try
{
if (PhotonNetwork.PrefabPool == null)
{
PhotonNetwork.PrefabPool = (IPunPrefabPool)new DefaultPool();
}
if (!_wrapped)
{
_originalPool = PhotonNetwork.PrefabPool;
PhotonNetwork.PrefabPool = (IPunPrefabPool)(object)new SwapPool(_originalPool, _resourcesPathId.Value, _replacementPrefab, _enableAnimatorDriver.Value, _animMode.Value, _animBoolPushing.Value, _animBoolPulling.Value, _animFloatSignedSpeed.Value, _animTriggerForward.Value, _animTriggerBackward.Value, _animUseGrabberForward.Value, _animSpeedThreshold.Value, _animRetriggerCooldown.Value);
_wrapped = true;
LogS.LogInfo((object)("Wrapped Photon PrefabPool. Will swap '" + _resourcesPathId.Value + "' -> '" + ((Object)_replacementPrefab).name + "'."));
}
}
catch (Exception arg)
{
LogS.LogError((object)$"Pool wrap failed: {arg}");
}
}
private void OnDestroy()
{
try
{
if (_wrapped && PhotonNetwork.PrefabPool is SwapPool swapPool && swapPool.Inner == _originalPool)
{
PhotonNetwork.PrefabPool = _originalPool;
}
}
catch
{
}
try
{
AssetBundle bundle = _bundle;
if (bundle != null)
{
bundle.Unload(false);
}
}
catch
{
}
_bundle = null;
_replacementPrefab = null;
}
}
[DisallowMultipleComponent]
internal sealed class CartPushPullAnimator : MonoBehaviour
{
public enum FireMode
{
Bools,
Triggers
}
[Header("Animator params")]
public FireMode fireMode = FireMode.Bools;
public string boolPushing = "IsPushing";
public string boolPulling = "IsPulling";
public string triggerForward = "Forward";
public string triggerBackward = "Backwards";
public string floatSignedSpeed = "SignedSpeed";
[Header("Motion")]
public float speedThreshold = 0.25f;
public float retriggerCooldown = 0.25f;
public bool useGrabberForward = true;
private Animator _anim;
private Rigidbody _rb;
private Component _grabArea;
private Component _cartComp;
private float _lastFire;
private bool _lastPush;
private bool _lastPull;
private Vector3 _lastPos;
private void Awake()
{
//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)
_anim = ((Component)this).GetComponentInChildren<Animator>(true) ?? ((Component)this).GetComponent<Animator>();
_rb = ((Component)this).GetComponent<Rigidbody>() ?? ((Component)this).GetComponentInParent<Rigidbody>();
_grabArea = FindByTypeName("PhysGrabObjectGrabArea");
_cartComp = FindByTypeName("PhysGrabCart");
_lastPos = ((Component)this).transform.position;
}
private Component FindByTypeName(string typeName)
{
Component[] componentsInChildren = ((Component)this).GetComponentsInChildren<Component>(true);
foreach (Component val in componentsInChildren)
{
if (Object.op_Implicit((Object)(object)val) && ((object)val).GetType().Name == typeName)
{
return val;
}
}
Component[] componentsInParent = ((Component)this).GetComponentsInParent<Component>(true);
foreach (Component val2 in componentsInParent)
{
if (Object.op_Implicit((Object)(object)val2) && ((object)val2).GetType().Name == typeName)
{
return val2;
}
}
return null;
}
private void Update()
{
//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_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_00c9: 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_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_00c8: Unknown result type (might be due to invalid IL or missing references)
if (!Object.op_Implicit((Object)(object)_anim))
{
return;
}
if (!IsGrabbed(out Transform grabberForwardRef))
{
if (fireMode == FireMode.Bools)
{
if (_anim.HasParameterOfType(boolPulling, (AnimatorControllerParameterType)4))
{
_anim.SetBool(boolPulling, false);
}
if (_anim.HasParameterOfType(boolPushing, (AnimatorControllerParameterType)4))
{
_anim.SetBool(boolPushing, false);
}
}
return;
}
Vector3 velocity = GetVelocity();
Vector3 forward = ((Component)this).transform.forward;
if (useGrabberForward && Object.op_Implicit((Object)(object)grabberForwardRef))
{
forward = grabberForwardRef.forward;
}
float num = Vector3.Dot(velocity, forward);
if (_anim.HasParameterOfType(floatSignedSpeed, (AnimatorControllerParameterType)1))
{
_anim.SetFloat(floatSignedSpeed, num);
}
bool boolField = GetBoolField(_cartComp, "cartBeingPulled");
bool flag = num > speedThreshold && !boolField;
bool flag2 = num < 0f - speedThreshold || boolField;
float time = Time.time;
if (fireMode == FireMode.Bools)
{
if (_anim.HasParameterOfType(boolPushing, (AnimatorControllerParameterType)4))
{
_anim.SetBool(boolPushing, flag);
}
if (_anim.HasParameterOfType(boolPulling, (AnimatorControllerParameterType)4))
{
_anim.SetBool(boolPulling, flag2);
}
}
else
{
if (flag && !_lastPush && time - _lastFire >= retriggerCooldown)
{
if (_anim.HasParameterOfType(triggerBackward, (AnimatorControllerParameterType)9))
{
_anim.ResetTrigger(triggerBackward);
}
if (_anim.HasParameterOfType(triggerForward, (AnimatorControllerParameterType)9))
{
_anim.SetTrigger(triggerForward);
}
_lastFire = time;
}
if (flag2 && !_lastPull && time - _lastFire >= retriggerCooldown)
{
if (_anim.HasParameterOfType(triggerForward, (AnimatorControllerParameterType)9))
{
_anim.ResetTrigger(triggerForward);
}
if (_anim.HasParameterOfType(triggerBackward, (AnimatorControllerParameterType)9))
{
_anim.SetTrigger(triggerBackward);
}
_lastFire = time;
}
}
_lastPush = flag;
_lastPull = flag2;
}
private Vector3 GetVelocity()
{
//IL_0037: 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_003d: 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_005d: 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_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_0066: 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_002e: 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)
if (Object.op_Implicit((Object)(object)_rb) && !_rb.isKinematic)
{
return _rb.velocity;
}
Vector3 position = ((Component)this).transform.position;
Vector3 result = (position - _lastPos) / Mathf.Max(Time.deltaTime, 0.0001f);
_lastPos = position;
return result;
}
private bool IsGrabbed(out Transform grabberForwardRef)
{
grabberForwardRef = null;
if ((Object)(object)_grabArea == (Object)null)
{
return false;
}
try
{
Type type = ((object)_grabArea).GetType();
FieldInfo field = type.GetField("listOfAllGrabbers", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (field == null)
{
return false;
}
if (!(field.GetValue(_grabArea) is IEnumerable enumerable))
{
return false;
}
Transform val = null;
foreach (object item in enumerable)
{
if (item == null)
{
continue;
}
Type type2 = item.GetType();
bool boolField = GetBoolField(item, "isLocal");
Transform val2 = null;
FieldInfo field2 = type2.GetField("transform", BindingFlags.Instance | BindingFlags.Public);
if (field2 != null)
{
object? value = field2.GetValue(item);
val2 = (Transform)((value is Transform) ? value : null);
}
else
{
PropertyInfo property = type2.GetProperty("transform", BindingFlags.Instance | BindingFlags.Public);
if (property != null)
{
object? value2 = property.GetValue(item, null);
val2 = (Transform)((value2 is Transform) ? value2 : null);
}
}
if (Object.op_Implicit((Object)(object)val2))
{
if (boolField)
{
grabberForwardRef = val2;
return true;
}
if (!Object.op_Implicit((Object)(object)val))
{
val = val2;
}
}
}
if (Object.op_Implicit((Object)(object)val))
{
grabberForwardRef = val;
return true;
}
}
catch
{
}
return false;
}
private static bool GetBoolField(object obj, string name)
{
if (obj == null)
{
return false;
}
try
{
FieldInfo field = obj.GetType().GetField(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
if (field != null)
{
object value = field.GetValue(obj);
bool flag = default(bool);
int num;
if (value is bool)
{
flag = (bool)value;
num = 1;
}
else
{
num = 0;
}
return (byte)((uint)num & (flag ? 1u : 0u)) != 0;
}
}
catch
{
}
return false;
}
}
internal static class AnimatorParamUtil
{
private static readonly Dictionary<(Animator, string), AnimatorControllerParameterType> cache = new Dictionary<(Animator, string), AnimatorControllerParameterType>();
public static bool HasParameterOfType(this Animator self, string name, AnimatorControllerParameterType type)
{
//IL_008b: 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_003b: 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_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)
if (!Object.op_Implicit((Object)(object)self) || string.IsNullOrEmpty(name))
{
return false;
}
(Animator, string) key = (self, name);
if (!cache.TryGetValue(key, out var value))
{
value = (AnimatorControllerParameterType)(-1);
AnimatorControllerParameter[] parameters = self.parameters;
foreach (AnimatorControllerParameter val in parameters)
{
if (val.name == name)
{
value = val.type;
break;
}
}
cache[key] = value;
}
return value == type;
}
}
}