You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
1.7 KiB
Lua
127 lines
1.7 KiB
Lua
-- test object
|
|
local ecs = require "ecs"
|
|
|
|
local w = ecs.world()
|
|
|
|
w:register {
|
|
name = "refobject",
|
|
type = "int",
|
|
ref = true,
|
|
}
|
|
|
|
local id1 = w:ref("refobject", { refobject = 42 })
|
|
local id2 = w:ref("refobject", { refobject = 0 })
|
|
local id3 = w:ref("refobject", { refobject = 100 })
|
|
print ("New", id1, id2, id3)
|
|
print(w:object("refobject", id1))
|
|
|
|
print("Release", id1)
|
|
|
|
w:release("refobject", id1)
|
|
|
|
for v in w:select "refobject:in" do
|
|
print(v.refobject)
|
|
end
|
|
|
|
local id4 = w:ref("refobject", { refobject = -42 })
|
|
print ("New", id4)
|
|
|
|
print ("Release", id2)
|
|
|
|
w:release("refobject", id2)
|
|
|
|
print ("Release", id3)
|
|
|
|
w:release("refobject", id3)
|
|
|
|
print "List refobject"
|
|
|
|
for v in w:select "refobject:in" do
|
|
print(v.refobject)
|
|
end
|
|
|
|
w:register {
|
|
name = "index",
|
|
type = "int",
|
|
}
|
|
|
|
w:new {
|
|
index = id4
|
|
}
|
|
|
|
for v in w:select "index:in" do
|
|
print(v.index)
|
|
end
|
|
|
|
print "Index refobject"
|
|
|
|
for v in w:select "refobject(index):in" do
|
|
print(v.refobject)
|
|
end
|
|
|
|
w:register {
|
|
name = "name",
|
|
type = "lua",
|
|
}
|
|
|
|
w:new {
|
|
name = "Hello"
|
|
}
|
|
|
|
for v in w:select "index:in" do
|
|
print(v.index)
|
|
end
|
|
|
|
|
|
for v in w:select "name refobject(index):temp" do
|
|
v.refobject = 42
|
|
end
|
|
|
|
for v in w:select "refobject:in" do
|
|
print(v.refobject)
|
|
end
|
|
|
|
for v in w:select "refobject(index):update" do
|
|
v.refobject = v.refobject + 1
|
|
end
|
|
|
|
for v in w:select "refobject:in" do
|
|
print(v.refobject)
|
|
end
|
|
|
|
w:register {
|
|
name = "mark"
|
|
}
|
|
|
|
local ref = w:object_ref("refobject", id4)
|
|
ref.mark = true
|
|
w:sync("mark?out", ref)
|
|
|
|
|
|
w:ref ("refobject", {
|
|
refobject = 42,
|
|
mark = true
|
|
})
|
|
|
|
print "Marked refobject"
|
|
|
|
for v in w:select "mark refobject?in" do
|
|
print(v.refobject)
|
|
end
|
|
|
|
w:register {
|
|
name = "refobject2",
|
|
type = "int",
|
|
ref = true,
|
|
}
|
|
|
|
w:register {
|
|
name = "mark2"
|
|
}
|
|
|
|
w:ref ("refobject2", {
|
|
refobject2 = 42,
|
|
mark = true,
|
|
mark2 = false,
|
|
})
|