58 lines
1.7 KiB
Lua
58 lines
1.7 KiB
Lua
-- Copyright (C) 2025 snoutie
|
|
-- Authors: snoutie (copyright@achtarmig.org)
|
|
-- This program is free software: you can redistribute it and/or modify
|
|
-- it under the terms of the GNU Affero General Public License as published
|
|
-- by the Free Software Foundation, either version 3 of the License, or
|
|
-- (at your option) any later version.
|
|
|
|
-- This program is distributed in the hope that it will be useful,
|
|
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
-- GNU Affero General Public License for more details.
|
|
|
|
-- You should have received a copy of the GNU Affero General Public License
|
|
-- along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
local M = {}
|
|
|
|
M.file = ""
|
|
M.isPaused = false
|
|
M.fps = 0.0
|
|
|
|
local function getFileStream()
|
|
if not be then return end
|
|
return be:getFileStream()
|
|
end
|
|
|
|
function M.togglePause()
|
|
if not M.isPaused then
|
|
core_replay.toggleRecording(true, false);
|
|
simTimeAuthority.pause(false);
|
|
|
|
M.file = core_replay.getLoadedFile()
|
|
|
|
extensions.core_jobsystem.create(
|
|
function(job)
|
|
job.sleep(M.fps * 2.5); --This should give enough time to sample 1 frame
|
|
simTimeAuthority.pause(true);
|
|
core_replay.toggleRecording(true, false);
|
|
local stream = getFileStream()
|
|
if not stream then return end
|
|
stream:setPaused(true);
|
|
stream:stepFrames(1);
|
|
end)
|
|
M.isPaused = true
|
|
else
|
|
core_replay.stop();
|
|
simTimeAuthority.pause(false);
|
|
FS:removeFile(M.file)
|
|
M.isPaused = false
|
|
end
|
|
end
|
|
|
|
function M.onUpdate(dt)
|
|
M.fps = dt
|
|
end
|
|
|
|
return M
|