-
Notifications
You must be signed in to change notification settings - Fork 828
/
screenshottools.ts
39 lines (38 loc) · 1.14 KB
/
screenshottools.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
namespace gdjs {
export namespace screenshot {
const logger = new gdjs.Logger('Screenshot');
/**
* Save a screenshot of the game.
* @param runtimeScene The scene
* @param savePath The path where to save the screenshot
*/
export const takeScreenshot = function (
runtimeScene: gdjs.RuntimeScene,
savePath: string
) {
const fs = typeof require !== 'undefined' ? require('fs') : null;
if (fs) {
const canvas = runtimeScene.getGame().getRenderer().getCanvas();
if (canvas) {
const content = canvas
.toDataURL('image/png')
.replace('data:image/png;base64,', '');
if (savePath.toLowerCase().indexOf('.png') == -1) {
savePath += '.png';
}
fs.writeFile(savePath, content, 'base64', (err) => {
if (err) {
logger.error(
'Unable to save the screenshot at path: ' + savePath
);
}
});
} else {
logger.error(
'Screenshot are not supported on rendering engines without canvas.'
);
}
}
};
}
}