@ecsframework/core 0.1.4 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -236,7 +236,7 @@ export declare abstract class BaseSystem {
236
236
  * entity.
237
237
  * @metadata macro
238
238
  */
239
- Changed<T>(key?: ComponentKey<T>): Signal<[entity: Entity<T>, data: T, prevData: T]>;
239
+ Changed<T>(key?: ComponentKey<T>): Signal<[entity: Entity<T>, data: T]>;
240
240
  GetComponentKey<T>(runtimeId: Entity): T | undefined;
241
241
  private createComponentData;
242
242
  /**
@@ -1,4 +1,4 @@
1
- export declare const INJECT_TYPE_KEY = "INJECT_TYPE";
1
+ export declare const INJECT_TYPE_KEY = "Inject-type";
2
2
  export declare const ObjectWithInjectTypes: Map<string, object[]>;
3
3
  /**
4
4
  * Inject dependency.
@@ -4,7 +4,7 @@ local _core = TS.import(script, TS.getModule(script, "@flamework", "core").out)
4
4
  local Modding = _core.Modding
5
5
  local Reflect = _core.Reflect
6
6
  local t = TS.import(script, TS.getModule(script, "@rbxts", "t").lib.ts).t
7
- local INJECT_TYPE_KEY = "INJECT_TYPE"
7
+ local INJECT_TYPE_KEY = "Inject-type"
8
8
  local ObjectWithInjectTypes = {}
9
9
  --[[
10
10
  *
@@ -1,8 +1,11 @@
1
1
  import { Constructor } from "@flamework/core/out/utility";
2
2
  import { World } from "@rbxts/jecs";
3
3
  import { DependenciesContainer } from "../dependencies-container";
4
- export interface TaggedInstance<T = {}> {
4
+ import { Tag } from "../flamecs";
5
+ export interface TaggedOptions<T> {
5
6
  Tag: string;
6
7
  OnCreateData: (instance: Instance, world: World, container: DependenciesContainer) => Partial<T>;
7
8
  }
8
- export declare function Tagged<T>(options: TaggedInstance<T>): (target: Constructor<T>) => void;
9
+ export interface TaggedInstance extends Tag {
10
+ }
11
+ export declare function Tagged<T>(options: TaggedOptions<T>): (target: Constructor<T>) => void;
@@ -1,12 +1,9 @@
1
1
  -- Compiled with roblox-ts v3.0.0
2
2
  local TS = _G[script]
3
- local _utilities = TS.import(script, script.Parent.Parent, "utilities")
4
- local DefineClassComponentMeta = _utilities.DefineClassComponentMeta
5
- local GetIdentifier = _utilities.GetIdentifier
6
- local id = "$ecsframework:core:framework/decorators/tagged@TaggedInstance"
3
+ local DefineClassComponentMeta = TS.import(script, script.Parent.Parent, "utilities").DefineClassComponentMeta
7
4
  local function Tagged(options)
8
5
  return function(target)
9
- DefineClassComponentMeta(options, id, GetIdentifier(target))
6
+ DefineClassComponentMeta(target, options, "$ecsframework:core:framework/decorators/tagged@TaggedInstance")
10
7
  end
11
8
  end
12
9
  return {
@@ -1,20 +1,18 @@
1
1
  import { Modding } from "@flamework/core";
2
2
  import { Constructor } from "@flamework/core/out/utility";
3
3
  export declare class DependenciesContainer {
4
- private readonly parentContainer?;
5
4
  private factories;
6
5
  private instances;
7
- constructor(parentContainer?: DependenciesContainer | undefined);
8
6
  private wrapConstructorInFactory;
9
7
  /** @metadata macro */
10
8
  Register<T extends object>(ctor: Constructor<T>, spec?: Modding.Intrinsic<"symbol-id", [T], string>): void;
11
9
  /** @metadata macro */
12
- Register<T>(factory: (context: unknown) => T, spec?: Modding.Intrinsic<"symbol-id", [T], string>): void;
10
+ Register<T>(factory: () => T, spec?: Modding.Intrinsic<"symbol-id", [T], string>): void;
13
11
  /** @metadata macro */
14
12
  Unregister<T>(spec?: Modding.Generic<T, "id">): void;
15
13
  private resolve;
16
14
  /** @metadata macro */
17
- Resolve<T>(context?: unknown, spec?: Modding.Generic<T, "id">): {};
15
+ Resolve<T>(spec?: Modding.Generic<T, "id">): {};
18
16
  Inject(instance: object, handle?: (injecting: unknown) => void): void;
19
17
  Instantiate<T extends object>(ctor: Constructor<T>, ...args: ConstructorParameters<Constructor<T>>): T;
20
18
  InstantiateGroup(ctors: Constructor[], isRegister?: boolean): object[];
@@ -17,8 +17,7 @@ do
17
17
  local self = setmetatable({}, DependenciesContainer)
18
18
  return self:constructor(...) or self
19
19
  end
20
- function DependenciesContainer:constructor(parentContainer)
21
- self.parentContainer = parentContainer
20
+ function DependenciesContainer:constructor()
22
21
  self.factories = {}
23
22
  self.instances = {}
24
23
  end
@@ -39,6 +38,8 @@ do
39
38
  end
40
39
  end
41
40
  function DependenciesContainer:Register(factoryOrCtor, spec)
41
+ local _spec = spec
42
+ assert(_spec ~= "" and _spec)
42
43
  local _factoryOrCtor = factoryOrCtor
43
44
  local factory = if type(_factoryOrCtor) == "function" then factoryOrCtor else self:wrapConstructorInFactory(factoryOrCtor)
44
45
  local _factories = self.factories
@@ -46,33 +47,27 @@ do
46
47
  _factories[_arg0] = factory
47
48
  end
48
49
  function DependenciesContainer:Unregister(spec)
49
- local _factories = self.factories
50
50
  local _spec = spec
51
- _factories[_spec] = nil
51
+ assert(_spec ~= "" and _spec)
52
+ local _factories = self.factories
53
+ local _spec_1 = spec
54
+ _factories[_spec_1] = nil
52
55
  end
53
- function DependenciesContainer:resolve(spec, context)
56
+ function DependenciesContainer:resolve(spec, ctor)
54
57
  local _factories = self.factories
55
58
  local _spec = spec
56
59
  local _result = _factories[_spec]
57
60
  if _result ~= nil then
58
- _result = _result(context)
59
- end
60
- local _condition = _result
61
- if _condition == nil then
62
- local _result_1 = self.parentContainer
63
- if _result_1 ~= nil then
64
- _result_1 = _result_1:resolve(spec, context)
65
- end
66
- _condition = _result_1
67
- end
68
- local result = _condition
69
- if result == nil then
70
- error(`No factory for {spec}`)
61
+ _result = _result()
71
62
  end
63
+ local result = _result
64
+ local _result_1 = result
65
+ local _arg1 = `No factory for {spec}`
66
+ assert(_result_1 ~= 0 and _result_1 == _result_1 and _result_1 ~= "" and _result_1, _arg1)
72
67
  return result
73
68
  end
74
- function DependenciesContainer:Resolve(context, spec)
75
- return self:resolve(spec, context)
69
+ function DependenciesContainer:Resolve(spec)
70
+ return self:resolve(spec)
76
71
  end
77
72
  function DependenciesContainer:Inject(instance, handle)
78
73
  local injectedTypes = GetInjectTypes(instance)
@@ -33,9 +33,9 @@ export type ResolveKeys<T> = Modding.Many<{
33
33
  type TrailingUndefined<T extends Array<unknown>> = T extends [...infer Rest, undefined] ? [...TrailingUndefined<Rest>, undefined?] : T;
34
34
  export declare const scheduleComponent: Set<ecs.Entity<unknown>>;
35
35
  export declare const worldSignals: Map<ecs.World, {
36
- added: Map<Entity, Signal<[entity: Entity, data: unknown]>>;
37
- changed: Map<Entity, Signal<[entity: Entity, newData: unknown, prevData: unknown]>>;
38
- removed: Map<Entity, Signal<[entity: Entity]>>;
36
+ added: Map<Entity, Signal<[Entity, unknown]>>;
37
+ changed: Map<Entity, Signal<[Entity, unknown]>>;
38
+ removed: Map<Entity, Signal<[Entity]>>;
39
39
  }>;
40
40
  /**
41
41
  * Returns a signal that fires when a component is added to an entity.
@@ -45,7 +45,7 @@ export declare const worldSignals: Map<ecs.World, {
45
45
  * @returns A signal that fires when the component is added to any entity.
46
46
  * @metadata macro
47
47
  */
48
- export declare function added<T>(registery: ecs.World, key?: ComponentKey<T>): Signal<[entity: Entity<T>, T]>;
48
+ export declare function added<T>(registery: ecs.World, key?: ComponentKey<T>): Signal<[Entity<T>, T]>;
49
49
  /**
50
50
  * Returns a signal that fires when a component is removed from an entity.
51
51
  *
@@ -64,7 +64,7 @@ export declare function removed<T>(registery: ecs.World, key?: ComponentKey<T>):
64
64
  * entity.
65
65
  * @metadata macro
66
66
  */
67
- export declare function changed<T>(registery: ecs.World, key?: ComponentKey<T>): Signal<[entity: Entity<T>, data: T, prevData: T]>;
67
+ export declare function changed<T>(registery: ecs.World, key?: ComponentKey<T>): Signal<[Entity<T>, T]>;
68
68
  export declare function hookListeners(registry: ecs.World, id: Entity): void;
69
69
  /**
70
70
  * Registers an existing entity to the component registry.
@@ -67,7 +67,6 @@ local function hookListeners(registry, id)
67
67
  }
68
68
  end
69
69
  local signals = _condition
70
- local prevDatas = {}
71
70
  local _registry_1 = registry
72
71
  worldSignals[_registry_1] = signals
73
72
  local _added = signals.added
@@ -80,28 +79,13 @@ local function hookListeners(registry, id)
80
79
  local _id_2 = id
81
80
  _changed[_id_2] = changedSignal
82
81
  registry:set(id, ecs.OnAdd, function(entity, _, data)
83
- local _entity = entity
84
- local _data = data
85
- prevDatas[_entity] = _data
86
82
  addedSignal:fire(entity, data)
87
83
  end)
88
84
  registry:set(id, ecs.OnRemove, function(entity)
89
- local _entity = entity
90
- prevDatas[_entity] = nil
91
85
  removedSignal:fire(entity)
92
86
  end)
93
87
  registry:set(id, ecs.OnChange, function(entity, _, data)
94
- local _exp = entity
95
- local _exp_1 = data
96
- local _entity = entity
97
- local _condition_1 = prevDatas[_entity]
98
- if _condition_1 == nil then
99
- _condition_1 = data
100
- end
101
- changedSignal:fire(_exp, _exp_1, _condition_1)
102
- local _entity_1 = entity
103
- local _data = data
104
- prevDatas[_entity_1] = _data
88
+ changedSignal:fire(entity, data)
105
89
  end)
106
90
  end
107
91
  --[[
@@ -2,6 +2,7 @@ import { Constructor } from "@flamework/core/out/utility";
2
2
  import { Entity } from "@rbxts/jecs";
3
3
  import { DependenciesContainer } from "./dependencies-container";
4
4
  import { Signal } from "./flamecs/signal";
5
+ import { Scheduler } from "@rbxts/planck";
5
6
  export declare class ECSFramework {
6
7
  readonly Container: DependenciesContainer;
7
8
  private systems;
@@ -12,6 +13,8 @@ export declare class ECSFramework {
12
13
  readonly ComponentsByName: ReadonlyMap<string, string>;
13
14
  private components;
14
15
  private world;
16
+ private onEffectPhase;
17
+ readonly Scheduler: Scheduler<[]>;
15
18
  readonly signals: {
16
19
  added: ReadonlyMap<Entity, Signal<[Entity, unknown]>>;
17
20
  changed: ReadonlyMap<Entity, Signal<[Entity, unknown]>>;
@@ -20,7 +23,6 @@ export declare class ECSFramework {
20
23
  constructor(Container?: DependenciesContainer);
21
24
  GetAllComponents(): Constructor[];
22
25
  GetComponentKeyByName(name: string): string | undefined;
23
- private getSystemLifecycleMethod;
24
26
  private initSystems;
25
27
  private invokeStartup;
26
28
  private initUpdate;
@@ -5,7 +5,6 @@ local Modding = _core.Modding
5
5
  local Reflect = _core.Reflect
6
6
  local world = TS.import(script, TS.getModule(script, "@rbxts", "jecs").jecs).world
7
7
  local RunService = TS.import(script, TS.getModule(script, "@rbxts", "services")).RunService
8
- local BaseSystem = TS.import(script, script, "base-system").BaseSystem
9
8
  local DependenciesContainer = TS.import(script, script, "dependencies-container").DependenciesContainer
10
9
  local start = TS.import(script, script, "flamecs").start
11
10
  local _registry = TS.import(script, script, "flamecs", "registry")
@@ -16,7 +15,13 @@ local scheduleComponent = _registry.scheduleComponent
16
15
  local _utilities = TS.import(script, script, "utilities")
17
16
  local ApplyClassComponentMeta = _utilities.ApplyClassComponentMeta
18
17
  local GetIdentifier = _utilities.GetIdentifier
19
- local function getMethodCallback(instance, methodName)
18
+ local _planck = TS.import(script, TS.getModule(script, "@rbxts", "planck").out)
19
+ local Phase = _planck.Phase
20
+ local Scheduler = _planck.Scheduler
21
+ local _planck_runservice = TS.import(script, TS.getModule(script, "@rbxts", "planck-runservice").out)
22
+ local planckRunService = _planck_runservice
23
+ local Phases = _planck_runservice.Phases
24
+ local function getCachedMethod(instance, methodName)
20
25
  return instance[methodName]
21
26
  end
22
27
  local ECSFramework
@@ -42,6 +47,8 @@ do
42
47
  self.componentsMap = {}
43
48
  self.ComponentsByName = {}
44
49
  self.components = {}
50
+ self.onEffectPhase = Phase.new("OnEffect")
51
+ self.Scheduler = Scheduler.new()
45
52
  self.signals = {
46
53
  added = {},
47
54
  changed = {},
@@ -129,14 +136,6 @@ do
129
136
  local _name = name
130
137
  return _componentsByName[_name]
131
138
  end
132
- function ECSFramework:getSystemLifecycleMethod(system, name)
133
- local method = getMethodCallback(system, name)
134
- local originalMethod = getMethodCallback(BaseSystem, name)
135
- if originalMethod == method then
136
- return nil
137
- end
138
- return method
139
- end
140
139
  function ECSFramework:initSystems()
141
140
  local systems = Reflect.getMetadata(self.baseSystemCtor, "ECSFramework:Systems") or {}
142
141
  local _exp = self.Container:InstantiateGroup(systems, true)
@@ -149,9 +148,9 @@ do
149
148
  end
150
149
  return {
151
150
  Instance = instance,
152
- OnStartup = self:getSystemLifecycleMethod(instance, "OnStartup"),
153
- OnEffect = self:getSystemLifecycleMethod(instance, "OnEffect"),
154
- OnUpdate = self:getSystemLifecycleMethod(instance, "OnUpdate"),
151
+ OnStartup = getCachedMethod(instance, "OnStartup"),
152
+ OnEffect = getCachedMethod(instance, "OnEffect"),
153
+ OnUpdate = getCachedMethod(instance, "OnUpdate"),
155
154
  Options = options,
156
155
  }
157
156
  end
@@ -190,44 +189,30 @@ do
190
189
  self.systems = _result
191
190
  end
192
191
  function ECSFramework:invokeStartup()
193
- local _exp = self.systems
194
- -- ▼ ReadonlyArray.forEach ▼
195
- local _callback = function(system)
196
- if system.OnStartup == nil then
197
- return nil
198
- end
199
- start(system.Instance.__hookStates, system.Instance, self.world, function()
200
- return system.OnStartup(system.Instance)
201
- end)
192
+ for _, system in self.systems do
193
+ self.Scheduler:addSystem({
194
+ name = `{getmetatable(system.Instance)}-Startup`,
195
+ phase = Phase.Startup,
196
+ system = function()
197
+ start(system.Instance.__hookStates, system.Instance, self.world, function()
198
+ return system.OnStartup(system.Instance)
199
+ end)
200
+ end,
201
+ })
202
202
  end
203
- for _k, _v in _exp do
204
- _callback(_v, _k - 1, _exp)
205
- end
206
- -- ▲ ReadonlyArray.forEach ▲
207
203
  end
208
204
  function ECSFramework:initUpdate()
209
- local _exp = self.systems
210
- -- ▼ ReadonlyArray.filter ▼
211
- local _newValue = {}
212
- local _callback = function(system)
213
- return system.OnUpdate ~= nil
214
- end
215
- local _length = 0
216
- for _k, _v in _exp do
217
- if _callback(_v, _k - 1, _exp) == true then
218
- _length += 1
219
- _newValue[_length] = _v
220
- end
205
+ for _, system in self.systems do
206
+ self.Scheduler:addSystem({
207
+ name = `{getmetatable(system.Instance)}-Update`,
208
+ phase = Phases.Update,
209
+ system = function()
210
+ start(system.Instance.__hookStates, system.Instance, self.world, function()
211
+ return system.OnUpdate(system.Instance, self.Scheduler:getDeltaTime())
212
+ end)
213
+ end,
214
+ })
221
215
  end
222
- -- ▲ ReadonlyArray.filter ▲
223
- local systems = _newValue
224
- RunService.Heartbeat:Connect(function(dt)
225
- for _, system in systems do
226
- start(system.Instance.__hookStates, system.Instance, self.world, function()
227
- return system.OnUpdate(system.Instance, dt)
228
- end)
229
- end
230
- end)
231
216
  end
232
217
  function ECSFramework:initComponents()
233
218
  local _exp = self:GetAllComponents()
@@ -238,7 +223,7 @@ do
238
223
  error(`Component {component} does not have a runtime id.`)
239
224
  end
240
225
  reserve(self.world, runtimeId, GetIdentifier(component))
241
- ApplyClassComponentMeta(runtimeId, GetIdentifier(component))
226
+ ApplyClassComponentMeta(component, runtimeId)
242
227
  end
243
228
  for _k, _v in _exp do
244
229
  _callback(_v, _k - 1, _exp)
@@ -256,36 +241,17 @@ do
256
241
  -- ▲ ReadonlySet.forEach ▲
257
242
  end
258
243
  function ECSFramework:initEvents()
259
- local _exp = self.systems
260
- -- ▼ ReadonlyArray.filter ▼
261
- local _newValue = {}
262
- local _callback = function(system)
263
- return system.OnEffect ~= nil
264
- end
265
- local _length = 0
266
- for _k, _v in _exp do
267
- if _callback(_v, _k - 1, _exp) == true then
268
- _length += 1
269
- _newValue[_length] = _v
270
- end
271
- end
272
- -- ▲ ReadonlyArray.filter ▲
273
- local systems = _newValue
274
244
  RunService.Heartbeat:Connect(function()
275
245
  if not self.canCallEffect then
276
246
  return nil
277
247
  end
278
248
  self.canCallEffect = false
279
- for _, system in systems do
280
- start(system.Instance.__hookStates, system.Instance, self.world, function()
281
- return system.OnEffect(system.Instance)
282
- end)
283
- end
249
+ self.Scheduler:run(self.onEffectPhase)
284
250
  end)
285
- local _exp_1 = self:GetAllComponents()
251
+ local _exp = self:GetAllComponents()
286
252
  -- ▼ ReadonlyArray.map ▼
287
- local _newValue_1 = table.create(#_exp_1)
288
- local _callback_1 = function(obj)
253
+ local _newValue = table.create(#_exp)
254
+ local _callback = function(obj)
289
255
  local _condition = Reflect.getOwnMetadata(obj, "ECSFramework:Unaffectable")
290
256
  if _condition == nil then
291
257
  _condition = false
@@ -294,21 +260,21 @@ do
294
260
  local id = Reflect.getOwnMetadata(obj, "ECSFramework:Id")
295
261
  return if not unaffectable then id else nil
296
262
  end
297
- for _k, _v in _exp_1 do
298
- _newValue_1[_k] = _callback_1(_v, _k - 1, _exp_1)
263
+ for _k, _v in _exp do
264
+ _newValue[_k] = _callback(_v, _k - 1, _exp)
299
265
  end
300
266
  -- ▲ ReadonlyArray.map ▲
301
267
  -- ▼ ReadonlyArray.filterUndefined ▼
302
- local _length_1 = 0
303
- for _i in _newValue_1 do
304
- if _i > _length_1 then
305
- _length_1 = _i
268
+ local _length = 0
269
+ for _i in _newValue do
270
+ if _i > _length then
271
+ _length = _i
306
272
  end
307
273
  end
308
274
  local _result = {}
309
275
  local _resultLength = 0
310
- for _i = 1, _length_1 do
311
- local _v = _newValue_1[_i]
276
+ for _i = 1, _length do
277
+ local _v = _newValue[_i]
312
278
  if _v ~= nil then
313
279
  _resultLength += 1
314
280
  _result[_resultLength] = _v
@@ -316,6 +282,17 @@ do
316
282
  end
317
283
  -- ▲ ReadonlyArray.filterUndefined ▲
318
284
  local reactives = _result
285
+ for _, system in self.systems do
286
+ self.Scheduler:addSystem({
287
+ name = `{getmetatable(system.Instance)}-OnEffect`,
288
+ phase = self.onEffectPhase,
289
+ system = function()
290
+ start(system.Instance.__hookStates, system.Instance, self.world, function()
291
+ return system.OnEffect(system.Instance)
292
+ end)
293
+ end,
294
+ }, self.onEffectPhase)
295
+ end
319
296
  for _, ct in reactives do
320
297
  self.world:added(ct, function()
321
298
  self.canCallEffect = true
@@ -333,6 +310,8 @@ do
333
310
  return nil
334
311
  end
335
312
  self.isStarted = true
313
+ self.Scheduler:insert(self.onEffectPhase)
314
+ self.Scheduler:addPlugin(planckRunService.Plugin.new())
336
315
  -- Init
337
316
  initWorld(self.world)
338
317
  self:initSystems()
@@ -1,6 +1,6 @@
1
1
  import { Constructor } from "@flamework/core/out/utility";
2
2
  import { Entity } from "./flamecs";
3
- import { ComponentKey, ResolveKey } from "./flamecs/registry";
3
+ import { ResolveKey } from "./flamecs/registry";
4
4
  export declare function GetIdentifier(obj: object, suffix?: string): string;
5
5
  export declare const GetClassName: (object: object) => string;
6
6
  export declare function getDeferredConstructor<T extends object>(ctor: Constructor<T>): readonly [InstanceType<T>, (...args: ConstructorParameters<Constructor<T>>) => void];
@@ -13,6 +13,5 @@ export declare const enum RunContext {
13
13
  export declare const INSTANCE_ATTRIBUTE_ENTITY_ID: string;
14
14
  export declare const SERVER_ATTRIBUTE_ENTITY_ID = "__Server_EntityId";
15
15
  /** @metadata macro */
16
- export declare function DefineClassComponentMeta<T, ComponentId>(value?: unknown, key?: ResolveKey<T> | string, componentId?: ComponentKey<ComponentId>): void;
17
- /** @metadata macro */
18
- export declare function ApplyClassComponentMeta<ComponentId>(componentRuntimeId: Entity, componentId?: ComponentKey<ComponentId>): void;
16
+ export declare function DefineClassComponentMeta<T>(ctor: Constructor, value?: unknown, key?: ResolveKey<T>): void;
17
+ export declare function ApplyClassComponentMeta(ctor: Constructor, componentRuntimeId: Entity): void;
@@ -4,7 +4,6 @@ local Reflect = TS.import(script, TS.getModule(script, "@flamework", "core").out
4
4
  local meta = TS.import(script, TS.getModule(script, "@rbxts", "jecs").jecs).meta
5
5
  local getId = TS.import(script, script.Parent, "flamecs", "registry").getId
6
6
  local RunService = TS.import(script, TS.getModule(script, "@rbxts", "services")).RunService
7
- local BaseSystem = TS.import(script, script.Parent, "base-system").BaseSystem
8
7
  local function GetIdentifier(obj, suffix)
9
8
  if suffix == nil then
10
9
  suffix = ""
@@ -31,41 +30,31 @@ end
31
30
  local INSTANCE_ATTRIBUTE_ENTITY_ID = `__{if RunService:IsServer() then "Server" else "Client"}_EntityId`
32
31
  local SERVER_ATTRIBUTE_ENTITY_ID = `__Server_EntityId`
33
32
  --* @metadata macro
34
- local function DefineClassComponentMeta(value, key, componentId)
33
+ local function DefineClassComponentMeta(ctor, value, key)
35
34
  local metadata = { key, value }
36
- local datas = Reflect.getOwnMetadata(BaseSystem, "ECSFramework:Meta") or {}
37
- Reflect.defineMetadata(BaseSystem, "ECSFramework:Meta", datas)
38
- local _componentId = componentId
39
- local _condition = datas[_componentId]
40
- if _condition == nil then
41
- _condition = {}
42
- end
43
- local componentMetadata = _condition
44
- table.insert(componentMetadata, metadata)
45
- local _componentId_1 = componentId
46
- datas[_componentId_1] = componentMetadata
35
+ local datas = Reflect.getOwnMetadata(ctor, "ECSFramework:Meta") or {}
36
+ local _exp = ctor
37
+ local _array = {}
38
+ local _length = #_array
39
+ local _datasLength = #datas
40
+ table.move(datas, 1, _datasLength, _length + 1, _array)
41
+ _length += _datasLength
42
+ _array[_length + 1] = metadata
43
+ Reflect.defineMetadata(_exp, "ECSFramework:Meta", _array)
47
44
  end
48
- --* @metadata macro
49
- local function ApplyClassComponentMeta(componentRuntimeId, componentId)
50
- local datas = Reflect.getOwnMetadata(BaseSystem, "ECSFramework:Meta")
51
- local _condition = datas == nil
52
- if not _condition then
53
- local _componentId = componentId
54
- _condition = not (datas[_componentId] ~= nil)
55
- end
56
- if _condition then
45
+ local function ApplyClassComponentMeta(ctor, componentRuntimeId)
46
+ local datas = Reflect.getOwnMetadata(ctor, "ECSFramework:Meta")
47
+ if datas == nil then
57
48
  return nil
58
49
  end
59
- local _componentId = componentId
60
- local _exp = datas[_componentId]
61
50
  -- ▼ ReadonlyArray.forEach ▼
62
51
  local _callback = function(_param)
63
52
  local key = _param[1]
64
53
  local value = _param[2]
65
54
  meta(componentRuntimeId, getId(nil, key), value)
66
55
  end
67
- for _k, _v in _exp do
68
- _callback(_v, _k - 1, _exp)
56
+ for _k, _v in datas do
57
+ _callback(_v, _k - 1, datas)
69
58
  end
70
59
  -- ▲ ReadonlyArray.forEach ▲
71
60
  end
@@ -1 +1 @@
1
- {"program":{"fileNames":["../node_modules/@rbxts/t/lib/t.d.ts","../node_modules/@flamework/core/out/modding.d.ts","../node_modules/@flamework/core/out/utility.d.ts","../node_modules/@flamework/core/out/reflect.d.ts","../node_modules/@flamework/core/out/flamework.d.ts","../node_modules/@flamework/core/out/index.d.ts","../node_modules/@rbxts/jecs/jecs.d.ts","../node_modules/@rbxts/services/index.d.ts","../src/framework/flamecs/signal.ts","../src/framework/flamecs/registry.ts","../src/framework/flamecs/query.ts","../src/framework/flamecs/topo.ts","../src/framework/flamecs/index.ts","../src/framework/components/destroyed-component.ts","../src/framework/decorators/inject-type.ts","../src/framework/utilities.ts","../src/framework/hooks/query-change.ts","../node_modules/@rbxts/immut/src/none.d.ts","../node_modules/@rbxts/immut/src/makedraftsafe.d.ts","../node_modules/@rbxts/immut/src/makedraftsafereadonly.d.ts","../node_modules/@rbxts/immut/src/table.d.ts","../node_modules/@rbxts/immut/src/types-internal.d.ts","../node_modules/@rbxts/immut/src/types-external.d.ts","../node_modules/@rbxts/immut/src/index.d.ts","../src/framework/base-system.ts","../src/framework/decorators/component.ts","../src/framework/decorators/system.ts","../src/framework/dependencies-container.ts","../src/framework/index.ts","../src/framework/decorators/unaffectable.ts","../src/framework/decorators/tagged.ts","../src/framework/components/roblox-instance-component.ts","../src/framework/systems/roblox-instance-system.ts","../src/framework/hooks/use-added.ts","../src/framework/hooks/use-removed.ts","../src/framework/hooks/use-changed.ts","../src/framework/hooks/use-event.ts","../src/framework/hooks/use-throttle.ts","../src/index.ts","../node_modules/@rbxts/types/include/generated/enums.d.ts","../node_modules/@rbxts/types/include/generated/none.d.ts","../node_modules/@rbxts/types/include/lua.d.ts","../node_modules/@rbxts/types/include/macro_math.d.ts","../node_modules/@rbxts/types/include/roblox.d.ts","../node_modules/@rbxts/compiler-types/types/array.d.ts","../node_modules/@rbxts/compiler-types/types/callmacros.d.ts","../node_modules/@rbxts/compiler-types/types/iterable.d.ts","../node_modules/@rbxts/compiler-types/types/map.d.ts","../node_modules/@rbxts/compiler-types/types/promise.d.ts","../node_modules/@rbxts/compiler-types/types/set.d.ts","../node_modules/@rbxts/compiler-types/types/string.d.ts","../node_modules/@rbxts/compiler-types/types/symbol.d.ts","../node_modules/@rbxts/compiler-types/types/typeutils.d.ts","../node_modules/@rbxts/compiler-types/types/eslintignore.d.ts","../node_modules/@rbxts/compiler-types/types/core.d.ts","../node_modules/@rbxts/maid/maid.d.ts","../node_modules/@rbxts/object-utils/index.d.ts","../node_modules/@rbxts/signal/index.d.ts"],"fileInfos":[{"version":"429178068cb844a452dad87eb0a7a02466f3509fff9e7f1187fdb0595e66b8df","signature":false},{"version":"f984bb5cbefabad3e6279516673ca0cb2098304225cfe61987f2af81daf3f99a","signature":false},{"version":"5ed7aeb5909b9e1607087690870addc6df2d3d7e6e3e16f389fe21da53915526","signature":false},{"version":"1fe834c2d906a0d49917ce932bb495bfbb58912d49ad6b03f66ae0be14ad9def","signature":false},{"version":"99709374cb8bf64c65dad5350c88a805af91e107545e18af91e4839d4336a441","signature":false},{"version":"a1a226a8d6b1039d7d0613381c2f4dec614c30305cf96ee973cc49973d9745e4","signature":false},{"version":"1f0f6e103444aad5f544988f7a8390e351b30481ce6eac8ad7765911c56dda6e","signature":false},{"version":"9e6c13e0c00f23d1e9a40e4652ef4e604bdf6747feab7d7b7ca66b5d6bcfa330","signature":false},{"version":"cff894ef201eb519e33e59b861ceb3766076e4f371734218d331157a3b307a11","signature":false},{"version":"895b47131bf27301acc279c543166e88b291f39616f244639a21477a6f0e8875","signature":false},{"version":"cf75483180e62aa81e878d688cdd40b6d86b120cd84ea4acff735b13c9a81406","signature":false},{"version":"c2b615b7c60bf38930966af14e64cc1ef33ed23ba0a77bdd8ea09fdc4f5e2683","signature":false},{"version":"3800f61fdda8762cb1f766f6badbc560a94853c8c6a21b67d8e0f746eb15926c","signature":false},{"version":"a3adf1732167824c54869e10749d1d5529167a6dbe6fca946e572fb871d40779","signature":false},{"version":"63a553db9a215f18b3280e366638fe36b353226de8e9b3628d15259d3ee045a2","signature":false},{"version":"85a8c63d3044d7cc42b11e7f16090cc9aeae5ece957128d3c4cadeab6e7474a0","signature":false},{"version":"f63d7cdd778a7ea18b0d61359ab48023b001d45096dfb759dc09a101c0c41a72","signature":false},{"version":"d9d14150234c32bc0bf772d69182b166d8de600e0e5207924867da19351aca53","signature":false},{"version":"1a73eb921b7aa92d4c2d86ec95a39f5f73cf170b939314394d1b87bd06ae707b","signature":false},{"version":"5e5db3fb2f4f1a4d5276b9ba8f78df1f5f73754eeae5e2c23028f7830a2b66f9","signature":false},{"version":"3a36f6c843d1b4e91f80d6ff3ef8b5e25e1948fae24b8c62631c5df1faf82e41","signature":false},{"version":"dba94b73dbbe23c5066eeafc9f4f8dbf4430a4ab73d2d0d251fe4c1cd029d90b","signature":false},{"version":"564a52d0f974d976d982a2385ac5b353329f2dadab4f7616ee303678a7f64134","signature":false},{"version":"ff329383f830b2ba7578f67a374e2b8077f0b3d7036bf4d1a24edcc95de45c5d","signature":false},{"version":"1bef42ef6fac8551081b5f73354d46dd3939a5e3040ea177ac4fa0b151ba976e","signature":false},{"version":"4d406ad246a632b296d15664e6dce343d733ae17ef88aadbb4d5b3a55adb9373","signature":false},{"version":"afa4bcb1c950e70212cc4ccf83a6096a25bc4280fb03bf94157f2eea853fad15","signature":false},{"version":"d224a3dd51cb73bd47023903bbc25bd2be67a4e4190d5423bdb29b7e1a4be5c3","signature":false},{"version":"d9e71f559f9a9f2a1662ffed1dc6fdbac798f92204ac054f330ed3145ef0f650","signature":false},{"version":"531c125862ac8e801bca17eaacc89b21e0d49ef80a76bf7dbd09b006f3e27a4a","signature":false},{"version":"afdf06fa49f21dac6bed5de8d852b95f266fbd54c3ec773510a75f9c43c35c4a","signature":false},{"version":"be4e6ec9fe788d72a70afbdc4c297ea31d842a9ea301559f5ca42cdf13db1383","signature":false},{"version":"bbea04f9dddf52d42a2b47e1be43bb6f5dbbff147e1126d50404481d6bbd265b","signature":false},{"version":"8d1395d7fa6381cf71368706cf815130a32895fddd44acb047751072801f90bb","signature":false},{"version":"cdeedec78d8c66fc7522d13e9a2150edda98b18fd3bb95d0f556b6678d0c3739","signature":false},{"version":"7e8bf6cb0c7e13b34a8b40c4b36e633d639b8c4a3b5dec3a55a08bf26caf9a6b","signature":false},{"version":"27b0c41f2f485e59eaaab0d65c192ca022d7fcea87b2c24c9405a91e8b7a4a79","signature":false},{"version":"20d034b52037a7e5b0268fde45a111ffa9f0ae2e04819549d677262711d9dcf2","signature":false},{"version":"96f86d69285464e402bcc634bed6b3b059ff40f1d8ab801cdbdffeddc65212b4","signature":false},{"version":"6eb7fae75c4a1a6bdee1d48700000f43f9d5cff7987f08bd49f21ed1ac0b7c4b","signature":false,"affectsGlobalScope":true},{"version":"3a5626be0c9a1aae6f75d0d38bcea4d070e5d1381a843a9b4eafd3eab6ed7ef7","signature":false,"affectsGlobalScope":true},{"version":"f6c97e5b3403d6f8683372fff53430b8d93728a60f04623bd3de9e470fe71259","signature":false,"affectsGlobalScope":true},{"version":"bfb3f3bd1d89a54d975a7554c8d12209188d7b849d00b9345fd0d41d79858e38","signature":false,"affectsGlobalScope":true},{"version":"22f424c221d557a69d83386550a272558bfef6f81b1dbacd3d35b4651b128d2b","signature":false,"affectsGlobalScope":true},{"version":"d1461f750f98ba938cf3b43f1095774f6007b92a4550bbfde87451dccc32b3bd","signature":false,"affectsGlobalScope":true},{"version":"c30a7a2198451431d80de5f9ba7197a0c8a56d52b29373e7270115776a28f3f3","signature":false,"affectsGlobalScope":true},{"version":"d4d6595aca02f63e2107a842fdd8f79e147fd802acd0e60900f16bee4f861173","signature":false,"affectsGlobalScope":true},{"version":"2070e277f4e874747a7706f000f19f2f512f9829f65f4caf634a908c07f45117","signature":false,"affectsGlobalScope":true},{"version":"7f53343307db666fa6a82bf5165f961d4b70e268ffb7e4e108f06d953c10c679","signature":false,"affectsGlobalScope":true},{"version":"8d10b5097dc2692979a984b4c56deaa0ad77c3a7b036a066ea0a72ec8c514830","signature":false,"affectsGlobalScope":true},{"version":"a252fd9c3a3e55eab45c1c78d376e7a8d82e736d55a5d95a1b285290881d5f88","signature":false,"affectsGlobalScope":true},{"version":"dde6ecc6409a17b372382192ca43c78c52015f34f49547ead38194c63127793a","signature":false,"affectsGlobalScope":true},{"version":"ed7b23f234388de62c9f86bcecd4608a854067fc20f2b4698b9f14ce0d92f4f2","signature":false,"affectsGlobalScope":true},{"version":"85ce7d3110c6652c276ea4d027bc1887176d97a5b7494f288cbbdfb2b48a11ee","signature":false,"affectsGlobalScope":true},{"version":"52535c5f6ea63e76c537e39df77b0720827e3f8d0fac9e2386352f0b6110a211","signature":false,"affectsGlobalScope":true},{"version":"abfe7c34c18ff9a242d5b7e4aba61dfb14b2db55ce5edce1798aaae365fa9cfe","signature":false},{"version":"7b9707d4934d0b63c71920058db2bd6f815b90c4ace1100ea24915c14c9af895","signature":false},{"version":"f73b1d7270a91ed30c71075ee5e0472465931a37ecdb5834c9d8ebe828847b45","signature":false}],"root":[[9,17],[25,39]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"downlevelIteration":true,"experimentalDecorators":true,"jsx":2,"module":1,"outDir":"./","rootDir":"../src","strict":true,"target":99,"tsBuildInfoFile":"./tsconfig.tsbuildinfo"},"fileIdsList":[[1,2,3],[2,4,5],[1,3],[3],[2],[44],[44,45,46,47,48,49,50,51,52,53,54],[18,21,22,23],[19,20],[22],[40,44],[41,55],[40,41,42,43,55],[3,6,7,9,10,13,14,15,17,23,24,29],[13],[26],[1,3,6,7,16,25],[1,6],[3,6,16,25],[3,6,7,16,28],[6],[3,6,15,16],[10,11,12],[7,10],[6,7,9],[7,25],[6,7,10,13,14,16],[6,10,13,16],[6,13],[3,6,7,8,9,10,13,16,25,26,27,28],[7,8,10,15,16,25,27,28,31,32],[3,6,7,8,10,13,25],[13,14,15,16,17,25,26,27,28,29,30,31,32,33,34,35,36,37,38]],"referencedMap":[[5,1],[6,2],[2,3],[4,4],[3,5],[45,6],[46,6],[55,7],[54,6],[47,6],[48,6],[49,6],[50,6],[51,6],[52,6],[53,6],[24,8],[21,9],[23,10],[40,6],[41,11],[42,12],[44,13],[25,14],[14,15],[32,16],[26,17],[15,18],[27,19],[31,20],[30,21],[28,22],[13,23],[11,24],[10,25],[12,26],[17,27],[34,28],[36,28],[37,29],[35,28],[38,29],[29,30],[33,31],[16,32],[39,33]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58]},"version":"5.5.3"}
1
+ {"program":{"fileNames":["../node_modules/@rbxts/t/lib/t.d.ts","../node_modules/@flamework/core/out/modding.d.ts","../node_modules/@flamework/core/out/utility.d.ts","../node_modules/@flamework/core/out/reflect.d.ts","../node_modules/@flamework/core/out/flamework.d.ts","../node_modules/@flamework/core/out/index.d.ts","../node_modules/@rbxts/jecs/jecs.d.ts","../node_modules/@rbxts/services/index.d.ts","../src/framework/flamecs/signal.ts","../src/framework/flamecs/registry.ts","../src/framework/flamecs/query.ts","../src/framework/flamecs/topo.ts","../src/framework/flamecs/index.ts","../src/framework/components/destroyed-component.ts","../src/framework/decorators/inject-type.ts","../src/framework/utilities.ts","../src/framework/hooks/query-change.ts","../node_modules/@rbxts/immut/src/none.d.ts","../node_modules/@rbxts/immut/src/makedraftsafe.d.ts","../node_modules/@rbxts/immut/src/makedraftsafereadonly.d.ts","../node_modules/@rbxts/immut/src/table.d.ts","../node_modules/@rbxts/immut/src/types-internal.d.ts","../node_modules/@rbxts/immut/src/types-external.d.ts","../node_modules/@rbxts/immut/src/index.d.ts","../src/framework/base-system.ts","../src/framework/decorators/component.ts","../src/framework/decorators/system.ts","../src/framework/dependencies-container.ts","../node_modules/@rbxts/planck/out/utils.d.ts","../node_modules/@rbxts/planck/out/conditions.d.ts","../node_modules/@rbxts/planck/out/phase.d.ts","../node_modules/@rbxts/planck/out/pipeline.d.ts","../node_modules/@rbxts/planck/out/scheduler.d.ts","../node_modules/@rbxts/planck/out/index.d.ts","../node_modules/@rbxts/planck-runservice/out/index.d.ts","../src/framework/index.ts","../src/framework/decorators/unaffectable.ts","../src/framework/decorators/tagged.ts","../src/framework/components/roblox-instance-component.ts","../src/framework/systems/roblox-instance-system.ts","../src/framework/hooks/use-added.ts","../src/framework/hooks/use-removed.ts","../src/framework/hooks/use-changed.ts","../src/framework/hooks/use-event.ts","../src/framework/hooks/use-throttle.ts","../src/index.ts","../node_modules/@rbxts/types/include/generated/enums.d.ts","../node_modules/@rbxts/types/include/generated/none.d.ts","../node_modules/@rbxts/types/include/lua.d.ts","../node_modules/@rbxts/types/include/macro_math.d.ts","../node_modules/@rbxts/types/include/roblox.d.ts","../node_modules/@rbxts/compiler-types/types/array.d.ts","../node_modules/@rbxts/compiler-types/types/callmacros.d.ts","../node_modules/@rbxts/compiler-types/types/iterable.d.ts","../node_modules/@rbxts/compiler-types/types/map.d.ts","../node_modules/@rbxts/compiler-types/types/promise.d.ts","../node_modules/@rbxts/compiler-types/types/set.d.ts","../node_modules/@rbxts/compiler-types/types/string.d.ts","../node_modules/@rbxts/compiler-types/types/symbol.d.ts","../node_modules/@rbxts/compiler-types/types/typeutils.d.ts","../node_modules/@rbxts/compiler-types/types/eslintignore.d.ts","../node_modules/@rbxts/compiler-types/types/core.d.ts","../node_modules/@rbxts/maid/maid.d.ts","../node_modules/@rbxts/object-utils/index.d.ts","../node_modules/@rbxts/signal/index.d.ts"],"fileInfos":[{"version":"429178068cb844a452dad87eb0a7a02466f3509fff9e7f1187fdb0595e66b8df","signature":false},{"version":"f984bb5cbefabad3e6279516673ca0cb2098304225cfe61987f2af81daf3f99a","signature":false},{"version":"5ed7aeb5909b9e1607087690870addc6df2d3d7e6e3e16f389fe21da53915526","signature":false},{"version":"1fe834c2d906a0d49917ce932bb495bfbb58912d49ad6b03f66ae0be14ad9def","signature":false},{"version":"99709374cb8bf64c65dad5350c88a805af91e107545e18af91e4839d4336a441","signature":false},{"version":"a1a226a8d6b1039d7d0613381c2f4dec614c30305cf96ee973cc49973d9745e4","signature":false},{"version":"1f0f6e103444aad5f544988f7a8390e351b30481ce6eac8ad7765911c56dda6e","signature":false},{"version":"9e6c13e0c00f23d1e9a40e4652ef4e604bdf6747feab7d7b7ca66b5d6bcfa330","signature":false},{"version":"cff894ef201eb519e33e59b861ceb3766076e4f371734218d331157a3b307a11","signature":false},{"version":"feb2c8f07ee9b742997c75e1378d9318c3ed6252a6674c8a3bf2b4256a98bfbb","signature":false},{"version":"cf75483180e62aa81e878d688cdd40b6d86b120cd84ea4acff735b13c9a81406","signature":false},{"version":"c2b615b7c60bf38930966af14e64cc1ef33ed23ba0a77bdd8ea09fdc4f5e2683","signature":false},{"version":"3800f61fdda8762cb1f766f6badbc560a94853c8c6a21b67d8e0f746eb15926c","signature":false},{"version":"a3adf1732167824c54869e10749d1d5529167a6dbe6fca946e572fb871d40779","signature":false},{"version":"474d1e2b04aa20949db0906e4276c1ef878bd4dfa5213d671a8fc57581b5d48f","signature":false},{"version":"1ae822425fa98664f23f33105477e35c16056a289464227dd246f7bc15aa9717","signature":false},{"version":"f63d7cdd778a7ea18b0d61359ab48023b001d45096dfb759dc09a101c0c41a72","signature":false},{"version":"d9d14150234c32bc0bf772d69182b166d8de600e0e5207924867da19351aca53","signature":false},{"version":"1a73eb921b7aa92d4c2d86ec95a39f5f73cf170b939314394d1b87bd06ae707b","signature":false},{"version":"5e5db3fb2f4f1a4d5276b9ba8f78df1f5f73754eeae5e2c23028f7830a2b66f9","signature":false},{"version":"3a36f6c843d1b4e91f80d6ff3ef8b5e25e1948fae24b8c62631c5df1faf82e41","signature":false},{"version":"dba94b73dbbe23c5066eeafc9f4f8dbf4430a4ab73d2d0d251fe4c1cd029d90b","signature":false},{"version":"564a52d0f974d976d982a2385ac5b353329f2dadab4f7616ee303678a7f64134","signature":false},{"version":"ff329383f830b2ba7578f67a374e2b8077f0b3d7036bf4d1a24edcc95de45c5d","signature":false},{"version":"8718b024a68cfde1aa3aa90d8260ceab45e1bf14819b8d130aeedb3cd60bb610","signature":false},{"version":"4d406ad246a632b296d15664e6dce343d733ae17ef88aadbb4d5b3a55adb9373","signature":false},{"version":"afa4bcb1c950e70212cc4ccf83a6096a25bc4280fb03bf94157f2eea853fad15","signature":false},{"version":"a33ede8b136b4eebe87227e5e66bf1cba9ca9adde420b5667fb2de6a640213c5","signature":false},{"version":"6012a8d5986c48029756e1c9ad5153f50af540e8aaa76ddf26ca860835857ce9","signature":false},{"version":"499ab101952e35989d138b092f00c4af72eeecbfc8e8f5cf66bedce4b6ad8d95","signature":false},{"version":"901e5e72e5541e609f179f0ac44db1a057a04c13b535504eb3ea9d59b44d7d1b","signature":false},{"version":"81e5cefd5ad881498e2a6ae98eabd1eae22432f569cf96e7d82dab79fd8399f5","signature":false},{"version":"008dae8f3575ffbef098e31624a1da2b0d5defe667df587db66401c3f8f686dc","signature":false},{"version":"c46bd205c2482e6063d0e411e9425b2a27954a700af9e40fc9b60d121951ad21","signature":false},{"version":"00c835dad309d5d7471f0e55193c146cf5fa5f03107c012e63b4d8f122acba34","signature":false},{"version":"85b9c55328e4a1ef530e3914fceeca605e615408aadd84fe29e1b83b97f74399","signature":false},{"version":"531c125862ac8e801bca17eaacc89b21e0d49ef80a76bf7dbd09b006f3e27a4a","signature":false},{"version":"38f64fd419f35022241871580ad13977e63da2943f9d6ced56e683f36988a76a","signature":false},{"version":"be4e6ec9fe788d72a70afbdc4c297ea31d842a9ea301559f5ca42cdf13db1383","signature":false},{"version":"fd6d64cc6086887eed05f071b84d7ae2dedd16d8f944f01fb8351578aac9d4d6","signature":false},{"version":"8d1395d7fa6381cf71368706cf815130a32895fddd44acb047751072801f90bb","signature":false},{"version":"cdeedec78d8c66fc7522d13e9a2150edda98b18fd3bb95d0f556b6678d0c3739","signature":false},{"version":"7e8bf6cb0c7e13b34a8b40c4b36e633d639b8c4a3b5dec3a55a08bf26caf9a6b","signature":false},{"version":"27b0c41f2f485e59eaaab0d65c192ca022d7fcea87b2c24c9405a91e8b7a4a79","signature":false},{"version":"20d034b52037a7e5b0268fde45a111ffa9f0ae2e04819549d677262711d9dcf2","signature":false},{"version":"96f86d69285464e402bcc634bed6b3b059ff40f1d8ab801cdbdffeddc65212b4","signature":false},{"version":"6eb7fae75c4a1a6bdee1d48700000f43f9d5cff7987f08bd49f21ed1ac0b7c4b","signature":false,"affectsGlobalScope":true},{"version":"3a5626be0c9a1aae6f75d0d38bcea4d070e5d1381a843a9b4eafd3eab6ed7ef7","signature":false,"affectsGlobalScope":true},{"version":"f6c97e5b3403d6f8683372fff53430b8d93728a60f04623bd3de9e470fe71259","signature":false,"affectsGlobalScope":true},{"version":"bfb3f3bd1d89a54d975a7554c8d12209188d7b849d00b9345fd0d41d79858e38","signature":false,"affectsGlobalScope":true},{"version":"22f424c221d557a69d83386550a272558bfef6f81b1dbacd3d35b4651b128d2b","signature":false,"affectsGlobalScope":true},{"version":"d1461f750f98ba938cf3b43f1095774f6007b92a4550bbfde87451dccc32b3bd","signature":false,"affectsGlobalScope":true},{"version":"c30a7a2198451431d80de5f9ba7197a0c8a56d52b29373e7270115776a28f3f3","signature":false,"affectsGlobalScope":true},{"version":"d4d6595aca02f63e2107a842fdd8f79e147fd802acd0e60900f16bee4f861173","signature":false,"affectsGlobalScope":true},{"version":"2070e277f4e874747a7706f000f19f2f512f9829f65f4caf634a908c07f45117","signature":false,"affectsGlobalScope":true},{"version":"7f53343307db666fa6a82bf5165f961d4b70e268ffb7e4e108f06d953c10c679","signature":false,"affectsGlobalScope":true},{"version":"8d10b5097dc2692979a984b4c56deaa0ad77c3a7b036a066ea0a72ec8c514830","signature":false,"affectsGlobalScope":true},{"version":"a252fd9c3a3e55eab45c1c78d376e7a8d82e736d55a5d95a1b285290881d5f88","signature":false,"affectsGlobalScope":true},{"version":"dde6ecc6409a17b372382192ca43c78c52015f34f49547ead38194c63127793a","signature":false,"affectsGlobalScope":true},{"version":"ed7b23f234388de62c9f86bcecd4608a854067fc20f2b4698b9f14ce0d92f4f2","signature":false,"affectsGlobalScope":true},{"version":"85ce7d3110c6652c276ea4d027bc1887176d97a5b7494f288cbbdfb2b48a11ee","signature":false,"affectsGlobalScope":true},{"version":"52535c5f6ea63e76c537e39df77b0720827e3f8d0fac9e2386352f0b6110a211","signature":false,"affectsGlobalScope":true},{"version":"abfe7c34c18ff9a242d5b7e4aba61dfb14b2db55ce5edce1798aaae365fa9cfe","signature":false},{"version":"7b9707d4934d0b63c71920058db2bd6f815b90c4ace1100ea24915c14c9af895","signature":false},{"version":"f73b1d7270a91ed30c71075ee5e0472465931a37ecdb5834c9d8ebe828847b45","signature":false}],"root":[[9,17],[25,28],[36,46]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"downlevelIteration":true,"experimentalDecorators":true,"jsx":2,"module":1,"outDir":"./","rootDir":"../src","strict":true,"target":99,"tsBuildInfoFile":"./tsconfig.tsbuildinfo"},"fileIdsList":[[1,2,3],[2,4,5],[1,3],[3],[2],[51],[51,52,53,54,55,56,57,58,59,60,61],[18,21,22,23],[19,20],[22],[34],[29],[30,31,32,33],[31],[29,30,31,32,34],[47,51],[48,62],[47,48,49,50,62],[3,6,7,9,10,13,14,15,17,23,24,36],[13],[26],[1,3,6,7,16,25],[1,6],[3,6,16,25],[3,7,13,16,28],[6],[3,6,15,16],[10,11,12],[7,10],[6,7,9],[7,25],[6,7,10,13,14,16],[6,10,13,16],[6,13],[3,6,7,8,9,10,13,16,25,26,27,28,34,35],[7,8,10,15,16,25,27,28,38,39],[3,6,7,8,10,13],[13,14,15,16,17,25,26,27,28,36,37,38,39,40,41,42,43,44,45]],"referencedMap":[[5,1],[6,2],[2,3],[4,4],[3,5],[52,6],[53,6],[62,7],[61,6],[54,6],[55,6],[56,6],[57,6],[58,6],[59,6],[60,6],[24,8],[21,9],[23,10],[35,11],[30,12],[34,13],[32,14],[33,15],[47,6],[48,16],[49,17],[51,18],[25,19],[14,20],[39,21],[26,22],[15,23],[27,24],[38,25],[37,26],[28,27],[13,28],[11,29],[10,30],[12,31],[17,32],[41,33],[43,33],[44,34],[42,33],[45,34],[36,35],[40,36],[16,37],[46,38]],"semanticDiagnosticsPerFile":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65]},"version":"5.5.3"}
package/package.json CHANGED
@@ -1,45 +1,49 @@
1
- {
2
- "name": "@ecsframework/core",
3
- "version": "0.1.4",
4
- "description": "",
5
- "main": "out/init.lua",
6
- "scripts": {
7
- "build": "rbxtsc",
8
- "watch": "rbxtsc -w",
9
- "test:watch": "rbxtsc -w --type=game -p test -i test/include",
10
- "serve": "rojo serve test/default.project.json",
11
- "prepublishOnly": "npm run build"
12
- },
13
- "keywords": [],
14
- "author": "",
15
- "license": "ISC",
16
- "types": "out/index.d.ts",
17
- "files": [
18
- "out",
19
- "flamework.build"
20
- ],
21
- "publishConfig": {
22
- "access": "public"
23
- },
24
- "devDependencies": {
25
- "@rbxts/compiler-types": "^3.0.0-types.0",
26
- "@rbxts/types": "^1.0.876",
27
- "@typescript-eslint/eslint-plugin": "^8.39.1",
28
- "@typescript-eslint/parser": "^8.39.1",
29
- "eslint": "^8.57.1",
30
- "eslint-config-prettier": "^10.1.8",
31
- "eslint-plugin-prettier": "^5.5.4",
32
- "eslint-plugin-roblox-ts": "^1.1.0",
33
- "prettier": "^3.6.2",
34
- "roblox-ts": "^3.0.0",
35
- "typescript": "^5.5.3"
36
- },
37
- "peerDependencies": {
38
- "@flamework/core": "*",
39
- "@rbxts/immut": ">=0.4.4-ts.0",
40
- "@rbxts/jecs": ">=0.9.0-rc.10",
41
- "@rbxts/services": ">=1.5.5",
42
- "@rbxts/signal": ">=1.1.1",
43
- "rbxts-transformer-flamework": "*"
44
- }
45
- }
1
+ {
2
+ "name": "@ecsframework/core",
3
+ "version": "0.1.6",
4
+ "description": "",
5
+ "main": "out/init.lua",
6
+ "scripts": {
7
+ "build": "rbxtsc",
8
+ "watch": "rbxtsc -w",
9
+ "test:watch": "rbxtsc -w --type=game -p test -i test/include",
10
+ "serve": "rojo serve test/default.project.json",
11
+ "prepublishOnly": "npm run build"
12
+ },
13
+ "keywords": [],
14
+ "author": "",
15
+ "license": "ISC",
16
+ "types": "out/index.d.ts",
17
+ "files": [
18
+ "out",
19
+ "flamework.build"
20
+ ],
21
+ "publishConfig": {
22
+ "access": "public"
23
+ },
24
+ "devDependencies": {
25
+ "@rbxts/compiler-types": "^3.0.0-types.0",
26
+ "@rbxts/types": "^1.0.876",
27
+ "@typescript-eslint/eslint-plugin": "^8.39.1",
28
+ "@typescript-eslint/parser": "^8.39.1",
29
+ "eslint": "^8.57.1",
30
+ "eslint-config-prettier": "^10.1.8",
31
+ "eslint-plugin-prettier": "^5.5.4",
32
+ "eslint-plugin-roblox-ts": "^1.1.0",
33
+ "prettier": "^3.6.2",
34
+ "roblox-ts": "^3.0.0",
35
+ "typescript": "^5.5.3"
36
+ },
37
+ "peerDependencies": {
38
+ "@flamework/core": "*",
39
+ "@rbxts/immut": ">=0.4.4-ts.0",
40
+ "@rbxts/jecs": ">=0.9.0-rc.10",
41
+ "@rbxts/services": ">=1.5.5",
42
+ "@rbxts/signal": ">=1.1.1",
43
+ "rbxts-transformer-flamework": "*"
44
+ },
45
+ "dependencies": {
46
+ "@rbxts/planck": "^1.0.0",
47
+ "@rbxts/planck-runservice": "^1.0.3"
48
+ }
49
+ }