jecs/demo/src/StarterPlayer/StarterPlayerScripts/systems/move.luau

40 lines
1.1 KiB
Text
Raw Normal View History

local ReplicatedStorage = game:GetService("ReplicatedStorage")
2024-09-09 01:38:47 +00:00
local blink = require(ReplicatedStorage.net)
local std = require(ReplicatedStorage.std)
local world = std.world
2024-09-09 01:38:47 +00:00
local ref = std.ref
local cts = std.components
local Model = cts.Model
local Transform = cts.Transform
local function move(dt: number)
2024-08-21 19:29:17 +00:00
for _, transform, model in world:query(Transform, Model):iter() do
local cf = transform.new
if cf ~= transform.old then
2024-08-29 23:18:42 +00:00
local origo = model.PrimaryPart.CFrame
model.PrimaryPart.CFrame = origo:Lerp(cf, 1)
2024-08-21 19:29:17 +00:00
transform.old = cf
end
end
end
2024-09-09 01:38:47 +00:00
local function syncTransforms()
for _, id, cf in blink.UpdateTransform.Iter() do
local e = ref("server-"..id)
local transform = e:get(cts.Transform)
if not transform then
continue
end
transform.new = cf
end
end
return function(scheduler: std.Scheduler)
2024-09-09 01:38:47 +00:00
local phases = scheduler.phases
local system_new = scheduler.systems.new
system_new(move, phases.Heartbeat)
system_new(syncTransforms, phases.RenderStepped)
end