study/first_study/Library/PackageCache/com.unity.collab-proxy@1ec4e416a4af/Editor/UI/DelayedActionByFramesRunner.cs
jh04010421 739d49f1a0 Unity | 2026.01.20
수업 실습 파일
2026-01-20 11:01:57 +09:00

73 lines
1.4 KiB
C#

using System;
using UnityEditor;
namespace Unity.PlasticSCM.Editor.UI
{
internal class DelayedActionByFramesRunner
{
internal static bool IsUnitTesting { get; set; }
internal bool IsRunning { get { return mIsOnDelay; } }
internal DelayedActionByFramesRunner(Action action, int delayFrames)
{
mAction = action;
mDelayFrames = delayFrames;
}
internal void Run()
{
if (IsUnitTesting)
{
mAction();
return;
}
if (mIsOnDelay)
{
RefreshDelay();
return;
}
StartDelay();
}
void RefreshDelay()
{
mFramesOnDelay = mDelayFrames;
}
void StartDelay()
{
mIsOnDelay = true;
EditorApplication.update += OnUpdate;
RefreshDelay();
}
void EndDelay()
{
mIsOnDelay = false;
EditorApplication.update -= OnUpdate;
mAction();
}
void OnUpdate()
{
mFramesOnDelay--;
if (mFramesOnDelay <= 0)
EndDelay();
}
bool mIsOnDelay;
int mFramesOnDelay;
readonly int mDelayFrames;
readonly Action mAction;
}
}