blur-pause/lua/ge/extensions/blurPause.lua

58 lines
1.7 KiB
Lua
Raw Permalink Normal View History

2025-05-31 23:22:46 +00:00
-- 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