Some changes to how EntityIndex is handled

This commit is contained in:
EncodedVenom 2024-06-15 15:15:26 -04:00
parent 1be305072a
commit eeb48035eb

25
lib/index.d.ts vendored
View file

@ -21,26 +21,25 @@ type ArchetypeMap = {
size: number, size: number,
} }
type EntityIndex = { type Query<T extends unknown[]> = {
without: (...components: Entity[]) => Query<T>;
} & IterableFunction<LuaTuple<[Entity, ...T]>>
// Exported due to functions below requiring this type.
export type EntityIndex = {
dense: { dense: {
[key: number]: number [key: number]: number
}; };
sparse: { sparse: {
[key: number]: Record [key: number]: {
archetype: Archetype,
row: number,
dense: number,
componentRecord: ArchetypeMap,
}
} }
} }
type Record = {
archetype: Archetype,
row: number,
dense: number,
componentRecord: ArchetypeMap,
}
type Query<T extends unknown[]> = {
without: (...components: Entity[]) => Query<T>;
} & IterableFunction<LuaTuple<[Entity, ...T]>>
// Utility Types // Utility Types
export type Entity<T = unknown> = number & { __nominal_type_dont_use: T } export type Entity<T = unknown> = number & { __nominal_type_dont_use: T }
export type EntityType<T> = T extends Entity<infer A> ? A : never; export type EntityType<T> = T extends Entity<infer A> ? A : never;