using System; using ADOFAIRenderer; using ADOFAIRenderer.Core; using ADOFAIRenderer.Core.Data; using ADOFAIRenderer.UI; using FFmpeg.AutoGen; using MelonLoader; using MelonLoader.Utils; using UnityEngine; using Object = UnityEngine.Object; [assembly: MelonInfo(typeof(RenderMod), "ADOFAI Renderer", "0.2.5-INDEV", "ADOFAI Editor Forum")] [assembly: MelonGame("7th Beat Games", "A Dance of Fire and Ice")] namespace ADOFAIRenderer; internal class RenderMod : MelonMod { // ReSharper disable once MemberCanBePrivate.Global public static bool IsFeatureDisabled = false; public static DateTime ExpirationTime = new(2026, 11, 21, 0, 0, 0, DateTimeKind.Utc); public override void OnInitializeMelon() { GlobalSettings.Load(); Localization.LocalizationManager.Initialize(); ffmpeg.RootPath = MelonEnvironment.UserLibsDirectory; var renderManagerObj = new GameObject("Render Manager"); var updateHookerObj = new GameObject("Update Hooker"); var uiManagerObj = new GameObject("Renderer UI Manager"); Object.DontDestroyOnLoad(renderManagerObj); Object.DontDestroyOnLoad(updateHookerObj); Object.DontDestroyOnLoad(uiManagerObj); renderManagerObj.AddComponent(); updateHookerObj.AddComponent(); uiManagerObj.AddComponent(); ModAssets.Load(); } public override void OnApplicationQuit() { if (RenderManager.Instance == null) return; Melon.Logger.Msg("MelonLoader shutdown detected: Forcefully terminating and cleaning up active RenderManager processes."); RenderManager.Instance.CleanUpActiveRender(); } }