2025-04-05 02:03:17 +07:00
2025-04-05 01:27:43 +07:00
2025-01-04 07:24:03 +07:00
2024-11-10 20:13:02 +07:00
2025-01-22 09:35:59 +07:00
2025-04-30 23:34:23 +07:00
2025-01-02 07:58:29 +07:00
2025-04-30 23:34:23 +07:00
2025-04-28 15:47:35 +07:00

evolved.lua (work in progress)

Evolved ECS (Entity-Component-System) for Lua

lua5.1 lua5.4 luajit license

Requirements

Predefs

TAG :: fragment
NAME :: fragment

UNIQUE :: fragment
EXPLICIT :: fragment

DEFAULT :: fragment
DUPLICATE :: fragment

PREFAB :: fragment
DISABLED :: fragment

INCLUDES :: fragment
EXCLUDES :: fragment

ON_SET :: fragment
ON_ASSIGN :: fragment
ON_INSERT :: fragment
ON_REMOVE :: fragment

GROUP :: fragment

QUERY :: fragment
EXECUTE :: fragment

PROLOGUE :: fragment
EPILOGUE :: fragment

DESTROY_POLICY :: fragment
DESTROY_POLICY_DESTROY_ENTITY :: id
DESTROY_POLICY_REMOVE_FRAGMENT :: id

Functions

id :: integer? -> id...

pack :: integer, integer -> id
unpack :: id -> integer, integer

defer :: boolean
commit :: boolean

spawn :: <fragment, component>? -> entity
clone :: entity -> <fragment, component>? -> entity

alive :: entity -> boolean
alive_all :: entity... -> boolean
alive_any :: entity... -> boolean

empty :: entity -> boolean
empty_all :: entity... -> boolean
empty_any :: entity... -> boolean

has :: entity, fragment -> boolean
has_all :: entity, fragment... -> boolean
has_any :: entity, fragment... -> boolean

get :: entity, fragment...  -> component...

set :: entity, fragment, component -> ()
remove :: entity, fragment... -> ()
clear :: entity... -> ()
destroy :: entity... -> ()

batch_set :: query, fragment, component -> ()
batch_remove :: query, fragment... -> ()
batch_clear :: query... -> ()
batch_destroy :: query... -> ()

each :: entity -> {each_state? -> fragment?, component?}, each_state?
execute :: query -> {execute_state? -> chunk?, entity[]?, integer?}, execute_state?

process :: system... -> ()

debug_mode :: boolean -> ()
collect_garbage :: ()

Chunk

chunk :: fragment, fragment... -> chunk, entity[], integer

chunk:alive :: boolean
chunk:empty :: boolean

chunk:has :: fragment -> boolean
chunk:has_all :: fragment... -> boolean
chunk:has_any :: fragment... -> boolean

chunk:entities :: entity[], integer
chunk:fragments :: fragment[], integer
chunk:components :: fragment... -> component[]...

Builder

builder :: builder

builder:spawn :: entity
builder:clone :: entity -> entity

builder:has :: fragment -> boolean
builder:has_all :: fragment... -> boolean
builder:has_any :: fragment... -> boolean

builder:get :: fragment... -> component...

builder:set :: fragment, component -> builder
builder:remove :: fragment... -> builder
builder:clear :: builder

builder:tag :: builder
builder:name :: string -> builder

builder:unique :: builder
builder:explicit :: builder

builder:default :: component -> builder
builder:duplicate :: {component -> component} -> builder

builder:prefab :: builder
builder:disabled :: builder

builder:include :: fragment... -> builder
builder:exclude :: fragment... -> builder

builder:on_set :: {entity, fragment, component, component?} -> builder
builder:on_assign :: {entity, fragment, component, component} -> builder
builder:on_insert :: {entity, fragment, component} -> builder
builder:on_remove :: {entity, fragment} -> builder

builder:group :: system -> builder

builder:query :: query -> builder
builder:execute :: {chunk, entity[], integer} -> builder

builder:prologue :: {} -> builder
builder:epilogue :: {} -> builder

builder:destroy_policy :: id -> builder

License (MIT)

Description
Evolved ECS (Entity-Component-System) for Lua
Readme 6.6 MiB
Languages
Lua 100%