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) world
val new_world : unit -> ('a, 'b) Ent.world
val add_entity :
('a, 'b) Ent.world -> ('a, 'b) Ent.entity -> ('a, 'b) Ent.world
val add_entities :
('a, 'b) Ent.world -> ('a, 'b) Ent.entity list -> ('a, 'b) Ent.world
val add_entity_id :
('a, 'b) Ent.world -> ('a, 'b) Ent.entity -> ('a, 'b) Ent.world * Ent.id
val add_entities_id :
('a, 'b) Ent.world ->
('a, 'b) Ent.entity list -> ('a, 'b) Ent.world * Ent.id list
val add_entities_init :
w:('a, 'b) Ent.world ->
n:int -> f:(int -> ('a, 'b) Ent.entity) -> ('a, 'b) Ent.world
val add_entities_ar :
('a, 'b) Ent.world -> ('a, 'b) Ent.entity array -> ('a, 'b) Ent.world
val add_entities_id_ar :
('a, 'b) Ent.world ->
('a, 'b) Ent.entity array -> ('a, 'b) Ent.world * Ent.id array
val has_entity : ('a, 'b) Ent.world -> Ent.id -> bool
val replace_entity :
('a, 'b) Ent.world -> Ent.id -> ('a, 'b) Ent.entity -> ('a, 'b) Ent.world
val remove_entity :
('a, 'b) Ent.world -> ('a, 'b) Ent.entity -> ('a, 'b) Ent.world
val remove_entity_id : ('a, 'b) Ent.world -> Ent.id -> ('a, 'b) Ent.world
val get_entity : ('a, 'b) Ent.world -> Ent.id -> ('a, 'b) Ent.entity
val get_entity_opt :
('a, 'b) Ent.world -> Ent.id -> ('a, 'b) Ent.entity option
val get_entities :
('a, 'b) Ent.world -> Ent.id list -> ('a, 'b) Ent.entity list
val do_get_entities :
('a, 'b) Ent.world -> Ent.id list -> ('a, 'b) Ent.entity list
val get_entities_with_components :
('comp_t, 'comp) Ent.world ->
'comp_t list -> ('comp_t, 'comp) Ent.entity list
val iter_entities :
(('a, 'b) Ent.entity -> unit) -> ('a, 'b) Ent.world -> unit
val fold_entities :
(('a, 'b) Ent.entity -> 'p -> 'p) -> ('a, 'b) Ent.world -> 'p -> 'p
val num_entities : ('a, 'b) Ent.world -> int
val num_entities_with_components :
('comp_t, 'b) Ent.world -> 'comp_t list -> int
type 'component_type mapper
val add_mapper :
('comp_t, 'b) Ent.world ->
'comp_t list -> ('comp_t, 'b) Ent.world * 'comp_t Ent.mapper
type 'a update = Identical | Updated of 'a | Replace of 'a | Removed
type ('comp_t, 'comp, 'delta) system =
('comp_t, 'comp) Ent.entity ->
('comp_t, 'comp) Ent.world ->
'delta ->
('comp_t, 'comp) Ent.entity Ent.update *
('comp_t, 'comp) Ent.entity list
type ('a, 'b, 'delta, 'fld) foldable_system =
('a, 'b) Ent.entity ->
('a, 'b) Ent.world ->
'delta ->
'fld ->
('a, 'b) Ent.entity Ent.update * ('a, 'b) Ent.entity list * 'fld
type ('comp_t, 'comp, 'fld) born_feedback_func =
('comp_t, 'comp) Ent.world ->
('comp_t, 'comp) Ent.entity ->
Ent.id list -> 'fld -> ('comp_t, 'comp) Ent.world * 'fld
val world_step :
('a, 'b) Ent.world ->
('a, 'b, 'delta) Ent.system ->
'a Ent.mapper -> 'delta -> ('a, 'b) Ent.world
val world_step_fold :
('a, 'b) Ent.world ->
('a, 'b, 'delta, 'fld) Ent.foldable_system ->
'a Ent.mapper ->
?fb:('a, 'b, 'fld) Ent.born_feedback_func ->
'delta -> 'fld -> ('a, 'b) Ent.world * 'fld
end