SHA256
Improve RenderManager Object Structure
This commit is contained in:
1 parent
0a798de45c
commit
d4b9e4b89c
10 files changed
+130
-108
No files matched your search
+16
-13
@@ -86,18 +86,18 @@ namespace ADOFAIRenderer
|
||||
{
|
||||
if (SkipCount < 60)
|
||||
{
|
||||
Melon<RenderMod>.Logger.Warning($"[Render Skipped] Frame {RenderManager.FrameCount} rendering missed. Retrying... (Attempt {SkipCount + 1}/60)");
|
||||
Melon<RenderMod>.Logger.Warning($"[Render Skipped] Frame {RenderManager.Instance.frameCount} rendering missed. Retrying... (Attempt {SkipCount + 1}/60)");
|
||||
SkipCount++;
|
||||
Time.timeScale = 0f; // 진행 시간 멈추기 (재시도)
|
||||
return; // 업데이트 진행하지 않고 대기
|
||||
}
|
||||
|
||||
// 60회 초과 시 최후의 블랙 프레임 삽입하여 전체 파이프라인 마비 방지
|
||||
Melon<RenderMod>.Logger.Error($"[Render Skipped] Frame {RenderManager.FrameCount} rendering failed after 60 retries. Supplying black frame.");
|
||||
Melon<RenderMod>.Logger.Error($"[Render Skipped] Frame {RenderManager.Instance.frameCount} rendering failed after 60 retries. Supplying black frame.");
|
||||
|
||||
var currentFrame = FrameCountForVideo++;
|
||||
var targetFps = RenderManager.Configuration.TargetFPS;
|
||||
var videoFps = RenderManager.Configuration.VideoFPS;
|
||||
var targetFps = RenderManager.Instance.Configuration.TargetFPS;
|
||||
var videoFps = RenderManager.Instance.Configuration.VideoFPS;
|
||||
var effectiveVideoFps = Math.Min(videoFps, targetFps);
|
||||
var videoFrameIndex = (long)(currentFrame * effectiveVideoFps / targetFps);
|
||||
|
||||
@@ -106,13 +106,13 @@ namespace ADOFAIRenderer
|
||||
LastVideoFrameIndex = videoFrameIndex;
|
||||
LastRequestedVideoFrameIndex = videoFrameIndex;
|
||||
|
||||
var byteSize = RenderManager.Configuration.RenderWidth * RenderManager.Configuration.RenderHeight * 4;
|
||||
var byteSize = RenderManager.Instance.Configuration.RenderWidth * RenderManager.Instance.Configuration.RenderHeight * 4;
|
||||
var blackFrame = System.Buffers.ArrayPool<byte>.Shared.Rent(byteSize);
|
||||
Array.Clear(blackFrame, 0, byteSize);
|
||||
|
||||
lock (RenderManager.ImageQueue)
|
||||
lock (RenderManager.Instance.ImageQueue)
|
||||
{
|
||||
RenderManager.ImageQueue[videoFrameIndex] = blackFrame;
|
||||
RenderManager.Instance.ImageQueue[videoFrameIndex] = blackFrame;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -121,7 +121,7 @@ namespace ADOFAIRenderer
|
||||
|
||||
SkipCount = 0;
|
||||
RenderCheck = true; // 다음 프레임 검사용으로 초기화
|
||||
RenderManager.FrameCount++;
|
||||
RenderManager.Instance.frameCount++;
|
||||
|
||||
if (realDeltaTime > 0)
|
||||
{
|
||||
@@ -150,9 +150,9 @@ namespace ADOFAIRenderer
|
||||
while (IsCapturing && IsRendering)
|
||||
{
|
||||
int count;
|
||||
lock (RenderManager.ImageQueue)
|
||||
lock (RenderManager.Instance.ImageQueue)
|
||||
{
|
||||
count = RenderManager.ImageQueue.Count;
|
||||
count = RenderManager.Instance.ImageQueue.Count;
|
||||
}
|
||||
|
||||
if (count <= maxQueuedFrames) break;
|
||||
@@ -168,8 +168,8 @@ namespace ADOFAIRenderer
|
||||
|
||||
var currentFrame = FrameCountForVideo++;
|
||||
|
||||
var targetFps = RenderManager.Configuration.TargetFPS;
|
||||
var videoFps = RenderManager.Configuration.VideoFPS;
|
||||
var targetFps = RenderManager.Instance.Configuration.TargetFPS;
|
||||
var videoFps = RenderManager.Instance.Configuration.VideoFPS;
|
||||
var effectiveVideoFps = Math.Min(videoFps, targetFps);
|
||||
|
||||
var videoFrameIndex = (long)(currentFrame * effectiveVideoFps / targetFps);
|
||||
@@ -227,7 +227,10 @@ namespace ADOFAIRenderer
|
||||
return;
|
||||
}
|
||||
|
||||
RenderManager.LevelPath = ADOBase.levelPath;
|
||||
if (RenderManager.Instance)
|
||||
{
|
||||
RenderManager.Instance.levelPath = ADOBase.levelPath;
|
||||
}
|
||||
|
||||
scnEditor.instance.CheckUnsavedChanges(() =>
|
||||
{
|
||||
|
||||
Reference in new issue
Block a user