1
0
forked from akanyan/mu3-mods

fix: various fixes

This commit is contained in:
2024-07-12 08:14:06 +09:00
parent 26fffefbae
commit c349854cb0
9 changed files with 87 additions and 22 deletions

View File

@ -1,11 +1,26 @@
using MU3.Game;
using MU3.Sys;
using MU3.Util;
namespace MU3.Notes;
class patch_NotesManager: NotesManager {
private float _frame;
private float _frameReal;
private bool _altMode;
public extern void orig_initialize(SessionInfo sessionInfo);
public new void initialize(SessionInfo sessionInfo) {
orig_initialize(sessionInfo);
var cfg = (patch_Config)Singleton<Sys.System>.instance.config;
_altMode = cfg.isVsync || (cfg.framerate != 60);
}
private extern void orig_progressFrameAndFrameReal();
private void progressFrameAndFrameReal() {
_frame = _frameReal;
if(_altMode) {
_frame = _frameReal;
} else {
orig_progressFrameAndFrameReal();
}
}
}

View File

@ -4,18 +4,31 @@ namespace MU3.Sys;
class patch_Config: Config {
public extern void orig_initialize();
public int framerate { get; private set; }
public bool isVsync { get; private set; }
public new void initialize() {
orig_initialize();
using IniFile iniFile = new("mu3.ini");
if(iniFile.getIntValue("Video", "VSync", 0) != 0) {
framerate = iniFile.getIntValue("Video", "Framerate", -1);
isVsync = iniFile.getValue("Video", "VSync", false);
if(isVsync) {
QualitySettings.vSyncCount = 1;
framerate = -1;
Debug.Log("[UnlockFrameRate] VSync on");
} else {
Application.targetFrameRate = iniFile.getIntValue("Video", "Framerate", 60);
Debug.Log("[UnlockFrameRate] Framerate lock: " + Application.targetFrameRate);
Application.targetFrameRate = framerate;
QualitySettings.vSyncCount = 0;
if(framerate == 60) {
Debug.Log("[UnlockFrameRate] Framerate locked to 60 (vanilla)");
} else if(framerate == -1) {
Debug.Log("[UnlockFrameRate] Framerate unlocked)");
} else {
Debug.Log("[UnlockFrameRate] Framerate locked to " + framerate);
}
}
}
}

View File

@ -1,20 +1,29 @@
using MU3.Util;
namespace MU3.Sys;
class patch_Time: Time {
private static bool _init;
private static float _deltaTime;
private static float _adjustAccumlation;
private static float _realtimeSinceStartup;
private static bool _altMode;
public extern static void orig_update();
public static new void update() {
if(!_init) {
_deltaTime = UnityEngine.Time.deltaTime;
_adjustAccumlation = 0f;
_realtimeSinceStartup = UnityEngine.Time.realtimeSinceStartup;
var cfg = (patch_Config)Singleton<Sys.System>.instance.config;
_altMode = cfg.isVsync || (cfg.framerate != 60);
_init = true;
}
_deltaTime = UnityEngine.Time.deltaTime;
_realtimeSinceStartup = UnityEngine.Time.realtimeSinceStartup;
if(_altMode) {
_deltaTime = UnityEngine.Time.deltaTime;
_realtimeSinceStartup = UnityEngine.Time.realtimeSinceStartup;
} else {
orig_update();
}
}
}