xrforge-webxr/dist/xrforge.html

52 lines
2.6 MiB
HTML
Raw Normal View History

2025-10-22 17:10:42 +02:00
<!-- Saved from local source at 2025-10-22T15:01:16Z using monolith v2.10.1 -->
<!DOCTYPE html><html><head>
<style type="text/css">
body{
background: #555;
height: 100%;
margin: 0;
overflow: hidden;
padding: 0;
width: 100%;
}
img#btn_play:hover {
opacity: 1;
}
img#btn_play {
position: fixed;
top: 50%;
left: 50%;
width:30.000002%;
max-width:400px;
transform: translate(-50%,-50%);
cursor: pointer;
opacity: 0.6;
transition: 0.3s;
z-index: 999;
}
</style>
<script type="module" crossorigin="" src="data:text/javascript;;base64,dmFyIF9fZGVmUHJvcCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTsKdmFyIF9fZXhwb3J0ID0gKHRhcmdldCwgYWxsKSA9PiB7CiAgZm9yICh2YXIgbmFtZSBpbiBhbGwpCiAgICBfX2RlZlByb3AodGFyZ2V0LCBuYW1lLCB7CiAgICAgIGdldDogYWxsW25hbWVdLAogICAgICBlbnVtZXJhYmxlOiB0cnVlLAogICAgICBjb25maWd1cmFibGU6IHRydWUsCiAgICAgIHNldDogKG5ld1ZhbHVlKSA9PiBhbGxbbmFtZV0gPSAoKSA9PiBuZXdWYWx1ZQogICAgfSk7Cn07CnZhciBfX2VzbSA9IChmbiwgcmVzKSA9PiAoKSA9PiAoZm4gJiYgKHJlcyA9IGZuKGZuID0gMCkpLCByZXMpOwoKLy8gbm9kZV9tb2R1bGVzL3RocmVlL2J1aWxkL3RocmVlLmNvcmUuanMKY2xhc3MgRXZlbnREaXNwYXRjaGVyIHsKICBhZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7CiAgICBpZiAodGhpcy5fbGlzdGVuZXJzID09PSB1bmRlZmluZWQpCiAgICAgIHRoaXMuX2xpc3RlbmVycyA9IHt9OwogICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzOwogICAgaWYgKGxpc3RlbmVyc1t0eXBlXSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgIGxpc3RlbmVyc1t0eXBlXSA9IFtdOwogICAgfQogICAgaWYgKGxpc3RlbmVyc1t0eXBlXS5pbmRleE9mKGxpc3RlbmVyKSA9PT0gLTEpIHsKICAgICAgbGlzdGVuZXJzW3R5cGVdLnB1c2gobGlzdGVuZXIpOwogICAgfQogIH0KICBoYXNFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7CiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7CiAgICBpZiAobGlzdGVuZXJzID09PSB1bmRlZmluZWQpCiAgICAgIHJldHVybiBmYWxzZTsKICAgIHJldHVybiBsaXN0ZW5lcnNbdHlwZV0gIT09IHVuZGVmaW5lZCAmJiBsaXN0ZW5lcnNbdHlwZV0uaW5kZXhPZihsaXN0ZW5lcikgIT09IC0xOwogIH0KICByZW1vdmVFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKSB7CiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7CiAgICBpZiAobGlzdGVuZXJzID09PSB1bmRlZmluZWQpCiAgICAgIHJldHVybjsKICAgIGNvbnN0IGxpc3RlbmVyQXJyYXkgPSBsaXN0ZW5lcnNbdHlwZV07CiAgICBpZiAobGlzdGVuZXJBcnJheSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgIGNvbnN0IGluZGV4ID0gbGlzdGVuZXJBcnJheS5pbmRleE9mKGxpc3RlbmVyKTsKICAgICAgaWYgKGluZGV4ICE9PSAtMSkgewogICAgICAgIGxpc3RlbmVyQXJyYXkuc3BsaWNlKGluZGV4LCAxKTsKICAgICAgfQogICAgfQogIH0KICBkaXNwYXRjaEV2ZW50KGV2ZW50KSB7CiAgICBjb25zdCBsaXN0ZW5lcnMgPSB0aGlzLl9saXN0ZW5lcnM7CiAgICBpZiAobGlzdGVuZXJzID09PSB1bmRlZmluZWQpCiAgICAgIHJldHVybjsKICAgIGNvbnN0IGxpc3RlbmVyQXJyYXkgPSBsaXN0ZW5lcnNbZXZlbnQudHlwZV07CiAgICBpZiAobGlzdGVuZXJBcnJheSAhPT0gdW5kZWZpbmVkKSB7CiAgICAgIGV2ZW50LnRhcmdldCA9IHRoaXM7CiAgICAgIGNvbnN0IGFycmF5ID0gbGlzdGVuZXJBcnJheS5zbGljZSgwKTsKICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBhcnJheS5sZW5ndGg7aSA8IGw7IGkrKykgewogICAgICAgIGFycmF5W2ldLmNhbGwodGhpcywgZXZlbnQpOwogICAgICB9CiAgICAgIGV2ZW50LnRhcmdldCA9IG51bGw7CiAgICB9CiAgfQp9CmZ1bmN0aW9uIGdlbmVyYXRlVVVJRCgpIHsKICBjb25zdCBkMCA9IE1hdGgucmFuZG9tKCkgKiA0Mjk0OTY3Mjk1IHwgMDsKICBjb25zdCBkMSA9IE1hdGgucmFuZG9tKCkgKiA0Mjk0OTY3Mjk1IHwgMDsKICBjb25zdCBkMiA9IE1hdGgucmFuZG9tKCkgKiA0Mjk0OTY3Mjk1IHwgMDsKICBjb25zdCBkMyA9IE1hdGgucmFuZG9tKCkgKiA0Mjk0OTY3Mjk1IHwgMDsKICBjb25zdCB1dWlkID0gX2x1dFtkMCAmIDI1NV0gKyBfbHV0W2QwID4+IDggJiAyNTVdICsgX2x1dFtkMCA+PiAxNiAmIDI1NV0gKyBfbHV0W2QwID4+IDI0ICYgMjU1XSArICItIiArIF9sdXRbZDEgJiAyNTVdICsgX2x1dFtkMSA+PiA4ICYgMjU1XSArICItIiArIF9sdXRbZDEgPj4gMTYgJiAxNSB8IDY0XSArIF9sdXRbZDEgPj4gMjQgJiAyNTVdICsgIi0iICsgX2x1dFtkMiAmIDYzIHwgMTI4XSArIF9sdXRbZDIgPj4gOCAmIDI1NV0gKyAiLSIgKyBfbHV0W2QyID4+IDE2ICYgMjU1XSArIF9sdXRbZDIgPj4gMjQgJiAyNTVdICsgX2x1dFtkMyAmIDI1NV0gKyBfbHV0W2QzID4+IDggJiAyNTVdICsgX2x1dFtkMyA+PiAxNiAmIDI1NV0gKyBfbHV0W2QzID4+IDI0ICYgMjU1XTsKICByZXR1cm4gdXVpZC50b0xvd2VyQ2FzZSgpOwp9CmZ1bmN0aW9uIGNsYW1wKHZhbHVlLCBtaW4sIG1heCkgewogIHJldHVybiBNYXRoLm1heChtaW4sIE1hdGgubWluKG1heCwgdmFsdWUpKTsKfQpmdW5jdGlvbiBldWNsaWRlYW5Nb2R1bG8obiwgbSkgewogIHJldHVybiAobiAlIG0gKyBtKSAlIG07Cn0KZnVuY3Rpb24gbWFwTGluZWFyKHgsIGExLCBhMiwgYjEsIGIyKSB7CiAgcmV0dXJuIGIxICsgKHggLSBhMSkgKiAoYjIgLSBiMSkgLyAoYTIgLSBhMSk7Cn0KZnVuY3Rpb24gaW52ZXJzZUxlcnAoeCwgeSwgdmFsdWUpIHsKICBpZiAoeCAhPT0geSkgewogICAgcmV0dXJuICh2YWx1ZSAtIHgpIC8gKHkgLSB4KTsKICB9IGVsc2UgewogICAgcmV0dXJuIDA7CiAgfQp9CmZ1bmN0aW9uIGxlcnAoeCwgeSwgdCkgewogIHJldHVybiAoMSAtIHQpICogeCArIHQgKiB5Owp9CmZ1bmN0aW9uIGRhbXAoeCwgeSwgbGFtYmRhLCBkdCkgewogIHJldHVybiBsZXJwKHgsIHksIDEgLSBNYXRoLmV4cCgtbGFtYmRhICogZHQpKTsKfQpmdW5jdGlvbiBwaW5ncG9uZyh4LCBsZW5ndGggPSAxKSB7CiAgcmV0dXJuIGxlbmd0aCAtIE1hdGguYWJzKGV1Y2xpZGVhbk1vZHVsbyh4LCBsZW5ndGggKiAyKSAtIGxlbmd0aCk7Cn0KZnVuY3Rpb24gc21vb3Roc3RlcCh4LCBtaW4sIG1heCkgewogIGlmICh4IDw9IG1pbikKICAgIHJldHVybiAwOwogIGlmICh4ID49IG1heCkKICAgIHJldHVybiAxOwogIHggPSAoeCAtIG1pbikgLyA
<body>
<img id="btn_play" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTguNzUyIDU4Ljc1MiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTguNzUyIDU4Ljc1MjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggc3Ryb2tlPSIjQ0NDIiBzdHJva2Utb3BhY2l0eT0iMC41IiBmaWxsPSJ3aGl0ZSIgZD0iTTUyLjUyNCwyMy45MjVMMTIuNTA3LDAuODI0Yy0xLjkwNy0xLjEtNC4zNzYtMS4wOTctNi4yNzYsMEM0LjI5MywxLjk0LDMuMDg4LDQuMDI1LDMuMDg4LDYuMjY0djQ2LjIwNQ0KCQljMCwyLjI0LDEuMjA0LDQuMzI1LDMuMTMxLDUuNDM1YzAuOTUzLDAuNTU1LDIuMDQyLDAuODQ4LDMuMTQ5LDAuODQ4YzEuMTA0LDAsMi4xOTItMC4yOTIsMy4xNDEtMC44NDNsNDAuMDE3LTIzLjEwMw0KCQljMS45MzYtMS4xMTksMy4xMzgtMy4yMDMsMy4xMzgtNS40MzlDNTUuNjYzLDI3LjEzNCw1NC40NjIsMjUuMDUsNTIuNTI0LDIzLjkyNXogTTQ5LjUyNCwyOS42MTJMOS41MDQsNTIuNzE2DQoJCWMtMC4wODIsMC4wNDctMC4xOCwwLjA1Mi0wLjI3OS0wLjAwNWMtMC4wODQtMC4wNDktMC4xMzctMC4xNDItMC4xMzctMC4yNDJWNi4yNjNjMC0wLjEsMC4wNTItMC4xOTIsMC4xNC0wLjI0Mw0KCQljMC4wNDItMC4wMjUsMC4wOS0wLjAzOCwwLjEzOS0wLjAzOGMwLjA1MSwwLDAuMDk5LDAuMDEzLDAuMTQyLDAuMDM4bDQwLjAxLDIzLjA5OGMwLjA4OSwwLjA1MiwwLjE0NSwwLjE0NywwLjE0NSwwLjI0OQ0KCQlDNDkuNjYzLDI5LjQ3LDQ5LjYxMSwyOS41NjEsNDkuNTI0LDI5LjYxMnoiLz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjwvc3ZnPg0K">
<a-scene>
<a-entity id="scene" animation-mixer_disabled="" gltf-model=""></a-entity>
<a-entity id="player" movement-controls="" touch-controls="axis:y" wasd-controls="fly:true" look-controls="magicWindowTrackingEnabled:true">
<a-entity camera="fov:90" position="0 1.6 0" id="camera"></a-entity>
<a-entity id="left-hand" hand-tracking-grab-controls="hand:left;modelColor:#cccccc" raycaster="objects:.ray" blink-controls="cameraRig:#player; teleportOrigin: #camera; collisionEntities: .floor"></a-entity>
<a-entity id="right-hand" hand-tracking-grab-controls="hand:right;modelColor:#cccccc" laser-controls="hand: right" raycaster="objects:.ray" blink-controls="cameraRig:#player; teleportOrigin: #camera; collisionEntities: .floor"></a-entity>
</a-entity>
</a-scene>
</body></html>