Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local module = {}
- module.positions = {}
- module.tracking = {}
- module.anchored = {}
- module.time = 0
- module.speed = 1
- module.reverse = false
- function module:Track(obj)
- table.insert(module.tracking, obj)
- module.positions[obj] = {}
- if obj.Anchored then
- table.insert(module.anchored, obj)
- end
- end
- function module:Update()
- if module.time < 0 then
- for _,obj in ipairs(module.tracking) do
- if not table.find(module.anchored, obj) then
- module.positions = {} -- just in case
- obj.Anchored = false
- end
- end
- module:SetSpeed(1)
- module.reverse = false
- end
- if module.reverse then
- module.time -= module.speed
- else
- module.time += module.speed
- end
- for _,obj in ipairs(module.tracking) do
- if module.reverse then
- obj.Anchored = true
- end
- if not module.positions[obj] then
- module.positions[obj] = {}
- end
- if not module.positions[obj][module.time] then
- module.positions[obj][module.time] = obj.CFrame
- end
- if module.reverse then
- obj.CFrame = module.positions[obj][module.time] -- support time reversing
- end
- end
- end
- function module:SetSpeed(speed)
- assert(speed == math.abs(speed), "Speed must be a positive integer!")
- assert(speed == math.floor(speed), "Speed must be an integer!")
- module.speed = speed
- end
- function module:Reverse()
- module.reverse = true
- end
- return module
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement