mirror of
https://github.com/Ukendio/jecs.git
synced 2025-04-25 09:30:03 +00:00
feedback acquired
This commit is contained in:
parent
1e53fdc955
commit
bee330c9a5
1 changed files with 7 additions and 13 deletions
20
lib/init.lua
20
lib/init.lua
|
@ -362,7 +362,7 @@ function World.remove(world: World, entityId: i53, componentId: i53)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Keeping the function as small as possible to enable inlining
|
-- Keeping the function as small as possible to enable inlining
|
||||||
local function get(_componentIndex: {[i24]: ArchetypeMap}, record: Record, componentId: i24)
|
local function get(record: Record, componentId: i24)
|
||||||
local archetype = record.archetype
|
local archetype = record.archetype
|
||||||
local archetypeRecord = archetype.records[componentId]
|
local archetypeRecord = archetype.records[componentId]
|
||||||
|
|
||||||
|
@ -375,22 +375,21 @@ end
|
||||||
|
|
||||||
function World.get(world: World, entityId: i53, a: i53, b: i53?, c: i53?, d: i53?, e: i53?)
|
function World.get(world: World, entityId: i53, a: i53, b: i53?, c: i53?, d: i53?, e: i53?)
|
||||||
local id = entityId
|
local id = entityId
|
||||||
local componentIndex = world.componentIndex
|
|
||||||
local record = world.entityIndex[id]
|
local record = world.entityIndex[id]
|
||||||
if not record then
|
if not record then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
local va = get(componentIndex, record, a)
|
local va = get(record, a)
|
||||||
|
|
||||||
if b == nil then
|
if b == nil then
|
||||||
return va
|
return va
|
||||||
elseif c == nil then
|
elseif c == nil then
|
||||||
return va, get(componentIndex, record, b)
|
return va, get(record, b)
|
||||||
elseif d == nil then
|
elseif d == nil then
|
||||||
return va, get(componentIndex, record, b), get(componentIndex, record, c)
|
return va, get(record, b), get(record, c)
|
||||||
elseif e == nil then
|
elseif e == nil then
|
||||||
return va, get(componentIndex, record, b), get(componentIndex, record, c), get(componentIndex, record, d)
|
return va, get(record, b), get(record, c), get(record, d)
|
||||||
else
|
else
|
||||||
error("args exceeded")
|
error("args exceeded")
|
||||||
end
|
end
|
||||||
|
@ -447,7 +446,7 @@ function World.query(world: World, ...: i53): Query
|
||||||
skip = true
|
skip = true
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
indices[i] = archetypeRecords[componentId]
|
indices[i] = index
|
||||||
end
|
end
|
||||||
|
|
||||||
if skip then
|
if skip then
|
||||||
|
@ -642,13 +641,8 @@ function World.observer(world: World, ...)
|
||||||
local columns = archetype.columns
|
local columns = archetype.columns
|
||||||
local archetypeRecords = archetype.records
|
local archetypeRecords = archetype.records
|
||||||
for _, id in componentIds do
|
for _, id in componentIds do
|
||||||
local value = columns[archetypeRecords[id]][row]
|
|
||||||
if value == nil then
|
|
||||||
continue
|
|
||||||
end
|
|
||||||
|
|
||||||
length += 1
|
length += 1
|
||||||
queryOutput[length] = value
|
queryOutput[length] = columns[archetypeRecords[id]][row]
|
||||||
end
|
end
|
||||||
|
|
||||||
return archetype.entities[row], unpack(queryOutput, 1, length)
|
return archetype.entities[row], unpack(queryOutput, 1, length)
|
||||||
|
|
Loading…
Reference in a new issue