UnityGame/Library/PackageCache/com.unity.collections/Unity.Collections/Jobs/EarlyInitHelpers.cs
2024-10-27 10:53:47 +03:00

76 lines
2.4 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
namespace Unity.Jobs
{
/// <summary>
/// Used by automatically generated code. Do not use in projects.
/// </summary>
public class EarlyInitHelpers
{
/// <summary>
/// Used by automatically generated code. Do not use in projects.
/// Delegate used for early initialization
/// </summary>
public delegate void EarlyInitFunction();
private static List<EarlyInitFunction> s_PendingDelegates;
static EarlyInitHelpers()
{
FlushEarlyInits();
}
/// <summary>
/// Used by automatically generated code. Do not use in projects.
/// Calls all EarlyInit delegates and clears the invocation list
/// </summary>
public static void FlushEarlyInits()
{
while (s_PendingDelegates != null)
{
var oldList = s_PendingDelegates;
s_PendingDelegates = null;
for (int i = 0; i < oldList.Count; ++i)
{
try
{
oldList[i]();
}
catch (Exception ex)
{
Debug.LogException(ex);
}
}
}
}
/// <summary>
/// Used by automatically generated code. Do not use in projects.
/// Adds an EarlyInit helper function to invocation list.
/// </summary>
/// <param name="func">EarlyInitFunction add to early call list</param>
public static void AddEarlyInitFunction(EarlyInitFunction func)
{
if (s_PendingDelegates == null)
s_PendingDelegates = new List<EarlyInitFunction>();
s_PendingDelegates.Add(func);
}
/// <summary>
/// Used by automatically generated code. Do not use in projects.
/// This methods is called when JobReflectionData cannot be created during EarlyInit.
/// </summary>
/// <param name="ex">Exception type to throw</param>
public static void JobReflectionDataCreationFailed(Exception ex)
{
Debug.LogError($"Failed to create job reflection data. Please refer to callstack of exception for information on which job could not produce its reflection data.");
Debug.LogException(ex);
}
}
}