hammer/lib/ref.luau
2024-09-21 19:12:15 +02:00

27 lines
653 B
Text

--!strict
--!optimize 2
local handle = require("./handle")
local world = require("./world").get()
local refs = {}
--- Gets an entity the given key references to.
--- If the key is nil, an entirely new entity is created and returned.
--- If the key doesn't reference an entity, a new entity is made for it to reference and returned.
--- @param key any
--- @return handle
local function ref(key: any): handle.handle
if not key then
return handle.new(world:entity())
end
local entity = refs[key]
if not entity then
entity = world:entity()
refs[key] = entity
end
return handle.new(entity)
end
return ref