- Rename `gaemstone.ECS` namespace inside
of the main project to just `gaemstone`
- Rename `gaemstone.Flecs` to just `flecs`
- All built-in Flecs modules are now lower-case
- Add flecs.core.Observer tag
- Add flecs.system.System tag
- Create a minimal Flecs world (no default addon module imports)
- Wrap all the official Flecs addon modules as [BuiltIn] modules
- Add IModuleImport for [BuiltIn] modules
- Rename IModuleInitializer to IModuleLifetime
- Rename IModule.Initialize to .OnEnable
- Overhaul ModuleManager to use entities and rules
- Use ModuleManager.Import for built-in modules
- Add gaemstone.Doc.Tag to represent tag-like components
- Overhaul EntityInspector to use new features
- Update to new gaemstone.ECS' new handling of
generic context with World<T>, Entity<T>, etc
- Completely rewrite the source generator
- Remove AutoAdd from [Singleton]
[Add<Flecs.Core.Disabled>] can be used instead
- Replace some term attributes with generics
For example, "[Has] T foo" is now "Has<T> foo"
- Move some Flecs types into Flecs.Core
- Remove IL generator related code
- Remove [Game] attribute and entity
- Turn Canvas and GameWindow into singletons
- Probably some stuff I forgot
- 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
Add EntityPath class, wraps a UTF8 string in-memory
which represents an entity path within flecs' hierarchy.
- Path separator is now forward-slash instead of dot
- Only unicode letters, numbers, dot, dash and underscore
are valid characters to use for an entity name
Add IAllocator interface and implementations, which
handle unmanaged allocations (i.e. for use with interop).
- ToFlecs methods now use an IAllocator passed to them
- Use TempAllocator (one per thread) to allocate flecs structs
Add basic ECS-based resource handling / loading.
- Resources now loads from any assembly, including
EntityPaths that represents an assembly + resource path
- TextureManaged has been rewritten, others will follow
- Move default shaders to gaemstone.Client