mirror of
https://github.com/lubosz/overte.git
synced 2025-04-23 01:04:06 +02:00
commit
c2d1f08551
9 changed files with 204 additions and 13 deletions
|
@ -2281,7 +2281,7 @@ void Application::keyPressEvent(QKeyEvent* event) {
|
|||
} else if (isOption && !isShifted && !isMeta) {
|
||||
Menu::getInstance()->triggerOption(MenuOption::ScriptEditor);
|
||||
} else if (!isOption && !isShifted && isMeta) {
|
||||
takeSnapshot();
|
||||
takeSnapshot(true);
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -5071,7 +5071,7 @@ void Application::toggleLogDialog() {
|
|||
}
|
||||
}
|
||||
|
||||
void Application::takeSnapshot() {
|
||||
void Application::takeSnapshot(bool notify) {
|
||||
QMediaPlayer* player = new QMediaPlayer();
|
||||
QFileInfo inf = QFileInfo(PathUtils::resourcesPath() + "sounds/snap.wav");
|
||||
player->setMedia(QUrl::fromLocalFile(inf.absoluteFilePath()));
|
||||
|
@ -5079,7 +5079,7 @@ void Application::takeSnapshot() {
|
|||
|
||||
QString path = Snapshot::saveSnapshot(getActiveDisplayPlugin()->getScreenshot());
|
||||
|
||||
emit DependencyManager::get<WindowScriptingInterface>()->snapshotTaken(path);
|
||||
emit DependencyManager::get<WindowScriptingInterface>()->snapshotTaken(path, notify);
|
||||
}
|
||||
|
||||
float Application::getRenderResolutionScale() const {
|
||||
|
|
|
@ -247,6 +247,8 @@ public:
|
|||
|
||||
float getAvatarSimrate() const { return _avatarSimCounter.rate(); }
|
||||
float getAverageSimsPerSecond() const { return _simCounter.rate(); }
|
||||
|
||||
void takeSnapshot(bool notify);
|
||||
|
||||
signals:
|
||||
void svoImportRequested(const QString& url);
|
||||
|
@ -373,8 +375,6 @@ private:
|
|||
|
||||
int sendNackPackets();
|
||||
|
||||
void takeSnapshot();
|
||||
|
||||
MyAvatar* getMyAvatar() const;
|
||||
|
||||
void checkSkeleton() const;
|
||||
|
|
|
@ -199,3 +199,10 @@ void WindowScriptingInterface::copyToClipboard(const QString& text) {
|
|||
qDebug() << "Copying";
|
||||
QApplication::clipboard()->setText(text);
|
||||
}
|
||||
|
||||
void WindowScriptingInterface::takeSnapshot(bool notify) {
|
||||
// only evil-doers call takeSnapshot from a random thread
|
||||
qApp->postLambdaEvent([&] {
|
||||
qApp->takeSnapshot(notify);
|
||||
});
|
||||
}
|
||||
|
|
|
@ -54,12 +54,13 @@ public slots:
|
|||
QScriptValue browse(const QString& title = "", const QString& directory = "", const QString& nameFilter = "");
|
||||
QScriptValue save(const QString& title = "", const QString& directory = "", const QString& nameFilter = "");
|
||||
void copyToClipboard(const QString& text);
|
||||
void takeSnapshot(bool notify);
|
||||
|
||||
signals:
|
||||
void domainChanged(const QString& domainHostname);
|
||||
void svoImportRequested(const QString& url);
|
||||
void domainConnectionRefused(const QString& reasonMessage, int reasonCode);
|
||||
void snapshotTaken(const QString& path);
|
||||
void snapshotTaken(const QString& path, bool notify);
|
||||
|
||||
private slots:
|
||||
WebWindowClass* doCreateWebWindow(const QString& title, const QString& url, int width, int height);
|
||||
|
|
|
@ -662,10 +662,15 @@ void OpenGLDisplayPlugin::withMainThreadContext(std::function<void()> f) const {
|
|||
|
||||
QImage OpenGLDisplayPlugin::getScreenshot() const {
|
||||
using namespace oglplus;
|
||||
QImage screenshot(_compositeFramebuffer->size.x, _compositeFramebuffer->size.y, QImage::Format_RGBA8888);
|
||||
auto width = _compositeFramebuffer->size.x;
|
||||
if (isHmd()) {
|
||||
width /= 2;
|
||||
}
|
||||
|
||||
QImage screenshot(width, _compositeFramebuffer->size.y, QImage::Format_RGBA8888);
|
||||
withMainThreadContext([&] {
|
||||
Framebuffer::Bind(Framebuffer::Target::Read, _compositeFramebuffer->fbo);
|
||||
Context::ReadPixels(0, 0, _compositeFramebuffer->size.x, _compositeFramebuffer->size.y, enums::PixelDataFormat::RGBA, enums::PixelDataType::UnsignedByte, screenshot.bits());
|
||||
Context::ReadPixels(0, 0, width, _compositeFramebuffer->size.y, enums::PixelDataFormat::RGBA, enums::PixelDataType::UnsignedByte, screenshot.bits());
|
||||
});
|
||||
return screenshot.mirrored(false, true);
|
||||
}
|
||||
|
|
|
@ -27,3 +27,4 @@ Script.load("system/controllers/grab.js");
|
|||
Script.load("system/controllers/teleport.js");
|
||||
Script.load("system/dialTone.js");
|
||||
Script.load("system/firstPersonHMD.js");
|
||||
Script.load("system/snapshot.js");
|
||||
|
|
109
scripts/system/assets/images/tools/snap.svg
Executable file
109
scripts/system/assets/images/tools/snap.svg
Executable file
|
@ -0,0 +1,109 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 19.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 50 200.1" style="enable-background:new 0 0 50 200.1;" xml:space="preserve">
|
||||
<style type="text/css">
|
||||
.st0{fill:#414042;}
|
||||
.st1{fill:#FFFFFF;}
|
||||
.st2{fill:#1E1E1E;}
|
||||
.st3{fill:#333333;}
|
||||
</style>
|
||||
<g id="Layer_2">
|
||||
<g>
|
||||
<g>
|
||||
<path class="st0" d="M50.1,146.1c0,2.2-1.8,4-4,4h-42c-2.2,0-4-1.8-4-4v-42c0-2.2,1.8-4,4-4h42c2.2,0,4,1.8,4,4V146.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path class="st0" d="M50,196.1c0,2.2-1.8,4-4,4H4c-2.2,0-4-1.8-4-4v-42c0-2.2,1.8-4,4-4h42c2.2,0,4,1.8,4,4V196.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path class="st1" d="M50,46c0,2.2-1.8,4-4,4H4c-2.2,0-4-1.8-4-4V4c0-2.2,1.8-4,4-4h42c2.2,0,4,1.8,4,4V46z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g>
|
||||
<path class="st2" d="M50,96.1c0,2.2-1.8,4-4,4H4c-2.2,0-4-1.8-4-4v-42c0-2.2,1.8-4,4-4h42c2.2,0,4,1.8,4,4V96.1z"/>
|
||||
</g>
|
||||
</g>
|
||||
<path class="st1" d="M33.2,114.1H32v-0.9c0-1.6-2-2.1-3.6-2.1h-7c-1.6,0-2.4,0.5-2.4,2.1v0.9h-3c-1.6,0-3,0.8-3,2.4v10.7
|
||||
c0,1.6,1.3,2.9,3,2.9h17.2c1.6,0,3.8-1.7,3.8-3.3v-10.3C37,114.9,34.8,114.1,33.2,114.1z M24.7,128.1c-3.8,0-6.8-3.1-6.8-6.8
|
||||
c0-3.8,3.1-6.8,6.8-6.8c3.8,0,6.8,3.1,6.8,6.8C31.5,125,28.5,128.1,24.7,128.1z"/>
|
||||
<g>
|
||||
<path class="st1" d="M17.3,137.8c0,0-0.1-0.1-0.2-0.2c-0.1-0.1-0.2-0.1-0.4-0.2c-0.2-0.1-0.3-0.1-0.5-0.2c-0.2,0-0.4-0.1-0.6-0.1
|
||||
c-0.3,0-0.6,0.1-0.8,0.2c-0.2,0.1-0.3,0.3-0.3,0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0.1,0.3,0.1,0.5,0.2
|
||||
c0.2,0.1,0.4,0.1,0.6,0.2c0.3,0.1,0.6,0.2,0.9,0.3c0.3,0.1,0.5,0.2,0.6,0.4c0.2,0.1,0.3,0.3,0.4,0.5c0.1,0.2,0.1,0.4,0.1,0.7
|
||||
c0,0.3-0.1,0.6-0.2,0.9s-0.3,0.4-0.5,0.6c-0.2,0.1-0.5,0.3-0.8,0.3s-0.6,0.1-0.9,0.1c-0.5,0-1-0.1-1.4-0.2
|
||||
c-0.5-0.1-0.9-0.3-1.3-0.6l0.5-1.1c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.3,0.2,0.5,0.3s0.4,0.2,0.6,0.2c0.2,0.1,0.5,0.1,0.7,0.1
|
||||
c0.7,0,1-0.2,1-0.7c0-0.1,0-0.3-0.1-0.4c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.3-0.1-0.5-0.2s-0.4-0.1-0.7-0.2
|
||||
c-0.3-0.1-0.6-0.2-0.8-0.3c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.3-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.3,0.1-0.6,0.2-0.9
|
||||
c0.1-0.3,0.3-0.5,0.5-0.6s0.5-0.3,0.7-0.4c0.3-0.1,0.6-0.1,0.9-0.1c0.5,0,0.9,0.1,1.2,0.2c0.4,0.1,0.7,0.3,1,0.5L17.3,137.8z"/>
|
||||
<path class="st1" d="M20.5,138.4v4.1h-1.2v-6.4h1l3.3,4.2v-4.2h1.2v6.4h-1L20.5,138.4z"/>
|
||||
<path class="st1" d="M25.7,142.5l2.5-6.4h1l2.5,6.4h-1.3l-0.6-1.6h-2.2l-0.6,1.6H25.7z M28.8,137.5l-0.9,2.6h1.8L28.8,137.5z"/>
|
||||
<path class="st1" d="M32.7,142.5v-6.4h2.7c0.3,0,0.6,0.1,0.8,0.2s0.5,0.3,0.6,0.5c0.2,0.2,0.3,0.4,0.4,0.7c0.1,0.3,0.2,0.5,0.2,0.8
|
||||
c0,0.3,0,0.5-0.1,0.8c-0.1,0.3-0.2,0.5-0.4,0.7c-0.2,0.2-0.4,0.4-0.6,0.5c-0.2,0.1-0.5,0.2-0.8,0.2h-1.5v2.1H32.7z M33.9,139.3h1.4
|
||||
c0.2,0,0.4-0.1,0.6-0.3c0.2-0.2,0.2-0.4,0.2-0.8c0-0.2,0-0.3-0.1-0.4s-0.1-0.2-0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.2
|
||||
c-0.1,0-0.2-0.1-0.3-0.1h-1.4V139.3z"/>
|
||||
</g>
|
||||
<path class="st1" d="M33.2,64.1H32v-1c0-1.6-2-2-3.6-2h-7c-1.6,0-2.4,0.4-2.4,2v1h-3c-1.6,0-3,0.7-3,2.3v10.7c0,1.6,1.3,3,3,3h17.2
|
||||
c1.6,0,3.8-1.8,3.8-3.4V66.4C37,64.8,34.8,64.1,33.2,64.1z M24.7,78c-3.8,0-6.8-3.1-6.8-6.8c0-3.8,3.1-6.8,6.8-6.8
|
||||
c3.8,0,6.8,3.1,6.8,6.8C31.5,74.9,28.5,78,24.7,78z"/>
|
||||
<g>
|
||||
<path class="st1" d="M17.3,87.7c0,0-0.1-0.1-0.2-0.2c-0.1-0.1-0.2-0.1-0.4-0.2c-0.2-0.1-0.3-0.1-0.5-0.2c-0.2,0-0.4-0.1-0.6-0.1
|
||||
c-0.3,0-0.6,0.1-0.8,0.2c-0.2,0.1-0.3,0.3-0.3,0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0.1,0.3,0.1,0.5,0.2
|
||||
c0.2,0.1,0.4,0.1,0.6,0.2c0.3,0.1,0.6,0.2,0.9,0.3c0.3,0.1,0.5,0.2,0.6,0.4c0.2,0.1,0.3,0.3,0.4,0.5c0.1,0.2,0.1,0.4,0.1,0.7
|
||||
c0,0.3-0.1,0.6-0.2,0.9s-0.3,0.4-0.5,0.6c-0.2,0.1-0.5,0.3-0.8,0.3s-0.6,0.1-0.9,0.1c-0.5,0-1-0.1-1.4-0.2
|
||||
c-0.5-0.1-0.9-0.3-1.3-0.6l0.5-1.1c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.3,0.2,0.5,0.3s0.4,0.2,0.6,0.2c0.2,0.1,0.5,0.1,0.7,0.1
|
||||
c0.7,0,1-0.2,1-0.7c0-0.1,0-0.3-0.1-0.4c-0.1-0.1-0.2-0.2-0.3-0.3C16.2,90,16,90,15.8,89.9s-0.4-0.1-0.7-0.2
|
||||
c-0.3-0.1-0.6-0.2-0.8-0.3c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.3-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.3,0.1-0.6,0.2-0.9
|
||||
c0.1-0.3,0.3-0.5,0.5-0.6s0.5-0.3,0.7-0.4C15,86,15.3,86,15.7,86c0.5,0,0.9,0.1,1.2,0.2c0.4,0.1,0.7,0.3,1,0.5L17.3,87.7z"/>
|
||||
<path class="st1" d="M20.5,88.3v4.1h-1.2V86h1l3.3,4.2V86h1.2v6.4h-1L20.5,88.3z"/>
|
||||
<path class="st1" d="M25.7,92.4l2.5-6.4h1l2.5,6.4h-1.3l-0.6-1.6h-2.2l-0.6,1.6H25.7z M28.8,87.4L27.8,90h1.8L28.8,87.4z"/>
|
||||
<path class="st1" d="M32.7,92.4V86h2.7c0.3,0,0.6,0.1,0.8,0.2s0.5,0.3,0.6,0.5c0.2,0.2,0.3,0.4,0.4,0.7c0.1,0.3,0.2,0.5,0.2,0.8
|
||||
c0,0.3,0,0.5-0.1,0.8c-0.1,0.3-0.2,0.5-0.4,0.7c-0.2,0.2-0.4,0.4-0.6,0.5c-0.2,0.1-0.5,0.2-0.8,0.2h-1.5v2.1H32.7z M33.9,89.2h1.4
|
||||
c0.2,0,0.4-0.1,0.6-0.3c0.2-0.2,0.2-0.4,0.2-0.8c0-0.2,0-0.3-0.1-0.4s-0.1-0.2-0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.2
|
||||
c-0.1,0-0.2-0.1-0.3-0.1h-1.4V89.2z"/>
|
||||
</g>
|
||||
<path class="st1" d="M33.2,164.1H32v-0.8c0-1.6-2-2.2-3.6-2.2h-7c-1.6,0-2.4,0.6-2.4,2.2v0.8h-3c-1.6,0-3,0.9-3,2.5v10.7
|
||||
c0,1.6,1.3,2.8,3,2.8h17.2c1.6,0,3.8-1.6,3.8-3.2v-10.3C37,165,34.8,164.1,33.2,164.1z M24.7,178.2c-3.8,0-6.8-3.1-6.8-6.8
|
||||
s3.1-6.8,6.8-6.8c3.8,0,6.8,3.1,6.8,6.8S28.5,178.2,24.7,178.2z"/>
|
||||
<g>
|
||||
<path class="st1" d="M17.3,187.9c0,0-0.1-0.1-0.2-0.2c-0.1-0.1-0.2-0.1-0.4-0.2c-0.2-0.1-0.3-0.1-0.5-0.2c-0.2,0-0.4-0.1-0.6-0.1
|
||||
c-0.3,0-0.6,0.1-0.8,0.2c-0.2,0.1-0.3,0.3-0.3,0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0.1,0.3,0.1,0.5,0.2
|
||||
c0.2,0.1,0.4,0.1,0.6,0.2c0.3,0.1,0.6,0.2,0.9,0.3c0.3,0.1,0.5,0.2,0.6,0.4c0.2,0.1,0.3,0.3,0.4,0.5c0.1,0.2,0.1,0.4,0.1,0.7
|
||||
c0,0.3-0.1,0.6-0.2,0.9s-0.3,0.4-0.5,0.6c-0.2,0.1-0.5,0.3-0.8,0.3s-0.6,0.1-0.9,0.1c-0.5,0-1-0.1-1.4-0.2
|
||||
c-0.5-0.1-0.9-0.3-1.3-0.6l0.5-1.1c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.3,0.2,0.5,0.3s0.4,0.2,0.6,0.2c0.2,0.1,0.5,0.1,0.7,0.1
|
||||
c0.7,0,1-0.2,1-0.7c0-0.1,0-0.3-0.1-0.4c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.3-0.1-0.5-0.2s-0.4-0.1-0.7-0.2
|
||||
c-0.3-0.1-0.6-0.2-0.8-0.3c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.3-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.3,0.1-0.6,0.2-0.9
|
||||
c0.1-0.3,0.3-0.5,0.5-0.6s0.5-0.3,0.7-0.4c0.3-0.1,0.6-0.1,0.9-0.1c0.5,0,0.9,0.1,1.2,0.2c0.4,0.1,0.7,0.3,1,0.5L17.3,187.9z"/>
|
||||
<path class="st1" d="M20.5,188.5v4.1h-1.2v-6.4h1l3.3,4.2v-4.2h1.2v6.4h-1L20.5,188.5z"/>
|
||||
<path class="st1" d="M25.7,192.6l2.5-6.4h1l2.5,6.4h-1.3l-0.6-1.6h-2.2l-0.6,1.6H25.7z M28.8,187.6l-0.9,2.6h1.8L28.8,187.6z"/>
|
||||
<path class="st1" d="M32.7,192.6v-6.4h2.7c0.3,0,0.6,0.1,0.8,0.2s0.5,0.3,0.6,0.5c0.2,0.2,0.3,0.4,0.4,0.7c0.1,0.3,0.2,0.5,0.2,0.8
|
||||
c0,0.3,0,0.5-0.1,0.8c-0.1,0.3-0.2,0.5-0.4,0.7c-0.2,0.2-0.4,0.4-0.6,0.5c-0.2,0.1-0.5,0.2-0.8,0.2h-1.5v2.1H32.7z M33.9,189.4h1.4
|
||||
c0.2,0,0.4-0.1,0.6-0.3c0.2-0.2,0.2-0.4,0.2-0.8c0-0.2,0-0.3-0.1-0.4s-0.1-0.2-0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.2
|
||||
c-0.1,0-0.2-0.1-0.3-0.1h-1.4V189.4z"/>
|
||||
</g>
|
||||
<path class="st3" d="M33.2,14.1H32v-0.7c0-1.6-2-2.3-3.6-2.3h-7c-1.6,0-2.4,0.6-2.4,2.3v0.7h-3c-1.6,0-3,0.9-3,2.5v10.7
|
||||
c0,1.6,1.3,2.7,3,2.7h17.2c1.6,0,3.8-1.6,3.8-3.2V16.6C37,15,34.8,14.1,33.2,14.1z M24.7,28.2c-3.8,0-6.8-3.1-6.8-6.8
|
||||
c0-3.8,3.1-6.8,6.8-6.8c3.8,0,6.8,3.1,6.8,6.8C31.5,25.2,28.5,28.2,24.7,28.2z"/>
|
||||
<g>
|
||||
<path class="st3" d="M17.3,38c0,0-0.1-0.1-0.2-0.2c-0.1-0.1-0.2-0.1-0.4-0.2c-0.2-0.1-0.3-0.1-0.5-0.2c-0.2,0-0.4-0.1-0.6-0.1
|
||||
c-0.3,0-0.6,0.1-0.8,0.2c-0.2,0.1-0.3,0.3-0.3,0.5c0,0.1,0,0.2,0.1,0.3c0.1,0.1,0.2,0.2,0.3,0.2c0.1,0.1,0.3,0.1,0.5,0.2
|
||||
c0.2,0.1,0.4,0.1,0.6,0.2c0.3,0.1,0.6,0.2,0.9,0.3c0.3,0.1,0.5,0.2,0.6,0.4c0.2,0.1,0.3,0.3,0.4,0.5c0.1,0.2,0.1,0.4,0.1,0.7
|
||||
c0,0.3-0.1,0.6-0.2,0.9s-0.3,0.4-0.5,0.6c-0.2,0.1-0.5,0.3-0.8,0.3s-0.6,0.1-0.9,0.1c-0.5,0-1-0.1-1.4-0.2
|
||||
c-0.5-0.1-0.9-0.3-1.3-0.6l0.5-1.1c0.1,0.1,0.2,0.1,0.3,0.2c0.1,0.1,0.3,0.2,0.5,0.3s0.4,0.2,0.6,0.2c0.2,0.1,0.5,0.1,0.7,0.1
|
||||
c0.7,0,1-0.2,1-0.7c0-0.1,0-0.3-0.1-0.4c-0.1-0.1-0.2-0.2-0.3-0.3c-0.1-0.1-0.3-0.1-0.5-0.2S15.4,40,15.1,40
|
||||
c-0.3-0.1-0.6-0.2-0.8-0.3c-0.2-0.1-0.4-0.2-0.6-0.3c-0.2-0.1-0.3-0.3-0.3-0.5c-0.1-0.2-0.1-0.4-0.1-0.6c0-0.3,0.1-0.6,0.2-0.9
|
||||
c0.1-0.3,0.3-0.5,0.5-0.6s0.5-0.3,0.7-0.4c0.3-0.1,0.6-0.1,0.9-0.1c0.5,0,0.9,0.1,1.2,0.2c0.4,0.1,0.7,0.3,1,0.5L17.3,38z"/>
|
||||
<path class="st3" d="M20.5,38.6v4.1h-1.2v-6.4h1l3.3,4.2v-4.2h1.2v6.4h-1L20.5,38.6z"/>
|
||||
<path class="st3" d="M25.7,42.7l2.5-6.4h1l2.5,6.4h-1.3l-0.6-1.6h-2.2l-0.6,1.6H25.7z M28.8,37.6l-0.9,2.6h1.8L28.8,37.6z"/>
|
||||
<path class="st3" d="M32.7,42.7v-6.4h2.7c0.3,0,0.6,0.1,0.8,0.2s0.5,0.3,0.6,0.5c0.2,0.2,0.3,0.4,0.4,0.7c0.1,0.3,0.2,0.5,0.2,0.8
|
||||
c0,0.3,0,0.5-0.1,0.8c-0.1,0.3-0.2,0.5-0.4,0.7c-0.2,0.2-0.4,0.4-0.6,0.5c-0.2,0.1-0.5,0.2-0.8,0.2h-1.5v2.1H32.7z M33.9,39.5h1.4
|
||||
c0.2,0,0.4-0.1,0.6-0.3c0.2-0.2,0.2-0.4,0.2-0.8c0-0.2,0-0.3-0.1-0.4s-0.1-0.2-0.2-0.3c-0.1-0.1-0.2-0.2-0.3-0.2
|
||||
c-0.1,0-0.2-0.1-0.3-0.1h-1.4V39.5z"/>
|
||||
</g>
|
||||
<circle class="st1" cx="24.7" cy="121.2" r="4"/>
|
||||
<circle class="st1" cx="24.7" cy="171.3" r="4"/>
|
||||
</svg>
|
After Width: | Height: | Size: 8.5 KiB |
|
@ -527,12 +527,14 @@ function onDomainConnectionRefused(reason) {
|
|||
createNotification("Connection refused: " + reason, NotificationType.CONNECTION_REFUSED);
|
||||
}
|
||||
|
||||
function onSnapshotTaken(path) {
|
||||
var imageProperties = {
|
||||
path: Script.resolvePath("file:///" + path),
|
||||
aspectRatio: Window.innerWidth / Window.innerHeight
|
||||
function onSnapshotTaken(path, notify) {
|
||||
if (notify) {
|
||||
var imageProperties = {
|
||||
path: Script.resolvePath("file:///" + path),
|
||||
aspectRatio: Window.innerWidth / Window.innerHeight
|
||||
}
|
||||
createNotification(wordWrap("Snapshot saved to " + path), NotificationType.SNAPSHOT, imageProperties);
|
||||
}
|
||||
createNotification(wordWrap("Snapshot saved to " + path), NotificationType.SNAPSHOT, imageProperties);
|
||||
}
|
||||
|
||||
// handles mouse clicks on buttons
|
||||
|
|
66
scripts/system/snapshot.js
Normal file
66
scripts/system/snapshot.js
Normal file
|
@ -0,0 +1,66 @@
|
|||
//
|
||||
// snapshot.js
|
||||
//
|
||||
// Created by David Kelly on 1 August 2016
|
||||
// Copyright 2016 High Fidelity, Inc
|
||||
//
|
||||
// Distributed under the Apache License, Version 2.0
|
||||
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
|
||||
//
|
||||
var SNAPSHOT_DELAY = 500; // 500ms
|
||||
var toolBar = Toolbars.getToolbar("com.highfidelity.interface.toolbar.system");
|
||||
var resetOverlays;
|
||||
var button = toolBar.addButton({
|
||||
objectName: "snapshot",
|
||||
imageURL: Script.resolvePath("assets/images/tools/snap.svg"),
|
||||
visible: true,
|
||||
buttonState: 1,
|
||||
defaultState: 1,
|
||||
hoverState: 1,
|
||||
alpha: 0.9,
|
||||
});
|
||||
|
||||
function onClicked() {
|
||||
// update button states
|
||||
resetOverlays = Menu.isOptionChecked("Overlays");
|
||||
Window.snapshotTaken.connect(resetButtons);
|
||||
|
||||
button.writeProperty("buttonState", 0);
|
||||
button.writeProperty("defaultState", 0);
|
||||
button.writeProperty("hoverState", 2);
|
||||
|
||||
// hide overlays if they are on
|
||||
if (resetOverlays) {
|
||||
Menu.setIsOptionChecked("Overlays", false);
|
||||
}
|
||||
|
||||
// hide hud
|
||||
toolBar.writeProperty("visible", false);
|
||||
|
||||
// take snapshot (with no notification)
|
||||
Script.setTimeout(function () {
|
||||
Window.takeSnapshot(false);
|
||||
}, SNAPSHOT_DELAY);
|
||||
}
|
||||
|
||||
function resetButtons(path, notify) {
|
||||
// show overlays if they were on
|
||||
if (resetOverlays) {
|
||||
Menu.setIsOptionChecked("Overlays", true);
|
||||
}
|
||||
// show hud
|
||||
toolBar.writeProperty("visible", true);
|
||||
|
||||
// update button states
|
||||
button.writeProperty("buttonState", 1);
|
||||
button.writeProperty("defaultState", 1);
|
||||
button.writeProperty("hoverState", 3);
|
||||
Window.snapshotTaken.disconnect(resetButtons);
|
||||
}
|
||||
|
||||
button.clicked.connect(onClicked);
|
||||
|
||||
Script.scriptEnding.connect(function () {
|
||||
toolBar.removeButton("snapshot");
|
||||
button.clicked.disconnect(onClicked);
|
||||
});
|
Loading…
Reference in a new issue