diff --git a/packages/ecs/src/bundle.js b/packages/ecs/src/bundle.js index ba09d80..d70483a 100644 --- a/packages/ecs/src/bundle.js +++ b/packages/ecs/src/bundle.js @@ -30,6 +30,11 @@ export default class Bundle { } static maybeNormalize(BundleLike) { + const normalized = this.normalize(BundleLike); + return normalized.prototype instanceof Bundle ? normalized : undefined; + } + + static normalize(BundleLike) { if (Array.isArray(BundleLike)) { return class AdhocBundle extends Bundle { @@ -37,10 +42,7 @@ export default class Bundle { }; } - if (BundleLike.prototype instanceof Bundle) { - return BundleLike; - } - return undefined; + return BundleLike; } static select(entity, Components) { diff --git a/packages/ecs/test/query.js b/packages/ecs/test/query.js index 740e1b1..b176c39 100644 --- a/packages/ecs/test/query.js +++ b/packages/ecs/test/query.js @@ -7,7 +7,7 @@ import Query from '../src/query'; const A = Component.normalize({a: {type: 'int32', defaultValue: 420}}); const B = Component.normalize({b: {type: 'int32', defaultValue: 69}}); const C = Component.normalize({c: 'int32'}); -const D = Bundle.maybeNormalize(['B', 'C']); +const D = Bundle.normalize(['B', 'C']); class E extends Bundle { static Components = ['A', 'B']; @@ -24,9 +24,9 @@ const ComponentsAndOrBundles = { B: new B(), C: new C(), }; -ComponentsAndOrBundles.A.createMany([2n, 3n]); -ComponentsAndOrBundles.B.createMany([1n, 2n]); -ComponentsAndOrBundles.C.createMany([2n, 4n]); +ComponentsAndOrBundles.A.createMany([[2n], [3n]]); +ComponentsAndOrBundles.B.createMany([[1n], [2n]]); +ComponentsAndOrBundles.C.createMany([[2n], [4n]]); ComponentsAndOrBundles.D = new D([ComponentsAndOrBundles.B, ComponentsAndOrBundles.C]); ComponentsAndOrBundles.E = new E([ComponentsAndOrBundles.A, ComponentsAndOrBundles.B]);