Comments (3)
For note, my 'Aspects' only defined where they looked in the Aspect cache. If someone in my system creates an Aspect.match<HealthComponent, DamageComponent>, Aspect.optional>() it just returns a single pointer into the aspect cache, the cache itself was a recursive map of maps with keys of component atoms/ids and values of the matched ones with sub-matches with other components requested. You 'should' create any Aspects as early as possible as the first time a certain matchspec is defined it will iterate over all entities to see which go in, but from then on that cache is kept up to date among all aspects that match on the same matchspec.
The old system I based the style off of (Artemis, don't bother looking at it, this was the only good part about its system) used each Aspect as its own cache and they just registered event handlers to hear when components were added/removed, which caused more indirect function calls compared to mine.
Plus duplicated data
from specs.
I just looked in the Tables library a bit more (I still have so much more to learn about rust syntax, I have the ideas, but just the syntax... >.>), looks like it would work very well as a backing store while also using Aspects, they are not competing concepts but rather seem to attack two different issues in their own efficient ways. Perhaps they should both be integrated.
from specs.
Fixed by #29
from specs.
Related Issues (20)
- Specs_derive: Missing license file in crate source
- DispatcherBuilder::contains HOT 1
- This is a HUGE issue! HOT 2
- Thank you! HOT 1
- How do I access all entities with a certain component? HOT 5
- How do I get the Entity that a Component belongs to? HOT 1
- How to get an entt like view of entities within a system? HOT 2
- How do I create a system that also has the capacity to remove entities? HOT 1
- Migrate to Rust 2021
- [Question] Is it possible to group components together (to all be accessed by 1 system) HOT 3
- `EntityResBuilder` does not implement `Builder` HOT 1
- Specs vs legion HOT 2
- Best practice for borrowed resources in systems? HOT 4
- ecs_bench_suite fragmented_iter unexpectedly slow
- Add necessity of feature flag serde to api documentation for saveload HOT 2
- LazyUpdate::exec uses a &mut ref? HOT 1
- specs uses shred 0.13.0, which depends on mopa HOT 1
- Re-add support for dynamic components (for scripting) HOT 1
- 0.19.0 Release? HOT 1
- ahash 7.5 dep yanked HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from specs.