Files
FlaxEngine/Source/Editor/Progress/Handlers/BakeEnvProbesProgress.cs
2023-01-10 15:29:37 +01:00

58 lines
1.6 KiB
C#

// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
using FlaxEngine;
namespace FlaxEditor.Progress.Handlers
{
/// <summary>
/// Environment probes baking progress reporting handler.
/// </summary>
/// <seealso cref="FlaxEditor.Progress.ProgressHandler" />
public sealed class BakeEnvProbesProgress : ProgressHandler
{
private int _entriesDone;
private int _entriesTotal;
/// <summary>
/// Initializes a new instance of the <see cref="BakeEnvProbesProgress"/> class.
/// </summary>
public BakeEnvProbesProgress()
{
Editor.EnvProbeBakeStart += OnEnvProbeBakeStart;
Editor.EnvProbeBakeEnd += OnEnvProbeBakeEnd;
}
private void OnEnvProbeBakeStart(EnvironmentProbe environmentProbe)
{
// Check for start event
if (_entriesTotal == 0)
{
_entriesDone = 0;
OnStart();
}
_entriesTotal++;
UpdateProgress();
}
private void OnEnvProbeBakeEnd(EnvironmentProbe environmentProbe)
{
_entriesDone++;
UpdateProgress();
// Check for end event
if (_entriesDone >= _entriesTotal)
{
_entriesTotal = _entriesDone = 0;
OnEnd();
}
}
private void UpdateProgress()
{
float progress = (float)_entriesDone / _entriesTotal;
OnUpdate(progress, "Baking environment probes...");
}
}
}