jecs/examples/hooks/cleanup.luau
Madison 007097b791 Correct Cleanup example: Change OnSet to OnAdd (#289)
* 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
2025-12-16 22:33:48 +01:00

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)