mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-16 14:11:16 +07:00
Compare commits
44 Commits
dc912eb6da
...
v1.4.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 0d7adcb5fd | |||
|
|
f48f1bb290 | ||
|
|
6f1a85165f | ||
|
|
bd87e593e9 | ||
|
|
0eac310fd5 | ||
|
|
22cedd26bb | ||
|
|
d298be4188 | ||
|
|
24933e6a04 | ||
|
|
6841bb42fe | ||
| 2903b077fe | |||
| 7b6ac89c8a | |||
| 6bf13890ef | |||
| db191b805f | |||
| 5ab963022c | |||
| 7de95207d6 | |||
| 4d3b909efb | |||
| 52b3cbeb20 | |||
| fec193f4f0 | |||
| e672b0291a | |||
| 4624f2e603 | |||
| c25769f64f | |||
| d7274765cb | |||
| ef033e7a0c | |||
| 3638dedca5 | |||
| d025ea039b | |||
|
|
6c0df71f17 | ||
|
|
730bffc3ad | ||
|
|
4bbd7ee60a | ||
|
|
79aecc8db3 | ||
|
|
b803faea63 | ||
|
|
722eda0b9b | ||
|
|
c6def51830 | ||
|
|
65312f79dd | ||
|
|
9877e41705 | ||
|
|
3b8367d5c4 | ||
|
|
419a6b6c45 | ||
|
|
368b50770c | ||
|
|
0d49802235 | ||
|
|
f096d747f3 | ||
|
|
4d88063c10 | ||
|
|
bf135534c0 | ||
|
|
177ea7f180 | ||
|
|
b98b5f9c42 | ||
|
|
c7120e8608 |
17
README.md
17
README.md
@@ -59,7 +59,7 @@
|
||||
- [Chunk](#chunk)
|
||||
- [Builder](#builder)
|
||||
- [Changelog](#changelog)
|
||||
- [vX.X.X](#vxxx)
|
||||
- [v1.4.0](#v140)
|
||||
- [v1.3.0](#v130)
|
||||
- [v1.2.0](#v120)
|
||||
- [v1.1.0](#v110)
|
||||
@@ -154,11 +154,11 @@ function evolved.alive_any(...) end
|
||||
Sometimes (for debugging purposes, for example), it is necessary to extract the index and version from an identifier or to pack them back into an identifier. The [`evolved.pack`](#evolvedpack) and [`evolved.unpack`](#evolvedunpack) functions can be used for this purpose.
|
||||
|
||||
```lua
|
||||
---@param index integer
|
||||
---@param version integer
|
||||
---@param primary integer
|
||||
---@param secondary integer
|
||||
---@return evolved.id id
|
||||
---@nodiscard
|
||||
function evolved.pack(index, version) end
|
||||
function evolved.pack(primary, secondary) end
|
||||
|
||||
---@param id evolved.id
|
||||
---@return integer primary
|
||||
@@ -1300,10 +1300,11 @@ builder_mt:destruction_policy :: id -> builder
|
||||
|
||||
## Changelog
|
||||
|
||||
### vX.X.X
|
||||
### v1.4.0
|
||||
|
||||
- Improved query execution performance by caching some internal calculations
|
||||
- Added the universal [`builder.build`](#evolvedbuilder_mtbuild) and [`builder.multi_build`](#evolvedbuilder_mtmulti_build) methods that can be used to spawn or clone entities depending on the method arguments
|
||||
- [`evolved.ON_REMOVE`](#evolvedon_remove) hooks are now invoked before the fragment is actually removed from the entity
|
||||
|
||||
### v1.3.0
|
||||
|
||||
@@ -1409,11 +1410,11 @@ function evolved.name(...) end
|
||||
### `evolved.pack`
|
||||
|
||||
```lua
|
||||
---@param index integer
|
||||
---@param version integer
|
||||
---@param primary integer
|
||||
---@param secondary integer
|
||||
---@return evolved.id id
|
||||
---@nodiscard
|
||||
function evolved.pack(index, version) end
|
||||
function evolved.pack(primary, secondary) end
|
||||
```
|
||||
|
||||
### `evolved.unpack`
|
||||
|
||||
@@ -10,7 +10,9 @@
|
||||
## Thoughts
|
||||
|
||||
- We can return deferred status from modifying operations and spawn/clone methods.
|
||||
- We should have a way to not copy components on deferred spawn/clone.
|
||||
|
||||
## Known Issues
|
||||
|
||||
- Required fragments are slower than they should be
|
||||
- Errors in hooks are cannot be handled properly right now
|
||||
@@ -3,6 +3,7 @@ require 'develop.samples.systems'
|
||||
require 'develop.testing.build_tests'
|
||||
require 'develop.testing.cancel_tests'
|
||||
require 'develop.testing.locate_tests'
|
||||
require 'develop.testing.main_tests'
|
||||
require 'develop.testing.multi_spawn_tests'
|
||||
require 'develop.testing.name_tests'
|
||||
require 'develop.testing.requires_fragment_tests'
|
||||
@@ -15,8 +16,6 @@ require 'develop.benchmarks.process_bmarks'
|
||||
require 'develop.benchmarks.spawn_bmarks'
|
||||
require 'develop.benchmarks.table_bmarks'
|
||||
|
||||
require 'develop.untests'
|
||||
|
||||
local basics = require 'develop.basics'
|
||||
|
||||
print '----------------------------------------'
|
||||
|
||||
@@ -2530,7 +2530,7 @@ do
|
||||
end)
|
||||
:on_remove(function(e, f, c)
|
||||
f2_remove_count = f2_remove_count + 1
|
||||
assert(evo.get(e, f) == nil)
|
||||
assert(evo.get(e, f) == c)
|
||||
assert(evo.alive(f))
|
||||
assert(c == 82)
|
||||
end)
|
||||
@@ -3321,7 +3321,7 @@ do
|
||||
remove_count = remove_count + 1
|
||||
assert(f == f1)
|
||||
assert(c == 51)
|
||||
assert(evo.get(e, f1) == nil)
|
||||
assert(evo.get(e, f1) == c)
|
||||
|
||||
do
|
||||
evo.remove(e, f2)
|
||||
@@ -3348,7 +3348,7 @@ do
|
||||
remove_count = remove_count + 1
|
||||
assert(f == f2)
|
||||
assert(c == 51)
|
||||
assert(evo.get(e, f2) == nil)
|
||||
assert(evo.get(e, f2) == c)
|
||||
end)
|
||||
end
|
||||
|
||||
@@ -3518,8 +3518,7 @@ do
|
||||
assert(e == e1 or e == e2)
|
||||
assert(f == f1)
|
||||
assert(c == 51)
|
||||
assert(evo.get(e1, f1) == nil)
|
||||
assert(evo.get(e2, f1) == nil)
|
||||
assert(evo.get(e, f) == c)
|
||||
end)
|
||||
|
||||
do
|
||||
@@ -7006,3 +7005,93 @@ do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local s1, s2 = evo.id(2)
|
||||
|
||||
local process_order = ''
|
||||
|
||||
evo.set(s1, evo.PROLOGUE, function()
|
||||
process_order = process_order .. '1'
|
||||
end)
|
||||
|
||||
evo.set(s2, evo.PROLOGUE, function()
|
||||
process_order = process_order .. '2'
|
||||
end)
|
||||
|
||||
do
|
||||
process_order = ''
|
||||
evo.set(s2, evo.GROUP, s1)
|
||||
evo.process(s1)
|
||||
assert(process_order == '12')
|
||||
end
|
||||
|
||||
do
|
||||
process_order = ''
|
||||
evo.remove(s2, evo.GROUP)
|
||||
evo.process(s1)
|
||||
assert(process_order == '1')
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local s1, s2, s3 = evo.id(3)
|
||||
|
||||
local process_order = ''
|
||||
|
||||
evo.set(s1, evo.PROLOGUE, function()
|
||||
process_order = process_order .. '1'
|
||||
end)
|
||||
|
||||
evo.set(s2, evo.PROLOGUE, function()
|
||||
process_order = process_order .. '2'
|
||||
end)
|
||||
|
||||
evo.set(s3, evo.PROLOGUE, function()
|
||||
process_order = process_order .. '3'
|
||||
end)
|
||||
|
||||
do
|
||||
process_order = ''
|
||||
evo.set(s2, evo.GROUP, s1)
|
||||
evo.process(s1)
|
||||
assert(process_order == '12')
|
||||
end
|
||||
|
||||
do
|
||||
process_order = ''
|
||||
evo.set(s2, evo.GROUP, s3)
|
||||
evo.process(s1)
|
||||
assert(process_order == '1')
|
||||
evo.process(s3)
|
||||
assert(process_order == '132')
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local f1, f2 = evo.id(2)
|
||||
evo.set(f1, evo.NAME, 'f1')
|
||||
evo.set(f2, evo.NAME, 'f2')
|
||||
|
||||
do
|
||||
local c1 = evo.chunk(f1)
|
||||
assert(tostring(c1) == '<f1>')
|
||||
|
||||
local c2 = evo.chunk(f2)
|
||||
assert(tostring(c2) == '<f2>')
|
||||
|
||||
local c12 = evo.chunk(f1, f2)
|
||||
assert(tostring(c12) == '<f1, f2>')
|
||||
|
||||
local c21 = evo.chunk(f2, f1)
|
||||
assert(tostring(c21) == '<f1, f2>')
|
||||
end
|
||||
|
||||
do
|
||||
local b = evo.builder():set(f1)
|
||||
assert(tostring(b) == '<f1>')
|
||||
|
||||
b:set(f1, 1):set(f2, 2)
|
||||
assert(tostring(b) == '<f1, f2>')
|
||||
end
|
||||
end
|
||||
776
evolved.lua
776
evolved.lua
File diff suppressed because it is too large
Load Diff
34
rockspecs/evolved.lua-1.4.0-0.rockspec
Normal file
34
rockspecs/evolved.lua-1.4.0-0.rockspec
Normal file
@@ -0,0 +1,34 @@
|
||||
rockspec_format = "3.0"
|
||||
package = "evolved.lua"
|
||||
version = "1.4.0-0"
|
||||
source = {
|
||||
url = "git://github.com/BlackMATov/evolved.lua",
|
||||
tag = "v1.4.0",
|
||||
}
|
||||
description = {
|
||||
homepage = "https://github.com/BlackMATov/evolved.lua",
|
||||
summary = "Evolved ECS (Entity-Component-System) for Lua",
|
||||
detailed = [[
|
||||
`evolved.lua` is a fast and flexible ECS (Entity-Component-System) library for Lua.
|
||||
It is designed to be simple and easy to use, while providing all the features needed to create complex systems with blazing performance.
|
||||
]],
|
||||
license = "MIT",
|
||||
labels = {
|
||||
"ecs",
|
||||
"entity",
|
||||
"entities",
|
||||
"component",
|
||||
"components",
|
||||
"entity-component",
|
||||
"entity-component-system",
|
||||
},
|
||||
}
|
||||
dependencies = {
|
||||
"lua >= 5.1",
|
||||
}
|
||||
build = {
|
||||
type = "builtin",
|
||||
modules = {
|
||||
evolved = "evolved.lua",
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user