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.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using FistVR;
using HarmonyLib;
using OtherLoader;
using Sodalite.Api;
using UnityEngine;
using UnityEngine.Serialization;
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]
[ExecuteInEditMode]
[RequireComponent(typeof(Camera))]
public class DeferredNightVisionEffect : MonoBehaviour
{
[SerializeField]
[Tooltip("The main color of the NV effect")]
public Color m_NVColor = new Color(0f, 1f, 0.1724138f, 0f);
[SerializeField]
[Tooltip("The color that the NV effect will 'bleach' towards (white = default)")]
public Color m_TargetBleachColor = new Color(1f, 1f, 1f, 0f);
[Range(0f, 0.1f)]
[Tooltip("How much base lighting does the NV effect pick up")]
public float m_baseLightingContribution = 0.025f;
[Range(0f, 128f)]
[Tooltip("The higher this value, the more bright areas will get 'bleached out'")]
public float m_LightSensitivityMultiplier = 100f;
private Material m_Material;
private Shader m_Shader;
[Tooltip("Do we want to apply a vignette to the edges of the screen?")]
public bool useVignetting = true;
public Shader NightVisionShader => m_Shader;
private void DestroyMaterial(Material mat)
{
if (Object.op_Implicit((Object)(object)mat))
{
Object.DestroyImmediate((Object)(object)mat);
mat = null;
}
}
private void CreateMaterials()
{
if ((Object)(object)m_Shader == (Object)null)
{
m_Shader = Shader.Find("Custom/DeferredNightVisionShader");
}
if ((Object)(object)m_Material == (Object)null && (Object)(object)m_Shader != (Object)null && m_Shader.isSupported)
{
m_Material = CreateMaterial(m_Shader);
}
}
private Material CreateMaterial(Shader shader)
{
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Expected O, but got Unknown
if (!Object.op_Implicit((Object)(object)shader))
{
return null;
}
Material val = new Material(shader);
((Object)val).hideFlags = (HideFlags)61;
return val;
}
private void OnDisable()
{
DestroyMaterial(m_Material);
m_Material = null;
m_Shader = null;
}
[ContextMenu("UpdateShaderValues")]
public void UpdateShaderValues()
{
//IL_0023: Unknown result type (might be due to invalid IL or missing references)
//IL_0028: Unknown result type (might be due to invalid IL or missing references)
//IL_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)
if (!((Object)(object)m_Material == (Object)null))
{
m_Material.SetVector("_NVColor", Color.op_Implicit(m_NVColor));
m_Material.SetVector("_TargetWhiteColor", Color.op_Implicit(m_TargetBleachColor));
m_Material.SetFloat("_BaseLightingContribution", m_baseLightingContribution);
m_Material.SetFloat("_LightSensitivityMultiplier", m_LightSensitivityMultiplier);
m_Material.shaderKeywords = null;
if (useVignetting)
{
Shader.EnableKeyword("USE_VIGNETTE");
}
else
{
Shader.DisableKeyword("USE_VIGNETTE");
}
}
}
private void OnEnable()
{
CreateMaterials();
UpdateShaderValues();
}
public void ReloadShaders()
{
OnDisable();
}
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
UpdateShaderValues();
CreateMaterials();
Graphics.Blit((Texture)(object)source, destination, m_Material);
}
}
public class ActivateGoggles : MonoBehaviour
{
public Renderer[] HotObjects;
public LayerMask Cold;
public LayerMask Hot;
public GameObject PostProcessObject;
[SerializeField]
[FormerlySerializedAs("Material")]
private Material _material;
private Material SkyboxMaterial;
private Dictionary<Renderer, Material> HotObjectMaterialCache;
private bool enabled = false;
private void Start()
{
HotObjectMaterialCache = new Dictionary<Renderer, Material>();
((MonoBehaviour)this).StartCoroutine(WaitForActivation());
}
private IEnumerator WaitForActivation()
{
yield return (object)new WaitUntil((Func<bool>)(() => Input.GetKeyDown((KeyCode)49) && !enabled));
PostProcessObject.SetActive(true);
IEnumerable<Renderer> renderers = Object.FindObjectsOfType<Renderer>().ToList().Except(HotObjects);
foreach (Renderer item in renderers)
{
((Component)item).gameObject.layer = 10;
}
_material.SetColor("_MainColor", Color.white);
Renderer[] hotObjects = HotObjects;
foreach (Renderer val in hotObjects)
{
HotObjectMaterialCache.Add(val, val.material);
((Component)val).gameObject.layer = 9;
val.material = _material;
}
SkyboxMaterial = RenderSettings.skybox;
RenderSettings.skybox = null;
enabled = true;
yield return WaitForDeactivation();
}
private IEnumerator WaitForDeactivation()
{
yield return (object)new WaitUntil((Func<bool>)(() => Input.GetKeyDown((KeyCode)50) && enabled));
PostProcessObject.SetActive(false);
IEnumerable<Renderer> renderers = Object.FindObjectsOfType<Renderer>().ToList().Except(HotObjects);
foreach (Renderer item in renderers)
{
((Component)item).gameObject.layer = 0;
}
_material.SetColor("_MainColor", Color.white);
Renderer[] hotObjects = HotObjects;
foreach (Renderer val in hotObjects)
{
((Component)val).gameObject.layer = 0;
val.material = HotObjectMaterialCache[val];
}
HotObjectMaterialCache.Clear();
enabled = false;
RenderSettings.skybox = SkyboxMaterial;
yield return WaitForActivation();
}
}
public class HeatController : MonoBehaviour
{
public IEnumerator DecreaseHeat()
{
float slide = 0f;
while (slide < 1f)
{
slide += Time.deltaTime * 0.1f;
Material[] materials = ((Renderer)((Component)this).GetComponent<SkinnedMeshRenderer>()).materials;
materials[0].SetColor("_MainColor", Color.Lerp(Color.white, Color.black, slide));
((Renderer)((Component)this).GetComponent<SkinnedMeshRenderer>()).materials = materials;
yield return null;
}
}
}
public class KillTheGuyAnimatorTrigger : MonoBehaviour
{
private Animator animator;
private HeatController[] _heatControllers;
private void Awake()
{
animator = ((Component)this).GetComponent<Animator>();
_heatControllers = Object.FindObjectsOfType<HeatController>();
((MonoBehaviour)this).StartCoroutine(WaitForPress());
}
private IEnumerator WaitForPress()
{
yield return (object)new WaitUntil((Func<bool>)(() => Input.GetKeyDown((KeyCode)112)));
animator.SetTrigger("Kill");
yield return (object)new WaitForSeconds(2f);
ActivateAllHeatDowngrades();
}
private void ActivateAllHeatDowngrades()
{
HeatController[] heatControllers = _heatControllers;
foreach (HeatController heatController in heatControllers)
{
((MonoBehaviour)this).StartCoroutine(heatController.DecreaseHeat());
}
}
}
public class ThermalVisionPlayerEventReceiver : MonoBehaviour
{
private Material m_Material;
private void Start()
{
m_Material = ((Component)this).GetComponent<Renderer>().material;
}
private void OnEnable()
{
ThermalVision.onThermalVisionEnabled += OnThermalModeInit;
HeatVision.onHeatVisionEnabled += OnThermalMode2Init;
}
private void OnDisable()
{
ThermalVision.onThermalVisionEnabled -= OnThermalModeInit;
HeatVision.onHeatVisionEnabled -= OnThermalMode2Init;
}
private void OnThermalModeInit(bool enabled)
{
//IL_0039: 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_001d: Unknown result type (might be due to invalid IL or missing references)
if (enabled)
{
m_Material.SetColor("_EmissionColor", Color.white * 5f);
}
else
{
m_Material.SetColor("_EmissionColor", Color.black);
}
}
private void OnThermalMode2Init(bool enabled)
{
//IL_0039: 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_001d: Unknown result type (might be due to invalid IL or missing references)
if (enabled)
{
m_Material.SetColor("_EmissionColor", Color.white * 5f);
}
else
{
m_Material.SetColor("_EmissionColor", Color.black);
}
}
}
public class RangeFinder : MonoBehaviour
{
private Text _text;
private Camera _mainCam;
private void Start()
{
_text = ((Component)this).GetComponent<Text>();
_mainCam = Camera.main;
}
private void Update()
{
//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_002e: 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_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
Ray val = _mainCam.ScreenPointToRay(new Vector3((float)Screen.width / 2f, (float)Screen.height / 2f, 0f));
RaycastHit val2 = default(RaycastHit);
if (Physics.Raycast(val, ref val2, 250f) && Object.op_Implicit((Object)(object)((RaycastHit)(ref val2)).collider))
{
_text.text = $"RNG {Mathf.Abs(((RaycastHit)(ref val2)).point.z)}";
}
else
{
_text.text = string.Format("RNG {0}", "-");
}
}
}
public class UIController : MonoBehaviour
{
public GameObject panelNightVision;
public GameObject panelThermalVision;
public GameObject panelHeatVision;
private void OnEnable()
{
Nightvision.onNightVisionEnabled += onNightVisionEnabled;
HeatVision.onHeatVisionEnabled += onHeatVisionEnabled;
ThermalVision.onThermalVisionEnabled += onThermalVisionEnabled;
}
private void OnDisable()
{
Nightvision.onNightVisionEnabled -= onNightVisionEnabled;
HeatVision.onHeatVisionEnabled -= onHeatVisionEnabled;
ThermalVision.onThermalVisionEnabled -= onThermalVisionEnabled;
}
private void onNightVisionEnabled(bool enabled)
{
if (Object.op_Implicit((Object)(object)panelNightVision))
{
panelNightVision.SetActive(enabled);
}
}
private void onHeatVisionEnabled(bool enabled)
{
if (Object.op_Implicit((Object)(object)panelHeatVision))
{
panelHeatVision.SetActive(enabled);
}
}
private void onThermalVisionEnabled(bool enabled)
{
if (Object.op_Implicit((Object)(object)panelThermalVision))
{
panelThermalVision.SetActive(enabled);
}
}
}
public class VisionController : MonoBehaviour
{
private Nightvision nightVision;
private HeatVision heatVision;
private ThermalVision thermalVision;
private float zoom;
private void Start()
{
nightVision = Object.FindObjectOfType<Nightvision>();
heatVision = Object.FindObjectOfType<HeatVision>();
thermalVision = Object.FindObjectOfType<ThermalVision>();
}
private void Update()
{
if (Input.GetKeyDown((KeyCode)110))
{
((Behaviour)nightVision).enabled = !((Behaviour)nightVision).enabled;
}
if (Input.GetKeyDown((KeyCode)104))
{
((Behaviour)heatVision).enabled = !((Behaviour)heatVision).enabled;
}
if (Input.GetKeyDown((KeyCode)116))
{
((Behaviour)thermalVision).enabled = !((Behaviour)thermalVision).enabled;
}
if (((Behaviour)nightVision).enabled)
{
zoom = Mathf.Clamp(zoom + Input.GetAxis("Mouse ScrollWheel"), 0f, 8f);
nightVision._Zoom = zoom;
}
}
}
[ExecuteInEditMode]
[AddComponentMenu("Image Effects/Vision/NightVision")]
public class Nightvision : MonoBehaviour
{
public delegate void OnNightVisionEnabledDelegate(bool enabled);
public Shader shader;
public Texture2D _NoiseTex;
public Texture2D _MaskTex;
[Range(0f, 1f)]
public float _LuminanceThreshold = 0.3f;
[Range(2f, 20f)]
public float _ColorAmplification = 6f;
[Range(0.1f, 1f)]
public float _LightTreshold = 0.2f;
[Range(0f, 8f)]
public float _Zoom = 0f;
private Material m_Material;
protected Material material
{
get
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
if ((Object)(object)m_Material == (Object)null)
{
m_Material = new Material(shader);
((Object)m_Material).hideFlags = (HideFlags)61;
}
return m_Material;
}
}
public static event OnNightVisionEnabledDelegate onNightVisionEnabled;
private void OnEnable()
{
if (Nightvision.onNightVisionEnabled != null)
{
Nightvision.onNightVisionEnabled(enabled: true);
}
}
protected virtual void Start()
{
if (!SystemInfo.supportsImageEffects)
{
((Behaviour)this).enabled = false;
return;
}
if ((Object)(object)shader == (Object)null)
{
shader = Shader.Find("Hidden/NightVision");
}
if (!Object.op_Implicit((Object)(object)shader) || !shader.isSupported)
{
((Behaviour)this).enabled = false;
}
}
protected virtual void OnDisable()
{
if (Object.op_Implicit((Object)(object)m_Material))
{
Object.DestroyImmediate((Object)(object)m_Material);
}
if (Nightvision.onNightVisionEnabled != null)
{
Nightvision.onNightVisionEnabled(enabled: false);
}
}
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
material.SetTexture("_NoiseTex", (Texture)(object)_NoiseTex);
material.SetTexture("_MaskTex", (Texture)(object)_MaskTex);
material.SetFloat("_LuminanceThreshold", _LuminanceThreshold);
material.SetFloat("_ColorAmplification", _ColorAmplification);
material.SetFloat("_LightTreshold", _LightTreshold);
material.SetFloat("_Zoom", _Zoom);
Graphics.Blit((Texture)(object)source, destination, material);
}
}
public class ShockShader : MonoBehaviour
{
private float counter = 0f;
private bool animate = false;
private void Start()
{
}
private void Update()
{
//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_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_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_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_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_00e5: Unknown result type (might be due to invalid IL or missing references)
if (Input.GetButtonDown("Fire1"))
{
counter = 0f;
Ray val = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit val2 = default(RaycastHit);
if (Physics.Raycast(val, ref val2, float.PositiveInfinity) && (Object)(object)((Component)((RaycastHit)(ref val2)).collider).gameObject == (Object)(object)((Component)this).gameObject)
{
Vector3 val3 = default(Vector3);
((Vector3)(ref val3))..ctor(((RaycastHit)(ref val2)).point.x - ((Component)this).transform.position.x + 0.5f, ((RaycastHit)(ref val2)).point.y - ((Component)this).transform.position.y + 0.5f, 0f);
((Component)this).GetComponent<Renderer>().material.SetVector("_Center", new Vector4(val3.x, val3.y, 0f, 0f));
((Component)this).GetComponent<Renderer>().material.SetFloat("_WaveTime", 0f);
animate = true;
}
}
if (animate)
{
if (counter < 1.5f)
{
counter += Time.deltaTime;
((Component)this).GetComponent<Renderer>().material.SetFloat("_WaveTime", counter);
}
else
{
animate = false;
}
}
}
}
[ExecuteInEditMode]
[AddComponentMenu("Image Effects/Vision/HeatVision")]
public class HeatVision : MonoBehaviour
{
public delegate void OnHeatVisionEnabledDelegate(bool enabled);
public Shader shader;
[Range(0.1f, 0.9f)]
public float _ColorAmplification = 0.4f;
private Material m_Material;
protected Material material
{
get
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
if ((Object)(object)m_Material == (Object)null)
{
m_Material = new Material(shader);
((Object)m_Material).hideFlags = (HideFlags)61;
}
return m_Material;
}
}
public static event OnHeatVisionEnabledDelegate onHeatVisionEnabled;
private void OnEnable()
{
if (HeatVision.onHeatVisionEnabled != null)
{
HeatVision.onHeatVisionEnabled(enabled: true);
}
}
protected virtual void Start()
{
if (!SystemInfo.supportsImageEffects)
{
((Behaviour)this).enabled = false;
return;
}
if ((Object)(object)shader == (Object)null)
{
shader = Shader.Find("Hidden/ThermalVision2");
}
if (!Object.op_Implicit((Object)(object)shader) || !shader.isSupported)
{
((Behaviour)this).enabled = false;
}
}
protected virtual void OnDisable()
{
if (Object.op_Implicit((Object)(object)m_Material))
{
Object.DestroyImmediate((Object)(object)m_Material);
}
if (HeatVision.onHeatVisionEnabled != null)
{
HeatVision.onHeatVisionEnabled(enabled: false);
}
}
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
material.SetFloat("_ColorAmplification", _ColorAmplification);
Graphics.Blit((Texture)(object)source, destination, material);
}
}
[ExecuteInEditMode]
[AddComponentMenu("Image Effects/Vision/ThermalVision")]
public class ThermalVision : MonoBehaviour
{
public delegate void OnThermalVisionEnabledDelegate(bool enabled);
public Shader shader;
[Range(0.1f, 0.9f)]
public float _ColorAmplification = 0.6f;
private Material m_Material;
protected Material material
{
get
{
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_0024: Expected O, but got Unknown
if ((Object)(object)m_Material == (Object)null)
{
m_Material = new Material(shader);
((Object)m_Material).hideFlags = (HideFlags)61;
}
return m_Material;
}
}
public static event OnThermalVisionEnabledDelegate onThermalVisionEnabled;
private void OnEnable()
{
if (ThermalVision.onThermalVisionEnabled != null)
{
ThermalVision.onThermalVisionEnabled(enabled: true);
}
}
protected virtual void Start()
{
if (!SystemInfo.supportsImageEffects)
{
((Behaviour)this).enabled = false;
return;
}
if ((Object)(object)shader == (Object)null)
{
shader = Shader.Find("Hidden/ThermalVision");
}
if (!Object.op_Implicit((Object)(object)shader) || !shader.isSupported)
{
((Behaviour)this).enabled = false;
}
}
protected virtual void OnDisable()
{
if (Object.op_Implicit((Object)(object)m_Material))
{
Object.DestroyImmediate((Object)(object)m_Material);
}
if (ThermalVision.onThermalVisionEnabled != null)
{
ThermalVision.onThermalVisionEnabled(enabled: false);
}
}
private void OnRenderImage(RenderTexture source, RenderTexture destination)
{
material.SetFloat("_ColorAmplification", _ColorAmplification);
Graphics.Blit((Texture)(object)source, destination, material);
}
}
[AddComponentMenu("Camera-Control/Mouse Look")]
public class MouseLook : MonoBehaviour
{
public enum RotationAxes
{
MouseXAndY,
MouseX,
MouseY
}
public RotationAxes axes = RotationAxes.MouseXAndY;
public float sensitivityX = 15f;
public float sensitivityY = 15f;
public float minimumX = -360f;
public float maximumX = 360f;
public float minimumY = -60f;
public float maximumY = 60f;
private float rotationY = 0f;
private void Update()
{
//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_0081: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_011e: Unknown result type (might be due to invalid IL or missing references)
//IL_012b: Unknown result type (might be due to invalid IL or missing references)
if (axes == RotationAxes.MouseXAndY)
{
float num = ((Component)this).transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);
((Component)this).transform.localEulerAngles = new Vector3(0f - rotationY, num, 0f);
}
else if (axes == RotationAxes.MouseX)
{
((Component)this).transform.Rotate(0f, Input.GetAxis("Mouse X") * sensitivityX, 0f);
}
else
{
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);
((Component)this).transform.localEulerAngles = new Vector3(0f - rotationY, ((Component)this).transform.localEulerAngles.y, 0f);
}
}
private void Start()
{
if (Object.op_Implicit((Object)(object)((Component)this).GetComponent<Rigidbody>()))
{
((Component)this).GetComponent<Rigidbody>().freezeRotation = true;
}
}
}
public class Move : MonoBehaviour
{
[SerializeField]
private float amplitude = 1f;
[SerializeField]
private float timeScale = 1f;
private Transform transform;
private Vector3 startPosition;
private void Start()
{
//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)
transform = ((Component)this).GetComponent<Transform>();
startPosition = transform.position;
}
private void Update()
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
transform.position = new Vector3(amplitude * Mathf.Sin(Time.time * timeScale), startPosition.y, startPosition.z);
}
}
public class Rotate : MonoBehaviour
{
[SerializeField]
private float amplitude;
[SerializeField]
private float timeScale;
private Transform transform;
private Quaternion startRotation;
private void Start()
{
//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)
transform = ((Component)this).GetComponent<Transform>();
startRotation = transform.rotation;
}
private void Update()
{
//IL_0008: 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)
transform.rotation = startRotation * Quaternion.Euler(0f, 0f, amplitude * Mathf.Cos(Time.time * timeScale));
}
}
[ExecuteInEditMode]
public class BezierCurveLineRenderer : MonoBehaviour
{
public Transform[] points;
public LineRenderer lineRenderer;
public int vertexCount = 12;
private void Start()
{
}
private void Update()
{
//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_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_0091: Unknown result type (might be due to invalid IL or missing references)
if (points == null || points.Length <= 0)
{
lineRenderer.positionCount = 0;
lineRenderer.SetPositions((Vector3[])(object)new Vector3[1] { Vector3.zero });
return;
}
List<Vector3> list = new List<Vector3>();
for (float num = 0f; num <= 1f; num += 1f / (float)vertexCount)
{
Vector3 item = CalculateBezierPoint(num, points.Select((Transform point) => point.position));
list.Add(item);
}
lineRenderer.positionCount = list.Count;
lineRenderer.SetPositions(list.ToArray());
}
private Vector3 CalculateBezierPoint(float ratio, IEnumerable<Vector3> points)
{
//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_00ab: 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_0060: Unknown result type (might be due to invalid IL or missing references)
//IL_0065: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: 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_004f: 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)
if (points.Count() == 1)
{
return points.First();
}
LinkedList<Vector3> linkedList = new LinkedList<Vector3>();
Vector3? val = null;
foreach (Vector3 point in points)
{
if (!val.HasValue)
{
val = point;
continue;
}
linkedList.AddLast(Vector3.Lerp(val.Value, point, ratio));
val = point;
}
return CalculateBezierPoint(ratio, linkedList);
}
private void OnDrawGizmos()
{
}
}
public class Chunk : MonoBehaviour
{
public int width;
private Color[,,] chunkData;
private void Awake()
{
chunkData = new Color[width, width, width];
}
internal void SetBlock(int x, int y, int z, Color blockData)
{
//IL_000f: 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)
chunkData[x, y, z] = blockData;
((Component)this).SendMessage("BlockUpdate", (object)this);
}
internal Color GetBlock(int x, int y, int z)
{
//IL_000a: 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_0015: Unknown result type (might be due to invalid IL or missing references)
return chunkData[x, y, z];
}
}
[RequireComponent(typeof(MeshFilter))]
public class ChunkMeshGenerator : MonoBehaviour
{
private class Block
{
public int x;
public int y;
public int z;
public Color color;
public Block(int x, int y, int z, Color color)
{
//IL_001d: 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)
this.x = x;
this.y = y;
this.z = z;
this.color = color;
}
}
private MeshFilter filter;
private void BlockUpdate(Chunk updatedChunk)
{
Mesh mesh = GenerateMesh(updatedChunk);
if ((Object)(object)filter == (Object)null)
{
filter = ((Component)this).GetComponent<MeshFilter>();
}
filter.mesh = mesh;
}
private Mesh GenerateMesh(Chunk updatedChunk)
{
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Expected O, but got Unknown
//IL_0045: 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)
Mesh val = new Mesh();
List<Color> list = new List<Color>();
List<Vector3> list2 = new List<Vector3>();
List<int> list3 = new List<int>();
for (int i = 0; i < updatedChunk.width; i++)
{
for (int j = 0; j < updatedChunk.width; j++)
{
for (int k = 0; k < updatedChunk.width; k++)
{
Block block = CheckBlock(updatedChunk, i, j, k);
if (block.color != default(Color))
{
Block[] adjacentBlocks = new Block[6]
{
CheckBlock(updatedChunk, i - 1, j, k),
CheckBlock(updatedChunk, i + 1, j, k),
CheckBlock(updatedChunk, i, j - 1, k),
CheckBlock(updatedChunk, i, j + 1, k),
CheckBlock(updatedChunk, i, j, k - 1),
CheckBlock(updatedChunk, i, j, k + 1)
};
GenerateMeshForAdjacentBlocks(block, adjacentBlocks, list, list3, list2);
}
}
}
}
val.SetVertices(list2);
val.SetColors(list);
val.SetTriangles(list3, 0);
return val;
}
private void GenerateMeshForAdjacentBlocks(Block block, Block[] adjacentBlocks, List<Color> generatedColors, List<int> generatedTriangles, List<Vector3> generatedVertices)
{
//IL_0011: 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_001e: 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_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_00b1: 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_00b8: 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_00e2: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00e9: 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_00cd: 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_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: 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_010b: 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_010f: 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_011b: 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_012d: 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_0131: 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_0138: 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_0146: 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_014d: 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_015b: 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_015f: Unknown result type (might be due to invalid IL or missing references)
//IL_0164: 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_0172: 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_017b: 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_0189: Unknown result type (might be due to invalid IL or missing references)
//IL_0195: 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_01ad: Unknown result type (might be due to invalid IL or missing references)
Vector3 val = default(Vector3);
Vector3 val2 = default(Vector3);
foreach (Block block2 in adjacentBlocks)
{
if (block2.color == default(Color))
{
((Vector3)(ref val))..ctor((float)block.x, (float)block.y, (float)block.z);
((Vector3)(ref val2))..ctor((float)block2.x, (float)block2.y, (float)block2.z);
bool flag = block.x != block2.x;
bool flag2 = block.y != block2.y;
bool flag3 = block.z != block2.z;
Vector3 zero = Vector3.zero;
Vector3 zero2 = Vector3.zero;
if (flag)
{
zero = Vector3.forward;
zero2 = Vector3.up;
}
else if (flag2)
{
zero = Vector3.right;
zero2 = Vector3.forward;
}
else
{
zero = Vector3.right;
zero2 = Vector3.up;
}
zero *= 0.5f;
zero2 *= 0.5f;
Vector3 val3 = (val2 + val) / 2f;
int count = generatedVertices.Count;
generatedVertices.Add(val3 + zero + zero2);
generatedVertices.Add(val3 + zero - zero2);
generatedVertices.Add(val3 - zero + zero2);
generatedVertices.Add(val3 - zero - zero2);
generatedColors.Add(block.color);
generatedColors.Add(block.color);
generatedColors.Add(block.color);
generatedColors.Add(block.color);
generatedTriangles.Add(count);
generatedTriangles.Add(count + 1);
generatedTriangles.Add(count + 2);
generatedTriangles.Add(count + 1);
generatedTriangles.Add(count + 2);
generatedTriangles.Add(count + 3);
}
}
}
private Block CheckBlock(Chunk updatedChunk, int x, int y, int z)
{
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
if (x < 0 || y < 0 || z < 0 || x >= updatedChunk.width || y >= updatedChunk.width || z >= updatedChunk.width)
{
return new Block(x, y, z, default(Color));
}
return new Block(x, y, z, updatedChunk.GetBlock(x, y, z));
}
}
public class PerlinChunkGenerator : MonoBehaviour
{
public int seed;
private Chunk chunk;
private void Start()
{
chunk = ((Component)this).GetComponent<Chunk>();
Generate(chunk, seed);
}
private void Generate(Chunk chunk, int seed)
{
//IL_0075: 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_007d: 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_0095: 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_00d8: 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)
Random.InitState(seed);
for (int i = 0; i < chunk.width; i++)
{
for (int j = 0; j < chunk.width; j++)
{
for (int k = 0; k < chunk.width; k++)
{
float num = (Mathf.PerlinNoise((float)i / (float)chunk.width, (float)j / (float)chunk.width) + Mathf.PerlinNoise((float)i / (float)chunk.width, (float)k / (float)chunk.width) + Mathf.PerlinNoise((float)k / (float)chunk.width, (float)j / (float)chunk.width)) / 3f;
Color blockData = default(Color);
if ((double)num > 0.75)
{
blockData = Color.red;
}
else if ((double)num > 0.5)
{
blockData = Color.green;
}
else if ((double)num > 0.25)
{
blockData = Color.blue;
}
chunk.SetBlock(i, j, k, blockData);
}
}
}
}
}
public class BuildHeightMap : MonoBehaviour
{
public float height;
public float offset = 0.25f;
public float step = 0.25f;
public Material material;
private void Start()
{
//IL_002e: 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)
for (float num = offset; num < height; num += step)
{
GameObject val = GameObject.CreatePrimitive((PrimitiveType)4);
MeshRenderer component = val.GetComponent<MeshRenderer>();
((Renderer)component).material = material;
val.transform.position = Vector3.up * num;
}
}
private void Update()
{
}
}
public class ConwaysGameOfLife : MonoBehaviour
{
public Texture input;
public int width = 512;
public int height = 512;
public ComputeShader compute;
public RenderTexture renderTexPing;
public RenderTexture renderTexPong;
public Material material;
private int kernel;
private bool pingPong;
private void Start()
{
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_004d: Expected O, but got Unknown
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a2: Expected O, but got Unknown
if (height >= 1 && width >= 1)
{
kernel = compute.FindKernel("GameOfLife");
renderTexPing = new RenderTexture(width, height, 24);
((Texture)renderTexPing).wrapMode = (TextureWrapMode)0;
renderTexPing.enableRandomWrite = true;
((Texture)renderTexPing).filterMode = (FilterMode)0;
renderTexPing.useMipMap = false;
renderTexPing.Create();
renderTexPong = new RenderTexture(width, height, 24);
((Texture)renderTexPong).wrapMode = (TextureWrapMode)0;
renderTexPong.enableRandomWrite = true;
((Texture)renderTexPong).filterMode = (FilterMode)0;
renderTexPong.useMipMap = false;
renderTexPong.Create();
Graphics.Blit(input, renderTexPing);
pingPong = true;
compute.SetFloat("Width", (float)width);
compute.SetFloat("Height", (float)height);
}
}
private void Update()
{
if (height >= 1 && width >= 1)
{
if (pingPong)
{
compute.SetTexture(kernel, "Input", (Texture)(object)renderTexPing);
compute.SetTexture(kernel, "Result", (Texture)(object)renderTexPong);
compute.Dispatch(kernel, width / 8, height / 8, 1);
material.mainTexture = (Texture)(object)renderTexPong;
pingPong = false;
}
else
{
compute.SetTexture(kernel, "Input", (Texture)(object)renderTexPong);
compute.SetTexture(kernel, "Result", (Texture)(object)renderTexPing);
compute.Dispatch(kernel, width / 8, height / 8, 1);
material.mainTexture = (Texture)(object)renderTexPing;
pingPong = true;
}
}
}
}
[ImageEffectAllowedInSceneView]
[ExecuteInEditMode]
public class NightVisionImageEffect : MonoBehaviour
{
private Camera camera;
public Material effectMaterial;
private void OnEnable()
{
camera = ((Component)this).GetComponent<Camera>();
camera.depthTextureMode = (DepthTextureMode)1;
}
[ImageEffectOpaque]
private void OnRenderImage(RenderTexture src, RenderTexture dst)
{
Graphics.Blit((Texture)(object)src, dst, effectMaterial);
}
}
[ExecuteInEditMode]
public class PixelateImageEffect : MonoBehaviour
{
public Material effectMaterial;
private void OnRenderImage(RenderTexture src, RenderTexture dst)
{
Graphics.Blit((Texture)(object)src, dst, effectMaterial);
}
}
[ExecuteInEditMode]
public class TracerPositionUpdater : MonoBehaviour
{
public Material material;
public Transform parent;
private void Start()
{
if ((Object)(object)parent == (Object)null)
{
parent = ((Component)Camera.main).transform;
}
}
private void Update()
{
//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_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_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_005c: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)material != (Object)null)
{
material.SetVector("_EchoLocation", new Vector4(((Component)this).transform.position.x, ((Component)this).transform.position.y, ((Component)this).transform.position.z, 0f));
}
}
}
[ExecuteInEditMode]
public class MagicLightSource : MonoBehaviour
{
public Material reveal;
public Light light;
private void Start()
{
}
private void Update()
{
//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_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)
reveal.SetVector("_LightPosition", Vector4.op_Implicit(((Component)light).transform.position));
reveal.SetVector("_LightDirection", Vector4.op_Implicit(-((Component)light).transform.forward));
reveal.SetFloat("_LightAngle", light.spotAngle);
}
}
public class ProjectileAttackSimulator : MonoBehaviour
{
public float radius;
public float shotCooldown;
private float timer;
public GameObject projectile;
private void Start()
{
}
private void Update()
{
//IL_002c: 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_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_004f: 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)
timer += Time.deltaTime;
while (timer > shotCooldown)
{
timer -= shotCooldown;
Vector3 val = Random.onUnitSphere * radius;
Quaternion val2 = Quaternion.LookRotation(-val);
Object.Instantiate<GameObject>(projectile, val, val2);
Debug.Log((object)"New Projectile");
}
}
}
[ExecuteInEditMode]
public class ShieldController : MonoBehaviour
{
private static readonly Vector4[] defaultEmptyVector = (Vector4[])(object)new Vector4[1]
{
new Vector4(0f, 0f, 0f, 0f)
};
public Vector4[] points;
public Material shieldMaterial;
private void Start()
{
points = (Vector4[])(object)new Vector4[50];
}
private void Update()
{
shieldMaterial.SetInt("_PointsSize", points.Length);
if (points.Length <= 0)
{
shieldMaterial.SetVectorArray("_Points", defaultEmptyVector);
}
else
{
shieldMaterial.SetVectorArray("_Points", points);
}
}
}
public class ShieldProjectile : MonoBehaviour
{
public float projectileBias = 0.25f;
public float speed = 10f;
private void Start()
{
}
private void Update()
{
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: 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_003d: 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_0052: 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)
float num = speed * Time.deltaTime;
Transform transform = ((Component)this).transform;
transform.position += ((Component)this).transform.forward * num;
Ray val = default(Ray);
((Ray)(ref val))..ctor(((Component)this).transform.position, ((Component)this).transform.forward);
RaycastHit val2 = default(RaycastHit);
if (Physics.Raycast(val, ref val2, num + projectileBias))
{
((Component)((RaycastHit)(ref val2)).collider).gameObject.SendMessage("OnProjectileHit", (object)((RaycastHit)(ref val2)).point, (SendMessageOptions)1);
Object.Destroy((Object)(object)((Component)this).gameObject);
}
}
}
[ExecuteInEditMode]
public class GrassPointCloudRenderer : MonoBehaviour
{
private Mesh mesh;
public MeshFilter filter;
public int seed;
public Vector2 size;
[Range(1f, 60000f)]
public int grassNumber;
public float startHeight = 1000f;
public float grassOffset = 0f;
private Vector3? lastPosition = null;
private List<Matrix4x4> materices;
private void Update()
{
//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_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_00f7: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0103: Unknown result type (might be due to invalid IL or missing references)
//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
//IL_01bc: Expected O, but got Unknown
//IL_0207: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: 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_013c: 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_0144: 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_0192: Unknown result type (might be due to invalid IL or missing references)
if (lastPosition.HasValue)
{
Vector3? val = lastPosition;
if (val.HasValue && !(val.GetValueOrDefault() != ((Component)this).transform.position))
{
return;
}
}
Random.InitState(seed);
List<Vector3> list = new List<Vector3>(grassNumber);
int[] array = new int[grassNumber];
List<Color> list2 = new List<Color>(grassNumber);
List<Vector3> list3 = new List<Vector3>(grassNumber);
Ray val2 = default(Ray);
RaycastHit val3 = default(RaycastHit);
for (int i = 0; i < grassNumber; i++)
{
Vector3 position = ((Component)this).transform.position;
position.y = startHeight;
position.x += size.x * Random.Range(-0.5f, 0.5f);
position.z += size.y * Random.Range(-0.5f, 0.5f);
((Ray)(ref val2))..ctor(position, Vector3.down);
if (Physics.Raycast(val2, ref val3))
{
Vector3 point = ((RaycastHit)(ref val3)).point;
point.y += grassOffset;
point -= ((Component)this).transform.position;
list.Add(point);
array[i] = i;
list2.Add(new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f), 1f));
list3.Add(((RaycastHit)(ref val3)).normal);
}
}
mesh = new Mesh();
mesh.SetVertices(list);
mesh.SetIndices(array, (MeshTopology)5, 0);
mesh.SetColors(list2);
mesh.SetNormals(list3);
filter.mesh = mesh;
lastPosition = ((Component)this).transform.position;
}
}
[ExecuteInEditMode]
public class GrassRenderer : MonoBehaviour
{
public Mesh grassMesh;
public Material material;
public int seed;
public Vector2 size;
[Range(1f, 1000f)]
public int grassNumber;
public float startHeight = 1000f;
public float grassOffset = 0f;
private void Update()
{
//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_008d: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_0098: Unknown result type (might be due to invalid IL or missing references)
//IL_00a8: Unknown result type (might be due to invalid IL or missing references)
//IL_00ad: Unknown result type (might be due to invalid IL or missing references)
//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
//IL_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_00ce: Unknown result type (might be due to invalid IL or missing references)
Random.InitState(seed);
List<Matrix4x4> list = new List<Matrix4x4>(grassNumber);
Ray val = default(Ray);
RaycastHit val2 = default(RaycastHit);
for (int i = 0; i < grassNumber; i++)
{
Vector3 position = ((Component)this).transform.position;
position.y = startHeight;
position.x += size.x * Random.Range(-0.5f, 0.5f);
position.z += size.y * Random.Range(-0.5f, 0.5f);
((Ray)(ref val))..ctor(position, Vector3.down);
if (Physics.Raycast(val, ref val2))
{
position = ((RaycastHit)(ref val2)).point;
position.y += grassOffset;
list.Add(Matrix4x4.TRS(position, Quaternion.identity, Vector3.one));
}
}
Graphics.DrawMeshInstanced(grassMesh, 0, material, list);
}
}
[ExecuteInEditMode]
[RequireComponent(typeof(MeshFilter))]
[RequireComponent(typeof(Light))]
public class VolumetricLightMesh : MonoBehaviour
{
public float maximumOpacity = 0.25f;
private MeshFilter filter;
private Light light;
private Mesh mesh;
private void Start()
{
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
filter = ((Component)this).GetComponent<MeshFilter>();
light = ((Component)this).GetComponent<Light>();
if ((int)light.type != 0)
{
Debug.LogError((object)"Attached Volumetric Light Mesh to a non-supported Light Type. Please use Spotlight lights.");
}
}
private void Update()
{
mesh = BuildMesh();
filter.mesh = mesh;
}
private Mesh BuildMesh()
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_000c: Expected O, but got Unknown
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_0075: 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_0094: 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_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_00d3: Unknown result type (might be due to invalid IL or missing references)
//IL_00d8: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: 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_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_0113: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0134: 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_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_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_0165: 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_0179: 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_019b: Unknown result type (might be due to invalid IL or missing references)
//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
//IL_01cb: Unknown result type (might be due to invalid IL or missing references)
//IL_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_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)
//IL_0204: Unknown result type (might be due to invalid IL or missing references)
//IL_0209: Unknown result type (might be due to invalid IL or missing references)
//IL_0218: 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_022c: Unknown result type (might be due to invalid IL or missing references)
//IL_0231: 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_0244: Unknown result type (might be due to invalid IL or missing references)
//IL_0256: Unknown result type (might be due to invalid IL or missing references)
//IL_025b: Unknown result type (might be due to invalid IL or missing references)
//IL_026a: 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_027e: Unknown result type (might be due to invalid IL or missing references)
//IL_0283: Unknown result type (might be due to invalid IL or missing references)
//IL_0291: Unknown result type (might be due to invalid IL or missing references)
//IL_0296: Unknown result type (might be due to invalid IL or missing references)
mesh = new Mesh();
float num = Mathf.Tan(light.spotAngle * 0.5f * ((float)Math.PI / 180f)) * light.range;
mesh.vertices = (Vector3[])(object)new Vector3[5]
{
new Vector3(0f, 0f, 0f),
new Vector3(num, num, light.range),
new Vector3(0f - num, num, light.range),
new Vector3(0f - num, 0f - num, light.range),
new Vector3(num, 0f - num, light.range)
};
mesh.colors = (Color[])(object)new Color[5]
{
new Color(light.color.r, light.color.g, light.color.b, light.color.a * maximumOpacity),
new Color(light.color.r, light.color.g, light.color.b, 0f),
new Color(light.color.r, light.color.g, light.color.b, 0f),
new Color(light.color.r, light.color.g, light.color.b, 0f),
new Color(light.color.r, light.color.g, light.color.b, 0f)
};
mesh.triangles = new int[12]
{
0, 1, 2, 0, 2, 3, 0, 3, 4, 0,
4, 1
};
return mesh;
}
}
namespace MeatKit
{
public class HideInNormalInspectorAttribute : PropertyAttribute
{
}
}
namespace sgtbrooks.ModularHK417_and_NightVision
{
[BepInPlugin("sgtbrooks.ModularHK417_and_NightVision", "ModularHK417_and_NightVision", "3.0.1")]
[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.2")]
public class ModularHK417_and_NightVisionPlugin : 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(), "sgtbrooks.ModularHK417_and_NightVision");
OtherLoader.RegisterDirectLoad(BasePath, "sgtbrooks.ModularHK417_and_NightVision", "", "", "modular hk417", "");
GameAPI.PreloadAllAssets(Path.Combine(BasePath, "mw_modularhk417_and_nightvision"));
GameAPI.PreloadAllAssets(Path.Combine(BasePath, "mw_modularhk417_and_nightvision"));
GameAPI.PreloadAllAssets(Path.Combine(BasePath, "mw_modularhk417_and_nightvision"));
}
}
}
public class CameraEffect : MonoBehaviour
{
public Material m_Mat;
public bool m_Enable = true;
[Range(0.1f, 0.8f)]
public float m_ThermalHigh = 0.3f;
[Range(0.1f, 1f)]
public float m_BlurAmount = 0.5f;
[Range(0.1f, 1f)]
public float m_DimensionsX = 0.5f;
[Range(0.1f, 1f)]
public float m_DimensionsY = 0.5f;
private RenderTexture m_RT;
private void Start()
{
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0017: Expected O, but got Unknown
m_RT = new RenderTexture(Screen.width, Screen.height, 0);
}
private void Update()
{
//IL_0038: 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)
float num = Random.Range(0f, 1f);
float num2 = Random.Range(0f, 1f);
m_Mat.SetVector("_Rnd", new Vector4(num, num2, 0f, 0f));
m_Mat.SetVector("_Dimensions", new Vector4(m_DimensionsX, m_DimensionsY, 0f, 0f));
m_Mat.SetFloat("_HotLight", m_ThermalHigh);
m_Mat.SetFloat("_BlurAmount", m_BlurAmount);
}
private void OnRenderImage(RenderTexture src, RenderTexture dst)
{
if (m_Enable)
{
Graphics.Blit((Texture)(object)src, m_RT, m_Mat, 0);
Graphics.Blit((Texture)(object)m_RT, dst, m_Mat, 1);
}
else
{
Graphics.Blit((Texture)(object)src, dst);
}
}
private void OnGUI()
{
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
int num = 320;
GUI.Box(new Rect((float)(Screen.width / 2 - num / 2), 10f, (float)num, 25f), "Thermal Vision Demo");
}
}
namespace H3VRUtils.Vehicles
{
public class ButtonIgnition : FVRInteractiveObject
{
public VehicleControl vehicle;
public VehicleAudioSet audioSet;
public float ignitionTime;
private float m_it;
public float failChance;
public Random rand;
public void Start()
{
rand = new Random();
}
public void BeginInteraction(FVRViveHand hand)
{
m_it = ignitionTime;
if (!vehicle.isOn)
{
if (vehicle.isForciblyOff)
{
}
}
else
{
vehicle.TurnOffEngine(forcibly: false);
}
}
public void UpdateInteraction(FVRViveHand hand)
{
m_it -= Time.fixedDeltaTime;
if (m_it <= 0f)
{
float num = (float)rand.Next(0, 10000) / 100f;
if (!(num <= failChance))
{
vehicle.TurnOnEngine(forcibly: false);
}
}
}
}
}
namespace H3VRUtils.Vehicles.Core
{
public class DamagingArea : MonoBehaviour
{
public VehicleControl vehicle;
public float damageMult = 15f;
public float sharpyness = 50f;
}
}
namespace H3VRUtils.Vehicles
{
[Serializable]
public class DriveShiftNode
{
public Vector3 localposition;
public Vector3 rotation;
public int left = -1;
public int up = -1;
public int right = -1;
public int down = -1;
public int gear = 0;
}
public class DriveShift : FVRInteractiveObject
{
public VehicleControl vehicle;
public Text gearText;
public int currentNode;
public List<DriveShiftNode> driveShiftNodes;
public VehicleAudioSet audioSet;
public void Update()
{
if (vehicle.carSetting.automaticGear)
{
if (vehicle.currentGear > 0 && vehicle.speed > 1f)
{
gearText.text = vehicle.currentGear.ToString();
}
else if (vehicle.speed > 1f)
{
gearText.text = "R";
}
else
{
gearText.text = "N";
}
}
else if (vehicle.NeutralGear)
{
gearText.text = "N";
}
else if (vehicle.currentGear != 0)
{
gearText.text = vehicle.currentGear.ToString();
}
else
{
gearText.text = "R";
}
}
public void UpdateInteraction(FVRViveHand hand)
{
//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)
//IL_0090: 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_0117: Unknown result type (might be due to invalid IL or missing references)
//IL_011c: Unknown result type (might be due to invalid IL or missing references)
//IL_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_025e: 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)
bool flag = false;
if (Vector2.Angle(hand.Input.TouchpadAxes, Vector2.left) <= 45f && hand.Input.TouchpadDown && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.2f && driveShiftNodes[currentNode].left != -1)
{
flag = true;
currentNode = driveShiftNodes[currentNode].left;
}
if (Vector2.Angle(hand.Input.TouchpadAxes, Vector2.up) <= 45f && hand.Input.TouchpadDown && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.2f && driveShiftNodes[currentNode].up != -1)
{
flag = true;
currentNode = driveShiftNodes[currentNode].up;
}
if (Vector2.Angle(hand.Input.TouchpadAxes, Vector2.right) <= 45f && hand.Input.TouchpadDown && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.2f && driveShiftNodes[currentNode].right != -1)
{
flag = true;
currentNode = driveShiftNodes[currentNode].right;
}
if (Vector2.Angle(hand.Input.TouchpadAxes, Vector2.down) <= 45f && hand.Input.TouchpadDown && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.2f && driveShiftNodes[currentNode].down != -1)
{
flag = true;
currentNode = driveShiftNodes[currentNode].down;
}
if (flag)
{
vehicle.ShiftTo(driveShiftNodes[currentNode].gear);
((Component)this).transform.localPosition = driveShiftNodes[currentNode].localposition;
((Component)this).transform.localEulerAngles = driveShiftNodes[currentNode].rotation;
}
}
}
internal class EngineDamagable : VehicleDamagable
{
public GameObject particleSystemCentre;
public GameObject explosionCentre;
public float SmokeParticleHPThreshold;
public float explosionStrength = 200f;
public GameObject particleSmokePrefab;
public GameObject particleFirePrefab;
public GameObject explosionPrefab;
public GameObject fixedMesh;
public GameObject damagedMesh;
public GameObject destroyedMesh;
private ParticleSystem particleSmoke;
private ParticleSystem particleFire;
public void Start()
{
GameObject val = Object.Instantiate<GameObject>(particleSmokePrefab, particleSystemCentre.transform);
particleSmoke = val.GetComponent<ParticleSystem>();
particleSmoke.Stop();
GameObject val2 = Object.Instantiate<GameObject>(particleFirePrefab, particleSystemCentre.transform);
particleFire = val2.GetComponent<ParticleSystem>();
particleFire.Stop();
}
public override void onHealthChange()
{
if (HPLessThanPercent(SmokeParticleHPThreshold))
{
if (!particleSmoke.IsAlive())
{
particleSmoke.Play();
}
}
else
{
particleSmoke.Stop();
}
if (health < 0f)
{
fixedMesh.SetActive(false);
damagedMesh.SetActive(false);
destroyedMesh.SetActive(true);
}
else if (HPLessThanPercent(SmokeParticleHPThreshold))
{
fixedMesh.SetActive(false);
damagedMesh.SetActive(true);
destroyedMesh.SetActive(false);
}
else
{
fixedMesh.SetActive(true);
damagedMesh.SetActive(false);
destroyedMesh.SetActive(false);
}
}
public override void onDeath()
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
particleFire.Play();
if ((Object)(object)explosionPrefab != (Object)null)
{
Object.Instantiate<GameObject>(explosionPrefab, explosionCentre.transform.position, explosionCentre.transform.rotation);
}
}
public override void whileDead()
{
}
public override void whileUndead()
{
}
public override void Heal(float heal)
{
base.Heal(heal);
}
public override void HealPercent(float percentHeal)
{
base.HealPercent(percentHeal);
}
public override void onUndeath()
{
particleFire.Stop();
}
public override void Damage()
{
}
}
internal class EnterVehicle : FVRInteractiveObject
{
public VehicleSeat vehicleSeat;
}
internal class ForkliftLift : FVRInteractiveObject
{
public Vector3 rotUpwards;
public Vector3 rotRegular;
public Vector3 rotDownwards;
public GameObject lift;
public float liftSpeed;
public float minLiftY;
public float maxLiftY;
public void UpdateInteraction(FVRViveHand hand)
{
//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_0019: Unknown result type (might be due to invalid IL or missing references)
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Unknown result type (might be due to invalid IL or missing references)
//IL_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_008e: 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_0104: Unknown result type (might be due to invalid IL or missing references)
Vector3 position = lift.transform.position;
((Component)this).transform.localEulerAngles = rotRegular;
if (Vector2.Angle(hand.Input.TouchpadAxes, Vector2.up) <= 45f && hand.Input.TouchpadPressed && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.2f)
{
position.y += liftSpeed / 50f;
((Component)this).transform.localEulerAngles = rotUpwards;
}
if (Vector2.Angle(hand.Input.TouchpadAxes, Vector2.down) <= 45f && hand.Input.TouchpadPressed && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.2f)
{
position.y -= liftSpeed / 50f;
((Component)this).transform.localEulerAngles = rotDownwards;
}
if (position.y > maxLiftY)
{
position.y = maxLiftY;
}
else if (position.y < minLiftY)
{
position.y = minLiftY;
}
lift.transform.position = position;
}
}
public class FuelNeedle : MonoBehaviour
{
public FuelTank tank;
public GameObject needle;
public bool isImperial;
public Vector3 needleNoFuel;
public Vector3 needleMaxFuel;
public void Update()
{
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
float num = tank.currentFuel;
if (isImperial)
{
num *= 0.6213712f;
}
float num2 = Mathf.InverseLerp(0f, tank.maxFuel, num);
needle.transform.localEulerAngles = Vector3.Lerp(needleNoFuel, needleMaxFuel, num2);
}
}
public class FuelTank : VehicleDamagable
{
public float currentFuel;
public float maxFuel;
public float fuelUsagePer1000Rpm = 0.01f;
public float leakMult;
public GameObject explosionEffect;
public bool BlowsOnDeath;
public AudioSource leakSound;
private new void FixedUpdate()
{
base.FixedUpdate();
float num = vehicle.motorRPM / 1000f;
float num2 = num * (fuelUsagePer1000Rpm / 3000f);
currentFuel -= num2;
float num3 = Mathf.InverseLerp(maxHealth, 0f, health);
currentFuel -= num3 * leakMult / 50f;
if ((Object)(object)leakSound != (Object)null)
{
leakSound.volume = num3;
}
}
public override void onDeath()
{
//IL_001f: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
base.onDeath();
if (BlowsOnDeath)
{
Object.Instantiate<GameObject>(explosionEffect, ((Component)this).transform.position, ((Component)this).transform.rotation);
}
}
public float AddFuel(float fuelAdded)
{
currentFuel += fuelAdded;
float num = maxFuel - currentFuel;
if (num <= 0f)
{
return 0f;
}
return num;
}
}
}
namespace H3VRUtils
{
internal class LockGun : MonoBehaviour
{
public FVRPhysicalObject Firearm;
public GameObject LockPos;
public void Update()
{
}
}
}
namespace H3VRUtils.Vehicles
{
public class ParkingBrakeClick : FVRInteractiveObject
{
public VehicleControl vehicle;
public Vector3 positionOff;
public Vector3 positionOn;
public Vector3 rotationOff;
public Vector3 rotationOn;
public bool isOn;
public VehicleAudioSet audioSet;
}
public class SpedometerNeedle : MonoBehaviour
{
public VehicleControl vehicle;
public GameObject needle;
public bool isImperial;
public float maxSpeed;
public Vector3 needleNoSpeed;
public Vector3 needleMaxSpeed;
public void Update()
{
//IL_0043: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
float num = Mathf.Abs(vehicle.speed);
if (isImperial)
{
num *= 0.6213712f;
}
float num2 = Mathf.InverseLerp(0f, maxSpeed, num);
needle.transform.localEulerAngles = Vector3.Lerp(needleNoSpeed, needleMaxSpeed, num2);
}
}
internal class SteeringWheel : FVRInteractiveObject
{
public VehicleControl vehicle;
public float resetLerpSpeed;
public float maxRot;
public bool isBraking;
public bool reverseRot;
[Header("Debug Values")]
public Text rotText;
public float rot;
public float rh;
public float lr;
public float inlerp;
public float lerp;
public float rotAmt;
public VehicleAudioSet audioSet;
public void BeginInteraction(FVRViveHand hand)
{
//IL_001b: Unknown result type (might be due to invalid IL or missing references)
//IL_0020: 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_0059: Unknown result type (might be due to invalid IL or missing references)
Transform child = ((Component)this).transform.GetChild(0);
child.parent = null;
Vector3 localEulerAngles = ((Component)this).transform.localEulerAngles;
((Component)this).transform.LookAt(((Component)hand).transform);
((Component)this).transform.localEulerAngles = new Vector3(localEulerAngles.x, ((Component)this).transform.localEulerAngles.y, localEulerAngles.z);
child.parent = ((Component)this).transform;
}
public void EndInteraction(FVRViveHand hand)
{
//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_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_0046: Unknown result type (might be due to invalid IL or missing references)
Transform child = ((Component)this).transform.GetChild(0);
child.parent = null;
((Component)this).transform.localEulerAngles = new Vector3(((Component)this).transform.localEulerAngles.x, 0f, ((Component)this).transform.localEulerAngles.z);
child.parent = ((Component)this).transform;
}
public void UpdateInteraction(FVRViveHand hand)
{
//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_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_0088: 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_00ba: 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_011d: Unknown result type (might be due to invalid IL or missing references)
Vector3 localEulerAngles = ((Component)this).transform.localEulerAngles;
((Component)this).transform.LookAt(((Component)hand).transform);
Vector3 localEulerAngles2 = ((Component)this).transform.localEulerAngles;
rot = Mathf.DeltaAngle((float)Math.Round(localEulerAngles2.y), (float)Math.Round(localEulerAngles.y));
rotAmt += rot;
if (rotAmt >= maxRot)
{
rotAmt = maxRot;
((Component)this).transform.localEulerAngles = localEulerAngles;
}
else if (rotAmt <= 0f - maxRot)
{
rotAmt = 0f - maxRot;
((Component)this).transform.localEulerAngles = localEulerAngles;
}
else
{
((Component)this).transform.localEulerAngles = new Vector3(localEulerAngles.x, localEulerAngles2.y, localEulerAngles.z);
}
rh = localEulerAngles2.y;
lr = localEulerAngles.y;
SetRot();
if (Vector2.Angle(hand.Input.TouchpadAxes, -Vector2.up) <= 45f && hand.Input.TouchpadDown && ((Vector2)(ref hand.Input.TouchpadAxes)).magnitude > 0.3f)
{
isBraking = !isBraking;
}
float triggerFloat = hand.Input.TriggerFloat;
if (isBraking)
{
vehicle.accel = 0f - triggerFloat;
}
else
{
vehicle.accel = triggerFloat;
}
}
private void FixedUpdate()
{
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_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_0089: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)base.m_hand != (Object)null)
{
float num = resetLerpSpeed;
if (rotAmt > 0f)
{
num = 0f - num;
}
if (rotAmt > num || rotAmt < 0f - num)
{
rotAmt += num;
((Component)this).transform.localEulerAngles = new Vector3(((Component)this).transform.localEulerAngles.x, ((Component)this).transform.localEulerAngles.y + num, ((Component)this).transform.localEulerAngles.z);
vehicle.accel = 0f;
SetRot();
}
}
}
private void SetRot()
{
if (rotAmt > 0f)
{
inlerp = Mathf.InverseLerp(0f, maxRot, rotAmt);
lerp = 0f - Mathf.Lerp(0f, 1f, inlerp);
}
else
{
inlerp = Mathf.InverseLerp(0f, 0f - maxRot, rotAmt);
lerp = Mathf.Lerp(0f, 1f, inlerp);
}
if (reverseRot)
{
lerp = 0f - lerp;
}
vehicle.steer = lerp;
}
}
[CreateAssetMenu(fileName = "New Vehicle Audio Set", menuName = "Vehicles/AudioSet", order = 0)]
public class VehicleAudioSet : ScriptableObject
{
private static AudioEvent defaultAE;
public AudioEvent VehicleStart;
public AudioEvent VehicleIdle;
public AudioEvent VehicleStop;
public AudioEvent HandbrakeUp;
public AudioEvent HandbrakeDown;
public AudioEvent ShiftDownGear;
public AudioEvent RevLoop;
public AudioEvent ShiftUpGear;
public AudioEvent Brake;
public AudioEvent BrakeLong;
public AudioEvent PedalSwitchSound;
static VehicleAudioSet()
{
//IL_0000: Unknown result type (might be due to invalid IL or missing references)
//IL_0006: Expected O, but got Unknown
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_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_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)
AudioEvent val = new AudioEvent();
val.PitchRange = new Vector2(0.98f, 1.04f);
val.VolumeRange = new Vector2(0.98f, 1.04f);
val.ClipLengthRange = new Vector2(1f, 1f);
defaultAE = val;
}
}
}
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].