mirror of
https://github.com/Ukendio/jecs.git
synced 2025-04-24 09:00:02 +00:00
21 lines
810 B
Text
21 lines
810 B
Text
local jecs = require("@jecs")
|
|
local world = jecs.World.new()
|
|
|
|
local Model = world:component()
|
|
|
|
-- It is important to define hooks for the component before the component is ever used
|
|
-- otherwise the hooks will never invoke!
|
|
world:set(Model, jecs.OnRemove, function(entity)
|
|
-- OnRemove is invoked before the component and its value is removed
|
|
-- which provides a stable reference to the entity at deletion.
|
|
-- This means that it is safe to retrieve the data inside of a hook
|
|
local model = world:get(entity, Model)
|
|
model:Destroy()
|
|
end)
|
|
|
|
world:set(Model, jecs.OnSet, function(entity, model)
|
|
-- OnSet is invoked after the data has been assigned.
|
|
-- It also returns the data for faster access.
|
|
-- There may be some logic to do some side effects on reassignments
|
|
model:SetAttribute("entityId", entity)
|
|
end)
|