Skip to content

Releases: jprochazk/uecs

v0.4.2

17 Nov 17:06
Compare
Choose a tag to compare

v0.4.0

14 Jun 08:59
Compare
Choose a tag to compare
  • Iteration performance improved
    • It's hard to measure, but it scales better now [1]
  • Slight performance increase when constructing views (~5%)
  • Remove no longer throws for non-existent/dead entities
  • ⚠️Dropped support for IE11
    • This resulted in a bundle size decrease from ~3.5 kB to ~2.5 kB, and probably played a role in the performance increase

[1]:

N components Improvement
2 ~5%
3 ~30%
4 ~42%

v0.3.1...v0.4.0

0.3.1

24 Apr 08:10
Compare
Choose a tag to compare
  • Changed the documentation to auto-build on every push to the master branch
  • Updated the README

There are no code changes in this release. You may safely update to it or ignore it, whichever you prefer!

0.3.0

24 Mar 09:05
Compare
Choose a tag to compare
  • Added more documentation regarding View and View.each behavior, including mentions in the tutorial
  • Tags can now be made from anything that has a .toString() method, such as strings, numbers, and even objects like:
const StrangeTag = { toString: () => "spooky" }

The intellisense for these is not ideal, so I don't recommend it, but it's possible. 🙂

0.2.7

26 Feb 06:47
Compare
Choose a tag to compare
  • Fixed a bug with the entity sequence when using World.insert (1)

(1) The edge case is best explained with an example:

world.create();    // returns 0
world.insert(100); // returns 100
world.create();    // returns 101
world.insert(99);  // returns 99...
world.create();    // returns 100 !!!!

In short, World.insert didn't account for the current entity sequence, meaning you could easily cause strange behavior (such as entity components being overwritten (2)) without you knowing. The fix was to check if the entity we're inserting is greater than the current sequence, and only if it is, set the sequence to insertedEntity + 1.

(2) Again, just to give an example of what would happen before the fix:

class A { constructor(value = 0) { this.value = value } }
world.insert(100, new A(100));
world.insert(99, new A(99));
const entity = world.create(new A(101));
// the above call overwrote entity#100:
entity === 100; // true
world.get(entity, A).value; // 101

And after the fix:

class A { constructor(value = 0) { this.value = value } }
world.insert(100, new A(100));
world.insert(99, new A(99));
const entity = world.create(new A(101));
entity === 101; // true
world.get(entity, A).value; // 101
world.get(100, A).value; // 100

0.2.6

20 Feb 08:36
Compare
Choose a tag to compare
  • Updated README and tutorial

0.2.5

19 Feb 21:58
Compare
Choose a tag to compare
  • Added controls + explainer to simple-ai example
  • Improved documentation
  • Added a full walk-through of the API
  • Updated README
  • Fixed a bug where inserting an entity would not increase the current entity sequence (code sample below)
world.insert(0, new A);
const entity = world.create(new B);
world.has(entity, A); // true !?

0.2.4

18 Feb 18:03
Compare
Choose a tag to compare
  • Updated README
  • Improved World.destroy performance
  • Fixed case where View.each would throw on unused component
    • Added regression test for this

0.2.3

18 Feb 14:11
Compare
Choose a tag to compare
  • Update README

0.2.2

18 Feb 13:17
Compare
Choose a tag to compare
  • Updated README