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
|