mirror of
https://github.com/centau/vide.git
synced 2026-08-20 14:41:37 +00:00
This commit is contained in:
parent
6f9e86c5c7
commit
d0fc816460
4 changed files with 34 additions and 25 deletions
|
|
@ -167,18 +167,22 @@ local function update_springs(dt: number)
|
|||
|
||||
local new_time = data.duration + dt
|
||||
local new_alpha = solve(data.period, data.damping_ratio, data.initial_velocity, new_time)
|
||||
local new_velocity = -(new_alpha - data.alpha)/dt
|
||||
|
||||
data.velocity = -(new_alpha - data.alpha)/dt
|
||||
local acceleration = (new_velocity - data.velocity)/dt
|
||||
|
||||
data.velocity = new_velocity
|
||||
data.alpha = new_alpha
|
||||
data.duration = new_time
|
||||
|
||||
local value = lerp(initial_position, target_position, new_alpha)
|
||||
|
||||
set(output, value)
|
||||
|
||||
-- if new_alpha > 0.9 then
|
||||
-- table.insert(remove_queue, data)
|
||||
-- end
|
||||
if math.abs(acceleration) < 0.01 then
|
||||
table.insert(remove_queue, data)
|
||||
set(output, target_position)
|
||||
else
|
||||
set(output, value)
|
||||
end
|
||||
end
|
||||
|
||||
for _, data in next, remove_queue do
|
||||
|
|
|
|||
|
|
@ -131,11 +131,11 @@ BENCH("indexes() no change", function()
|
|||
|
||||
local state = vide.source(data)
|
||||
|
||||
local _list = vide.values(state, function(v, i)
|
||||
local _list = vide.indexes(state, function(v, i)
|
||||
return {}
|
||||
end)
|
||||
|
||||
state(state()) -- fill double buffer
|
||||
--state(state()) -- fill double buffer
|
||||
|
||||
START(N)
|
||||
|
||||
|
|
@ -152,11 +152,11 @@ BENCH("indexes() all change", function()
|
|||
|
||||
local state = vide.source(data)
|
||||
|
||||
local _list = vide.values(state, function(v, i)
|
||||
local _list = vide.indexes(state, function(v, i)
|
||||
return {}
|
||||
end)
|
||||
|
||||
state(state()) -- fill double buffer
|
||||
--state(state()) -- fill double buffer
|
||||
|
||||
for i, v in data do
|
||||
data[i] = v + 1
|
||||
|
|
@ -176,7 +176,7 @@ BENCH("indexes() all remove", function()
|
|||
|
||||
local state = vide.source(data)
|
||||
|
||||
local _list = vide.values(state, function(v, i)
|
||||
local _list = vide.indexes(state, function(v, i)
|
||||
return {}
|
||||
end)
|
||||
|
||||
|
|
|
|||
|
|
@ -1147,7 +1147,10 @@ TEST("spring()", function()
|
|||
local output = spring(input)
|
||||
|
||||
input(1)
|
||||
vide.step(1e9) -- spring alpha at ~1
|
||||
vide.step(0.05)
|
||||
CHECK(output() ~= input()) -- check spring is moving
|
||||
vide.step(6) -- spring finished, should be internally removed from queue
|
||||
CHECK(output() == input()) -- check spring is at target
|
||||
|
||||
local count = -1
|
||||
watch(function()
|
||||
|
|
@ -1155,15 +1158,14 @@ TEST("spring()", function()
|
|||
count += 1
|
||||
end)
|
||||
|
||||
vide.step(1) -- spring should be internally removed from spring queue
|
||||
CHECK(count == 0)
|
||||
|
||||
vide.step(1) -- attempt to cause another spring update
|
||||
CHECK(count == 1) -- check no update occurs as spring is finished
|
||||
--
|
||||
|
||||
gc() -- perform full gc
|
||||
input(2) -- spring should be re-added to spring queue
|
||||
vide.step(0) -- process spring queue
|
||||
CHECK(count == 1) -- check spring was rescheduled correctly
|
||||
CHECK(count == 2) -- check spring was rescheduled correctly
|
||||
end
|
||||
end)
|
||||
|
||||
|
|
|
|||
21
todo.md
21
todo.md
|
|
@ -1,13 +1,16 @@
|
|||
# todo
|
||||
|
||||
- cleanup codebase
|
||||
- setup site, improve docs
|
||||
- cleanup within `values()` and `indexes()`
|
||||
- strict mode
|
||||
- warn when map returns primitive
|
||||
|
||||
- better error reporting
|
||||
- warn when `values()` returns primitive
|
||||
- Implement from solid
|
||||
- onCleanup
|
||||
- Index
|
||||
- For
|
||||
- untrack
|
||||
- batch
|
||||
- async/loading/suspense
|
||||
- define order with nested properties
|
||||
- [x] onCleanup > `cleanup()`
|
||||
- [x] Index > `indexes()`
|
||||
- [x] For > `values()`
|
||||
- [ ] untrack
|
||||
- [ ] batch
|
||||
- [ ] async/loading/suspense
|
||||
- define order with nested properties
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue