Decompiled source of PeakSigns v1.0.4

Signal_SignsObject.dll

Decompiled 3 weeks ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using ExitGames.Client.Photon;
using Photon.Pun;
using Photon.Realtime;
using UnityEngine;
using UnityEngine.Rendering;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("Signal_SignsObject")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Signal_SignsObject")]
[assembly: AssemblyCopyright("Copyright ©  2026")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("E3F34790-BFC6-436B-987D-0FA3617187BA")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
[BepInPlugin("com.mitschpielen.peaksigns", "Peak Signs", "1.0.0")]
public class PeakSigns : BaseUnityPlugin
{
	private ConfigEntry<int> _mouseButton;

	private ConfigEntry<float> _maxDistance;

	private ConfigEntry<float> _deleteHoldSeconds;

	private ConfigEntry<float> _placeHoldSeconds;

	private readonly Color _deleteColor = new Color(1f, 0.35f, 0.1f, 1f);

	private readonly Color _placeColor = new Color(0.1f, 1f, 0.2f, 1f);

	private bool _isHolding;

	private float _holdStart;

	private bool _placedThisHold;

	private GameObject _deleteTarget;

	private readonly Dictionary<int, GameObject> _signsById = new Dictionary<int, GameObject>();

	private GameObject _progressRoot;

	private Image _progressFill;

	private bool _progressReady;

	private const byte EVT_SPAWN_SIGN = 101;

	private const byte EVT_DELETE_SIGN = 202;

	private float _nextRecolorAt;

	private const float RECOLOR_INTERVAL = 10f;

	private int _localCounter = 0;

	private static object _cachedCustomization;

	private static Type _ccType;

	private static MethodInfo _ccGetDataMethod;

	private static bool _ccSearched;

	private void Awake()
	{
		_mouseButton = ((BaseUnityPlugin)this).Config.Bind<int>("Input", "MouseButton", 2, "2 = Middle Mouse (Mausrad-Klick)");
		_maxDistance = ((BaseUnityPlugin)this).Config.Bind<float>("Placement", "MaxDistance", 60f, "Maximale Distanz.");
		_deleteHoldSeconds = ((BaseUnityPlugin)this).Config.Bind<float>("Delete", "HoldSeconds", 0.5f, "Hold-Zeit zum Löschen (halbiert).");
		_placeHoldSeconds = ((BaseUnityPlugin)this).Config.Bind<float>("Placement", "HoldSeconds", 0.125f, "Hold-Zeit zum Platzieren (halbiert).");
		_nextRecolorAt = Time.unscaledTime + 10f;
		((BaseUnityPlugin)this).Logger.LogInfo((object)"Peak Signs 1.0.0 geladen. MP Sync + Owner-Farbe + Wand parallel zur Oberfläche + Recolor alle 10s.");
	}

	private void OnEnable()
	{
		if (PhotonNetwork.NetworkingClient != null)
		{
			PhotonNetwork.NetworkingClient.EventReceived += OnPhotonEvent;
		}
	}

	private void OnDisable()
	{
		if (PhotonNetwork.NetworkingClient != null)
		{
			PhotonNetwork.NetworkingClient.EventReceived -= OnPhotonEvent;
		}
	}

	private void Start()
	{
		TrySetupUseItemProgress();
	}

	private void Update()
	{
		//IL_018f: 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_0236: Unknown result type (might be due to invalid IL or missing references)
		//IL_0244: Unknown result type (might be due to invalid IL or missing references)
		//IL_015c: 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_01e7: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
		if (!_progressReady)
		{
			TrySetupUseItemProgress();
		}
		if (Time.unscaledTime >= _nextRecolorAt)
		{
			_nextRecolorAt = Time.unscaledTime + 10f;
			RefreshAllSignsColors();
		}
		int value = _mouseButton.Value;
		if (Input.GetMouseButtonDown(value))
		{
			_isHolding = true;
			_holdStart = Time.unscaledTime;
			_placedThisHold = false;
			_deleteTarget = GetSignUnderCrosshair();
		}
		if (_isHolding && Input.GetMouseButton(value))
		{
			float num = Time.unscaledTime - _holdStart;
			if (!_placedThisHold)
			{
				_deleteTarget = GetSignUnderCrosshair();
			}
			if ((Object)(object)_deleteTarget != (Object)null)
			{
				float progress = Mathf.Clamp01(num / Mathf.Max(0.01f, _deleteHoldSeconds.Value));
				ShowProgress(visible: true, _deleteColor);
				SetProgress(progress);
				if (num >= _deleteHoldSeconds.Value)
				{
					int num2 = FindIdForSignObject(_deleteTarget);
					if (num2 != 0)
					{
						RequestDelete(num2);
					}
					_deleteTarget = null;
					_isHolding = false;
					ShowProgress(visible: false, _deleteColor);
				}
				return;
			}
			float progress2 = Mathf.Clamp01(num / Mathf.Max(0.01f, _placeHoldSeconds.Value));
			ShowProgress(visible: true, _placeColor);
			SetProgress(progress2);
			if (!_placedThisHold && num >= _placeHoldSeconds.Value)
			{
				if (TryGetPlacement(out var placePos, out var rot, out var surfaceNormal, out var isWall))
				{
					int id = GenerateSignIdStable();
					RequestSpawn(id, placePos, rot, surfaceNormal, isWall);
					_placedThisHold = true;
				}
				ShowProgress(visible: false, _placeColor);
			}
		}
		if (_isHolding && Input.GetMouseButtonUp(value))
		{
			_isHolding = false;
			_deleteTarget = null;
			ShowProgress(visible: false, _deleteColor);
			ShowProgress(visible: false, _placeColor);
		}
	}

	private void RequestSpawn(int id, Vector3 pos, Quaternion rot, Vector3 normal, bool isWall)
	{
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_001a: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: 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_0053: 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_007d: 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_0099: Unknown result type (might be due to invalid IL or missing references)
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f4: Unknown result type (might be due to invalid IL or missing references)
		//IL_00fa: Expected O, but got Unknown
		//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
		int ownerActor = (PhotonNetwork.IsConnected ? PhotonNetwork.LocalPlayer.ActorNumber : 0);
		SpawnLocal(id, ownerActor, pos, rot, normal, isWall);
		if (IsInMultiplayerRoom())
		{
			object[] array = new object[12]
			{
				id,
				pos.x,
				pos.y,
				pos.z,
				rot.x,
				rot.y,
				rot.z,
				rot.w,
				normal.x,
				normal.y,
				normal.z,
				isWall ? 1 : 0
			};
			RaiseEventOptions val = new RaiseEventOptions
			{
				Receivers = (ReceiverGroup)0,
				CachingOption = (EventCaching)4
			};
			PhotonNetwork.RaiseEvent((byte)101, (object)array, val, SendOptions.SendReliable);
		}
	}

	private void RequestDelete(int id)
	{
		//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_002b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0030: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0038: Expected O, but got Unknown
		//IL_003f: Unknown result type (might be due to invalid IL or missing references)
		DeleteLocal(id);
		if (IsInMultiplayerRoom())
		{
			object[] array = new object[1] { id };
			RaiseEventOptions val = new RaiseEventOptions
			{
				Receivers = (ReceiverGroup)0,
				CachingOption = (EventCaching)4
			};
			PhotonNetwork.RaiseEvent((byte)202, (object)array, val, SendOptions.SendReliable);
		}
	}

	private void OnPhotonEvent(EventData photonEvent)
	{
		//IL_00ce: 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_00d2: Unknown result type (might be due to invalid IL or missing references)
		if (photonEvent == null)
		{
			return;
		}
		if (photonEvent.Code == 101)
		{
			if (photonEvent.CustomData is object[] array && array.Length >= 12)
			{
				int id = (int)array[0];
				Vector3 pos = default(Vector3);
				((Vector3)(ref pos))..ctor(Convert.ToSingle(array[1]), Convert.ToSingle(array[2]), Convert.ToSingle(array[3]));
				Quaternion rot = default(Quaternion);
				((Quaternion)(ref rot))..ctor(Convert.ToSingle(array[4]), Convert.ToSingle(array[5]), Convert.ToSingle(array[6]), Convert.ToSingle(array[7]));
				Vector3 normal = default(Vector3);
				((Vector3)(ref normal))..ctor(Convert.ToSingle(array[8]), Convert.ToSingle(array[9]), Convert.ToSingle(array[10]));
				bool isWall = Convert.ToInt32(array[11]) == 1;
				int sender = photonEvent.Sender;
				SpawnLocal(id, sender, pos, rot, normal, isWall);
			}
		}
		else if (photonEvent.Code == 202 && photonEvent.CustomData is object[] array2 && array2.Length >= 1)
		{
			int id2 = (int)array2[0];
			DeleteLocal(id2);
		}
	}

	private bool IsInMultiplayerRoom()
	{
		return PhotonNetwork.IsConnected && PhotonNetwork.InRoom;
	}

	private void SpawnLocal(int id, int ownerActor, Vector3 pos, Quaternion rot, Vector3 normal, bool isWall)
	{
		//IL_0014: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: Unknown result type (might be due to invalid IL or missing references)
		//IL_001b: 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_001e: 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_0068: Unknown result type (might be due to invalid IL or missing references)
		if (!_signsById.ContainsKey(id))
		{
			Color ownerPlayerColor = GetOwnerPlayerColor(ownerActor);
			GameObject value = CreateSign(pos, rot, normal, isWall, id, ownerActor, ownerPlayerColor);
			_signsById[id] = value;
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"Schild gespawnt id={id} ownerActor={ownerActor} isWall={isWall} pos={pos}");
		}
	}

	private void DeleteLocal(int id)
	{
		if (_signsById.TryGetValue(id, out var value) && !((Object)(object)value == (Object)null))
		{
			_signsById.Remove(id);
			Object.Destroy((Object)(object)value);
			((BaseUnityPlugin)this).Logger.LogInfo((object)$"Schild gelöscht id={id}");
		}
	}

	private int FindIdForSignObject(GameObject signObj)
	{
		PeakSignMarker peakSignMarker = signObj.GetComponent<PeakSignMarker>();
		if ((Object)(object)peakSignMarker == (Object)null)
		{
			peakSignMarker = signObj.GetComponentInParent<PeakSignMarker>();
		}
		GameObject val = (((Object)(object)peakSignMarker != (Object)null) ? ((Component)peakSignMarker).gameObject : signObj);
		foreach (KeyValuePair<int, GameObject> item in _signsById)
		{
			if ((Object)(object)item.Value == (Object)(object)val)
			{
				return item.Key;
			}
		}
		return 0;
	}

	private int GenerateSignIdStable()
	{
		int num = (PhotonNetwork.IsConnected ? PhotonNetwork.LocalPlayer.ActorNumber : 0);
		_localCounter++;
		int num2 = (num << 20) ^ (_localCounter & 0xFFFFF);
		if (num2 == 0)
		{
			num2 = 1;
		}
		return num2;
	}

	private bool TryGetPlacement(out Vector3 placePos, out Quaternion rot, out Vector3 surfaceNormal, out bool isWall)
	{
		//IL_0002: Unknown result type (might be due to invalid IL or missing references)
		//IL_0007: Unknown result type (might be due to invalid IL or missing references)
		//IL_000d: Unknown result type (might be due to invalid IL or missing references)
		//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_001d: Unknown result type (might be due to invalid IL or missing references)
		//IL_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0059: Unknown result type (might be due to invalid IL or missing references)
		//IL_005a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_00a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_00af: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b9: 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_0123: Unknown result type (might be due to invalid IL or missing references)
		//IL_0128: 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_0131: 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_0135: Unknown result type (might be due to invalid IL or missing references)
		//IL_013a: 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_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_015e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0160: Unknown result type (might be due to invalid IL or missing references)
		//IL_0162: Unknown result type (might be due to invalid IL or missing references)
		//IL_0167: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_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_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_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)
		placePos = Vector3.zero;
		rot = Quaternion.identity;
		surfaceNormal = Vector3.up;
		isWall = false;
		Camera main = Camera.main;
		if ((Object)(object)main == (Object)null)
		{
			return false;
		}
		Ray val = main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f));
		RaycastHit val2 = default(RaycastHit);
		if (!Physics.Raycast(val, ref val2, _maxDistance.Value, -1, (QueryTriggerInteraction)1))
		{
			return false;
		}
		Vector3 val3 = ((RaycastHit)(ref val2)).normal;
		surfaceNormal = ((Vector3)(ref val3)).normalized;
		isWall = surfaceNormal.y < 0.6f;
		placePos = ((RaycastHit)(ref val2)).point + surfaceNormal * 0.06f;
		if (!isWall)
		{
			Vector3 val4 = Vector3.ProjectOnPlane(((Component)main).transform.forward, Vector3.up);
			if (((Vector3)(ref val4)).sqrMagnitude < 0.0001f)
			{
				val4 = Vector3.forward;
			}
			rot = Quaternion.LookRotation(((Vector3)(ref val4)).normalized, Vector3.up);
		}
		else
		{
			Vector3 val5 = surfaceNormal;
			Vector3 up = Vector3.up;
			val3 = Vector3.Cross(up, val5);
			if (((Vector3)(ref val3)).sqrMagnitude < 0.0001f)
			{
				up = ((Component)main).transform.up;
			}
			rot = Quaternion.LookRotation(val5, up);
		}
		return true;
	}

	private GameObject GetSignUnderCrosshair()
	{
		//IL_0027: Unknown result type (might be due to invalid IL or missing references)
		//IL_002c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0031: 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)
		Camera main = Camera.main;
		if ((Object)(object)main == (Object)null)
		{
			return null;
		}
		Ray val = main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f));
		RaycastHit val2 = default(RaycastHit);
		if (Physics.Raycast(val, ref val2, _maxDistance.Value, -1, (QueryTriggerInteraction)2))
		{
			PeakSignMarker peakSignMarker = (((Object)(object)((RaycastHit)(ref val2)).collider != (Object)null) ? ((Component)((RaycastHit)(ref val2)).collider).GetComponentInParent<PeakSignMarker>() : null);
			if ((Object)(object)peakSignMarker != (Object)null)
			{
				return ((Component)peakSignMarker).gameObject;
			}
		}
		return null;
	}

	private static object GetCustomizationInstanceReflect()
	{
		if (_cachedCustomization != null)
		{
			return _cachedCustomization;
		}
		try
		{
			Type type = null;
			Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
			foreach (Assembly assembly in assemblies)
			{
				type = assembly.GetType("Zorro.Core.Singleton`1", throwOnError: false);
				if (type != null)
				{
					break;
				}
			}
			if (type == null)
			{
				return null;
			}
			Type type2 = type.MakeGenericType(typeof(Customization));
			PropertyInfo property = type2.GetProperty("Instance", BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
			if (property == null)
			{
				return null;
			}
			_cachedCustomization = property.GetValue(null, null);
			return _cachedCustomization;
		}
		catch
		{
			return null;
		}
	}

	private static void EnsureCharacterCustomizationMethod()
	{
		if (_ccSearched)
		{
			return;
		}
		_ccSearched = true;
		try
		{
			Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
			foreach (Assembly assembly in assemblies)
			{
				Type type = assembly.GetType("CharacterCustomization", throwOnError: false);
				if (type != null)
				{
					_ccType = type;
					break;
				}
			}
			if (_ccType == null)
			{
				return;
			}
			MethodInfo ccGetDataMethod = null;
			MethodInfo[] methods = _ccType.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
			MethodInfo[] array = methods;
			foreach (MethodInfo methodInfo in array)
			{
				ParameterInfo[] parameters = methodInfo.GetParameters();
				if (parameters == null || parameters.Length != 1)
				{
					continue;
				}
				Type parameterType = parameters[0].ParameterType;
				if (!parameterType.IsAssignableFrom(typeof(Player)) && !typeof(Player).IsAssignableFrom(parameterType))
				{
					continue;
				}
				Type returnType = methodInfo.ReturnType;
				if (returnType == typeof(void))
				{
					continue;
				}
				bool flag = returnType.GetField("currentSkin", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) != null || returnType.GetProperty("currentSkin", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic) != null;
				if (flag || returnType.Name.IndexOf("Customization", StringComparison.OrdinalIgnoreCase) >= 0)
				{
					ccGetDataMethod = methodInfo;
					if (flag)
					{
						break;
					}
				}
			}
			_ccGetDataMethod = ccGetDataMethod;
		}
		catch
		{
			_ccType = null;
			_ccGetDataMethod = null;
		}
	}

	private static int GetCurrentSkinIndexForPlayer(Player ownerPlayer)
	{
		try
		{
			EnsureCharacterCustomizationMethod();
			if (_ccType == null || _ccGetDataMethod == null)
			{
				return -1;
			}
			object obj = null;
			if (!_ccGetDataMethod.IsStatic)
			{
				if (!typeof(Object).IsAssignableFrom(_ccType))
				{
					return -1;
				}
				obj = Object.FindAnyObjectByType(_ccType);
				if (obj == null)
				{
					return -1;
				}
			}
			object obj2 = _ccGetDataMethod.Invoke(obj, new object[1] { ownerPlayer });
			if (obj2 == null)
			{
				return -1;
			}
			object memberValue = GetMemberValue(obj2, "currentSkin");
			if (memberValue == null)
			{
				return -1;
			}
			return Convert.ToInt32(memberValue);
		}
		catch
		{
			return -1;
		}
	}

	private static Color GetOwnerPlayerColor(int ownerActor)
	{
		//IL_012a: 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_012f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0035: Unknown result type (might be due to invalid IL or missing references)
		//IL_0036: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_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_009a: Unknown result type (might be due to invalid IL or missing references)
		//IL_009b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
		//IL_00e2: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0104: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_011d: 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)
		Color result = default(Color);
		((Color)(ref result))..ctor(1f, 0.95f, 0.2f, 1f);
		try
		{
			if (!PhotonNetwork.IsConnected || PhotonNetwork.CurrentRoom == null)
			{
				return result;
			}
			Player player = PhotonNetwork.CurrentRoom.GetPlayer(ownerActor, false);
			if (player == null)
			{
				return result;
			}
			object customizationInstanceReflect = GetCustomizationInstanceReflect();
			if (customizationInstanceReflect == null)
			{
				return result;
			}
			if (!(GetMemberValue(customizationInstanceReflect, "skins") is Array array) || array.Length == 0)
			{
				return result;
			}
			int currentSkinIndexForPlayer = GetCurrentSkinIndexForPlayer(player);
			if (currentSkinIndexForPlayer < 0)
			{
				return result;
			}
			currentSkinIndexForPlayer = Mathf.Clamp(currentSkinIndexForPlayer, 0, array.Length - 1);
			object value = array.GetValue(currentSkinIndexForPlayer);
			if (value == null)
			{
				return result;
			}
			if (GetMemberValue(value, "color") is Color result2)
			{
				result2.a = 1f;
				return result2;
			}
			return result;
		}
		catch
		{
			return result;
		}
	}

	private static object GetMemberValue(object obj, string name)
	{
		if (obj == null)
		{
			return null;
		}
		Type type = obj.GetType();
		FieldInfo field = type.GetField(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
		if (field != null)
		{
			return field.GetValue(obj);
		}
		PropertyInfo property = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
		if (property != null)
		{
			return property.GetValue(obj, null);
		}
		return null;
	}

	private void RefreshAllSignsColors()
	{
		//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_0094: 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_00c5: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cf: Unknown result type (might be due to invalid IL or missing references)
		if (GetCustomizationInstanceReflect() == null)
		{
			return;
		}
		foreach (KeyValuePair<int, GameObject> item in _signsById)
		{
			GameObject value = item.Value;
			if ((Object)(object)value == (Object)null)
			{
				continue;
			}
			PeakSignMarker component = value.GetComponent<PeakSignMarker>();
			if (!((Object)(object)component == (Object)null))
			{
				Color ownerPlayerColor = GetOwnerPlayerColor(component.OwnerActor);
				Transform val = value.transform.Find("Panel");
				if ((Object)(object)val != (Object)null)
				{
					SetRendererColor(((Component)val).GetComponent<MeshRenderer>(), ownerPlayerColor);
				}
				Transform val2 = value.transform.Find("Pole");
				if ((Object)(object)val2 != (Object)null)
				{
					SetRendererColor(((Component)val2).GetComponent<MeshRenderer>(), Color.Lerp(ownerPlayerColor, Color.black, 0.45f));
				}
			}
		}
	}

	private static void SetRendererColor(MeshRenderer mr, Color c)
	{
		//IL_004c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Expected O, but got Unknown
		//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
		if ((Object)(object)mr == (Object)null)
		{
			return;
		}
		Material material = ((Renderer)mr).material;
		if ((Object)(object)material == (Object)null)
		{
			Shader val = Shader.Find("Unlit/Color");
			if ((Object)(object)val == (Object)null)
			{
				val = Shader.Find("Standard");
			}
			material = new Material(val);
			((Renderer)mr).material = material;
		}
		Shader val2 = Shader.Find("Unlit/Color");
		if ((Object)(object)val2 != (Object)null && (Object)(object)((Renderer)mr).material.shader != (Object)(object)val2)
		{
			((Renderer)mr).material.shader = val2;
		}
		if (((Renderer)mr).material.HasProperty("_Color"))
		{
			((Renderer)mr).material.color = c;
		}
		((Renderer)mr).enabled = true;
	}

	private void TrySetupUseItemProgress()
	{
		//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0102: Invalid comparison between Unknown and I4
		//IL_0111: Unknown result type (might be due to invalid IL or missing references)
		//IL_0117: Invalid comparison between Unknown and I4
		//IL_011b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0121: Invalid comparison between Unknown and I4
		//IL_0125: Unknown result type (might be due to invalid IL or missing references)
		//IL_012b: Invalid comparison between Unknown and I4
		//IL_0247: 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)
		if (_progressReady)
		{
			return;
		}
		GameObject[] array = Resources.FindObjectsOfTypeAll<GameObject>();
		GameObject val = null;
		foreach (GameObject val2 in array)
		{
			if (!((Object)(object)val2 == (Object)null) && string.Equals(((Object)val2).name, "UseItem", StringComparison.OrdinalIgnoreCase))
			{
				if ((Object)(object)val2.transform.root != (Object)null && ((Object)val2.transform.root).name.IndexOf("GAME", StringComparison.OrdinalIgnoreCase) >= 0)
				{
					val = val2;
					break;
				}
				if ((Object)(object)val == (Object)null)
				{
					val = val2;
				}
			}
		}
		if ((Object)(object)val == (Object)null)
		{
			return;
		}
		Image[] componentsInChildren = val.GetComponentsInChildren<Image>(true);
		Image val3 = null;
		foreach (Image val4 in componentsInChildren)
		{
			if (!((Object)(object)val4 == (Object)null) && (int)val4.type == 3 && ((int)val4.fillMethod == 4 || (int)val4.fillMethod == 3 || (int)val4.fillMethod == 2))
			{
				val3 = val4;
				break;
			}
		}
		if ((Object)(object)val3 == (Object)null)
		{
			return;
		}
		Transform val5 = ((Component)val3).transform;
		for (int k = 0; k < 3; k++)
		{
			if (!((Object)(object)val5.parent != (Object)null))
			{
				break;
			}
			if ((Object)(object)((Component)val5.parent).gameObject == (Object)(object)val)
			{
				break;
			}
			val5 = val5.parent;
		}
		if ((Object)(object)_progressRoot != (Object)null)
		{
			Object.Destroy((Object)(object)_progressRoot);
			_progressRoot = null;
			_progressFill = null;
		}
		_progressRoot = Object.Instantiate<GameObject>(((Component)val5).gameObject, val5.parent);
		((Object)_progressRoot).name = "PeakSigns_Progress(Clone)";
		_progressRoot.SetActive(true);
		StripAnimators(_progressRoot);
		EnsureCanvasGroups(_progressRoot);
		_progressFill = FindFillInClone(_progressRoot, ((Object)val3).name, val3.fillMethod);
		SetProgress(0f);
		ShowProgress(visible: false, _deleteColor);
		_progressReady = (Object)(object)_progressFill != (Object)null;
	}

	private static void StripAnimators(GameObject root)
	{
		Animator[] componentsInChildren = root.GetComponentsInChildren<Animator>(true);
		for (int i = 0; i < componentsInChildren.Length; i++)
		{
			if ((Object)(object)componentsInChildren[i] != (Object)null)
			{
				Object.Destroy((Object)(object)componentsInChildren[i]);
			}
		}
		Animation[] componentsInChildren2 = root.GetComponentsInChildren<Animation>(true);
		for (int j = 0; j < componentsInChildren2.Length; j++)
		{
			if ((Object)(object)componentsInChildren2[j] != (Object)null)
			{
				Object.Destroy((Object)(object)componentsInChildren2[j]);
			}
		}
	}

	private static void EnsureCanvasGroups(GameObject root)
	{
		CanvasGroup[] componentsInChildren = root.GetComponentsInChildren<CanvasGroup>(true);
		if (componentsInChildren == null || componentsInChildren.Length == 0)
		{
			root.AddComponent<CanvasGroup>();
		}
	}

	private static Image FindFillInClone(GameObject cloneRoot, string wantName, FillMethod wantMethod)
	{
		//IL_0020: Unknown result type (might be due to invalid IL or missing references)
		//IL_0026: Invalid comparison between Unknown and I4
		//IL_0042: Unknown result type (might be due to invalid IL or missing references)
		//IL_0047: Unknown result type (might be due to invalid IL or missing references)
		//IL_0081: Unknown result type (might be due to invalid IL or missing references)
		//IL_0087: Invalid comparison between Unknown and I4
		Image[] componentsInChildren = cloneRoot.GetComponentsInChildren<Image>(true);
		foreach (Image val in componentsInChildren)
		{
			if (!((Object)(object)val == (Object)null) && (int)val.type == 3 && ((Object)val).name == wantName && val.fillMethod == wantMethod)
			{
				return val;
			}
		}
		foreach (Image val2 in componentsInChildren)
		{
			if ((Object)(object)val2 != (Object)null && (int)val2.type == 3)
			{
				return val2;
			}
		}
		return null;
	}

	private void ShowProgress(bool visible, Color color)
	{
		//IL_003d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0109: 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_0135: 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)
		if ((Object)(object)_progressRoot == (Object)null)
		{
			return;
		}
		_progressRoot.transform.SetAsLastSibling();
		if ((Object)(object)_progressFill != (Object)null)
		{
			((Graphic)_progressFill).color = color;
		}
		CanvasGroup[] componentsInChildren = _progressRoot.GetComponentsInChildren<CanvasGroup>(true);
		if (componentsInChildren != null && componentsInChildren.Length != 0)
		{
			foreach (CanvasGroup val in componentsInChildren)
			{
				if (!((Object)(object)val == (Object)null))
				{
					val.alpha = (visible ? 1f : 0f);
					val.interactable = false;
					val.blocksRaycasts = false;
				}
			}
		}
		else
		{
			_progressRoot.SetActive(visible);
		}
		RectTransform component = _progressRoot.GetComponent<RectTransform>();
		if ((Object)(object)component != (Object)null)
		{
			component.anchorMin = new Vector2(0.5f, 0.5f);
			component.anchorMax = new Vector2(0.5f, 0.5f);
			component.pivot = new Vector2(0.5f, 0.5f);
			component.anchoredPosition = new Vector2(180f, 0f);
			((Transform)component).localScale = new Vector3(0.7f, 0.7f, 0.7f);
		}
	}

	private void SetProgress(float t)
	{
		if (!((Object)(object)_progressFill == (Object)null))
		{
			_progressFill.type = (Type)3;
			_progressFill.fillAmount = Mathf.Clamp01(t);
		}
	}

	private static Mesh CreateArrowMesh(float width, float height, float thickness, float tipLength)
	{
		//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_004f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0054: Unknown result type (might be due to invalid IL or missing references)
		//IL_0067: Unknown result type (might be due to invalid IL or missing references)
		//IL_006c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_0088: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_00f6: 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_0125: 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_0263: Unknown result type (might be due to invalid IL or missing references)
		//IL_026a: Expected O, but got Unknown
		float num = Mathf.Clamp(tipLength, 0.05f, width * 0.49f);
		Vector2[] array = (Vector2[])(object)new Vector2[5]
		{
			new Vector2((0f - width) * 0.5f, (0f - height) * 0.5f),
			new Vector2(width * 0.5f - num, (0f - height) * 0.5f),
			new Vector2(width * 0.5f, 0f),
			new Vector2(width * 0.5f - num, height * 0.5f),
			new Vector2((0f - width) * 0.5f, height * 0.5f)
		};
		int num2 = array.Length;
		Vector3[] array2 = (Vector3[])(object)new Vector3[num2 * 2];
		float num3 = thickness * 0.5f;
		float num4 = (0f - thickness) * 0.5f;
		for (int i = 0; i < num2; i++)
		{
			array2[i] = new Vector3(array[i].x, array[i].y, num3);
			array2[i + num2] = new Vector3(array[i].x, array[i].y, num4);
		}
		List<int> list = new List<int>(64);
		list.AddRange(new int[9] { 0, 1, 2, 0, 2, 3, 0, 3, 4 });
		list.AddRange(new int[9]
		{
			num2,
			num2 + 2,
			num2 + 1,
			num2,
			num2 + 3,
			num2 + 2,
			num2,
			num2 + 4,
			num2 + 3
		});
		for (int j = 0; j < num2; j++)
		{
			int num5 = (j + 1) % num2;
			int item = j;
			int item2 = num5;
			int item3 = j + num2;
			int item4 = num5 + num2;
			list.Add(item);
			list.Add(item2);
			list.Add(item4);
			list.Add(item);
			list.Add(item4);
			list.Add(item3);
			list.Add(item4);
			list.Add(item2);
			list.Add(item);
			list.Add(item3);
			list.Add(item4);
			list.Add(item);
		}
		Mesh val = new Mesh();
		((Object)val).name = "ArrowSignMesh";
		val.SetVertices(array2);
		val.SetTriangles(list, 0);
		val.RecalculateNormals();
		val.RecalculateBounds();
		return val;
	}

	private GameObject CreateSign(Vector3 placePos, Quaternion rot, Vector3 surfaceNormal, bool isWall, int signId, int ownerActor, Color ownerColor)
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Expected O, but got Unknown
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Expected O, but got Unknown
		//IL_0196: Unknown result type (might be due to invalid IL or missing references)
		//IL_019b: Unknown result type (might be due to invalid IL or missing references)
		//IL_019d: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a2: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a9: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ab: Unknown result type (might be due to invalid IL or missing references)
		//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
		//IL_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_01c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_01cc: 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_01f0: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fb: Unknown result type (might be due to invalid IL or missing references)
		//IL_01fc: Unknown result type (might be due to invalid IL or missing references)
		//IL_0203: 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_0215: Unknown result type (might be due to invalid IL or missing references)
		//IL_0217: Unknown result type (might be due to invalid IL or missing references)
		//IL_0224: Unknown result type (might be due to invalid IL or missing references)
		//IL_0229: Unknown result type (might be due to invalid IL or missing references)
		//IL_0234: Unknown result type (might be due to invalid IL or missing references)
		//IL_0236: Unknown result type (might be due to invalid IL or missing references)
		//IL_023b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0104: Unknown result type (might be due to invalid IL or missing references)
		//IL_0105: Unknown result type (might be due to invalid IL or missing references)
		//IL_010f: 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_0125: 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_013a: 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_014d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0157: Unknown result type (might be due to invalid IL or missing references)
		//IL_015c: Unknown result type (might be due to invalid IL or missing references)
		//IL_016e: 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_025c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0261: Unknown result type (might be due to invalid IL or missing references)
		//IL_0263: Unknown result type (might be due to invalid IL or missing references)
		//IL_024e: Unknown result type (might be due to invalid IL or missing references)
		//IL_031b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0325: Unknown result type (might be due to invalid IL or missing references)
		//IL_0327: 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_0268: Unknown result type (might be due to invalid IL or missing references)
		//IL_027e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0283: Unknown result type (might be due to invalid IL or missing references)
		//IL_0285: Unknown result type (might be due to invalid IL or missing references)
		//IL_028a: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02b8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ba: 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_02c3: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c8: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a0: Unknown result type (might be due to invalid IL or missing references)
		//IL_02a5: 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_02ac: 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_02fd: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_02de: 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_02e5: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ea: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ee: Unknown result type (might be due to invalid IL or missing references)
		//IL_02f3: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = new GameObject("PeakSign");
		PeakSignMarker peakSignMarker = val.AddComponent<PeakSignMarker>();
		peakSignMarker.SignId = signId;
		peakSignMarker.OwnerActor = ownerActor;
		GameObject val2 = new GameObject("Panel");
		val2.transform.SetParent(val.transform, false);
		MeshFilter val3 = val2.AddComponent<MeshFilter>();
		val2.AddComponent<MeshRenderer>();
		float width = 1.2f;
		float height = 0.35f;
		float num = 0.08f;
		float tipLength = 0.35f;
		val3.mesh = CreateArrowMesh(width, height, num, tipLength);
		MeshCollider val4 = val2.AddComponent<MeshCollider>();
		val4.sharedMesh = val3.mesh;
		val4.convex = true;
		((Collider)val4).isTrigger = true;
		GameObject val5 = GameObject.CreatePrimitive((PrimitiveType)2);
		((Object)val5).name = "Pole";
		val5.transform.SetParent(val.transform, false);
		float num2 = 0.08f;
		float num3 = 0.45f;
		float num4 = num3 * 2f;
		float num5 = 0.03f;
		if (!isWall)
		{
			val2.transform.position = placePos + Vector3.up * 0.85f;
			val2.transform.rotation = rot * Quaternion.Euler(0f, -90f, 0f);
			val5.transform.position = placePos + Vector3.up * 0.45f;
			val5.transform.rotation = rot;
			val5.transform.localScale = new Vector3(num2, num3, num2);
		}
		else
		{
			Vector3 normalized = ((Vector3)(ref surfaceNormal)).normalized;
			Quaternion rotation = Quaternion.FromToRotation(Vector3.up, normalized);
			Vector3 position = placePos + normalized * (num4 * 0.5f + num5);
			val5.transform.position = position;
			val5.transform.rotation = rotation;
			val5.transform.localScale = new Vector3(num2, num3, num2);
			Vector3 val6 = placePos + normalized * (num4 + num5);
			val2.transform.position = val6 + normalized * (num * 0.5f + num5);
			Vector3 val7 = -normalized;
			Camera main = Camera.main;
			Vector3 val8 = (((Object)(object)main != (Object)null) ? Vector3.ProjectOnPlane(((Component)main).transform.forward, normalized) : Vector3.zero);
			if (((Vector3)(ref val8)).sqrMagnitude < 0.0001f)
			{
				val8 = Vector3.Cross(Vector3.up, normalized);
			}
			if (((Vector3)(ref val8)).sqrMagnitude < 0.0001f)
			{
				val8 = Vector3.Cross(Vector3.forward, normalized);
			}
			((Vector3)(ref val8)).Normalize();
			Vector3 val9 = Vector3.Cross(val7, val8);
			Vector3 normalized2 = ((Vector3)(ref val9)).normalized;
			if (((Vector3)(ref normalized2)).sqrMagnitude < 0.0001f)
			{
				val9 = Vector3.ProjectOnPlane(Vector3.up, val7);
				normalized2 = ((Vector3)(ref val9)).normalized;
			}
			val2.transform.rotation = Quaternion.LookRotation(val7, normalized2);
		}
		MakeNoHitbox(val2);
		MakeNoHitbox(val5);
		ApplyUnlit(val2, ownerColor);
		ApplyUnlit(val5, Color.Lerp(ownerColor, Color.black, 0.45f));
		return val;
	}

	private static void MakeNoHitbox(GameObject go)
	{
		Collider component = go.GetComponent<Collider>();
		if ((Object)(object)component != (Object)null)
		{
			component.isTrigger = true;
		}
		go.layer = 2;
	}

	private static void ApplyUnlit(GameObject go, Color c)
	{
		//IL_0039: Unknown result type (might be due to invalid IL or missing references)
		//IL_003f: Expected O, but got Unknown
		//IL_0051: Unknown result type (might be due to invalid IL or missing references)
		MeshRenderer component = go.GetComponent<MeshRenderer>();
		if (!((Object)(object)component == (Object)null))
		{
			Shader val = Shader.Find("Unlit/Color");
			if ((Object)(object)val == (Object)null)
			{
				val = Shader.Find("Standard");
			}
			Material val2 = new Material(val);
			if (val2.HasProperty("_Color"))
			{
				val2.color = c;
			}
			val2.renderQueue = 3000;
			((Renderer)component).material = val2;
			((Renderer)component).enabled = true;
			((Renderer)component).shadowCastingMode = (ShadowCastingMode)1;
			((Renderer)component).receiveShadows = true;
		}
	}
}
public class PeakSignMarker : MonoBehaviour
{
	public int SignId;

	public int OwnerActor;
}