sig
type id = int
type ('component_type, 'component) entity
val new_entity : unit -> ('comp_t, 'comp) Ent.entity
val get_id : ('comp_t, 'comp) Ent.entity -> Ent.id
val get_id_opt : ('comp_t, 'comp) Ent.entity -> Ent.id option
val add_component :
('comp_t, 'comp) Ent.entity ->
'comp_t * 'comp -> ('comp_t, 'comp) Ent.entity
val replace_component :
('comp_t, 'comp) Ent.entity ->
'comp_t -> 'comp -> ('comp_t, 'comp) Ent.entity
val has_component : ('comp_t, 'comp) Ent.entity -> 'comp_t -> bool
val has_components : ('comp_t, 'comp) Ent.entity -> 'comp_t list -> bool
val has_any_component : ('comp_t, 'comp) Ent.entity -> 'comp_t list -> bool
val get_component : ('comp_t, 'comp) Ent.entity -> 'comp_t -> 'comp
val get_component_opt :
('comp_t, 'comp) Ent.entity -> 'comp_t -> 'comp option
val remove_component :
('comp_t, 'comp) Ent.entity -> 'comp_t -> ('comp_t, 'comp) Ent.entity
val iter_components :
('comp_t, 'comp) Ent.entity -> ('comp_t -> 'comp -> unit) -> unit
val get_components : ('comp_t, 'comp) Ent.entity -> 'comp_t list
val cmp_components : ('comp_t, 'comp) Ent.entity -> 'comp_t list -> int
val components_match : ('comp_t, 'comp) Ent.entity -> 'comp_t list -> bool
type ('comp_t, 'comp, 'delta, 'fld) world
val new_world : unit -> ('a, 'b, 'c, 'd) Ent.world
val add_entity :
('a, 'b, 'c, 'd) Ent.world ->
('a, 'b) Ent.entity -> ('a, 'b, 'c, 'd) Ent.world
val add_entities :
('a, 'b, 'c, 'd) Ent.world ->
('a, 'b) Ent.entity list -> ('a, 'b, 'c, 'd) Ent.world
val add_entity_id :
('a, 'b, 'c, 'd) Ent.world ->
('a, 'b) Ent.entity -> ('a, 'b, 'c, 'd) Ent.world * Ent.id
val add_entities_id :
('a, 'b, 'c, 'd) Ent.world ->
('a, 'b) Ent.entity list -> ('a, 'b, 'c, 'd) Ent.world * Ent.id list
val add_entities_init :
w:('a, 'b, 'c, 'd) Ent.world ->
n:int -> f:(int -> ('a, 'b) Ent.entity) -> ('a, 'b, 'c, 'd) Ent.world
val add_entities_ar :
('a, 'b, 'c, 'd) Ent.world ->
('a, 'b) Ent.entity array -> ('a, 'b, 'c, 'd) Ent.world
val add_entities_id_ar :
('a, 'b, 'c, 'd) Ent.world ->
('a, 'b) Ent.entity array -> ('a, 'b, 'c, 'd) Ent.world * Ent.id array
val has_entity : ('a, 'b, 'c, 'd) Ent.world -> Ent.id -> bool
val replace_entity :
('a, 'b, 'c, 'd) Ent.world ->
Ent.id -> ('a, 'b) Ent.entity -> ('a, 'b, 'c, 'd) Ent.world
val remove_entity :
('a, 'b, 'c, 'd) Ent.world ->
('a, 'b) Ent.entity -> ('a, 'b, 'c, 'd) Ent.world
val remove_entity_id :
('a, 'b, 'c, 'd) Ent.world -> Ent.id -> ('a, 'b, 'c, 'd) Ent.world
val get_entity :
('a, 'b, 'c, 'd) Ent.world -> Ent.id -> ('a, 'b) Ent.entity
val get_entity_opt :
('a, 'b, 'c, 'd) Ent.world -> Ent.id -> ('a, 'b) Ent.entity option
val get_entities :
('a, 'b, 'c, 'd) Ent.world -> Ent.id list -> ('a, 'b) Ent.entity list
val do_get_entities :
('a, 'b, 'c, 'd) Ent.world -> Ent.id list -> ('a, 'b) Ent.entity list
val get_entities_with_components :
('comp_t, 'comp, 'c, 'd) Ent.world ->
'comp_t list -> ('comp_t, 'comp) Ent.entity list
type system_label = string
type ('comp_t, 'comp, 'delta, 'fld) born_feedback_func =
('comp_t, 'comp, 'delta, 'fld) Ent.world ->
('comp_t, 'comp) Ent.entity ->
Ent.id list -> 'fld -> ('comp_t, 'comp, 'delta, 'fld) Ent.world * 'fld
val world_step :
('a, 'b, 'delta, unit) Ent.world ->
?labels:Ent.system_label list ->
?fb:('a, 'b, 'delta, unit) Ent.born_feedback_func ->
'delta -> ('a, 'b, 'delta, unit) Ent.world
val world_step_fold :
('a, 'b, 'delta, 'fld) Ent.world ->
?labels:Ent.system_label list ->
?fb:('a, 'b, 'delta, 'fld) Ent.born_feedback_func ->
'delta -> 'fld -> ('a, 'b, 'delta, 'fld) Ent.world * 'fld
val iter_entities :
(('a, 'b) Ent.entity -> unit) -> ('a, 'b, 'c, 'd) Ent.world -> unit
val fold_entities :
(('a, 'b) Ent.entity -> 'p -> 'p) ->
('a, 'b, 'c, 'd) Ent.world -> 'p -> 'p
val num_entities : ('a, 'b, 'c, 'd) Ent.world -> int
val num_entities_with_components :
('comp_t, 'b, 'c, 'd) Ent.world -> 'comp_t list -> int
type 'component_type mapper
val make_mapper : 'comp_t list -> 'comp_t Ent.mapper
type 'a update = Unchanged | Updated of 'a | Changed of 'a | Removed
type ('comp_t, 'comp, 'delta, 'a) system =
('comp_t, 'comp) Ent.entity ->
('comp_t, 'comp, 'delta, 'a) Ent.world ->
'delta ->
('comp_t, 'comp) Ent.entity Ent.update *
('comp_t, 'comp) Ent.entity list
val add_system :
('comp_t, 'comp, 'delta, 'a) Ent.world ->
'comp_t Ent.mapper ->
?label:Ent.system_label ->
('comp_t, 'comp, 'delta, 'a) Ent.system ->
('comp_t, 'comp, 'delta, 'a) Ent.world
val add_systems :
('comp_t, 'comp, 'delta, 'a) Ent.world ->
('comp_t Ent.mapper * Ent.system_label option *
('comp_t, 'comp, 'delta, 'a) Ent.system)
list -> ('comp_t, 'comp, 'delta, 'a) Ent.world
type ('comp_t, 'comp, 'delta, 'fld) foldable_system =
('comp_t, 'comp) Ent.entity ->
('comp_t, 'comp, 'delta, 'fld) Ent.world ->
'delta ->
'fld ->
('comp_t, 'comp) Ent.entity Ent.update *
('comp_t, 'comp) Ent.entity list * 'fld
val add_foldable_system :
('comp_t, 'comp, 'delta, 'fld) Ent.world ->
'comp_t Ent.mapper ->
?label:Ent.system_label ->
('comp_t, 'comp, 'delta, 'fld) Ent.foldable_system ->
('comp_t, 'comp, 'delta, 'fld) Ent.world
val add_foldable_systems :
('comp_t, 'comp, 'delta, 'fld) Ent.world ->
('comp_t Ent.mapper * Ent.system_label option *
('comp_t, 'comp, 'delta, 'fld) Ent.foldable_system)
list -> ('comp_t, 'comp, 'delta, 'fld) Ent.world
end