Coder Social home page Coder Social logo

outerminds / entia Goto Github PK

View Code? Open in Web Editor NEW
30.0 7.0 2.0 5.92 MB

Entia is a free, open-source, data-oriented, highly performant, parallelizable and extensible Entity-Component-System (ECS) framework written in C# especially for game development.

License: MIT License

C# 99.80% PowerShell 0.20%
entia ecs entity component system game game-development no-dependencies mit mit-license

entia's People

Contributors

magicolo avatar outerminds avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

entia's Issues

Custom code to execute with every system

I want to be able to use a custom third party profiling tool, so I would like to surround the 'Run' call with BeginSample and EndSample so I can profile each system individually. What is the best way to do so? I don't want to have all my systems to have these statements copy-pasted.

Thanks!

Interpret interface and generic definition dependencies correctly.

Example

new Dependencies.Emit(typeof(Messages.OnAdd<>))
  • this should mean that there is an emit dependency on every type 'T' that fits in 'Messages.OnAdd<>'

Example

new Dependencies.Write(typeof(IComponent))
  • this should mean that there is a write dependency on every type that implements 'IComponent'

Memory allocation on TryFirst<T>()

It seems that calling TryFirst() on a group will cause an allocation of 48B every time it's called.

image

Example:
if (GroupInputs.TryFirst(out Write<Components.CharacterInput> inputItem))

Debug name for entities

I'm debugging quite a lot theses days, and one thing that I find difficult is never knowing what the entity I'm looking at is when stepping into the code. Would it be possible that each entity has a debug name, or something to easy identify it, even if it's not in the release version.

Thanks

Query for UnityEngine.UI.Image does not work properly

With "Read" the generated file won't add UnityEngine.UI
With "Read<UnityEngine.UI.Image>" the generated will be "global::UnityEngine.UnityEngine.UnityEngine.UI.Image". So adds 2 UnityEngine in front which does not work.

Why everything is a struct ?

Hi

I wonder why everything is a struct, i understand you want cache locality, but with C# it's impossible to achieve without bloated the code with ref everywhere, and some code might still have to use reference types ex: libraries, assets, poco etc

I am forced to use struct for component and system ? can i still use class ? if i do, will i get performance penalty because of choice to focus on structs for Entia internals ?

Thanks!

Allow exclusive queries to run in parallel.

Example:

[All(typeof(B))] Group<Write<A>> GroupA; // defined in 'SystemA'
[None(typeof(B))] Group<Write<A>> GroupB; // defined in 'SystemB'
  • 'SystemA' and 'SystemB' should be allowed to run in parallel
  • they are safe because they will have no common segments even though they both have a write dependency on 'A'

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.