diff --git a/demo/src/ReplicatedStorage/std/components.luau b/demo/src/ReplicatedStorage/std/components.luau index 5dccc1b..8c5548d 100644 --- a/demo/src/ReplicatedStorage/std/components.luau +++ b/demo/src/ReplicatedStorage/std/components.luau @@ -8,8 +8,9 @@ local components: { Model: Entity, Player: Entity, Target: Entity, - Transform: Entity<{ old: CFrame, new: CFrame }>, + Transform: Entity, Velocity: Entity, + Previous: Entity, } = { Character = world:component(), Mob = world:component(), @@ -18,6 +19,7 @@ local components: { Target = world:component(), Transform = world:component(), Velocity = world:component(), + Previous = world:component(), } return table.freeze(components) diff --git a/demo/src/ReplicatedStorage/std/ref.luau b/demo/src/ReplicatedStorage/std/ref.luau index 25b61b3..b7d00ce 100644 --- a/demo/src/ReplicatedStorage/std/ref.luau +++ b/demo/src/ReplicatedStorage/std/ref.luau @@ -2,7 +2,13 @@ local world = require(script.Parent.world) local handle = require(script.Parent.handle) local refs = {} -local function ref(key) +local function fini(e, key) + return function() + refs[key] = nil + end +end + +local function ref(key): (handle.Handle, (() -> ())?) if not key then return handle(world:entity()) end @@ -12,7 +18,7 @@ local function ref(key) refs[key] = e end -- Cannot cache handles because they will get invalidated - return handle(e) + return handle(e), fini(e, key) end return ref