using Svelto.DataStructures; namespace Svelto.ECS.Experimental { public struct ECSResources { internal uint id; public static implicit operator T(ECSResources ecsString) { return ResourcesECSDB.FromECS(ecsString.id); } } static class ResourcesECSDB { static readonly FasterList _resources = new FasterList(); internal static ref T resources(uint id) { return ref _resources[(int) id - 1]; } internal static uint ToECS(T resource) { _resources.Add(resource); return (uint)_resources.Count; } public static T FromECS(uint id) { if (id - 1 < _resources.Count) return _resources[(int) id - 1]; return default; } } public static class ResourceExtensions { public static void Set(ref this ECSResources resource, T newText) { if (resource.id != 0) ResourcesECSDB.resources(resource.id) = newText; else resource.id = ResourcesECSDB.ToECS(newText); } } }