mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2026-01-04 17:20:58 +07:00
fragment_builder:on_destroy method
This commit is contained in:
@@ -124,6 +124,7 @@ fragment_builder:on_set :: {entity, fragment, component, component?} -> fragment
|
|||||||
fragment_builder:on_assign :: {entity, fragment, component, component} -> fragment_builder
|
fragment_builder:on_assign :: {entity, fragment, component, component} -> fragment_builder
|
||||||
fragment_builder:on_insert :: {entity, fragment, component} -> fragment_builder
|
fragment_builder:on_insert :: {entity, fragment, component} -> fragment_builder
|
||||||
fragment_builder:on_remove :: {entity, fragment} -> fragment_builder
|
fragment_builder:on_remove :: {entity, fragment} -> fragment_builder
|
||||||
|
fragment_builder:on_destroy :: id -> fragment_builder
|
||||||
fragment_builder:build :: fragment, boolean
|
fragment_builder:build :: fragment, boolean
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -7107,3 +7107,15 @@ do
|
|||||||
assert(c2_es[1] == e2a and c2_es[2] == e2b and c2_es[3] == e12a and c2_es[4] == e12b)
|
assert(c2_es[1] == e2a and c2_es[2] == e2b and c2_es[3] == e12a and c2_es[4] == e12b)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
do
|
||||||
|
local fb = evo.fragment()
|
||||||
|
|
||||||
|
local f1 = fb:build()
|
||||||
|
local f2 = fb:on_destroy(evo.DESTROY_ENTITY_POLICY):build()
|
||||||
|
local f3 = fb:on_destroy(evo.REMOVE_FRAGMENT_POLICY):build()
|
||||||
|
|
||||||
|
assert(evo.get(f1, evo.ON_DESTROY) == nil)
|
||||||
|
assert(evo.get(f2, evo.ON_DESTROY) == evo.DESTROY_ENTITY_POLICY)
|
||||||
|
assert(evo.get(f3, evo.ON_DESTROY) == evo.REMOVE_FRAGMENT_POLICY)
|
||||||
|
end
|
||||||
|
|||||||
17
evolved.lua
17
evolved.lua
@@ -6754,6 +6754,7 @@ end
|
|||||||
---@field package __on_assign? evolved.set_hook
|
---@field package __on_assign? evolved.set_hook
|
||||||
---@field package __on_insert? evolved.set_hook
|
---@field package __on_insert? evolved.set_hook
|
||||||
---@field package __on_remove? evolved.remove_hook
|
---@field package __on_remove? evolved.remove_hook
|
||||||
|
---@field package __on_destroy? evolved.id
|
||||||
|
|
||||||
---@class evolved.fragment_builder : evolved.__fragment_builder
|
---@class evolved.fragment_builder : evolved.__fragment_builder
|
||||||
local evolved_fragment_builder = {}
|
local evolved_fragment_builder = {}
|
||||||
@@ -6773,6 +6774,7 @@ __evolved_fragment = function()
|
|||||||
__on_assign = nil,
|
__on_assign = nil,
|
||||||
__on_insert = nil,
|
__on_insert = nil,
|
||||||
__on_remove = nil,
|
__on_remove = nil,
|
||||||
|
__on_destroy = nil,
|
||||||
}
|
}
|
||||||
---@cast builder evolved.fragment_builder
|
---@cast builder evolved.fragment_builder
|
||||||
return __lua_setmetatable(builder, evolved_fragment_builder)
|
return __lua_setmetatable(builder, evolved_fragment_builder)
|
||||||
@@ -6840,6 +6842,13 @@ function evolved_fragment_builder:on_remove(on_remove)
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---@param on_destroy evolved.id
|
||||||
|
---@return evolved.fragment_builder builder
|
||||||
|
function evolved_fragment_builder:on_destroy(on_destroy)
|
||||||
|
self.__on_destroy = on_destroy
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
---@return evolved.fragment fragment
|
---@return evolved.fragment fragment
|
||||||
---@return boolean is_deferred
|
---@return boolean is_deferred
|
||||||
function evolved_fragment_builder:build()
|
function evolved_fragment_builder:build()
|
||||||
@@ -6853,6 +6862,7 @@ function evolved_fragment_builder:build()
|
|||||||
local on_assign = self.__on_assign
|
local on_assign = self.__on_assign
|
||||||
local on_insert = self.__on_insert
|
local on_insert = self.__on_insert
|
||||||
local on_remove = self.__on_remove
|
local on_remove = self.__on_remove
|
||||||
|
local on_destroy = self.__on_destroy
|
||||||
|
|
||||||
self.__tag = false
|
self.__tag = false
|
||||||
self.__name = nil
|
self.__name = nil
|
||||||
@@ -6864,6 +6874,7 @@ function evolved_fragment_builder:build()
|
|||||||
self.__on_assign = nil
|
self.__on_assign = nil
|
||||||
self.__on_insert = nil
|
self.__on_insert = nil
|
||||||
self.__on_remove = nil
|
self.__on_remove = nil
|
||||||
|
self.__on_destroy = nil
|
||||||
|
|
||||||
local fragment = __evolved_id()
|
local fragment = __evolved_id()
|
||||||
|
|
||||||
@@ -6925,6 +6936,12 @@ function evolved_fragment_builder:build()
|
|||||||
component_list[component_count] = on_remove
|
component_list[component_count] = on_remove
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if on_destroy then
|
||||||
|
component_count = component_count + 1
|
||||||
|
fragment_list[component_count] = __ON_DESTROY
|
||||||
|
component_list[component_count] = on_destroy
|
||||||
|
end
|
||||||
|
|
||||||
local _, is_deferred = __evolved_multi_set(fragment, fragment_list, component_list)
|
local _, is_deferred = __evolved_multi_set(fragment, fragment_list, component_list)
|
||||||
|
|
||||||
__release_table(__table_pool_tag.fragment_list, fragment_list)
|
__release_table(__table_pool_tag.fragment_list, fragment_list)
|
||||||
|
|||||||
Reference in New Issue
Block a user