Decompiled source of Quads Hub Raceway v0.1.0

plugins/HubRaceway/HubRaceway.dll

Decompiled a day ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using Microsoft.CodeAnalysis;
using Pigeon.Movement;
using TMPro;
using Unity.Collections;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyMetadata("AI_Assisted_Creation", "This assembly was partially or fully created with the assistance of Generative AI.")]
[assembly: AssemblyMetadata("AI_Model_Vendor", "Anthropic")]
[assembly: AssemblyCompany("HubRaceway")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+a4c9c15fccc4380af4b955fe041d400d05963ee9")]
[assembly: AssemblyProduct("HubRaceway")]
[assembly: AssemblyTitle("HubRaceway")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace HubRaceway
{
	internal sealed class Builder
	{
		public sealed class PadParts
		{
			public Material Edge;

			public Color Color;

			public Transform Holo;
		}

		public sealed class PortalParts
		{
			public Transform Root;

			public Transform RingA;

			public Transform RingB;

			public Material Surface;

			public TextMeshPro Status;

			public TextMeshPro StatusBack;
		}

		public sealed class MeshData
		{
			private readonly List<Vector3> verts = new List<Vector3>();

			private readonly List<Vector2> uvs = new List<Vector2>();

			private readonly List<int> tris = new List<int>();

			public bool Empty => tris.Count == 0;

			public void Strip(Track track, Vector2 a, Vector2 b, float u0, float u1, float vPerMetre, int from, int to, bool when = true)
			{
				//IL_0031: 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_003d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0050: Unknown result type (might be due to invalid IL or missing references)
				//IL_0062: 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_006e: 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)
				if (when && to > from)
				{
					int count = verts.Count;
					for (int i = from; i <= to; i++)
					{
						float num = (float)i * track.Step * vPerMetre;
						verts.Add(track.At(i, a.x, a.y));
						uvs.Add(new Vector2(u0, num));
						verts.Add(track.At(i, b.x, b.y));
						uvs.Add(new Vector2(u1, num));
					}
					for (int j = 0; j < to - from; j++)
					{
						int num2 = count + j * 2;
						tris.AddRange(new int[6]
						{
							num2,
							num2 + 2,
							num2 + 3,
							num2,
							num2 + 3,
							num2 + 1
						});
					}
				}
			}

			public void Sweep(Track track, List<Vector2>[] outlines, int ka, int kb, int from, float u0, float u1, float vPerMetre)
			{
				//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_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_0044: 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_0050: Unknown result type (might be due to invalid IL or missing references)
				//IL_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_0079: Unknown result type (might be due to invalid IL or missing references)
				//IL_007f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0085: 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)
				int count = verts.Count;
				for (int i = 0; i < outlines.Length; i++)
				{
					Vector2 val = outlines[i][ka];
					Vector2 val2 = outlines[i][kb];
					float num = (float)(from + i) * track.Step * vPerMetre;
					verts.Add(track.At(from + i, val.x, val.y));
					uvs.Add(new Vector2(u0, num));
					verts.Add(track.At(from + i, val2.x, val2.y));
					uvs.Add(new Vector2(u1, num));
				}
				for (int j = 0; j < outlines.Length - 1; j++)
				{
					int num2 = count + j * 2;
					tris.AddRange(new int[6]
					{
						num2,
						num2 + 2,
						num2 + 3,
						num2,
						num2 + 3,
						num2 + 1
					});
				}
			}

			public void Quad(Vector3 bl, Vector3 tl, Vector3 tr, Vector3 br)
			{
				//IL_0012: 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_002a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0036: Unknown result type (might be due to invalid IL or missing references)
				//IL_004d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0067: Unknown result type (might be due to invalid IL or missing references)
				//IL_0081: 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)
				int count = verts.Count;
				verts.Add(bl);
				verts.Add(tl);
				verts.Add(tr);
				verts.Add(br);
				uvs.Add(new Vector2(0f, 0f));
				uvs.Add(new Vector2(0f, 1f));
				uvs.Add(new Vector2(1f, 1f));
				uvs.Add(new Vector2(1f, 0f));
				tris.AddRange(new int[6]
				{
					count,
					count + 1,
					count + 2,
					count,
					count + 2,
					count + 3
				});
			}

			public void Quad(Vector3 center, Vector3 right, Vector3 up, float width, float height, bool flipU)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_000f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0014: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_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_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_0044: Unknown result type (might be due to invalid IL or missing references)
				//IL_0054: Unknown result type (might be due to invalid IL or missing references)
				//IL_0055: Unknown result type (might be due to invalid IL or missing references)
				//IL_0056: Unknown result type (might be due to invalid IL or missing references)
				//IL_005b: 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_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_006d: Unknown result type (might be due to invalid IL or missing references)
				//IL_006e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0073: Unknown result type (might be due to invalid IL or missing references)
				//IL_0074: Unknown result type (might be due to invalid IL or missing references)
				//IL_0084: Unknown result type (might be due to invalid IL or missing references)
				//IL_0085: Unknown result type (might be due to invalid IL or missing references)
				//IL_0086: Unknown result type (might be due to invalid IL or missing references)
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00db: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0109: Unknown result type (might be due to invalid IL or missing references)
				Vector3 val = ((Vector3)(ref right)).normalized * (width / 2f);
				Vector3 val2 = ((Vector3)(ref up)).normalized * (height / 2f);
				int count = verts.Count;
				verts.Add(center - val - val2);
				verts.Add(center - val + val2);
				verts.Add(center + val + val2);
				verts.Add(center + val - val2);
				float num = (flipU ? 1f : 0f);
				float num2 = (flipU ? 0f : 1f);
				uvs.Add(new Vector2(num, 0f));
				uvs.Add(new Vector2(num, 1f));
				uvs.Add(new Vector2(num2, 1f));
				uvs.Add(new Vector2(num2, 0f));
				tris.AddRange(new int[6]
				{
					count,
					count + 1,
					count + 2,
					count,
					count + 2,
					count + 3
				});
			}

			public void Box(Vector3 center, Quaternion rotation, Vector3 size)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				//IL_000b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_001c: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				//IL_001e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0023: Unknown result type (might be due to invalid IL or missing references)
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_0034: Unknown result type (might be due to invalid IL or missing references)
				//IL_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				//IL_003b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0040: Unknown result type (might be due to invalid IL or missing references)
				//IL_0045: Unknown result type (might be due to invalid IL or missing references)
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_0056: Unknown result type (might be due to invalid IL or missing references)
				//IL_0058: Unknown result type (might be due to invalid IL or missing references)
				//IL_0059: Unknown result type (might be due to invalid IL or missing references)
				//IL_005a: Unknown result type (might be due to invalid IL or missing references)
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0060: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Unknown result type (might be due to invalid IL or missing references)
				//IL_0066: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: Unknown result type (might be due to invalid IL or missing references)
				//IL_006c: Unknown result type (might be due to invalid IL or missing references)
				//IL_006d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0072: Unknown result type (might be due to invalid IL or missing references)
				//IL_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_0079: Unknown result type (might be due to invalid IL or missing references)
				//IL_007e: Unknown result type (might be due to invalid IL or missing references)
				//IL_007f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0080: Unknown result type (might be due to invalid IL or missing references)
				//IL_0085: Unknown result type (might be due to invalid IL or missing references)
				//IL_0086: Unknown result type (might be due to invalid IL or missing references)
				//IL_008b: Unknown result type (might be due to invalid IL or missing references)
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0091: 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_0093: Unknown result type (might be due to invalid IL or missing references)
				//IL_0098: Unknown result type (might be due to invalid IL or missing references)
				//IL_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_009e: Unknown result type (might be due to invalid IL or missing references)
				//IL_009f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b7: 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_00be: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ca: 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_00d1: 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_00d7: 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_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00de: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
				//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_00eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fe: 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_0104: Unknown result type (might be due to invalid IL or missing references)
				//IL_0109: Unknown result type (might be due to invalid IL or missing references)
				//IL_010a: 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_0110: Unknown result type (might be due to invalid IL or missing references)
				//IL_0111: Unknown result type (might be due to invalid IL or missing references)
				//IL_0116: Unknown result type (might be due to invalid IL or missing references)
				//IL_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_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0122: Unknown result type (might be due to invalid IL or missing references)
				//IL_0123: Unknown result type (might be due to invalid IL or missing references)
				//IL_0124: Unknown result type (might be due to invalid IL or missing references)
				//IL_0129: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_012f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0130: Unknown result type (might be due to invalid IL or missing references)
				//IL_0135: Unknown result type (might be due to invalid IL or missing references)
				//IL_0136: 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_013d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0142: Unknown result type (might be due to invalid IL or missing references)
				//IL_0143: 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_014f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0150: Unknown result type (might be due to invalid IL or missing references)
				//IL_0155: Unknown result type (might be due to invalid IL or missing references)
				//IL_0156: Unknown result type (might be due to invalid IL or missing references)
				//IL_015b: Unknown result type (might be due to invalid IL or missing references)
				//IL_015c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0161: Unknown result type (might be due to invalid IL or missing references)
				//IL_0162: Unknown result type (might be due to invalid IL or missing references)
				//IL_0163: Unknown result type (might be due to invalid IL or missing references)
				//IL_0168: Unknown result type (might be due to invalid IL or missing references)
				//IL_0169: Unknown result type (might be due to invalid IL or missing references)
				//IL_016e: Unknown result type (might be due to invalid IL or missing references)
				//IL_016f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0174: Unknown result type (might be due to invalid IL or missing references)
				//IL_0175: 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_017c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0181: Unknown result type (might be due to invalid IL or missing references)
				//IL_0182: Unknown result type (might be due to invalid IL or missing references)
				//IL_0187: Unknown result type (might be due to invalid IL or missing references)
				//IL_0188: 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_018e: Unknown result type (might be due to invalid IL or missing references)
				//IL_018f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0194: 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_01a0: 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_01a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a8: 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)
				//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c8: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cd: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d9: 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_01db: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e6: 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_01f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0200: Unknown result type (might be due to invalid IL or missing references)
				//IL_0205: Unknown result type (might be due to invalid IL or missing references)
				//IL_0206: Unknown result type (might be due to invalid IL or missing references)
				//IL_0207: Unknown result type (might be due to invalid IL or missing references)
				//IL_020c: Unknown result type (might be due to invalid IL or missing references)
				//IL_020d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0212: Unknown result type (might be due to invalid IL or missing references)
				//IL_0213: 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_0219: Unknown result type (might be due to invalid IL or missing references)
				//IL_021a: Unknown result type (might be due to invalid IL or missing references)
				//IL_021f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0220: Unknown result type (might be due to invalid IL or missing references)
				//IL_0225: Unknown result type (might be due to invalid IL or missing references)
				//IL_0226: Unknown result type (might be due to invalid IL or missing references)
				//IL_022b: Unknown result type (might be due to invalid IL or missing references)
				//IL_022c: Unknown result type (might be due to invalid IL or missing references)
				//IL_022d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0232: Unknown result type (might be due to invalid IL or missing references)
				//IL_0233: Unknown result type (might be due to invalid IL or missing references)
				//IL_0238: Unknown result type (might be due to invalid IL or missing references)
				//IL_0239: Unknown result type (might be due to invalid IL or missing references)
				Vector3 val = rotation * Vector3.right * (size.x / 2f);
				Vector3 val2 = rotation * Vector3.up * (size.y / 2f);
				Vector3 val3 = rotation * Vector3.forward * (size.z / 2f);
				Quad(center - val3 - val - val2, center - val3 - val + val2, center - val3 + val + val2, center - val3 + val - val2);
				Quad(center + val3 + val - val2, center + val3 + val + val2, center + val3 - val + val2, center + val3 - val - val2);
				Quad(center - val + val3 - val2, center - val + val3 + val2, center - val - val3 + val2, center - val - val3 - val2);
				Quad(center + val - val3 - val2, center + val - val3 + val2, center + val + val3 + val2, center + val + val3 - val2);
				Quad(center + val2 - val3 - val, center + val2 + val3 - val, center + val2 + val3 + val, center + val2 - val3 + val);
				Quad(center - val2 + val3 - val, center - val2 - val3 - val, center - val2 - val3 + val, center - val2 + val3 + val);
			}

			public Mesh ToMesh(string name)
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				//IL_0005: Unknown result type (might be due to invalid IL or missing references)
				//IL_000c: 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_001f: 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_0039: Unknown result type (might be due to invalid IL or missing references)
				//IL_003f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0046: Expected O, but got Unknown
				Mesh val = new Mesh
				{
					name = name,
					indexFormat = (IndexFormat)1
				};
				val.SetVertices(verts);
				val.SetUVs(0, uvs);
				val.SetTriangles(tris, 0);
				val.RecalculateNormals();
				val.RecalculateBounds();
				return val;
			}
		}

		public const float WallHeight = 1.6f;

		public const float WallThickness = 0.8f;

		public const float SlabDepth = 1.5f;

		public const float FenceHeight = 6f;

		public const float PaddockDepth = 44f;

		public const int GridSlots = 8;

		public static readonly Color Orange = new Color(1f, 0.36f, 0.12f);

		public static readonly Color Cyan = new Color(0.15f, 0.85f, 1f);

		public static readonly Color Magenta = new Color(1f, 0.2f, 0.75f);

		public readonly List<Object> Owned = new List<Object>();

		private readonly Transform root;

		private readonly Track track;

		private Shader shader;

		public Material Road;

		public Material Concrete;

		public Material WallFace;

		public Material Dark;

		public Material Metal;

		public Material Glow;

		public Material EdgeGlow;

		public Material Lamp;

		public Material Checker;

		public Material Paint;

		public Material Chevron;

		public Material BoostPad;

		public Material ItemBox;

		public Material Oil;

		public Material Pipe;

		public Material Rust;

		public Material Tiles;

		public Material HubGlow;

		public readonly Material[] Chase = (Material[])(object)new Material[3];

		public readonly Material[] StartLights = (Material[])(object)new Material[4];

		public int PaddockFrom;

		public int PaddockTo;

		private float roadTile;

		public Vector3 PaddockCenter;

		public Vector3 PaddockAcross;

		public Vector3 PaddockForward;

		private readonly Dictionary<Material, MeshData> batches = new Dictionary<Material, MeshData>();

		private readonly Dictionary<Material, MeshData> solidBatches = new Dictionary<Material, MeshData>();

		private readonly Dictionary<PrimitiveType, GameObject> primitives = new Dictionary<PrimitiveType, GameObject>();

		public const float DaisHeight = 0.4f;

		private float paddockLength;

		public TMP_FontAsset Font { get; private set; }

		public int TunnelFrom => track.TunnelFrom;

		public int TunnelTo => track.TunnelTo;

		public Vector3 Arrival => PaddockCenter - PaddockAcross * 9f;

		public Vector3 BoardSpot => PaddockCenter + PaddockAcross * 1f + PaddockForward * (paddockLength / 2f - 2.5f);

		public Builder(Transform root, Track track)
		{
			this.root = root;
			this.track = track;
			PaddockTo = track.Count - 10;
			PaddockFrom = PaddockTo - Mathf.RoundToInt(80f / track.Step);
		}

		public bool InTunnel(int i)
		{
			return track.InTunnel(i);
		}

		public void MakeMaterials()
		{
			//IL_008c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_014b: Unknown result type (might be due to invalid IL or missing references)
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0178: Unknown result type (might be due to invalid IL or missing references)
			//IL_0182: Unknown result type (might be due to invalid IL or missing references)
			//IL_0199: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_020f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0245: Unknown result type (might be due to invalid IL or missing references)
			//IL_025f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0276: Unknown result type (might be due to invalid IL or missing references)
			//IL_0286: Unknown result type (might be due to invalid IL or missing references)
			//IL_0290: Unknown result type (might be due to invalid IL or missing references)
			//IL_02a7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_02c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_02e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_0305: Unknown result type (might be due to invalid IL or missing references)
			//IL_030c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0311: Unknown result type (might be due to invalid IL or missing references)
			//IL_0318: Unknown result type (might be due to invalid IL or missing references)
			//IL_031d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0334: Unknown result type (might be due to invalid IL or missing references)
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_037b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0386: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0468: Unknown result type (might be due to invalid IL or missing references)
			shader = Shader.Find("Universal Render Pipeline/Lit");
			if ((Object)(object)shader == (Object)null)
			{
				MeshRenderer val = Object.FindFirstObjectByType<MeshRenderer>();
				if ((Object)(object)val != (Object)null && (Object)(object)((Renderer)val).sharedMaterial != (Object)null)
				{
					shader = ((Renderer)val).sharedMaterial.shader;
				}
			}
			TMP_Text[] array = Object.FindObjectsByType<TMP_Text>((FindObjectsInactive)1, (FindObjectsSortMode)0);
			foreach (TMP_Text val2 in array)
			{
				if ((Object)(object)val2.font != (Object)null)
				{
					Font = val2.font;
					break;
				}
			}
			Road = MakeMaterial(Color.white, RoadTexture(), 0.35f);
			Concrete = MakeMaterial(new Color(0.8f, 0.8f, 0.78f), null, 0.15f);
			WallFace = MakeMaterial(Color.white, WallTexture(), 0.2f);
			Dark = MakeMaterial(new Color(0.12f, 0.11f, 0.13f), null, 0.2f);
			Metal = MakeMaterial(new Color(0.32f, 0.33f, 0.36f), null, 0.55f);
			Glow = MakeMaterial(Orange, null, 0.5f, Orange * 1.1f);
			EdgeGlow = MakeMaterial(Cyan, null, 0.5f, Cyan * 1.3f);
			Lamp = MakeMaterial(new Color(1f, 0.92f, 0.75f), null, 0.5f, new Color(1f, 0.85f, 0.6f) * 1.6f);
			Checker = MakeMaterial(Color.white, CheckerTexture(), 0.2f);
			Paint = MakeMaterial(new Color(0.95f, 0.95f, 0.95f), (Texture2D)null, 0.2f, (Color?)new Color(0.5f, 0.5f, 0.5f), emissionMap: false);
			Chevron = MakeMaterial(Color.white, ChevronTexture(), 0.3f, Color.white * 0.9f, emissionMap: true);
			BoostPad = MakeMaterial(Color.white, BoostTexture(), 0.4f, Color.white * 1.4f, emissionMap: true);
			ItemBox = MakeMaterial(Magenta, null, 0.8f, Magenta);
			Color[] array2 = (Color[])(object)new Color[3] { Cyan, Magenta, Orange };
			for (int j = 0; j < 3; j++)
			{
				Chase[j] = MakeMaterial(array2[j], null, 0.5f, array2[j]);
			}
			for (int k = 0; k < 4; k++)
			{
				StartLights[k] = MakeMaterial(new Color(0.08f, 0.08f, 0.08f), null, 0.7f, Color.black);
			}
			Oil = MakeMaterial(new Color(0.05f, 0.03f, 0.09f), null, 0.95f);
			Dictionary<string, Material> hub = new Dictionary<string, Material>();
			MeshRenderer[] array3 = Object.FindObjectsByType<MeshRenderer>((FindObjectsSortMode)0);
			for (int i = 0; i < array3.Length; i++)
			{
				Material[] sharedMaterials = ((Renderer)array3[i]).sharedMaterials;
				foreach (Material val3 in sharedMaterials)
				{
					if ((Object)(object)val3 != (Object)null && !hub.ContainsKey(((Object)val3).name))
					{
						hub[((Object)val3).name] = val3;
					}
				}
			}
			Pipe = Hub("HubPipeRed", MakeMaterial(new Color(0.7f, 0.15f, 0.12f), null, 0.3f));
			Rust = Hub("HubPipeRusty", Metal);
			Tiles = Hub("ReactorTile2 Mat", Concrete);
			HubGlow = Hub("HubLight", Glow);
			WallFace = Hub("HubPanel", WallFace);
			Concrete = Hub("HubPanel Dark", Concrete);
			Dark = Hub("HubPanel Darker", Dark);
			Plugin.Log.LogInfo((object)("Hub Raceway: dressed in the hub's materials: " + (hub.ContainsKey("HubPanel") ? "yes" : "no (our own)")));
			Material Hub(string name, Material fallback)
			{
				if (!hub.TryGetValue(name, out var value))
				{
					return fallback;
				}
				return value;
			}
		}

		public Material MakeMaterial(Color color, Texture2D texture, float smoothness, Color? emission = null, bool emissionMap = false)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			//IL_0012: 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_007d: Unknown result type (might be due to invalid IL or missing references)
			Material val = new Material(shader);
			val.SetColor("_BaseColor", color);
			val.SetColor("_Color", color);
			if ((Object)(object)texture != (Object)null)
			{
				val.SetTexture("_BaseMap", (Texture)(object)texture);
				val.SetTexture("_MainTex", (Texture)(object)texture);
			}
			val.SetFloat("_Smoothness", smoothness);
			val.SetFloat("_Metallic", 0f);
			if (emission.HasValue)
			{
				val.EnableKeyword("_EMISSION");
				val.SetColor("_EmissionColor", emission.Value);
				if (emissionMap && (Object)(object)texture != (Object)null)
				{
					val.SetTexture("_EmissionMap", (Texture)(object)texture);
				}
				val.globalIlluminationFlags = (MaterialGlobalIlluminationFlags)0;
			}
			Owned.Add((Object)(object)val);
			return val;
		}

		public static void SetEmission(Material m, Color c)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			m.SetColor("_EmissionColor", c);
		}

		private Texture2D NewTexture(int w, int h, bool mips)
		{
			//IL_0004: Unknown result type (might be due to invalid IL or missing references)
			//IL_000a: Expected O, but got Unknown
			Texture2D val = new Texture2D(w, h, (TextureFormat)4, mips);
			((Texture)val).wrapMode = (TextureWrapMode)0;
			((Texture)val).anisoLevel = 8;
			Owned.Add((Object)(object)val);
			return val;
		}

		private Texture2D RoadTexture()
		{
			//IL_006b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0070: 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)
			Texture2D val = NewTexture(128, 256, mips: true);
			Color32[] array = (Color32[])(object)new Color32[32768];
			Random random = new Random(7);
			Color val2 = default(Color);
			for (int i = 0; i < 256; i++)
			{
				for (int j = 0; j < 128; array[i * 128 + j] = Color32.op_Implicit(val2), j++)
				{
					if (j < 5 || j >= 123)
					{
						val2 = ((i / 32 % 2 == 0) ? new Color(0.85f, 0.12f, 0.1f) : new Color(0.92f, 0.92f, 0.9f));
						continue;
					}
					switch (j)
					{
					case 6:
					case 121:
						((Color)(ref val2))..ctor(0.9f, 0.9f, 0.88f);
						continue;
					case 63:
					case 64:
						if (i % 64 < 32)
						{
							((Color)(ref val2))..ctor(0.95f, 0.8f, 0.3f);
							continue;
						}
						break;
					}
					if ((j == 32 || j == 96) && i % 64 < 16)
					{
						((Color)(ref val2))..ctor(0.55f, 0.55f, 0.55f);
						continue;
					}
					float num = 0.15f + (float)random.NextDouble() * 0.05f;
					if ((float)j > 38.4f && (float)j < 89.6f)
					{
						num -= 0.02f;
					}
					((Color)(ref val2))..ctor(num, num, num * 1.05f);
				}
			}
			val.SetPixels32(array);
			val.Apply(true);
			return val;
		}

		private Texture2D WallTexture()
		{
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: 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)
			Texture2D val = NewTexture(32, 64, mips: true);
			Color32[] array = (Color32[])(object)new Color32[2048];
			Color val2 = default(Color);
			for (int i = 0; i < 64; i++)
			{
				for (int j = 0; j < 32; j++)
				{
					((Color)(ref val2))..ctor(0.86f, 0.86f, 0.84f);
					if (j < 10)
					{
						((Color)(ref val2))..ctor(0.78f, 0.13f, 0.1f);
					}
					if (j == 10 || j == 30)
					{
						((Color)(ref val2))..ctor(0.25f, 0.25f, 0.27f);
					}
					if (i == 0 || i == 63)
					{
						((Color)(ref val2))..ctor(0.35f, 0.35f, 0.37f);
					}
					array[i * 32 + j] = Color32.op_Implicit(val2);
				}
			}
			val.SetPixels32(array);
			val.Apply(true);
			return val;
		}

		private Texture2D CheckerTexture()
		{
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0063: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			Texture2D val = NewTexture(2, 2, mips: false);
			val.SetPixels32((Color32[])(object)new Color32[4]
			{
				new Color32((byte)20, (byte)20, (byte)20, byte.MaxValue),
				new Color32((byte)240, (byte)240, (byte)240, byte.MaxValue),
				new Color32((byte)240, (byte)240, (byte)240, byte.MaxValue),
				new Color32((byte)20, (byte)20, (byte)20, byte.MaxValue)
			});
			((Texture)val).filterMode = (FilterMode)0;
			val.Apply(false);
			return val;
		}

		private Texture2D ChevronTexture()
		{
			//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ab: 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)
			Texture2D val = NewTexture(64, 32, mips: true);
			((Texture)val).wrapMode = (TextureWrapMode)1;
			Color32[] array = (Color32[])(object)new Color32[2048];
			for (int i = 0; i < 32; i++)
			{
				for (int j = 0; j < 64; j++)
				{
					float num = Mathf.Abs((float)i - 16f + 0.5f);
					bool flag = Mathf.Repeat((float)j - num, 21.3f) < 8f && i > 3 && i < 28;
					bool flag2 = i < 2 || i >= 30;
					array[i * 64 + j] = (Color32)(flag ? Color32.op_Implicit(Orange) : (flag2 ? new Color32((byte)230, (byte)230, (byte)230, byte.MaxValue) : new Color32((byte)12, (byte)12, (byte)14, byte.MaxValue)));
				}
			}
			val.SetPixels32(array);
			val.Apply(true);
			return val;
		}

		private Texture2D BoostTexture()
		{
			//IL_0098: 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_009d: Unknown result type (might be due to invalid IL or missing references)
			Texture2D val = NewTexture(64, 64, mips: true);
			Color32[] array = (Color32[])(object)new Color32[4096];
			for (int i = 0; i < 64; i++)
			{
				for (int j = 0; j < 64; j++)
				{
					float num = Mathf.Abs((float)j - 32f + 0.5f);
					bool flag = Mathf.Repeat((float)i + num * 0.9f, 32f) < 11f && num < 26f;
					array[i * 64 + j] = (flag ? new Color32(byte.MaxValue, byte.MaxValue, byte.MaxValue, byte.MaxValue) : new Color32((byte)10, (byte)120, (byte)170, byte.MaxValue));
				}
			}
			val.SetPixels32(array);
			val.Apply(true);
			return val;
		}

		public void BuildTrack()
		{
			//IL_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: 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_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: Unknown result type (might be due to invalid IL or missing references)
			//IL_015e: Unknown result type (might be due to invalid IL or missing references)
			//IL_016f: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d2: 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_0210: Unknown result type (might be due to invalid IL or missing references)
			//IL_0541: Unknown result type (might be due to invalid IL or missing references)
			//IL_054c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0306: Unknown result type (might be due to invalid IL or missing references)
			//IL_030d: 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_02d8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0342: Unknown result type (might be due to invalid IL or missing references)
			//IL_0356: Unknown result type (might be due to invalid IL or missing references)
			//IL_038c: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
			//IL_0414: Unknown result type (might be due to invalid IL or missing references)
			//IL_043f: Unknown result type (might be due to invalid IL or missing references)
			//IL_044f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0480: Unknown result type (might be due to invalid IL or missing references)
			//IL_048a: Unknown result type (might be due to invalid IL or missing references)
			float num = 14f;
			float num2 = 0.8f;
			float num3 = 1.6f;
			float num4 = 1.5f;
			_ = track.Count;
			roadTile = track.Length / Mathf.Round(track.Length / 16f);
			MeshData meshData = new MeshData();
			MeshData meshData2 = new MeshData();
			MeshData meshData3 = Batch(EdgeGlow);
			foreach (var (num5, to) in OutsideTube())
			{
				meshData.Strip(track, new Vector2(0f - num, 0f), new Vector2(num, 0f), 0f, 1f, 1f / roadTile, num5, to);
				meshData2.Strip(track, new Vector2(num + num2, 0f - num4), new Vector2(0f - num - num2, 0f - num4), 0f, 1f, 0.1f, num5, to);
				meshData3.Strip(track, new Vector2(0f - num + 0.6f, 0.025f), new Vector2(0f - num + 0.9f, 0.025f), 0f, 1f, 0.1f, num5, to);
				meshData3.Strip(track, new Vector2(num - 0.9f, 0.025f), new Vector2(num - 0.6f, 0.025f), 0f, 1f, 0.1f, num5, to);
			}
			Spawn("Road", meshData, Road, collide: true, (SurfaceMaterial)1);
			meshData2.Strip(track, new Vector2(num, 0f), new Vector2(num, 0f - num4), 0f, 1f, 0.1f, PaddockFrom, PaddockTo, when: false);
			meshData2.Strip(track, new Vector2(0f - num, 0f - num4), new Vector2(0f - num, 0f), 0f, 1f, 0.1f, PaddockFrom, PaddockTo);
			Spawn("Underside", meshData2, Dark, collide: true, (SurfaceMaterial)2);
			MeshData meshData4 = new MeshData();
			MeshData meshData5 = new MeshData();
			MeshData meshData6 = Batch(HubGlow);
			MeshData meshData7 = new MeshData();
			int[] array = new int[2] { -1, 1 };
			foreach (int num6 in array)
			{
				foreach (var item3 in WallRuns(num6))
				{
					int item = item3.Item1;
					int item2 = item3.Item2;
					float num7 = num6;
					if (num6 < 0)
					{
						meshData4.Strip(track, new Vector2(0f - num, num3), new Vector2(0f - num, 0f), 1f, 0f, 1f / 6f, item, item2);
					}
					else
					{
						meshData4.Strip(track, new Vector2(num, 0f), new Vector2(num, num3), 0f, 1f, 1f / 6f, item, item2);
					}
					meshData5.Strip(track, new Vector2(num7 * ((num6 < 0) ? (num + num2) : num), num3), new Vector2(num7 * ((num6 < 0) ? num : (num + num2)), num3), 0f, 1f, 0.1f, item, item2);
					meshData5.Strip(track, new Vector2(num7 * (num + num2), (num6 < 0) ? (0f - num4) : num3), new Vector2(num7 * (num + num2), (num6 < 0) ? num3 : (0f - num4)), 0f, 1f, 0.1f, item, item2);
					float num8 = num7 * (num + num2 * 0.5f - 0.18f);
					float num9 = num7 * (num + num2 * 0.5f + 0.18f);
					meshData6.Strip(track, new Vector2(Mathf.Min(num8, num9), num3 + 0.04f), new Vector2(Mathf.Max(num8, num9), num3 + 0.04f), 0f, 1f, 0.1f, item, item2);
					meshData7.Strip(track, new Vector2(num7 * num, num3), new Vector2(num7 * num, num3 + 6f), 0f, 1f, 0.1f, item, item2);
					meshData7.Strip(track, new Vector2(num7 * num, num3 + 6f), new Vector2(num7 * num, num3), 0f, 1f, 0.1f, item, item2);
				}
			}
			Spawn("WallFaces", meshData4, WallFace, collide: true, (SurfaceMaterial)2);
			Spawn("Walls", meshData5, Concrete, collide: true, (SurfaceMaterial)2);
			Spawn("Fence", meshData7, null, collide: true, (SurfaceMaterial)2);
			MeshData meshData8 = new MeshData();
			int to2 = Mathf.Max(1, Mathf.RoundToInt(4f / track.Step));
			meshData8.Strip(track, new Vector2(0f - num, 0.03f), new Vector2(num, 0.03f), 0f, num, 0.5f, 0, to2);
			Spawn("StartLine", meshData8, Checker, collide: false, (SurfaceMaterial)1);
			BuildTunnel();
			BuildLamps();
			BuildCornerSigns();
			BuildGrid();
			BuildGantry();
			BuildPaddock();
			FlushBatches();
		}

		private IEnumerable<(int, int)> OutsideTube()
		{
			if (TunnelFrom < 0)
			{
				yield return (0, track.Count);
				yield break;
			}
			if (TunnelFrom > 0)
			{
				yield return (0, TunnelFrom);
			}
			if (TunnelTo < track.Count)
			{
				yield return (TunnelTo, track.Count);
			}
		}

		private IEnumerable<(int, int)> WallRuns(int side)
		{
			List<(int, int)> list = new List<(int, int)>();
			if (TunnelFrom >= 0)
			{
				list.Add((TunnelFrom, TunnelTo));
			}
			if (side == -1)
			{
				list.Add((PaddockFrom, PaddockTo));
			}
			list.Sort();
			int at = 0;
			foreach (var (num, b) in list)
			{
				if (num > at)
				{
					yield return (at, num);
				}
				at = Mathf.Max(at, b);
			}
			if (at < track.Count)
			{
				yield return (at, track.Count);
			}
		}

		private void BuildTunnel()
		{
			//IL_00bf: 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_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Unknown result type (might be due to invalid IL or missing references)
			int tunnelFrom = TunnelFrom;
			int tunnelTo = TunnelTo;
			if (tunnelFrom >= 0)
			{
				float num = 15f;
				float num2 = 18f;
				float num3 = 0.8f;
				int num4 = tunnelTo - tunnelFrom + 1;
				List<Vector2>[] array = new List<Vector2>[num4];
				List<Vector2>[] array2 = new List<Vector2>[num4];
				List<Vector2>[] array3 = new List<Vector2>[num4];
				List<Vector2>[] array4 = new List<Vector2>[num4];
				for (int i = 0; i < num4; i++)
				{
					float num5 = track.TubeRound(tunnelFrom + i);
					float num6 = num - Mathf.Max(num5, 0.6f);
					array[i] = Rounded(num, 0f, num2, num5);
					array2[i] = Rounded(num + num3, 0f - num3, num2 + num3, num5 + num3);
					array3[i] = new List<Vector2>
					{
						new Vector2(0f - num6 + 0.25f, 0.03f),
						new Vector2(0f - num6 + 0.55f, 0.03f)
					};
					array4[i] = new List<Vector2>
					{
						new Vector2(num6 - 0.55f, 0.03f),
						new Vector2(num6 - 0.25f, 0.03f)
					};
				}
				int count = array[0].Count;
				MeshData meshData = new MeshData();
				MeshData meshData2 = new MeshData();
				MeshData meshData3 = new MeshData();
				meshData.Sweep(track, array, 0, 1, tunnelFrom, 0f, 1f, 1f / roadTile);
				for (int j = 1; j < count - 1; j++)
				{
					meshData2.Sweep(track, array, j, j + 1, tunnelFrom, 0f, 1f, 0.1f);
				}
				for (int k = 0; k < count - 1; k++)
				{
					meshData3.Sweep(track, array2, k + 1, k, tunnelFrom, 0f, 1f, 0.1f);
				}
				Spawn("TubeFloor", meshData, Road, collide: true, (SurfaceMaterial)1);
				Spawn("TubeInside", meshData2, Dark, collide: true, (SurfaceMaterial)2);
				Spawn("TubeOutside", meshData3, Rust, collide: false, (SurfaceMaterial)2);
				Batch(EdgeGlow).Sweep(track, array3, 0, 1, tunnelFrom, 0f, 1f, 0.1f);
				Batch(EdgeGlow).Sweep(track, array4, 0, 1, tunnelFrom, 0f, 1f, 0.1f);
				int num7 = Mathf.Max(1, Mathf.RoundToInt(8f / track.Step));
				int num8 = 0;
				int num9 = tunnelFrom + num7 / 2;
				while (num9 < tunnelTo)
				{
					float num10 = track.TubeRound(num9);
					Ring(Batch(Chase[num8 % 3]), num9, Rounded(num - 0.03f, 0.03f, num2 - 0.03f, num10), Rounded(num - 0.18f, 0.18f, num2 - 0.18f, Mathf.Max(num10 - 0.15f, 0f)), 0.7f);
					num9 += num7;
					num8++;
				}
				int[] array5 = new int[2]
				{
					tunnelFrom,
					tunnelTo - 1
				};
				foreach (int i2 in array5)
				{
					Ring(Batch(HubGlow), i2, Rounded(num + num3 + 1.2f, 0f - num3 - 1.2f, num2 + num3 + 1.2f, 0f), Rounded(num - 0.3f, 0.3f, num2 - 0.3f, 0f), 1.6f);
				}
			}
		}

		private static List<Vector2> Rounded(float w, float y0, float y1, float r)
		{
			//IL_0048: 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_007f: 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_00bf: Unknown result type (might be due to invalid IL or missing references)
			r = Mathf.Clamp(r, 0.001f, Mathf.Min(w, (y1 - y0) / 2f) - 0.001f);
			float num = w - r;
			List<Vector2> pts = new List<Vector2>
			{
				new Vector2(0f - num, y0)
			};
			Arc(new Vector2(num, y0 + r), -90f, 0f);
			Arc(new Vector2(num, y1 - r), 0f, 90f);
			Arc(new Vector2(0f - num, y1 - r), 90f, 180f);
			Arc(new Vector2(0f - num, y0 + r), 180f, 270f);
			return pts;
			void Arc(Vector2 c, float a0, float a1)
			{
				//IL_0020: Unknown result type (might be due to invalid IL or missing references)
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0038: 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)
				for (int i = 0; i <= 6; i++)
				{
					float num2 = Mathf.Lerp(a0, a1, (float)i / 6f) * (MathF.PI / 180f);
					pts.Add(c + new Vector2(Mathf.Cos(num2), Mathf.Sin(num2)) * r);
				}
			}
		}

		private void Ring(MeshData m, int i, List<Vector2> a, List<Vector2> b, float width)
		{
			//IL_0017: 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_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: Unknown result type (might be due to invalid IL or missing references)
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ef: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_0103: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_0109: Unknown result type (might be due to invalid IL or missing references)
			//IL_010a: Unknown result type (might be due to invalid IL or missing references)
			//IL_010f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_0111: 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_011e: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0124: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_012c: 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_012e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_0135: Unknown result type (might be due to invalid IL or missing references)
			//IL_0140: 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_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0147: 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_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_0150: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Unknown result type (might be due to invalid IL or missing references)
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			Vector3 val = track.Fwd[track.Wrap(i)] * (width / 2f);
			for (int j = 1; j < a.Count - 1; j++)
			{
				Vector3 val2 = track.At(i, a[j].x, a[j].y);
				Vector3 val3 = track.At(i, a[j + 1].x, a[j + 1].y);
				Vector3 val4 = track.At(i, b[j].x, b[j].y);
				Vector3 val5 = track.At(i, b[j + 1].x, b[j + 1].y);
				m.Quad(val4 + val, val5 + val, val5 - val, val4 - val);
				m.Quad(val2 - val, val3 - val, val3 + val, val2 + val);
				m.Quad(val4 - val, val5 - val, val3 - val, val2 - val);
				m.Quad(val2 + val, val3 + val, val5 + val, val4 + val);
			}
		}

		private void BuildLamps()
		{
			//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_00bc: 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_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: 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_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0132: Unknown result type (might be due to invalid IL or missing references)
			//IL_014c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0151: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: 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_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Unknown result type (might be due to invalid IL or missing references)
			int num = Mathf.RoundToInt(48f / track.Step);
			MeshData meshData = Batch(Pipe);
			MeshData meshData2 = Batch(Lamp);
			int num2 = 0;
			int num3 = num / 2;
			while (num3 < track.Count)
			{
				if (!InTunnel(num3) && (num3 < PaddockFrom - 4 || num3 > PaddockTo + 4) && num3 >= 10 && num3 <= track.Count - 10)
				{
					float num4 = ((num2 % 2 == 0) ? 1f : (-1f));
					float across = num4 * 14.4f;
					Quaternion rotation = track.Facing(num3);
					Vector3 val = track.Right[num3] * (0f - num4);
					meshData.Box(track.At(num3, across, 5.6f), rotation, new Vector3(0.35f, 8f, 0.35f));
					meshData.Box(track.At(num3, across, 9.6f) + val * 1.6f, rotation, new Vector3(3.6f, 0.3f, 0.35f));
					meshData2.Box(track.At(num3, across, 9.35f) + val * 3f, rotation, new Vector3(1.5f, 0.25f, 0.7f));
				}
				num3 += num;
				num2++;
			}
		}

		private void BuildCornerSigns()
		{
			//IL_00ab: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00be: 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_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d9: 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_00e0: 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_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0110: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0130: Unknown result type (might be due to invalid IL or missing references)
			MeshData meshData = Batch(Chevron);
			MeshData meshData2 = Batch(Dark);
			int num = Mathf.RoundToInt(14f / track.Step);
			for (int i = 0; i < track.Count; i += num)
			{
				float num2 = track.Turn[i];
				if (!(Mathf.Abs(num2) < 0.75f) && !InTunnel(i) && (i < PaddockFrom || i > PaddockTo))
				{
					int num3 = ((!(num2 > 0f)) ? 1 : (-1));
					float num4 = (float)num3 * 14.4f;
					Vector3 center = track.At(i, num4 - (float)num3 * 0.3f, 2.9f);
					Vector3 val = track.Fwd[i];
					Vector3 up = track.Up[i];
					meshData.Quad(center, (num3 < 0) ? val : (-val), up, 4f, 1.8f, num3 > 0);
					meshData2.Box(track.At(i, num4, 2.9f), track.Facing(i), new Vector3(0.4f, 2f, 4.2f));
				}
			}
		}

		public Vector3 GridSlot(int slot, out Quaternion facing, out int sample)
		{
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004e: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			int num = slot / 2;
			int num2 = slot % 2;
			float num3 = 12f + (float)num * 10f + (float)num2 * 5f;
			sample = track.Wrap(-Mathf.RoundToInt(num3 / track.Step));
			facing = track.Facing(sample);
			return track.At(sample, (num2 == 0) ? (-5.5f) : 5.5f, 0f);
		}

		private void BuildGrid()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_002d: 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_004b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Unknown result type (might be due to invalid IL or missing references)
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: 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_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
			//IL_00de: 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_010b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0115: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Unknown result type (might be due to invalid IL or missing references)
			//IL_011f: 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_012b: Unknown result type (might be due to invalid IL or missing references)
			//IL_013d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Unknown result type (might be due to invalid IL or missing references)
			//IL_0144: Unknown result type (might be due to invalid IL or missing references)
			//IL_016c: Unknown result type (might be due to invalid IL or missing references)
			MeshData meshData = Batch(Paint);
			for (int i = 0; i < 8; i++)
			{
				Quaternion facing;
				int sample;
				Vector3 val = GridSlot(i, out facing, out sample);
				Vector3 val2 = track.Up[sample] * 0.035f;
				Vector3 val3 = track.Right[sample];
				Vector3 val4 = track.Fwd[sample];
				meshData.Quad(val + val2 + val4 * 2.5f, val3, val4, 6f, 0.3f, flipU: false);
				meshData.Quad(val + val2 + val3 * 3f, val3, val4, 0.3f, 5f, flipU: false);
				meshData.Quad(val + val2 - val3 * 3f, val3, val4, 0.3f, 5f, flipU: false);
				((Graphic)Text((i + 1).ToString(), val + track.Up[sample] * 0.05f - val4 * 0.5f, Quaternion.LookRotation(track.Up[sample], val4), 2.2f).GetComponent<TextMeshPro>()).color = new Color(1f, 1f, 1f, 0.85f);
			}
		}

		private void BuildGantry()
		{
			//IL_000d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_0052: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: 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_009f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0105: Unknown result type (might be due to invalid IL or missing references)
			//IL_0117: 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_0149: Unknown result type (might be due to invalid IL or missing references)
			//IL_0153: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: 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_016d: 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_0199: Unknown result type (might be due to invalid IL or missing references)
			//IL_01aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01be: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0208: Unknown result type (might be due to invalid IL or missing references)
			//IL_020d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0212: Unknown result type (might be due to invalid IL or missing references)
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_0223: Unknown result type (might be due to invalid IL or missing references)
			//IL_022d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0232: Unknown result type (might be due to invalid IL or missing references)
			//IL_0237: Unknown result type (might be due to invalid IL or missing references)
			//IL_0247: Unknown result type (might be due to invalid IL or missing references)
			//IL_0263: Unknown result type (might be due to invalid IL or missing references)
			//IL_0265: Unknown result type (might be due to invalid IL or missing references)
			//IL_0275: Unknown result type (might be due to invalid IL or missing references)
			//IL_027a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0299: Unknown result type (might be due to invalid IL or missing references)
			float num = 16.3f;
			Quaternion val = track.Facing(0);
			MeshData meshData = Batch(Dark);
			MeshData meshData2 = Batch(Pipe);
			MeshData meshData3 = Batch(HubGlow);
			for (int i = -1; i <= 1; i += 2)
			{
				meshData2.Box(track.At(0, (float)i * num, 7.5f), val, new Vector3(2.2f, 15f, 2.2f));
				meshData3.Box(track.At(0, (float)i * (num - 1.15f), 7.5f), val, new Vector3(0.12f, 13f, 0.5f));
			}
			meshData.Box(track.At(0, 0f, 14f), val, new Vector3(num * 2f + 2.2f, 3f, 2.2f));
			meshData3.Box(track.At(0, 0f, 12.4f), val, new Vector3(num * 2f, 0.25f, 2.3f));
			Text("QUAD'S HUB RACEWAY", track.At(0, 0f, 14.3f) - track.Fwd[0] * 1.15f, val * Quaternion.Euler(0f, 180f, 0f), 2f);
			Text("QUAD'S HUB RACEWAY", track.At(0, 0f, 14f) + track.Fwd[0] * 1.15f, val, 2.2f);
			for (int j = 0; j < 4; j++)
			{
				Vector3 val2 = track.At(0, ((float)j - 1.5f) * 3.2f, 10.2f) - track.Fwd[0] * 0.45f;
				meshData.Box(val2 + track.Fwd[0] * 0.35f, val, new Vector3(2.6f, 2.6f, 0.6f));
				GameObject obj = Copy((PrimitiveType)2, "StartLight");
				obj.transform.SetPositionAndRotation(val2, val * Quaternion.Euler(90f, 0f, 0f));
				obj.transform.localScale = new Vector3(2f, 0.2f, 2f);
				((Renderer)obj.GetComponent<MeshRenderer>()).sharedMaterial = StartLights[j];
			}
		}

		private void BuildPaddock()
		{
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0084: Unknown result type (might be due to invalid IL or missing references)
			//IL_0089: Unknown result type (might be due to invalid IL or missing references)
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0098: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_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_00b2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c6: 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_00d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00db: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0101: Unknown result type (might be due to invalid IL or missing references)
			//IL_0108: Unknown result type (might be due to invalid IL or missing references)
			//IL_010d: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_0145: Unknown result type (might be due to invalid IL or missing references)
			//IL_014a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0156: Unknown result type (might be due to invalid IL or missing references)
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018a: Unknown result type (might be due to invalid IL or missing references)
			//IL_019c: 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_01d0: 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_0202: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Unknown result type (might be due to invalid IL or missing references)
			//IL_0219: Unknown result type (might be due to invalid IL or missing references)
			//IL_0242: Unknown result type (might be due to invalid IL or missing references)
			//IL_0247: Unknown result type (might be due to invalid IL or missing references)
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_0287: Unknown result type (might be due to invalid IL or missing references)
			//IL_028c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0292: Unknown result type (might be due to invalid IL or missing references)
			//IL_0297: Unknown result type (might be due to invalid IL or missing references)
			//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0300: Unknown result type (might be due to invalid IL or missing references)
			//IL_030c: Unknown result type (might be due to invalid IL or missing references)
			//IL_032c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0331: Unknown result type (might be due to invalid IL or missing references)
			//IL_033d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0366: Unknown result type (might be due to invalid IL or missing references)
			//IL_036b: Unknown result type (might be due to invalid IL or missing references)
			//IL_037b: Unknown result type (might be due to invalid IL or missing references)
			//IL_039f: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_03f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_040c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0434: Unknown result type (might be due to invalid IL or missing references)
			//IL_0439: Unknown result type (might be due to invalid IL or missing references)
			//IL_0449: Unknown result type (might be due to invalid IL or missing references)
			//IL_049b: Unknown result type (might be due to invalid IL or missing references)
			//IL_04a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ae: Unknown result type (might be due to invalid IL or missing references)
			//IL_04b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_04bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_04c4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ea: Unknown result type (might be due to invalid IL or missing references)
			//IL_04ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_04f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_04fb: Unknown result type (might be due to invalid IL or missing references)
			//IL_0501: Unknown result type (might be due to invalid IL or missing references)
			//IL_050f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0514: Unknown result type (might be due to invalid IL or missing references)
			//IL_0519: Unknown result type (might be due to invalid IL or missing references)
			//IL_0529: Unknown result type (might be due to invalid IL or missing references)
			//IL_053f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0541: Unknown result type (might be due to invalid IL or missing references)
			//IL_054b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0550: Unknown result type (might be due to invalid IL or missing references)
			//IL_0556: Unknown result type (might be due to invalid IL or missing references)
			//IL_0564: Unknown result type (might be due to invalid IL or missing references)
			//IL_0569: Unknown result type (might be due to invalid IL or missing references)
			//IL_056e: Unknown result type (might be due to invalid IL or missing references)
			//IL_057e: Unknown result type (might be due to invalid IL or missing references)
			//IL_05af: Unknown result type (might be due to invalid IL or missing references)
			//IL_05b4: Unknown result type (might be due to invalid IL or missing references)
			//IL_088d: Unknown result type (might be due to invalid IL or missing references)
			//IL_08a4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_08c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_08cf: Unknown result type (might be due to invalid IL or missing references)
			//IL_08d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08da: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08e9: Unknown result type (might be due to invalid IL or missing references)
			//IL_08ee: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_08f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_0669: Unknown result type (might be due to invalid IL or missing references)
			//IL_066b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0675: Unknown result type (might be due to invalid IL or missing references)
			//IL_067a: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_05d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_05de: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e3: Unknown result type (might be due to invalid IL or missing references)
			//IL_05e8: Unknown result type (might be due to invalid IL or missing references)
			//IL_0604: Unknown result type (might be due to invalid IL or missing references)
			//IL_0640: Unknown result type (might be due to invalid IL or missing references)
			//IL_0642: Unknown result type (might be due to invalid IL or missing references)
			//IL_064c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0651: Unknown result type (might be due to invalid IL or missing references)
			//IL_0935: Unknown result type (might be due to invalid IL or missing references)
			//IL_093a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0944: Unknown result type (might be due to invalid IL or missing references)
			//IL_0949: Unknown result type (might be due to invalid IL or missing references)
			//IL_094e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0953: Unknown result type (might be due to invalid IL or missing references)
			//IL_0958: Unknown result type (might be due to invalid IL or missing references)
			//IL_0962: Unknown result type (might be due to invalid IL or missing references)
			//IL_0967: Unknown result type (might be due to invalid IL or missing references)
			//IL_096c: Unknown result type (might be due to invalid IL or missing references)
			//IL_096e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0973: Unknown result type (might be due to invalid IL or missing references)
			//IL_098c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0991: Unknown result type (might be due to invalid IL or missing references)
			//IL_0993: Unknown result type (might be due to invalid IL or missing references)
			//IL_0995: Unknown result type (might be due to invalid IL or missing references)
			//IL_09a5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_09af: Unknown result type (might be due to invalid IL or missing references)
			//IL_09be: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c0: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_09c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_09cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d6: Unknown result type (might be due to invalid IL or missing references)
			//IL_06d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_06e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_06eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_06f7: Unknown result type (might be due to invalid IL or missing references)
			//IL_06fc: Unknown result type (might be due to invalid IL or missing references)
			//IL_0706: Unknown result type (might be due to invalid IL or missing references)
			//IL_070b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0710: Unknown result type (might be due to invalid IL or missing references)
			//IL_0730: Unknown result type (might be due to invalid IL or missing references)
			//IL_0732: Unknown result type (might be due to invalid IL or missing references)
			//IL_073c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0741: Unknown result type (might be due to invalid IL or missing references)
			//IL_0746: Unknown result type (might be due to invalid IL or missing references)
			//IL_0756: Unknown result type (might be due to invalid IL or missing references)
			//IL_0768: Unknown result type (might be due to invalid IL or missing references)
			//IL_076a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0774: Unknown result type (might be due to invalid IL or missing references)
			//IL_0779: Unknown result type (might be due to invalid IL or missing references)
			//IL_077e: Unknown result type (might be due to invalid IL or missing references)
			//IL_078e: Unknown result type (might be due to invalid IL or missing references)
			//IL_07c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_07cc: Unknown result type (might be due to invalid IL or missing references)
			//IL_07da: Unknown result type (might be due to invalid IL or missing references)
			//IL_07df: Unknown result type (might be due to invalid IL or missing references)
			//IL_07e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_07ec: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f1: Unknown result type (might be due to invalid IL or missing references)
			//IL_07f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_0800: Unknown result type (might be due to invalid IL or missing references)
			//IL_0805: Unknown result type (might be due to invalid IL or missing references)
			//IL_080a: Unknown result type (might be due to invalid IL or missing references)
			//IL_081a: Unknown result type (might be due to invalid IL or missing references)
			//IL_083b: Unknown result type (might be due to invalid IL or missing references)
			//IL_083e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0845: Unknown result type (might be due to invalid IL or missing references)
			//IL_084a: Unknown result type (might be due to invalid IL or missing references)
			//IL_084f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0859: Unknown result type (might be due to invalid IL or missing references)
			//IL_085e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0863: Unknown result type (might be due to invalid IL or missing references)
			//IL_0873: Unknown result type (might be due to invalid IL or missing references)
			int num = (PaddockFrom + PaddockTo) / 2;
			float num2 = (paddockLength = (float)(PaddockTo - PaddockFrom) * track.Step);
			Vector3 val = new Vector3(track.Fwd[num].x, 0f, track.Fwd[num].z);
			Vector3 along = ((Vector3)(ref val)).normalized;
			Vector3 across = Vector3.Cross(Vector3.up, along) * -1f;
			Quaternion val2 = Quaternion.LookRotation(Vector3.Cross(along, Vector3.up), Vector3.up);
			Vector3 top = track.Pos[num] + across * 35.5f;
			top.y -= 0.03f;
			PaddockCenter = top;
			PaddockAcross = across;
			PaddockForward = along;
			float num3 = num2 / 2f;
			float num4 = 22f;
			Box("Paddock", P(0f, -0.75f, 0f), val2, new Vector3(num2, 1.5f, 44f), WallFace, collide: true);
			Batch(Rust).Box(P(0f, -2.1f, 0f), val2, new Vector3(num2 - 4f, 1.2f, 40f));
			MeshData meshData = Batch(Pipe);
			meshData.Box(P(0f, 0.015f, 0f - num4 + 2f), val2, new Vector3(num2 - 2f, 0.03f, 0.5f));
			meshData.Box(P(0f, 0.015f, num4 - 2f), val2, new Vector3(num2 - 2f, 0.03f, 0.5f));
			for (int i = -1; i <= 1; i += 2)
			{
				meshData.Box(P((float)i * (num3 - 2f), 0.015f, 0f), val2, new Vector3(0.5f, 0.03f, 40f));
			}
			((Graphic)Text("QUAD'S HUB RACEWAY", P(0f, 0.04f, 0f - num4 + 5.5f), Quaternion.LookRotation(Vector3.up, across), 3.2f).GetComponent<TextMeshPro>()).color = new Color(0.75f, 0.12f, 0.1f, 0.85f);
			MeshData meshData2 = SolidBatch(Concrete);
			MeshData meshData3 = Batch(HubGlow);
			meshData2.Box(P(0f, 0.55f, num4 - 0.4f), val2, new Vector3(num2, 1.1f, 0.8f));
			meshData3.Box(P(0f, 1.13f, num4 - 0.4f), val2, new Vector3(num2, 0.06f, 0.4f));
			for (int j = -1; j <= 1; j += 2)
			{
				meshData2.Box(P((float)j * (num3 - 0.4f), 0.55f, 0f), val2, new Vector3(0.8f, 1.1f, 44f));
				meshData3.Box(P((float)j * (num3 - 0.4f), 1.13f, 0f), val2, new Vector3(0.4f, 0.06f, 44f));
			}
			for (float num5 = 0f - num3 + 3f; num5 <= num3 - 3f; num5 += 5f)
			{
				SolidBatch(Pipe).Box(P(num5, 0.45f, 0f - num4 + 0.6f), val2, new Vector3(0.35f, 0.9f, 0.35f));
				Batch(HubGlow).Box(P(num5, 0.93f, 0f - num4 + 0.6f), val2, new Vector3(0.4f, 0.08f, 0.4f));
			}
			for (int k = -1; k <= 1; k += 2)
			{
				for (int l = -1; l <= 1; l += 2)
				{
					Vector3 val3 = P((float)k * (num3 - 1.5f), 0f, (float)l * (num4 - 1.5f));
					SolidBatch(Pipe).Box(val3 + Vector3.up * 6f, val2, new Vector3(0.45f, 12f, 0.45f));
					Batch(Pipe).Box(val3 + Vector3.up * 11.6f - across * ((float)l * 1.2f), val2, new Vector3(0.3f, 0.3f, 2.8f));
					Batch(Lamp).Box(val3 + Vector3.up * 11.35f - across * ((float)l * 2.3f), val2, new Vector3(1.6f, 0.2f, 1.6f));
				}
			}
			for (int m = -1; m <= 1; m++)
			{
				Vector3 val4 = Station(m);
				if (m != 0)
				{
					GameObject val5 = Copy((PrimitiveType)2, "Dais");
					val5.transform.SetPositionAndRotation(val4 + Vector3.up * 0.2f, val2);
					val5.transform.localScale = new Vector3(11f, 0.2f, 11f);
					((Renderer)val5.GetComponent<MeshRenderer>()).sharedMaterial = Concrete;
					MeshCollider obj = val5.AddComponent<MeshCollider>();
					obj.sharedMesh = val5.GetComponent<MeshFilter>().sharedMesh;
					obj.convex = true;
					FloorRing(val4 + Vector3.up * 0.38f, 5.55f, HubGlow);
				}
				else
				{
					FloorRing(val4 + Vector3.up * 0.02f, 5.2f, HubGlow);
				}
				Material m2 = ((m < 0) ? Glow : ((m > 0) ? EdgeGlow : HubGlow));
				for (int n = 0; n < 6; n++)
				{
					float num6 = ((float)n + 0.5f) * MathF.PI * 2f / 6f;
					Vector3 val6 = val4 + (along * Mathf.Cos(num6) + across * Mathf.Sin(num6)) * 6.3f;
					if (m != 0 || !(Mathf.Sin(num6) > 0.3f))
					{
						Batch(Pipe).Box(val6 + Vector3.up * 0.3f, val2, new Vector3(0.6f, 0.6f, 0.6f));
						Batch(m2).Box(val6 + Vector3.up * 2.6f, val2, new Vector3(0.16f, 4f, 0.16f));
					}
				}
				float num7 = ((m == 0) ? 7f : 6f);
				for (int num8 = -1; num8 <= 1; num8 += 2)
				{
					SolidBatch(Pipe).Box(val4 + along * ((float)num8 * 5.5f) + across * num7 + Vector3.up * 4f, val2, new Vector3(0.7f, 8f, 0.7f));
				}
				Batch(Pipe).Box(val4 + across * num7 + Vector3.up * 8.2f, val2, new Vector3(12f, 0.6f, 0.7f));
			}
			FloorRing(Arrival, 3f, HubGlow);
			FloorRing(Arrival, 2.2f, EdgeGlow);
			Text("ARRIVALS", Arrival + Vector3.up * 0.05f - across * 4f, Quaternion.LookRotation(Vector3.up, across), 1.2f);
			Material[] array = (Material[])(object)new Material[3] { Glow, Paint, EdgeGlow };
			for (int num9 = -1; num9 <= 1; num9++)
			{
				Vector3 val7 = Arrival + Vector3.up * 0.03f;
				Vector3 val8 = Station(num9) + Vector3.up * 0.03f - val7;
				float num10 = ((Vector3)(ref val8)).magnitude - 3f - 5f;
				Vector3 normalized = ((Vector3)(ref val8)).normalized;
				Vector3 center = val7 + normalized * (3f + num10 / 2f);
				Batch(array[num9 + 1]).Quad(center, Vector3.Cross(Vector3.up, normalized), normalized, 0.5f, num10, flipU: false);
			}
			Vector3 P(float x, float y, float z)
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0007: Unknown result type (might be due to invalid IL or missing references)
				//IL_000d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0012: Unknown result type (might be due to invalid IL or missing references)
				//IL_0017: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: 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_002e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0033: Unknown result type (might be due to invalid IL or missing references)
				return top + along * x + Vector3.up * y + across * z;
			}
		}

		public Vector3 Station(int k)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_001c: 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)
			return PaddockCenter + PaddockAcross * 6f + PaddockForward * ((float)k * 24f);
		}

		public Vector3 StationTop(int k)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_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)
			return Station(k) + Vector3.up * ((k == 0) ? 0f : 0.4f);
		}

		public void StationSign(int k, string text, Material line)
		{
			//IL_0012: 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_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_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_003e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Unknown result type (might be due to invalid IL or missing references)
			//IL_0048: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: 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_0077: 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_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Unknown result type (might be due to invalid IL or missing references)
			//IL_008d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: 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_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bf: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ce: Unknown result type (might be due to invalid IL or missing references)
			//IL_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_00de: Unknown result type (might be due to invalid IL or missing references)
			float num = ((k == 0) ? 7f : 6f);
			Vector3 val = Station(k) + PaddockAcross * num + Vector3.up * 9.6f;
			Quaternion rotation = Quaternion.LookRotation(PaddockAcross);
			Batch(Dark).Box(val, rotation, new Vector3(11f, 2.2f, 0.4f));
			Batch(line).Box(val - Vector3.up * 1.15f - PaddockAcross * 0.05f, rotation, new Vector3(11f, 0.14f, 0.45f));
			Text(text, val - PaddockAcross * 0.25f, Quaternion.LookRotation(-PaddockAcross), 1.3f);
		}

		private void FloorRing(Vector3 at, float radius, Material material)
		{
			//IL_0005: Unknown result type (might be d