using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Newtonsoft.Json; using UnityEngine; using UnityEngine.Networking; using UnityEngine.Rendering; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("Empress")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.2.0")] [assembly: AssemblyInformationalVersion("1.0.2+5f1b735e473ca4ccf3b383128fbebd889cb564da")] [assembly: AssemblyProduct("EmpressMiSideMenuScene")] [assembly: AssemblyTitle("EmpressMiSideMenuScene")] [assembly: AssemblyVersion("1.0.2.0")] [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; } } } namespace EmpressMiSideMenuScene { [BepInPlugin("empress.repo.misidemenuscene", "Empress MiSide Menu Scene", "1.0.2")] public sealed class EmpressMiSideMenuScenePlugin : BaseUnityPlugin { internal const string EmpressPluginGuid = "empress.repo.misidemenuscene"; internal const string EmpressPluginName = "Empress MiSide Menu Scene"; internal const string EmpressPluginVersion = "1.0.2"; internal ConfigEntry EmpressEnabled; internal ConfigEntry EmpressMusicVolume; private Harmony? _empressHarmony; private EmpressMiSideMenuRuntime? _empressRuntime; internal static EmpressMiSideMenuScenePlugin? Instance { get; private set; } internal static ManualLogSource? EmpressLog { get; private set; } internal string EmpressAssetRoot => Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location) ?? string.Empty, "miside_menu_scene"); private void Awake() { //IL_0013: 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_0027: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Expected O, but got Unknown //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0099: Expected O, but got Unknown Instance = this; EmpressLog = ((BaseUnityPlugin)this).Logger; ((Object)this).hideFlags = (HideFlags)(((Object)this).hideFlags | 0x3D); GameObject gameObject = ((Component)this).gameObject; ((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | 0x3D); EmpressEnabled = ((BaseUnityPlugin)this).Config.Bind("General", "Enabled", true, "Places the MiSide menu scene into the REPO main menu."); EmpressMusicVolume = ((BaseUnityPlugin)this).Config.Bind("Audio", "MusicVolume", 75, new ConfigDescription("Volume for the transplanted MiSide menu music.", (AcceptableValueBase)(object)new AcceptableValueRange(0, 100), Array.Empty())); _empressHarmony = new Harmony("empress.repo.misidemenuscene"); _empressHarmony.PatchAll(); EmpressEnsureRuntime(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"Empress MiSide Menu Scene 1.0.2 loaded. Empress menu transplant armed."); } internal EmpressMiSideMenuRuntime EmpressEnsureRuntime() { //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_0028: Expected O, but got Unknown if ((Object)(object)_empressRuntime != (Object)null) { return _empressRuntime; } GameObject val = new GameObject("EmpressMiSideMenuScene.Runtime") { hideFlags = (HideFlags)61 }; Object.DontDestroyOnLoad((Object)(object)val); _empressRuntime = val.AddComponent(); return _empressRuntime; } } [HarmonyPatch(typeof(MainMenuOpen), "Start")] internal static class EmpressMiSideMenuSceneMainMenuOpenStartPatch { private static void Postfix() { EmpressMiSideMenuScenePlugin.Instance?.EmpressEnsureRuntime().EmpressRequestRefresh(); } } [HarmonyPatch(typeof(MenuPageMain), "Start")] internal static class EmpressMiSideMenuSceneMenuPageMainStartPatch { private static void Postfix() { EmpressMiSideMenuScenePlugin.Instance?.EmpressEnsureRuntime().EmpressRequestRefresh(); } } [HarmonyPatch(typeof(TruckMenuAnimated), "Start")] internal static class EmpressMiSideMenuSceneTruckMenuAnimatedStartPatch { private static void Postfix() { EmpressMiSideMenuScenePlugin.Instance?.EmpressEnsureRuntime().EmpressRequestRefresh(); } } [HarmonyPatch(typeof(CameraNoPlayerTarget), "Update")] internal static class EmpressMiSideMenuSceneCameraNoPlayerTargetUpdatePatch { private static void Postfix(CameraNoPlayerTarget __instance) { EmpressMiSideMenuScenePlugin.Instance?.EmpressEnsureRuntime().EmpressApplyMenuCameraRig(__instance, null, null); } } [HarmonyPatch(typeof(CameraPosition), "Update")] internal static class EmpressMiSideMenuSceneCameraPositionUpdatePatch { private static void Postfix(CameraPosition __instance) { EmpressMiSideMenuScenePlugin.Instance?.EmpressEnsureRuntime().EmpressApplyMenuCameraRig(null, __instance, null); } } [HarmonyPatch(typeof(CameraAim), "Update")] internal static class EmpressMiSideMenuSceneCameraAimUpdatePatch { private static void Postfix(CameraAim __instance) { EmpressMiSideMenuScenePlugin.Instance?.EmpressEnsureRuntime().EmpressApplyMenuCameraRig(null, null, __instance); } } [HarmonyPatch(typeof(LevelMusic), "Update")] internal static class EmpressMiSideMenuSceneLevelMusicUpdatePatch { private static bool Prefix(LevelMusic __instance) { return !EmpressMiSideMenuRuntime.EmpressShouldSuppressLevelMusic(__instance); } } [HarmonyPatch(typeof(ConstantMusic), "Update")] internal static class EmpressMiSideMenuSceneConstantMusicUpdatePatch { private static bool Prefix(ConstantMusic __instance) { return !EmpressMiSideMenuRuntime.EmpressShouldSuppressConstantMusic(__instance); } } internal sealed class EmpressMiSideMenuRuntime : MonoBehaviour { private static readonly FieldRef EmpressLevelMusicAudioSourceRef = AccessTools.FieldRefAccess("audioSource"); private static readonly FieldRef EmpressLevelMusicActiveRef = AccessTools.FieldRefAccess("active"); private static readonly FieldRef EmpressLevelMusicActivePlayedRef = AccessTools.FieldRefAccess("activePlayed"); private static readonly FieldRef EmpressLevelMusicInterruptRef = AccessTools.FieldRefAccess("interrupt"); private static readonly FieldRef EmpressLevelMusicInterruptVolumeRef = AccessTools.FieldRefAccess("interruptVolume"); private static readonly FieldRef EmpressLevelMusicInterruptVolumeLerpRef = AccessTools.FieldRefAccess("interruptVolumeLerp"); private static readonly FieldRef EmpressLevelMusicCooldownTimeRef = AccessTools.FieldRefAccess("cooldownTime"); private static readonly FieldRef EmpressLevelMusicCooldownTimeMinRef = AccessTools.FieldRefAccess("cooldownTimeMin"); private static readonly FieldRef EmpressConstantMusicAudioSourceRef = AccessTools.FieldRefAccess("audioSource"); private static readonly FieldRef EmpressConstantMusicSetupRef = AccessTools.FieldRefAccess("setup"); private readonly Dictionary _empressNodeObjects = new Dictionary(StringComparer.Ordinal); private readonly Dictionary _empressNodeTransforms = new Dictionary(StringComparer.Ordinal); private readonly Dictionary _empressMeshes = new Dictionary(StringComparer.Ordinal); private readonly Dictionary _empressMaterials = new Dictionary(); private readonly Dictionary _empressTextures = new Dictionary(StringComparer.Ordinal); private readonly Dictionary _empressMitaBonePoses = new Dictionary(StringComparer.Ordinal); private readonly Dictionary _empressSuppressedMenuAudioStates = new Dictionary(); private readonly Dictionary _empressMenuCameraStates = new Dictionary(); private readonly List _empressSuppressedTruckRenderers = new List(); private readonly List _empressSuppressedTruckBehaviours = new List(); private readonly List _empressSuppressedTruckParticles = new List(); private EmpressMiSideMenuPackage? _empressPackage; private GameObject? _empressSceneRoot; private Transform? _empressCameraAnchor; private AudioSource? _empressMusicSource; private AudioClip? _empressMusicClip; private bool _empressSceneBuilt; private bool _empressSceneBuildFailed; private bool _empressMenuActive; private bool _empressRefreshRequested = true; private bool _empressLoggedSceneBuild; private Coroutine? _empressMusicLoadCoroutine; private float _empressMitaBlinkUntilTime; private float _empressMitaNextBlinkTime; private void Awake() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_0016: 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) ((Object)this).hideFlags = (HideFlags)(((Object)this).hideFlags | 0x3D); GameObject gameObject = ((Component)this).gameObject; ((Object)gameObject).hideFlags = (HideFlags)(((Object)gameObject).hideFlags | 0x3D); _empressMusicSource = ((Component)this).gameObject.AddComponent(); _empressMusicSource.playOnAwake = false; _empressMusicSource.loop = true; _empressMusicSource.spatialBlend = 0f; _empressMusicSource.priority = 32; } internal void EmpressRequestRefresh() { _empressRefreshRequested = true; } private void Update() { bool flag = EmpressMenuContextActive(); if (flag != _empressMenuActive) { _empressMenuActive = flag; _empressRefreshRequested = true; } if (_empressRefreshRequested) { EmpressRefreshMenuPresentation(); _empressRefreshRequested = false; } if (_empressMenuActive && _empressSceneBuilt) { EmpressSuppressVanillaMenuPresentation(suppress: true); EmpressApplyMenuCameraRig(null, null, null); EmpressAnimateMita(); EmpressUpdateMusic(); } } private void LateUpdate() { if (_empressMenuActive && _empressSceneBuilt) { EmpressApplyMenuCameraRig(null, null, null); } } private bool EmpressMenuContextActive() { EmpressMiSideMenuScenePlugin? instance = EmpressMiSideMenuScenePlugin.Instance; if (instance == null || !instance.EmpressEnabled.Value) { return false; } if ((Object)(object)RunManager.instance == (Object)null || (Object)(object)RunManager.instance.levelCurrent == (Object)null || (Object)(object)RunManager.instance.levelMainMenu == (Object)null) { return false; } return RunManager.instance.levelCurrent == RunManager.instance.levelMainMenu; } private void EmpressRefreshMenuPresentation() { if (!_empressMenuActive) { if ((Object)(object)_empressSceneRoot != (Object)null) { _empressSceneRoot.SetActive(false); } EmpressSuppressVanillaMenuPresentation(suppress: false); if ((Object)(object)_empressMusicSource != (Object)null) { _empressMusicSource.Stop(); } if ((Object)(object)CameraNoPlayerTarget.instance != (Object)null) { ((Behaviour)CameraNoPlayerTarget.instance).enabled = true; } if ((Object)(object)CameraNoPlayerTarget.instance != (Object)null) { ((Behaviour)CameraNoPlayerTarget.instance).enabled = true; } } else if (_empressSceneBuildFailed) { EmpressSuppressVanillaMenuPresentation(suppress: false); } else { EmpressEnsureSceneBuilt(); if ((Object)(object)_empressSceneRoot != (Object)null) { _empressSceneRoot.SetActive(true); } } } private void EmpressEnsureSceneBuilt() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown //IL_0077: 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_00a1: Unknown result type (might be due to invalid IL or missing references) if (_empressSceneBuilt || _empressSceneBuildFailed) { return; } try { _empressPackage = EmpressLoadPackage(); if (_empressPackage == null) { _empressSceneBuildFailed = true; return; } _empressSceneRoot = new GameObject("EmpressMiSideMenuScene.Root") { hideFlags = (HideFlags)61 }; Object.DontDestroyOnLoad((Object)(object)_empressSceneRoot); _empressSceneRoot.transform.SetParent(((Component)this).transform, false); _empressSceneRoot.transform.localPosition = Vector3.zero; _empressSceneRoot.transform.localRotation = Quaternion.identity; _empressSceneRoot.transform.localScale = Vector3.one; _empressNodeObjects.Clear(); _empressNodeTransforms.Clear(); _empressNodeObjects[string.Empty] = _empressSceneRoot; _empressNodeTransforms[string.Empty] = _empressSceneRoot.transform; EmpressMiSideMenuNodeData[] array = _empressPackage.nodes ?? Array.Empty(); foreach (EmpressMiSideMenuNodeData item in array.OrderBy((EmpressMiSideMenuNodeData item) => item.path.Count((char character) => character == '/'))) { EmpressCreateNode(item); } EmpressMiSideMenuNodeData[] array2 = array; foreach (EmpressMiSideMenuNodeData node in array2) { EmpressApplyNodeComponents(node); } if (_empressNodeTransforms.TryGetValue("Camera", out Transform value)) { _empressCameraAnchor = value; } EmpressBindMitaAnimationRig(); _empressSceneBuilt = true; if (!_empressLoggedSceneBuild) { int num = _empressSceneRoot.GetComponentsInChildren(true).Length; int num2 = _empressSceneRoot.GetComponentsInChildren(true).Length; int valueOrDefault = (_empressPackage?.nodes?.Length).GetValueOrDefault(); ManualLogSource? empressLog = EmpressMiSideMenuScenePlugin.EmpressLog; if (empressLog != null) { empressLog.LogInfo((object)$"Empress MiSide scene built with {valueOrDefault} nodes, {num} renderers, {num2} lights."); } _empressLoggedSceneBuild = true; } } catch (Exception arg) { _empressSceneBuildFailed = true; ManualLogSource? empressLog2 = EmpressMiSideMenuScenePlugin.EmpressLog; if (empressLog2 != null) { empressLog2.LogError((object)$"Empress MiSide scene build failed: {arg}"); } EmpressSuppressVanillaMenuPresentation(suppress: false); } } private void EmpressCreateNode(EmpressMiSideMenuNodeData node) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Expected O, but got Unknown //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) string key = EmpressParentPath(node.path); Transform value; Transform val = (_empressNodeTransforms.TryGetValue(key, out value) ? value : _empressSceneRoot.transform); GameObject val2 = new GameObject(node.name) { hideFlags = (HideFlags)61 }; val2.SetActive(node.active); Transform transform = val2.transform; transform.SetParent(val, false); transform.localPosition = node.localPosition.EmpressToVector3(); transform.localRotation = node.localRotation.EmpressToQuaternion(); transform.localScale = node.localScale.EmpressToVector3(); _empressNodeObjects[node.path] = val2; _empressNodeTransforms[node.path] = transform; } private void EmpressApplyNodeComponents(EmpressMiSideMenuNodeData node) { //IL_015e: Unknown result type (might be due to invalid IL or missing references) GameObject val = _empressNodeObjects[node.path]; if (node.meshRenderer != null) { val.AddComponent().sharedMesh = EmpressLoadMesh(node.meshRenderer.meshFile); ((Renderer)val.AddComponent()).sharedMaterials = node.meshRenderer.materials.Select(EmpressLoadMaterial).ToArray(); } if (node.skinnedRenderer != null) { SkinnedMeshRenderer obj = val.AddComponent(); obj.sharedMesh = EmpressLoadMesh(node.skinnedRenderer.meshFile); ((Renderer)obj).sharedMaterials = node.skinnedRenderer.materials.Select(EmpressLoadMaterial).ToArray(); obj.rootBone = EmpressResolveTransform(node.skinnedRenderer.rootBone); obj.bones = node.skinnedRenderer.bones.Select(EmpressResolveTransform).OfType().ToArray(); obj.updateWhenOffscreen = true; } if (node.light != null) { Light obj2 = val.AddComponent(); obj2.type = (LightType)Mathf.Clamp(node.light.type, 0, 4); obj2.range = node.light.range; obj2.spotAngle = node.light.spotAngle; obj2.intensity = node.light.intensity; obj2.color = node.light.color.EmpressToColor(); } } private Mesh EmpressLoadMesh(string meshFile) { //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_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_0157: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_0173: Expected O, but got Unknown //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_0214: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_026b: Unknown result type (might be due to invalid IL or missing references) //IL_0270: Unknown result type (might be due to invalid IL or missing references) //IL_0275: Unknown result type (might be due to invalid IL or missing references) //IL_029f: 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_030f: Unknown result type (might be due to invalid IL or missing references) if (_empressMeshes.TryGetValue(meshFile, out Mesh value)) { return value; } using FileStream input = File.OpenRead(Path.Combine(EmpressMiSideMenuScenePlugin.Instance.EmpressAssetRoot, "meshes", meshFile)); using BinaryReader binaryReader = new BinaryReader(input); if (new string(binaryReader.ReadChars(7)) != "EMMESH1") { throw new InvalidDataException("Invalid Empress mesh header in '" + meshFile + "'."); } int num = binaryReader.ReadInt32(); int num2 = binaryReader.ReadInt32(); int num3 = binaryReader.ReadInt32(); int num4 = binaryReader.ReadInt32(); bool flag = (num & 1) != 0; bool flag2 = (num & 2) != 0; bool flag3 = (num & 4) != 0; Vector3[] array = (Vector3[])(object)new Vector3[num2]; for (int i = 0; i < num2; i++) { array[i] = new Vector3(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()); } Vector3[] array2 = null; if (flag) { array2 = (Vector3[])(object)new Vector3[num2]; for (int j = 0; j < num2; j++) { array2[j] = new Vector3(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()); } } Vector2[] array3 = null; if (flag2) { array3 = (Vector2[])(object)new Vector2[num2]; for (int k = 0; k < num2; k++) { array3[k] = new Vector2(binaryReader.ReadSingle(), binaryReader.ReadSingle()); } } Mesh val = new Mesh { name = Path.GetFileNameWithoutExtension(meshFile), indexFormat = (IndexFormat)(num2 > 65535), subMeshCount = num3 }; val.vertices = array; if (array2 != null) { val.normals = array2; } if (array3 != null) { val.uv = array3; } for (int l = 0; l < num3; l++) { int num5 = binaryReader.ReadInt32(); int[] array4 = new int[num5]; for (int m = 0; m < num5; m++) { array4[m] = binaryReader.ReadInt32(); } val.SetTriangles(array4, l, false); } if (flag3) { Matrix4x4[] array5 = (Matrix4x4[])(object)new Matrix4x4[num4]; for (int n = 0; n < num4; n++) { array5[n] = new Matrix4x4(new Vector4(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()), new Vector4(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()), new Vector4(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle()), new Vector4(binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle(), binaryReader.ReadSingle())); } BoneWeight[] array6 = (BoneWeight[])(object)new BoneWeight[num2]; for (int num6 = 0; num6 < num2; num6++) { int num7 = num6; BoneWeight val2 = default(BoneWeight); ((BoneWeight)(ref val2)).boneIndex0 = (int)binaryReader.ReadUInt32(); ((BoneWeight)(ref val2)).boneIndex1 = (int)binaryReader.ReadUInt32(); ((BoneWeight)(ref val2)).boneIndex2 = (int)binaryReader.ReadUInt32(); ((BoneWeight)(ref val2)).boneIndex3 = (int)binaryReader.ReadUInt32(); ((BoneWeight)(ref val2)).weight0 = binaryReader.ReadSingle(); ((BoneWeight)(ref val2)).weight1 = binaryReader.ReadSingle(); ((BoneWeight)(ref val2)).weight2 = binaryReader.ReadSingle(); ((BoneWeight)(ref val2)).weight3 = binaryReader.ReadSingle(); array6[num7] = val2; } val.bindposes = array5; val.boneWeights = array6; } if (array2 == null || array2.Length == 0) { val.RecalculateNormals(); } val.RecalculateBounds(); _empressMeshes[meshFile] = val; return val; } private Material EmpressLoadMaterial(int materialIndex) { //IL_0036: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: 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_0059: Expected O, but got Unknown if (_empressMaterials.TryGetValue(materialIndex, out Material value)) { return value; } EmpressMiSideMenuMaterialData empressMiSideMenuMaterialData = (_empressPackage?.materials ?? Array.Empty())[materialIndex]; Material val = new Material(EmpressResolveShader(empressMiSideMenuMaterialData)) { name = empressMiSideMenuMaterialData.name, color = empressMiSideMenuMaterialData.color.EmpressToColor() }; if (!string.IsNullOrWhiteSpace(empressMiSideMenuMaterialData.mainTexture)) { Texture2D mainTexture = EmpressLoadTexture(empressMiSideMenuMaterialData.mainTexture); val.mainTexture = (Texture)(object)mainTexture; } if (empressMiSideMenuMaterialData.transparent || empressMiSideMenuMaterialData.cutout) { EmpressConfigureMaterialTransparency(val, empressMiSideMenuMaterialData.cutout); } _empressMaterials[materialIndex] = val; return val; } private Texture2D EmpressLoadTexture(string textureFile) { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown if (_empressTextures.TryGetValue(textureFile, out Texture2D value)) { return value; } byte[] array = File.ReadAllBytes(Path.Combine(EmpressMiSideMenuScenePlugin.Instance.EmpressAssetRoot, "textures", textureFile)); Texture2D val = new Texture2D(2, 2, (TextureFormat)4, true); ImageConversion.LoadImage(val, array, false); ((Object)val).name = Path.GetFileNameWithoutExtension(textureFile); ((Texture)val).wrapMode = (TextureWrapMode)0; ((Texture)val).filterMode = (FilterMode)1; _empressTextures[textureFile] = val; return val; } private static Shader EmpressResolveShader(EmpressMiSideMenuMaterialData data) { if (data.transparent) { return Shader.Find("Legacy Shaders/Transparent/Diffuse") ?? Shader.Find("Unlit/Transparent") ?? Shader.Find("Sprites/Default") ?? Shader.Find("Standard"); } return Shader.Find("Standard") ?? Shader.Find("Legacy Shaders/Diffuse") ?? Shader.Find("Sprites/Default"); } private static void EmpressConfigureMaterialTransparency(Material material, bool cutout) { if (((Object)material.shader).name.Contains("Standard", StringComparison.OrdinalIgnoreCase)) { material.SetFloat("_Mode", cutout ? 1f : 3f); material.SetInt("_SrcBlend", 5); material.SetInt("_DstBlend", 10); material.SetInt("_ZWrite", cutout ? 1 : 0); material.DisableKeyword("_ALPHATEST_ON"); material.EnableKeyword("_ALPHABLEND_ON"); material.DisableKeyword("_ALPHAPREMULTIPLY_ON"); material.renderQueue = (cutout ? 2450 : 3000); } } private Transform? EmpressResolveTransform(string path) { if (string.IsNullOrWhiteSpace(path)) { return null; } if (!_empressNodeTransforms.TryGetValue(path, out Transform value)) { return null; } return value; } internal void EmpressApplyMenuCameraRig(CameraNoPlayerTarget? menuCameraTarget, CameraPosition? cameraPosition, CameraAim? cameraAim) { //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_0102: Unknown result type (might be due to invalid IL or missing references) //IL_0113: Unknown result type (might be due to invalid IL or missing references) //IL_015a: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) if (!_empressMenuActive || !_empressSceneBuilt || (Object)(object)_empressCameraAnchor == (Object)null) { return; } if ((Object)(object)CameraNoPlayerTarget.instance != (Object)null) { ((Behaviour)CameraNoPlayerTarget.instance).enabled = false; } if ((Object)(object)CameraNoPlayerTarget.instance != (Object)null) { ((Behaviour)CameraNoPlayerTarget.instance).enabled = false; } if (menuCameraTarget == null) { menuCameraTarget = EmpressResolveMenuCameraTarget(); } if ((Object)(object)menuCameraTarget != (Object)null) { ((Component)menuCameraTarget).transform.position = _empressCameraAnchor.position; ((Component)menuCameraTarget).transform.rotation = _empressCameraAnchor.rotation; } if (cameraPosition == null) { cameraPosition = CameraPosition.instance; } if ((Object)(object)cameraPosition != (Object)null) { ((Component)cameraPosition).transform.position = _empressCameraAnchor.position; ((Component)cameraPosition).transform.localPosition = _empressCameraAnchor.position; } if (cameraAim == null) { cameraAim = CameraAim.Instance; } if ((Object)(object)cameraAim != (Object)null) { ((Component)cameraAim).transform.rotation = _empressCameraAnchor.rotation; ((Component)cameraAim).transform.localRotation = _empressCameraAnchor.rotation; cameraAim.SetPlayerAim(_empressCameraAnchor.rotation, true); } Camera val = EmpressResolveLiveMenuCamera(); if ((Object)(object)val == (Object)null) { return; } if (!_empressMenuCameraStates.ContainsKey(val)) { _empressMenuCameraStates[val] = new EmpressCameraState(val); } ((Component)val).transform.position = _empressCameraAnchor.position; ((Component)val).transform.rotation = _empressCameraAnchor.rotation; if (_empressPackage != null) { EmpressMiSideMenuNodeData empressMiSideMenuNodeData = _empressPackage.nodes.FirstOrDefault((EmpressMiSideMenuNodeData node) => node.path == "Camera"); if (empressMiSideMenuNodeData?.cameraAnchor != null) { val.fieldOfView = empressMiSideMenuNodeData.cameraAnchor.fieldOfView; val.nearClipPlane = Mathf.Max(0.01f, empressMiSideMenuNodeData.cameraAnchor.nearClip); val.farClipPlane = Mathf.Max(empressMiSideMenuNodeData.cameraAnchor.farClip, 100f); val.backgroundColor = empressMiSideMenuNodeData.cameraAnchor.backgroundColor.EmpressToColor(); val.clearFlags = (CameraClearFlags)2; } } } private static CameraNoPlayerTarget? EmpressResolveMenuCameraTarget() { CameraNoPlayerTarget instance = CameraNoPlayerTarget.instance; if ((Object)(object)instance != (Object)null) { return instance; } instance = ((IEnumerable)Object.FindObjectsOfType(true)).FirstOrDefault((Func)((CameraNoPlayerTarget target) => (Object)(object)target != (Object)null)); if ((Object)(object)instance != (Object)null) { CameraNoPlayerTarget.instance = instance; } return instance; } private static Camera? EmpressResolveLiveMenuCamera() { if ((Object)(object)GameDirector.instance?.MainCamera != (Object)null) { return GameDirector.instance.MainCamera; } if ((Object)(object)Camera.main != (Object)null) { return Camera.main; } return ((IEnumerable)Object.FindObjectsOfType(true)).FirstOrDefault((Func)((Camera camera) => (Object)(object)camera != (Object)null && ((Component)camera).CompareTag("MainCamera"))); } private void EmpressSuppressVanillaMenuPresentation(bool suppress) { if (!suppress) { foreach (Behaviour item in _empressSuppressedTruckBehaviours.Where((Behaviour item) => (Object)(object)item != (Object)null)) { item.enabled = true; } foreach (Renderer item2 in _empressSuppressedTruckRenderers.Where((Renderer item) => (Object)(object)item != (Object)null)) { item2.enabled = true; } foreach (ParticleSystem item3 in _empressSuppressedTruckParticles.Where((ParticleSystem item) => (Object)(object)item != (Object)null)) { item3.Play(true); } KeyValuePair[] array = _empressSuppressedMenuAudioStates.Where>((KeyValuePair item) => (Object)(object)item.Key != (Object)null).ToArray(); for (int i = 0; i < array.Length; i++) { KeyValuePair keyValuePair = array[i]; keyValuePair.Value.Restore(keyValuePair.Key); } KeyValuePair[] array2 = _empressMenuCameraStates.Where>((KeyValuePair item) => (Object)(object)item.Key != (Object)null).ToArray(); for (int i = 0; i < array2.Length; i++) { KeyValuePair keyValuePair2 = array2[i]; keyValuePair2.Value.Restore(keyValuePair2.Key); } _empressSuppressedTruckBehaviours.Clear(); _empressSuppressedTruckRenderers.Clear(); _empressSuppressedTruckParticles.Clear(); _empressSuppressedMenuAudioStates.Clear(); _empressMenuCameraStates.Clear(); return; } TruckMenuAnimated[] array3 = Object.FindObjectsOfType(true); foreach (TruckMenuAnimated val in array3) { if ((Object)(object)val != (Object)null && ((Behaviour)val).enabled) { _empressSuppressedTruckBehaviours.Add((Behaviour)(object)val); ((Behaviour)val).enabled = false; } } Renderer[] array4 = Object.FindObjectsOfType(true); foreach (Renderer val2 in array4) { if (!((Object)(object)val2 == (Object)null) && val2.enabled && EmpressShouldSuppressMenuVisual(((Component)val2).transform)) { _empressSuppressedTruckRenderers.Add(val2); val2.enabled = false; } } ParticleSystem[] array5 = Object.FindObjectsOfType(true); foreach (ParticleSystem val3 in array5) { if (!((Object)(object)val3 == (Object)null) && val3.isPlaying && EmpressShouldSuppressMenuVisual(((Component)val3).transform)) { _empressSuppressedTruckParticles.Add(val3); val3.Stop(true, (ParticleSystemStopBehavior)0); } } AudioSource[] array6 = Object.FindObjectsOfType(true); foreach (AudioSource val4 in array6) { if (!((Object)(object)val4 == (Object)null) && !((Object)(object)val4 == (Object)(object)_empressMusicSource) && EmpressShouldSuppressMenuAudio(val4)) { if (!_empressSuppressedMenuAudioStates.ContainsKey(val4)) { _empressSuppressedMenuAudioStates[val4] = new EmpressAudioSourceState(val4); } val4.Pause(); val4.mute = true; } } } private bool EmpressShouldSuppressMenuVisual(Transform candidate) { if ((Object)(object)candidate == (Object)null) { return false; } if ((Object)(object)_empressSceneRoot != (Object)null && candidate.IsChildOf(_empressSceneRoot.transform)) { return false; } if ((Object)(object)((Component)candidate).GetComponentInParent(true) != (Object)null || (Object)(object)((Component)candidate).GetComponentInParent(true) != (Object)null || (Object)(object)((Component)candidate).GetComponentInParent(true) != (Object)null) { return false; } return true; } private bool EmpressShouldSuppressMenuAudio(AudioSource source) { if ((Object)(object)_empressSceneRoot != (Object)null && ((Component)source).transform.IsChildOf(_empressSceneRoot.transform)) { return false; } if ((Object)(object)((Component)source).GetComponentInParent(true) != (Object)null || (Object)(object)((Component)source).GetComponentInParent(true) != (Object)null) { return false; } if (!source.loop) { return EmpressLooksLikeBackgroundAudio(source); } return true; } private static bool EmpressLooksLikeBackgroundAudio(AudioSource source) { string text = EmpressTransformPath(((Component)source).transform).ToLowerInvariant(); if (!text.Contains("music") && !text.Contains("ambience") && !text.Contains("ambient") && !text.Contains("truck") && !text.Contains("mainmenu")) { return text.Contains("main menu"); } return true; } private static string EmpressTransformPath(Transform transformNode) { List list = new List(); while ((Object)(object)transformNode != (Object)null) { list.Add(((Object)transformNode).name); transformNode = transformNode.parent; } list.Reverse(); return string.Join("/", list); } private void EmpressUpdateMusic() { if ((Object)(object)_empressMusicSource == (Object)null || _empressPackage == null) { return; } _empressMusicSource.volume = Mathf.Clamp01((float)(EmpressMiSideMenuScenePlugin.Instance?.EmpressMusicVolume.Value ?? 75) / 100f); if (string.IsNullOrWhiteSpace(_empressPackage.musicFile)) { return; } if ((Object)(object)_empressMusicClip == (Object)null) { if (_empressMusicLoadCoroutine == null) { _empressMusicLoadCoroutine = ((MonoBehaviour)this).StartCoroutine(EmpressLoadMusicCoroutine(_empressPackage.musicFile)); } return; } if (_empressMusicSource.clip != _empressMusicClip) { _empressMusicSource.clip = _empressMusicClip; } if (!_empressMusicSource.isPlaying) { _empressMusicSource.Play(); } } private IEnumerator EmpressLoadMusicCoroutine(string musicFile) { string uriString = Path.Combine(EmpressMiSideMenuScenePlugin.Instance.EmpressAssetRoot, "audio", musicFile); UnityWebRequest request = UnityWebRequestMultimedia.GetAudioClip(new Uri(uriString).AbsoluteUri, (AudioType)20); try { yield return request.SendWebRequest(); if ((int)request.result == 1) { _empressMusicClip = DownloadHandlerAudioClip.GetContent(request); if ((Object)(object)_empressMusicClip != (Object)null) { ((Object)_empressMusicClip).name = "EmpressMiSideMenuMusic"; } } else { ManualLogSource? empressLog = EmpressMiSideMenuScenePlugin.EmpressLog; if (empressLog != null) { empressLog.LogWarning((object)("Empress MiSide menu music failed to load: " + request.error)); } } _empressMusicLoadCoroutine = null; } finally { ((IDisposable)request)?.Dispose(); } } private void EmpressBindMitaAnimationRig() { _empressMitaBonePoses.Clear(); _empressMitaBlinkUntilTime = 0f; _empressMitaNextBlinkTime = Time.unscaledTime + 1.75f; EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Left shoulder"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Left shoulder/Left arm"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Right shoulder"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Right shoulder/Right arm"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Left Eye"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Right Eye"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/HairSide1 L"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/HairSide1 R"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Tail 1 L"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Tail 2 L"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Tail 1 R"); EmpressRememberMitaBone("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Tail 2 R"); } private void EmpressRememberMitaBone(string path) { Transform val = EmpressResolveTransform(path); if (!((Object)(object)val == (Object)null) && !_empressMitaBonePoses.ContainsKey(path)) { _empressMitaBonePoses[path] = new EmpressMitaBonePose(val); } } private void EmpressAnimateMita() { //IL_00af: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: 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_0108: 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_0143: 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_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0190: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: 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_020c: Unknown result type (might be due to invalid IL or missing references) //IL_0246: Unknown result type (might be due to invalid IL or missing references) //IL_0256: Unknown result type (might be due to invalid IL or missing references) //IL_027d: Unknown result type (might be due to invalid IL or missing references) //IL_028d: Unknown result type (might be due to invalid IL or missing references) //IL_02c7: Unknown result type (might be due to invalid IL or missing references) //IL_02d7: Unknown result type (might be due to invalid IL or missing references) //IL_0311: Unknown result type (might be due to invalid IL or missing references) //IL_0321: Unknown result type (might be due to invalid IL or missing references) //IL_035b: Unknown result type (might be due to invalid IL or missing references) //IL_036b: Unknown result type (might be due to invalid IL or missing references) //IL_03b8: Unknown result type (might be due to invalid IL or missing references) //IL_03c8: Unknown result type (might be due to invalid IL or missing references) //IL_0415: Unknown result type (might be due to invalid IL or missing references) //IL_0425: Unknown result type (might be due to invalid IL or missing references) //IL_0472: Unknown result type (might be due to invalid IL or missing references) //IL_0482: Unknown result type (might be due to invalid IL or missing references) //IL_04cf: Unknown result type (might be due to invalid IL or missing references) //IL_04f5: Unknown result type (might be due to invalid IL or missing references) //IL_04fa: Unknown result type (might be due to invalid IL or missing references) //IL_0502: Unknown result type (might be due to invalid IL or missing references) //IL_0507: Unknown result type (might be due to invalid IL or missing references) //IL_0514: Unknown result type (might be due to invalid IL or missing references) //IL_0519: Unknown result type (might be due to invalid IL or missing references) if (_empressMitaBonePoses.Count != 0) { float unscaledTime = Time.unscaledTime; if (unscaledTime >= _empressMitaNextBlinkTime) { _empressMitaBlinkUntilTime = unscaledTime + 0.12f; _empressMitaNextBlinkTime = unscaledTime + Random.Range(2.4f, 5.4f); } bool num = unscaledTime < _empressMitaBlinkUntilTime; float num2 = Mathf.Sin(unscaledTime * 0.31f) * 3.5f; float num3 = Mathf.Sin(unscaledTime * 0.47f + 0.8f) * 2f; float num4 = Mathf.Sin(unscaledTime * 0.62f) * 1.4f; float num5 = Mathf.Sin(unscaledTime * 1.24f) * 0.0065f; EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips", new Vector3(0f, num5, 0f), Quaternion.Euler(0f, 0f, num4)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine", Vector3.zero, Quaternion.Euler(Mathf.Sin(unscaledTime * 0.78f + 0.25f) * 0.9f, 0f, num4 * 0.45f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest", Vector3.zero, Quaternion.Euler(Mathf.Sin(unscaledTime * 0.9f + 1.1f) * 1.4f, num2 * 0.18f, num4 * 0.65f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2", Vector3.zero, Quaternion.Euler(num3 * 0.45f, num2 * 0.28f, 0f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1", Vector3.zero, Quaternion.Euler(num3 * 0.55f, num2 * 0.42f, Mathf.Sin(unscaledTime * 0.44f) * 0.5f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head", Vector3.zero, Quaternion.Euler(num3 * 0.75f, num2, Mathf.Sin(unscaledTime * 0.57f + 0.9f) * 0.85f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Left shoulder", Vector3.zero, Quaternion.Euler(0f, 0f, Mathf.Sin(unscaledTime * 0.72f + 1f) * 1.1f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Left shoulder/Left arm", Vector3.zero, Quaternion.Euler(Mathf.Sin(unscaledTime * 0.83f + 1.4f) * 1.5f, 0f, Mathf.Sin(unscaledTime * 0.68f + 0.3f) * 1f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Right shoulder", Vector3.zero, Quaternion.Euler(0f, 0f, Mathf.Sin(unscaledTime * 0.72f + 2.3f) * -1.1f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Right shoulder/Right arm", Vector3.zero, Quaternion.Euler(Mathf.Sin(unscaledTime * 0.83f + 2.1f) * 1.5f, 0f, Mathf.Sin(unscaledTime * 0.68f + 1.1f) * -1f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/HairSide1 L", Vector3.zero, Quaternion.Euler(0f, Mathf.Sin(unscaledTime * 1.1f + 0.7f) * 2.3f, Mathf.Sin(unscaledTime * 1.35f + 0.2f) * 3.2f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/HairSide1 R", Vector3.zero, Quaternion.Euler(0f, Mathf.Sin(unscaledTime * 1.1f + 1.9f) * -2.3f, Mathf.Sin(unscaledTime * 1.35f + 1.1f) * -3.2f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Tail 1 L", Vector3.zero, Quaternion.Euler(Mathf.Sin(unscaledTime * 0.86f + 0.5f) * 2.2f, Mathf.Sin(unscaledTime * 0.74f + 0.2f) * 4.2f, Mathf.Sin(unscaledTime * 1.18f + 0.3f) * 2.4f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Tail 2 L", Vector3.zero, Quaternion.Euler(Mathf.Sin(unscaledTime * 1.02f + 0.9f) * 2.6f, Mathf.Sin(unscaledTime * 0.92f + 0.6f) * 5f, Mathf.Sin(unscaledTime * 1.42f + 0.8f) * 3.2f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Tail 1 R", Vector3.zero, Quaternion.Euler(Mathf.Sin(unscaledTime * 0.86f + 1.6f) * 2.2f, Mathf.Sin(unscaledTime * 0.74f + 1.1f) * -4.2f, Mathf.Sin(unscaledTime * 1.18f + 1.4f) * -2.4f)); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Tail 2 R", Vector3.zero, Quaternion.Euler(Mathf.Sin(unscaledTime * 1.02f + 2f) * 2.6f, Mathf.Sin(unscaledTime * 0.92f + 1.8f) * -5f, Mathf.Sin(unscaledTime * 1.42f + 1.9f) * -3.2f)); Quaternion rotationOffset = Quaternion.Euler(num ? 9f : (num3 * 0.35f), num2 * 0.35f, 0f); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Left Eye", Vector3.zero, rotationOffset); EmpressApplyMitaPoseOffset("Scene/Mita/MitaPerson Mita/Armature/Hips/Spine/Chest/Neck2/Neck1/Head/Right Eye", Vector3.zero, rotationOffset); } } private void EmpressApplyMitaPoseOffset(string path, Vector3 positionOffset, Quaternion rotationOffset) { //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_001e: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) if (_empressMitaBonePoses.TryGetValue(path, out EmpressMitaBonePose value)) { value.Transform.localPosition = value.LocalPosition + positionOffset; value.Transform.localRotation = value.LocalRotation * rotationOffset; } } private static string EmpressParentPath(string path) { int num = path.LastIndexOf('/'); if (num < 0) { return string.Empty; } return path.Substring(0, num); } private EmpressMiSideMenuPackage? EmpressLoadPackage() { string text = Path.Combine(EmpressMiSideMenuScenePlugin.Instance.EmpressAssetRoot, "miside_menu_scene.json"); if (!File.Exists(text)) { ManualLogSource? empressLog = EmpressMiSideMenuScenePlugin.EmpressLog; if (empressLog != null) { empressLog.LogWarning((object)("Empress MiSide menu scene package is missing: " + text)); } return null; } EmpressMiSideMenuPackage empressMiSideMenuPackage = JsonConvert.DeserializeObject(File.ReadAllText(text)); if (empressMiSideMenuPackage == null) { ManualLogSource? empressLog2 = EmpressMiSideMenuScenePlugin.EmpressLog; if (empressLog2 != null) { empressLog2.LogWarning((object)"Empress MiSide menu scene package deserialized to null."); } return null; } EmpressMiSideMenuPackage empressMiSideMenuPackage2 = empressMiSideMenuPackage; if (empressMiSideMenuPackage2.nodes == null) { empressMiSideMenuPackage2.nodes = Array.Empty(); } empressMiSideMenuPackage2 = empressMiSideMenuPackage; if (empressMiSideMenuPackage2.materials == null) { empressMiSideMenuPackage2.materials = Array.Empty(); } return empressMiSideMenuPackage; } internal static bool EmpressShouldSuppressLevelMusic(LevelMusic? levelMusic) { if (!((Object)(object)levelMusic == (Object)null)) { EmpressMiSideMenuScenePlugin? instance = EmpressMiSideMenuScenePlugin.Instance; if (instance != null && instance.EmpressEnsureRuntime()._empressMenuActive) { EmpressResetLevelMusic(levelMusic); return true; } } return false; } internal static bool EmpressShouldSuppressConstantMusic(ConstantMusic? constantMusic) { if (!((Object)(object)constantMusic == (Object)null)) { EmpressMiSideMenuScenePlugin? instance = EmpressMiSideMenuScenePlugin.Instance; if (instance != null && instance.EmpressEnsureRuntime()._empressMenuActive) { ref AudioSource reference = ref EmpressConstantMusicAudioSourceRef.Invoke(constantMusic); if ((Object)(object)reference == (Object)null) { reference = ((Component)constantMusic).GetComponent(); } if ((Object)(object)reference != (Object)null && reference.isPlaying) { reference.Stop(); reference.clip = null; } EmpressConstantMusicSetupRef.Invoke(constantMusic) = false; return true; } } return false; } private static void EmpressResetLevelMusic(LevelMusic levelMusic) { ref AudioSource reference = ref EmpressLevelMusicAudioSourceRef.Invoke(levelMusic); if ((Object)(object)reference == (Object)null) { reference = ((Component)levelMusic).GetComponent(); } ref bool reference2 = ref EmpressLevelMusicActiveRef.Invoke(levelMusic); ref bool reference3 = ref EmpressLevelMusicActivePlayedRef.Invoke(levelMusic); ref bool reference4 = ref EmpressLevelMusicInterruptRef.Invoke(levelMusic); ref float reference5 = ref EmpressLevelMusicInterruptVolumeRef.Invoke(levelMusic); ref float reference6 = ref EmpressLevelMusicInterruptVolumeLerpRef.Invoke(levelMusic); ref float reference7 = ref EmpressLevelMusicCooldownTimeRef.Invoke(levelMusic); ref float reference8 = ref EmpressLevelMusicCooldownTimeMinRef.Invoke(levelMusic); reference2 = false; reference3 = false; reference4 = false; reference5 = 0f; reference6 = 0f; reference7 = Mathf.Max(reference7, reference8); if ((Object)(object)reference != (Object)null) { reference.Stop(); reference.clip = null; } } } internal sealed class EmpressAudioSourceState { private readonly bool _enabled; private readonly bool _mute; private readonly bool _wasPlaying; public EmpressAudioSourceState(AudioSource source) { _enabled = ((Behaviour)source).enabled; _mute = source.mute; _wasPlaying = source.isPlaying; } public void Restore(AudioSource source) { ((Behaviour)source).enabled = _enabled; source.mute = _mute; if (_wasPlaying && ((Behaviour)source).enabled && (Object)(object)source.clip != (Object)null) { source.UnPause(); } } } internal sealed class EmpressCameraState { private readonly CameraClearFlags _clearFlags; private readonly Color _backgroundColor; private readonly float _fieldOfView; private readonly float _nearClipPlane; private readonly float _farClipPlane; public EmpressCameraState(Camera camera) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_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) _clearFlags = camera.clearFlags; _backgroundColor = camera.backgroundColor; _fieldOfView = camera.fieldOfView; _nearClipPlane = camera.nearClipPlane; _farClipPlane = camera.farClipPlane; } public void Restore(Camera camera) { //IL_0002: 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) camera.clearFlags = _clearFlags; camera.backgroundColor = _backgroundColor; camera.fieldOfView = _fieldOfView; camera.nearClipPlane = _nearClipPlane; camera.farClipPlane = _farClipPlane; } } internal sealed class EmpressMitaBonePose { public Transform Transform { get; } public Vector3 LocalPosition { get; } public Quaternion LocalRotation { get; } public EmpressMitaBonePose(Transform transformNode) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) Transform = transformNode; LocalPosition = transformNode.localPosition; LocalRotation = transformNode.localRotation; } } [Serializable] internal sealed class EmpressMiSideMenuPackage { public string rootName = string.Empty; public string musicFile = string.Empty; public EmpressMiSideMenuNodeData[]? nodes = Array.Empty(); public EmpressMiSideMenuMaterialData[]? materials = Array.Empty(); } [Serializable] internal sealed class EmpressMiSideMenuNodeData { public string name = string.Empty; public string path = string.Empty; public bool active = true; public EmpressVector3Data localPosition = new EmpressVector3Data(); public EmpressQuaternionData localRotation = new EmpressQuaternionData(); public EmpressVector3Data localScale = new EmpressVector3Data { x = 1f, y = 1f, z = 1f }; public EmpressMiSideMenuMeshRendererData? meshRenderer; public EmpressMiSideMenuSkinnedRendererData? skinnedRenderer; public EmpressMiSideMenuLightData? light; public EmpressMiSideMenuCameraData? cameraAnchor; } [Serializable] internal sealed class EmpressMiSideMenuMeshRendererData { public string meshFile = string.Empty; public int[] materials = Array.Empty(); } [Serializable] internal sealed class EmpressMiSideMenuSkinnedRendererData { public string meshFile = string.Empty; public int[] materials = Array.Empty(); public string rootBone = string.Empty; public string[] bones = Array.Empty(); } [Serializable] internal sealed class EmpressMiSideMenuMaterialData { public string name = string.Empty; public string mainTexture = string.Empty; public string emissionTexture = string.Empty; public EmpressColorData color = new EmpressColorData(); public bool transparent; public bool cutout; } [Serializable] internal sealed class EmpressMiSideMenuLightData { public int type; public float range; public float spotAngle; public float intensity; public EmpressColorData color = new EmpressColorData(); } [Serializable] internal sealed class EmpressMiSideMenuCameraData { public float fieldOfView = 60f; public EmpressColorData backgroundColor = new EmpressColorData(); public float nearClip = 0.01f; public float farClip = 1000f; } [Serializable] internal sealed class EmpressVector3Data { public float x; public float y; public float z; public Vector3 EmpressToVector3() { //IL_0012: Unknown result type (might be due to invalid IL or missing references) return new Vector3(x, y, z); } } [Serializable] internal sealed class EmpressQuaternionData { public float x; public float y; public float z; public float w = 1f; public Quaternion EmpressToQuaternion() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) return new Quaternion(x, y, z, w); } } [Serializable] internal sealed class EmpressColorData { public float r = 1f; public float g = 1f; public float b = 1f; public float a = 1f; public Color EmpressToColor() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) return new Color(r, g, b, a); } } }