You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
687 B
30 lines
687 B
using Unity.Burst; |
|
|
|
namespace GameCore.TinyECS |
|
{ |
|
internal static class ComponentIdHelper |
|
{ |
|
public static int currentId; |
|
} |
|
|
|
public struct ComponentId<T> |
|
{ |
|
public int id; |
|
public static readonly SharedStatic<ComponentId<T>> Instance = SharedStatic<ComponentId<T>>.GetOrCreate<ComponentId<T>>(); |
|
|
|
[BurstDiscard] |
|
static void EnsureInitialized() |
|
{ |
|
if (Instance.Data.id == 0) |
|
{ |
|
Instance.Data.id = ++ComponentIdHelper.currentId; |
|
} |
|
} |
|
|
|
public static int Get() |
|
{ |
|
EnsureInitialized(); |
|
return Instance.Data.id; |
|
} |
|
} |
|
} |