Add Observe

This commit is contained in:
Qwreey 2023-02-24 02:09:47 +09:00
parent 3a51a6f751
commit 9bfa67e11f
3 changed files with 25 additions and 26 deletions

Binary file not shown.

Binary file not shown.

View file

@ -334,36 +334,35 @@ function module.init(shared)
function store:__newindex(key,value) function store:__newindex(key,value)
-- if got register, just copy data to self and connect -- if got register, just copy data to self and connect
if PcallGetProperty(value,"__type") == "quad_register" then if PcallGetProperty(value,"__type") == "quad_register" then
-- warn "[Quad] adding register value on store is only allowed when init store. set value request was ignored" error "[Quad] adding register value on store is only allowed when init store. set value request was ignored"
-- local selfValues = self.__self
-- local selfTweens = self.__tweens
local selfValues = self.__self -- -- fetch data from origin
local selfTweens = self.__tweens -- do
-- local tstore = value.store
-- for tkey in gmatch(value.key,"^[,]") do
-- if not selfValues[tkey] then
-- selfValues[tkey] = tstore[tkey]
-- end
-- end
-- end
-- fetch data from origin -- -- calc value
do -- do
local tstore = value.store -- local setValue,tween = value:CalcWithDefault(self)
for tkey in gmatch(value.key,"^[,]") do -- selfValues[key] = setValue
if not selfValues[tkey] then -- selfTweens[key] = tween
selfValues[tkey] = tstore[tkey] -- end
end
end
end
-- calc value -- -- make event connection
do -- value:Register(function (_,newValue,eventKey)
local setValue,tween = value:CalcWithDefault(self) -- -- !HOLD IT SELF TO PREVENT THIS REGISTER BEGIN REMOVED FROM MEMORY
selfValues[key] = setValue -- local setValue = value:CalcWithNewValue(self,newValue,eventKey)
selfTweens[key] = tween -- self[key] = setValue
end -- end)
-- make event connection -- return
value:Register(function (_,newValue,eventKey)
-- !HOLD IT SELF TO PREVENT THIS REGISTER BEGIN REMOVED FROM MEMORY
local setValue = value:CalcWithNewValue(self,newValue,eventKey)
self[key] = setValue
end)
return
end end
self.__self[key] = value self.__self[key] = value
local event = self.__evt[key] local event = self.__evt[key]