Compare commits
No commits in common. "very-old" and "master" have entirely different histories.
56
.github/workflows/sitesmith.yml
vendored
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
# Simple workflow for deploying static content to GitHub Pages
|
||||||
|
name: Deploy static content to Pages
|
||||||
|
|
||||||
|
on:
|
||||||
|
# Runs on pushes targeting the default branch
|
||||||
|
push:
|
||||||
|
branches: ["master"]
|
||||||
|
|
||||||
|
# Allows you to run this workflow manually from the Actions tab
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pages: write
|
||||||
|
id-token: write
|
||||||
|
|
||||||
|
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
||||||
|
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
||||||
|
concurrency:
|
||||||
|
group: "pages"
|
||||||
|
cancel-in-progress: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
# Build job
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
MDBOOK_VERSION: 0.1.3
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install sitesmith
|
||||||
|
run: |
|
||||||
|
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh
|
||||||
|
rustup update
|
||||||
|
cargo install --version ${MDBOOK_VERSION} sitesmith
|
||||||
|
- name: Setup Pages
|
||||||
|
id: pages
|
||||||
|
uses: actions/configure-pages@v5
|
||||||
|
- name: Build with sitesmith
|
||||||
|
run: sitesmith --projects ./gen/projects.json --work ./gen/work.json --template ./gen/template.html --output index.html
|
||||||
|
- name: Upload artifact
|
||||||
|
uses: actions/upload-pages-artifact@v3
|
||||||
|
with:
|
||||||
|
path: ./
|
||||||
|
|
||||||
|
deploy:
|
||||||
|
environment:
|
||||||
|
name: github-pages
|
||||||
|
url: ${{ steps.deployment.outputs.page_url }}
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: build
|
||||||
|
steps:
|
||||||
|
- name: Deploy to GitHub Pages
|
||||||
|
id: deployment
|
||||||
|
uses: actions/deploy-pages@v4
|
104
.gitignore
vendored
|
@ -1,104 +0,0 @@
|
||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
|
||||||
|
|
||||||
# Runtime data
|
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
*.lcov
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# TypeScript v1 declaration files
|
|
||||||
typings/
|
|
||||||
|
|
||||||
# TypeScript cache
|
|
||||||
*.tsbuildinfo
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Microbundle cache
|
|
||||||
.rpt2_cache/
|
|
||||||
.rts2_cache_cjs/
|
|
||||||
.rts2_cache_es/
|
|
||||||
.rts2_cache_umd/
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variables file
|
|
||||||
.env
|
|
||||||
.env.test
|
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
|
||||||
.cache
|
|
||||||
|
|
||||||
# Next.js build output
|
|
||||||
.next
|
|
||||||
|
|
||||||
# Nuxt.js build / generate output
|
|
||||||
.nuxt
|
|
||||||
dist
|
|
||||||
|
|
||||||
# Gatsby files
|
|
||||||
.cache/
|
|
||||||
# Comment in the public line in if your project uses Gatsby and *not* Next.js
|
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
||||||
# public
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
|
|
||||||
# TernJS port file
|
|
||||||
.tern-port
|
|
3
.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
||||||
[submodule "dlss"]
|
|
||||||
path = dlss
|
|
||||||
url = https://github.com/BuyMyMojo/dlss-versions
|
|
|
@ -1,37 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Document</title>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
body{
|
|
||||||
background-color: black;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<table">
|
|
||||||
<tr>
|
|
||||||
<td><img src="./images/FSRoff-cropped.jpg"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="./images/FSRoff.png"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="./images/FSRon-cropped.jpg"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="./images/FSRon.png"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="./images/FullRes-cropped.jpg"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><img src="./images/FullRes.png"></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
Before Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 6.4 MiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 8.1 MiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 7.2 MiB |
|
@ -1,18 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
||||||
<title>Video test
|
|
||||||
</title>
|
|
||||||
<style>
|
|
||||||
body{
|
|
||||||
background-color: black;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div style="position: center; padding-top: 56.25%;"><iframe src="https://iframe.videodelivery.net/e38e9908b0866c26bd444a9d7aa0483c?preload=true" style="border: none; position: absolute; top: 0; left: 0; height: 720px; width: 1280px;" allow="accelerometer; gyroscope; autoplay; encrypted-media; picture-in-picture;" allowfullscreen="true"></iframe></div>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
BIN
DLSS_2.0.png
Before Width: | Height: | Size: 1.9 MiB |
|
@ -1,437 +0,0 @@
|
||||||
var APP_DATA = {
|
|
||||||
"scenes": [
|
|
||||||
{
|
|
||||||
"id": "0-agreatwitcherview1",
|
|
||||||
"name": "AGreatWitcherView1",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [
|
|
||||||
{
|
|
||||||
"yaw": -0.31915087930061503,
|
|
||||||
"pitch": -0.1548990702370716,
|
|
||||||
"rotation": 0,
|
|
||||||
"target": "1-agreatwitcherview2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"yaw": -2.307842944507934,
|
|
||||||
"pitch": 0.34069758877293665,
|
|
||||||
"rotation": 0,
|
|
||||||
"target": "2-agreatwitcherview3"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1-agreatwitcherview2",
|
|
||||||
"name": "AGreatWitcherView2",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [
|
|
||||||
{
|
|
||||||
"yaw": -2.9619540641615245,
|
|
||||||
"pitch": -0.07391349803553027,
|
|
||||||
"rotation": 0,
|
|
||||||
"target": "0-agreatwitcherview1"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "2-agreatwitcherview3",
|
|
||||||
"name": "AGreatWitcherView3",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [
|
|
||||||
{
|
|
||||||
"yaw": 1.1871219651316771,
|
|
||||||
"pitch": 0.217046025952655,
|
|
||||||
"rotation": 0,
|
|
||||||
"target": "0-agreatwitcherview1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"yaw": -3.07791414563048,
|
|
||||||
"pitch": 0.392697091904159,
|
|
||||||
"rotation": 0,
|
|
||||||
"target": "4-fancywitcherwindow1"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "3-cultcavewitcher3",
|
|
||||||
"name": "CultCaveWitcher3",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "4-fancywitcherwindow1",
|
|
||||||
"name": "FancyWitcherWindow1",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [
|
|
||||||
{
|
|
||||||
"yaw": -3.0707449229600225,
|
|
||||||
"pitch": 0.35346957822890523,
|
|
||||||
"rotation": 0,
|
|
||||||
"target": "5-fancywitcherwindow2"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "5-fancywitcherwindow2",
|
|
||||||
"name": "FancyWitcherWindow2",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [
|
|
||||||
{
|
|
||||||
"yaw": 0.06317041379698018,
|
|
||||||
"pitch": -0.028068663326846988,
|
|
||||||
"rotation": 0,
|
|
||||||
"target": "4-fancywitcherwindow1"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "6-agreatwitcherview3-restyle",
|
|
||||||
"name": "AGreatWitcherView3-restyle",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 384,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"yaw": -0.05038770559617056,
|
|
||||||
"pitch": -0.03205434549538211,
|
|
||||||
"fov": 1.3378744097411812
|
|
||||||
},
|
|
||||||
"linkHotspots": [],
|
|
||||||
"infoHotspots": [
|
|
||||||
{
|
|
||||||
"yaw": -0.06553892778552317,
|
|
||||||
"pitch": -0.06841864886111892,
|
|
||||||
"title": "Info",
|
|
||||||
"text": "An earlier image but put through an AI"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "7-4biomes",
|
|
||||||
"name": "4biomes",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "8-airbaloonandlog",
|
|
||||||
"name": "AirbaloonAndLog",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 4096
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 4096,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "9-chestdensity",
|
|
||||||
"name": "ChestDensity",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 4096
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 4096,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "10-coolvillage1",
|
|
||||||
"name": "CoolVillage1",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [],
|
|
||||||
"infoHotspots": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "11-underwatervillage",
|
|
||||||
"name": "UnderwaterVillage",
|
|
||||||
"levels": [
|
|
||||||
{
|
|
||||||
"tileSize": 256,
|
|
||||||
"size": 256,
|
|
||||||
"fallbackOnly": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 512
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 1024
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"tileSize": 512,
|
|
||||||
"size": 2048
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"faceSize": 2048,
|
|
||||||
"initialViewParameters": {
|
|
||||||
"pitch": 0,
|
|
||||||
"yaw": 0,
|
|
||||||
"fov": 1.5707963267948966
|
|
||||||
},
|
|
||||||
"linkHotspots": [],
|
|
||||||
"infoHotspots": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"name": "Game 360 Imgaes",
|
|
||||||
"settings": {
|
|
||||||
"mouseViewMode": "drag",
|
|
||||||
"autorotateEnabled": true,
|
|
||||||
"fullscreenButton": true,
|
|
||||||
"viewControlButtons": true
|
|
||||||
}
|
|
||||||
};
|
|
Before Width: | Height: | Size: 1 KiB |
Before Width: | Height: | Size: 586 B |
Before Width: | Height: | Size: 801 B |
Before Width: | Height: | Size: 538 B |
Before Width: | Height: | Size: 683 B |
Before Width: | Height: | Size: 995 B |
Before Width: | Height: | Size: 806 B |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 412 B |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 484 B |
Before Width: | Height: | Size: 765 B |
Before Width: | Height: | Size: 789 B |
Before Width: | Height: | Size: 737 B |
|
@ -1,131 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Game 360 Imgaes</title>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="target-densitydpi=device-dpi, width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, minimal-ui" />
|
|
||||||
<style> @-ms-viewport { width: device-width; } </style>
|
|
||||||
<link rel="stylesheet" href="vendor/reset.min.css">
|
|
||||||
<link rel="stylesheet" href="style.css">
|
|
||||||
|
|
||||||
<!-- twitter cards -->
|
|
||||||
<meta name="twitter:card" content="summary" />
|
|
||||||
<meta name="twitter:site" content="@OwenQuinlan7" />
|
|
||||||
<meta name="twitter:creator" content="@OwenQuinlan7" />
|
|
||||||
<meta property="og:url" content="https://buymymojo.net/Game%20360%20images/" />
|
|
||||||
<meta property="og:title" content="BuyMyMojo 360 images" />
|
|
||||||
<meta property="og:description" content="Just a collection of 360 images I have." />
|
|
||||||
<meta property="og:image" content="https://buymymojo.net/android-chrome-512x512.png" />
|
|
||||||
|
|
||||||
<!-- Open Graph Markup -->
|
|
||||||
<meta property="og:url" content="https://buymymojo.net/Game%20360%20images/" />
|
|
||||||
<meta property="og:type" content="website" />
|
|
||||||
<meta property="og:title" content="BuyMyMojo 360 images" />
|
|
||||||
<meta property="og:description" content="Just a collection of 360 images I have." />
|
|
||||||
<meta property="og:image" content="https://buymymojo.net/android-chrome-512x512.png" />
|
|
||||||
</head>
|
|
||||||
<body class="multiple-scenes view-control-buttons">
|
|
||||||
|
|
||||||
<div id="pano"></div>
|
|
||||||
|
|
||||||
<div id="sceneList">
|
|
||||||
<ul class="scenes">
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="0-agreatwitcherview1">
|
|
||||||
<li class="text">AGreatWitcherView1</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="1-agreatwitcherview2">
|
|
||||||
<li class="text">AGreatWitcherView2</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="2-agreatwitcherview3">
|
|
||||||
<li class="text">AGreatWitcherView3</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="3-cultcavewitcher3">
|
|
||||||
<li class="text">CultCaveWitcher3</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="4-fancywitcherwindow1">
|
|
||||||
<li class="text">FancyWitcherWindow1</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="5-fancywitcherwindow2">
|
|
||||||
<li class="text">FancyWitcherWindow2</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="6-agreatwitcherview3-restyle">
|
|
||||||
<li class="text">AGreatWitcherView3-restyle</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="7-4biomes">
|
|
||||||
<li class="text">4biomes</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="8-airbaloonandlog">
|
|
||||||
<li class="text">AirbaloonAndLog</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="9-chestdensity">
|
|
||||||
<li class="text">ChestDensity</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="10-coolvillage1">
|
|
||||||
<li class="text">CoolVillage1</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" class="scene" data-id="11-underwatervillage">
|
|
||||||
<li class="text">UnderwaterVillage</li>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="titleBar">
|
|
||||||
<h1 class="sceneName"></h1>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" id="autorotateToggle">
|
|
||||||
<img class="icon off" src="img/play.png">
|
|
||||||
<img class="icon on" src="img/pause.png">
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" id="fullscreenToggle">
|
|
||||||
<img class="icon off" src="img/fullscreen.png">
|
|
||||||
<img class="icon on" src="img/windowed.png">
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" id="sceneListToggle">
|
|
||||||
<img class="icon off" src="img/expand.png">
|
|
||||||
<img class="icon on" src="img/collapse.png">
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<a href="javascript:void(0)" id="viewUp" class="viewControlButton viewControlButton-1">
|
|
||||||
<img class="icon" src="img/up.png">
|
|
||||||
</a>
|
|
||||||
<a href="javascript:void(0)" id="viewDown" class="viewControlButton viewControlButton-2">
|
|
||||||
<img class="icon" src="img/down.png">
|
|
||||||
</a>
|
|
||||||
<a href="javascript:void(0)" id="viewLeft" class="viewControlButton viewControlButton-3">
|
|
||||||
<img class="icon" src="img/left.png">
|
|
||||||
</a>
|
|
||||||
<a href="javascript:void(0)" id="viewRight" class="viewControlButton viewControlButton-4">
|
|
||||||
<img class="icon" src="img/right.png">
|
|
||||||
</a>
|
|
||||||
<a href="javascript:void(0)" id="viewIn" class="viewControlButton viewControlButton-5">
|
|
||||||
<img class="icon" src="img/plus.png">
|
|
||||||
</a>
|
|
||||||
<a href="javascript:void(0)" id="viewOut" class="viewControlButton viewControlButton-6">
|
|
||||||
<img class="icon" src="img/minus.png">
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<script src="vendor/screenfull.min.js" ></script>
|
|
||||||
<script src="vendor/bowser.min.js" ></script>
|
|
||||||
<script src="vendor/marzipano.js" ></script>
|
|
||||||
|
|
||||||
<script src="data.js"></script>
|
|
||||||
<script src="index.js"></script>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,392 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright 2016 Google Inc. All rights reserved.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
(function() {
|
|
||||||
var Marzipano = window.Marzipano;
|
|
||||||
var bowser = window.bowser;
|
|
||||||
var screenfull = window.screenfull;
|
|
||||||
var data = window.APP_DATA;
|
|
||||||
|
|
||||||
// Grab elements from DOM.
|
|
||||||
var panoElement = document.querySelector('#pano');
|
|
||||||
var sceneNameElement = document.querySelector('#titleBar .sceneName');
|
|
||||||
var sceneListElement = document.querySelector('#sceneList');
|
|
||||||
var sceneElements = document.querySelectorAll('#sceneList .scene');
|
|
||||||
var sceneListToggleElement = document.querySelector('#sceneListToggle');
|
|
||||||
var autorotateToggleElement = document.querySelector('#autorotateToggle');
|
|
||||||
var fullscreenToggleElement = document.querySelector('#fullscreenToggle');
|
|
||||||
|
|
||||||
// Detect desktop or mobile mode.
|
|
||||||
if (window.matchMedia) {
|
|
||||||
var setMode = function() {
|
|
||||||
if (mql.matches) {
|
|
||||||
document.body.classList.remove('desktop');
|
|
||||||
document.body.classList.add('mobile');
|
|
||||||
} else {
|
|
||||||
document.body.classList.remove('mobile');
|
|
||||||
document.body.classList.add('desktop');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var mql = matchMedia("(max-width: 500px), (max-height: 500px)");
|
|
||||||
setMode();
|
|
||||||
mql.addListener(setMode);
|
|
||||||
} else {
|
|
||||||
document.body.classList.add('desktop');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Detect whether we are on a touch device.
|
|
||||||
document.body.classList.add('no-touch');
|
|
||||||
window.addEventListener('touchstart', function() {
|
|
||||||
document.body.classList.remove('no-touch');
|
|
||||||
document.body.classList.add('touch');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Use tooltip fallback mode on IE < 11.
|
|
||||||
if (bowser.msie && parseFloat(bowser.version) < 11) {
|
|
||||||
document.body.classList.add('tooltip-fallback');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Viewer options.
|
|
||||||
var viewerOpts = {
|
|
||||||
controls: {
|
|
||||||
mouseViewMode: data.settings.mouseViewMode
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Initialize viewer.
|
|
||||||
var viewer = new Marzipano.Viewer(panoElement, viewerOpts);
|
|
||||||
|
|
||||||
// Create scenes.
|
|
||||||
var scenes = data.scenes.map(function(data) {
|
|
||||||
var urlPrefix = "tiles";
|
|
||||||
var source = Marzipano.ImageUrlSource.fromString(
|
|
||||||
urlPrefix + "/" + data.id + "/{z}/{f}/{y}/{x}.jpg",
|
|
||||||
{ cubeMapPreviewUrl: urlPrefix + "/" + data.id + "/preview.jpg" });
|
|
||||||
var geometry = new Marzipano.CubeGeometry(data.levels);
|
|
||||||
|
|
||||||
var limiter = Marzipano.RectilinearView.limit.traditional(data.faceSize, 100*Math.PI/180, 120*Math.PI/180);
|
|
||||||
var view = new Marzipano.RectilinearView(data.initialViewParameters, limiter);
|
|
||||||
|
|
||||||
var scene = viewer.createScene({
|
|
||||||
source: source,
|
|
||||||
geometry: geometry,
|
|
||||||
view: view,
|
|
||||||
pinFirstLevel: true
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create link hotspots.
|
|
||||||
data.linkHotspots.forEach(function(hotspot) {
|
|
||||||
var element = createLinkHotspotElement(hotspot);
|
|
||||||
scene.hotspotContainer().createHotspot(element, { yaw: hotspot.yaw, pitch: hotspot.pitch });
|
|
||||||
});
|
|
||||||
|
|
||||||
// Create info hotspots.
|
|
||||||
data.infoHotspots.forEach(function(hotspot) {
|
|
||||||
var element = createInfoHotspotElement(hotspot);
|
|
||||||
scene.hotspotContainer().createHotspot(element, { yaw: hotspot.yaw, pitch: hotspot.pitch });
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
|
||||||
data: data,
|
|
||||||
scene: scene,
|
|
||||||
view: view
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
// Set up autorotate, if enabled.
|
|
||||||
var autorotate = Marzipano.autorotate({
|
|
||||||
yawSpeed: 0.03,
|
|
||||||
targetPitch: 0,
|
|
||||||
targetFov: Math.PI/2
|
|
||||||
});
|
|
||||||
if (data.settings.autorotateEnabled) {
|
|
||||||
autorotateToggleElement.classList.add('enabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set handler for autorotate toggle.
|
|
||||||
autorotateToggleElement.addEventListener('click', toggleAutorotate);
|
|
||||||
|
|
||||||
// Set up fullscreen mode, if supported.
|
|
||||||
if (screenfull.enabled && data.settings.fullscreenButton) {
|
|
||||||
document.body.classList.add('fullscreen-enabled');
|
|
||||||
fullscreenToggleElement.addEventListener('click', function() {
|
|
||||||
screenfull.toggle();
|
|
||||||
});
|
|
||||||
screenfull.on('change', function() {
|
|
||||||
if (screenfull.isFullscreen) {
|
|
||||||
fullscreenToggleElement.classList.add('enabled');
|
|
||||||
} else {
|
|
||||||
fullscreenToggleElement.classList.remove('enabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
document.body.classList.add('fullscreen-disabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set handler for scene list toggle.
|
|
||||||
sceneListToggleElement.addEventListener('click', toggleSceneList);
|
|
||||||
|
|
||||||
// Start with the scene list open on desktop.
|
|
||||||
if (!document.body.classList.contains('mobile')) {
|
|
||||||
showSceneList();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set handler for scene switch.
|
|
||||||
scenes.forEach(function(scene) {
|
|
||||||
var el = document.querySelector('#sceneList .scene[data-id="' + scene.data.id + '"]');
|
|
||||||
el.addEventListener('click', function() {
|
|
||||||
switchScene(scene);
|
|
||||||
// On mobile, hide scene list after selecting a scene.
|
|
||||||
if (document.body.classList.contains('mobile')) {
|
|
||||||
hideSceneList();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// DOM elements for view controls.
|
|
||||||
var viewUpElement = document.querySelector('#viewUp');
|
|
||||||
var viewDownElement = document.querySelector('#viewDown');
|
|
||||||
var viewLeftElement = document.querySelector('#viewLeft');
|
|
||||||
var viewRightElement = document.querySelector('#viewRight');
|
|
||||||
var viewInElement = document.querySelector('#viewIn');
|
|
||||||
var viewOutElement = document.querySelector('#viewOut');
|
|
||||||
|
|
||||||
// Dynamic parameters for controls.
|
|
||||||
var velocity = 0.7;
|
|
||||||
var friction = 3;
|
|
||||||
|
|
||||||
// Associate view controls with elements.
|
|
||||||
var controls = viewer.controls();
|
|
||||||
controls.registerMethod('upElement', new Marzipano.ElementPressControlMethod(viewUpElement, 'y', -velocity, friction), true);
|
|
||||||
controls.registerMethod('downElement', new Marzipano.ElementPressControlMethod(viewDownElement, 'y', velocity, friction), true);
|
|
||||||
controls.registerMethod('leftElement', new Marzipano.ElementPressControlMethod(viewLeftElement, 'x', -velocity, friction), true);
|
|
||||||
controls.registerMethod('rightElement', new Marzipano.ElementPressControlMethod(viewRightElement, 'x', velocity, friction), true);
|
|
||||||
controls.registerMethod('inElement', new Marzipano.ElementPressControlMethod(viewInElement, 'zoom', -velocity, friction), true);
|
|
||||||
controls.registerMethod('outElement', new Marzipano.ElementPressControlMethod(viewOutElement, 'zoom', velocity, friction), true);
|
|
||||||
|
|
||||||
function sanitize(s) {
|
|
||||||
return s.replace('&', '&').replace('<', '<').replace('>', '>');
|
|
||||||
}
|
|
||||||
|
|
||||||
function switchScene(scene) {
|
|
||||||
stopAutorotate();
|
|
||||||
scene.view.setParameters(scene.data.initialViewParameters);
|
|
||||||
scene.scene.switchTo();
|
|
||||||
startAutorotate();
|
|
||||||
updateSceneName(scene);
|
|
||||||
updateSceneList(scene);
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateSceneName(scene) {
|
|
||||||
sceneNameElement.innerHTML = sanitize(scene.data.name);
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateSceneList(scene) {
|
|
||||||
for (var i = 0; i < sceneElements.length; i++) {
|
|
||||||
var el = sceneElements[i];
|
|
||||||
if (el.getAttribute('data-id') === scene.data.id) {
|
|
||||||
el.classList.add('current');
|
|
||||||
} else {
|
|
||||||
el.classList.remove('current');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function showSceneList() {
|
|
||||||
sceneListElement.classList.add('enabled');
|
|
||||||
sceneListToggleElement.classList.add('enabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
function hideSceneList() {
|
|
||||||
sceneListElement.classList.remove('enabled');
|
|
||||||
sceneListToggleElement.classList.remove('enabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggleSceneList() {
|
|
||||||
sceneListElement.classList.toggle('enabled');
|
|
||||||
sceneListToggleElement.classList.toggle('enabled');
|
|
||||||
}
|
|
||||||
|
|
||||||
function startAutorotate() {
|
|
||||||
if (!autorotateToggleElement.classList.contains('enabled')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
viewer.startMovement(autorotate);
|
|
||||||
viewer.setIdleMovement(3000, autorotate);
|
|
||||||
}
|
|
||||||
|
|
||||||
function stopAutorotate() {
|
|
||||||
viewer.stopMovement();
|
|
||||||
viewer.setIdleMovement(Infinity);
|
|
||||||
}
|
|
||||||
|
|
||||||
function toggleAutorotate() {
|
|
||||||
if (autorotateToggleElement.classList.contains('enabled')) {
|
|
||||||
autorotateToggleElement.classList.remove('enabled');
|
|
||||||
stopAutorotate();
|
|
||||||
} else {
|
|
||||||
autorotateToggleElement.classList.add('enabled');
|
|
||||||
startAutorotate();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function createLinkHotspotElement(hotspot) {
|
|
||||||
|
|
||||||
// Create wrapper element to hold icon and tooltip.
|
|
||||||
var wrapper = document.createElement('div');
|
|
||||||
wrapper.classList.add('hotspot');
|
|
||||||
wrapper.classList.add('link-hotspot');
|
|
||||||
|
|
||||||
// Create image element.
|
|
||||||
var icon = document.createElement('img');
|
|
||||||
icon.src = 'img/link.png';
|
|
||||||
icon.classList.add('link-hotspot-icon');
|
|
||||||
|
|
||||||
// Set rotation transform.
|
|
||||||
var transformProperties = [ '-ms-transform', '-webkit-transform', 'transform' ];
|
|
||||||
for (var i = 0; i < transformProperties.length; i++) {
|
|
||||||
var property = transformProperties[i];
|
|
||||||
icon.style[property] = 'rotate(' + hotspot.rotation + 'rad)';
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add click event handler.
|
|
||||||
wrapper.addEventListener('click', function() {
|
|
||||||
switchScene(findSceneById(hotspot.target));
|
|
||||||
});
|
|
||||||
|
|
||||||
// Prevent touch and scroll events from reaching the parent element.
|
|
||||||
// This prevents the view control logic from interfering with the hotspot.
|
|
||||||
stopTouchAndScrollEventPropagation(wrapper);
|
|
||||||
|
|
||||||
// Create tooltip element.
|
|
||||||
var tooltip = document.createElement('div');
|
|
||||||
tooltip.classList.add('hotspot-tooltip');
|
|
||||||
tooltip.classList.add('link-hotspot-tooltip');
|
|
||||||
tooltip.innerHTML = findSceneDataById(hotspot.target).name;
|
|
||||||
|
|
||||||
wrapper.appendChild(icon);
|
|
||||||
wrapper.appendChild(tooltip);
|
|
||||||
|
|
||||||
return wrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
function createInfoHotspotElement(hotspot) {
|
|
||||||
|
|
||||||
// Create wrapper element to hold icon and tooltip.
|
|
||||||
var wrapper = document.createElement('div');
|
|
||||||
wrapper.classList.add('hotspot');
|
|
||||||
wrapper.classList.add('info-hotspot');
|
|
||||||
|
|
||||||
// Create hotspot/tooltip header.
|
|
||||||
var header = document.createElement('div');
|
|
||||||
header.classList.add('info-hotspot-header');
|
|
||||||
|
|
||||||
// Create image element.
|
|
||||||
var iconWrapper = document.createElement('div');
|
|
||||||
iconWrapper.classList.add('info-hotspot-icon-wrapper');
|
|
||||||
var icon = document.createElement('img');
|
|
||||||
icon.src = 'img/info.png';
|
|
||||||
icon.classList.add('info-hotspot-icon');
|
|
||||||
iconWrapper.appendChild(icon);
|
|
||||||
|
|
||||||
// Create title element.
|
|
||||||
var titleWrapper = document.createElement('div');
|
|
||||||
titleWrapper.classList.add('info-hotspot-title-wrapper');
|
|
||||||
var title = document.createElement('div');
|
|
||||||
title.classList.add('info-hotspot-title');
|
|
||||||
title.innerHTML = hotspot.title;
|
|
||||||
titleWrapper.appendChild(title);
|
|
||||||
|
|
||||||
// Create close element.
|
|
||||||
var closeWrapper = document.createElement('div');
|
|
||||||
closeWrapper.classList.add('info-hotspot-close-wrapper');
|
|
||||||
var closeIcon = document.createElement('img');
|
|
||||||
closeIcon.src = 'img/close.png';
|
|
||||||
closeIcon.classList.add('info-hotspot-close-icon');
|
|
||||||
closeWrapper.appendChild(closeIcon);
|
|
||||||
|
|
||||||
// Construct header element.
|
|
||||||
header.appendChild(iconWrapper);
|
|
||||||
header.appendChild(titleWrapper);
|
|
||||||
header.appendChild(closeWrapper);
|
|
||||||
|
|
||||||
// Create text element.
|
|
||||||
var text = document.createElement('div');
|
|
||||||
text.classList.add('info-hotspot-text');
|
|
||||||
text.innerHTML = hotspot.text;
|
|
||||||
|
|
||||||
// Place header and text into wrapper element.
|
|
||||||
wrapper.appendChild(header);
|
|
||||||
wrapper.appendChild(text);
|
|
||||||
|
|
||||||
// Create a modal for the hotspot content to appear on mobile mode.
|
|
||||||
var modal = document.createElement('div');
|
|
||||||
modal.innerHTML = wrapper.innerHTML;
|
|
||||||
modal.classList.add('info-hotspot-modal');
|
|
||||||
document.body.appendChild(modal);
|
|
||||||
|
|
||||||
var toggle = function() {
|
|
||||||
wrapper.classList.toggle('visible');
|
|
||||||
modal.classList.toggle('visible');
|
|
||||||
};
|
|
||||||
|
|
||||||
// Show content when hotspot is clicked.
|
|
||||||
wrapper.querySelector('.info-hotspot-header').addEventListener('click', toggle);
|
|
||||||
|
|
||||||
// Hide content when close icon is clicked.
|
|
||||||
modal.querySelector('.info-hotspot-close-wrapper').addEventListener('click', toggle);
|
|
||||||
|
|
||||||
// Prevent touch and scroll events from reaching the parent element.
|
|
||||||
// This prevents the view control logic from interfering with the hotspot.
|
|
||||||
stopTouchAndScrollEventPropagation(wrapper);
|
|
||||||
|
|
||||||
return wrapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Prevent touch and scroll events from reaching the parent element.
|
|
||||||
function stopTouchAndScrollEventPropagation(element, eventList) {
|
|
||||||
var eventList = [ 'touchstart', 'touchmove', 'touchend', 'touchcancel',
|
|
||||||
'wheel', 'mousewheel' ];
|
|
||||||
for (var i = 0; i < eventList.length; i++) {
|
|
||||||
element.addEventListener(eventList[i], function(event) {
|
|
||||||
event.stopPropagation();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function findSceneById(id) {
|
|
||||||
for (var i = 0; i < scenes.length; i++) {
|
|
||||||
if (scenes[i].data.id === id) {
|
|
||||||
return scenes[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
function findSceneDataById(id) {
|
|
||||||
for (var i = 0; i < data.scenes.length; i++) {
|
|
||||||
if (data.scenes[i].id === id) {
|
|
||||||
return data.scenes[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Display the initial scene.
|
|
||||||
switchScene(scenes[0]);
|
|
||||||
|
|
||||||
})();
|
|
|
@ -1,830 +0,0 @@
|
||||||
* {
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
-ms-text-size-adjust: none;
|
|
||||||
-moz-text-size-adjust: none;
|
|
||||||
-webkit-text-size-adjust: none;
|
|
||||||
text-size-adjust: none;
|
|
||||||
-webkit-user-drag: none;
|
|
||||||
-webkit-touch-callout: none;
|
|
||||||
-ms-content-zooming: none;
|
|
||||||
-webkit-tap-highlight-color: rgba(0,0,0,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
html, body {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
||||||
font-size: 16px;
|
|
||||||
background-color: #000;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
a, a:hover, a:active, a:visited {
|
|
||||||
text-decoration: none;
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pano {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
#titleBar {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 40px;
|
|
||||||
height: 40px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #titleBar {
|
|
||||||
height: 50px;
|
|
||||||
right: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If there is a fullscreen button the title bar must make space for it */
|
|
||||||
body.fullscreen-enabled #titleBar {
|
|
||||||
right: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.fullscreen-enabled.mobile #titleBar {
|
|
||||||
right: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If there are multiple scenes the title bar must make space for the scene list toggle */
|
|
||||||
body.multiple-scenes #titleBar {
|
|
||||||
left: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.multiple-scenes.mobile #titleBar {
|
|
||||||
left: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#titleBar .sceneName {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
line-height: 30px;
|
|
||||||
padding: 5px;
|
|
||||||
background-color: rgb(58,68,84);
|
|
||||||
background-color: rgba(58,68,84,0.8);
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
-moz-user-select: text;
|
|
||||||
-webkit-user-select: text;
|
|
||||||
-ms-user-select: text;
|
|
||||||
user-select: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #titleBar .sceneName {
|
|
||||||
line-height: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fullscreenToggle {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
padding: 5px;
|
|
||||||
background-color: rgb(103,115,131);
|
|
||||||
background-color: rgba(103,115,131,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #fullscreenToggle {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.fullscreen-enabled #fullscreenToggle {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fullscreenToggle .icon {
|
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
right: 5px;
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #fullscreenToggle .icon {
|
|
||||||
top: 10px;
|
|
||||||
right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fullscreenToggle .icon.on {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fullscreenToggle .icon.off {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fullscreenToggle.enabled .icon.on {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#fullscreenToggle.enabled .icon.off {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#autorotateToggle {
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
padding: 5px;
|
|
||||||
background-color: rgb(103,115,131);
|
|
||||||
background-color: rgba(103,115,131,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #autorotateToggle {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* If there is a fullscreen button, autorotate must placed a bit to the left */
|
|
||||||
body.fullscreen-enabled #autorotateToggle {
|
|
||||||
right: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.fullscreen-enabled.mobile #autorotateToggle {
|
|
||||||
right: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#autorotateToggle .icon {
|
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
right: 5px;
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #autorotateToggle .icon {
|
|
||||||
top: 10px;
|
|
||||||
right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#autorotateToggle .icon.on {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#autorotateToggle .icon.off {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#autorotateToggle.enabled .icon.on {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#autorotateToggle.enabled .icon.off {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneListToggle {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
padding: 5px;
|
|
||||||
background-color: rgb(103,115,131);
|
|
||||||
background-color: rgba(103,115,131,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #sceneListToggle {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneListToggle .text {
|
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
left: 15px;
|
|
||||||
width: 100%;
|
|
||||||
line-height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneListToggle .icon {
|
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
right: 5px;
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #sceneListToggle .icon {
|
|
||||||
top: 10px;
|
|
||||||
right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneListToggle .icon.on {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneListToggle .icon.off {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneListToggle.enabled .icon.on {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneListToggle.enabled .icon.off {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneList {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: -220px;
|
|
||||||
padding-top: 40px;
|
|
||||||
width: 220px;
|
|
||||||
max-height: 100%;
|
|
||||||
overflow-x: hidden;
|
|
||||||
overflow-y: auto;
|
|
||||||
margin-left: 0;
|
|
||||||
-webkit-transition: margin-left 0.5s ease-in-out;
|
|
||||||
transition: margin-left 0.5s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #sceneList {
|
|
||||||
padding-top: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneList .scenes {
|
|
||||||
width: 100%;
|
|
||||||
background-color: rgb(58,68,84);
|
|
||||||
background-color: rgba(58,68,84,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #sceneList {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
left: -100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #sceneList.enabled {
|
|
||||||
margin-left: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #sceneList .scenes {
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneList.enabled {
|
|
||||||
margin-left: 220px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneList .scene {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #sceneList .scene {
|
|
||||||
height: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneList .scene .text {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
padding: 0 15px;
|
|
||||||
line-height: 30px;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile #sceneList .scene .text {
|
|
||||||
line-height: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-touch #sceneList .scene:hover {
|
|
||||||
background-color: rgb(103,115,131);
|
|
||||||
background-color: rgba(103,115,131,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
#sceneList .scene.current {
|
|
||||||
background-color: rgb(103,115,131);
|
|
||||||
background-color: rgba(103,115,131,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hide scene list when only a single scene exists */
|
|
||||||
body.single-scene #sceneList, body.single-scene #sceneListToggle {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Link hotspot */
|
|
||||||
|
|
||||||
.link-hotspot {
|
|
||||||
width: 60px;
|
|
||||||
height: 60px;
|
|
||||||
margin-left: -30px;
|
|
||||||
margin-top: -30px;
|
|
||||||
opacity: 0.9;
|
|
||||||
-webkit-transition: opacity 0.2s;
|
|
||||||
transition: opacity 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-touch .link-hotspot:hover {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile .link-hotspot {
|
|
||||||
width: 70px;
|
|
||||||
height: 70px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.link-hotspot-icon {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.link-hotspot-tooltip {
|
|
||||||
position: absolute;
|
|
||||||
left: 100%;
|
|
||||||
top: 14px; /* ( 60 - (16 + 2*8) ) / 2 */
|
|
||||||
|
|
||||||
margin-left: 3px;
|
|
||||||
|
|
||||||
font-size: 16px;
|
|
||||||
|
|
||||||
max-width: 300px;
|
|
||||||
|
|
||||||
padding: 8px 10px;
|
|
||||||
|
|
||||||
border-radius: 5px;
|
|
||||||
|
|
||||||
background-color: rgb(58,68,84);
|
|
||||||
background-color: rgba(58,68,84,0.8);
|
|
||||||
|
|
||||||
color: #fff;
|
|
||||||
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
-ms-transform: translateX(-8px);
|
|
||||||
-webkit-transform: translateX(-8px);
|
|
||||||
transform: translateX(-8px);
|
|
||||||
|
|
||||||
-webkit-transition: -ms-transform 0.3s,
|
|
||||||
-webkit-transform 0.3s,
|
|
||||||
transform 0.3s,
|
|
||||||
opacity 0.3s;
|
|
||||||
transition: -ms-transform 0.3s,
|
|
||||||
-webkit-transform 0.3s,
|
|
||||||
transform 0.3s,
|
|
||||||
opacity 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile .link-hotspot {
|
|
||||||
top: 19px; /* ( 70 - (16 + 2*8) ) / 2 */
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-touch .link-hotspot:hover .link-hotspot-tooltip {
|
|
||||||
opacity: 1;
|
|
||||||
-ms-transform: translateX(0);
|
|
||||||
-webkit-transform: translateX(0);
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Prevent tooltip from triggering */
|
|
||||||
.link-hotspot-tooltip {
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
.no-touch .link-hotspot:hover .link-hotspot-tooltip {
|
|
||||||
pointer-events: all;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Fallback mode without pointer-events (IE8-10) */
|
|
||||||
.tooltip-fallback .link-hotspot-tooltip {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.no-touch .tooltip-fallback .link-hotspot:hover .link-hotspot-tooltip {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Info hotspot */
|
|
||||||
|
|
||||||
.info-hotspot {
|
|
||||||
line-height: 1.2em;
|
|
||||||
opacity: 0.9;
|
|
||||||
-webkit-transition: opacity 0.2s 0.2s;
|
|
||||||
transition: opacity 0.2s 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.no-touch .info-hotspot:hover {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transition: opacity 0.2s;
|
|
||||||
transition: opacity 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot.visible {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-header {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
border-radius: 20px;
|
|
||||||
background-color: rgb(103,115,131);
|
|
||||||
cursor: pointer;
|
|
||||||
-webkit-transition: width 0.3s ease-in-out 0.5s,
|
|
||||||
border-radius 0.3s ease-in-out 0.5s;
|
|
||||||
transition: width 0.3s ease-in-out 0.5s,
|
|
||||||
border-radius 0.3s ease-in-out 0.5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile .info-hotspot .info-hotspot-header {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
border-radius: 25px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desktop.no-touch .info-hotspot .info-hotspot-header:hover {
|
|
||||||
width: 260px;
|
|
||||||
border-radius: 5px;
|
|
||||||
-webkit-transition: width 0.3s ease-in-out,
|
|
||||||
border-radius 0.3s ease-in-out;
|
|
||||||
transition: width 0.3s ease-in-out,
|
|
||||||
border-radius 0.3s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desktop .info-hotspot.visible .info-hotspot-header,
|
|
||||||
.desktop.no-touch .info-hotspot.visible .info-hotspot-header:hover {
|
|
||||||
width: 260px;
|
|
||||||
border-radius: 5px;
|
|
||||||
border-top-right-radius: 0;
|
|
||||||
border-bottom-right-radius: 0;
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
-webkit-transition: width 0.3s ease-in-out,
|
|
||||||
border-radius 0.3s ease-in-out;
|
|
||||||
transition: width 0.3s ease-in-out,
|
|
||||||
border-radius 0.3s ease-in-out;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-icon-wrapper {
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile .info-hotspot .info-hotspot-icon-wrapper {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-icon {
|
|
||||||
width: 90%;
|
|
||||||
height: 90%;
|
|
||||||
margin: 5%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-title-wrapper {
|
|
||||||
position: absolute;
|
|
||||||
left: 40px;
|
|
||||||
top: 0;
|
|
||||||
width: 0;
|
|
||||||
height: 40px;
|
|
||||||
padding: 0;
|
|
||||||
overflow: hidden;
|
|
||||||
-webkit-transition: width 0s 0.4s,
|
|
||||||
padding 0s 0.4s;
|
|
||||||
transition: width 0s 0.4s,
|
|
||||||
padding 0s 0.4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desktop .info-hotspot.visible .info-hotspot-title-wrapper,
|
|
||||||
.desktop.no-touch .info-hotspot .info-hotspot-header:hover .info-hotspot-title-wrapper {
|
|
||||||
width: 220px;
|
|
||||||
padding: 0 5px;
|
|
||||||
-webkit-transition: width 0s 0.4s,
|
|
||||||
padding 0s 0.4s;
|
|
||||||
transition: width 0s 0.4s,
|
|
||||||
padding 0s 0.4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-title-wrapper:before {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-title {
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
|
|
||||||
-moz-user-select: text;
|
|
||||||
-webkit-user-select: text;
|
|
||||||
-ms-user-select: text;
|
|
||||||
user-select: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-close-wrapper {
|
|
||||||
position: absolute;
|
|
||||||
left: 260px;
|
|
||||||
top: 0;
|
|
||||||
height: 40px;
|
|
||||||
width: 40px;
|
|
||||||
border-top-right-radius: 5px;
|
|
||||||
background-color: rgb(78,88,104);
|
|
||||||
visibility: hidden;
|
|
||||||
-ms-transform: perspective(200px) rotateY(90deg);
|
|
||||||
-webkit-transform: perspective(200px) rotateY(90deg);
|
|
||||||
transform: perspective(200px) rotateY(90deg);
|
|
||||||
-ms-transform-origin: 0 50% 0;
|
|
||||||
-webkit-transform-origin: 0 50% 0;
|
|
||||||
transform-origin: 0 50% 0;
|
|
||||||
-webkit-transition: -ms-transform 0.3s 0.3s,
|
|
||||||
-webkit-transform 0.3s 0.3s,
|
|
||||||
transform 0.3s 0.3s,
|
|
||||||
visibility 0s 0.6s;
|
|
||||||
transition: -ms-transform 0.3s 0.3s,
|
|
||||||
-webkit-transform 0.3s 0.3s,
|
|
||||||
transform 0.3s 0.3s,
|
|
||||||
visibility 0s 0.6s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desktop .info-hotspot.visible .info-hotspot-close-wrapper {
|
|
||||||
visibility: visible;
|
|
||||||
-ms-transform: perspective(200px) rotateY(0deg);
|
|
||||||
-webkit-transform: perspective(200px) rotateY(0deg);
|
|
||||||
transform: perspective(200px) rotateY(0deg);
|
|
||||||
-webkit-transition: -ms-transform 0.3s,
|
|
||||||
-webkit-transform 0.3s,
|
|
||||||
transform 0.3s,
|
|
||||||
visibility 0s 0s;
|
|
||||||
transition: -ms-transform 0.3s,
|
|
||||||
-webkit-transform 0.3s,
|
|
||||||
transform 0.3s,
|
|
||||||
visibility 0s 0s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-close-icon {
|
|
||||||
width: 70%;
|
|
||||||
height: 70%;
|
|
||||||
margin: 15%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot .info-hotspot-text {
|
|
||||||
position: absolute;
|
|
||||||
width: 300px;
|
|
||||||
height: auto;
|
|
||||||
max-height: 200px;
|
|
||||||
top: 40px;
|
|
||||||
left: 0;
|
|
||||||
padding: 10px;
|
|
||||||
background-color: rgb(58,68,84);
|
|
||||||
border-bottom-right-radius: 5px;
|
|
||||||
border-bottom-left-radius: 5px;
|
|
||||||
overflow-y: auto;
|
|
||||||
visibility: hidden;
|
|
||||||
/* rotate(90deg) causes transition flicker on Firefox 58 */
|
|
||||||
-ms-transform: perspective(200px) rotateX(-89.999deg);
|
|
||||||
-webkit-transform: perspective(200px) rotateX(-89.999deg);
|
|
||||||
transform: perspective(200px) rotateX(-89.999deg);
|
|
||||||
-ms-transform-origin: 50% 0 0;
|
|
||||||
-webkit-transform-origin: 50% 0 0;
|
|
||||||
transform-origin: 50% 0 0;
|
|
||||||
-webkit-transition: -ms-transform 0.3s,
|
|
||||||
-webkit-transform 0.3s,
|
|
||||||
transform 0.3s,
|
|
||||||
visibility 0s 0.3s;
|
|
||||||
transition: -ms-transform 0.3s,
|
|
||||||
-webkit-transform 0.3s,
|
|
||||||
transform 0.3s,
|
|
||||||
visibility 0s 0.3s;
|
|
||||||
|
|
||||||
-moz-user-select: text;
|
|
||||||
-webkit-user-select: text;
|
|
||||||
-ms-user-select: text;
|
|
||||||
user-select: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desktop .info-hotspot.visible .info-hotspot-text {
|
|
||||||
visibility: visible;
|
|
||||||
-ms-transform: perspective(200px) rotateX(0deg);
|
|
||||||
-webkit-transform: perspective(200px) rotateX(0deg);
|
|
||||||
transform: perspective(200px) rotateX(0deg);
|
|
||||||
-webkit-transition: -ms-transform 0.3s 0.3s,
|
|
||||||
-webkit-transform 0.3s 0.3s,
|
|
||||||
transform 0.3s 0.3s,
|
|
||||||
visibility 0s 0s;
|
|
||||||
transition: -ms-transform 0.3s 0.3s,
|
|
||||||
-webkit-transform 0.3s 0.3s,
|
|
||||||
transform 0.3s 0.3s,
|
|
||||||
visibility 0s 0s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Info hotspot modal */
|
|
||||||
|
|
||||||
.desktop .info-hotspot-modal {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal {
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
z-index: 11000 !important;
|
|
||||||
background-color: rgba(0,0,0,.5);
|
|
||||||
line-height: 1.2em;
|
|
||||||
opacity: 0;
|
|
||||||
visibility: hidden;
|
|
||||||
-webkit-transition: opacity 0.2s ease-in-out 0.5s,
|
|
||||||
visibility 0s 0.7s;
|
|
||||||
transition: opacity 0.2s ease-in-out 0.5s,
|
|
||||||
visibility 0s 0.7s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal.visible {
|
|
||||||
opacity: 1;
|
|
||||||
visibility: visible;
|
|
||||||
-webkit-transition: opacity 0.2s ease-in-out,
|
|
||||||
visibility 0s 0s;
|
|
||||||
transition: opacity 0.2s ease-in-out,
|
|
||||||
visibility 0s 0s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-header {
|
|
||||||
position: absolute;
|
|
||||||
top: 60px;
|
|
||||||
left: 10px;
|
|
||||||
right: 10px;
|
|
||||||
width: auto;
|
|
||||||
height: 50px;
|
|
||||||
background-color: rgb(103,115,131);
|
|
||||||
background-color: rgba(103,115,131,0.8);
|
|
||||||
opacity: 0;
|
|
||||||
-webkit-transition: opacity 0.3s ease-in-out 0.2s;
|
|
||||||
transition: opacity 0.3s ease-in-out 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal.visible .info-hotspot-header {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transition: opacity 0.3s ease-in-out 0.2s;
|
|
||||||
transition: opacity 0.3s ease-in-out 0.2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-icon-wrapper {
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-icon {
|
|
||||||
width: 90%;
|
|
||||||
height: 90%;
|
|
||||||
margin: 5%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-title-wrapper {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 50px;
|
|
||||||
right: 50px;
|
|
||||||
width: auto;
|
|
||||||
height: 50px;
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-title-wrapper:before {
|
|
||||||
content: '';
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-title {
|
|
||||||
display: inline-block;
|
|
||||||
vertical-align: middle;
|
|
||||||
|
|
||||||
-moz-user-select: text;
|
|
||||||
-webkit-user-select: text;
|
|
||||||
-ms-user-select: text;
|
|
||||||
user-select: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-close-wrapper {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
width: 50px;
|
|
||||||
height: 50px;
|
|
||||||
background-color: rgb(78,88,104);
|
|
||||||
background-color: rgba(78,88,104,0.8);
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-close-icon {
|
|
||||||
width: 70%;
|
|
||||||
height: 70%;
|
|
||||||
margin: 15%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal .info-hotspot-text {
|
|
||||||
position: absolute;
|
|
||||||
top: 110px;
|
|
||||||
bottom: 10px;
|
|
||||||
left: 10px;
|
|
||||||
right: 10px;
|
|
||||||
padding: 10px;
|
|
||||||
background-color: rgb(58,68,84);
|
|
||||||
background-color: rgba(58,68,84,0.8);
|
|
||||||
overflow-y: auto;
|
|
||||||
opacity: 0;
|
|
||||||
-webkit-transition: opacity 0.3s ease-in-out;
|
|
||||||
transition: opacity 0.3s ease-in-out;
|
|
||||||
|
|
||||||
-moz-user-select: text;
|
|
||||||
-webkit-user-select: text;
|
|
||||||
-ms-user-select: text;
|
|
||||||
user-select: text;
|
|
||||||
}
|
|
||||||
|
|
||||||
.info-hotspot-modal.visible .info-hotspot-text {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transition: opacity 0.3s ease-in-out 0.4s;
|
|
||||||
transition: opacity 0.3s ease-in-out 0.4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* View control buttons */
|
|
||||||
|
|
||||||
.viewControlButton {
|
|
||||||
display: none;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
left: 50%;
|
|
||||||
width: 40px;
|
|
||||||
height: 40px;
|
|
||||||
padding: 5px;
|
|
||||||
background-color: rgb(103,115,131);
|
|
||||||
background-color: rgba(103,115,131,0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
body.view-control-buttons .viewControlButton {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Hide controls when width is too small */
|
|
||||||
@media (max-width: 600px) {
|
|
||||||
body.view-control-buttons .viewControlButton {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.viewControlButton .icon {
|
|
||||||
position: absolute;
|
|
||||||
top: 5px;
|
|
||||||
right: 5px;
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Center is at margin-left: -20px */
|
|
||||||
.viewControlButton-1 {
|
|
||||||
margin-left: -145px;
|
|
||||||
}
|
|
||||||
.viewControlButton-2 {
|
|
||||||
margin-left: -95px;
|
|
||||||
}
|
|
||||||
.viewControlButton-3 {
|
|
||||||
margin-left: -45px;
|
|
||||||
}
|
|
||||||
.viewControlButton-4 {
|
|
||||||
margin-left: 5px;
|
|
||||||
}
|
|
||||||
.viewControlButton-5 {
|
|
||||||
margin-left: 55px;
|
|
||||||
}
|
|
||||||
.viewControlButton-6 {
|
|
||||||
margin-left: 105px;
|
|
||||||
}
|
|
Before Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 30 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 91 KiB |
Before Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 64 KiB |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 73 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 70 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 84 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 12 KiB |