Releases: Anders429/brood
Releases · Anders429/brood
v0.9.1
v0.9.0
Changed
resource::ContainsViews
now only requires a single generic parameter for indices.World::view_resources()
now only requires a single generic parameter for indices.registry::ContainsEntity
now only requires a single generic parameter for indices.World::insert()
now only requires a single generic parameter for indices.registry::ContainsEntities
now only requires a single generic parameter for indices.World::extend()
now only requires a single generic parameter for indices.World::insert()
no longer requiresE
to implementEntity
.World::extend()
no longer requiresE
to implementEntities
.World::query()
andWorld::par_query()
both no longer requireV
andF
to implementFilter
.registry::ContainsQuery
now only requires a single generic parameter for indices.registry::ContainsParQuery
now only requires a single generic parameter for indices.registry::ContainsViews
now only requires a single generic parameter for indices.World::query()
now only requires a single parameter for query indices.Entry::query()
now only requires a single parameter for query indices.World::run_system()
now only requires a single parameter for query indices.World::run_par_system()
now only requires a single parameter for query indices.World::run_schedule()
now only requires a single parameter for query indices.query::view::Disjoint
now only requires a single parameter for indices.System::run()
now takes the results iterator as a generic parameterI
to simplify the interface.ParSystem::run()
now takes the results parallel iterator as a generic parameterI
to simplify the interface.System
andParSystem
both no longer requireFilter
andViews
to implementFilter
.result::Iter
no longer requiresV
andF
to implementFilter
.Entry::query()
no longer requiresV
andF
to implementFilter
.system::schedule::Schedule
now only requires a single parameter for indices.World::run_system()
now only requires a single parameter for schedule indices.
Fixed
Schedule
s can now no longer access non-Sync
components and resources.- Multiple calls to
Entry::add()
orEntry::remove()
that change the shape of the entity now no longer accesses the wrong internal entity row, preventing potential undefined behavior.
v0.8.2
v0.8.1
v0.8.0
Added
view::ContainsFilter
trait to indicate that a filter can be expressed over a view.
Changed
query::Entry::query()
is now bound onRegistry
implementingContainsViews<Views>
over the superviewViews
, instead of theSubViews
.query::Entry::query()
is now bound onViews
implementingview::ContainsFilter<Filter
.view::SubSet
is no longer required to be generic overRegistry
.
Fixed
- Entries can now be accessed from within
System::run()
andParSystem::run()
.
v0.7.0
Added
query::Entries
struct to allow access to certain component columns through anEntry
API.query::Entry
struct to allow access to an individual entity's components, respecting a restricting superset of views.view::SubSet
trait, defining oneViews
as a subset of another.view::Disjoint
trait, defining twoViews
as being non-conflicting.
Changed
- Queries can now contain an
EntryViews
parameter, specifying component columns that can be accessed through anEntry
API. query::Result
now includes anentries
field, containing aquery::Entries
struct giving entry access to the components queried withEntryViews
.System
andParSystem
now each have anEntryViews
associated type.System
andParSystem
'srun()
method now takes one argument, which is simply aquery::Result
.- Scheduling now takes into account a system's
EntryViews
when creating stages.
v0.6.1
v0.6.0
Added
resource
module containing types related to resources.resource::Resource
trait to define a type as a resource.resource::Resources
trait to define a heterogeneous list of types as a list of resources.resources!
macro to define a heterogeneous list of resources.Resources!
macro to define the type of a heterogeneous list of resources.query::Result
struct containing the result of a query on aWorld
.World::with_resources()
function to define aWorld
containing resources.World::get()
method to get an immutable reference to a resource.World::get_mut()
method to get a mutable reference to a resource.World::view_resources()
to get references to any number of resources at once.resource::Null
type which defines the end of a heterogeneous list of resources.resource::ContainsResource
trait to indicate that a heterogeneous list of resources contains a given resource.resource::ContainsViews
trait to indicate that a heterogeneous list of resource views is contained in a list of resources.resource::Debug
trait, implemented on lists of resources that implementcore::fmt::Debug
.resource::Serialize
trait, implemented on lists of resources that implementserde::Serialize
.resource::Deserialize
trait, implemented on lists of resources that implementserde::Deserialize
.
Changed
- Running a schedule now performs optimizations at run-time. Tasks that can be are now run earlier than their compile-time scheduled stage.
World::query()
andWorld::par_query()
now return aquery::Result
struct.Query
has an addedResourceViews
generic parameter to indicate the resources that should be viewed during the query.System
andParSystem
now have aResourceViews
associated type to indicate the resources that should be viewed when the system is run.System::run()
andParSystem::run()
have a newSelf::ViewResources
parameter to allow accessing those resources during execution.- Scheduling multiple systems now accounts for
ResourceViews
alongside componentViews
when creating stages. - The
Debug
implementation onWorld
now requires theWorld
's resources to implementresource::Debug
. - The
Serialize
andDeserialize
implementations onWorld
now requireWorld
's resources to implementresource::Serialize
andresource::Deserialize
, respectively. - The
Clone
,Default
,PartialEq
,Eq
,Send
, andSync
implementations onWorld
now require theWorld's
resources to implement those same traits.
v0.5.0
v0.4.0
Added
Debug
,Eq
,PartialEq
,Serialize
, andDeserialize
traits are added to theregistry
module.schedule!
macro for defining a schedule.Schedule!
macro for defining the type of a schedule.schedule::task
module for defining tasks that make up schedules.Clone
implementation forWorld
.
Changed
Send
andSync
implementations ofWorld
now only require the registry to implementRegistry + Send
andRegistry + Sync
respectively.- Lifetime in
System
andParSystem
traits has been moved to theViews
associated type. - The generic lifetimes on the
system::schedule::RawTask
andsystem::Stages
traits have been removed. Registry
is now explicitly bound to thestatic
lifetime. This was previously only implicit, withRegistry
s being made ofComponent
s which were bound to'static
.- Both
System
andParSystem
no longer require a lifetime bound on theRegistry
R
in theirrun()
methods. Schedule
has been changed from astruct
to atrait
.- Schedules now have their stages defined at compile-time.
registry!
macro has been renamed toRegistry!
to indicate that it is intended to be a type-level macro.views!
macro has been renamed toViews!
to indicate that it is intended to be a type-level macro.
Removed
system::Null
is removed, since it is no longer needed for defining aSchedule
.schedule::Builder
is removed, since it is no longer needed for defining aSchedule
.- The
schedule::raw_task
module has been removed. There is now no distinction between a raw task and a regular task. - The
schedule::stage
module has been removed. It still exists as part of the private API, but is no longer exposed publicly. - The
schedule::stages!
macro is removed. Schedules are no longer defined in terms of their stages directly, but are defined in terms of their tasks using theschedule!
andSchedule!
macros.
Fixed
- Mitigated potential bug regarding the way non-root macros are exported when compiling documentation. Previously, a change in Rust's experimental
macro
syntax could have potentially broken usage of the library for all users. Now, a change in the syntax will only break building of the documentation (using--cfg doc_cfg
), which is acceptable. World::shrink_to_fit()
is no longer unsound. There were issues previously with it improperly deleting archetypes.