76 lines
2.4 KiB
C#
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);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|