Namespace Eco.Core.Systems
Classes
GeneratedRegistrar<T>
Implementation of Registrar<T> for registrars generated in runtime. Works in pair with GeneratedRegistrarWrapper<TContained>.
GeneratedRegistrarWrapper<TContained>
A generated registrar is one whose data is created entirely dynamically, but then stored as an ID. It wraps a regular registrar, allowing it to save references and get the usual registrar benefits (linking, etc) It functions by only saving names->IDs, and fixing up on load. This allows us to use regular reference serialization (ie, you can store references to Tags instead of some TagHandle class), as well as makes the storage of tags a direct reference when running, and simply an int ID otherwise. We make this a templated class so we have separate statics for each type that implements it (a trick to allow us to have serialization and static data in a single structure).
GlobalRef<T>
GlobalRefBase
IHasIDExtensions
Registrar<T>
A registrar stores things of a single type that are accessible via an ID or via a name. Types that are stored in a registrar must have a private constructor, only the registrar is allowed to construct them so that the ID stays assigned and tracked properly.
RegistrarConstants
Registrars
UniversalIDs
Management of objects with a universal id. Tracks them and allows finding by ID.
Interfaces
ICategorizedEntry
IHasID
IHasReferenceableSerializableID
Marker interface for objects with serializable universal ID which may be serialized by reference (like IHasID). These objects by default serialized by reference and need to use ForceSerializeFullObjectAttribute for full object serialization.
IHasSerializableID
If an object needs to have its ID serialized, it must inherit from this instead.
IHasUniversalID
For any object that needs to be referenced by the client and/or server.
INamed
IParentedEntry
IRegistrar
Interface allowing to have untyped access to Registrar<T>.