Ejemplo n.º 1
0
        public static void PrepareOverlay()
        {
            var scoreOverlay  = new Il2CppSystem.IO.MemoryStream(AudicaModding.Properties.Resources.scoreoverlay);
            var overlayBundle = Il2CppAssetBundleManager.LoadFromStream(scoreOverlay);

            //var overlayBundle = Il2CppAssetBundleManager.LoadFromFile(Utility.overlayPath);
            if (overlayBundle == null)
            {
                MelonLogger.Log("Failed to load overlay asset, make sure you have installed the mod properly.");
            }
            overlay            = GameObject.Instantiate <GameObject>(overlayBundle.LoadAsset("Assets/ScoreOverlay/ScoreOverlay.prefab").Cast <GameObject>());
            overlay.hideFlags |= HideFlags.DontUnloadUnusedAsset;
            GameObject.DontDestroyOnLoad(overlay);
            overlay.GetComponent <Canvas>().worldCamera = Camera.current;
            overlay.SetActive(true);
        }
        private static void Initialize()
        {
            #region [AssetBundle Loading - Put the AssetBundles folder in the Game root folder!]

            if (testAssetBundle == null)
            {
                if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\AssetBundles\\testassetbundle"))
                {
                    log.LogMessage(" ");
                    log.LogMessage("Trying to Load AssetBundle...");
                    testAssetBundle = Il2CppAssetBundleManager.LoadFromFile(AppDomain.CurrentDomain.BaseDirectory + "\\AssetBundles\\testassetbundle");
                    if (testAssetBundle == null)
                    {
                        log.LogMessage("AssetBundle Failed to Load!"); return;
                    }

                    #region [Print out asset names/paths]

                    log.LogMessage("Assets:");
                    foreach (var asset in testAssetBundle.AllAssetNames())
                    {
                        log.LogMessage("   Asset Name: " + asset.ToString());
                    }

                    #endregion

                    #region [Test Loading a prefab and instantiating it]

                    /*
                     *
                     * // NOTE: There's currently a error in Unhollower that throws a NullReference exception, but the object and components DO get instantiated
                     * // but the prefab doesn't display. It and it's components are running though.
                     *
                     * log.LogMessage("Trying to Load Prefab...");
                     *
                     * var prefab = testAssetBundle.LoadAsset<GameObject>("SOME PREFAB ASSET");
                     * if (prefab != null)
                     * {
                     *  log.LogMessage("Asset Loaded!");
                     *
                     *  // Instantiate the object
                     *  log.LogMessage("Trying to Instantiate Prefab...");
                     *  var t = Instantiate(prefab, new Vector3(0f, 0f), Quaternion.identity);
                     *  if (t != null) { log.LogMessage("Prefab Instantiated! Position: " + t.transform.position.ToString()); } else { log.LogMessage("Failed to Instantiated Prefab!"); }
                     *
                     #region[Test adding a custom component and make sure it works]
                     *//*
                     *  if (t != null)
                     *  {
                     *      log.LogMessage("Test adding a custom component and make sure it works");
                     *      var type = UnhollowerRuntimeLib.Il2CppType.Of<WindowDragHandler>();
                     *      comp = t.AddComponent(type).Cast<WindowDragHandler>();
                     *      log.LogMessage("Component testBool: " + comp.testBool.ToString());
                     *  }
                     *//*
                     #endregion
                     * }
                     * else { log.LogMessage("Failed to Load Asset!"); }
                     */
                    #endregion

                    log.LogMessage("Complete!");
                }
                else
                {
                    log.LogWarning("Skipping AssetBundle Loading - testassetBundle Doesn't Exist at: " + AppDomain.CurrentDomain.BaseDirectory + "\\AssetBundles\\testassetbundle");
                    log.LogWarning("Make sure the 'AssetBundles' folder from the Git Repo exists in the Game's root folder!");
                }
            }

            #endregion

            // Create a uGUI UI
            instance.CreateUI();

            #region [Display HotKeys]

            log.LogMessage(" ");
            log.LogMessage("HotKeys:");
            log.LogMessage("   Shift+Delete = Enable/Disable Option Toggle");
            log.LogMessage("   Keypress + optionToggle = Display Mouse/World/Viewport Positions for Debugging");
            log.LogMessage("   A = Dump All Scene's Objects (w/ optionToggle True prints components also)");
            log.LogMessage("   R = Dump Current Scene's Root Objects w/ Values (w/ optionToggle True prints components also)");
            log.LogMessage("   S = Display Scene Details");
            log.LogMessage("   U = Test Creating UI Elements");
            log.LogMessage("   X = Dump Objects to XML (w/ optionToggle uses FindObjectsOfType<>() (Finds more, but loss of Hierarchy)");
            log.LogMessage("   T = Toggle GUI GameObject Tooltip w/ optionToggle (Drag mouse around while holding down mouse button)");
            log.LogMessage("   Tab = Test Unity MonoBehavior Events");
            log.LogMessage(" ");

            #endregion

            initialized = true;
        }