BITKit/Packages/Runtime~/Unity/ECS/IdComponentConvert.cs

45 lines
982 B
C#

using System.Collections;
using System.Collections.Generic;
using BITKit;
using Unity.Entities;
using UnityEngine;
public interface IdProvider
{
ulong Id { get; }
}
[System.Serializable]
public struct IdComponent:IComponentData
{
public ulong Id;
}
[System.Serializable]
public struct ConstId:IdProvider
{
[SerializeField]
private ulong Id;
ulong IdProvider.Id => Id;
}
[System.Serializable]
public struct GetIdFromInstanceId : IdProvider
{
[SerializeField] private GameObject gameObject;
ulong IdProvider.Id => (ulong)gameObject.GetInstanceID();
}
public class IdComponentConvert : MonoBehaviour,ICovertToEntity
{
[SerializeField, SerializeReference, SubclassSelector]
private IdProvider provider;
public void CovertToEntity(EntityManager entityManager, Entity entity)
{
var component = new IdComponent()
{
Id = provider.Id,
};
entityManager.AddComponentData(entity, component);
}
}