From 8398bf5f1214d1d2a3a170d1b8e3a6bfd69fcf15 Mon Sep 17 00:00:00 2001 From: davud Date: Sun, 23 Aug 2026 13:16:26 +0200 Subject: [PATCH] feat: prefab loader --- IngameReveries/IngameReveries.cs | 57 ++++++++++++++++++++++++++++ IngameReveries/IngameReveries.csproj | 10 ++++- 2 files changed, 66 insertions(+), 1 deletion(-) diff --git a/IngameReveries/IngameReveries.cs b/IngameReveries/IngameReveries.cs index 1a1aee8..1b3a807 100644 --- a/IngameReveries/IngameReveries.cs +++ b/IngameReveries/IngameReveries.cs @@ -1,4 +1,5 @@ using System.IO; +using System.Linq; using UnityEngine; using UnityEngine.SceneManagement; @@ -10,6 +11,9 @@ namespace IngameReveries public class IngameReveries : ModBehaviour { private GameObject _ingameReveriesUI; + + private AssetBundle _reveriesBundle; + private GameObject _reveriesPrefab; private void Awake() { @@ -23,6 +27,8 @@ namespace IngameReveries private void Start() { + InitializeAssets(); + SceneManager.sceneLoaded += (scene, mode) => { // Check if UI already instantiated @@ -58,5 +64,56 @@ namespace IngameReveries Debug.Log("Good bye! " + mod.metadata.id); harmony.UnpatchAll(); } + + private void InitializeAssets() + { + string bundlePath = Path.Combine(mod.path, "assets", "bundle"); + + if (!File.Exists(bundlePath)) + { + Debug.LogError($"[IngameReveries] Bundle not found at: {bundlePath}"); + return; + } + + _reveriesBundle = AssetBundle.GetAllLoadedAssetBundles() + .FirstOrDefault(b => b.name == "logosteal" || b.mainAsset != null); + + if (_reveriesBundle == null) + { + // If it isn't loaded yet, load it from disk + Debug.Log("[IngameReveries] Loading Bundle"); + _reveriesBundle = AssetBundle.LoadFromFile(bundlePath); + } + else + { + Debug.Log("[IngameReveries] Bundle already loaded"); + } + + if (_reveriesBundle == null) + { + Debug.LogError("[IngameReveries] Failed to load AssetBundle!"); + return; + } + + // Load the prefab from the bundle + string assetName = _reveriesBundle.GetAllAssetNames().First(); + _reveriesPrefab = _reveriesBundle.LoadAsset(assetName); + + if (_reveriesPrefab == null) + { + Debug.LogError("[IngameReveries] Failed to load prefab!"); + + // List what's in the bundle for debugging + string[] assetNames = _reveriesBundle.GetAllAssetNames(); + Debug.Log("[IngameReveries] Assets in bundle:"); + foreach (string name in assetNames) + { + Debug.Log($" - {name}"); + } + return; + } + + Debug.Log("[IngameReveries] Successfully loaded prefab!"); + } } } \ No newline at end of file diff --git a/IngameReveries/IngameReveries.csproj b/IngameReveries/IngameReveries.csproj index 38c5eb7..bfa6ee0 100644 --- a/IngameReveries/IngameReveries.csproj +++ b/IngameReveries/IngameReveries.csproj @@ -219,6 +219,10 @@ $(GameManagedDir)\Unity.VisualEffectGraph.Runtime.dll False + + $(GameManagedDir)\UnityEngine.AssetBundleModule.dll + False + $(GameManagedDir)\UnityEngine.CoreModule.dll False @@ -277,7 +281,11 @@ + + + + - + \ No newline at end of file