- Add IModule interface, contains static interface
methods to get its path and dependencies
- ModuleGenerator generates the implementation
- Universe.Modules.Register now expects an IModule
- Replace ModuleInfo with generic version
- Remove GetModulePath helper method
- Add IModuleAutoRegisterComponents interface
- Add gaemstone.SourceGen project which (currently)
generates a method to automatically register a
module's compiles.
- Get rid of RegisterNestedType (which has been replaced)
and code to handle static (Flecs built-in) modules.
- Split Attributes into Module+Attributes and +Components
"Components" is for attributes that define components
"Attributes" are for other attributes that can be added
- Split core ECS wrapper into gaemstone.ECS project
- Module loading part of gaemstone, still
- Remove ComponentHooks (for now)
- Fix IL for nullable references in IterActionGenerator
- Move from Silk.NET.Maths to System.Numerics
- Add Flecs.Core.Component and .Identifier
- Add Flecs.Doc module
- Add gaemstone.Doc module
- Add [Symbol] to register entities with symbols
This decision will probably be reversed.
- World generator picks random blocks, more color!
Changes relating to ImGui:
- Use custom ImGUI.NET version with local changes to get
access to internal functions. Currently waiting for
upstream to implement this functionality.
- Add font support, and the fonts OpenSans and ForkAwesome
- Add an entity inspector window to browse entities, see
their contents and find references to other entities.
- Update LangVersion to "preview", which allows us
to use the generic attributes feature from C# 11
- Any attribute implementing ICreateEntityAttribute
now registers an entity for the marked type
- [Proxy<T>] registers type not owned by the module
- [Add<TEntity>] and [Add<TRelation, TTarget>]
which will call EntityBuilder.Set(...) on registration
- A number of shorthand attributes for [Add<...>]
- Re-introduce [Singleton]
- IterActionGenerator has been cleaned up a bit ..
- .. and as a result now supports queries, which don't
by design don't match any (non-sourced) entities
- Add [DependsOn] to modules that were missing them
- EntityPath now operates on an array of UTF8 strings
- EntityBuilder.Build, Lookup, ... use separator-less API
- Multiple TempAllocators can be acquired nested
- Add Identifier.RelationUnsafe and .TargetUnsafe
- Identifier(Ref).AsPair returns nullable
- Throw when adding > 31 IDs to EntityBuilder
- Add static Entity.None field, represents default value
- Add Entity.IsSome property, opposite of IsNone
- EntityBase.Add(string) now looks up symbol