From dcfa34df4e2d1ec080703d1445d7b92192cf920b Mon Sep 17 00:00:00 2001 From: Ukendio Date: Wed, 21 Aug 2024 21:29:17 +0200 Subject: [PATCH] CHange Transform to struct --- demo/src/ReplicatedStorage/std/components.luau | 2 +- demo/src/ServerScriptService/systems/mobsMove.luau | 5 +++-- demo/src/ServerScriptService/systems/spawnMobs.luau | 2 +- .../StarterPlayer/StarterPlayerScripts/systems/move.luau | 8 ++++++-- .../StarterPlayerScripts/systems/syncMobs.luau | 2 +- .../StarterPlayerScripts/systems/syncTransforms.luau | 8 ++++++-- 6 files changed, 18 insertions(+), 9 deletions(-) diff --git a/demo/src/ReplicatedStorage/std/components.luau b/demo/src/ReplicatedStorage/std/components.luau index d44a9868..5dccc1b6 100644 --- a/demo/src/ReplicatedStorage/std/components.luau +++ b/demo/src/ReplicatedStorage/std/components.luau @@ -8,7 +8,7 @@ local components: { Model: Entity, Player: Entity, Target: Entity, - Transform: Entity, + Transform: Entity<{ old: CFrame, new: CFrame }>, Velocity: Entity, } = { Character = world:component(), diff --git a/demo/src/ServerScriptService/systems/mobsMove.luau b/demo/src/ServerScriptService/systems/mobsMove.luau index 45b44dd9..8ea1127a 100644 --- a/demo/src/ServerScriptService/systems/mobsMove.luau +++ b/demo/src/ServerScriptService/systems/mobsMove.luau @@ -23,7 +23,8 @@ local function mobsMove(dt: number) table.insert(targets, (character.PrimaryPart :: Part).Position) end - for mob, cf, v in world:query(Transform, Velocity):with(Mob):iter() do + for mob, transform, v in world:query(Transform, Velocity):with(Mob):iter() do + local cf = transform.new local p = cf.Position local target @@ -42,7 +43,7 @@ local function mobsMove(dt: number) end local moving = CFrame.new(p + (target - p).Unit * dt * v) - world:set(mob, Transform, moving) + transform.new = moving blink.UpdateTransform.FireAll(mob, moving) end end diff --git a/demo/src/ServerScriptService/systems/spawnMobs.luau b/demo/src/ServerScriptService/systems/spawnMobs.luau index 9bbbb902..cbb79a79 100644 --- a/demo/src/ServerScriptService/systems/spawnMobs.luau +++ b/demo/src/ServerScriptService/systems/spawnMobs.luau @@ -19,7 +19,7 @@ local function spawnMobs() local id = ref() :set(Velocity, v) - :set(Transform, cf) + :set(Transform, { new = cf }) :add(Mob) .id() diff --git a/demo/src/StarterPlayer/StarterPlayerScripts/systems/move.luau b/demo/src/StarterPlayer/StarterPlayerScripts/systems/move.luau index 84f92879..f520a3da 100644 --- a/demo/src/StarterPlayer/StarterPlayerScripts/systems/move.luau +++ b/demo/src/StarterPlayer/StarterPlayerScripts/systems/move.luau @@ -9,8 +9,12 @@ local Model = cts.Model local Transform = cts.Transform local function move(dt: number) - for _, cf, model in world:query(Transform, Model) do - model.PrimaryPart.CFrame = cf + for _, transform, model in world:query(Transform, Model):iter() do + local cf = transform.new + if cf ~= transform.old then + model.PrimaryPart.CFrame = cf + transform.old = cf + end end end diff --git a/demo/src/StarterPlayer/StarterPlayerScripts/systems/syncMobs.luau b/demo/src/StarterPlayer/StarterPlayerScripts/systems/syncMobs.luau index bf73e00e..36d51dfc 100644 --- a/demo/src/StarterPlayer/StarterPlayerScripts/systems/syncMobs.luau +++ b/demo/src/StarterPlayer/StarterPlayerScripts/systems/syncMobs.luau @@ -17,7 +17,7 @@ local function syncMobs() model.Parent = workspace ref("server-"..id) - :set(cts.Transform, cf) + :set(cts.Transform, { new = cf, old = cf }) :set(cts.Velocity, vel) :set(cts.Model, model) :add(cts.Mob) diff --git a/demo/src/StarterPlayer/StarterPlayerScripts/systems/syncTransforms.luau b/demo/src/StarterPlayer/StarterPlayerScripts/systems/syncTransforms.luau index 01ba86e8..6d68280a 100644 --- a/demo/src/StarterPlayer/StarterPlayerScripts/systems/syncTransforms.luau +++ b/demo/src/StarterPlayer/StarterPlayerScripts/systems/syncTransforms.luau @@ -8,8 +8,12 @@ local cts = std.components local function syncTransforms() for _, id, cf in blink.UpdateTransform.Iter() do - ref("server-"..id) - :set(cts.Transform, cf) + local e = ref("server-"..id) + local transform = e:get(cts.Transform) + if not transform then + continue + end + transform.new = cf end end