Decompiled source of Modmas 2025 Day 25 v1.0.0
Wrist_Wrecker_5000.dll
Decompiled 3 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using FistVR; using H3VRUtils; using HarmonyLib; using ModularWorkshop; using OpenScripts2; using OtherLoader; using UnityEngine; using UnityEngine.Audio; using UnityEngine.Rendering; using UnityEngine.UI; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace ShermanJumbo { public class AnimationPlayOnFire : MonoBehaviour { public FVRFireArm FireArm; public Animator Animator; public string FiringAnimationNode = "GunFire"; public void Awake() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown GM.CurrentSceneSettings.ShotFiredEvent += new ShotFired(ShotFired); } public void OnDestroy() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Expected O, but got Unknown GM.CurrentSceneSettings.ShotFiredEvent -= new ShotFired(ShotFired); } private void ShotFired(FVRFireArm firearm) { if ((Object)(object)firearm == (Object)(object)FireArm) { Animator.Play(FiringAnimationNode); } } } public class BallisticProjLightningBolt : MonoBehaviour { public GameObject TransformToMove; private Vector3 SpawnLocation; private void Start() { //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) SpawnLocation = ((Component)this).gameObject.transform.position; } private void Update() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) TransformToMove.transform.position = SpawnLocation; } } public class BallisticProjectileKillIfBelowSpeed : MonoBehaviour { public BallisticProjectile Projectile; public float KillIfVelBelowThisMagnitude = 20f; private void Update() { //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) if (((Vector3)(ref Projectile.m_velocity)).magnitude <= KillIfVelBelowThisMagnitude) { Projectile.m_velocity = Vector3.zero; } } } } public class BreakActionMainHandFireSelector : MonoBehaviour { public BreakActionWeapon Weapon; public Transform SelectorSwitch; public Vector3 PosSingleFire; public Vector3 PosMultiFire; public bool SwapsTrigger = false; public Transform SecondTrigger; public float SecondTriggerPulledAngle = 20f; private Transform OriginalTrigger; private float OriginalTriggerPulled; private void Awake() { OriginalTrigger = Weapon.Triggers[0]; OriginalTriggerPulled = Weapon.TriggerPulled; } private void Update() { //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) FVRViveHand hand = ((FVRInteractiveObject)Weapon).m_hand; if (!((Object)(object)hand == (Object)null) && ((hand.IsInStreamlinedMode && hand.Input.AXButtonDown) || (!hand.IsInStreamlinedMode && hand.Input.TouchpadDown && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.2f && Vector2.Angle(hand.Input.TouchpadAxes, Vector2.down) <= 45f))) { SwapFiremodes(); } } public void SwapFiremodes() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) ((FVRFireArm)Weapon).PlayAudioEvent((FirearmAudioEventType)15, 1f); if (Weapon.FireAllBarrels) { Weapon.FireAllBarrels = false; SelectorSwitch.localPosition = PosSingleFire; if (SwapsTrigger) { Weapon.Triggers[0] = OriginalTrigger; Weapon.TriggerPulled = OriginalTriggerPulled; } } else if (!Weapon.FireAllBarrels) { Weapon.FireAllBarrels = true; SelectorSwitch.localPosition = PosMultiFire; if (SwapsTrigger) { Weapon.Triggers[0] = SecondTrigger; Weapon.TriggerPulled = SecondTriggerPulledAngle; } } } } namespace ShermanJumbo { public class BreakActionSpeedloaderInsertTrigger : MonoBehaviour { public BreakActionWeapon Weapon; } public class BreakActionSpeedloaderTrigger : MonoBehaviour { public FVRFireArmMagazine Loader; private void OnTriggerEnter(Collider collider) { //IL_006a: 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_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Loader != (Object)null) || !((Object)(object)Loader.FireArm == (Object)null) || !((Object)(object)((FVRPhysicalObject)Loader).QuickbeltSlot == (Object)null) || !((Object)(object)((Component)collider).gameObject.GetComponent<BreakActionSpeedloaderInsertTrigger>() != (Object)null)) { return; } BreakActionSpeedloaderInsertTrigger component = ((Component)collider).gameObject.GetComponent<BreakActionSpeedloaderInsertTrigger>(); BreakActionWeapon weapon = component.Weapon; if (((FVRFireArm)weapon).RoundType != Loader.RoundType || weapon.m_isLatched) { return; } for (int i = 0; i < weapon.Barrels.Length; i++) { if (Loader.HasARound() && !weapon.Barrels[i].Chamber.IsFull) { FVRLoadedRound val = Loader.RemoveRound(0); Transform transform = Loader.DisplayBullets[Mathf.Clamp(0, Loader.DisplayBullets.Length - 1, i)].transform; weapon.Barrels[i].Chamber.Autochamber(val.LR_Class, transform.position, transform.rotation); ((FVRFireArm)weapon).PlayAudioEvent((FirearmAudioEventType)20, 1f); } } } } public class CSGCapTrigger : FVRInteractiveObject { public CappedStickyGrenade Grenade; public override void SimpleInteraction(FVRViveHand hand) { ((FVRInteractiveObject)this).SimpleInteraction(hand); if (!Grenade.m_isArmed) { Grenade.Arm(); } } } public class CSGDestroyNotifier : MonoBehaviour { public delegate void DestroyedAction(); public event DestroyedAction OnDestroyed; private void OnDestroy() { if (this.OnDestroyed != null) { this.OnDestroyed(); } } } public class CannonballSecondaryRenderer : MonoBehaviour { public Renderer Rend; public CannonBall Cannonball; private void Update() { if (Cannonball.TurnsOffRends && !Cannonball.hasTurnedOffRends) { Rend.enabled = false; } } } public class CappedStickyGrenade : FVRPhysicalObject { [Serializable] public class CSGDetonationStage { public bool HasFired = false; public float FireWhenFuseHits = 0f; public GameObject[] PrefabToSpawn; } [Header("Grenade Settings")] public Rigidbody grenadeRigidbody; public bool m_isArmed = false; public float FuseTime = 0f; public List<GameObject> SpawnOnSplode; public AudioEvent ArmedSound; public int IFF; private float m_fuseTime = 0f; private bool m_hasSploded = false; public bool UsesStagedDetonation = false; public CSGDetonationStage[] DetonationStages; [Header("Cap Settings")] public bool UsesCapSystem = false; public GameObject DummyCap; public GameObject CapPrefab; public Transform CapPrefabSpawnPos; [Header("Sticky Grenade Settings")] public bool isStickyGrenade = true; public Collider stickyCollider; public float stickingDistance = 0.1f; public LayerMask stickyLayers; public float embeddingDistance = 0.02f; public bool playStickSoundForRigidbodiesOnly = true; public AudioEvent stickSounds; public float minimumStickVelocity = 2f; public float regrabActivationDelay = 0.5f; public float massWhileStuck = 10f; private bool wasHeld = false; private bool armChecked = false; private bool shouldCheckVelocity = false; private bool hasReleasedLever = false; private bool isSticking = false; private bool canStick = false; private float timeSinceRelease = 0f; private GameObject parentObject; private Vector3 savedPosition; private Quaternion savedRotation; private Vector3 savedScale; private FVRInteractiveObject interactiveObject; private bool isCookingCoroutineRunning = false; [Header("Extra Settings")] public bool UsesArmedPfx = false; public ParticleSystem[] Pfx; public float ActivateParticlesWhenFuseHits = 3f; private bool HasActivatedParticles = false; public bool PlaysAnimationOnArm = false; public Animator Animator; public string ArmingAnimationNode = "animation"; public bool PlaysSoundWhileArmed = false; public AudioSource ArmedSounds; public float ActivateSoundsWhenFuseHits = 0f; private bool HasPlayedArmedSounds = false; private void Start() { interactiveObject = ((Component)this).GetComponent<FVRInteractiveObject>(); if (UsesArmedPfx) { ParticleSystem[] pfx = Pfx; foreach (ParticleSystem val in pfx) { if (val.isPlaying) { val.Stop(); } } } if (PlaysSoundWhileArmed && ArmedSounds.isPlaying) { ArmedSounds.Stop(); } } public override void UpdateInteraction(FVRViveHand hand) { ((FVRPhysicalObject)this).UpdateInteraction(hand); IFF = GM.CurrentPlayerBody.GetPlayerIFF(); } public override void FVRUpdate() { //IL_030f: Unknown result type (might be due to invalid IL or missing references) //IL_0314: Unknown result type (might be due to invalid IL or missing references) //IL_0453: Unknown result type (might be due to invalid IL or missing references) //IL_045e: Unknown result type (might be due to invalid IL or missing references) ((FVRPhysicalObject)this).FVRUpdate(); if (!armChecked && m_isArmed) { armChecked = true; shouldCheckVelocity = true; if (isStickyGrenade) { EnableStickyCollider(); } } if (!wasHeld && ((FVRInteractiveObject)this).IsHeld) { timeSinceRelease = 0f; if (m_isArmed) { EnableStickyCollider(); } shouldCheckVelocity = m_isArmed; wasHeld = true; canStick = true; isSticking = false; FixedJoint component = ((Component)this).GetComponent<FixedJoint>(); if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); grenadeRigidbody.isKinematic = false; grenadeRigidbody.detectCollisions = true; grenadeRigidbody.useGravity = true; grenadeRigidbody.constraints = (RigidbodyConstraints)0; Debug.Log((object)"FixedJoint grenade unstuck upon being picked up."); } else if ((Object)(object)((Component)this).transform.parent != (Object)null && ((Object)((Component)((Component)this).transform.parent).gameObject).name == "DummyParent") { GameObject gameObject = ((Component)((Component)this).transform.parent).gameObject; ((Component)this).transform.SetParent((Transform)null, true); Object.Destroy((Object)(object)gameObject); grenadeRigidbody.isKinematic = false; grenadeRigidbody.detectCollisions = true; grenadeRigidbody.useGravity = true; grenadeRigidbody.constraints = (RigidbodyConstraints)0; Debug.Log((object)"Static-stuck grenade unstuck upon being picked up."); } if (isStickyGrenade) { DisableStickyColliderTemporarily(); } } if (wasHeld && !((FVRInteractiveObject)this).IsHeld) { isSticking = false; wasHeld = false; } if (m_isArmed || !((FVRInteractiveObject)this).IsHeld) { DisableMeleeDamage((FVRPhysicalObject)(object)this); } else { EnableMeleeDamage((FVRPhysicalObject)(object)this); } if (!m_isArmed) { return; } m_fuseTime -= Time.deltaTime; if (m_fuseTime < ActivateParticlesWhenFuseHits && !HasActivatedParticles) { HasActivatedParticles = true; ParticleSystem[] pfx = Pfx; foreach (ParticleSystem val in pfx) { val.Play(); } } if (m_fuseTime < ActivateSoundsWhenFuseHits && !HasPlayedArmedSounds) { HasPlayedArmedSounds = true; ArmedSounds.Play(); } if (m_fuseTime <= 0.05f) { if (!m_hasSploded) { m_hasSploded = true; ParticleSystem[] pfx2 = Pfx; foreach (ParticleSystem val2 in pfx2) { if (val2.isPlaying) { val2.Stop(); } } for (int k = 0; k < SpawnOnSplode.Count; k++) { GameObject val3 = Object.Instantiate<GameObject>(SpawnOnSplode[k], ((Component)this).transform.position, Quaternion.identity); Explosion component2 = val3.GetComponent<Explosion>(); if ((Object)(object)component2 != (Object)null) { component2.IFF = IFF; } ExplosionSound component3 = val3.GetComponent<ExplosionSound>(); if ((Object)(object)component3 != (Object)null) { component3.IFF = IFF; } GrenadeExplosion component4 = val3.GetComponent<GrenadeExplosion>(); if ((Object)(object)component4 != (Object)null) { component4.IFF = IFF; } } } else { if (((FVRInteractiveObject)this).IsHeld) { FVRViveHand hand = ((FVRInteractiveObject)this).m_hand; ((FVRInteractiveObject)this).m_hand.ForceSetInteractable((FVRInteractiveObject)null); ((FVRInteractiveObject)this).EndInteraction(hand); } Object.Destroy((Object)(object)((Component)this).gameObject); } } if (!UsesStagedDetonation) { return; } CSGDetonationStage[] detonationStages = DetonationStages; foreach (CSGDetonationStage cSGDetonationStage in detonationStages) { if (!cSGDetonationStage.HasFired && m_fuseTime <= cSGDetonationStage.FireWhenFuseHits) { cSGDetonationStage.HasFired = true; GameObject[] prefabToSpawn = cSGDetonationStage.PrefabToSpawn; foreach (GameObject val4 in prefabToSpawn) { Object.Instantiate<GameObject>(val4, ((Component)this).transform.position, ((Component)this).transform.rotation); } } } } public override void FVRFixedUpdate() { //IL_0024: 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) ((FVRPhysicalObject)this).FVRFixedUpdate(); if (shouldCheckVelocity && ((FVRInteractiveObject)this).IsHeld) { Vector3 velocity = grenadeRigidbody.velocity; if (((Vector3)(ref velocity)).magnitude >= minimumStickVelocity) { canStick = true; } else { canStick = false; } } } private void DisableMeleeDamage(FVRPhysicalObject physicalObject) { if (physicalObject.MP != null && physicalObject.MP.IsMeleeWeapon) { physicalObject.MP.IsMeleeWeapon = false; } } private void EnableMeleeDamage(FVRPhysicalObject physicalObject) { if (physicalObject.MP != null && !physicalObject.MP.IsMeleeWeapon) { physicalObject.MP.IsMeleeWeapon = true; } } private void OnCollisionEnter(Collision collision) { //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_0103: Unknown result type (might be due to invalid IL or missing references) if (!m_isArmed || isSticking || !isStickyGrenade || !((Object)(object)stickyCollider != (Object)null) || (Object)(object)collision.gameObject.GetComponent<BreakableGlass>() != (Object)null || (Object)(object)collision.gameObject.GetComponent<PinnedGrenade>() != (Object)null || (Object)(object)collision.gameObject.GetComponent<PinnedGrenadePin>() != (Object)null || (Object)(object)collision.gameObject.GetComponent<SosigWeapon>() != (Object)null) { return; } ContactPoint[] contacts = collision.contacts; for (int i = 0; i < contacts.Length; i++) { ContactPoint contact = contacts[i]; if (!((Object)(object)((ContactPoint)(ref contact)).thisCollider == (Object)(object)stickyCollider)) { continue; } if ((LayerMask.op_Implicit(stickyLayers) & (1 << collision.gameObject.layer)) == 0 || !IsContactPointWithinStickingDistance(((ContactPoint)(ref contact)).point)) { break; } isSticking = true; StickToSurface(collision, contact); PlayStickingSound(collision); parentObject = collision.gameObject; if ((Object)(object)parentObject != (Object)null) { CSGDestroyNotifier cSGDestroyNotifier = parentObject.GetComponent<CSGDestroyNotifier>(); if ((Object)(object)cSGDestroyNotifier == (Object)null) { cSGDestroyNotifier = parentObject.AddComponent<CSGDestroyNotifier>(); } cSGDestroyNotifier.OnDestroyed += OnDestroyUnstickGrenade; } break; } } private bool IsContactPointWithinStickingDistance(Vector3 contactPoint) { //IL_0007: 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_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) Vector3 val = stickyCollider.ClosestPoint(contactPoint); float num = Vector3.Distance(contactPoint, val); return num < stickingDistance; } private void StickToSurface(Collision collision, ContactPoint contact) { //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_0078: 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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Expected O, but got Unknown //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01c3: Unknown result type (might be due to invalid IL or missing references) //IL_01da: 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_01f6: Unknown result type (might be due to invalid IL or missing references) //IL_01fb: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) //IL_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_00a4: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)stickyCollider == (Object)null) { return; } if ((Object)(object)interactiveObject != (Object)null && interactiveObject.IsHeld) { interactiveObject.ForceBreakInteraction(); } savedPosition = ((Component)this).transform.position; savedRotation = ((Component)this).transform.rotation; Vector3 lossyScale = ((Component)this).transform.lossyScale; Rigidbody rigidbody = collision.rigidbody; Vector3 val = ((ContactPoint)(ref contact)).normal * embeddingDistance; if ((Object)(object)rigidbody != (Object)null) { ((Component)this).transform.position = ((ContactPoint)(ref contact)).point + val; FixedJoint component = ((Component)this).GetComponent<FixedJoint>(); if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); } FixedJoint val2 = ((Component)this).gameObject.AddComponent<FixedJoint>(); ((Joint)val2).connectedBody = rigidbody; ((Joint)val2).breakForce = float.MaxValue; ((Joint)val2).breakTorque = float.MaxValue; grenadeRigidbody.useGravity = false; grenadeRigidbody.isKinematic = false; grenadeRigidbody.constraints = (RigidbodyConstraints)0; grenadeRigidbody.mass = massWhileStuck; SetCollidersToLayer(stickyCollider, "NoCol"); } else { GameObject val3 = new GameObject("DummyParent"); val3.transform.position = ((ContactPoint)(ref contact)).point; val3.transform.rotation = collision.transform.rotation; grenadeRigidbody.isKinematic = true; val3.transform.SetParent(collision.transform, true); ((Component)this).transform.SetParent(val3.transform, false); ((Component)this).transform.localScale = new Vector3(lossyScale.x / ((Component)this).transform.lossyScale.x, lossyScale.y / ((Component)this).transform.lossyScale.y, lossyScale.z / ((Component)this).transform.lossyScale.z); ((Component)this).transform.position = ((ContactPoint)(ref contact)).point + val; ((Component)this).transform.rotation = savedRotation; } } private void EnableStickyCollider() { if ((Object)(object)stickyCollider != (Object)null) { stickyCollider.enabled = true; } } private void DisableStickyColliderTemporarily() { if ((Object)(object)stickyCollider != (Object)null) { stickyCollider.enabled = false; } ((MonoBehaviour)this).StartCoroutine(ReenableStickyColliderAfterDelay()); } private IEnumerator ReenableStickyColliderAfterDelay() { yield return (object)new WaitForSeconds(regrabActivationDelay); EnableStickyCollider(); } private void PlayStickingSound(Collision collision) { //IL_0037: Unknown result type (might be due to invalid IL or missing references) if ((playStickSoundForRigidbodiesOnly && (Object)(object)collision.rigidbody != (Object)null) || !playStickSoundForRigidbodiesOnly) { SM.PlayCoreSound((FVRPooledAudioType)10, stickSounds, ((Component)this).transform.position); } } private void OnDestroyUnstickGrenade() { if ((Object)(object)this == (Object)null) { return; } if ((Object)(object)parentObject != (Object)null) { CSGDestroyNotifier component = parentObject.GetComponent<CSGDestroyNotifier>(); if ((Object)(object)component != (Object)null) { component.OnDestroyed -= OnDestroyUnstickGrenade; } parentObject = null; } FixedJoint component2 = ((Component)this).GetComponent<FixedJoint>(); if ((Object)(object)component2 != (Object)null) { Object.Destroy((Object)(object)component2); } else if ((Object)(object)((Component)this).transform.parent != (Object)null) { ((Component)this).transform.SetParent((Transform)null); } if ((Object)(object)grenadeRigidbody != (Object)null) { grenadeRigidbody.isKinematic = false; grenadeRigidbody.detectCollisions = true; grenadeRigidbody.useGravity = true; grenadeRigidbody.constraints = (RigidbodyConstraints)0; } isSticking = false; if ((Object)(object)stickyCollider != (Object)null) { stickyCollider.enabled = false; } canStick = false; } private void SetCollidersToLayer(Collider collider, string layer) { ((Component)collider).gameObject.layer = LayerMask.NameToLayer(layer); } private void OnDestroy() { if ((Object)(object)parentObject != (Object)null) { CSGDestroyNotifier component = parentObject.GetComponent<CSGDestroyNotifier>(); if ((Object)(object)component != (Object)null) { component.OnDestroyed -= OnDestroyUnstickGrenade; } } } public void Arm() { //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) if (!m_isArmed) { m_isArmed = true; m_fuseTime = FuseTime; SM.PlayCoreSound((FVRPooledAudioType)10, ArmedSound, ((Component)this).transform.position); if (PlaysAnimationOnArm) { Animator.Play(ArmingAnimationNode); } if (UsesCapSystem) { DummyCap.SetActive(false); Object.Instantiate<GameObject>(CapPrefab, CapPrefabSpawnPos.position, CapPrefabSpawnPos.rotation); } } } } public class ChamberDependentParticlesAndSounds : MonoBehaviour { public FVRFireArmChamber ChamberToRead; public ParticleSystem ParticlesToEnable; public AudioSource SoundsToEnable; private void Update() { if (ChamberToRead.IsFull) { if (!ParticlesToEnable.isPlaying) { ParticlesToEnable.Play(); } if (!SoundsToEnable.isPlaying) { SoundsToEnable.Play(); } } else { ParticlesToEnable.Stop(); SoundsToEnable.Stop(); } } } public class ClosedBoltBeltFedDualFeedFix : MonoBehaviour { public ClosedBoltWeapon Weapon; public ClosedBoltMagEjectionTrigger MagGrabTrigger; public Vector3 TriggerPosForBeltBox; public Vector3 ScaleForBeltBoxTrigger; private Vector3 TriggerPosForMag; private Vector3 ScaleForMagTrigger; private void Start() { //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) //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) TriggerPosForMag = ((FVRInteractiveObject)MagGrabTrigger).Transform.localPosition; ScaleForMagTrigger = ((FVRInteractiveObject)MagGrabTrigger).Transform.localScale; } private void Update() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0090: 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) FVRFireArmMagazine magazine = ((FVRFireArm)Weapon).Magazine; ClosedBoltMagEjectionTrigger magGrabTrigger = MagGrabTrigger; if ((Object)(object)magazine == (Object)null) { return; } if (!magazine.IsBeltBox) { ((Component)magGrabTrigger).gameObject.SetActive(true); ((FVRInteractiveObject)magGrabTrigger).Transform.localPosition = TriggerPosForMag; ((FVRInteractiveObject)magGrabTrigger).Transform.localScale = ScaleForMagTrigger; } if (magazine.IsBeltBox) { if (!((FVRFireArm)Weapon).ConnectedToBox) { ((Component)magGrabTrigger).gameObject.SetActive(true); ((FVRInteractiveObject)magGrabTrigger).Transform.localPosition = TriggerPosForBeltBox; ((FVRInteractiveObject)magGrabTrigger).Transform.localScale = ScaleForBeltBoxTrigger; } else { ((Component)MagGrabTrigger).gameObject.SetActive(false); } } } } public class ClosedBoltMagReleaseSelector : MonoBehaviour { public ClosedBoltWeapon Gun; public Vector3 MagReleaseUnpress_Safe; public Vector3 MagReleaseUnpress_NotSafe; private void Update() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) if ((int)Gun.FireSelector_Modes[Gun.m_fireSelectorMode].ModeType == 0) { Gun.MagReleaseUnpressed = MagReleaseUnpress_Safe; } else { Gun.MagReleaseUnpressed = MagReleaseUnpress_NotSafe; } } } public class ClosedBoltPokeToChamberRound : FVRInteractiveObject { public ClosedBoltWeapon Weapon; public FVRFireArmChamber Chamber; public override void Poke(FVRViveHand hand) { if (((Object)(object)((FVRInteractiveObject)Weapon).m_hand == (Object)null || (Object)(object)hand != (Object)(object)((FVRInteractiveObject)Weapon).m_hand) && !Chamber.IsFull) { Weapon.Bolt.ImpartFiringImpulse(); } } } public class Commando : FVRFireArm { [Serializable] public class CommandoMovingPart { public MovableObjectPart ObjectPart; public E_State DesiredState; } [Header("Commando")] public FVRFireArmChamber[] CommandoChambers; public Transform[] CommandoMuzzles; public int CurrentChamber = 0; public bool AlsoPlaysSecondFireSound = true; public AudioEvent SecondFireSound; public Transform SecondFireSoundPosition; public bool DeletesCartridgeOnFire = true; public bool DestroyWhenEmpty = false; public float KillDelay = 30f; public bool IsEmpty = false; public bool UseEnableDisablePerChamberSystem = true; public GameObject[] EnableIfCorrespondingChamberIsSpent; public GameObject[] DisableIfCorrespondingChamberIsSpent; public Transform Trigger; public float Trigger_ForwardValue; public float Trigger_RearwardValue; public Axis TriggerAxis; public InterpStyle TriggerInterpStyle = (InterpStyle)1; private float m_triggerFloat; [Header("Moving Parts Stuff")] public bool UsesMovingPartSystem = false; public bool AllMovingPartsReady = false; public CommandoMovingPart[] MovingParts; public override void Awake() { ((FVRFireArm)this).Awake(); FVRFireArmChamber[] commandoChambers = CommandoChambers; foreach (FVRFireArmChamber item in commandoChambers) { base.FChambers.Add(item); } } public override void UpdateInteraction(FVRViveHand hand) { //IL_004a: 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) ((FVRPhysicalObject)this).UpdateInteraction(hand); m_triggerFloat = hand.Input.TriggerFloat; if ((Object)(object)Trigger != (Object)null) { ((FVRPhysicalObject)this).SetAnimatedComponent(Trigger, Mathf.Lerp(Trigger_ForwardValue, Trigger_RearwardValue, m_triggerFloat), TriggerInterpStyle, TriggerAxis); } if (!((FVRPhysicalObject)this).IsAltHeld && hand.Input.TriggerDown && ((FVRInteractiveObject)this).m_hasTriggeredUpSinceBegin && CurrentChamber <= CommandoChambers.Length - 1) { Fire(); } IsEmpty = true; FVRFireArmChamber[] commandoChambers = CommandoChambers; foreach (FVRFireArmChamber val in commandoChambers) { if (val.IsFull && !val.IsSpent) { IsEmpty = false; break; } } if (IsEmpty && DestroyWhenEmpty) { Object.Destroy((Object)(object)((Component)this).gameObject, KillDelay); } } public override Transform GetMuzzle() { return CommandoMuzzles[CurrentChamber]; } public void Fire() { //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0130: 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_0063: Unknown result type (might be due to invalid IL or missing references) if (!CommandoChambers[CurrentChamber].IsFull || CommandoChambers[CurrentChamber].IsSpent) { return; } if (UsesMovingPartSystem) { AllMovingPartsReady = true; CommandoMovingPart[] movingParts = MovingParts; foreach (CommandoMovingPart commandoMovingPart in movingParts) { if (commandoMovingPart.ObjectPart.State != commandoMovingPart.DesiredState) { AllMovingPartsReady = false; } } if (!AllMovingPartsReady) { return; } } FVRFireArmChamber val = CommandoChambers[CurrentChamber]; val.Fire(); ((FVRFireArm)this).Fire(val, ((FVRFireArm)this).GetMuzzle(), true, 1f, -1f); ((FVRFireArm)this).FireMuzzleSmoke(); bool flag = ((FVRFireArm)this).IsTwoHandStabilized(); bool flag2 = (Object)(object)((FVRPhysicalObject)this).AltGrip != (Object)null; bool flag3 = ((FVRFireArm)this).IsShoulderStabilized(); ((FVRFireArm)this).Recoil(flag, flag2, flag3, (FVRFireArmRecoilProfile)null, 1f); ((FVRFireArm)this).PlayAudioGunShot(val.GetRound(), GM.CurrentPlayerBody.GetCurrentSoundEnvironment(), 1f); if (AlsoPlaysSecondFireSound) { SM.PlayCoreSound((FVRPooledAudioType)0, SecondFireSound, ((Component)SecondFireSoundPosition).transform.position); } if (GM.CurrentSceneSettings.IsAmmoInfinite || GM.CurrentPlayerBody.IsInfiniteAmmo) { val.IsSpent = false; val.UpdateProxyDisplay(); } else if (DeletesCartridgeOnFire) { val.SetRound((FVRFireArmRound)null, false); } if (UseEnableDisablePerChamberSystem) { EnableIfCorrespondingChamberIsSpent[CurrentChamber].SetActive(true); DisableIfCorrespondingChamberIsSpent[CurrentChamber].SetActive(false); } CurrentChamber++; if (CurrentChamber >= CommandoChambers.Length) { CurrentChamber = 0; } } public override List<FireArmRoundClass> GetChamberRoundList() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) if (CommandoChambers[0].IsFull && !CommandoChambers[0].IsSpent) { List<FireArmRoundClass> list = new List<FireArmRoundClass>(); list.Add(CommandoChambers[0].GetRound().RoundClass); return list; } return null; } public override void SetLoadedChambers(List<FireArmRoundClass> rounds) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) FVRFireArmChamber[] commandoChambers = CommandoChambers; foreach (FVRFireArmChamber val in commandoChambers) { if (rounds.Count > 0) { val.Autochamber(rounds[0]); } } } } public class DemonadeProximityDetonate : MonoBehaviour { public MF2_Demonade Demonade; public float ActivationDelay = 1f; private float m_timetoDelay = 0f; private bool isArmed = false; private void Update() { if (m_timetoDelay < ActivationDelay) { m_timetoDelay += Time.deltaTime; } if (m_timetoDelay >= ActivationDelay) { isArmed = true; } } private void OnTriggerEnter(Collider other) { if (isArmed) { string text = LayerMask.LayerToName(((Component)other).gameObject.layer); if (Demonade.ExplodeOnContactLayerName == text) { Demonade.Explode(); } } } } public class DisableIfCurrentMagIsBeltBox : MonoBehaviour { public FVRFireArm Firearm; public GameObject GameObjectToDisable; private void Update() { GameObjectToDisable.SetActive(true); } } public class Epoch : FVRFireArm { [Header("Epoch Component Params")] public GameObject UnchargedBolt; public GameObject ChargedBolt; private bool HasRound = false; [Header("Epoch Trigger Params")] public float TriggerBreakPoint; public Transform Trigger; public float Trigger_ForwardValue; public float Trigger_RearwardValue; public Axis TriggerAxis; public InterpStyle TriggerInterpStyle = (InterpStyle)1; private float TriggerHeldStartTime = 0f; public float SafeHoldTime = 1f; public float MaxUnsafeHoldTime = 3f; public GameObject[] SelfDestructPrefabs; private float m_triggerFloat; private bool IsChargedToPowerful = false; private float ManipulationFactor = 0f; private float ManipulationFactor2 = 0f; private bool HasStartedCharging = false; [Header("Epoch Visual Params")] public ParticleSystem ChargingParticles; public ParticleSystem ChargedParticles; public ParticleSystem FiringParticles; public int NumberOfParticles; public Transform MainChargeBars; public Vector2 YScaleMainSafe; public Vector2 YScaleMainUnsafe; public Transform OpticChargeBar; public Vector2 YScaleOptic; public Vector2 YScaleOpticUnsafe; [Header("Epoch Audio Params")] public FVRTailSoundClass TailClass = (FVRTailSoundClass)8; public AudioEvent ChargingClip; public AudioEvent FullyChargedClip; public AudioSource ChargeLoopAudio; private bool HasPlayedFullyChargedSound = false; public float MaxChargeLoopPitch = 1.5f; private void Start() { ChargeLoopAudio.Stop(); ChargingParticles.Stop(); ChargedParticles.Stop(); } public override void EndInteraction(FVRViveHand hand) { ((FVRFireArm)this).EndInteraction(hand); ManipulationFactor = 0f; ManipulationFactor2 = 0f; if (ChargingParticles.isPlaying) { ChargingParticles.Stop(); } if (ChargedParticles.isPlaying) { ChargedParticles.Stop(); } if (ChargeLoopAudio.isPlaying) { ChargeLoopAudio.Stop(); } HasPlayedFullyChargedSound = false; } public override void UpdateInteraction(FVRViveHand hand) { //IL_009e: 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_0146: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: 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) ((FVRPhysicalObject)this).UpdateInteraction(hand); m_triggerFloat = hand.Input.TriggerFloat; if (IsChargedToPowerful && !ChargeLoopAudio.isPlaying) { ChargeLoopAudio.Play(); } if (!IsChargedToPowerful && ChargeLoopAudio.isPlaying) { ChargeLoopAudio.Stop(); } if ((Object)(object)Trigger != (Object)null) { ((FVRPhysicalObject)this).SetAnimatedComponent(Trigger, Mathf.Lerp(Trigger_ForwardValue, Trigger_RearwardValue, m_triggerFloat), TriggerInterpStyle, TriggerAxis); } HasRound = true; EpochMagazine epochMagazine = (EpochMagazine)(object)base.Magazine; if ((Object)(object)epochMagazine == (Object)null || epochMagazine.NumOfRoundsRemaining == 0) { HasRound = false; } if (!((FVRPhysicalObject)this).IsAltHeld && m_triggerFloat >= TriggerBreakPoint && !HasStartedCharging && HasRound) { HasStartedCharging = true; TriggerHeldStartTime = Time.time; IsChargedToPowerful = false; ManipulationFactor = 0f; SM.PlayCoreSound((FVRPooledAudioType)0, ChargingClip, ((Component)this).transform.position); } if (!((FVRPhysicalObject)this).IsAltHeld && m_triggerFloat >= TriggerBreakPoint) { float num = Time.time - TriggerHeldStartTime; if (num < SafeHoldTime) { ManipulationFactor = Mathf.Clamp01(num / SafeHoldTime); } if (num >= SafeHoldTime) { ManipulationFactor = 1f; IsChargedToPowerful = true; if (!HasPlayedFullyChargedSound) { SM.PlayCoreSound((FVRPooledAudioType)0, FullyChargedClip, ((Component)this).transform.position); HasPlayedFullyChargedSound = true; } } if (num >= SafeHoldTime && num < MaxUnsafeHoldTime) { if (!HasPlayedFullyChargedSound) { SM.PlayCoreSound((FVRPooledAudioType)0, FullyChargedClip, ((Component)this).transform.position); HasPlayedFullyChargedSound = true; } ManipulationFactor = 1f; IsChargedToPowerful = true; ManipulationFactor2 = Mathf.Clamp01((num - SafeHoldTime) / (MaxUnsafeHoldTime - SafeHoldTime)); ChargeLoopAudio.pitch = 1f + ManipulationFactor2 * MaxChargeLoopPitch; } if (num >= MaxUnsafeHoldTime) { SelfDestruct(hand); } if (!ChargingParticles.isPlaying) { ChargingParticles.Play(); } } if (m_triggerFloat < TriggerBreakPoint && IsChargedToPowerful && !((FVRPhysicalObject)this).IsAltHeld) { Fire(); IsChargedToPowerful = false; ManipulationFactor = 0f; ManipulationFactor2 = 0f; FiringParticles.Emit(NumberOfParticles); ChargingParticles.Stop(); HasPlayedFullyChargedSound = false; } if (m_triggerFloat < TriggerBreakPoint && !IsChargedToPowerful) { ManipulationFactor = 0f; if (ChargingParticles.isPlaying) { ChargingParticles.Stop(); } HasPlayedFullyChargedSound = false; HasStartedCharging = false; TriggerHeldStartTime = Time.time; } UpdateAnimatedParts(); } public void UpdateAnimatedParts() { //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_006b: 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_00de: Unknown result type (might be due to invalid IL or missing references) float num = YScaleMainSafe.x - YScaleMainSafe.y; float num2 = YScaleMainUnsafe.x - YScaleMainUnsafe.y; Vector3 localScale = ((Component)MainChargeBars).transform.localScale; localScale.y = 1f - (ManipulationFactor * num + ManipulationFactor2 * num2); ((Component)MainChargeBars).transform.localScale = localScale; float num3 = YScaleOptic.x - YScaleOptic.y; float num4 = YScaleOpticUnsafe.x - YScaleOpticUnsafe.y; Vector3 localScale2 = ((Component)OpticChargeBar).transform.localScale; localScale2.y = 1f - (num3 * ManipulationFactor + ManipulationFactor2 * num4); ((Component)OpticChargeBar).transform.localScale = localScale2; if (IsChargedToPowerful && !ChargedParticles.isPlaying) { ChargedParticles.Play(); } if (!IsChargedToPowerful && ChargedParticles.isPlaying) { ChargedParticles.Stop(); } } public void Fire() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_00dd: 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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) GameObject val = null; if (IsChargedToPowerful) { val = Object.Instantiate<GameObject>(UnchargedBolt, ((FVRFireArm)this).GetMuzzle().position, ((FVRFireArm)this).GetMuzzle().rotation); } if (!IsChargedToPowerful) { val = Object.Instantiate<GameObject>(ChargedBolt, ((FVRFireArm)this).GetMuzzle().position, ((FVRFireArm)this).GetMuzzle().rotation); } BallisticProjectile component = val.GetComponent<BallisticProjectile>(); component.Fire(val.transform.forward, (FVRFireArm)(object)this); HasPlayedFullyChargedSound = false; ((FVRFireArm)this).FireMuzzleSmoke(); bool flag = ((FVRFireArm)this).IsTwoHandStabilized(); bool flag2 = (Object)(object)((FVRPhysicalObject)this).AltGrip != (Object)null; bool flag3 = ((FVRFireArm)this).IsShoulderStabilized(); ((FVRFireArm)this).Recoil(flag, flag2, flag3, (FVRFireArmRecoilProfile)null, 1f); base.m_pool_shot.PlayClip(base.AudioClipSet.Shots_Main, base.MuzzlePos.position, (AudioMixerGroup)null); base.m_pool_tail.PlayClipPitchOverride(SM.GetTailSet(TailClass, GM.CurrentPlayerBody.GetCurrentSoundEnvironment()), ((FVRFireArm)this).GetMuzzle().position, base.AudioClipSet.TailPitchMod_Main, (AudioMixerGroup)null); if (GM.CurrentSceneSettings.IsAmmoInfinite || GM.CurrentPlayerBody.IsInfiniteAmmo) { EpochMagazine epochMagazine = (EpochMagazine)(object)base.Magazine; epochMagazine.NumOfRoundsRemaining++; } HasStartedCharging = false; ChargeLoopAudio.pitch = 1f; } public void SelfDestruct(FVRViveHand hand) { //IL_0023: 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) ((FVRInteractiveObject)this).EndInteraction(hand); GameObject[] selfDestructPrefabs = SelfDestructPrefabs; foreach (GameObject val in selfDestructPrefabs) { Object.Instantiate<GameObject>(val, ((Component)this).transform.position, ((Component)this).transform.rotation); } ((FVRInteractiveObject)this).ForceBreakInteraction(); Object.Destroy((Object)(object)((Component)this).gameObject); } } public class EpochMagazine : FVRFireArmMagazine { [Header("Epoch Cell Params")] public int NumOfRoundsRemaining = 3; } } namespace Cityrobo { public class FirearmEjectAndDeleteMagOnEmpty : MonoBehaviour { public FVRFireArm Firearm; public bool DeleteMagazineEntirely = false; public void Update() { if ((Object)(object)Firearm.Magazine != (Object)null && !Firearm.Magazine.HasARound()) { FVRFireArmMagazine magazine = Firearm.Magazine; Firearm.EjectMag(false); if (DeleteMagazineEntirely) { Object.Destroy((Object)(object)((Component)magazine).gameObject); } } } } } namespace ShermanJumbo { public class FirearmFlyOutOfHand : MonoBehaviour { public FVRFireArm Gun; public FVRFireArmChamber Chamber; public float TriggerFloat = 0.85f; protected bool IsSpent = false; protected bool WasSpent = false; public float Force = 30f; public float Torque = 20f; private void Update() { //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_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_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) IsSpent = Chamber.IsSpent; if (IsSpent && !WasSpent && (Object)(object)((FVRInteractiveObject)Gun).m_hand != (Object)null && ((FVRInteractiveObject)Gun).m_hand.Input.TriggerFloat >= TriggerFloat && !Gun.IsTwoHandStabilized() && !Gun.IsForegripStabilized()) { if ((Object)(object)((FVRInteractiveObject)Gun).m_hand != (Object)null) { ((FVRInteractiveObject)Gun).m_hand.EndInteractionIfHeld((FVRInteractiveObject)(object)Gun); ((FVRInteractiveObject)Gun).ForceBreakInteraction(); } ((FVRPhysicalObject)Gun).RootRigidbody.AddForceAtPosition((-((Component)this).transform.forward + ((Component)this).transform.up + Random.onUnitSphere * 0.25f) * Force, Gun.MuzzlePos.position, (ForceMode)1); ((FVRPhysicalObject)Gun).RootRigidbody.AddRelativeTorque(Vector3.right * Torque, (ForceMode)1); } WasSpent = Chamber.IsSpent; } } public class FirearmSpinnyBarrels : MonoBehaviour { public FVRFireArm Gun; public GameObject SpinningBarrels; public float SpinRate; public dirType DirectionOfSpin; public float DecelerationRate = 0.5f; public float TriggerDeadzone = 0.01f; private float currentSpinSpeed = 0f; private bool TriggerPulled = false; public AudioSource SpinnySounds; public float SpinnySoundsVolume = 0.4f; private void Awake() { if ((Object)(object)SpinnySounds != (Object)null) { SpinnySounds.volume = 0f; } } private void Update() { //IL_0130: 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_0137: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Expected I4, but got Unknown //IL_016b: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)SpinnySounds != (Object)null) { SpinnySounds.volume = currentSpinSpeed / SpinRate * SpinnySoundsVolume; } if ((Object)(object)Gun != (Object)null && (Object)(object)((FVRInteractiveObject)Gun).m_hand != (Object)null) { float triggerFloat = ((FVRInteractiveObject)Gun).m_hand.Input.TriggerFloat; if (triggerFloat >= TriggerDeadzone) { if (!TriggerPulled) { TriggerPulled = true; } currentSpinSpeed = SpinRate; } else if (TriggerPulled) { TriggerPulled = false; } } if (!TriggerPulled && currentSpinSpeed > 0f) { currentSpinSpeed -= DecelerationRate * Time.deltaTime; if (currentSpinSpeed < 0f) { currentSpinSpeed = 0f; } } if (currentSpinSpeed > 0f && (Object)(object)SpinningBarrels != (Object)null) { Vector3 zero = Vector3.zero; int num = (int)DirectionOfSpin; if (num >= 0 && num <= 2) { ((Vector3)(ref zero))[num] = currentSpinSpeed * Time.deltaTime; SpinningBarrels.transform.Rotate(zero); } else { Debug.LogWarning((object)"Invalid DirectionOfSpin value!"); } } } } public class GrenadeFuseTimeReadout : MonoBehaviour { public PinnedGrenade Grenade; public Text Text; public bool UseBetterVarTimeFuse = true; public float[] FuzeTimes; public float PitchStart = 1f; public float PitchEnd = 2.5f; private int FuzeTimeIndex = 0; private void Update() { //IL_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f2: Unknown result type (might be due to invalid IL or missing references) if (Grenade.m_isLeverReleased) { float num = Grenade.m_fuseTime; if (num < 0f) { num = 0f; } Text.text = num.ToString("F1") + "s"; if (UseBetterVarTimeFuse) { float num2 = Mathf.Clamp(1f - Grenade.m_fuseTime / Grenade.m_startFuseTime, 0f, 1f); num2 = Mathf.Pow(num2, 2f); if (Grenade.m_fuse_tick <= 0f) { Grenade.m_fuse_tick = Mathf.Lerp(Grenade.m_fuse_StartRefire, Grenade.m_fuse_EndRefire, num2); float num3 = Mathf.Lerp(PitchStart, PitchEnd, num2); SM.PlayCoreSoundOverrides((FVRPooledAudioType)0, Grenade.AudEvent_FusePulse, ((FVRInteractiveObject)Grenade).Transform.position, new Vector2(1f, 1f), new Vector2(num3, num3)); Grenade.FusePSystem.Emit(2); } else { PinnedGrenade grenade = Grenade; grenade.m_fuse_tick -= Time.deltaTime; } } } if (!UseBetterVarTimeFuse) { return; } if ((Object)(object)((FVRInteractiveObject)Grenade).m_hand != (Object)null && ((((FVRInteractiveObject)Grenade).m_hand.IsInStreamlinedMode && ((FVRInteractiveObject)Grenade).m_hand.Input.BYButtonDown) || (((FVRInteractiveObject)Grenade).m_hand.Input.TouchpadDown && ((Vector2)(ref ((FVRInteractiveObject)Grenade).m_hand.Input.TouchpadAxes)).magnitude > 0.2f && Vector2.Angle(((FVRInteractiveObject)Grenade).m_hand.Input.TouchpadAxes, Vector2.up) <= 45f))) { if (FuzeTimeIndex < FuzeTimes.Length - 1) { FuzeTimeIndex++; } else { FuzeTimeIndex = 0; } } Grenade.DefaultFuse.x = FuzeTimes[FuzeTimeIndex]; Grenade.DefaultFuse.y = FuzeTimes[FuzeTimeIndex]; if (!Grenade.m_isLeverReleased) { float num4 = FuzeTimes[FuzeTimeIndex]; Grenade.DefaultFuse.x = num4; Grenade.DefaultFuse.y = num4; Grenade.m_startFuseTime = num4; Grenade.m_fuseTime = num4; Text.text = num4.ToString("F1") + "s"; } } } } namespace BitWizrd.GrenadeMod { public class GrenadeMod : FVRPhysicalObject { [Header("Grenade Settings")] public GameObject grenadeGameObject; public PinnedGrenadeRing pinnedGrenadeRing; public Rigidbody grenadeRigidbody; public bool activateLeverOnPinPull = false; [Header("Sticky Grenade Settings")] public bool isStickyGrenade = true; public Collider stickyCollider; public float stickingDistance = 0.1f; public LayerMask stickyLayers; public float embeddingDistance = 0.02f; public bool playStickSoundForRigidbodiesOnly = true; public AudioSource stickSoundSource; public AudioClip[] stickSounds; public float minimumStickVelocity = 2f; public float regrabActivationDelay = 0.5f; public float massWhileStuck = 10f; [Header("Grenade Cooking Settings")] public GameObject pinPullEffectPrefab; public AudioSource cookingAudioSource; public AudioClip[] cookingClips; public float cookingSoundDelay = 1f; [Header("Grenade Fast Throw Settings")] public AudioSource fastThrowAudioSource; public AudioClip[] fastThrowClips; public float fastThrowVelocityThreshold = 10f; public float releaseWindow = 0.5f; private PinnedGrenade grenade; private Collider grenadeCollider; private bool hasPlayedFastThrowSound = false; private bool isPinPulled = false; private bool isHeld = false; private bool wasHeld = false; private bool pinPulledChecked = false; private bool shouldCheckVelocity = false; private bool hasReleasedLever = false; private bool isSticking = false; private bool canStick = false; private float timeSinceRelease = 0f; private GameObject parentObject; private Vector3 savedPosition; private Quaternion savedRotation; private Vector3 savedScale; private FVRInteractiveObject interactiveObject; private bool isCookingCoroutineRunning = false; private void Start() { interactiveObject = ((Component)this).GetComponent<FVRInteractiveObject>(); } public override void FVRUpdate() { ((FVRPhysicalObject)this).FVRUpdate(); if ((Object)(object)grenadeGameObject == (Object)null) { return; } grenade = grenadeGameObject.GetComponent<PinnedGrenade>(); if ((Object)(object)grenade == (Object)null) { return; } FVRPhysicalObject component = grenadeGameObject.GetComponent<FVRPhysicalObject>(); if ((Object)(object)component == (Object)null) { return; } grenadeCollider = grenadeGameObject.GetComponent<Collider>(); if ((Object)(object)grenadeCollider == (Object)null) { return; } isHeld = ((FVRInteractiveObject)component).IsHeld; if ((Object)(object)pinnedGrenadeRing != (Object)null) { isPinPulled = pinnedGrenadeRing.HasPinDetached(); if (!pinPulledChecked && isPinPulled) { pinPulledChecked = true; shouldCheckVelocity = true; if (isStickyGrenade) { EnableStickyCollider(); } if ((Object)(object)pinPullEffectPrefab != (Object)null) { pinPullEffectPrefab.SetActive(true); } } if (!wasHeld && isHeld) { hasPlayedFastThrowSound = false; timeSinceRelease = 0f; if (isPinPulled) { EnableStickyCollider(); } shouldCheckVelocity = isPinPulled; wasHeld = true; canStick = true; isSticking = false; FixedJoint component2 = ((Component)this).GetComponent<FixedJoint>(); if ((Object)(object)component2 != (Object)null) { Object.Destroy((Object)(object)component2); grenadeRigidbody.isKinematic = false; grenadeRigidbody.detectCollisions = true; grenadeRigidbody.useGravity = true; grenadeRigidbody.constraints = (RigidbodyConstraints)0; Debug.Log((object)"FixedJoint grenade unstuck upon being picked up."); } else if ((Object)(object)((Component)this).transform.parent != (Object)null && ((Object)((Component)((Component)this).transform.parent).gameObject).name == "DummyParent") { GameObject gameObject = ((Component)((Component)this).transform.parent).gameObject; ((Component)this).transform.SetParent((Transform)null, true); Object.Destroy((Object)(object)gameObject); grenadeRigidbody.isKinematic = false; grenadeRigidbody.detectCollisions = true; grenadeRigidbody.useGravity = true; grenadeRigidbody.constraints = (RigidbodyConstraints)0; Debug.Log((object)"Static-stuck grenade unstuck upon being picked up."); } if (isStickyGrenade) { DisableStickyColliderTemporarily(); } } if (wasHeld && !isHeld) { isSticking = false; wasHeld = false; } } if (isPinPulled || !isHeld) { DisableMeleeDamage(component); } else { EnableMeleeDamage(component); } if (isPinPulled && !cookingAudioSource.isPlaying && cookingClips.Length > 0 && !isCookingCoroutineRunning) { if (cookingSoundDelay == 0f) { PlayCookingSoundImmediately(); } else { ((MonoBehaviour)this).StartCoroutine(HandleCookingSoundDelay()); } } if (isPinPulled && (Object)(object)pinPullEffectPrefab != (Object)null) { pinPullEffectPrefab.SetActive(true); } if (isPinPulled && activateLeverOnPinPull && !hasReleasedLever) { grenade.ReleaseLever(); hasReleasedLever = true; } } public override void FVRFixedUpdate() { //IL_0024: 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_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) ((FVRPhysicalObject)this).FVRFixedUpdate(); if (shouldCheckVelocity && isHeld) { Vector3 velocity = grenadeRigidbody.velocity; if (((Vector3)(ref velocity)).magnitude >= minimumStickVelocity) { canStick = true; } else { canStick = false; } } if (!shouldCheckVelocity || isHeld) { return; } timeSinceRelease += Time.fixedDeltaTime; if (timeSinceRelease <= releaseWindow) { Vector3 velocity2 = grenadeRigidbody.velocity; if (((Vector3)(ref velocity2)).magnitude > fastThrowVelocityThreshold && !hasPlayedFastThrowSound) { PlayFastThrowSound(); } } else { shouldCheckVelocity = false; } } private void DisableMeleeDamage(FVRPhysicalObject physicalObject) { if (physicalObject.MP != null && physicalObject.MP.IsMeleeWeapon) { physicalObject.MP.IsMeleeWeapon = false; } } private void EnableMeleeDamage(FVRPhysicalObject physicalObject) { if (physicalObject.MP != null && !physicalObject.MP.IsMeleeWeapon) { physicalObject.MP.IsMeleeWeapon = true; } } private void PlayFastThrowSound() { if (fastThrowClips.Length > 0 && (Object)(object)fastThrowAudioSource != (Object)null) { AudioClip val = fastThrowClips[Random.Range(0, fastThrowClips.Length)]; fastThrowAudioSource.PlayOneShot(val); } hasPlayedFastThrowSound = true; } private void OnCollisionEnter(Collision collision) { //IL_00b6: 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_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) if (!isPinPulled || isSticking || !isStickyGrenade || !((Object)(object)stickyCollider != (Object)null) || (Object)(object)collision.gameObject.GetComponent<BreakableGlass>() != (Object)null || (Object)(object)collision.gameObject.GetComponent<PinnedGrenade>() != (Object)null || (Object)(object)collision.gameObject.GetComponent<PinnedGrenadePin>() != (Object)null || (Object)(object)collision.gameObject.GetComponent<SosigWeapon>() != (Object)null) { return; } ContactPoint[] contacts = collision.contacts; for (int i = 0; i < contacts.Length; i++) { ContactPoint contact = contacts[i]; if (!((Object)(object)((ContactPoint)(ref contact)).thisCollider == (Object)(object)stickyCollider)) { continue; } if ((LayerMask.op_Implicit(stickyLayers) & (1 << collision.gameObject.layer)) == 0 || !IsContactPointWithinStickingDistance(((ContactPoint)(ref contact)).point)) { break; } isSticking = true; StickToSurface(collision, contact); PlayStickingSound(collision); parentObject = collision.gameObject; if ((Object)(object)parentObject != (Object)null) { DestroyNotifier destroyNotifier = parentObject.GetComponent<DestroyNotifier>(); if ((Object)(object)destroyNotifier == (Object)null) { destroyNotifier = parentObject.AddComponent<DestroyNotifier>(); } destroyNotifier.OnDestroyed += OnDestroyUnstickGrenade; } break; } } private bool IsContactPointWithinStickingDistance(Vector3 contactPoint) { //IL_0007: 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_000d: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) Vector3 val = stickyCollider.ClosestPoint(contactPoint); float num = Vector3.Distance(contactPoint, val); return num < stickingDistance; } private void StickToSurface(Collision collision, ContactPoint contact) { //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_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_006d: 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_007c: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Expected O, but got Unknown //IL_015a: 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_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01e1: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: 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_0207: Unknown result type (might be due to invalid IL or missing references) //IL_0219: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_021f: Unknown result type (might be due to invalid IL or missing references) //IL_0230: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)stickyCollider == (Object)null) { return; } if ((Object)(object)interactiveObject != (Object)null && interactiveObject.IsHeld) { interactiveObject.ForceBreakInteraction(); } savedPosition = ((Component)this).transform.position; savedRotation = ((Component)this).transform.rotation; Vector3 lossyScale = ((Component)this).transform.lossyScale; Rigidbody rigidbody = collision.rigidbody; Vector3 val = ((ContactPoint)(ref contact)).normal * embeddingDistance; if ((Object)(object)rigidbody != (Object)null) { ((Component)this).transform.position = ((ContactPoint)(ref contact)).point + val; FixedJoint component = ((Component)this).GetComponent<FixedJoint>(); if ((Object)(object)component != (Object)null) { Object.Destroy((Object)(object)component); } FixedJoint val2 = ((Component)this).gameObject.AddComponent<FixedJoint>(); ((Joint)val2).connectedBody = rigidbody; ((Joint)val2).breakForce = float.MaxValue; ((Joint)val2).breakTorque = float.MaxValue; grenadeRigidbody.useGravity = false; grenadeRigidbody.isKinematic = false; grenadeRigidbody.constraints = (RigidbodyConstraints)0; grenadeRigidbody.mass = massWhileStuck; SetCollidersToLayer(stickyCollider, "NoCol"); } else { GameObject val3 = new GameObject("DummyParent"); val3.transform.position = ((ContactPoint)(ref contact)).point; val3.transform.rotation = collision.transform.rotation; grenadeRigidbody.isKinematic = true; val3.transform.SetParent(collision.transform, true); ((Component)this).transform.SetParent(val3.transform, false); ((Component)this).transform.localScale = new Vector3(lossyScale.x / ((Component)this).transform.lossyScale.x, lossyScale.y / ((Component)this).transform.lossyScale.y, lossyScale.z / ((Component)this).transform.lossyScale.z); ((Component)this).transform.position = ((ContactPoint)(ref contact)).point + val; ((Component)this).transform.rotation = savedRotation; } } private void EnableStickyCollider() { if ((Object)(object)stickyCollider != (Object)null) { stickyCollider.enabled = true; } } private void DisableStickyColliderTemporarily() { if ((Object)(object)stickyCollider != (Object)null) { stickyCollider.enabled = false; } ((MonoBehaviour)this).StartCoroutine(ReenableStickyColliderAfterDelay()); } private IEnumerator ReenableStickyColliderAfterDelay() { yield return (object)new WaitForSeconds(regrabActivationDelay); EnableStickyCollider(); } private void PlayStickingSound(Collision collision) { if ((Object)(object)stickSoundSource != (Object)null && stickSounds.Length > 0 && ((playStickSoundForRigidbodiesOnly && (Object)(object)collision.rigidbody != (Object)null) || !playStickSoundForRigidbodiesOnly)) { int num = Random.Range(0, stickSounds.Length); stickSoundSource.clip = stickSounds[num]; stickSoundSource.Play(); } } private void OnDestroyUnstickGrenade() { if ((Object)(object)this == (Object)null) { return; } if ((Object)(object)parentObject != (Object)null) { DestroyNotifier component = parentObject.GetComponent<DestroyNotifier>(); if ((Object)(object)component != (Object)null) { component.OnDestroyed -= OnDestroyUnstickGrenade; } parentObject = null; } FixedJoint component2 = ((Component)this).GetComponent<FixedJoint>(); if ((Object)(object)component2 != (Object)null) { Object.Destroy((Object)(object)component2); } else if ((Object)(object)((Component)this).transform.parent != (Object)null) { ((Component)this).transform.SetParent((Transform)null); } if ((Object)(object)grenadeRigidbody != (Object)null) { grenadeRigidbody.isKinematic = false; grenadeRigidbody.detectCollisions = true; grenadeRigidbody.useGravity = true; grenadeRigidbody.constraints = (RigidbodyConstraints)0; } isSticking = false; if ((Object)(object)stickyCollider != (Object)null) { stickyCollider.enabled = false; } canStick = false; } private void SetCollidersToLayer(Collider collider, string layer) { ((Component)collider).gameObject.layer = LayerMask.NameToLayer(layer); } private IEnumerator HandleCookingSoundDelay() { isCookingCoroutineRunning = true; if (cookingSoundDelay > 0f) { yield return (object)new WaitForSeconds(cookingSoundDelay); } if ((Object)(object)cookingAudioSource != (Object)null && cookingClips.Length > 0) { int num = Random.Range(0, cookingClips.Length); cookingAudioSource.clip = cookingClips[num]; cookingAudioSource.Play(); } isCookingCoroutineRunning = false; } private void PlayCookingSoundImmediately() { if ((Object)(object)cookingAudioSource != (Object)null && cookingClips.Length > 0) { int num = Random.Range(0, cookingClips.Length); cookingAudioSource.clip = cookingClips[num]; cookingAudioSource.Play(); } } private void OnDestroy() { if ((Object)(object)parentObject != (Object)null) { DestroyNotifier component = parentObject.GetComponent<DestroyNotifier>(); if ((Object)(object)component != (Object)null) { component.OnDestroyed -= OnDestroyUnstickGrenade; } } } } public class DestroyNotifier : MonoBehaviour { public delegate void DestroyedAction(); public event DestroyedAction OnDestroyed; private void OnDestroy() { if (this.OnDestroyed != null) { this.OnDestroyed(); } } } } namespace ShermanJumbo { public class GrenadeParticlesIfArmed : MonoBehaviour { public PinnedGrenade Grenade; public ParticleSystem[] Particles; public AudioSource ArmedSounds; public bool ReleaseLeverOnPinPull = true; private bool m_hasReleasedLever = false; private bool m_hasArmed = false; private bool m_hasExploded = false; private void Start() { StopParticles(); ArmedSounds.Stop(); } private void Update() { if ((Object)(object)Grenade == (Object)null || Particles == null || (Object)(object)ArmedSounds == (Object)null) { return; } bool isPinPulled = Grenade.m_isPinPulled; bool isLeverReleased = Grenade.m_isLeverReleased; bool hasSploded = Grenade.m_hasSploded; if (ReleaseLeverOnPinPull && isPinPulled && !m_hasReleasedLever) { m_hasReleasedLever = true; Grenade.ReleaseLever(); } if (isLeverReleased && !m_hasArmed) { m_hasArmed = true; PlayParticles(); if (!ArmedSounds.isPlaying) { ArmedSounds.Play(); } } if (hasSploded && !m_hasExploded) { m_hasExploded = true; StopParticles(); if (ArmedSounds.isPlaying) { ArmedSounds.Stop(); } } } private void PlayParticles() { if (Particles == null) { return; } ParticleSystem[] particles = Particles; foreach (ParticleSystem val in particles) { if ((Object)(object)val != (Object)null && !val.isPlaying) { val.Play(); } } } private void StopParticles() { if (Particles == null) { return; } ParticleSystem[] particles = Particles; foreach (ParticleSystem val in particles) { if ((Object)(object)val != (Object)null && val.isPlaying) { val.Stop(); } } } } public class GrenadeTouchpadArm : MonoBehaviour { public PinnedGrenade Grenade; private FVRViveHand Hand; private void Update() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) Hand = ((FVRInteractiveObject)Grenade).m_hand; if ((Object)(object)Hand == (Object)null) { return; } Vector2 touchpadAxes = Hand.Input.TouchpadAxes; if ((!Hand.IsInStreamlinedMode || !Hand.Input.AXButtonPressed) && (!Hand.Input.TouchpadPressed || !(((Vector2)(ref touchpadAxes)).magnitude > 0.2f) || !(Vector2.Angle(touchpadAxes, Vector2.down) <= 45f))) { return; } foreach (PinnedGrenadeRing ring in Grenade.m_rings) { ring.PopOutRoutine(); } Grenade.ReleaseLever(); } } public class LAPDLaserAsAttachment : MonoBehaviour { public LAPD2019Laser Laser; private void Awake() { Laser.m_isOn = true; } } } namespace DigitalRuby.LightningBolt { public enum LightningBoltAnimationMode { None, Random, Loop, PingPong } [RequireComponent(typeof(LineRenderer))] public class LightningBoltScript : MonoBehaviour { [Tooltip("The game object where the lightning will emit from. If null, StartPosition is used.")] public GameObject StartObject; [Tooltip("The start position where the lightning will emit from. This is in world space if StartObject is null, otherwise this is offset from StartObject position.")] public Vector3 StartPosition; [Tooltip("The game object where the lightning will end at. If null, EndPosition is used.")] public GameObject EndObject; [Tooltip("The end position where the lightning will end at. This is in world space if EndObject is null, otherwise this is offset from EndObject position.")] public Vector3 EndPosition; [Range(0f, 8f)] [Tooltip("How manu generations? Higher numbers create more line segments.")] public int Generations = 6; [Range(0.01f, 1f)] [Tooltip("How long each bolt should last before creating a new bolt. In ManualMode, the bolt will simply disappear after this amount of seconds.")] public float Duration = 0.05f; private float timer; [Range(0f, 1f)] [Tooltip("How chaotic should the lightning be? (0-1)")] public float ChaosFactor = 0.15f; [Tooltip("In manual mode, the trigger method must be called to create a bolt")] public bool ManualMode; [Range(1f, 64f)] [Tooltip("The number of rows in the texture. Used for animation.")] public int Rows = 1; [Range(1f, 64f)] [Tooltip("The number of columns in the texture. Used for animation.")] public int Columns = 1; [Tooltip("The animation mode for the lightning")] public LightningBoltAnimationMode AnimationMode = LightningBoltAnimationMode.PingPong; [NonSerialized] [HideInInspector] public Random RandomGenerator = new Random(); private LineRenderer lineRenderer; private List<KeyValuePair<Vector3, Vector3>> segments = new List<KeyValuePair<Vector3, Vector3>>(); private int startIndex; private Vector2 size; private Vector2[] offsets; private int animationOffsetIndex; private int animationPingPongDirection = 1; private bool orthographic; private void GetPerpendicularVector(ref Vector3 directionNormalized, out Vector3 side) { //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_0018: 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_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) if (directionNormalized == Vector3.zero) { side = Vector3.right; return; } float x = directionNormalized.x; float y = directionNormalized.y; float z = directionNormalized.z; float num = Mathf.Abs(x); float num2 = Mathf.Abs(y); float num3 = Mathf.Abs(z); float num4; float num5; float num6; if (num >= num2 && num2 >= num3) { num4 = 1f; num5 = 1f; num6 = (0f - (y * num4 + z * num5)) / x; } else if (num2 >= num3) { num6 = 1f; num5 = 1f; num4 = (0f - (x * num6 + z * num5)) / y; } else { num6 = 1f; num4 = 1f; num5 = (0f - (x * num6 + y * num4)) / z; } Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(num6, num4, num5); side = ((Vector3)(ref val)).normalized; } private void GenerateLightningBolt(Vector3 start, Vector3 end, int generation, int totalGenerations, float offsetAmount) { //IL_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: 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_0073: 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_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_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) if (generation < 0 || generation > 8) { return; } if (orthographic) { start.z = (end.z = Mathf.Min(start.z, end.z)); } segments.Add(new KeyValuePair<Vector3, Vector3>(start, end)); if (generation == 0) { return; } if (offsetAmount <= 0f) { Vector3 val = end - start; offsetAmount = ((Vector3)(ref val)).magnitude * ChaosFactor; } while (generation-- > 0) { int num = startIndex; startIndex = segments.Count; for (int i = num; i < startIndex; i++) { start = segments[i].Key; end = segments[i].Value; Vector3 val2 = (start + end) * 0.5f; RandomVector(ref start, ref end, offsetAmount, out var result); val2 += result; segments.Add(new KeyValuePair<Vector3, Vector3>(start, val2)); segments.Add(new KeyValuePair<Vector3, Vector3>(val2, end)); } offsetAmount *= 0.5f; } } public void RandomVector(ref Vector3 start, ref Vector3 end, float offsetAmount, out Vector3 result) { //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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //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_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: 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_0064: Unknown result type (might be due to invalid IL or missing references) if (orthographic) { Vector3 val = end - start; Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(0f - normalized.y, normalized.x, normalized.z); float num = (float)RandomGenerator.NextDouble() * offsetAmount * 2f - offsetAmount; result = val2 * num; } else { Vector3 val3 = end - start; Vector3 directionNormalized = ((Vector3)(ref val3)).normalized; GetPerpendicularVector(ref directionNormalized, out var side); float num2 = ((float)RandomGenerator.NextDouble() + 0.1f) * offsetAmount; float num3 = (float)RandomGenerator.NextDouble() * 360f; result = Quaternion.AngleAxis(num3, directionNormalized) * side * num2; } } private void SelectOffsetFromAnimationMode() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) if (AnimationMode == LightningBoltAnimationMode.None) { ((Renderer)lineRenderer).material.mainTextureOffset = offsets[0]; return; } int num; if (AnimationMode == LightningBoltAnimationMode.PingPong) { num = animationOffsetIndex; animationOffsetIndex += animationPingPongDirection; if (animationOffsetIndex >= offsets.Length) { animationOffsetIndex = offsets.Length - 2; animationPingPongDirection = -1; } else if (animationOffsetIndex < 0) { animationOffsetIndex = 1; animationPingPongDirection = 1; } } else if (AnimationMode == LightningBoltAnimationMode.Loop) { num = animationOffsetIndex++; if (animationOffsetIndex >= offsets.Length) { animationOffsetIndex = 0; } } else { num = RandomGenerator.Next(0, offsets.Length); } if (num >= 0 && num < offsets.Length) { ((Renderer)lineRenderer).material.mainTextureOffset = offsets[num]; } else { ((Renderer)lineRenderer).material.mainTextureOffset = offsets[0]; } } private void UpdateLineRenderer() { //IL_0050: 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) int num = segments.Count - startIndex + 1; lineRenderer.positionCount = num; if (num >= 1) { int num2 = 0; lineRenderer.SetPosition(num2++, segments[startIndex].Key); for (int i = startIndex; i < segments.Count; i++) { lineRenderer.SetPosition(num2++, segments[i].Value); } segments.Clear(); SelectOffsetFromAnimationMode(); } } private void Start() { orthographic = (Object)(object)Camera.main != (Object)null && Camera.main.orthographic; lineRenderer = ((Component)this).GetComponent<LineRenderer>(); lineRenderer.positionCount = 0; UpdateFromMaterialChange(); } private void Update() { orthographic = (Object)(object)Camera.main != (Object)null && Camera.main.orthographic; if (timer <= 0f) { if (ManualMode) { timer = Duration; lineRenderer.positionCount = 0; } else { Trigger(); } } timer -= Time.deltaTime; } public void Trigger() { //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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) timer = Duration + Mathf.Min(0f, timer); Vector3 start = ((!((Object)(object)StartObject == (Object)null)) ? (StartObject.transform.position + StartPosition) : StartPosition); Vector3 end = ((!((Object)(object)EndObject == (Object)null)) ? (EndObject.transform.position + EndPosition) : EndPosition); startIndex = 0; GenerateLightningBolt(start, end, Generations, Generations, 0f); UpdateLineRenderer(); } public void UpdateFromMaterialChange() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) size = new Vector2(1f / (float)Columns, 1f / (float)Rows); ((Renderer)lineRenderer).material.mainTextureScale = size; offsets = (Vector2[])(object)new Vector2[Rows * Columns]; for (int i = 0; i < Rows; i++) { for (int j = 0; j < Columns; j++) { ref Vector2 reference = ref offsets[j + i * Columns]; reference = new Vector2((float)j / (float)Columns, (float)i / (float)Rows); } } } } } namespace ShermanJumbo { public class MagazineDeleteIfEmpty : MonoBehaviour { public FVRFireArmMagazine Magazine; private void Update() { if (!((Object)(object)Magazine.FireArm == (Object)null) && !Magazine.HasARound()) { FVRFireArmMagazine magazine = Magazine; Magazine.FireArm.EjectMag(false); Object.Destroy((Object)(object)((Component)magazine).gameObject); } } } } namespace MeatKit { public class HideInNormalInspectorAttribute : PropertyAttribute { } } namespace ShermanJumbo.Wrist_Wrecker_5000 { [BepInPlugin("ShermanJumbo.Wrist_Wrecker_5000", "Wrist_Wrecker_5000", "0.0.1")] [BepInProcess("h3vr.exe")] [Description("Built with MeatKit")] [BepInDependency("h3vr.otherloader", "1.3.0")] public class Wrist_Wrecker_5000Plugin : BaseUnityPlugin { private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; LoadAssets(); } private void LoadAssets() { Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "ShermanJumbo.Wrist_Wrecker_5000"); OtherLoader.RegisterDirectLoad(BasePath, "ShermanJumbo.Wrist_Wrecker_5000", "", "", "shermanjumbo_wristwrecker5000", ""); } } } namespace ShermanJumbo { public class MinigunExtraBarrelVisual : MonoBehaviour { public Minigun Minigun; public Transform Barrel; private void Update() { //IL_001c: Unknown result type (might be due to invalid IL or missing references) Barrel.localEulerAngles = new Vector3(0f, 0f, Minigun.m_foreRot); } } } public class MinigunMultipleMuzzles : MonoBehaviour { public Minigun Minigun; private int CurrentRoundCount; private int PreviousRoundCount; public Transform[] Muzzles; private int MuzzleIndex; private void Update() { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Expected O, but got Unknown MinigunBox val = (MinigunBox)((FVRFireArm)Minigun).Magazine; if ((Object)(object)val == (Object)null) { return; } CurrentRoundCount = val.NumBulletsLeft; if (CurrentRoundCount < PreviousRoundCount) { MuzzleIndex++; if (MuzzleIndex > Muzzles.Length - 1) { MuzzleIndex = 0; } ((FVRFireArm)Minigun).MuzzlePos = Muzzles[MuzzleIndex]; ((FVRFireArm)Minigun).UpdateCurrentMuzzle(); } PreviousRoundCount = CurrentRoundCount; } } namespace ShermanJumbo { public class OpenBoltFakeChamberDisplay : MonoBehaviour { public OpenBoltReceiver Gun; public OpenBoltReceiverBolt Bolt; public GameObject DisplayRound; private void Update() { //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Invalid comparison between Unknown and I4 if ((Object)(object)((FVRFireArm)Gun).Magazine != (Object)null && ((FVRFireArm)Gun).Magazine.HasARound() && (int)Bolt.CurPos != 0 && (int)Bolt.CurPos != 1) { DisplayRound.SetActive(true); } else { DisplayRound.SetActive(false); } } } public class DoubleBarrelClosedBoltWeaponBolt : FVRInteractiveObject { public enum BoltPos { Forward, ForwardToMid, Locked, LockedToRear, Rear } [Header("Bolt")] public DoubleBarreledClosedBoltWeapon Weapon; public float Speed_Forward; public float Speed_Rearward; public float Speed_Held; public float SpringStiffness = 5f; public BoltPos CurPos; public BoltPos LastPos; public Transform Point_Bolt_Forward; public Transform Point_Bolt_LockPoint; public Transform Point_Bolt_Rear; public Transform Point_Bolt_SafetyLock; public bool HasLastRoundBoltHoldOpen = true; public bool UsesAKSafetyLock; public bool DoesClipHoldBoltOpen = true; private float m_curBoltSpeed; private float m_boltZ_current; private float m_boltZ_heldTarget; private float m_boltZ_forward; private float m_boltZ_lock; private float m_boltZ_rear; private float m_boltZ_safetylock; private bool m_isBoltLocked; private bool m_isHandleHeld; private float m_handleLerp; public bool HasBoltCatchReleaseButton; private bool m_isBoltCatchHeldOnHandle; private bool m_isReleaseCatchHeldOnHandle; [Header("Reciprocating Barrel")] public bool HasReciprocatingBarrel; public Transform Barrel; public Vector3 BarrelForward; public Vector3 BarrelRearward; private bool m_isBarrelReciprocating; [Header("Hammer")] public bool HasHammer; public Transform Hammer; public Vector3 HammerForward; public Vector3 HammerRearward; [Header("Rotating Bit")] public bool HasRotatingPart; public Transform RotatingPart; public Vector3 RotatingPartNeutralEulers; public Vector3 RotatingPartLeftEulers; public Vector3 RotatingPartRightEulers; [Header("Z Rot Part")] public bool HasZRotPart; public Transform ZRotPiece; public AnimationCurve ZRotCurve; public Vector2 ZAngles; public bool ZRotPieceDips; public float DipMagnitude; public bool ZRotPieceLags; public float LagMagnitude; [Header("Z Scale Part")] public bool HasZScalePart; public Transform ZScalePiece; public AnimationCurve ZScaleCurve; public override void Awake() { //IL_000e: 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_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_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_007e: 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) ((FVRInteractiveObject)this).Awake(); m_boltZ_current = ((Component)this).transform.localPosition.z; m_boltZ_forward = Point_Bolt_Forward.localPosition.z; m_boltZ_lock = Point_Bolt_LockPoint.localPosition.z; m_boltZ_rear = Point_Bolt_Rear.localPosition.z; if (UsesAKSafetyLock) { m_boltZ_safetylock = Point_Bolt_SafetyLock.localPosition.z; } } public float GetBoltLerpBetweenLockAndFore() { return Mathf.InverseLerp(m_boltZ_lock, m_boltZ_forward, m_boltZ_current); } public float GetBoltLerpBetweenRearAndFore() { return Mathf.InverseLerp(m_boltZ_rear, m_boltZ_forward, m_boltZ_current); } public void LockBolt() { if (!m_isBoltLocked) { m_isBoltLocked = true; } } public void ReleaseBolt() { if (m_isBoltLocked) { if (!((FVRInteractiveObject)this).IsHeld) { ((FVRFireArm)Weapon).PlayAudioEvent((FirearmAudioEventType)8, 1f); } m_isBoltLocked = false; } } public void SnapToRear() { //IL_0020: Unknown result type (might be due to invalid IL or missing references) CurPos = BoltPos.Rear; m_boltZ_current = m_boltZ_rear; ((Component)this).transform.localPosition = Point_Bolt_Rear.localPosition; } public bool IsBoltLocked() { return m_isBoltLocked; } public override void UpdateInteraction(FVRViveHand hand) { //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //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_0044: 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_0060: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) ((FVRInteractiveObject)this).UpdateInteraction(hand); if (HasRotatingPart) { Vector3 val = ((Component)this).transform.position - base.m_hand.PalmTransform.position; Vector3 normalized = ((Vector3)(ref val)).normalized; if (Vector3.Dot(normalized, ((Component)this).transform.right) > 0f) { RotatingPart.localEulerAngles = RotatingPartLeftEulers; } else { RotatingPart.localEulerAngles = RotatingPartRightEulers; } } if (hand.IsInStreamlinedMode) { if (hand.Input.AXButtonDown && HasBoltCatchReleaseButton) { m_isBoltCatchHeldOnHandle = true; ((FVRInteractiveObject)this).ForceBreakInteraction(); } else if (hand.Input.BYButtonDown && HasBoltCatchReleaseButton) { m_isReleaseCatchHeldOnHandle = true; ((FVRInteractiveObject)this).ForceBreakInteraction(); } } else if (hand.Input.TouchpadDown) { if (Vector2.Angle(hand.Input.TouchpadAxes, Vector2.down) < 45f && HasBoltCatchReleaseButton) { m_isBoltCatchHeldOnHandle = true; ((FVRInteractiveObject)this).ForceBreakInteraction(); } else if (Vector2.Angle(hand.Input.TouchpadAxes, Vector2.up) < 45f && HasBoltCatchReleaseButton) { m_isReleaseCatchHeldOnHandle = true; ((FVRInteractiveObject)this).ForceBreakInteraction(); } } } public override void EndInteraction(FVRViveHand hand) { //IL_0014: Unknown result type (might be due to invalid IL or missing references) if (HasRotatingPart) { RotatingPart.localEulerAngles = RotatingPartNeutralEulers; } if (!m_isBoltLocked) { m_curBoltSpeed = Speed_Forward; } if (CurPos > BoltPos.Forward) { ((FVRFireArm)Weapon).PlayAudioEvent((FirearmAudioEventType)8, 1f); } if (m_isBoltCatchHeldOnHandle) { m_isBoltCatchHeldOnHandle = false; if (CurPos >= BoltPos.Locked) { LockBolt(); } } if (m_isReleaseCatchHeldOnHandle) { m_isReleaseCatchHeldOnHandle = false; ReleaseBolt(); } ((FVRInteractiveObject)this).EndInteraction(hand); } public void UpdateHandleHeldState(bool state, float lerp) { m_isHandleHeld = state; if (state) { m_handleLerp = lerp; } } public void ImpartFiringImpulse() { m_curBoltSpeed = Speed_Rearward; if (CurPos == BoltPos.Forward) { m_isBarrelReciprocating = true; } } public bool IsBoltForwardOfSafetyLock() { return m_boltZ_current > m_boltZ_safetylock; } public void UpdateBolt() { //IL_0030: 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_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_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0260: Unknown result type (might be due to invalid IL or missing references) //IL_0265: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_0288: Unknown result type (might be due to invalid IL or missing references) //IL_032c: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c4: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_0461: Unknown result type (might be due to invalid IL or missing references) //IL_0467: Unknown result type (might be due to invalid IL or missing references) //IL_046e: Unknown result type (might be due to invalid IL or missing references) //IL_0441: Unknown result type (might be due to invalid IL or missing references) //IL_03ff: Unknown result type (might be due to invalid IL or missing references) //IL_034d: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Unknown result type (might be due to invalid IL or missing references) //IL_03bb: Unknown result type (might be due to invalid IL or missing references) bool flag = false; if (((FVRInteractiveObject)this).IsHeld || m_isHandleHeld) { flag = true; } if (((FVRInteractiveObject)this).IsHeld) { Vector3 closestValidPoint = ((FVRInteractiveObject)this).GetClosestValidPoint(Point_Bolt_Forward.position, Point_Bolt_Rear.position, ((HandInput)(ref base.m_hand.Input)).Pos); m_boltZ_heldTarget = ((Component)Weapon).transform.InverseTransformPoint(closestValidPoint).z; } else if (m_isHandleHeld) { m_boltZ_heldTarget = Mathf.Lerp(m_boltZ_forward, m_boltZ_rear, m_handleLerp); } Vector2 val = default(Vector2); ((Vector2)(ref val))..ctor(m_boltZ_rear,
HK_437.dll
Decompiled 3 days agousing System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using OtherLoader; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace WickedBadger.HK_437; [BepInPlugin("WickedBadger.HK_437", "HK_437", "1.0.0")] [BepInProcess("h3vr.exe")] [Description("Built with MeatKit")] [BepInDependency("h3vr.otherloader", "1.3.0")] public class HK_437Plugin : BaseUnityPlugin { private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; LoadAssets(); } private void LoadAssets() { Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "WickedBadger.HK_437"); OtherLoader.RegisterDirectLoad(BasePath, "WickedBadger.HK_437", "", "", "h3vr.wickedbadger.hk437", ""); } }
TheColdWarFamily.dll
Decompiled 3 days agousing System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using FistVR; using HarmonyLib; using OtherLoader; using UnityEngine; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] public class FlickerLight : MonoBehaviour { public float MinLightIntensity = 0.5f; public float MaxLightIntensity = 2.3f; public float AccelerateTime = 0.15f; private float _targetIntensity = 1f; private float _lastIntensity = 1f; private float _timePassed = 0f; private Light _lt; private const double Tolerance = 0.0001; private void Start() { _lt = ((Component)this).GetComponent<Light>(); _lastIntensity = _lt.intensity; FixedUpdate(); } private void FixedUpdate() { _timePassed += Time.deltaTime; _lt.intensity = Mathf.Lerp(_lastIntensity, _targetIntensity, _timePassed / AccelerateTime); if ((double)Mathf.Abs(_lt.intensity - _targetIntensity) < 0.0001) { _lastIntensity = _lt.intensity; _targetIntensity = Random.Range(MinLightIntensity, MaxLightIntensity); _timePassed = 0f; } } } [RequireComponent(typeof(MeshRenderer))] public class UVOffset : MonoBehaviour { public float scrollSpeed = 0.5f; public bool scrollY = true; private MeshRenderer renderer; private void Start() { renderer = ((Component)this).GetComponent<MeshRenderer>(); } private void Update() { //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) float num = Time.time * scrollSpeed; ((Renderer)renderer).material.SetTextureOffset("_MainTex", (!scrollY) ? new Vector2(0f, num) : new Vector2(num, 0f)); } } namespace Storymods.TheColdWarFamily; [BepInPlugin("Storymods.TheColdWarFamily", "TheColdWarFamily", "1.0.0")] [BepInProcess("h3vr.exe")] [Description("Built with MeatKit")] [BepInDependency("h3vr.otherloader", "1.3.0")] public class TheColdWarFamilyPlugin : BaseUnityPlugin { private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; LoadAssets(); } private void LoadAssets() { Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "Storymods.TheColdWarFamily"); OtherLoader.RegisterDirectLoad(BasePath, "Storymods.TheColdWarFamily", "", "", "storymods_the cold war", ""); } } public class Cabernade : MonoBehaviour { public GameObject caberUnexploded; public GameObject caberExploded; public bool isCaberKablooey; public void OnCollisionEnter(Collision col) { if (!isCaberKablooey) { CaberBlowUp(); } } public void CaberBlowUp() { caberUnexploded.SetActive(false); caberExploded.SetActive(true); isCaberKablooey = true; } } public class SosigRangeEditor : MonoBehaviour { public GameObject sosigParent; public float modifierNumber = 1f; public bool doesHavePerfectFOV = false; private void Start() { sosigParent = ((Component)((Component)this).transform.root).gameObject; Sosig component = ((Component)((Component)this).transform).GetComponent<Sosig>(); component.MaxSightRange *= modifierNumber; if (doesHavePerfectFOV) { component.MaxFOV = 360f; } else { component.MaxFOV *= modifierNumber; } } } public class CuttableMesh { private MeshRenderer inputMeshRenderer; private bool hasUvs; private bool hasUv1s; private bool hasColours; private List<CuttableSubMesh> subMeshes; public CuttableMesh(Mesh inputMesh) { Init(inputMesh, ((Object)inputMesh).name); } public CuttableMesh(MeshRenderer input) { inputMeshRenderer = input; MeshFilter component = ((Component)input).GetComponent<MeshFilter>(); Mesh sharedMesh = component.sharedMesh; Init(sharedMesh, ((Object)input).name); } public CuttableMesh(CuttableMesh inputMesh, List<CuttableSubMesh> newSubMeshes) { inputMeshRenderer = inputMesh.inputMeshRenderer; hasUvs = inputMesh.hasUvs; hasUv1s = inputMesh.hasUv1s; hasColours = inputMesh.hasColours; subMeshes = new List<CuttableSubMesh>(); subMeshes.AddRange(newSubMeshes); } private void Init(Mesh inputMesh, string debugName) { subMeshes = new List<CuttableSubMesh>(); if (inputMesh.isReadable) { Vector3[] vertices = inputMesh.vertices; Vector3[] normals = inputMesh.normals; Vector2[] uv = inputMesh.uv; Vector2[] uv2 = inputMesh.uv2; Color32[] colors = inputMesh.colors32; hasUvs = uv != null && uv.Length > 0; hasUv1s = uv2 != null && uv2.Length > 0; hasColours = colors != null && colors.Length > 0; for (int i = 0; i < inputMesh.subMeshCount; i++) { int[] indices = inputMesh.GetIndices(i); CuttableSubMesh item = new CuttableSubMesh(indices, vertices, normals, colors, uv, uv2); subMeshes.Add(item); } } else { Debug.LogError((object)("CuttableMesh's input mesh is not readable: " + debugName), (Object)(object)inputMesh); } } public void Add(CuttableMesh other) { if (subMeshes.Count != other.subMeshes.Count) { throw new Exception("Mismatched submesh count"); } for (int i = 0; i < subMeshes.Count; i++) { subMeshes[i].Add(other.subMeshes[i]); } } public int NumSubMeshes() { return subMeshes.Count; } public bool HasUvs() { return hasUvs; } public bool HasColours() { return hasColours; } public List<CuttableSubMesh> GetSubMeshes() { return subMeshes; } public CuttableSubMesh GetSubMesh(int index) { return subMeshes[index]; } public Transform GetTransform() { if ((Object)(object)inputMeshRenderer != (Object)null) { return ((Component)inputMeshRenderer).transform; } return null; } public MeshRenderer ConvertToRenderer(string newObjectName) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Expected O, but got Unknown //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) Mesh val = CreateMesh(); if (val.vertexCount == 0) { return null; } GameObject val2 = new GameObject(newObjectName); val2.transform.SetParent(((Component)inputMeshRenderer).transform); val2.transform.localPosition = Vector3.zero; val2.transform.localRotation = Quaternion.identity; val2.transform.localScale = Vector3.one; MeshFilter val3 = val2.AddComponent<MeshFilter>(); val3.mesh = val; MeshRenderer val4 = val2.AddComponent<MeshRenderer>(); ((Renderer)val4).shadowCastingMode = ((Renderer)inputMeshRenderer).shadowCastingMode; ((Renderer)val4).reflectionProbeUsage = ((Renderer)inputMeshRenderer).reflectionProbeUsage; ((Renderer)val4).lightProbeUsage = ((Renderer)inputMeshRenderer).lightProbeUsage; ((Renderer)val4).sharedMaterials = ((Renderer)inputMeshRenderer).sharedMaterials; return val4; } public Mesh CreateMesh() { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown Mesh val = new Mesh(); int num = 0; for (int i = 0; i < subMeshes.Count; i++) { num += subMeshes[i].NumIndices(); } List<Vector3> list = new List<Vector3>(); List<Vector3> list2 = new List<Vector3>(); List<Color32> list3 = ((!hasColours) ? null : new List<Color32>()); List<Vector2> list4 = ((!hasUvs) ? null : new List<Vector2>()); List<Vector2> list5 = ((!hasUv1s) ? null : new List<Vector2>()); List<int> list6 = new List<int>(); foreach (CuttableSubMesh subMesh in subMeshes) { list6.Add(list.Count); subMesh.AddTo(list, list2, list3, list4, list5); } val.vertices = list.ToArray(); val.normals = list2.ToArray(); val.colors32 = ((!hasColours) ? null : list3.ToArray()); val.uv = ((!hasUvs) ? null : list4.ToArray()); val.uv2 = ((!hasUv1s) ? null : list5.ToArray()); val.subMeshCount = subMeshes.Count; for (int j = 0; j < subMeshes.Count; j++) { CuttableSubMesh cuttableSubMesh = subMeshes[j]; int num2 = list6[j]; int[] array = cuttableSubMesh.GenIndices(); for (int k = 0; k < array.Length; k++) { array[k] += num2; } val.SetTriangles(array, j, true); } return val; } } public class CuttableSubMesh { private List<Vector3> vertices; private List<Vector3> normals; private List<Color32> colours; private List<Vector2> uvs; private List<Vector2> uv1s; public CuttableSubMesh(bool hasNormals, bool hasColours, bool hasUvs, bool hasUv1) { vertices = new List<Vector3>(); if (hasNormals) { normals = new List<Vector3>(); } if (hasColours) { colours = new List<Color32>(); } if (hasUvs) { uvs = new List<Vector2>(); } if (hasUv1) { uv1s = new List<Vector2>(); } } public CuttableSubMesh(int[] indices, Vector3[] inputVertices, Vector3[] inputNormals, Color32[] inputColours, Vector2[] inputUvs, Vector2[] inputUv1) { //IL_0099: 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_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0101: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) vertices = new List<Vector3>(); if (inputNormals != null && inputNormals.Length > 0) { normals = new List<Vector3>(); } if (inputColours != null && inputColours.Length > 0) { colours = new List<Color32>(); } if (inputUvs != null && inputUvs.Length > 0) { uvs = new List<Vector2>(); } if (inputUv1 != null && inputUv1.Length > 0) { uv1s = new List<Vector2>(); } foreach (int num in indices) { vertices.Add(inputVertices[num]); if (normals != null) { normals.Add(inputNormals[num]); } if (colours != null) { colours.Add(inputColours[num]); } if (uvs != null) { uvs.Add(inputUvs[num]); } if (uv1s != null) { uv1s.Add(inputUv1[num]); } } } public void Add(CuttableSubMesh other) { for (int i = 0; i < other.vertices.Count; i++) { CopyVertex(i, other); } } public int NumVertices() { return vertices.Count; } public Vector3 GetVertex(int index) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) return vertices[index]; } public bool HasNormals() { return normals != null; } public bool HasColours() { return colours != null; } public bool HasUvs() { return uvs != null; } public bool HasUv1() { return uv1s != null; } public void CopyVertex(int srcIndex, CuttableSubMesh srcMesh) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_0096: Unknown result type (might be due to invalid IL or missing references) vertices.Add(srcMesh.vertices[srcIndex]); if (normals != null) { normals.Add(srcMesh.normals[srcIndex]); } if (colours != null) { colours.Add(srcMesh.colours[srcIndex]); } if (uvs != null) { uvs.Add(srcMesh.uvs[srcIndex]); } if (uv1s != null) { uv1s.Add(srcMesh.uv1s[srcIndex]); } } public void AddInterpolatedVertex(int i0, int i1, float weight, CuttableSubMesh srcMesh) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: 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) //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) //IL_003f: 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_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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_008a: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Unknown result type (might be due to invalid IL or missing references) Vector3 vertex = srcMesh.GetVertex(i0); Vector3 vertex2 = srcMesh.GetVertex(i1); vertices.Add(Vector3.Lerp(vertex, vertex2, weight)); if (normals != null) { List<Vector3> list = normals; Vector3 val = Vector3.Lerp(srcMesh.normals[i0], srcMesh.normals[i1], weight); list.Add(((Vector3)(ref val)).normalized); } if (colours != null) { colours.Add(Color32.Lerp(srcMesh.colours[i0], srcMesh.colours[i1], weight)); } if (uvs != null) { uvs.Add(Vector2.Lerp(srcMesh.uvs[i0], srcMesh.uvs[i1], weight)); } if (uv1s != null) { uv1s.Add(Vector2.Lerp(srcMesh.uv1s[i0], srcMesh.uv1s[i1], weight)); } } public void AddTo(List<Vector3> destVertices, List<Vector3> destNormals, List<Color32> destColours, List<Vector2> destUvs, List<Vector2> destUv1s) { destVertices.AddRange(vertices); if (normals != null) { destNormals.AddRange(normals); } if (colours != null) { destColours.AddRange(colours); } if (uvs != null) { destUvs.AddRange(uvs); } if (uv1s != null) { destUv1s.AddRange(uv1s); } } public int NumIndices() { return vertices.Count; } public int[] GenIndices() { int[] array = new int[vertices.Count]; for (int i = 0; i < array.Length; i++) { array[i] = i; } return array; } } public enum VertexClassification { Front = 1, Back = 2, OnPlane = 4 } public class MeshCutter { private CuttableMesh inputMesh; private List<CuttableSubMesh> outputFrontSubMeshes; private List<CuttableSubMesh> outputBackSubMeshes; public void Cut(CuttableMesh input, Plane worldCutPlane) { //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0038: 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_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_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_005a: 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) inputMesh = input; outputFrontSubMeshes = new List<CuttableSubMesh>(); outputBackSubMeshes = new List<CuttableSubMesh>(); Transform transform = inputMesh.GetTransform(); Plane cutPlane = default(Plane); if ((Object)(object)transform != (Object)null) { Vector3 val = transform.InverseTransformPoint(ClosestPointOnPlane(worldCutPlane, Vector3.zero)); Vector3 val2 = transform.InverseTransformDirection(((Plane)(ref worldCutPlane)).normal); ((Plane)(ref cutPlane))..ctor(val2, val); } else { cutPlane = worldCutPlane; } foreach (CuttableSubMesh subMesh in input.GetSubMeshes()) { Cut(subMesh, cutPlane); } } private static Vector3 ClosestPointOnPlane(Plane plane, Vector3 point) { //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0018: 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_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) float distanceToPoint = ((Plane)(ref plane)).GetDistanceToPoint(point); if (((Plane)(ref plane)).GetSide(point)) { return point - ((Plane)(ref plane)).normal * distanceToPoint; } return point + ((Plane)(ref plane)).normal * distanceToPoint; } public CuttableMesh GetFrontOutput() { return new CuttableMesh(inputMesh, outputFrontSubMeshes); } public CuttableMesh GetBackOutput() { return new CuttableMesh(inputMesh, outputBackSubMeshes); } private void Cut(CuttableSubMesh inputSubMesh, Plane cutPlane) { //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0076: 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_0081: 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_0121: Unknown result type (might be due to invalid IL or missing references) //IL_018e: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c0: Unknown result type (might be due to invalid IL or missing references) //IL_02c2: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02c9: Unknown result type (might be due to invalid IL or missing references) //IL_02cb: Unknown result type (might be due to invalid IL or missing references) //IL_02cd: Unknown result type (might be due to invalid IL or missing references) //IL_02d2: Unknown result type (might be due to invalid IL or missing references) //IL_02d4: Unknown result type (might be due to invalid IL or missing references) //IL_02d6: Unknown result type (might be due to invalid IL or missing references) //IL_02d8: 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_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01af: Unknown result type (might be due to invalid IL or missing references) //IL_021d: Unknown result type (might be due to invalid IL or missing references) //IL_0204: Unknown result type (might be due to invalid IL or missing references) //IL_029d: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0248: Unknown result type (might be due to invalid IL or missing references) bool hasNormals = inputSubMesh.HasNormals(); bool hasColours = inputSubMesh.HasColours(); bool hasUvs = inputSubMesh.HasUvs(); bool hasUv = inputSubMesh.HasUv1(); CuttableSubMesh cuttableSubMesh = new CuttableSubMesh(hasNormals, hasColours, hasUvs, hasUv); CuttableSubMesh cuttableSubMesh2 = new CuttableSubMesh(hasNormals, hasColours, hasUvs, hasUv); for (int i = 0; i < inputSubMesh.NumVertices(); i += 3) { int num = i; int num2 = i + 1; int num3 = i + 2; Vector3 vertex = inputSubMesh.GetVertex(num); Vector3 vertex2 = inputSubMesh.GetVertex(num2); Vector3 vertex3 = inputSubMesh.GetVertex(num3); VertexClassification vertexClassification = Classify(vertex, cutPlane); VertexClassification vertexClassification2 = Classify(vertex2, cutPlane); VertexClassification vertexClassification3 = Classify(vertex3, cutPlane); int numFront = 0; int numBehind = 0; CountSides(vertexClassification, ref numFront, ref numBehind); CountSides(vertexClassification2, ref numFront, ref numBehind); CountSides(vertexClassification3, ref numFront, ref numBehind); if (numFront > 0 && numBehind == 0) { KeepTriangle(num, num2, num3, inputSubMesh, cuttableSubMesh); } else if (numFront == 0 && numBehind > 0) { KeepTriangle(num, num2, num3, inputSubMesh, cuttableSubMesh2); } else if (numFront == 2 && numBehind == 1) { if (vertexClassification == VertexClassification.Back) { SplitA(num, num2, num3, inputSubMesh, cutPlane, cuttableSubMesh2, cuttableSubMesh); } else if (vertexClassification2 == VertexClassification.Back) { SplitA(num2, num3, num, inputSubMesh, cutPlane, cuttableSubMesh2, cuttableSubMesh); } else { SplitA(num3, num, num2, inputSubMesh, cutPlane, cuttableSubMesh2, cuttableSubMesh); } } else if (numFront == 1 && numBehind == 2) { if (vertexClassification == VertexClassification.Front) { SplitA(num, num2, num3, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); } else if (vertexClassification2 == VertexClassification.Front) { SplitA(num2, num3, num, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); } else { SplitA(num3, num, num2, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); } } else if (numFront == 1 && numBehind == 1) { if (vertexClassification == VertexClassification.OnPlane) { if (vertexClassification3 == VertexClassification.Front) { SplitB(num3, num, num2, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); } else { SplitBFlipped(num2, num3, num, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); } continue; } switch (vertexClassification2) { case VertexClassification.OnPlane: if (vertexClassification == VertexClassification.Front) { SplitB(num, num2, num3, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); } else { SplitBFlipped(num3, num, num2, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); } break; case VertexClassification.Front: SplitB(num2, num3, num, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); break; default: SplitBFlipped(num, num2, num3, inputSubMesh, cutPlane, cuttableSubMesh, cuttableSubMesh2); break; } } else if (numFront == 0 && numBehind == 0) { Vector3 val = vertex2 - vertex; Vector3 val2 = vertex3 - vertex; Vector3 val3 = Vector3.Cross(val, val2); if (Vector3.Dot(val3, ((Plane)(ref cutPlane)).normal) > 0f) { KeepTriangle(num, num2, num3, inputSubMesh, cuttableSubMesh2); } else { KeepTriangle(num, num2, num3, inputSubMesh, cuttableSubMesh); } } } outputFrontSubMeshes.Add(cuttableSubMesh); outputBackSubMeshes.Add(cuttableSubMesh2); } private VertexClassification Classify(Vector3 vertex, Plane cutPlane) { //IL_0022: Unknown result type (might be due to invalid IL or missing references) Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(vertex.x, vertex.y, vertex.z); float distanceToPoint = ((Plane)(ref cutPlane)).GetDistanceToPoint(val); double num = 9.999999747378752E-06; if ((double)distanceToPoint > 0.0 - num && (double)distanceToPoint < num) { return VertexClassification.OnPlane; } if (distanceToPoint > 0f) { return VertexClassification.Front; } return VertexClassification.Back; } private void CountSides(VertexClassification c, ref int numFront, ref int numBehind) { switch (c) { case VertexClassification.Front: numFront++; break; case VertexClassification.Back: numBehind++; break; } } private void KeepTriangle(int i0, int i1, int i2, CuttableSubMesh inputSubMesh, CuttableSubMesh destSubMesh) { destSubMesh.CopyVertex(i0, inputSubMesh); destSubMesh.CopyVertex(i1, inputSubMesh); destSubMesh.CopyVertex(i2, inputSubMesh); } private void SplitA(int i0, int i1, int i2, CuttableSubMesh inputSubMesh, Plane cutPlane, CuttableSubMesh frontSubMesh, CuttableSubMesh backSubMesh) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: 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) //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_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_001f: 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_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) Vector3 vertex = inputSubMesh.GetVertex(i0); Vector3 vertex2 = inputSubMesh.GetVertex(i1); Vector3 vertex3 = inputSubMesh.GetVertex(i2); CalcIntersection(vertex, vertex2, cutPlane, out var weight); CalcIntersection(vertex3, vertex, cutPlane, out var weight2); frontSubMesh.CopyVertex(i0, inputSubMesh); frontSubMesh.AddInterpolatedVertex(i0, i1, weight, inputSubMesh); frontSubMesh.AddInterpolatedVertex(i2, i0, weight2, inputSubMesh); backSubMesh.AddInterpolatedVertex(i0, i1, weight, inputSubMesh); backSubMesh.CopyVertex(i1, inputSubMesh); backSubMesh.CopyVertex(i2, inputSubMesh); backSubMesh.CopyVertex(i2, inputSubMesh); backSubMesh.AddInterpolatedVertex(i2, i0, weight2, inputSubMesh); backSubMesh.AddInterpolatedVertex(i0, i1, weight, inputSubMesh); } private void SplitB(int i0, int i1, int i2, CuttableSubMesh inputSubMesh, Plane cutPlane, CuttableSubMesh frontSubMesh, CuttableSubMesh backSubMesh) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: 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) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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) Vector3 vertex = inputSubMesh.GetVertex(i0); Vector3 vertex2 = inputSubMesh.GetVertex(i2); CalcIntersection(vertex2, vertex, cutPlane, out var weight); frontSubMesh.CopyVertex(i0, inputSubMesh); frontSubMesh.CopyVertex(i1, inputSubMesh); frontSubMesh.AddInterpolatedVertex(i2, i0, weight, inputSubMesh); backSubMesh.CopyVertex(i1, inputSubMesh); backSubMesh.CopyVertex(i2, inputSubMesh); backSubMesh.AddInterpolatedVertex(i2, i0, weight, inputSubMesh); } private void SplitBFlipped(int i0, int i1, int i2, CuttableSubMesh inputSubMesh, Plane cutPlane, CuttableSubMesh frontSubMesh, CuttableSubMesh backSubMesh) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: 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) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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) Vector3 vertex = inputSubMesh.GetVertex(i0); Vector3 vertex2 = inputSubMesh.GetVertex(i1); CalcIntersection(vertex, vertex2, cutPlane, out var weight); frontSubMesh.CopyVertex(i0, inputSubMesh); frontSubMesh.AddInterpolatedVertex(i0, i1, weight, inputSubMesh); frontSubMesh.CopyVertex(i2, inputSubMesh); backSubMesh.CopyVertex(i1, inputSubMesh); backSubMesh.CopyVertex(i2, inputSubMesh); backSubMesh.AddInterpolatedVertex(i0, i1, weight, inputSubMesh); } private Vector3 CalcIntersection(Vector3 v0, Vector3 v1, Plane plane, out float weight) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //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_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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_002d: 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_003a: 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_004c: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) Vector3 val = v1 - v0; float magnitude = ((Vector3)(ref val)).magnitude; Ray val2 = default(Ray); ((Ray)(ref val2))..ctor(v0, val / magnitude); float num = default(float); ((Plane)(ref plane)).Raycast(val2, ref num); Vector3 result = ((Ray)(ref val2)).origin + ((Ray)(ref val2)).direction * num; weight = num / magnitude; return result; } }
TF2_Sentry.dll
Decompiled 3 days ago
The result has been truncated due to the large size, download it to view full contents!
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using CustomTargets; using FistVR; using H3VRUtils.MonoScripts.VisualModifiers; using HarmonyLib; using JerryComponent; using OpenScripts2; using OtherLoader; using Popcron; using ToxicGasFramework; using UnityEditor; using UnityEngine; using UnityEngine.AI; using UnityEngine.PostProcessing; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.UI; using visSpace; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace JerryComponent { public class Scale16muzzle : MonoBehaviour { public Suppressor muzzledevice; public GameObject muzzleinterface; public bool scaled = false; public bool magscaled = false; public bool clipscaled = false; public FVRFireArm firearm; public Vector3 scaleoriginal; public Vector3 magscaleoriginal; public Vector3 clipscaleoriginal; public FVRPhysicalObjectSize size; private void Start() { } private void Update() { //IL_009f: 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_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0110: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0238: Unknown result type (might be due to invalid IL or missing references) //IL_028f: Unknown result type (might be due to invalid IL or missing references) //IL_02b7: Unknown result type (might be due to invalid IL or missing references) //IL_0273: Unknown result type (might be due to invalid IL or missing references) //IL_0278: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)firearm == (Object)null || (Object)(object)((FVRFireArmAttachment)muzzledevice).curMount == (Object)null || (Object)(object)((FVRFireArmAttachment)muzzledevice).curMount.Parent == (Object)null || (Object)(object)firearm.Magazine == (Object)null || (Object)(object)firearm.Clip == (Object)null) { } if ((Object)(object)firearm != (Object)null && !scaled) { scaleoriginal = ((Component)firearm).gameObject.transform.localScale; size = ((FVRPhysicalObject)firearm).Size; scaled = true; } if ((Object)(object)firearm != (Object)null && !magscaled && (Object)(object)firearm.Magazine != (Object)null) { magscaleoriginal = ((Component)firearm.Magazine).gameObject.transform.localScale; magscaled = true; } if ((Object)(object)firearm != (Object)null && !clipscaled && (Object)(object)firearm.Clip != (Object)null) { clipscaleoriginal = ((Component)firearm.Clip).gameObject.transform.localScale; clipscaled = true; } if ((Object)(object)((FVRFireArmAttachment)muzzledevice).curMount != (Object)null && ((FVRFireArmAttachment)muzzledevice).curMount.AttachmentsList.Count > 0) { firearm = ((Component)((FVRFireArmAttachment)muzzledevice).curMount.Parent).GetComponent<FVRFireArm>(); if ((Object)(object)firearm.Magazine == (Object)null) { magscaled = false; } if ((Object)(object)firearm.Clip == (Object)null) { clipscaled = false; } if (1f - 5f * (muzzledevice.CatchRot / 360f) / 6f <= 0f) { ((FVRPhysicalObject)firearm).Size = (FVRPhysicalObjectSize)0; } if (1f - 5f * (muzzledevice.CatchRot / 360f) / 6f > 0f) { ((FVRPhysicalObject)firearm).Size = size; } ((Component)firearm).gameObject.transform.localScale = scaleoriginal * (1f - 5f * (muzzledevice.CatchRot / 360f) / 6f); } if ((Object)(object)((FVRFireArmAttachment)muzzledevice).curMount != (Object)null && ((FVRFireArmAttachment)muzzledevice).curMount.AttachmentsList.Count < 1) { firearm = null; scaled = false; } } } } public class BottleSmash : MonoBehaviour { [ColorUsage(true, true, 0f, 8f, 0.125f, 3f)] public Color color; [SerializeField] [HideInInspector] private Color cachedColor; [SerializeField] [HideInInspector] private List<ColorBase> registeredComponents; public GameObject Cork; public GameObject Liquid; public GameObject Glass; public GameObject Glass_Shattered; public GameObject Label; public float DespawnTime = 5f; public ParticleSystem Effect; public GameObject Splat; public LayerMask SplatMask; public float maxSplatDistance = 5f; public float shatterAtSpeed = 2f; public bool allowShattering = true; public bool onlyAllowShatterOnCollision = true; [SerializeField] [HideInInspector] private Vector3 previousPos; [SerializeField] [HideInInspector] private Vector3 previousVelocity; [SerializeField] [HideInInspector] private Vector3 randomRot; [SerializeField] [HideInInspector] private float _lastHitSpeed = 0f; private bool broken = false; private float collidedRecently = -1f; private void Start() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) previousPos = ((Component)this).transform.position; } public void RandomizeColor() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) color = new Color((float)Random.Range(0, 1), (float)Random.Range(0, 1), (float)Random.Range(0, 1), 1f); } private void OnCollisionEnter(Collision collision) { //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) Vector3 impulse = collision.impulse; _lastHitSpeed = ((Vector3)(ref impulse)).magnitude; if (((Component)collision.transform).tag != "Liquid") { collidedRecently = 0.2f; } } public void AttemptCollision(Collision col) { OnCollisionEnter(col); } public void RegisterColorBase(ColorBase cb) { registeredComponents.Add(cb); } public void ChangedColor() { //IL_0002: 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_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) if (!(cachedColor != color)) { return; } cachedColor = color; foreach (ColorBase registeredComponent in registeredComponents) { registeredComponent.Unify(); } } public Vector3 GetRandomRotation() { //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) return randomRot; } public void RandomRotation() { //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_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Random.insideUnitSphere + Vector3.forward; randomRot = ((Vector3)(ref val)).normalized; } public void Smash() { //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_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_0160: Unknown result type (might be due to invalid IL or missing references) //IL_017d: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) broken = true; if ((Object)(object)Cork != (Object)null) { Cork.transform.parent = null; Cork.GetComponent<Collider>().enabled = true; Cork.GetComponent<Rigidbody>().isKinematic = false; Object.Destroy((Object)(object)Cork.gameObject, DespawnTime); } if ((Object)(object)Liquid != (Object)null) { float num = 0f; Object.Destroy((Object)(object)Liquid.gameObject, num); } if ((Object)(object)Effect != (Object)null) { Effect.Play(); GameObject gameObject = ((Component)Effect).gameObject; MainModule main = Effect.main; MinMaxCurve startLifetime = ((MainModule)(ref main)).startLifetime; Object.Destroy((Object)(object)gameObject, ((MinMaxCurve)(ref startLifetime)).constantMax); } if ((Object)(object)Label != (Object)null) { Object.Destroy((Object)(object)Label.gameObject); } if ((Object)(object)Glass != (Object)null) { Object.Destroy((Object)(object)Glass.gameObject); } if ((Object)(object)Glass_Shattered != (Object)null) { Glass_Shattered.SetActive(true); Glass_Shattered.transform.parent = null; Object.Destroy((Object)(object)Glass_Shattered, DespawnTime); } RaycastHit val = default(RaycastHit); if ((Object)(object)Splat != (Object)null && Physics.Raycast(((Component)this).transform.position, Vector3.down, ref val, maxSplatDistance, LayerMask.op_Implicit(SplatMask))) { GameObject val2 = Object.Instantiate<GameObject>(Splat); val2.transform.position = ((RaycastHit)(ref val)).point; } Object.Destroy((Object)(object)((Component)((Component)this).transform).gameObject, DespawnTime); } private void FixedUpdate() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: 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_00bd: 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_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: 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_0076: Unknown result type (might be due to invalid IL or missing references) ChangedColor(); collidedRecently -= Time.deltaTime; Vector3 val = (((Component)this).transform.position - previousPos) / Time.fixedDeltaTime; if (((onlyAllowShatterOnCollision && collidedRecently >= 0f) | !onlyAllowShatterOnCollision) && allowShattering && (Vector3.Distance(val, previousVelocity) > shatterAtSpeed || _lastHitSpeed > shatterAtSpeed) && !broken) { Smash(); } _lastHitSpeed = 0f; previousVelocity = val; previousPos = ((Component)this).transform.position; } } public class ColorBase : MonoBehaviour { protected virtual void RegisterWithController() { } public virtual void Unify() { } } public class LiquidColor : ColorBase { public BottleSmash bottleSmash; private LiquidVolumeAnimator lva; public bool UpdateSurfaceColor = true; public bool UpdateColor = true; public bool UpdateSurfaceEmission = true; public bool UpdateEmission = true; private void Start() { lva = ((Component)this).GetComponent<LiquidVolumeAnimator>(); if ((Object)(object)bottleSmash == (Object)null) { bottleSmash = ((Component)this).GetComponentInParent<BottleSmash>(); } RegisterWithController(); } protected override void RegisterWithController() { bottleSmash.RegisterColorBase(this); } public override void Unify() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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) if (UpdateColor) { lva.mats[0].SetColor("_Color", bottleSmash.color); } if (UpdateEmission) { lva.mats[0].SetColor("_EmissionColor", bottleSmash.color); } if (UpdateSurfaceColor) { lva.mats[0].SetColor("_SColor", bottleSmash.color); } if (UpdateSurfaceEmission) { lva.mats[0].SetColor("_SEmissionColor", bottleSmash.color); } } } public class PS_Color : ColorBase { public BottleSmash bottleSmash; private ParticleSystem ps; private void Start() { ps = ((Component)this).GetComponent<ParticleSystem>(); if ((Object)(object)bottleSmash == (Object)null) { bottleSmash = ((Component)this).GetComponentInParent<BottleSmash>(); } RegisterWithController(); } protected override void RegisterWithController() { bottleSmash.RegisterColorBase(this); } public override void Unify() { UpdateValues(); } public void UpdateValues() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) MainModule main = ps.main; ((MainModule)(ref main)).startColor = new MinMaxGradient(bottleSmash.color); } } public class ParticleColor : ColorBase { public enum ColorID { _TintColor, _Color } public BottleSmash bottleSmash; private ParticleSystemRenderer ps; public ColorID colorType; private void Start() { ps = ((Component)this).GetComponent<ParticleSystemRenderer>(); if ((Object)(object)bottleSmash == (Object)null) { bottleSmash = ((Component)this).GetComponentInParent<BottleSmash>(); } RegisterWithController(); } protected override void RegisterWithController() { bottleSmash.RegisterColorBase(this); } public override void Unify() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) switch (colorType) { case ColorID._TintColor: ((Renderer)ps).material.SetColor("_TintColor", bottleSmash.color); break; case ColorID._Color: ((Renderer)ps).material.SetColor("_Color", bottleSmash.color); break; } } } public class ResetColors : MonoBehaviour { public LiquidVolumeAnimator LVA; public float timeout = 5f; private float tReset; public BottleSmash BS; public Color Color1; public Color Color2; private void Start() { tReset = timeout; } private void Update() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_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) timeout -= Time.deltaTime; if (timeout <= 0f) { if (BS.color == Color1) { BS.color = Color2; } else { BS.color = Color1; } LVA.level = 1f; timeout = tReset; } } } public class DemoRotation : MonoBehaviour { private BottleSmash BS; public float rotSpeed = 30f; private void Start() { BS = ((Component)this).GetComponent<BottleSmash>(); } private void Update() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0015: 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_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) //IL_0033: 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_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_00c4: Unknown result type (might be due to invalid IL or missing references) Vector3 randomRotation = BS.GetRandomRotation(); Vector3 normalized = ((Vector3)(ref randomRotation)).normalized; if (normalized != Vector3.zero) { Vector3 randomRotation2 = BS.GetRandomRotation(); Vector3 normalized2 = ((Vector3)(ref randomRotation2)).normalized; Vector3 val = ((Component)BS).transform.up + Vector3.up; if (Vector3.Dot(normalized2, ((Vector3)(ref val)).normalized) < 0.98f) { Transform transform = ((Component)BS).transform; Quaternion rotation = ((Component)BS).transform.rotation; Vector3 randomRotation3 = BS.GetRandomRotation(); Vector3 val2 = ((Component)BS).transform.up + Vector3.up; transform.rotation = Quaternion.RotateTowards(rotation, Quaternion.LookRotation(randomRotation3, ((Vector3)(ref val2)).normalized), rotSpeed * Time.deltaTime); } } } } public class ForceTest : MonoBehaviour { public bool AddForce = false; public Vector3 force; private LiquidVolumeAnimator lva; private void Start() { lva = ((Component)this).GetComponent<LiquidVolumeAnimator>(); } private void Update() { //IL_0014: Unknown result type (might be due to invalid IL or missing references) if (AddForce) { lva.AddForce(force); AddForce = false; } } } public class LiquidAbsorption : MonoBehaviour { public Color currentColor; public BottleSmash smashScript; public float particleValue = 0.02f; public LiquidVolumeAnimator LVA; private void Start() { if ((Object)(object)LVA == (Object)null) { LVA = ((Component)this).GetComponent<LiquidVolumeAnimator>(); } } private void OnParticleCollision(GameObject other) { //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: 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_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0133: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)other.transform.parent == (Object)(object)((Component)this).transform.parent) { return; } bool flag = false; if ((Object)(object)smashScript.Cork == (Object)null) { flag = true; } else if (!smashScript.Cork.activeSelf) { flag = true; } else if (!smashScript.Cork.GetComponent<Rigidbody>().isKinematic) { flag = true; } if (!flag) { return; } currentColor = smashScript.color; if (LVA.level < 1f - particleValue) { Color color = other.GetComponentInParent<BottleSmash>().color; if (LVA.level <= 1.4E-44f) { currentColor = color; } else { currentColor = Color.Lerp(currentColor, color, particleValue / LVA.level); } LVA.level += particleValue; smashScript.color = currentColor; } } private void Update() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) currentColor = smashScript.color; } } public class LiquidAbsorptionV2 : MonoBehaviour { public Color currentColor; public BottleSmash smashScript; public MeshLiquidEmission LiquidEmission; public LiquidVolumeAnimator LVA; private float particleValue = 1f; private void Start() { if ((Object)(object)LVA == (Object)null) { LVA = ((Component)this).GetComponent<LiquidVolumeAnimator>(); } } private void OnParticleCollision(GameObject other) { //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_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_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_00f1: 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_0138: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)other.transform.parent == (Object)(object)((Component)this).transform.parent) { return; } bool flag = false; if ((Object)(object)smashScript.Cork == (Object)null) { flag = true; } else if (!smashScript.Cork.activeSelf) { flag = true; } else if (!smashScript.Cork.GetComponent<Rigidbody>().isKinematic) { flag = true; } float num = particleValue * (1f / LiquidEmission.volumeOfParticles); if (!flag) { return; } currentColor = smashScript.color; if (LVA.level < 1f - num) { Color color = other.GetComponentInParent<BottleSmash>().color; if (LVA.level <= 1.4E-44f) { currentColor = color; } else { currentColor = Color.Lerp(currentColor, color, num / LVA.level); } LVA.level += num; smashScript.color = currentColor; } } private void Update() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) currentColor = smashScript.color; } } public class LiquidPool : MonoBehaviour { public float minSize = 0.5f; public float maxSize = 1f; public float timeToComplete = 0.5f; private float randomSize; private float currentTime = 0f; private bool fadingOut = false; private MeshRenderer mr; private Material mat; private void Start() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) ((Component)this).transform.localScale = Vector3.zero; randomSize = Random.Range(minSize, maxSize); mr = ((Component)this).GetComponent<MeshRenderer>(); mat = ((Renderer)mr).material; mat = Object.Instantiate<Material>(mat); ((Renderer)mr).material = mat; } private void Update() { //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007f: 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_00a8: Unknown result type (might be due to invalid IL or missing references) currentTime += Time.deltaTime * (float)((!fadingOut) ? 1 : (-1)); if (currentTime >= timeToComplete) { fadingOut = true; } if (fadingOut) { mat.color = new Color(mat.color.r, mat.color.g, mat.color.b, Mathf.Lerp(0f, 1f, currentTime / timeToComplete)); } else { ((Component)this).transform.localScale = Vector3.one * Mathf.Lerp(0f, randomSize, currentTime / timeToComplete); } if (fadingOut && currentTime <= 0f) { Object.Destroy((Object)(object)((Component)((Component)this).transform).gameObject); } } } [Serializable] public class LiquidVolumeAnimator : MonoBehaviour { [HideInInspector] [SerializeField] public Material[] mats; [Range(0f, 1f)] [SerializeField] public float level = 0.5f; private float finalLevel; public Vector2 minMaxBounds; [HideInInspector] [SerializeField] private MeshFilter mf; [HideInInspector] [SerializeField] private MeshRenderer mr; [HideInInspector] [SerializeField] private Mesh m; public bool DebugAnchor = false; public float debugSize = 1f; public float _anchorLength = 0.5f; [Range(0f, 1f)] public float dampening; [HideInInspector] [SerializeField] private Vector3 anchor; [HideInInspector] [SerializeField] private Vector3 anchorVelocity; [HideInInspector] [SerializeField] private Vector3 transformedPoint; [HideInInspector] [SerializeField] private Vector3 prevTransformedPoint; public bool calculateTextureProjection = true; public float TextureSize = 1f; public float TextureSizeScalar = 1f; public AnimationCurve texCurveSize = AnimationCurve.Linear(0f, 1f, 1f, 1f); private Quaternion previous; private float totalRotation = 0f; [HideInInspector] [SerializeField] private Vector3 TopLeft; [HideInInspector] [SerializeField] private Vector3 TopRight; [HideInInspector] [SerializeField] private Vector3 BottomLeft; [HideInInspector] [SerializeField] private Vector3 BottomRight; public Transform ExposedLiquidT; public Vector3 GravityDirection = Vector3.down; public bool normalizeGravityDirection = true; [HideInInspector] [SerializeField] private Vector3[] verts; private int shader_Key_localHeight; private int shader_Key_anchor; private int shader_Key_point; private int shader_Key_level; private float prvLevel = -1f; private Quaternion prevQ = Quaternion.identity; [HideInInspector] [SerializeField] private Vector3 cPos = Vector3.zero; public Vector3 finalAnchor; public Vector3 finalPoint; [HideInInspector] [SerializeField] private string[] shaderNames; private void OnDrawGizmosSelected() { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) //IL_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) //IL_0041: 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_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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_0105: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) //IL_0149: Unknown result type (might be due to invalid IL or missing references) //IL_014e: Unknown result type (might be due to invalid IL or missing references) //IL_0153: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0198: 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_01b3: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: 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_0207: Unknown result type (might be due to invalid IL or missing references) //IL_0217: Unknown result type (might be due to invalid IL or missing references) //IL_021c: 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_0249: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_026a: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: 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) float num = _anchorLength * Mathf.Max(new float[3] { ((Component)this).transform.lossyScale.x, ((Component)this).transform.lossyScale.y, ((Component)this).transform.lossyScale.z }); if (DebugAnchor) { cPos = ((Component)this).transform.position; Vector3 val = cPos - ((Component)this).transform.TransformDirection(Vector3.up) * num; if (anchor == Vector3.zero) { anchor = val; } CalculateSquare(anchor); Vector3 lossyScale = ((Component)this).transform.lossyScale; Gizmos.DrawSphere(val, 0.25f * ((Vector3)(ref lossyScale)).magnitude * 0.1f * debugSize); Gizmos.DrawLine(cPos, val); Gizmos.color = Color.blue; Vector3 val2 = anchor; Vector3 lossyScale2 = ((Component)this).transform.lossyScale; Gizmos.DrawSphere(val2, 0.25f * ((Vector3)(ref lossyScale2)).magnitude * 0.1f * debugSize); Gizmos.color = Color.red; Vector3 val3 = cPos; Vector3 val4 = val - cPos; Vector3 val5 = val3 - ((Vector3)(ref val4)).normalized * finalLevel; Vector3 lossyScale3 = ((Component)this).transform.lossyScale; Gizmos.DrawSphere(val5, 0.1f * ((Vector3)(ref lossyScale3)).magnitude * 0.01f * debugSize); Gizmos.color = Color.yellow; Vector3 topLeft = TopLeft; Vector3 lossyScale4 = ((Component)this).transform.lossyScale; Gizmos.DrawSphere(topLeft, 0.25f * ((Vector3)(ref lossyScale4)).magnitude * 0.01f * debugSize); Vector3 topRight = TopRight; Vector3 lossyScale5 = ((Component)this).transform.lossyScale; Gizmos.DrawSphere(topRight, 0.25f * ((Vector3)(ref lossyScale5)).magnitude * 0.01f * debugSize); Vector3 bottomLeft = BottomLeft; Vector3 lossyScale6 = ((Component)this).transform.lossyScale; Gizmos.DrawSphere(bottomLeft, 0.25f * ((Vector3)(ref lossyScale6)).magnitude * 0.01f * debugSize); Vector3 bottomRight = BottomRight; Vector3 lossyScale7 = ((Component)this).transform.lossyScale; Gizmos.DrawSphere(bottomRight, 0.25f * ((Vector3)(ref lossyScale7)).magnitude * 0.01f * debugSize); Gizmos.color = Color.white; CalculateSquare(anchor); } } private void CalculateSquare(Vector3 anch) { //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) //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_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //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_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_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_0062: 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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: 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_00c6: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_011f: Unknown result type (might be due to invalid IL or missing references) //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Unknown result type (might be due to invalid IL or missing references) //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0148: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Unknown result type (might be due to invalid IL or missing references) //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0179: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_0183: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0193: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a2: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01ab: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b6: Unknown result type (might be due to invalid IL or missing references) if (calculateTextureProjection) { Vector3 val = cPos; Vector3 val2 = anch - cPos; Vector3 val3 = val - ((Vector3)(ref val2)).normalized * finalLevel; Vector3 val4 = cPos; Vector3 val5 = anch - cPos; Vector3 val6 = val4 - ((Vector3)(ref val5)).normalized * finalLevel - anch; Vector3 normalized = ((Vector3)(ref val6)).normalized; Vector3 val7 = Quaternion.Euler(0f, totalRotation, 0f) * Vector3.right; Vector3 val8 = Vector3.Cross(val7, ((Vector3)(ref normalized)).normalized); Vector3 normalized2 = ((Vector3)(ref val8)).normalized; Vector3 val9 = Vector3.Cross(normalized2, normalized); Vector3 normalized3 = ((Vector3)(ref val9)).normalized; Vector3 val10 = Vector3.Cross(normalized3, normalized); normalized2 = ((Vector3)(ref val10)).normalized; float num = TextureSize * texCurveSize.Evaluate(Mathf.Clamp01(level)); Vector3 lossyScale = ((Component)this).transform.lossyScale; float num2 = num * ((Vector3)(ref lossyScale)).magnitude * 0.001f; TopLeft = normalized3 * num2 + normalized2 * num2 + val3; TopRight = normalized3 * num2 * -1f + normalized2 * num2 + val3; BottomLeft = normalized3 * num2 + normalized2 * num2 * -1f + val3; BottomRight = normalized3 * num2 * -1f - normalized2 * num2 + val3; } } private void Start() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0081: 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) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00ba: 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_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_00df: Unknown result type (might be due to invalid IL or missing references) //IL_01f3: Unknown result type (might be due to invalid IL or missing references) //IL_01f8: 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) cPos = ((Component)this).transform.position; shader_Key_localHeight = Shader.PropertyToID("_localHeight"); shader_Key_anchor = Shader.PropertyToID("_anchor"); shader_Key_point = Shader.PropertyToID("_point"); shader_Key_level = Shader.PropertyToID("_level"); prevTransformedPoint = (transformedPoint = ((Component)this).transform.TransformDirection((!normalizeGravityDirection) ? GravityDirection : ((Vector3)(ref GravityDirection)).normalized)); anchor -= ((!normalizeGravityDirection) ? GravityDirection : ((Vector3)(ref GravityDirection)).normalized) * -1f * Time.deltaTime * (1f - dampening); ((Vector3)(ref anchor)).Normalize(); mr = ((Component)this).GetComponent<MeshRenderer>(); mats = ((Renderer)mr).materials; shaderNames = new string[mats.Length]; for (int i = 0; i < mats.Length; i++) { mats[i] = Object.Instantiate<Material>(mats[i]); shaderNames[i] = ((Object)mats[i].shader).name; } mf = ((Component)this).GetComponent<MeshFilter>(); m = mf.sharedMesh; verts = (Vector3[])(object)new Vector3[m.vertices.Length]; verts = m.vertices; minMaxBounds.x = (minMaxBounds.y = verts[0].y); for (int j = 0; j < verts.Length; j++) { Vector3 val = ((Component)this).transform.TransformDirection(verts[j]); if (val.y > minMaxBounds.y) { minMaxBounds.y = val.y; } if (val.y < minMaxBounds.x) { minMaxBounds.x = val.y; } } ref Vector2 reference = ref minMaxBounds; reference.x -= cPos.y; ref Vector2 reference2 = ref minMaxBounds; reference2.y -= cPos.y; for (int k = 0; k < mats.Length; k++) { mats[k].SetFloat(shader_Key_localHeight, Mathf.Lerp(minMaxBounds.x, minMaxBounds.y, level)); } ((Renderer)mr).materials = mats; } public void AddForce(Vector3 force) { //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_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) anchorVelocity += force; } private void FixedUpdate() { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_008f: 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) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a1: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00f6: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_0116: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0121: 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_016f: Unknown result type (might be due to invalid IL or missing references) //IL_0174: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_019d: Unknown result type (might be due to invalid IL or missing references) //IL_01a7: Unknown result type (might be due to invalid IL or missing references) //IL_01ac: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: 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_01b5: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0144: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Unknown result type (might be due to invalid IL or missing references) //IL_0154: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_015e: 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_0168: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0210: Unknown result type (might be due to invalid IL or missing references) //IL_0215: Unknown result type (might be due to invalid IL or missing references) //IL_0235: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) //IL_01d7: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0274: Unknown result type (might be due to invalid IL or missing references) //IL_0279: Unknown result type (might be due to invalid IL or missing references) //IL_0378: Unknown result type (might be due to invalid IL or missing references) //IL_037e: Unknown result type (might be due to invalid IL or missing references) //IL_0384: Unknown result type (might be due to invalid IL or missing references) //IL_0389: Unknown result type (might be due to invalid IL or missing references) //IL_038e: Unknown result type (might be due to invalid IL or missing references) //IL_0392: Unknown result type (might be due to invalid IL or missing references) //IL_039d: Unknown result type (might be due to invalid IL or missing references) //IL_03a2: Unknown result type (might be due to invalid IL or missing references) //IL_03a7: Unknown result type (might be due to invalid IL or missing references) //IL_035a: Unknown result type (might be due to invalid IL or missing references) //IL_0360: Unknown result type (might be due to invalid IL or missing references) //IL_0366: Unknown result type (might be due to invalid IL or missing references) //IL_036b: Unknown result type (might be due to invalid IL or missing references) //IL_0370: Unknown result type (might be due to invalid IL or missing references) //IL_040c: Unknown result type (might be due to invalid IL or missing references) //IL_0411: Unknown result type (might be due to invalid IL or missing references) //IL_0416: Unknown result type (might be due to invalid IL or missing references) //IL_0436: Unknown result type (might be due to invalid IL or missing references) //IL_043c: Unknown result type (might be due to invalid IL or missing references) //IL_0442: Unknown result type (might be due to invalid IL or missing references) //IL_0447: Unknown result type (might be due to invalid IL or missing references) //IL_044c: Unknown result type (might be due to invalid IL or missing references) //IL_0450: Unknown result type (might be due to invalid IL or missing references) //IL_045b: Unknown result type (might be due to invalid IL or missing references) //IL_0460: Unknown result type (might be due to invalid IL or missing references) //IL_0465: Unknown result type (might be due to invalid IL or missing references) //IL_046a: Unknown result type (might be due to invalid IL or missing references) //IL_04ac: Unknown result type (might be due to invalid IL or missing references) //IL_04b1: Unknown result type (might be due to invalid IL or missing references) //IL_04b8: Unknown result type (might be due to invalid IL or missing references) //IL_04c3: Unknown result type (might be due to invalid IL or missing references) //IL_04c8: Unknown result type (might be due to invalid IL or missing references) //IL_04cd: Unknown result type (might be due to invalid IL or missing references) //IL_04d2: Unknown result type (might be due to invalid IL or missing references) //IL_04d7: Unknown result type (might be due to invalid IL or missing references) //IL_04dc: Unknown result type (might be due to invalid IL or missing references) //IL_04de: Unknown result type (might be due to invalid IL or missing references) //IL_04e0: Unknown result type (might be due to invalid IL or missing references) //IL_04e5: Unknown result type (might be due to invalid IL or missing references) //IL_04ea: Unknown result type (might be due to invalid IL or missing references) //IL_04f2: Unknown result type (might be due to invalid IL or missing references) //IL_04f7: Unknown result type (might be due to invalid IL or missing references) //IL_04fc: Unknown result type (might be due to invalid IL or missing references) //IL_0501: Unknown result type (might be due to invalid IL or missing references) //IL_0506: Unknown result type (might be due to invalid IL or missing references) //IL_050b: Unknown result type (might be due to invalid IL or missing references) //IL_050d: Unknown result type (might be due to invalid IL or missing references) //IL_050f: Unknown result type (might be due to invalid IL or missing references) //IL_0516: Unknown result type (might be due to invalid IL or missing references) //IL_0518: Unknown result type (might be due to invalid IL or missing references) //IL_051a: Unknown result type (might be due to invalid IL or missing references) //IL_051f: Unknown result type (might be due to invalid IL or missing references) //IL_0688: Unknown result type (might be due to invalid IL or missing references) //IL_068d: Unknown result type (might be due to invalid IL or missing references) //IL_0699: Unknown result type (might be due to invalid IL or missing references) //IL_069e: Unknown result type (might be due to invalid IL or missing references) //IL_06aa: Unknown result type (might be due to invalid IL or missing references) //IL_06af: Unknown result type (might be due to invalid IL or missing references) //IL_06b4: Unknown result type (might be due to invalid IL or missing references) //IL_06b9: Unknown result type (might be due to invalid IL or missing references) //IL_06c2: Unknown result type (might be due to invalid IL or missing references) //IL_06c7: Unknown result type (might be due to invalid IL or missing references) //IL_06cc: Unknown result type (might be due to invalid IL or missing references) //IL_06d1: Unknown result type (might be due to invalid IL or missing references) //IL_06da: Unknown result type (might be due to invalid IL or missing references) //IL_06df: Unknown result type (might be due to invalid IL or missing references) //IL_06e4: Unknown result type (might be due to invalid IL or missing references) //IL_06e9: Unknown result type (might be due to invalid IL or missing references) //IL_06f2: Unknown result type (might be due to invalid IL or missing references) //IL_06f7: Unknown result type (might be due to invalid IL or missing references) //IL_06fc: Unknown result type (might be due to invalid IL or missing references) //IL_0701: Unknown result type (might be due to invalid IL or missing references) //IL_070a: Unknown result type (might be due to invalid IL or missing references) //IL_0710: Unknown result type (might be due to invalid IL or missing references) //IL_0716: Unknown result type (might be due to invalid IL or missing references) //IL_071b: Unknown result type (might be due to invalid IL or missing references) //IL_0720: Unknown result type (might be due to invalid IL or missing references) //IL_0724: Unknown result type (might be due to invalid IL or missing references) //IL_072f: Unknown result type (might be due to invalid IL or missing references) //IL_0734: Unknown result type (might be due to invalid IL or missing references) //IL_0739: Unknown result type (might be due to invalid IL or missing references) //IL_073e: Unknown result type (might be due to invalid IL or missing references) //IL_0743: Unknown result type (might be due to invalid IL or missing references) //IL_05c8: Unknown result type (might be due to invalid IL or missing references) //IL_05ce: Unknown result type (might be due to invalid IL or missing references) //IL_05d4: Unknown result type (might be due to invalid IL or missing references) //IL_05d9: Unknown result type (might be due to invalid IL or missing references) //IL_05de: Unknown result type (might be due to invalid IL or missing references) //IL_05e2: Unknown result type (might be due to invalid IL or missing references) //IL_05ed: Unknown result type (might be due to invalid IL or missing references) //IL_05f2: Unknown result type (might be due to invalid IL or missing references) //IL_0602: Unknown result type (might be due to invalid IL or missing references) //IL_061d: Unknown result type (might be due to invalid IL or missing references) //IL_0628: Unknown result type (might be due to invalid IL or missing references) //IL_062d: Unknown result type (might be due to invalid IL or missing references) //IL_0636: Unknown result type (might be due to invalid IL or missing references) //IL_0640: Unknown result type (might be due to invalid IL or missing references) //IL_064b: Unknown result type (might be due to invalid IL or missing references) //IL_0656: Unknown result type (might be due to invalid IL or missing references) //IL_0667: Unknown result type (might be due to invalid IL or missing references) //IL_066d: Unknown result type (might be due to invalid IL or missing references) //IL_0672: Unknown result type (might be due to invalid IL or missing references) //IL_0677: Unknown result type (might be due to invalid IL or missing references) //IL_067b: Unknown result type (might be due to invalid IL or missing references) //IL_07fd: Unknown result type (might be due to invalid IL or missing references) //IL_0802: Unknown result type (might be due to invalid IL or missing references) //IL_0779: Unknown result type (might be due to invalid IL or missing references) //IL_078e: Unknown result type (might be due to invalid IL or missing references) //IL_07a3: Unknown result type (might be due to invalid IL or missing references) //IL_07b8: Unknown result type (might be due to invalid IL or missing references) //IL_07cd: Unknown result type (might be due to invalid IL or missing references) cPos = ((Component)this).transform.position; float num = _anchorLength * Mathf.Max(new float[3] { ((Component)this).transform.lossyScale.x, ((Component)this).transform.lossyScale.y, ((Component)this).transform.lossyScale.z }); transformedPoint = ((Component)this).transform.TransformDirection((!normalizeGravityDirection) ? GravityDirection : ((Vector3)(ref GravityDirection)).normalized); anchor += anchorVelocity * (1f - dampening); Vector3 val = anchor; anchor -= ((!normalizeGravityDirection) ? GravityDirection : ((Vector3)(ref GravityDirection)).normalized) * -1f * Time.deltaTime * (1f - dampening); float num2 = Vector3.Distance(anchor, cPos); if (num2 > num) { Vector3 val2 = cPos; Vector3 val3 = anchor - cPos; anchor = val2 + ((Vector3)(ref val3)).normalized * num; } Vector3 val4 = anchor - val + (transformedPoint - prevTransformedPoint) * -1f * (1f / num) * Time.deltaTime; if (val4 == Vector3.zero && prvLevel == level && prevQ == ((Component)this).transform.rotation) { return; } anchorVelocity += val4; Matrix4x4 localToWorldMatrix = ((Component)this).transform.localToWorldMatrix; minMaxBounds.x = (minMaxBounds.y = ((Component)this).transform.TransformPoint(verts[0]).y); for (int i = 0; i < verts.Length; i++) { Vector3 val5 = ((Matrix4x4)(ref localToWorldMatrix)).MultiplyPoint(verts[i]); if (val5.y > minMaxBounds.y) { minMaxBounds.y = val5.y; } if (val5.y < minMaxBounds.x) { minMaxBounds.x = val5.y; } } ref Vector2 reference = ref minMaxBounds; reference.y -= cPos.y; ref Vector2 reference2 = ref minMaxBounds; reference2.x -= cPos.y; finalLevel = Mathf.Lerp(minMaxBounds.x, minMaxBounds.y, level); if (level <= 1.4E-44f) { anchor = Vector3.down * num + cPos; } Vector3 val6 = cPos; Vector3 val7 = anchor - cPos; finalPoint = val6 - ((Vector3)(ref val7)).normalized * finalLevel; for (int j = 0; j < mats.Length; j++) { mats[j].SetFloat(shader_Key_localHeight, Mathf.Lerp(minMaxBounds.x - 1.4E-44f, minMaxBounds.y + 1.4E-44f, level)); mats[j].SetVector(shader_Key_anchor, Vector4.op_Implicit(((Component)this).transform.InverseTransformPoint(anchor))); Material obj = mats[j]; int num3 = shader_Key_point; Transform transform = ((Component)this).transform; Vector3 val8 = cPos; Vector3 val9 = anchor - cPos; obj.SetVector(num3, Vector4.op_Implicit(transform.InverseTransformPoint(val8 - ((Vector3)(ref val9)).normalized * finalLevel))); mats[j].SetFloat(shader_Key_level, level - float.Epsilon); } finalAnchor = anchor; CalculateSquare(anchor); Quaternion val10 = Quaternion.LookRotation(previous * Vector3.right, Vector3.up); Vector3 val11 = val10 * Vector3.right; Quaternion val12 = Quaternion.LookRotation(((Component)this).transform.rotation * Vector3.right, Vector3.up); float num4 = Quaternion.Angle(val10, val12) * (float)((!(Vector3.Dot(val11, val12 * Vector3.forward) < 0f)) ? 1 : (-1)); float num5 = num4; if (Mathf.Abs(num5) > 0.05f) { totalRotation += num5; } if (totalRotation > 360f) { totalRotation -= 360f; } else if (totalRotation < 0f) { totalRotation += 360f; } if ((Object)(object)ExposedLiquidT != (Object)null) { Transform exposedLiquidT = ExposedLiquidT; Vector3 val13 = cPos; Vector3 val14 = anchor - cPos; exposedLiquidT.position = val13 - ((Vector3)(ref val14)).normalized * finalLevel; Transform exposedLiquidT2 = ExposedLiquidT; Vector3 val15 = Vector3.one * texCurveSize.Evaluate(Mathf.Clamp01(level)); Vector3 lossyScale = ((Component)this).transform.lossyScale; exposedLiquidT2.localScale = val15 * ((Vector3)(ref lossyScale)).magnitude * 0.001f * TextureSize * TextureSizeScalar; Transform exposedLiquidT3 = ExposedLiquidT; Vector3 val16 = finalPoint - finalAnchor; exposedLiquidT3.up = ((Vector3)(ref val16)).normalized; } prevTransformedPoint = transformedPoint; previous = ((Component)this).transform.rotation; Vector4 val17 = Vector4.op_Implicit(((Component)this).transform.InverseTransformPoint(TopLeft)); Vector4 val18 = Vector4.op_Implicit(((Component)this).transform.InverseTransformPoint(TopRight)); Vector4 val19 = Vector4.op_Implicit(((Component)this).transform.InverseTransformPoint(BottomLeft)); Vector4 val20 = Vector4.op_Implicit(((Component)this).transform.InverseTransformPoint(BottomRight)); Transform transform2 = ((Component)this).transform; Vector3 val21 = cPos; Vector3 val22 = anchor - cPos; Vector4 val23 = Vector4.op_Implicit(transform2.InverseTransformPoint(val21 - ((Vector3)(ref val22)).normalized * finalLevel)); for (int k = 0; k < mats.Length; k++) { if (shaderNames[k].Contains("_Texture")) { mats[k].SetVector("_TL", val17); mats[k].SetVector("_TR", val18); mats[k].SetVector("_BL", val19); mats[k].SetVector("_BR", val20); mats[k].SetVector("_CENTER", val23); } } prvLevel = level; prevQ = ((Component)this).transform.rotation; } } public class MeshLiquidEmission : MonoBehaviour { [Serializable] private class BVertex { public Vector3 p; public Vector3 n; public bool b; } [HideInInspector] [SerializeField] private MeshFilter r; public LiquidVolumeAnimator LVA; [HideInInspector] [SerializeField] private int[] calculatedTriangles; [HideInInspector] [SerializeField] private BVertex[] calculatedVerts; public ParticleSystem system; private float particlesToEmit = 0f; public float emissionSpeed = 0f; private Mesh m; [HideInInspector] [SerializeField] private int[] tris; [HideInInspector] [SerializeField] private Vector3[] verts; [HideInInspector] [SerializeField] private Vector3[] norms; public bool debug = false; public float debugScale = 1f; public bool CullNullNormals = false; public Rigidbody Cork; public float volumeOfParticles = 70f; public bool emitting = true; public BottleSmash bottleSmash; public float angleSpeedScalar = 1f; private int CVOB = 0; private void Start() { r = ((Component)this).GetComponent<MeshFilter>(); m = r.mesh; calculatedVerts = new BVertex[m.vertexCount * 6]; for (int i = 0; i < calculatedVerts.Length; i++) { calculatedVerts[i] = new BVertex(); } verts = m.vertices; tris = m.triangles; norms = m.normals; } private bool LinePlaneIntersection(Vector3 p0, Vector3 p1, Vector3 planePoint, Vector3 planeNormal, out Vector3 coordinate) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //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_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_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_0034: 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) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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) Vector3 val = p1 - p0; coordinate = Vector3.zero; float num = Vector3.Dot(((Vector3)(ref planeNormal)).normalized, val); if (Mathf.Abs(num) > float.Epsilon) { Vector3 val2 = p0 - planePoint; float num2 = Vector3.Dot(((Vector3)(ref planeNormal)).normalized, val2) * -1f / num; val *= num2; coordinate = p0 + val; return true; } return false; } private void OnDrawGizmos() { //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_004f: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) if (debug && calculatedVerts != null) { for (int i = 0; i < calculatedVerts.Length && calculatedVerts[i].b; i++) { Vector3 val = ((Component)this).transform.TransformPoint(calculatedVerts[i].p); Vector3 lossyScale = ((Component)this).transform.lossyScale; Gizmos.DrawSphere(val, 0.01f * ((Vector3)(ref lossyScale)).magnitude * debugScale); } } } private void SetDual(int under1, int under2, int above, ref Vector3 dir, ref Vector3 lpos, ref int currentVOB, ref Vector3 tmpV) { //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_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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007d: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: 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_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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0163: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_018a: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01db: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_020a: Unknown result type (might be due to invalid IL or missing references) //IL_0227: Unknown result type (might be due to invalid IL or missing references) //IL_022c: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_0261: Unknown result type (might be due to invalid IL or missing references) //IL_0268: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0279: 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_0299: Unknown result type (might be due to invalid IL or missing references) //IL_02b6: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02ce: Unknown result type (might be due to invalid IL or missing references) //IL_02df: Unknown result type (might be due to invalid IL or missing references) //IL_02e4: Unknown result type (might be due to invalid IL or missing references) //IL_02e9: Unknown result type (might be due to invalid IL or missing references) //IL_02fd: Unknown result type (might be due to invalid IL or missing references) //IL_030e: Unknown result type (might be due to invalid IL or missing references) //IL_0313: Unknown result type (might be due to invalid IL or missing references) //IL_0318: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_0326: Unknown result type (might be due to invalid IL or missing references) calculatedVerts[currentVOB].p = verts[under1]; calculatedVerts[currentVOB].n = norms[under1]; calculatedVerts[currentVOB].b = true; LinePlaneIntersection(verts[under1], verts[above], lpos, dir * -1f, out tmpV); calculatedVerts[currentVOB + 1].p = tmpV; BVertex obj = calculatedVerts[currentVOB + 1]; Vector3 val = norms[under1]; Vector3 val2 = norms[above]; Vector3 val3 = tmpV - verts[under1]; float magnitude = ((Vector3)(ref val3)).magnitude; Vector3 val4 = verts[under1] - verts[above]; obj.n = Vector3.Lerp(val, val2, magnitude / ((Vector3)(ref val4)).magnitude); calculatedVerts[currentVOB + 1].b = true; calculatedVerts[currentVOB + 2].p = verts[under2]; calculatedVerts[currentVOB + 2].n = norms[under2]; calculatedVerts[currentVOB + 2].b = true; calculatedVerts[currentVOB + 3].p = verts[under2]; calculatedVerts[currentVOB + 3].n = norms[under2]; calculatedVerts[currentVOB + 3].b = true; calculatedVerts[currentVOB + 4].p = tmpV; calculatedVerts[currentVOB + 4].n = calculatedVerts[currentVOB + 1].n; calculatedVerts[currentVOB + 4].b = true; LinePlaneIntersection(verts[under2], verts[above], lpos, dir * -1f, out tmpV); calculatedVerts[currentVOB + 5].p = tmpV; BVertex obj2 = calculatedVerts[currentVOB + 5]; Vector3 val5 = norms[under2]; Vector3 val6 = norms[above]; Vector3 val7 = tmpV - verts[under2]; float magnitude2 = ((Vector3)(ref val7)).magnitude; Vector3 val8 = verts[under2] - verts[above]; obj2.n = Vector3.Lerp(val5, val6, magnitude2 / ((Vector3)(ref val8)).magnitude); calculatedVerts[currentVOB + 5].b = true; } private void SetDualInverted(int under1, int above1, int above2, ref Vector3 dir, ref Vector3 lpos, ref int currentVOB, ref Vector3 tmpV) { //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_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_005e: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007d: 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_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: 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_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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_010b: Unknown result type (might be due to invalid IL or missing references) //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) //IL_012f: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_0158: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0177: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) //IL_019c: Unknown result type (might be due to invalid IL or missing references) //IL_01a1: Unknown result type (might be due to invalid IL or missing references) //IL_01be: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_01ec: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_021b: Unknown result type (might be due to invalid IL or missing references) //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0229: Unknown result type (might be due to invalid IL or missing references) //IL_022e: Unknown result type (might be due to invalid IL or missing references) calculatedVerts[currentVOB].p = verts[under1]; calculatedVerts[currentVOB].n = norms[under1]; calculatedVerts[currentVOB].b = true; LinePlaneIntersection(verts[under1], verts[above1], lpos, dir * -1f, out tmpV); calculatedVerts[currentVOB + 1].p = tmpV; BVertex obj = calculatedVerts[currentVOB + 1]; Vector3 val = norms[under1]; Vector3 val2 = norms[above1]; Vector3 val3 = tmpV - verts[under1]; float magnitude = ((Vector3)(ref val3)).magnitude; Vector3 val4 = verts[under1] - verts[above1]; obj.n = Vector3.Lerp(val, val2, magnitude / ((Vector3)(ref val4)).magnitude); calculatedVerts[currentVOB + 1].b = true; LinePlaneIntersection(verts[under1], verts[above2], lpos, dir * -1f, out tmpV); calculatedVerts[currentVOB + 2].p = tmpV; BVertex obj2 = calculatedVerts[currentVOB + 2]; Vector3 val5 = norms[under1]; Vector3 val6 = norms[above2]; Vector3 val7 = tmpV - verts[under1]; float magnitude2 = ((Vector3)(ref val7)).magnitude; Vector3 val8 = verts[under1] - verts[above2]; obj2.n = Vector3.Lerp(val5, val6, magnitude2 / ((Vector3)(ref val8)).magnitude); calculatedVerts[currentVOB + 2].b = true; } private void CalculateTrianglesToEmitFrom(int[] tris, Vector3[] verts) { //IL_0007: 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_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0042: 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_0048: 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_0054: 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_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) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: 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_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: 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_00e3: 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_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_00ed: 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_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0142: Unknown result type (might be due to invalid IL or missing references) //IL_0161: 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_0180: Unknown result type (might be due to invalid IL or missing references) //IL_0185: Unknown result type (might be due to invalid IL or missing references) //IL_01a6: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ca: Unknown result type (might be due to invalid IL or missing references) Vector3 val = LVA.finalAnchor - LVA.finalPoint; Vector3 normalized = ((Vector3)(ref val)).normalized; Vector3 lpos = ((Component)this).transform.InverseTransformPoint(LVA.finalPoint); Vector3 val2 = ((Component)this).transform.InverseTransformDirection(normalized); normalized = ((Vector3)(ref val2)).normalized; int currentVOB = 0; Vector3 tmpV = Vector3.zero; for (int i = 2; i < tris.Length; i += 3) { int num = tris[i - 2]; int num2 = tris[i - 1]; int num3 = tris[i]; Vector3 val3 = verts[num]; Vector3 val4 = verts[num2]; Vector3 val5 = verts[num3]; Vector3 val6 = val3 - lpos; bool flag = Vector3.Dot(normalized, val6) >= 0f; Vector3 val7 = val4 - lpos; bool flag2 = Vector3.Dot(normalized, val7) >= 0f; Vector3 val8 = val5 - lpos; bool flag3 = Vector3.Dot(normalized, val8) >= 0f; if (flag3 && flag2 && flag) { calculatedVerts[currentVOB].p = val3; calculatedVerts[currentVOB].n = norms[num]; calculatedVerts[currentVOB].b = true; calculatedVerts[currentVOB + 1].p = val4; calculatedVerts[currentVOB + 1].n = norms[num2]; calculatedVerts[currentVOB + 1].b = true; calculatedVerts[currentVOB + 2].p = val5; calculatedVerts[currentVOB + 2].n = norms[num2]; calculatedVerts[currentVOB + 2].b = true; currentVOB += 3; } else { if (!flag3 && !flag2 && !flag) { continue; } bool flag4 = false; if (flag && flag2) { SetDual(num, num2, num3, ref normalized, ref lpos, ref currentVOB, ref tmpV); currentVOB += 6; flag4 = true; } if (flag && flag3) { SetDual(num, num3, num2, ref normalized, ref lpos, ref currentVOB, ref tmpV); currentVOB += 6; flag4 = true; } if (flag2 && flag3) { SetDual(num3, num2, num, ref normalized, ref lpos, ref currentVOB, ref tmpV); currentVOB += 6; flag4 = true; } if (!flag4) { if (flag) { SetDualInverted(num, num2, num3, ref normalized, ref lpos, ref currentVOB, ref tmpV); currentVOB += 3; } else if (flag2) { SetDualInverted(num2, num, num3, ref normalized, ref lpos, ref currentVOB, ref tmpV); currentVOB += 3; } else if (flag3) { SetDualInverted(num3, num2, num, ref normalized, ref lpos, ref currentVOB, ref tmpV); currentVOB += 3; } } } } if (currentVOB < calculatedVerts.Length) { calculatedVerts[currentVOB].b = false; } CVOB = currentVOB; } private float GetPS_StartSpeed() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_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_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected I4, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_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_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_005a: 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_0063: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) MainModule main = system.main; MinMaxCurve startSpeed = ((MainModule)(ref main)).startSpeed; ParticleSystemCurveMode mode = ((MinMaxCurve)(ref startSpeed)).mode; switch ((int)mode) { case 3: { MainModule main5 = system.main; MinMaxCurve startSpeed5 = ((MainModule)(ref main5)).startSpeed; float constantMin = ((MinMaxCurve)(ref startSpeed5)).constantMin; MainModule main6 = system.main; MinMaxCurve startSpeed6 = ((MainModule)(ref main6)).startSpeed; return Random.Range(constantMin, ((MinMaxCurve)(ref startSpeed6)).constantMax); } case 0: { MainModule main4 = system.main; MinMaxCurve startSpeed4 = ((MainModule)(ref main4)).startSpeed; return ((MinMaxCurve)(ref startSpeed4)).constant; } case 1: { MainModule main3 = system.main; MinMaxCurve startSpeed3 = ((MainModule)(ref main3)).startSpeed; return ((MinMaxCurve)(ref startSpeed3)).Evaluate(Random.value); } case 2: { MainModule main2 = system.main; MinMaxCurve startSpeed2 = ((MainModule)(ref main2)).startSpeed; return ((MinMaxCurve)(ref startSpeed2)).Evaluate(Random.value); } default: return 0f; } } private bool EmitFromSubmesh() { //IL_002a: 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_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_004d: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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_006b: 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_0072: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_0088: 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_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) //IL_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_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Unknown result type (might be due to invalid IL or missing references) //IL_0154: 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_015d: Unknown result type (might be due to invalid IL or missing references) //IL_0168: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: 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_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0104: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010d: Unknown result type (might be due to invalid IL or missing references) //IL_011f: 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_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_017c: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) int num = Random.Range(0, CVOB / 3 - 1); num *= 3; float value = Random.value; float value2 = Random.value; Vector3 val = Vector3.Lerp(calculatedVerts[num].p, calculatedVerts[num + 1].p, value); Vector3 val2 = Vector3.Lerp(calculatedVerts[num].n, calculatedVerts[num + 1].n, value); Vector3 normalized = ((Vector3)(ref val2)).normalized; val = Vector3.Lerp(val, calculatedVerts[num + 2].p, value2); Vector3 val3 = Vector3.Lerp(normalized, calculatedVerts[num + 2].n, value2); normalized = ((Vector3)(ref val3)).normalized; EmitParams val4 = default(EmitParams); float num2 = 1f; if ((Object)(object)bottleSmash != (Object)null) { Vector3 val5 = ((Component)this).transform.TransformDirection(normalized); Vector3 normalized2 = ((Vector3)(ref val5)).normalized; Vector3 val6 = LVA.finalAnchor - LVA.finalPoint; num2 = (1f + Vector3.Dot(((Vector3)(ref val6)).normalized, normalized2)) / 2f; ((EmitParams)(ref val4)).velocity = normalized2 * GetPS_StartSpeed() * num2 * angleSpeedScalar; } else { Vector3 val7 = ((Component)this).transform.TransformDirection(normalized); ((EmitParams)(ref val4)).velocity = ((Vector3)(ref val7)).normalized * GetPS_StartSpeed(); } ((EmitParams)(ref val4)).position = ((Component)this).transform.TransformPoint(val); if (((EmitParams)(ref val4)).velocity == Vector3.zero && CullNullNormals) { return false; } particlesToEmit -= 1f; if ((Object)(object)Cork != (Object)null) { if (Cork.isKinematic && volumeOfParticles > 0f) { LVA.level = Mathf.Clamp01((volumeOfParticles * LVA.level - 1f) / volumeOfParticles); } } else if (volumeOfParticles > 0f) { LVA.level = Mathf.Clamp01((volumeOfParticles * LVA.level - 1f) / volumeOfParticles); } system.Emit(val4, 1); return true; } private void Update() { if (!emitting || (Object)(object)Cork != (Object)null || LVA.level <= 0f) { return; } CalculateTrianglesToEmitFrom(tris, verts); particlesToEmit += emissionSpeed * Time.deltaTime; if (calculatedVerts.Length == 0) { particlesToEmit = 0f; } else if (!calculatedVerts[0].b) { particlesToEmit = 0f; } int num = 10; int num2 = num; while (particlesToEmit > 0f && (GetPS_StartSpeed() > 0f || !CullNullNormals)) { num2 = ((!EmitFromSubmesh()) ? (num2 - 1) : num); if (num2 <= 0) { break; } } } } public class ConveyImpacts : MonoBehaviour { public GhostPhysics _physics; private void OnCollisionEnter(Collision collision) { _physics.SendCollision(collision); } } public class GhostPhysics : MonoBehaviour { private BottleSmash _smash; private Transform _ghost; public GameObject _ghostObject; public bool _redirectSelection = false; [Header("Reference")] public Transform _externalTransform; private void Start() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) _smash = ((Component)this).GetComponent<BottleSmash>(); _ghost = Object.Instantiate<GameObject>(_ghostObject).transform; _ghost.position = ((Component)this).transform.position; _ghost.rotation = ((Component)this).transform.rotation; _ghost.localScale = _smash.Glass.transform.localScale; _externalTransform = _ghost; MeshCollider component = ((Component)_ghost).gameObject.GetComponent<MeshCollider>(); component.sharedMesh = _smash.Glass.GetComponent<MeshFilter>().sharedMesh; ((Component)_ghost).GetComponent<ConveyImpacts>()._physics = this; } private void OnDestroy() { if ((Object)(object)_ghost != (Object)null) { Object.Destroy((Object)(object)((Component)_ghost).gameObject); } } public void SendCollision(Collision col) { if ((Object)(object)_smash != (Object)null) { _smash.AttemptCollision(col); } } public Transform GetController() { return _ghost; } private void Update() { //IL_001f: 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) if ((Object)(object)_ghost != (Object)null) { ((Component)this).transform.position = _ghost.position; ((Component)this).transform.rotation = _ghost.rotation; } if (_redirectSelection && (Object)(object)Selection.activeTransform == (Object)(object)((Component)this).transform) { Selection.activeTransform = _ghost; } } } public class PickUpPotion : MonoBehaviour { private GameObject Obj; private Rigidbody rObj; private float dist; private float d; public float offsetValue = 1f; private Vector2 beginDist; private void Start() { } private void Update() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or m
ModulMDR.dll
Decompiled 3 days agousing System; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using OtherLoader; using Sodalite.Api; using UnityEngine; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace Alloy { public static class EnumExtension { public static bool HasFlag(this Enum keys, Enum flag) { int num = Convert.ToInt32(keys); int num2 = Convert.ToInt32(flag); return (num & num2) == num2; } } } namespace MeatKit { public class HideInNormalInspectorAttribute : PropertyAttribute { } } namespace NotWolfie.ModulMDR { [BepInPlugin("NotWolfie.ModulMDR", "ModulMDR", "1.0.0")] [BepInProcess("h3vr.exe")] [Description("Built with MeatKit")] [BepInDependency("h3vr.otherloader", "1.3.0")] [BepInDependency("h3vr.cityrobo.ModularWorkshopManager", "1.0.0")] [BepInDependency("nrgill28.Sodalite", "1.4.1")] public class ModulMDRPlugin : BaseUnityPlugin { private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; LoadAssets(); } private void LoadAssets() { Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "NotWolfie.ModulMDR"); OtherLoader.RegisterDirectLoad(BasePath, "NotWolfie.ModulMDR", "", "", "modulmdr", ""); GameAPI.PreloadAllAssets(Path.Combine(BasePath, "mw_modulmdr")); } } }
Bubba_Minigun.dll
Decompiled 3 days agousing System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using FistVR; using HarmonyLib; using OtherLoader; using UnityEngine; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace Cityrobo { [RequireComponent(typeof(Minigun))] public class MinigunMagazineCompatibility : MonoBehaviour { private static readonly List<Minigun> _patchedMiniguns; private Minigun _minigun; static MinigunMagazineCompatibility() { _patchedMiniguns = new List<Minigun>(); Harmony.CreateAndPatchAll(typeof(MinigunMagazineCompatibility), (string)null); } public void Awake() { _minigun = ((Component)this).GetComponent<Minigun>(); _patchedMiniguns.Add(_minigun); } public void OnDestroy() { _patchedMiniguns.Remove(_minigun); } [HarmonyPatch(typeof(Minigun), "LoadRoundFromMag")] [HarmonyPrefix] private static bool Minigun_LoadRoundFromMag(Minigun __instance) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) if (_patchedMiniguns.Contains(__instance)) { FVRFireArmMagazine magazine = ((FVRFireArm)__instance).Magazine; if (magazine.HasARound()) { FVRLoadedRound val = magazine.RemoveRound(0); __instance.LoadedRounds[__instance.m_numBullets].LR_Class = val.LR_Class; __instance.LoadedRounds[__instance.m_numBullets].LR_Mesh = val.LR_Mesh; __instance.LoadedRounds[__instance.m_numBullets].LR_Material = val.LR_Material; __instance.LoadedRounds[__instance.m_numBullets].LR_ProjectilePrefab = ((AnvilAsset)val.LR_ObjectWrapper).GetGameObject().GetComponent<FVRFireArmRound>().BallisticProjectilePrefab; __instance.m_numBullets++; __instance.UpdateDisplay(); } return false; } return true; } } } namespace Billiam_J_McGoonigan.Bubba_Minigun { [BepInPlugin("Billiam_J_McGoonigan.Bubba_Minigun", "Bubba_Minigun", "1.0.0")] [BepInProcess("h3vr.exe")] [Description("Built with MeatKit")] [BepInDependency("h3vr.otherloader", "1.3.0")] public class Bubba_MinigunPlugin : BaseUnityPlugin { private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; LoadAssets(); } private void LoadAssets() { Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "Billiam_J_McGoonigan.Bubba_Minigun"); OtherLoader.RegisterDirectLoad(BasePath, "Billiam_J_McGoonigan.Bubba_Minigun", "", "", "minigatling", ""); } } } public enum ControlMode { simple = 1, touch } public class VehicleControl : MonoBehaviour { [Serializable] public class CarWheels { public ConnectWheel wheels; } [Serializable] public class ConnectWheel { public bool frontWheelDrive = true; public Transform frontRight; public Transform frontLeft; public WheelSetting frontSetting; public bool backWheelDrive = true; public Transform backRight; public Transform backLeft; public WheelSetting rearSetting; } [Serializable] public class WheelSetting { public float Radius = 0.4f; public float Weight = 1000f; public float Distance = 0.2f; } [Serializable] public class CarLights { public Light[] brakeLights; public Light[] reverseLights; } [Serializable] public class CarSounds { public AudioSource IdleEngine; public AudioSource LowEngine; public AudioSource HighEngine; public float minPitch = 1f; public float maxPitch = 10f; public AudioSource nitro; public AudioSource switchGear; } [Serializable] public class CarParticles { public GameObject brakeParticlePerfab; public ParticleSystem shiftParticle1; public ParticleSystem shiftParticle2; private GameObject[] wheelParticle = (GameObject[])(object)new GameObject[4]; } [Serializable] public class CarSetting { public bool showNormalGizmos = false; public Transform carSteer; public HitGround[] hitGround; public List<Transform> cameraSwitchView; public float springs = 25000f; public float dampers = 1500f; public float carPower = 120f; public float shiftPower = 150f; public float brakePower = 8000f; public Vector3 shiftCentre = new Vector3(0f, -0.8f, 0f); public float maxSteerAngle = 25f; public float shiftDownRPM = 1500f; public float shiftUpRPM = 2500f; public float idleRPM = 500f; public float stiffness = 2f; public bool automaticGear = true; public float[] gears = new float[6] { -10f, 9f, 6f, 4.5f, 3f, 2.5f }; public float LimitBackwardSpeed = 60f; public float LimitForwardSpeed = 220f; } [Serializable] public class HitGround { public string tag = "street"; public bool grounded = false; public AudioClip brakeSound; public AudioClip groundSound; public Color brakeColor; } private class WheelComponent { public Transform wheel; public WheelCollider collider; public Vector3 startPos; public float rotation = 0f; public float rotation2 = 0f; public float maxSteer; public bool drive; public float pos_y = 0f; public WheelSetting settings; } public ControlMode controlMode = ControlMode.simple; public bool activeControl = false; public CarWheels carWheels; public CarLights carLights; public CarSounds carSounds; public CarParticles carParticles; public CarSetting carSetting; [HideInInspector] public float steer = 0f; [HideInInspector] public float accel = 0f; [HideInInspector] public bool brake; private bool shifmotor; [HideInInspector] public float curTorque = 100f; [HideInInspector] public float powerShift = 100f; [HideInInspector] public bool shift; private float torque = 100f; [HideInInspector] public float speed = 0f; private float lastSpeed = -10f; private bool shifting = false; private float[] efficiencyTable = new float[22] { 0.6f, 0.65f, 0.7f, 0.75f, 0.8f, 0.85f, 0.9f, 1f, 1f, 0.95f, 0.8f, 0.7f, 0.6f, 0.5f, 0.45f, 0.4f, 0.36f, 0.33f, 0.3f, 0.2f, 0.1f, 0.05f }; private float efficiencyTableStep = 250f; private float Pitch; private float PitchDelay; private float shiftTime = 0f; private float shiftDelay = 0f; [HideInInspector] public int currentGear = 0; [HideInInspector] public bool NeutralGear = true; [HideInInspector] public float motorRPM = 0f; [HideInInspector] public bool Backward = false; [HideInInspector] public float accelFwd = 0f; [HideInInspector] public float accelBack = 0f; [HideInInspector] public float steerAmount = 0f; private float wantedRPM = 0f; private float w_rotate; private float slip; private float slip2 = 0f; private GameObject[] Particle = (GameObject[])(object)new GameObject[4]; private Vector3 steerCurAngle; private Rigidbody myRigidbody; private WheelComponent[] wheels; public bool isOn = true; public bool isForciblyOff = false; private WheelComponent SetWheelComponent(Transform wheel, float maxSteer, bool drive, float pos_y, WheelSetting setting) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_0035: 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_005b: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) WheelComponent wheelComponent = new WheelComponent(); GameObject val = new GameObject(((Object)wheel).name + "WheelCollider"); val.transform.parent = ((Component)this).transform; val.transform.position = wheel.position; val.transform.eulerAngles = ((Component)this).transform.eulerAngles; pos_y = val.transform.localPosition.y; WheelCollider val2 = (WheelCollider)val.AddComponent(typeof(WheelCollider)); wheelComponent.wheel = wheel; wheelComponent.collider = val.GetComponent<WheelCollider>(); wheelComponent.drive = drive; wheelComponent.pos_y = pos_y; wheelComponent.maxSteer = maxSteer; wheelComponent.startPos = val.transform.localPosition; wheelComponent.settings = setting; return wheelComponent; } private void Awake() { //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) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_019e: 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_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02fa: Unknown result type (might be due to invalid IL or missing references) if (carSetting.automaticGear) { NeutralGear = false; } myRigidbody = ((Component)((Component)this).transform).GetComponent<Rigidbody>(); wheels = new WheelComponent[4]; wheels[0] = SetWheelComponent(carWheels.wheels.frontRight, carSetting.maxSteerAngle, carWheels.wheels.frontWheelDrive, carWheels.wheels.frontRight.position.y, carWheels.wheels.frontSetting); wheels[1] = SetWheelComponent(carWheels.wheels.frontLeft, carSetting.maxSteerAngle, carWheels.wheels.frontWheelDrive, carWheels.wheels.frontLeft.position.y, carWheels.wheels.frontSetting); wheels[2] = SetWheelComponent(carWheels.wheels.backRight, 0f, carWheels.wheels.backWheelDrive, carWheels.wheels.backRight.position.y, carWheels.wheels.rearSetting); wheels[3] = SetWheelComponent(carWheels.wheels.backLeft, 0f, carWheels.wheels.backWheelDrive, carWheels.wheels.backLeft.position.y, carWheels.wheels.rearSetting); if (Object.op_Implicit((Object)(object)carSetting.carSteer)) { steerCurAngle = carSetting.carSteer.localEulerAngles; } WheelComponent[] array = wheels; foreach (WheelComponent wheelComponent in array) { WheelCollider collider = wheelComponent.collider; collider.suspensionDistance = wheelComponent.settings.Distance; JointSpring suspensionSpring = collider.suspensionSpring; suspensionSpring.spring = carSetting.springs; suspensionSpring.damper = carSetting.dampers; collider.suspensionSpring = suspensionSpring; collider.radius = wheelComponent.settings.Radius; collider.mass = wheelComponent.settings.Weight; WheelFrictionCurve val = collider.forwardFriction; ((WheelFrictionCurve)(ref val)).asymptoteValue = 5000f; ((WheelFrictionCurve)(ref val)).extremumSlip = 2f; ((WheelFrictionCurve)(ref val)).asymptoteSlip = 20f; ((WheelFrictionCurve)(ref val)).stiffness = carSetting.stiffness; collider.forwardFriction = val; val = collider.sidewaysFriction; ((WheelFrictionCurve)(ref val)).asymptoteValue = 7500f; ((WheelFrictionCurve)(ref val)).asymptoteSlip = 2f; ((WheelFrictionCurve)(ref val)).stiffness = carSetting.stiffness; collider.sidewaysFriction = val; } } public void TurnOnEngine(bool forcibly) { if (!isForciblyOff) { isOn = true; } else if (forcibly) { isForciblyOff = false; isOn = true; } } public void TurnOffEngine(bool forcibly) { isForciblyOff = forcibly; isOn = false; } public void ShiftTo(int newGear) { ((Component)carSounds.switchGear).GetComponent<AudioSource>().Play(); currentGear = newGear; if (currentGear == 0) { NeutralGear = true; } else { NeutralGear = false; } if (currentGear == -1) { currentGear = 0; } } public void ShiftUp(bool ignoreDelay) { float timeSinceLevelLoad = Time.timeSinceLevelLoad; if ((timeSinceLevelLoad < shiftDelay && !ignoreDelay) || currentGear >= carSetting.gears.Length - 1) { return; } ((Component)carSounds.switchGear).GetComponent<AudioSource>().Play(); if (!carSetting.automaticGear) { if (currentGear == 0) { if (NeutralGear) { currentGear++; NeutralGear = false; } else { NeutralGear = true; } } else { currentGear++; } } else { currentGear++; } shiftDelay = timeSinceLevelLoad + 1f; shiftTime = 1.5f; } public void ShiftDown(bool ignoreDelay) { float timeSinceLevelLoad = Time.timeSinceLevelLoad; if ((timeSinceLevelLoad < shiftDelay && !ignoreDelay) || (currentGear <= 0 && !NeutralGear)) { return; } ((Component)carSounds.switchGear).GetComponent<AudioSource>().Play(); if (!carSetting.automaticGear) { if (currentGear == 1) { if (!NeutralGear) { currentGear--; NeutralGear = true; } } else if (currentGear == 0) { NeutralGear = false; } else { currentGear--; } } else { currentGear--; } shiftDelay = timeSinceLevelLoad + 0.1f; shiftTime = 2f; } private void OnCollisionEnter(Collision collision) { //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_005a: 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_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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: 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_00d0: 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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((Component)collision.transform.root).GetComponent<VehicleControl>())) { VehicleControl component = ((Component)collision.transform.root).GetComponent<VehicleControl>(); Vector3 relativeVelocity = collision.relativeVelocity; component.slip2 = Mathf.Clamp(((Vector3)(ref relativeVelocity)).magnitude, 0f, 10f); myRigidbody.angularVelocity = new Vector3((0f - myRigidbody.angularVelocity.x) * 0.5f, myRigidbody.angularVelocity.y * 0.5f, (0f - myRigidbody.angularVelocity.z) * 0.5f); myRigidbody.velocity = new Vector3(myRigidbody.velocity.x, myRigidbody.velocity.y * 0.5f, myRigidbody.velocity.z); } } private void OnCollisionStay(Collision collision) { if (Object.op_Implicit((Object)(object)((Component)collision.transform.root).GetComponent<VehicleControl>())) { ((Component)collision.transform.root).GetComponent<VehicleControl>().slip2 = 5f; } } private void Update() { } private void FixedUpdate() { //IL_0020: 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_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0704: Unknown result type (might be due to invalid IL or missing references) //IL_0709: Unknown result type (might be due to invalid IL or missing references) //IL_0751: Unknown result type (might be due to invalid IL or missing references) //IL_075a: Unknown result type (might be due to invalid IL or missing references) //IL_075f: Unknown result type (might be due to invalid IL or missing references) //IL_079b: Unknown result type (might be due to invalid IL or missing references) //IL_0acf: Unknown result type (might be due to invalid IL or missing references) //IL_0ae0: Unknown result type (might be due to invalid IL or missing references) //IL_0ae5: Unknown result type (might be due to invalid IL or missing references) //IL_0fca: Unknown result type (might be due to invalid IL or missing references) //IL_0fd4: Unknown result type (might be due to invalid IL or missing references) //IL_0ee6: Unknown result type (might be due to invalid IL or missing references) //IL_0eed: Unknown result type (might be due to invalid IL or missing references) //IL_0ef2: Unknown result type (might be due to invalid IL or missing references) //IL_0f0c: Unknown result type (might be due to invalid IL or missing references) //IL_0f17: Unknown result type (might be due to invalid IL or missing references) //IL_0f1c: Unknown result type (might be due to invalid IL or missing references) //IL_0f25: Unknown result type (might be due to invalid IL or missing references) //IL_0fec: Unknown result type (might be due to invalid IL or missing references) //IL_0b3b: Unknown result type (might be due to invalid IL or missing references) //IL_0b40: Unknown result type (might be due to invalid IL or missing references) //IL_0d23: Unknown result type (might be due to invalid IL or missing references) if (!isOn) { accel = 0f; } Vector3 velocity = myRigidbody.velocity; speed = ((Vector3)(ref velocity)).magnitude * 2.7f; if (speed < lastSpeed - 10f && slip < 10f) { slip = lastSpeed / 15f; } lastSpeed = speed; if (slip2 != 0f) { slip2 = Mathf.MoveTowards(slip2, 0f, 0.1f); } myRigidbody.centerOfMass = carSetting.shiftCentre; if (!carWheels.wheels.frontWheelDrive && !carWheels.wheels.backWheelDrive) { accel = 0f; } if (Object.op_Implicit((Object)(object)carSetting.carSteer)) { carSetting.carSteer.localEulerAngles = new Vector3(steerCurAngle.x, steerCurAngle.y, steerCurAngle.z + steer * -120f); } if (carSetting.automaticGear && currentGear == 1 && accel < 0f) { if (speed < 5f) { ShiftDown(ignoreDelay: false); } } else if (carSetting.automaticGear && currentGear == 0 && accel > 0f) { if (speed < 5f) { ShiftUp(ignoreDelay: false); } } else if (carSetting.automaticGear && motorRPM > carSetting.shiftUpRPM && accel > 0f && speed > 10f && !brake) { ShiftUp(ignoreDelay: false); } else if (carSetting.automaticGear && motorRPM < carSetting.shiftDownRPM && currentGear > 1) { ShiftDown(ignoreDelay: false); } if (speed < 1f) { Backward = true; } if (currentGear != 0 || !Backward) { Backward = false; } Light[] brakeLights = carLights.brakeLights; foreach (Light val in brakeLights) { if (brake || accel < 0f || speed < 1f) { val.intensity = Mathf.MoveTowards(val.intensity, 8f, 0.5f); } else { val.intensity = Mathf.MoveTowards(val.intensity, 0f, 0.5f); } ((Behaviour)val).enabled = val.intensity != 0f; } Light[] reverseLights = carLights.reverseLights; foreach (Light val2 in reverseLights) { if (speed > 2f && currentGear == 0) { val2.intensity = Mathf.MoveTowards(val2.intensity, 8f, 0.5f); } else { val2.intensity = Mathf.MoveTowards(val2.intensity, 0f, 0.5f); } ((Behaviour)val2).enabled = val2.intensity != 0f; } wantedRPM = 5500f * accel * 0.1f + wantedRPM * 0.9f; float num = 0f; int num2 = 0; bool flag = false; int num3 = 0; WheelComponent[] array = wheels; WheelHit val4 = default(WheelHit); foreach (WheelComponent wheelComponent in array) { WheelCollider collider = wheelComponent.collider; if (wheelComponent.drive) { num = ((!NeutralGear && brake && currentGear < 2) ? (num + accel * carSetting.idleRPM) : (NeutralGear ? (num + carSetting.idleRPM * accel) : (num + collider.rpm))); num2++; } if (brake || accel < 0f) { if (accel < 0f || (brake && (wheelComponent == wheels[2] || wheelComponent == wheels[3]))) { if (brake && accel > 0f) { slip = Mathf.Lerp(slip, 5f, accel * 0.01f); } else if (speed > 1f) { slip = Mathf.Lerp(slip, 1f, 0.002f); } else { slip = Mathf.Lerp(slip, 1f, 0.02f); } wantedRPM = 0f; collider.brakeTorque = carSetting.brakePower; wheelComponent.rotation = w_rotate; } } else { float brakeTorque; if (accel == 0f || NeutralGear) { float num5 = (collider.brakeTorque = 1000f); brakeTorque = num5; } else { float num5 = (collider.brakeTorque = 0f); brakeTorque = num5; } collider.brakeTorque = brakeTorque; slip = ((!(speed > 0f)) ? (slip = Mathf.Lerp(slip, 0.01f, 0.02f)) : ((!(speed > 100f)) ? (slip = Mathf.Lerp(slip, 1.5f, 0.02f)) : (slip = Mathf.Lerp(slip, 1f + Mathf.Abs(steer), 0.02f)))); w_rotate = wheelComponent.rotation; } WheelFrictionCurve val3 = collider.forwardFriction; ((WheelFrictionCurve)(ref val3)).asymptoteValue = 5000f; ((WheelFrictionCurve)(ref val3)).extremumSlip = 2f; ((WheelFrictionCurve)(ref val3)).asymptoteSlip = 20f; ((WheelFrictionCurve)(ref val3)).stiffness = carSetting.stiffness / (slip + slip2); collider.forwardFriction = val3; val3 = collider.sidewaysFriction; ((WheelFrictionCurve)(ref val3)).stiffness = carSetting.stiffness / (slip + slip2); ((WheelFrictionCurve)(ref val3)).extremumSlip = 0.2f + Mathf.Abs(steer); collider.sidewaysFriction = val3; if (shift && currentGear > 1 && speed > 50f && shifmotor && Mathf.Abs(steer) < 0.2f) { if (powerShift == 0f) { shifmotor = false; } powerShift = Mathf.MoveTowards(powerShift, 0f, Time.deltaTime * 10f); carSounds.nitro.volume = Mathf.Lerp(carSounds.nitro.volume, 1f, Time.deltaTime * 10f); if (!carSounds.nitro.isPlaying) { ((Component)carSounds.nitro).GetComponent<AudioSource>().Play(); } curTorque = ((!(powerShift > 0f)) ? carSetting.carPower : carSetting.shiftPower); carParticles.shiftParticle1.emissionRate = Mathf.Lerp(carParticles.shiftParticle1.emissionRate, (float)((powerShift > 0f) ? 50 : 0), Time.deltaTime * 10f); carParticles.shiftParticle2.emissionRate = Mathf.Lerp(carParticles.shiftParticle2.emissionRate, (float)((powerShift > 0f) ? 50 : 0), Time.deltaTime * 10f); } else { if (powerShift > 20f) { shifmotor = true; } carSounds.nitro.volume = Mathf.MoveTowards(carSounds.nitro.volume, 0f, Time.deltaTime * 2f); if (carSounds.nitro.volume == 0f) { carSounds.nitro.Stop(); } powerShift = Mathf.MoveTowards(powerShift, 100f, Time.deltaTime * 5f); curTorque = carSetting.carPower; carParticles.shiftParticle1.emissionRate = Mathf.Lerp(carParticles.shiftParticle1.emissionRate, 0f, Time.deltaTime * 10f); carParticles.shiftParticle2.emissionRate = Mathf.Lerp(carParticles.shiftParticle2.emissionRate, 0f, Time.deltaTime * 10f); } wheelComponent.rotation = Mathf.Repeat(wheelComponent.rotation + Time.deltaTime * collider.rpm * 360f / 60f, 360f); wheelComponent.rotation2 = Mathf.Lerp(wheelComponent.rotation2, collider.steerAngle, 0.1f); wheelComponent.wheel.localRotation = Quaternion.Euler(wheelComponent.rotation, wheelComponent.rotation2, 0f); Vector3 localPosition = wheelComponent.wheel.localPosition; if (collider.GetGroundHit(ref val4)) { if (Object.op_Implicit((Object)(object)carParticles.brakeParticlePerfab)) { if ((Object)(object)Particle[num3] == (Object)null) { Particle[num3] = Object.Instantiate<GameObject>(carParticles.brakeParticlePerfab, wheelComponent.wheel.position, Quaternion.identity); ((Object)Particle[num3]).name = "WheelParticle"; Particle[num3].transform.parent = ((Component)this).transform; Particle[num3].AddComponent<AudioSource>(); Particle[num3].GetComponent<AudioSource>().maxDistance = 50f; Particle[num3].GetComponent<AudioSource>().spatialBlend = 1f; Particle[num3].GetComponent<AudioSource>().dopplerLevel = 5f; Particle[num3].GetComponent<AudioSource>().rolloffMode = (AudioRolloffMode)2; } ParticleSystem component = Particle[num3].GetComponent<ParticleSystem>(); bool flag2 = false; for (int l = 0; l < carSetting.hitGround.Length; l++) { if (((Component)((WheelHit)(ref val4)).collider).CompareTag(carSetting.hitGround[l].tag)) { flag2 = carSetting.hitGround[l].grounded; if ((brake || Mathf.Abs(((WheelHit)(ref val4)).sidewaysSlip) > 0.5f) && speed > 1f) { Particle[num3].GetComponent<AudioSource>().clip = carSetting.hitGround[l].brakeSound; } else if ((Object)(object)Particle[num3].GetComponent<AudioSource>().clip != (Object)(object)carSetting.hitGround[l].groundSound && !Particle[num3].GetComponent<AudioSource>().isPlaying) { Particle[num3].GetComponent<AudioSource>().clip = carSetting.hitGround[l].groundSound; } Particle[num3].GetComponent<ParticleSystem>().startColor = carSetting.hitGround[l].brakeColor; } } if (flag2 && speed > 5f && !brake) { component.enableEmission = true; Particle[num3].GetComponent<AudioSource>().volume = 0.5f; if (!Particle[num3].GetComponent<AudioSource>().isPlaying) { Particle[num3].GetComponent<AudioSource>().Play(); } } else if ((brake || Mathf.Abs(((WheelHit)(ref val4)).sidewaysSlip) > 0.6f) && speed > 1f) { if (accel < 0f || ((brake || Mathf.Abs(((WheelHit)(ref val4)).sidewaysSlip) > 0.6f) && (wheelComponent == wheels[2] || wheelComponent == wheels[3]))) { if (!Particle[num3].GetComponent<AudioSource>().isPlaying) { Particle[num3].GetComponent<AudioSource>().Play(); } component.enableEmission = true; Particle[num3].GetComponent<AudioSource>().volume = 10f; } } else { component.enableEmission = false; Particle[num3].GetComponent<AudioSource>().volume = Mathf.Lerp(Particle[num3].GetComponent<AudioSource>().volume, 0f, Time.deltaTime * 10f); } } localPosition.y -= Vector3.Dot(wheelComponent.wheel.position - ((WheelHit)(ref val4)).point, ((Component)this).transform.TransformDirection(0f, 1f, 0f) / ((Component)this).transform.lossyScale.x) - collider.radius; localPosition.y = Mathf.Clamp(localPosition.y, -10f, wheelComponent.pos_y); flag = flag || wheelComponent.drive; } else { if ((Object)(object)Particle[num3] != (Object)null) { ParticleSystem component2 = Particle[num3].GetComponent<ParticleSystem>(); component2.enableEmission = false; } localPosition.y = wheelComponent.startPos.y - wheelComponent.settings.Distance; myRigidbody.AddForce(Vector3.down * 5000f); } num3++; wheelComponent.wheel.localPosition = localPosition; } if (num2 > 1) { num /= (float)num2; } motorRPM = 0.95f * motorRPM + 0.05f * Mathf.Abs(num * carSetting.gears[currentGear]); if (motorRPM > 5500f) { motorRPM = 5200f; } int num7 = (int)(motorRPM / efficiencyTableStep); if (num7 >= efficiencyTable.Length) { num7 = efficiencyTable.Length - 1; } if (num7 < 0) { num7 = 0; } float num8 = curTorque * carSetting.gears[currentGear] * efficiencyTable[num7]; WheelComponent[] array2 = wheels; foreach (WheelComponent wheelComponent2 in array2) { WheelCollider collider2 = wheelComponent2.collider; if (wheelComponent2.drive) { if (Mathf.Abs(collider2.rpm) > Mathf.Abs(wantedRPM)) { collider2.motorTorque = 0f; } else { float motorTorque = collider2.motorTorque; if (!brake && accel != 0f && !NeutralGear) { if ((speed < carSetting.LimitForwardSpeed && currentGear > 0) || (speed < carSetting.LimitBackwardSpeed && currentGear == 0)) { collider2.motorTorque = motorTorque * 0.9f + num8 * 1f; } else { collider2.motorTorque = 0f; collider2.brakeTorque = 2000f; } } else { collider2.motorTorque = 0f; } } } if (brake || slip2 > 2f) { collider2.steerAngle = Mathf.Lerp(collider2.steerAngle, steer * wheelComponent2.maxSteer, 0.02f); continue; } float num9 = Mathf.Clamp(speed / carSetting.maxSteerAngle, 1f, carSetting.maxSteerAngle); collider2.steerAngle = steer * (wheelComponent2.maxSteer / num9); } Pitch = Mathf.Clamp(1.2f + (motorRPM - carSetting.idleRPM) / (carSetting.shiftUpRPM - carSetting.idleRPM), 1f, 10f); shiftTime = Mathf.MoveTowards(shiftTime, 0f, 0.1f); if (Pitch == 1f) { carSounds.IdleEngine.volume = Mathf.Lerp(carSounds.IdleEngine.volume, 1f, 0.1f); carSounds.LowEngine.volume = Mathf.Lerp(carSounds.LowEngine.volume, 0.5f, 0.1f); carSounds.HighEngine.volume = Mathf.Lerp(carSounds.HighEngine.volume, 0f, 0.1f); } else { carSounds.IdleEngine.volume = Mathf.Lerp(carSounds.IdleEngine.volume, 1.8f - Pitch, 0.1f); if ((Pitch > PitchDelay || accel > 0f) && shiftTime == 0f) { carSounds.LowEngine.volume = Mathf.Lerp(carSounds.LowEngine.volume, 0f, 0.2f); carSounds.HighEngine.volume = Mathf.Lerp(carSounds.HighEngine.volume, 1f, 0.1f); } else { carSounds.LowEngine.volume = Mathf.Lerp(carSounds.LowEngine.volume, 0.5f, 0.1f); carSounds.HighEngine.volume = Mathf.Lerp(carSounds.HighEngine.volume, 0f, 0.2f); } carSounds.HighEngine.pitch = Pitch; carSounds.LowEngine.pitch = Pitch; PitchDelay = Pitch; } if (!isOn) { carSounds.IdleEngine.volume = 0f; carSounds.LowEngine.volume = 0f; carSounds.HighEngine.volume = 0f; } } private void OnDrawGizmos() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_0099: 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_00b1: Unknown result type (might be due to invalid IL or missing references) if (carSetting.showNormalGizmos && !Application.isPlaying) { Matrix4x4 matrix = Matrix4x4.TRS(((Component)this).transform.position, ((Component)this).transform.rotation, ((Component)this).transform.lossyScale); Gizmos.matrix = matrix; Gizmos.color = new Color(1f, 0f, 0f, 0.5f); Gizmos.DrawCube(Vector3.up / 1.5f, new Vector3(2.5f, 2f, 6f)); Gizmos.DrawSphere(carSetting.shiftCentre / ((Component)this).transform.lossyScale.x, 0.2f); } } }
Remington_Elliot.dll
Decompiled 3 days agousing System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using OtherLoader; using UnityEngine; [assembly: Debuggable(DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.0.0")] [module: UnverifiableCode] namespace Billiam_J_McHooligan.Remington_Elliot; [BepInPlugin("Billiam_J_McHooligan.Remington_Elliot", "Remington_Elliot", "1.0.0")] [BepInProcess("h3vr.exe")] [Description("Built with MeatKit")] [BepInDependency("h3vr.otherloader", "1.3.0")] public class Remington_ElliotPlugin : BaseUnityPlugin { private static readonly string BasePath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); internal static ManualLogSource Logger; private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; LoadAssets(); } private void LoadAssets() { Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "Billiam_J_McHooligan.Remington_Elliot"); OtherLoader.RegisterDirectLoad(BasePath, "Billiam_J_McHooligan.Remington_Elliot", "", "", "remingtonelliot", ""); } } public enum ControlMode { simple = 1, touch } public class VehicleControl : MonoBehaviour { [Serializable] public class CarWheels { public ConnectWheel wheels; } [Serializable] public class ConnectWheel { public bool frontWheelDrive = true; public Transform frontRight; public Transform frontLeft; public WheelSetting frontSetting; public bool backWheelDrive = true; public Transform backRight; public Transform backLeft; public WheelSetting rearSetting; } [Serializable] public class WheelSetting { public float Radius = 0.4f; public float Weight = 1000f; public float Distance = 0.2f; } [Serializable] public class CarLights { public Light[] brakeLights; public Light[] reverseLights; } [Serializable] public class CarSounds { public AudioSource IdleEngine; public AudioSource LowEngine; public AudioSource HighEngine; public float minPitch = 1f; public float maxPitch = 10f; public AudioSource nitro; public AudioSource switchGear; } [Serializable] public class CarParticles { public GameObject brakeParticlePerfab; public ParticleSystem shiftParticle1; public ParticleSystem shiftParticle2; private GameObject[] wheelParticle = (GameObject[])(object)new GameObject[4]; } [Serializable] public class CarSetting { public bool showNormalGizmos = false; public Transform carSteer; public HitGround[] hitGround; public List<Transform> cameraSwitchView; public float springs = 25000f; public float dampers = 1500f; public float carPower = 120f; public float shiftPower = 150f; public float brakePower = 8000f; public Vector3 shiftCentre = new Vector3(0f, -0.8f, 0f); public float maxSteerAngle = 25f; public float shiftDownRPM = 1500f; public float shiftUpRPM = 2500f; public float idleRPM = 500f; public float stiffness = 2f; public bool automaticGear = true; public float[] gears = new float[6] { -10f, 9f, 6f, 4.5f, 3f, 2.5f }; public float LimitBackwardSpeed = 60f; public float LimitForwardSpeed = 220f; } [Serializable] public class HitGround { public string tag = "street"; public bool grounded = false; public AudioClip brakeSound; public AudioClip groundSound; public Color brakeColor; } private class WheelComponent { public Transform wheel; public WheelCollider collider; public Vector3 startPos; public float rotation = 0f; public float rotation2 = 0f; public float maxSteer; public bool drive; public float pos_y = 0f; public WheelSetting settings; } public ControlMode controlMode = ControlMode.simple; public bool activeControl = false; public CarWheels carWheels; public CarLights carLights; public CarSounds carSounds; public CarParticles carParticles; public CarSetting carSetting; [HideInInspector] public float steer = 0f; [HideInInspector] public float accel = 0f; [HideInInspector] public bool brake; private bool shifmotor; [HideInInspector] public float curTorque = 100f; [HideInInspector] public float powerShift = 100f; [HideInInspector] public bool shift; private float torque = 100f; [HideInInspector] public float speed = 0f; private float lastSpeed = -10f; private bool shifting = false; private float[] efficiencyTable = new float[22] { 0.6f, 0.65f, 0.7f, 0.75f, 0.8f, 0.85f, 0.9f, 1f, 1f, 0.95f, 0.8f, 0.7f, 0.6f, 0.5f, 0.45f, 0.4f, 0.36f, 0.33f, 0.3f, 0.2f, 0.1f, 0.05f }; private float efficiencyTableStep = 250f; private float Pitch; private float PitchDelay; private float shiftTime = 0f; private float shiftDelay = 0f; [HideInInspector] public int currentGear = 0; [HideInInspector] public bool NeutralGear = true; [HideInInspector] public float motorRPM = 0f; [HideInInspector] public bool Backward = false; [HideInInspector] public float accelFwd = 0f; [HideInInspector] public float accelBack = 0f; [HideInInspector] public float steerAmount = 0f; private float wantedRPM = 0f; private float w_rotate; private float slip; private float slip2 = 0f; private GameObject[] Particle = (GameObject[])(object)new GameObject[4]; private Vector3 steerCurAngle; private Rigidbody myRigidbody; private WheelComponent[] wheels; public bool isOn = true; public bool isForciblyOff = false; private WheelComponent SetWheelComponent(Transform wheel, float maxSteer, bool drive, float pos_y, WheelSetting setting) { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_0035: 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_005b: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Expected O, but got Unknown //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) WheelComponent wheelComponent = new WheelComponent(); GameObject val = new GameObject(((Object)wheel).name + "WheelCollider"); val.transform.parent = ((Component)this).transform; val.transform.position = wheel.position; val.transform.eulerAngles = ((Component)this).transform.eulerAngles; pos_y = val.transform.localPosition.y; WheelCollider val2 = (WheelCollider)val.AddComponent(typeof(WheelCollider)); wheelComponent.wheel = wheel; wheelComponent.collider = val.GetComponent<WheelCollider>(); wheelComponent.drive = drive; wheelComponent.pos_y = pos_y; wheelComponent.maxSteer = maxSteer; wheelComponent.startPos = val.transform.localPosition; wheelComponent.settings = setting; return wheelComponent; } private void Awake() { //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) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_019e: 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_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01e7: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_0250: Unknown result type (might be due to invalid IL or missing references) //IL_027f: Unknown result type (might be due to invalid IL or missing references) //IL_0284: Unknown result type (might be due to invalid IL or missing references) //IL_02be: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02cc: Unknown result type (might be due to invalid IL or missing references) //IL_02fa: Unknown result type (might be due to invalid IL or missing references) if (carSetting.automaticGear) { NeutralGear = false; } myRigidbody = ((Component)((Component)this).transform).GetComponent<Rigidbody>(); wheels = new WheelComponent[4]; wheels[0] = SetWheelComponent(carWheels.wheels.frontRight, carSetting.maxSteerAngle, carWheels.wheels.frontWheelDrive, carWheels.wheels.frontRight.position.y, carWheels.wheels.frontSetting); wheels[1] = SetWheelComponent(carWheels.wheels.frontLeft, carSetting.maxSteerAngle, carWheels.wheels.frontWheelDrive, carWheels.wheels.frontLeft.position.y, carWheels.wheels.frontSetting); wheels[2] = SetWheelComponent(carWheels.wheels.backRight, 0f, carWheels.wheels.backWheelDrive, carWheels.wheels.backRight.position.y, carWheels.wheels.rearSetting); wheels[3] = SetWheelComponent(carWheels.wheels.backLeft, 0f, carWheels.wheels.backWheelDrive, carWheels.wheels.backLeft.position.y, carWheels.wheels.rearSetting); if (Object.op_Implicit((Object)(object)carSetting.carSteer)) { steerCurAngle = carSetting.carSteer.localEulerAngles; } WheelComponent[] array = wheels; foreach (WheelComponent wheelComponent in array) { WheelCollider collider = wheelComponent.collider; collider.suspensionDistance = wheelComponent.settings.Distance; JointSpring suspensionSpring = collider.suspensionSpring; suspensionSpring.spring = carSetting.springs; suspensionSpring.damper = carSetting.dampers; collider.suspensionSpring = suspensionSpring; collider.radius = wheelComponent.settings.Radius; collider.mass = wheelComponent.settings.Weight; WheelFrictionCurve val = collider.forwardFriction; ((WheelFrictionCurve)(ref val)).asymptoteValue = 5000f; ((WheelFrictionCurve)(ref val)).extremumSlip = 2f; ((WheelFrictionCurve)(ref val)).asymptoteSlip = 20f; ((WheelFrictionCurve)(ref val)).stiffness = carSetting.stiffness; collider.forwardFriction = val; val = collider.sidewaysFriction; ((WheelFrictionCurve)(ref val)).asymptoteValue = 7500f; ((WheelFrictionCurve)(ref val)).asymptoteSlip = 2f; ((WheelFrictionCurve)(ref val)).stiffness = carSetting.stiffness; collider.sidewaysFriction = val; } } public void TurnOnEngine(bool forcibly) { if (!isForciblyOff) { isOn = true; } else if (forcibly) { isForciblyOff = false; isOn = true; } } public void TurnOffEngine(bool forcibly) { isForciblyOff = forcibly; isOn = false; } public void ShiftTo(int newGear) { ((Component)carSounds.switchGear).GetComponent<AudioSource>().Play(); currentGear = newGear; if (currentGear == 0) { NeutralGear = true; } else { NeutralGear = false; } if (currentGear == -1) { currentGear = 0; } } public void ShiftUp(bool ignoreDelay) { float timeSinceLevelLoad = Time.timeSinceLevelLoad; if ((timeSinceLevelLoad < shiftDelay && !ignoreDelay) || currentGear >= carSetting.gears.Length - 1) { return; } ((Component)carSounds.switchGear).GetComponent<AudioSource>().Play(); if (!carSetting.automaticGear) { if (currentGear == 0) { if (NeutralGear) { currentGear++; NeutralGear = false; } else { NeutralGear = true; } } else { currentGear++; } } else { currentGear++; } shiftDelay = timeSinceLevelLoad + 1f; shiftTime = 1.5f; } public void ShiftDown(bool ignoreDelay) { float timeSinceLevelLoad = Time.timeSinceLevelLoad; if ((timeSinceLevelLoad < shiftDelay && !ignoreDelay) || (currentGear <= 0 && !NeutralGear)) { return; } ((Component)carSounds.switchGear).GetComponent<AudioSource>().Play(); if (!carSetting.automaticGear) { if (currentGear == 1) { if (!NeutralGear) { currentGear--; NeutralGear = true; } } else if (currentGear == 0) { NeutralGear = false; } else { currentGear--; } } else { currentGear--; } shiftDelay = timeSinceLevelLoad + 0.1f; shiftTime = 2f; } private void OnCollisionEnter(Collision collision) { //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_005a: 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_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_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: 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_00b7: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: 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_00d0: 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_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00f3: Unknown result type (might be due to invalid IL or missing references) if (Object.op_Implicit((Object)(object)((Component)collision.transform.root).GetComponent<VehicleControl>())) { VehicleControl component = ((Component)collision.transform.root).GetComponent<VehicleControl>(); Vector3 relativeVelocity = collision.relativeVelocity; component.slip2 = Mathf.Clamp(((Vector3)(ref relativeVelocity)).magnitude, 0f, 10f); myRigidbody.angularVelocity = new Vector3((0f - myRigidbody.angularVelocity.x) * 0.5f, myRigidbody.angularVelocity.y * 0.5f, (0f - myRigidbody.angularVelocity.z) * 0.5f); myRigidbody.velocity = new Vector3(myRigidbody.velocity.x, myRigidbody.velocity.y * 0.5f, myRigidbody.velocity.z); } } private void OnCollisionStay(Collision collision) { if (Object.op_Implicit((Object)(object)((Component)collision.transform.root).GetComponent<VehicleControl>())) { ((Component)collision.transform.root).GetComponent<VehicleControl>().slip2 = 5f; } } private void Update() { } private void FixedUpdate() { //IL_0020: 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_00b6: Unknown result type (might be due to invalid IL or missing references) //IL_0143: Unknown result type (might be due to invalid IL or missing references) //IL_0704: Unknown result type (might be due to invalid IL or missing references) //IL_0709: Unknown result type (might be due to invalid IL or missing references) //IL_0751: Unknown result type (might be due to invalid IL or missing references) //IL_075a: Unknown result type (might be due to invalid IL or missing references) //IL_075f: Unknown result type (might be due to invalid IL or missing references) //IL_079b: Unknown result type (might be due to invalid IL or missing references) //IL_0acf: Unknown result type (might be due to invalid IL or missing references) //IL_0ae0: Unknown result type (might be due to invalid IL or missing references) //IL_0ae5: Unknown result type (might be due to invalid IL or missing references) //IL_0fca: Unknown result type (might be due to invalid IL or missing references) //IL_0fd4: Unknown result type (might be due to invalid IL or missing references) //IL_0ee6: Unknown result type (might be due to invalid IL or missing references) //IL_0eed: Unknown result type (might be due to invalid IL or missing references) //IL_0ef2: Unknown result type (might be due to invalid IL or missing references) //IL_0f0c: Unknown result type (might be due to invalid IL or missing references) //IL_0f17: Unknown result type (might be due to invalid IL or missing references) //IL_0f1c: Unknown result type (might be due to invalid IL or missing references) //IL_0f25: Unknown result type (might be due to invalid IL or missing references) //IL_0fec: Unknown result type (might be due to invalid IL or missing references) //IL_0b3b: Unknown result type (might be due to invalid IL or missing references) //IL_0b40: Unknown result type (might be due to invalid IL or missing references) //IL_0d23: Unknown result type (might be due to invalid IL or missing references) if (!isOn) { accel = 0f; } Vector3 velocity = myRigidbody.velocity; speed = ((Vector3)(ref velocity)).magnitude * 2.7f; if (speed < lastSpeed - 10f && slip < 10f) { slip = lastSpeed / 15f; } lastSpeed = speed; if (slip2 != 0f) { slip2 = Mathf.MoveTowards(slip2, 0f, 0.1f); } myRigidbody.centerOfMass = carSetting.shiftCentre; if (!carWheels.wheels.frontWheelDrive && !carWheels.wheels.backWheelDrive) { accel = 0f; } if (Object.op_Implicit((Object)(object)carSetting.carSteer)) { carSetting.carSteer.localEulerAngles = new Vector3(steerCurAngle.x, steerCurAngle.y, steerCurAngle.z + steer * -120f); } if (carSetting.automaticGear && currentGear == 1 && accel < 0f) { if (speed < 5f) { ShiftDown(ignoreDelay: false); } } else if (carSetting.automaticGear && currentGear == 0 && accel > 0f) { if (speed < 5f) { ShiftUp(ignoreDelay: false); } } else if (carSetting.automaticGear && motorRPM > carSetting.shiftUpRPM && accel > 0f && speed > 10f && !brake) { ShiftUp(ignoreDelay: false); } else if (carSetting.automaticGear && motorRPM < carSetting.shiftDownRPM && currentGear > 1) { ShiftDown(ignoreDelay: false); } if (speed < 1f) { Backward = true; } if (currentGear != 0 || !Backward) { Backward = false; } Light[] brakeLights = carLights.brakeLights; foreach (Light val in brakeLights) { if (brake || accel < 0f || speed < 1f) { val.intensity = Mathf.MoveTowards(val.intensity, 8f, 0.5f); } else { val.intensity = Mathf.MoveTowards(val.intensity, 0f, 0.5f); } ((Behaviour)val).enabled = val.intensity != 0f; } Light[] reverseLights = carLights.reverseLights; foreach (Light val2 in reverseLights) { if (speed > 2f && currentGear == 0) { val2.intensity = Mathf.MoveTowards(val2.intensity, 8f, 0.5f); } else { val2.intensity = Mathf.MoveTowards(val2.intensity, 0f, 0.5f); } ((Behaviour)val2).enabled = val2.intensity != 0f; } wantedRPM = 5500f * accel * 0.1f + wantedRPM * 0.9f; float num = 0f; int num2 = 0; bool flag = false; int num3 = 0; WheelComponent[] array = wheels; WheelHit val4 = default(WheelHit); foreach (WheelComponent wheelComponent in array) { WheelCollider collider = wheelComponent.collider; if (wheelComponent.drive) { num = ((!NeutralGear && brake && currentGear < 2) ? (num + accel * carSetting.idleRPM) : (NeutralGear ? (num + carSetting.idleRPM * accel) : (num + collider.rpm))); num2++; } if (brake || accel < 0f) { if (accel < 0f || (brake && (wheelComponent == wheels[2] || wheelComponent == wheels[3]))) { if (brake && accel > 0f) { slip = Mathf.Lerp(slip, 5f, accel * 0.01f); } else if (speed > 1f) { slip = Mathf.Lerp(slip, 1f, 0.002f); } else { slip = Mathf.Lerp(slip, 1f, 0.02f); } wantedRPM = 0f; collider.brakeTorque = carSetting.brakePower; wheelComponent.rotation = w_rotate; } } else { float brakeTorque; if (accel == 0f || NeutralGear) { float num5 = (collider.brakeTorque = 1000f); brakeTorque = num5; } else { float num5 = (collider.brakeTorque = 0f); brakeTorque = num5; } collider.brakeTorque = brakeTorque; slip = ((!(speed > 0f)) ? (slip = Mathf.Lerp(slip, 0.01f, 0.02f)) : ((!(speed > 100f)) ? (slip = Mathf.Lerp(slip, 1.5f, 0.02f)) : (slip = Mathf.Lerp(slip, 1f + Mathf.Abs(steer), 0.02f)))); w_rotate = wheelComponent.rotation; } WheelFrictionCurve val3 = collider.forwardFriction; ((WheelFrictionCurve)(ref val3)).asymptoteValue = 5000f; ((WheelFrictionCurve)(ref val3)).extremumSlip = 2f; ((WheelFrictionCurve)(ref val3)).asymptoteSlip = 20f; ((WheelFrictionCurve)(ref val3)).stiffness = carSetting.stiffness / (slip + slip2); collider.forwardFriction = val3; val3 = collider.sidewaysFriction; ((WheelFrictionCurve)(ref val3)).stiffness = carSetting.stiffness / (slip + slip2); ((WheelFrictionCurve)(ref val3)).extremumSlip = 0.2f + Mathf.Abs(steer); collider.sidewaysFriction = val3; if (shift && currentGear > 1 && speed > 50f && shifmotor && Mathf.Abs(steer) < 0.2f) { if (powerShift == 0f) { shifmotor = false; } powerShift = Mathf.MoveTowards(powerShift, 0f, Time.deltaTime * 10f); carSounds.nitro.volume = Mathf.Lerp(carSounds.nitro.volume, 1f, Time.deltaTime * 10f); if (!carSounds.nitro.isPlaying) { ((Component)carSounds.nitro).GetComponent<AudioSource>().Play(); } curTorque = ((!(powerShift > 0f)) ? carSetting.carPower : carSetting.shiftPower); carParticles.shiftParticle1.emissionRate = Mathf.Lerp(carParticles.shiftParticle1.emissionRate, (float)((powerShift > 0f) ? 50 : 0), Time.deltaTime * 10f); carParticles.shiftParticle2.emissionRate = Mathf.Lerp(carParticles.shiftParticle2.emissionRate, (float)((powerShift > 0f) ? 50 : 0), Time.deltaTime * 10f); } else { if (powerShift > 20f) { shifmotor = true; } carSounds.nitro.volume = Mathf.MoveTowards(carSounds.nitro.volume, 0f, Time.deltaTime * 2f); if (carSounds.nitro.volume == 0f) { carSounds.nitro.Stop(); } powerShift = Mathf.MoveTowards(powerShift, 100f, Time.deltaTime * 5f); curTorque = carSetting.carPower; carParticles.shiftParticle1.emissionRate = Mathf.Lerp(carParticles.shiftParticle1.emissionRate, 0f, Time.deltaTime * 10f); carParticles.shiftParticle2.emissionRate = Mathf.Lerp(carParticles.shiftParticle2.emissionRate, 0f, Time.deltaTime * 10f); } wheelComponent.rotation = Mathf.Repeat(wheelComponent.rotation + Time.deltaTime * collider.rpm * 360f / 60f, 360f); wheelComponent.rotation2 = Mathf.Lerp(wheelComponent.rotation2, collider.steerAngle, 0.1f); wheelComponent.wheel.localRotation = Quaternion.Euler(wheelComponent.rotation, wheelComponent.rotation2, 0f); Vector3 localPosition = wheelComponent.wheel.localPosition; if (collider.GetGroundHit(ref val4)) { if (Object.op_Implicit((Object)(object)carParticles.brakeParticlePerfab)) { if ((Object)(object)Particle[num3] == (Object)null) { Particle[num3] = Object.Instantiate<GameObject>(carParticles.brakeParticlePerfab, wheelComponent.wheel.position, Quaternion.identity); ((Object)Particle[num3]).name = "WheelParticle"; Particle[num3].transform.parent = ((Component)this).transform; Particle[num3].AddComponent<AudioSource>(); Particle[num3].GetComponent<AudioSource>().maxDistance = 50f; Particle[num3].GetComponent<AudioSource>().spatialBlend = 1f; Particle[num3].GetComponent<AudioSource>().dopplerLevel = 5f; Particle[num3].GetComponent<AudioSource>().rolloffMode = (AudioRolloffMode)2; } ParticleSystem component = Particle[num3].GetComponent<ParticleSystem>(); bool flag2 = false; for (int l = 0; l < carSetting.hitGround.Length; l++) { if (((Component)((WheelHit)(ref val4)).collider).CompareTag(carSetting.hitGround[l].tag)) { flag2 = carSetting.hitGround[l].grounded; if ((brake || Mathf.Abs(((WheelHit)(ref val4)).sidewaysSlip) > 0.5f) && speed > 1f) { Particle[num3].GetComponent<AudioSource>().clip = carSetting.hitGround[l].brakeSound; } else if ((Object)(object)Particle[num3].GetComponent<AudioSource>().clip != (Object)(object)carSetting.hitGround[l].groundSound && !Particle[num3].GetComponent<AudioSource>().isPlaying) { Particle[num3].GetComponent<AudioSource>().clip = carSetting.hitGround[l].groundSound; } Particle[num3].GetComponent<ParticleSystem>().startColor = carSetting.hitGround[l].brakeColor; } } if (flag2 && speed > 5f && !brake) { component.enableEmission = true; Particle[num3].GetComponent<AudioSource>().volume = 0.5f; if (!Particle[num3].GetComponent<AudioSource>().isPlaying) { Particle[num3].GetComponent<AudioSource>().Play(); } } else if ((brake || Mathf.Abs(((WheelHit)(ref val4)).sidewaysSlip) > 0.6f) && speed > 1f) { if (accel < 0f || ((brake || Mathf.Abs(((WheelHit)(ref val4)).sidewaysSlip) > 0.6f) && (wheelComponent == wheels[2] || wheelComponent == wheels[3]))) { if (!Particle[num3].GetComponent<AudioSource>().isPlaying) { Particle[num3].GetComponent<AudioSource>().Play(); } component.enableEmission = true; Particle[num3].GetComponent<AudioSource>().volume = 10f; } } else { component.enableEmission = false; Particle[num3].GetComponent<AudioSource>().volume = Mathf.Lerp(Particle[num3].GetComponent<AudioSource>().volume, 0f, Time.deltaTime * 10f); } } localPosition.y -= Vector3.Dot(wheelComponent.wheel.position - ((WheelHit)(ref val4)).point, ((Component)this).transform.TransformDirection(0f, 1f, 0f) / ((Component)this).transform.lossyScale.x) - collider.radius; localPosition.y = Mathf.Clamp(localPosition.y, -10f, wheelComponent.pos_y); flag = flag || wheelComponent.drive; } else { if ((Object)(object)Particle[num3] != (Object)null) { ParticleSystem component2 = Particle[num3].GetComponent<ParticleSystem>(); component2.enableEmission = false; } localPosition.y = wheelComponent.startPos.y - wheelComponent.settings.Distance; myRigidbody.AddForce(Vector3.down * 5000f); } num3++; wheelComponent.wheel.localPosition = localPosition; } if (num2 > 1) { num /= (float)num2; } motorRPM = 0.95f * motorRPM + 0.05f * Mathf.Abs(num * carSetting.gears[currentGear]); if (motorRPM > 5500f) { motorRPM = 5200f; } int num7 = (int)(motorRPM / efficiencyTableStep); if (num7 >= efficiencyTable.Length) { num7 = efficiencyTable.Length - 1; } if (num7 < 0) { num7 = 0; } float num8 = curTorque * carSetting.gears[currentGear] * efficiencyTable[num7]; WheelComponent[] array2 = wheels; foreach (WheelComponent wheelComponent2 in array2) { WheelCollider collider2 = wheelComponent2.collider; if (wheelComponent2.drive) { if (Mathf.Abs(collider2.rpm) > Mathf.Abs(wantedRPM)) { collider2.motorTorque = 0f; } else { float motorTorque = collider2.motorTorque; if (!brake && accel != 0f && !NeutralGear) { if ((speed < carSetting.LimitForwardSpeed && currentGear > 0) || (speed < carSetting.LimitBackwardSpeed && currentGear == 0)) { collider2.motorTorque = motorTorque * 0.9f + num8 * 1f; } else { collider2.motorTorque = 0f; collider2.brakeTorque = 2000f; } } else { collider2.motorTorque = 0f; } } } if (brake || slip2 > 2f) { collider2.steerAngle = Mathf.Lerp(collider2.steerAngle, steer * wheelComponent2.maxSteer, 0.02f); continue; } float num9 = Mathf.Clamp(speed / carSetting.maxSteerAngle, 1f, carSetting.maxSteerAngle); collider2.steerAngle = steer * (wheelComponent2.maxSteer / num9); } Pitch = Mathf.Clamp(1.2f + (motorRPM - carSetting.idleRPM) / (carSetting.shiftUpRPM - carSetting.idleRPM), 1f, 10f); shiftTime = Mathf.MoveTowards(shiftTime, 0f, 0.1f); if (Pitch == 1f) { carSounds.IdleEngine.volume = Mathf.Lerp(carSounds.IdleEngine.volume, 1f, 0.1f); carSounds.LowEngine.volume = Mathf.Lerp(carSounds.LowEngine.volume, 0.5f, 0.1f); carSounds.HighEngine.volume = Mathf.Lerp(carSounds.HighEngine.volume, 0f, 0.1f); } else { carSounds.IdleEngine.volume = Mathf.Lerp(carSounds.IdleEngine.volume, 1.8f - Pitch, 0.1f); if ((Pitch > PitchDelay || accel > 0f) && shiftTime == 0f) { carSounds.LowEngine.volume = Mathf.Lerp(carSounds.LowEngine.volume, 0f, 0.2f); carSounds.HighEngine.volume = Mathf.Lerp(carSounds.HighEngine.volume, 1f, 0.1f); } else { carSounds.LowEngine.volume = Mathf.Lerp(carSounds.LowEngine.volume, 0.5f, 0.1f); carSounds.HighEngine.volume = Mathf.Lerp(carSounds.HighEngine.volume, 0f, 0.2f); } carSounds.HighEngine.pitch = Pitch; carSounds.LowEngine.pitch = Pitch; PitchDelay = Pitch; } if (!isOn) { carSounds.IdleEngine.volume = 0f; carSounds.LowEngine.volume = 0f; carSounds.HighEngine.volume = 0f; } } private void OnDrawGizmos() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0075: 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_0099: 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_00b1: Unknown result type (might be due to invalid IL or missing references) if (carSetting.showNormalGizmos && !Application.isPlaying) { Matrix4x4 matrix = Matrix4x4.TRS(((Component)this).transform.position, ((Component)this).transform.rotation, ((Component)this).transform.lossyScale); Gizmos.matrix = matrix; Gizmos.color = new Color(1f, 0f, 0f, 0.5f); Gizmos.DrawCube(Vector3.up / 1.5f, new Vector3(2.5f, 2f, 6f)); Gizmos.DrawSphere(carSetting.shiftCentre / ((Component)this).transform.lossyScale.x, 0.2f); } } }