mirror of
https://github.com/Ukendio/jecs.git
synced 2026-02-04 15:15:21 +00:00
* Correct Cleanup example: Change OnSet to OnAdd `jecs.OnSet` no longer exists. This should be `jecs.OnAdd` instead, which does exist. * Clarify OnAdd hook in cleanup.luau Add comment to clarify OnAdd hook behavior
22 lines
878 B
Text
Executable file
22 lines
878 B
Text
Executable file
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.OnAdd, function(entity, id, model)
|
|
-- OnAdd is invoked after the data has been assigned.
|
|
-- This hook only fires the first time the component is added.
|
|
-- 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)
|