Decompiled source of TheFloppyDisk v1.0.0

AudioParty.dll

Decompiled 3 weeks ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Photon.Pun;
using UnityEngine;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: IgnoresAccessChecksTo("")]
[assembly: AssemblyCompany("Omniscye")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("AudioParty")]
[assembly: AssemblyTitle("AudioParty")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
internal static class ARLog2
{
	public static void Info(string m)
	{
		Debug.Log((object)("[AudioReactive] " + m));
	}

	public static void Warn(string m)
	{
		Debug.LogWarning((object)("[AudioReactive] " + m));
	}
}
[RequireComponent(typeof(PhotonView))]
public class AudioReactiveValuableDirect : Trap, IPunObservable
{
	public enum EffectMode
	{
		RGBTint,
		EmissionPulse,
		HueShift,
		CurvedHorizon,
		WireframeHint,
		ScaleBreath
	}

	[Header("Audio (global fallback)")]
	public AudioClip musicClip;

	[Range(0f, 1f)]
	public float volume = 0.85f;

	public bool loop = true;

	[Header("Reactive Tuning")]
	[Range(0f, 30f)]
	public float gain = 9f;

	[Range(0.5f, 20f)]
	public float smoothing = 6f;

	public float rescanInterval = 5f;

	public bool includeInactiveMeshes = true;

	[Header("Targeting")]
	public bool useOldGlobalScan = true;

	[Header("Effect Toggles (in-game control)")]
	public bool enableRGBTint = true;

	public bool enableEmissionPulse = false;

	public bool enableHueShift = false;

	public bool enableCurvedHorizon = true;

	public bool enableWireframeHint = false;

	public bool enableScaleBreath = true;

	[Header("Per-Grab Effect Selection")]
	public bool randomizePerGrab = true;

	[Header("Per-Effect Music (optional)")]
	public AudioClip musicRGBTint;

	[Range(0f, 1f)]
	public float musicRGBTintVol = 0.85f;

	public AudioClip musicEmissionPulse;

	[Range(0f, 1f)]
	public float musicEmissionPulseVol = 0.85f;

	public AudioClip musicHueShift;

	[Range(0f, 1f)]
	public float musicHueShiftVol = 0.85f;

	public AudioClip musicCurvedHorizon;

	[Range(0f, 1f)]
	public float musicCurvedHorizonVol = 0.85f;

	public AudioClip musicWireframeHint;

	[Range(0f, 1f)]
	public float musicWireframeHintVol = 0.85f;

	public AudioClip musicScaleBreath;

	[Range(0f, 1f)]
	public float musicScaleBreathVol = 0.85f;

	[Header("Shader Property Hints (optional)")]
	public string propBaseColor = "_BaseColor";

	public string propColor = "_Color";

	public string propEmission = "_EmissionColor";

	public string propOutlineColor = "_OutlineColor";

	public string propOutlineWidth = "_OutlineWidth";

	public string propWireframeToggle = "_WireframeOn";

	public string propWireframeAmount = "_WireframeVal";

	[Header("ScaleBreath Settings (bass-forward)")]
	[Range(0f, 0.6f)]
	public float scaleBreathMax = 0.22f;

	[Range(0.1f, 6f)]
	public float scaleBreathGain = 2.2f;

	[Range(1f, 60f)]
	public float scaleBreathAttack = 18f;

	[Range(1f, 80f)]
	public float scaleBreathDecay = 35f;

	[Header("CurvedHorizon Shader Settings (WorldspaceInfiniteBoxes)")]
	[Tooltip("Exact name of the shader for fallback if no template is set.")]
	public string curvedShaderName = "Custom/WorldspaceInfiniteBoxes";

	[Tooltip("Template material USING your WorldspaceInfiniteBoxes shader. REQUIRED if you want textures/params to load.")]
	public Material curvedTemplate;

	[Header("CurvedHorizon Color Drive (only _CubeColor)")]
	public string curvedPropCubeColor = "_CubeColor";

	[Range(0f, 1f)]
	public float curvedColorMix = 0.9f;

	[Range(0f, 4f)]
	public float curvedEmissionBoost = 0f;

	[Header("CurvedHorizon Bass Drive")]
	public string curvedPropBassLevel = "_BassLevel";

	[Range(0.1f, 6f)]
	public float curvedBassGain = 2f;

	[Range(1f, 80f)]
	public float curvedBassAttack = 20f;

	[Range(1f, 80f)]
	public float curvedBassDecay = 30f;

	[Header("CurvedHorizon Bass Motion (sent via MPB)")]
	public string curvedPropBassJumpAmp = "_BassJumpAmp";

	public string curvedPropBassStretchY = "_BassStretchY";

	public float curvedBassJumpAmpValue = 0.9f;

	public float curvedBassStretchYValue = 0.5f;

	[Header("CurvedHorizon Property Names (legacy - unused)")]
	public string curvedPropCurvature = "_Curvature";

	public string curvedPropMaxDown = "_CurveMaxOffset";

	public string curvedPropOrigin = "_CurveOrigin";

	public string curvedPropUp = "_CurveUp";

	[Header("CurvedHorizon Drive & Limits (legacy - unused)")]
	[Range(0f, 0.01f)]
	public float curvedCurvatureBase = 0.0002f;

	[Range(0f, 0.02f)]
	public float curvedCurvatureMax = 0.0012f;

	[Range(0f, 50f)]
	public float curvedMaxDownOffset = 10f;

	[Range(1f, 80f)]
	public float curvedAttack = 20f;

	[Range(1f, 80f)]
	public float curvedDecay = 30f;

	public Transform curvedOrigin;

	public Vector3 curvedUp = Vector3.zero;

	private readonly List<Renderer> _renderers = new List<Renderer>();

	private readonly List<Material[]> _sharedMats = new List<Material[]>();

	private readonly List<Color[]> _baseColors = new List<Color[]>();

	private readonly List<MaterialPropertyBlock[]> _mpbs = new List<MaterialPropertyBlock[]>();

	private AudioSource _src;

	private bool _ready;

	private float _nextRescan;

	private bool _wasGrabbed;

	private bool _netActive;

	private double _netStartTime;

	private const int FFT_SIZE = 64;

	private readonly float[] _spectrum = new float[64];

	private Vector3 _currentRGB = Vector3.zero;

	private Transform _holderRoot;

	private object _grabberRef;

	private PhotonView _pv;

	private int _lastEffectIdx = -1;

	private EffectMode _activeEffect = EffectMode.ScaleBreath;

	private readonly HashSet<Transform> _scaledOnce = new HashSet<Transform>();

	private readonly Dictionary<Transform, Vector3> _origScale = new Dictionary<Transform, Vector3>();

	private float _scaleBreathSmoothed;

	private bool _curvedMatsApplied;

	private Shader _curveShader;

	private readonly Dictionary<Renderer, Material[]> _origMatsCurve = new Dictionary<Renderer, Material[]>();

	private readonly Dictionary<Renderer, Material[]> _curveMats = new Dictionary<Renderer, Material[]>();

	private AudioClip _activeClip;

	private float _activeVolume;

	private int _PID_Curvature;

	private int _PID_CurveMax;

	private int _PID_Origin;

	private int _PID_Up;

	private float _curvedBassEnv = 0f;

	private void CacheCurvePropIDs()
	{
		_PID_Curvature = Shader.PropertyToID(curvedPropCurvature);
		_PID_CurveMax = Shader.PropertyToID(curvedPropMaxDown);
		_PID_Origin = Shader.PropertyToID(curvedPropOrigin);
		_PID_Up = Shader.PropertyToID(curvedPropUp);
	}

	private void Awake()
	{
		_pv = ((Component)this).GetComponent<PhotonView>();
		CacheCurvePropIDs();
	}

	private void OnValidate()
	{
		CacheCurvePropIDs();
	}

	private void OnDisable()
	{
		StopAudio();
		ClearAllPropertyBlocks();
		RestoreAnyScaledTransforms();
		CurvedRestoreMaterials();
		ClearTrackingLists();
		_holderRoot = null;
		_grabberRef = null;
		_netActive = false;
		_ready = false;
		_scaleBreathSmoothed = 0f;
		_curvedBassEnv = 0f;
	}

	public override void Update()
	{
		//IL_02bf: Unknown result type (might be due to invalid IL or missing references)
		//IL_02c4: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
		//IL_02d7: 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)
		((Trap)this).Update();
		bool flag = PhotonNetwork.OfflineMode || PhotonNetwork.IsMasterClient;
		bool flag2 = (Object)(object)base.physGrabObject != (Object)null && base.physGrabObject.grabbed;
		if (flag)
		{
			if (flag2 && !_wasGrabbed)
			{
				int num = PickEffectIndex();
				double time = PhotonNetwork.Time;
				_pv.RPC("AR_PlayRPC", (RpcTarget)0, new object[2] { time, num });
			}
			else if (!flag2 && _wasGrabbed)
			{
				_pv.RPC("AR_StopRPC", (RpcTarget)0, Array.Empty<object>());
			}
		}
		_wasGrabbed = flag2;
		if (!_netActive)
		{
			return;
		}
		EnsureAudioReadyDirectSynced();
		if (Time.time >= _nextRescan)
		{
			_nextRescan = Time.time + Mathf.Max(0.25f, rescanInterval);
			ClearAllPropertyBlocks();
			RestoreAnyScaledTransforms();
			ClearTrackingLists();
			if (useOldGlobalScan)
			{
				CollectRenderers_Global();
			}
			else
			{
				CollectRenderersUnder(_holderRoot);
			}
			if (_activeEffect == EffectMode.CurvedHorizon && enableCurvedHorizon)
			{
				CurvedEnsureMaterials();
			}
			ARLog2.Info("Rescan -> renderers: " + _renderers.Count);
		}
		if (!useOldGlobalScan)
		{
			GetHolder(out Transform holderRoot, out object grabberRef);
			if ((Object)(object)holderRoot != (Object)null && ((Object)(object)holderRoot != (Object)(object)_holderRoot || grabberRef != _grabberRef))
			{
				_holderRoot = holderRoot;
				_grabberRef = grabberRef;
				ClearAllPropertyBlocks();
				RestoreAnyScaledTransforms();
				ClearTrackingLists();
				CollectRenderersUnder(_holderRoot);
				if (_activeEffect == EffectMode.CurvedHorizon && enableCurvedHorizon)
				{
					CurvedEnsureMaterials();
				}
			}
		}
		if (_ready)
		{
			_src.GetSpectrumData(_spectrum, 0, (FFTWindow)3);
			float num2 = SumRange(_spectrum, 0, 8);
			float num3 = SumRange(_spectrum, 8, 16);
			float num4 = SumRange(_spectrum, 24, 40);
			num2 = Mathf.Clamp01(num2 * gain);
			num3 = Mathf.Clamp01(num3 * gain);
			num4 = Mathf.Clamp01(num4 * gain);
			Vector3 val = default(Vector3);
			((Vector3)(ref val))..ctor(num2, num3, num4);
			_currentRGB = Vector3.Lerp(_currentRGB, val, Time.deltaTime * smoothing);
			ApplyEffectViaMPB(_currentRGB, _activeEffect);
		}
	}

	[PunRPC]
	private void AR_PlayRPC(double startTime, int effectIdx)
	{
		_netActive = true;
		_netStartTime = startTime;
		_nextRescan = Time.time;
		List<EffectMode> enabledEffectsList = GetEnabledEffectsList();
		_activeEffect = ((enabledEffectsList.Count == 0) ? EffectMode.ScaleBreath : enabledEffectsList[Mathf.Clamp(effectIdx, 0, enabledEffectsList.Count - 1)]);
		ChooseActiveClip(_activeEffect);
		_scaleBreathSmoothed = 0f;
		_curvedBassEnv = 0f;
		EnsureAudioReadyDirectSynced();
		ClearAllPropertyBlocks();
		RestoreAnyScaledTransforms();
		CurvedRestoreMaterials();
		ClearTrackingLists();
		if (useOldGlobalScan)
		{
			CollectRenderers_Global();
		}
		else
		{
			CollectRenderersUnder(_holderRoot);
		}
		if (_activeEffect == EffectMode.CurvedHorizon && enableCurvedHorizon)
		{
			CurvedEnsureMaterials();
		}
	}

	[PunRPC]
	private void AR_StopRPC()
	{
		_netActive = false;
		StopAudio();
		ClearAllPropertyBlocks();
		RestoreAnyScaledTransforms();
		CurvedRestoreMaterials();
		ClearTrackingLists();
		_holderRoot = null;
		_grabberRef = null;
		_ready = false;
		_scaleBreathSmoothed = 0f;
		_curvedBassEnv = 0f;
	}

	public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
	{
	}

	private void EnsureAudioReadyDirectSynced()
	{
		//IL_0017: Unknown result type (might be due to invalid IL or missing references)
		//IL_001d: Expected O, but got Unknown
		if ((Object)(object)_src == (Object)null)
		{
			GameObject val = new GameObject("__AudioReactiveAudio");
			val.transform.SetParent(((Component)this).transform, false);
			_src = val.AddComponent<AudioSource>();
			_src.playOnAwake = false;
			_src.spatialBlend = 0f;
		}
		_src.loop = loop;
		_src.volume = (((Object)(object)_activeClip != (Object)null) ? _activeVolume : volume);
		_src.clip = (((Object)(object)_activeClip != (Object)null) ? _activeClip : musicClip);
		if ((Object)(object)_src.clip == (Object)null)
		{
			if (_netActive)
			{
				ARLog2.Warn("No AudioClip assigned (global or per-effect). Assign in inspector.");
			}
			return;
		}
		if (!_src.isPlaying)
		{
			double num = (PhotonNetwork.OfflineMode ? (Time.timeAsDouble - _netStartTime) : (PhotonNetwork.Time - _netStartTime));
			if (num < 0.0)
			{
				num = 0.0;
			}
			float num2 = ((_src.clip.length > 0f) ? _src.clip.length : 0.0001f);
			float time = (float)(num % (double)num2);
			_src.time = time;
			_src.Play();
		}
		_ready = (Object)(object)_src.clip != (Object)null && _src.isPlaying;
	}

	private void StopAudio()
	{
		if ((Object)(object)_src != (Object)null)
		{
			try
			{
				if (_src.isPlaying)
				{
					_src.Stop();
				}
			}
			catch
			{
			}
			try
			{
				_src.clip = null;
			}
			catch
			{
			}
			Object.Destroy((Object)(object)((Component)_src).gameObject);
			_src = null;
		}
		_activeClip = null;
	}

	private void GetHolder(out Transform holderRoot, out object grabberRef)
	{
		holderRoot = null;
		grabberRef = null;
		if ((Object)(object)base.physGrabObject == (Object)null || base.physGrabObject.playerGrabbing == null || base.physGrabObject.playerGrabbing.Count == 0)
		{
			return;
		}
		object obj = (grabberRef = base.physGrabObject.playerGrabbing[0]);
		Component val = null;
		Type type = obj.GetType();
		FieldInfo field = type.GetField("playerAvatar", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
		if (field != null)
		{
			object value = field.GetValue(obj);
			val = (Component)((value is Component) ? value : null);
		}
		if ((Object)(object)val == (Object)null)
		{
			PropertyInfo property = type.GetProperty("playerAvatar", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
			if (property != null)
			{
				object value2 = property.GetValue(obj, null);
				val = (Component)((value2 is Component) ? value2 : null);
			}
		}
		if ((Object)(object)val != (Object)null)
		{
			holderRoot = val.transform;
		}
		else
		{
			Component val2 = (Component)((obj is Component) ? obj : null);
			if ((Object)(object)val2 != (Object)null)
			{
				holderRoot = val2.transform;
			}
		}
		_grabberRef = grabberRef;
	}

	private void CollectRenderers_Global()
	{
		//IL_0203: 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_0138: 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_0173: Unknown result type (might be due to invalid IL or missing references)
		//IL_015e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0163: Unknown result type (might be due to invalid IL or missing references)
		//IL_019c: Unknown result type (might be due to invalid IL or missing references)
		//IL_01a2: Expected O, but got Unknown
		int num = 0;
		Renderer[] array = Resources.FindObjectsOfTypeAll<Renderer>().Where(delegate(Renderer r)
		{
			//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)
			int result;
			if ((Object)(object)r != (Object)null && (Object)(object)((Component)r).gameObject != (Object)null)
			{
				Scene scene = ((Component)r).gameObject.scene;
				result = (((Scene)(ref scene)).IsValid() ? 1 : 0);
			}
			else
			{
				result = 0;
			}
			return (byte)result != 0;
		}).ToArray();
		Renderer[] array2 = array;
		foreach (Renderer val in array2)
		{
			if ((Object)(object)val == (Object)null || !val.enabled || !((Component)val).gameObject.activeInHierarchy)
			{
				continue;
			}
			try
			{
				Material[] sharedMaterials = val.sharedMaterials;
				if (sharedMaterials == null || sharedMaterials.Length == 0)
				{
					continue;
				}
				_renderers.Add(val);
				_sharedMats.Add(sharedMaterials);
				Color[] array3 = (Color[])(object)new Color[sharedMaterials.Length];
				MaterialPropertyBlock[] array4 = (MaterialPropertyBlock[])(object)new MaterialPropertyBlock[sharedMaterials.Length];
				for (int j = 0; j < sharedMaterials.Length; j++)
				{
					Material val2 = sharedMaterials[j];
					if (!((Object)(object)val2 == (Object)null))
					{
						string text = (val2.HasProperty(propColor) ? propColor : (val2.HasProperty(propBaseColor) ? propBaseColor : null));
						if (!string.IsNullOrEmpty(text))
						{
							array3[j] = val2.GetColor(text);
						}
						else if (val2.HasProperty(propEmission))
						{
							array3[j] = val2.GetColor(propEmission);
						}
						else
						{
							array3[j] = Color.white;
						}
						if (val2.HasProperty(propEmission))
						{
							val2.EnableKeyword("_EMISSION");
						}
						array4[j] = new MaterialPropertyBlock();
					}
				}
				_baseColors.Add(array3);
				_mpbs.Add(array4);
				num++;
				Transform transform = ((Component)val).transform;
				if (!_origScale.ContainsKey(transform))
				{
					_origScale[transform] = transform.localScale;
				}
			}
			catch (Exception ex)
			{
				ARLog2.Warn("Skipped renderer " + ((Object)val).name + ": " + ex.Message);
			}
		}
		ARLog2.Info("Tracked renderers (GLOBAL): " + num);
	}

	private void CollectRenderersUnder(Transform root)
	{
		//IL_01f4: 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_015f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0164: Unknown result type (might be due to invalid IL or missing references)
		//IL_014f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0154: Unknown result type (might be due to invalid IL or missing references)
		//IL_018d: Unknown result type (might be due to invalid IL or missing references)
		//IL_0193: Expected O, but got Unknown
		if ((Object)(object)root == (Object)null)
		{
			return;
		}
		int num = 0;
		Renderer[] componentsInChildren = ((Component)root).GetComponentsInChildren<Renderer>(includeInactiveMeshes);
		Renderer[] array = componentsInChildren;
		foreach (Renderer val in array)
		{
			if (!includeInactiveMeshes && (!val.enabled || !((Component)val).gameObject.activeInHierarchy))
			{
				continue;
			}
			try
			{
				Material[] sharedMaterials = val.sharedMaterials;
				if (sharedMaterials == null || sharedMaterials.Length == 0)
				{
					continue;
				}
				_renderers.Add(val);
				_sharedMats.Add(sharedMaterials);
				Color[] array2 = (Color[])(object)new Color[sharedMaterials.Length];
				MaterialPropertyBlock[] array3 = (MaterialPropertyBlock[])(object)new MaterialPropertyBlock[sharedMaterials.Length];
				for (int j = 0; j < sharedMaterials.Length; j++)
				{
					Material val2 = sharedMaterials[j];
					if (!((Object)(object)val2 == (Object)null))
					{
						string text = (val2.HasProperty(propColor) ? propColor : (val2.HasProperty(propBaseColor) ? propBaseColor : null));
						if (!string.IsNullOrEmpty(text))
						{
							array2[j] = val2.GetColor(text);
						}
						else if (val2.HasProperty(propEmission))
						{
							array2[j] = val2.GetColor(propEmission);
						}
						else
						{
							array2[j] = Color.white;
						}
						if (val2.HasProperty(propEmission))
						{
							val2.EnableKeyword("_EMISSION");
						}
						array3[j] = new MaterialPropertyBlock();
					}
				}
				_baseColors.Add(array2);
				_mpbs.Add(array3);
				num++;
				Transform transform = ((Component)val).transform;
				if (!_origScale.ContainsKey(transform))
				{
					_origScale[transform] = transform.localScale;
				}
			}
			catch (Exception ex)
			{
				ARLog2.Warn("Skipped renderer " + ((Object)val).name + ": " + ex.Message);
			}
		}
		ARLog2.Info("Tracked holder renderers: " + num);
	}

	private List<EffectMode> GetEnabledEffectsList()
	{
		List<EffectMode> list = new List<EffectMode>(6);
		if (enableRGBTint)
		{
			list.Add(EffectMode.RGBTint);
		}
		if (enableEmissionPulse)
		{
			list.Add(EffectMode.EmissionPulse);
		}
		if (enableHueShift)
		{
			list.Add(EffectMode.HueShift);
		}
		if (enableCurvedHorizon)
		{
			list.Add(EffectMode.CurvedHorizon);
		}
		if (enableWireframeHint)
		{
			list.Add(EffectMode.WireframeHint);
		}
		if (enableScaleBreath)
		{
			list.Add(EffectMode.ScaleBreath);
		}
		return list;
	}

	private int PickEffectIndex()
	{
		List<EffectMode> enabledEffectsList = GetEnabledEffectsList();
		if (enabledEffectsList.Count == 0)
		{
			return 0;
		}
		int num2;
		if (randomizePerGrab)
		{
			int num = 0;
			do
			{
				num2 = Random.Range(0, enabledEffectsList.Count);
			}
			while (enabledEffectsList.Count > 1 && num2 == _lastEffectIdx && ++num < 8);
		}
		else
		{
			num2 = (_lastEffectIdx + 1 + enabledEffectsList.Count) % enabledEffectsList.Count;
		}
		_lastEffectIdx = num2;
		return num2;
	}

	private void ChooseActiveClip(EffectMode mode)
	{
		_activeClip = null;
		_activeVolume = volume;
		switch (mode)
		{
		case EffectMode.RGBTint:
			_activeClip = musicRGBTint;
			_activeVolume = musicRGBTintVol;
			break;
		case EffectMode.EmissionPulse:
			_activeClip = musicEmissionPulse;
			_activeVolume = musicEmissionPulseVol;
			break;
		case EffectMode.HueShift:
			_activeClip = musicHueShift;
			_activeVolume = musicHueShiftVol;
			break;
		case EffectMode.CurvedHorizon:
			_activeClip = musicCurvedHorizon;
			_activeVolume = musicCurvedHorizonVol;
			break;
		case EffectMode.WireframeHint:
			_activeClip = musicWireframeHint;
			_activeVolume = musicWireframeHintVol;
			break;
		case EffectMode.ScaleBreath:
			_activeClip = musicScaleBreath;
			_activeVolume = musicScaleBreathVol;
			break;
		}
	}

	private static float SumRange(float[] data, int start, int count)
	{
		float num = 0f;
		int num2 = start + count;
		if (num2 > data.Length)
		{
			num2 = data.Length;
		}
		for (int i = start; i < num2; i++)
		{
			num += data[i];
		}
		return num;
	}

	private void ApplyColorsViaMPB(Vector3 rgb)
	{
		//IL_0003: Unknown result type (might be due to invalid IL or missing references)
		//IL_000e: Unknown result type (might be due to invalid IL or missing references)
		//IL_0019: 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_00b3: 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_00d5: 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_0106: Unknown result type (might be due to invalid IL or missing references)
		//IL_010b: Unknown result type (might be due to invalid IL or missing references)
		//IL_00f8: 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_0138: 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)
		Color val = default(Color);
		((Color)(ref val))..ctor(Mathf.Sqrt(rgb.x), Mathf.Sqrt(rgb.y), Mathf.Sqrt(rgb.z), 1f);
		for (int i = 0; i < _renderers.Count; i++)
		{
			Renderer val2 = _renderers[i];
			Material[] array = _sharedMats[i];
			Color[] array2 = _baseColors[i];
			MaterialPropertyBlock[] array3 = _mpbs[i];
			int num = array.Length;
			for (int j = 0; j < num; j++)
			{
				Material val3 = array[j];
				MaterialPropertyBlock val4 = array3[j];
				if (!((Object)(object)val3 == (Object)null) && val4 != null)
				{
					Color val5 = Color.Lerp(array2[j], val, 0.85f);
					if (val3.HasProperty(propColor))
					{
						val4.SetColor(propColor, val5);
					}
					if (val3.HasProperty(propBaseColor))
					{
						val4.SetColor(propBaseColor, val5);
					}
					Color val6 = val * 2f;
					if (val3.HasProperty(propEmission))
					{
						val4.SetColor(propEmission, val6);
						val4.SetColor("_EmissiveColor", val6);
						val4.SetColor("_EmissiveColorLDR", val6);
					}
					val2.SetPropertyBlock(val4, j);
				}
			}
		}
	}

	private void ApplyEffectViaMPB(Vector3 bands, EffectMode mode)
	{
		//IL_0026: 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_003a: 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_004e: 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)
		switch (mode)
		{
		default:
			ApplyColorsViaMPB(bands);
			break;
		case EffectMode.EmissionPulse:
			ApplyEmissionPulse(bands);
			break;
		case EffectMode.HueShift:
			ApplyHueShift(bands);
			break;
		case EffectMode.CurvedHorizon:
			ApplyCurvedHorizon(bands);
			break;
		case EffectMode.WireframeHint:
			ApplyWireframe(bands);
			break;
		case EffectMode.ScaleBreath:
			ApplyScaleBreath(bands);
			break;
		}
	}

	private static float Luma(Vector3 b)
	{
		//IL_0000: 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_000d: Unknown result type (might be due to invalid IL or missing references)
		return Mathf.Clamp01((b.x + b.y + b.z) / 3f);
	}

	private void ApplyEmissionPulse(Vector3 b)
	{
		//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_00d5: 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_00f1: Unknown result type (might be due to invalid IL or missing references)
		if (!enableEmissionPulse)
		{
			return;
		}
		float num = Mathf.Sqrt(Mathf.Clamp01(b.y * 0.6f + b.z * 0.8f + b.x * 0.3f)) * 3f;
		Color val = default(Color);
		((Color)(ref val))..ctor(num, num, num, 1f);
		for (int i = 0; i < _renderers.Count; i++)
		{
			Renderer val2 = _renderers[i];
			Material[] array = _sharedMats[i];
			MaterialPropertyBlock[] array2 = _mpbs[i];
			for (int j = 0; j < array.Length; j++)
			{
				Material val3 = array[j];
				MaterialPropertyBlock val4 = array2[j];
				if (!((Object)(object)val3 == (Object)null) && val4 != null && val3.HasProperty(propEmission))
				{
					val4.SetColor(propEmission, val);
					val4.SetColor("_EmissiveColor", val);
					val4.SetColor("_EmissiveColorLDR", val);
					val2.SetPropertyBlock(val4, j);
				}
			}
		}
	}

	private void ApplyHueShift(Vector3 b)
	{
		//IL_001e: 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_0057: Unknown result type (might be due to invalid IL or missing references)
		//IL_005d: Unknown result type (might be due to invalid IL or missing references)
		//IL_006a: 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_0106: 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_014b: 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)
		//IL_0194: Unknown result type (might be due to invalid IL or missing references)
		if (!enableHueShift)
		{
			return;
		}
		float num = (Time.time * 0.1f + b.z * 0.5f) % 1f;
		float num2 = Mathf.Lerp(0.9f, 1.4f, Mathf.Clamp01(b.y));
		float num3 = Mathf.Lerp(0.9f, 1.3f, Mathf.Clamp01(b.x + b.y * 0.5f + b.z * 0.3f));
		float num4 = default(float);
		float num5 = default(float);
		float num6 = default(float);
		for (int i = 0; i < _renderers.Count; i++)
		{
			Renderer val = _renderers[i];
			Material[] array = _sharedMats[i];
			Color[] array2 = _baseColors[i];
			MaterialPropertyBlock[] array3 = _mpbs[i];
			for (int j = 0; j < array.Length; j++)
			{
				Material val2 = array[j];
				MaterialPropertyBlock val3 = array3[j];
				if (!((Object)(object)val2 == (Object)null) && val3 != null)
				{
					Color val4 = array2[j];
					Color.RGBToHSV(val4, ref num4, ref num5, ref num6);
					num4 = (num4 + num) % 1f;
					num5 *= num2;
					num6 *= num3;
					Color val5 = Color.HSVToRGB(Mathf.Repeat(num4, 1f), Mathf.Clamp01(num5), Mathf.Clamp01(num6));
					bool flag = false;
					if (val2.HasProperty(propColor))
					{
						val3.SetColor(propColor, val5);
						flag = true;
					}
					if (val2.HasProperty(propBaseColor))
					{
						val3.SetColor(propBaseColor, val5);
						flag = true;
					}
					if (flag)
					{
						val.SetPropertyBlock(val3, j);
					}
				}
			}
		}
	}

	private void ApplyCurvedHorizon(Vector3 b)
	{
		//IL_001c: 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_003c: 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_0124: Unknown result type (might be due to invalid IL or missing references)
		//IL_012a: Expected O, but got Unknown
		//IL_0205: Unknown result type (might be due to invalid IL or missing references)
		//IL_020a: Unknown result type (might be due to invalid IL or missing references)
		//IL_020c: Unknown result type (might be due to invalid IL or missing references)
		//IL_020e: 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_0229: 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_0314: Unknown result type (might be due to invalid IL or missing references)
		//IL_0319: Unknown result type (might be due to invalid IL or missing references)
		//IL_0323: Unknown result type (might be due to invalid IL or missing references)
		//IL_0332: Unknown result type (might be due to invalid IL or missing references)
		//IL_0341: Unknown result type (might be due to invalid IL or missing references)
		if (!enableCurvedHorizon)
		{
			return;
		}
		CurvedEnsureMaterials();
		Color val = default(Color);
		((Color)(ref val))..ctor(Mathf.Sqrt(Mathf.Clamp01(b.x)), Mathf.Sqrt(Mathf.Clamp01(b.y)), Mathf.Sqrt(Mathf.Clamp01(b.z)), 1f);
		float num = Mathf.Clamp01(b.x * curvedBassGain);
		float num2 = ((num >= _curvedBassEnv) ? curvedBassAttack : curvedBassDecay);
		_curvedBassEnv = Mathf.Lerp(_curvedBassEnv, num, Time.deltaTime * num2);
		for (int i = 0; i < _renderers.Count; i++)
		{
			Renderer val2 = _renderers[i];
			if ((Object)(object)val2 == (Object)null)
			{
				continue;
			}
			Material[] sharedMaterials = val2.sharedMaterials;
			if (sharedMaterials == null || sharedMaterials.Length == 0)
			{
				continue;
			}
			MaterialPropertyBlock[] array = _mpbs[i];
			if (array == null || array.Length != sharedMaterials.Length)
			{
				array = (MaterialPropertyBlock[])(object)new MaterialPropertyBlock[sharedMaterials.Length];
				for (int j = 0; j < sharedMaterials.Length; j++)
				{
					array[j] = new MaterialPropertyBlock();
				}
				_mpbs[i] = array;
			}
			for (int k = 0; k < sharedMaterials.Length; k++)
			{
				Material val3 = sharedMaterials[k];
				MaterialPropertyBlock val4 = array[k];
				if ((Object)(object)val3 == (Object)null || val4 == null)
				{
					continue;
				}
				Shader shader = val3.shader;
				if (!((Object)(object)shader == (Object)null) && (((Object)(object)curvedTemplate != (Object)null) ? ((Object)(object)shader == (Object)(object)curvedTemplate.shader) : string.Equals(((Object)shader).name, curvedShaderName, StringComparison.Ordinal)))
				{
					bool flag = false;
					if (val3.HasProperty(curvedPropCubeColor))
					{
						Color color = val3.GetColor(curvedPropCubeColor);
						Color val5 = Color.Lerp(color, val, Mathf.Clamp01(curvedColorMix));
						val4.SetColor(curvedPropCubeColor, val5);
						flag = true;
					}
					if (!string.IsNullOrEmpty(curvedPropBassLevel) && val3.HasProperty(curvedPropBassLevel))
					{
						val4.SetFloat(curvedPropBassLevel, _curvedBassEnv);
						flag = true;
					}
					if (!string.IsNullOrEmpty(curvedPropBassJumpAmp) && val3.HasProperty(curvedPropBassJumpAmp))
					{
						val4.SetFloat(curvedPropBassJumpAmp, curvedBassJumpAmpValue);
						flag = true;
					}
					if (!string.IsNullOrEmpty(curvedPropBassStretchY) && val3.HasProperty(curvedPropBassStretchY))
					{
						val4.SetFloat(curvedPropBassStretchY, curvedBassStretchYValue);
						flag = true;
					}
					if (curvedEmissionBoost > 0f && val3.HasProperty(propEmission))
					{
						Color val6 = val * curvedEmissionBoost;
						val4.SetColor(propEmission, val6);
						val4.SetColor("_EmissiveColor", val6);
						val4.SetColor("_EmissiveColorLDR", val6);
						flag = true;
					}
					if (flag)
					{
						val2.SetPropertyBlock(val4, k);
					}
				}
			}
		}
	}

	private void CurvedEnsureMaterials()
	{
		//IL_011d: 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_0124: Expected O, but got Unknown
		//IL_02a6: Unknown result type (might be due to invalid IL or missing references)
		//IL_02ac: Expected O, but got Unknown
		if (_curvedMatsApplied)
		{
			return;
		}
		if ((Object)(object)curvedTemplate != (Object)null)
		{
			_curveShader = curvedTemplate.shader;
		}
		else
		{
			_curveShader = Shader.Find(curvedShaderName);
		}
		if ((Object)(object)_curveShader == (Object)null)
		{
			ARLog2.Warn("CurvedHorizon: shader not found. Assign 'curvedTemplate' or set 'curvedShaderName'.");
			return;
		}
		_origMatsCurve.Clear();
		_curveMats.Clear();
		for (int i = 0; i < _renderers.Count; i++)
		{
			Renderer val = _renderers[i];
			if ((Object)(object)val == (Object)null)
			{
				continue;
			}
			Material[] sharedMaterials = val.sharedMaterials;
			if (sharedMaterials == null || sharedMaterials.Length == 0)
			{
				continue;
			}
			Material[] array = (Material[])(object)new Material[sharedMaterials.Length];
			for (int j = 0; j < sharedMaterials.Length; j++)
			{
				Material val2 = sharedMaterials[j];
				if ((Object)(object)val2 == (Object)null)
				{
					array[j] = null;
					continue;
				}
				Material val3 = (((Object)(object)curvedTemplate != (Object)null) ? new Material(curvedTemplate) : new Material(_curveShader));
				CopyIfHasTexture(val2, val3, "_MainTex");
				CopyIfHasTexture(val2, val3, "_BaseMap");
				CopyIfHasColor(val2, val3, propColor);
				CopyIfHasColor(val2, val3, propBaseColor);
				CopyIfHasColor(val2, val3, "_CubeColor");
				CopyIfHasColor(val2, val3, "_BgColor");
				CopyIfHasFloat(val2, val3, "_Metallic");
				CopyIfHasFloat(val2, val3, "_Smoothness");
				CopyIfHasFloat(val2, val3, "_Glossiness");
				CopyIfHasFloat(val2, val3, "_BassJumpAmp");
				CopyIfHasFloat(val2, val3, "_BassStretchY");
				CopyIfHasFloat(val2, val3, "_BassLevel");
				val3.renderQueue = val2.renderQueue;
				array[j] = val3;
			}
			_origMatsCurve[val] = sharedMaterials;
			_curveMats[val] = array;
			val.sharedMaterials = array;
			MaterialPropertyBlock[] array2 = ((i < _mpbs.Count) ? _mpbs[i] : null);
			if (array2 == null || array2.Length != array.Length)
			{
				while (_mpbs.Count <= i)
				{
					_mpbs.Add(null);
				}
				array2 = (MaterialPropertyBlock[])(object)new MaterialPropertyBlock[array.Length];
				for (int k = 0; k < array.Length; k++)
				{
					array2[k] = new MaterialPropertyBlock();
				}
				_mpbs[i] = array2;
			}
		}
		_curvedMatsApplied = true;
	}

	private static void CopyIfHasTexture(Material from, Material to, string prop)
	{
		//IL_0046: 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)
		if (from.HasProperty(prop) && to.HasProperty(prop))
		{
			to.SetTexture(prop, from.GetTexture(prop));
			try
			{
				to.SetTextureScale(prop, from.GetTextureScale(prop));
			}
			catch
			{
			}
			try
			{
				to.SetTextureOffset(prop, from.GetTextureOffset(prop));
			}
			catch
			{
			}
		}
	}

	private static void CopyIfHasColor(Material from, Material to, string prop)
	{
		//IL_0024: Unknown result type (might be due to invalid IL or missing references)
		if (!string.IsNullOrEmpty(prop) && from.HasProperty(prop) && to.HasProperty(prop))
		{
			to.SetColor(prop, from.GetColor(prop));
		}
	}

	private static void CopyIfHasFloat(Material from, Material to, string prop)
	{
		if (from.HasProperty(prop) && to.HasProperty(prop))
		{
			to.SetFloat(prop, from.GetFloat(prop));
		}
	}

	private void CurvedRestoreMaterials()
	{
		if (!_curvedMatsApplied)
		{
			return;
		}
		foreach (KeyValuePair<Renderer, Material[]> item in _origMatsCurve)
		{
			Renderer key = item.Key;
			if (!((Object)(object)key == (Object)null))
			{
				try
				{
					key.sharedMaterials = item.Value;
				}
				catch
				{
				}
			}
		}
		_origMatsCurve.Clear();
		foreach (KeyValuePair<Renderer, Material[]> curveMat in _curveMats)
		{
			Material[] value = curveMat.Value;
			if (value == null)
			{
				continue;
			}
			for (int i = 0; i < value.Length; i++)
			{
				if ((Object)(object)value[i] != (Object)null)
				{
					try
					{
						Object.Destroy((Object)(object)value[i]);
					}
					catch
					{
					}
				}
			}
		}
		_curveMats.Clear();
		_curvedMatsApplied = false;
	}

	private Transform ResolveCurvedAnchor()
	{
		if ((Object)(object)curvedOrigin != (Object)null)
		{
			return curvedOrigin;
		}
		if ((Object)(object)_holderRoot == (Object)null)
		{
			GetHolder(out Transform holderRoot, out object grabberRef);
			if ((Object)(object)holderRoot != (Object)null)
			{
				_holderRoot = holderRoot;
			}
			if (grabberRef != null)
			{
				_grabberRef = grabberRef;
			}
		}
		if ((Object)(object)_holderRoot != (Object)null)
		{
			Camera[] componentsInChildren = ((Component)_holderRoot).GetComponentsInChildren<Camera>(true);
			Camera val = ((IEnumerable<Camera>)componentsInChildren).FirstOrDefault((Func<Camera, bool>)((Camera c) => Object.op_Implicit((Object)(object)c) && ((Behaviour)c).enabled && ((Behaviour)c).isActiveAndEnabled)) ?? componentsInChildren.FirstOrDefault();
			if ((Object)(object)val != (Object)null)
			{
				return ((Component)val).transform;
			}
		}
		object grabberRef2 = _grabberRef;
		if (grabberRef2 != null)
		{
			Type type = grabberRef2.GetType();
			string[] array = new string[4] { "localCamera", "playerCamera", "headCam", "camera" };
			Camera val4 = default(Camera);
			Camera val7 = default(Camera);
			foreach (string name in array)
			{
				FieldInfo field = type.GetField(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
				if (field != null)
				{
					object value = field.GetValue(grabberRef2);
					Camera val2 = (Camera)((value is Camera) ? value : null);
					if (val2 != null)
					{
						return ((Component)val2).transform;
					}
					Component val3 = (Component)((value is Component) ? value : null);
					if (val3 != null && val3.TryGetComponent<Camera>(ref val4))
					{
						return ((Component)val4).transform;
					}
				}
				PropertyInfo property = type.GetProperty(name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
				if (property != null)
				{
					object value2 = property.GetValue(grabberRef2, null);
					Camera val5 = (Camera)((value2 is Camera) ? value2 : null);
					if (val5 != null)
					{
						return ((Component)val5).transform;
					}
					Component val6 = (Component)((value2 is Component) ? value2 : null);
					if (val6 != null && val6.TryGetComponent<Camera>(ref val7))
					{
						return ((Component)val7).transform;
					}
				}
			}
		}
		if ((Object)(object)_holderRoot != (Object)null)
		{
			return _holderRoot;
		}
		if ((Object)(object)Camera.main != (Object)null)
		{
			return ((Component)Camera.main).transform;
		}
		Camera val8 = ((IEnumerable<Camera>)Object.FindObjectsOfType<Camera>(true)).FirstOrDefault((Func<Camera, bool>)((Camera c) => Object.op_Implicit((Object)(object)c) && ((Behaviour)c).enabled && ((Behaviour)c).isActiveAndEnabled));
		if (Object.op_Implicit((Object)(object)val8))
		{
			return ((Component)val8).transform;
		}
		return ((Component)this).transform;
	}

	private void ApplyWireframe(Vector3 b)
	{
		//IL_0013: Unknown result type (might be due to invalid IL or missing references)
		if (!enableWireframeHint)
		{
			return;
		}
		float num = Mathf.Clamp01(Luma(b) * 1.5f);
		for (int i = 0; i < _renderers.Count; i++)
		{
			Renderer val = _renderers[i];
			Material[] array = _sharedMats[i];
			MaterialPropertyBlock[] array2 = _mpbs[i];
			for (int j = 0; j < array.Length; j++)
			{
				Material val2 = array[j];
				MaterialPropertyBlock val3 = array2[j];
				if (!((Object)(object)val2 == (Object)null) && val3 != null)
				{
					bool flag = false;
					if (val2.HasProperty(propWireframeToggle))
					{
						val3.SetFloat(propWireframeToggle, 1f);
						flag = true;
					}
					if (val2.HasProperty(propWireframeAmount))
					{
						val3.SetFloat(propWireframeAmount, num);
						flag = true;
					}
					if (flag)
					{
						val.SetPropertyBlock(val3, j);
					}
				}
			}
		}
	}

	private void ApplyScaleBreath(Vector3 b)
	{
		//IL_0015: Unknown result type (might be due to invalid IL or missing references)
		//IL_0021: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: 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_00e0: Unknown result type (might be due to invalid IL or missing references)
		//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
		//IL_0106: Unknown result type (might be due to invalid IL or missing references)
		//IL_010e: 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_011d: 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_012c: Unknown result type (might be due to invalid IL or missing references)
		if (!enableScaleBreath)
		{
			return;
		}
		float num = b.x * 1.4f + b.y * 0.5f + b.z * 0.2f;
		float num2 = Mathf.Clamp01(num * scaleBreathGain);
		float num3 = ((num2 >= _scaleBreathSmoothed) ? scaleBreathAttack : scaleBreathDecay);
		_scaleBreathSmoothed = Mathf.Lerp(_scaleBreathSmoothed, num2, Time.deltaTime * num3);
		float num4 = 1f + _scaleBreathSmoothed * scaleBreathMax;
		Vector3 val = default(Vector3);
		((Vector3)(ref val))..ctor(num4, num4, num4);
		for (int i = 0; i < _renderers.Count; i++)
		{
			Transform transform = ((Component)_renderers[i]).transform;
			if (!_origScale.TryGetValue(transform, out var value))
			{
				value = transform.localScale;
				_origScale[transform] = value;
			}
			if (_scaledOnce.Add(transform))
			{
				transform.localScale = new Vector3(value.x * val.x, value.y * val.y, value.z * val.z);
			}
		}
		_scaledOnce.Clear();
	}

	private void SetupCameraIfNeeded()
	{
	}

	private void RestoreCameraIfNeeded()
	{
	}

	private Camera GetTargetCamera()
	{
		return Camera.main;
	}

	private void RestoreAnyScaledTransforms()
	{
		//IL_002e: Unknown result type (might be due to invalid IL or missing references)
		foreach (KeyValuePair<Transform, Vector3> item in _origScale)
		{
			Transform key = item.Key;
			if (Object.op_Implicit((Object)(object)key))
			{
				key.localScale = item.Value;
			}
		}
	}

	private void ClearAllPropertyBlocks()
	{
		for (int i = 0; i < _renderers.Count; i++)
		{
			Renderer val = _renderers[i];
			if (!((Object)(object)val == (Object)null))
			{
				int num = ((_sharedMats.Count > i && _sharedMats[i] != null) ? _sharedMats[i].Length : val.sharedMaterials.Length);
				for (int j = 0; j < num; j++)
				{
					val.SetPropertyBlock((MaterialPropertyBlock)null, j);
				}
			}
		}
	}

	private void ClearTrackingLists()
	{
		_renderers.Clear();
		_sharedMats.Clear();
		_baseColors.Clear();
		_mpbs.Clear();
		_scaledOnce.Clear();
	}
}
namespace AudioParty
{
	[BepInPlugin("Omniscye.AudioParty", "AudioParty", "1.0")]
	public class AudioParty : BaseUnityPlugin
	{
		internal static AudioParty Instance { get; private set; }

		internal static ManualLogSource Logger => Instance._logger;

		private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger;

		internal Harmony? Harmony { get; set; }

		private void Awake()
		{
			Instance = this;
			((Component)this).gameObject.transform.parent = null;
			((Object)((Component)this).gameObject).hideFlags = (HideFlags)61;
			Patch();
			Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} has loaded!");
		}

		internal void Patch()
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0021: Expected O, but got Unknown
			//IL_0026: Expected O, but got Unknown
			if (Harmony == null)
			{
				Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID);
				Harmony val2 = val;
				Harmony = val;
			}
			Harmony.PatchAll();
		}

		internal void Unpatch()
		{
			Harmony? harmony = Harmony;
			if (harmony != null)
			{
				harmony.UnpatchSelf();
			}
		}

		private void Update()
		{
		}
	}
}
namespace AmazingAssets.CurvedWorldEditor
{
	internal static class AssetInfo
	{
		public const string assetName = "Curved World";

		public static readonly string assetNameTrimmed = "Curved World".Replace(" ", string.Empty);

		public const string assetVersion = "2022.4";

		public const string assetStorePath = "content/173251";

		public const string assetStorePathShortLink = "http://u3d.as/1W8h";

		public const string assetForumPath = "https://forum.unity.com/threads/curved-world-2.344041/";

		public const string assetManualLocation = "https://docs.google.com/document/d/1nptLK-X8kwUdXWbE_RyqiaPHYd5R96zu7LptWJ2tcf4/edit?usp=sharing";

		public const string assetSupportMail = "[email protected]";

		public const string publisherPage = "https://assetstore.unity.com/publishers/1295";
	}
}