Compare commits

...

3 commits

Author SHA1 Message Date
nonamie
15d5c44085 fix TData infer issue 2024-12-14 18:46:19 +03:00
nonamie
059a49132b remove commented Id/Pair types 2024-12-14 11:53:11 +03:00
nonamie
e28a6bc819 fix "set" method defition 2024-12-14 11:30:50 +03:00

25
jecs.d.ts vendored
View file

@ -4,7 +4,7 @@
* and cannot be used used as a component to associate any kind of data with itself.
*/
export type Id = number & {
readonly __nominal_Id: unique symbol,
readonly __nominal_Id: unique symbol;
};
/*
@ -15,7 +15,7 @@ export type Id = number & {
* indicating that the entity is intended to only store other entities.
*/
export type Tag = Id & {
readonly __nominal_Tag: unique symbol,
readonly __nominal_Tag: unique symbol;
};
/**
@ -23,25 +23,10 @@ export type Tag = Id & {
* This identifier is associated with `TData` data when this entity is used as a component.
*/
export type Entity<TData = unknown> = Tag & {
readonly __nominal_Entity: unique symbol,
readonly __nominal_Entity: unique symbol;
readonly __type_TData: TData;
};
/**
* A pair of entities.
*
* `TRelationship` is the type of the predicate, `TTarget` is the type of the object, and `TData` is the type of the value (defaults to `TRelationship`)
*/
//export type Pair<TRelationship = unknown, TTarget = unknown, TData = TRelationship> = number & {
// readonly __nominal_Pair: unique symbol,
//};
/**
* Either an Entity or a Pair.
*
* An id that can be added and removed.
*/
//export type Id<TData = unknown> = Entity<TData> | Pair<unknown, unknown, TData>;
type InferComponent<TValue> = TValue extends Entity<infer TData> ? TData : never;
type FlattenTuple<TItems extends any[]> = TItems extends [infer TValue] ? TValue : LuaTuple<TItems>;
@ -149,7 +134,7 @@ export class World {
* @param component Target Component
* @param value Component Value
*/
set(entity: Id, component: Entity, value: InferComponent<typeof component>): void;
set<TData>(entity: Id, component: Entity<TData>, value: NoInfer<TData>): void;
/**
* Removes a component from the given entity