From 532c090dfa1d78553ecbe7a2cedadc53073afd6e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 18 Mar 2022 03:34:52 +0000 Subject: [PATCH] deploy: 14348ae5c489bbc396a6badf00425af918fb76a4 --- 404.html | 4 ++-- assets/js/{2a2a0c40.705fa002.js => 2a2a0c40.08ab495b.js} | 2 +- .../{runtime~main.a53db0f5.js => runtime~main.271d7853.js} | 2 +- docs/getting-started/install.html | 6 +++--- docs/getting-started/overview.html | 4 ++-- docs/getting-started/run.html | 4 ++-- docs/getting-started/tech-overview.html | 4 ++-- docs/stardust-protocol/client/initial-connection.html | 4 ++-- docs/stardust-protocol/protocol.html | 4 ++-- docs/stardust-protocol/server/objects/drawable.html | 4 ++-- docs/stardust-protocol/server/objects/field.html | 4 ++-- docs/stardust-protocol/server/objects/hmd.html | 4 ++-- docs/stardust-protocol/server/objects/input.html | 4 ++-- docs/stardust-protocol/server/objects/root.html | 4 ++-- docs/stardust-protocol/server/objects/spatial.html | 4 ++-- docs/stardust-protocol/server/types/Model.html | 4 ++-- docs/stardust-protocol/server/types/Node.html | 4 ++-- docs/stardust-protocol/server/types/Spatial.html | 4 ++-- docs/stardust-protocol/server/types/Zone.html | 4 ++-- docs/stardust-protocol/server/types/field/BoxField.html | 4 ++-- .../stardust-protocol/server/types/field/CylinderField.html | 4 ++-- docs/stardust-protocol/server/types/field/Field.html | 4 ++-- docs/stardust-protocol/server/types/field/SphereField.html | 4 ++-- docs/stardust-protocol/server/types/input/InputHandler.html | 4 ++-- docs/stardust-protocol/server/types/input/InputMethod.html | 4 ++-- .../server/types/input/inputtypes/HandInput.html | 4 ++-- .../server/types/input/inputtypes/PointerInput.html | 4 ++-- index.html | 4 ++-- roadmap.html | 4 ++-- 29 files changed, 57 insertions(+), 57 deletions(-) rename assets/js/{2a2a0c40.705fa002.js => 2a2a0c40.08ab495b.js} (75%) rename assets/js/{runtime~main.a53db0f5.js => runtime~main.271d7853.js} (98%) diff --git a/404.html b/404.html index c771affe..e593d415 100644 --- a/404.html +++ b/404.html @@ -5,13 +5,13 @@ Page Not Found | Stardust XR - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- + \ No newline at end of file diff --git a/assets/js/2a2a0c40.705fa002.js b/assets/js/2a2a0c40.08ab495b.js similarity index 75% rename from assets/js/2a2a0c40.705fa002.js rename to assets/js/2a2a0c40.08ab495b.js index 9846272f..2b99ccd1 100644 --- a/assets/js/2a2a0c40.705fa002.js +++ b/assets/js/2a2a0c40.08ab495b.js @@ -1 +1 @@ -"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[697],{3905:function(e,t,n){n.d(t,{Zo:function(){return o},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),u=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},o=function(e){var t=u(e.components);return r.createElement(d.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,d=e.parentName,o=s(e,["components","mdxType","originalType","parentName"]),p=u(n),m=a,k=p["".concat(d,".").concat(m)]||p[m]||c[m]||i;return n?r.createElement(k,l(l({ref:t},o),{},{components:n})):r.createElement(k,l({ref:t},o))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=p;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s.mdxType="string"==typeof e?e:a,l[1]=s;for(var u=2;u= 0.55.0"),(0,i.kt)("li",{parentName:"ol"},"Ninja (tested on 1.10.2)")),(0,i.kt)("h3",{id:"build-dependencies"},"Build dependencies"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Flatbuffers >= 1.12.0")),(0,i.kt)("h3",{id:"download"},"Download"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/StardustXR/libstardustxr.git\ncd libstardustxr\n")),(0,i.kt)("h3",{id:"build"},"Build"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"meson build --prefix=/usr\ncd build\nninja\n")),(0,i.kt)("h3",{id:"install"},"Install"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"ninja install\n")),(0,i.kt)("h2",{id:"stardust-xr-reference-server"},(0,i.kt)("a",{parentName:"h2",href:"https://github.com/StardustXR/stardust-xr"},"stardust-xr")," (reference server)"),(0,i.kt)("h3",{id:"packages-1"},"Packages"),(0,i.kt)("p",null,"AUR: ",(0,i.kt)("inlineCode",{parentName:"p"},"stardust-xr-git")),(0,i.kt)("h3",{id:"build-system-1"},"Build system"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Meson >= 0.55.0"),(0,i.kt)("li",{parentName:"ol"},"Ninja (tested on 1.10.2)"),(0,i.kt)("li",{parentName:"ol"},"CMake (tested on 3.21.1)")),(0,i.kt)("h3",{id:"build-dependencies-1"},"Build dependencies"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"#libstardustxr-server-client-and-fusion"},"libstardustxr")),(0,i.kt)("li",{parentName:"ol"},"Flatbuffers >= 1.12.0"),(0,i.kt)("li",{parentName:"ol"},"EGL+GLES 3.2"),(0,i.kt)("li",{parentName:"ol"},"GLX+Xlib"),(0,i.kt)("li",{parentName:"ol"},"fontconfig"),(0,i.kt)("li",{parentName:"ol"},"dlopen"),(0,i.kt)("li",{parentName:"ol"},"libseat (such as ",(0,i.kt)("a",{parentName:"li",href:"https://sr.ht/~kennylevinsen/seatd/"},"seatd"),")"),(0,i.kt)("li",{parentName:"ol"},"wayland"),(0,i.kt)("li",{parentName:"ol"},"xwayland"),(0,i.kt)("li",{parentName:"ol"},"OpenXR Loader (required even if run in flatscreen mode, generally just named ",(0,i.kt)("inlineCode",{parentName:"li"},"openxr"),")")),(0,i.kt)("h3",{id:"download-1"},"Download"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/StardustXR/stardust-xr.git\ncd stardust-xr\n")),(0,i.kt)("h3",{id:"build-1"},"Build"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"meson build --prefix=/usr\ncd build\nninja\n")),(0,i.kt)("h3",{id:"install-1"},"Install"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"meson install --skip-subprojects\n")),(0,i.kt)("h2",{id:"stardust-client-tests"},(0,i.kt)("a",{parentName:"h2",href:"https://github.com/StardustXR/stardust-client-tests"},"Stardust Client Tests")),(0,i.kt)("h3",{id:"build-system-2"},"Build system"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Meson >= 0.55.0"),(0,i.kt)("li",{parentName:"ol"},"Ninja (tested on 1.10.2)")),(0,i.kt)("h3",{id:"build-dependencies-2"},"Build dependencies"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"#libstardustxr-server-client-and-fusion"},"libstardustxr")),(0,i.kt)("li",{parentName:"ol"},"Flatbuffers >= 1.12.0"),(0,i.kt)("li",{parentName:"ol"},"sdbus-cpp")),(0,i.kt)("h3",{id:"download-2"},"Download"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/StardustXR/stardust-client-tests.git\ncd stardust-xr\n")),(0,i.kt)("h3",{id:"build-2"},"Build"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"meson build --prefix=/usr\ncd build\nninja\n")))}p.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkstardust_website=self.webpackChunkstardust_website||[]).push([[697],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),o=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=o(e.components);return r.createElement(d.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,d=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),p=o(n),m=a,k=p["".concat(d,".").concat(m)]||p[m]||c[m]||i;return n?r.createElement(k,l(l({ref:t},u),{},{components:n})):r.createElement(k,l({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=p;var s={};for(var d in t)hasOwnProperty.call(t,d)&&(s[d]=t[d]);s.originalType=e,s.mdxType="string"==typeof e?e:a,l[1]=s;for(var o=2;o= 0.55.0"),(0,i.kt)("li",{parentName:"ol"},"Ninja (tested on 1.10.2)")),(0,i.kt)("h3",{id:"build-dependencies"},"Build dependencies"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Flatbuffers >= 1.12.0")),(0,i.kt)("h3",{id:"download"},"Download"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/StardustXR/libstardustxr.git\ncd libstardustxr\n")),(0,i.kt)("h3",{id:"build"},"Build"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"meson build --prefix=/usr\ncd build\nninja\n")),(0,i.kt)("h3",{id:"install"},"Install"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"ninja install\n")),(0,i.kt)("h2",{id:"stardust-xr-reference-server"},(0,i.kt)("a",{parentName:"h2",href:"https://github.com/StardustXR/stardust-xr"},"stardust-xr")," (reference server)"),(0,i.kt)("h3",{id:"packages-1"},"Packages"),(0,i.kt)("p",null,"AUR: ",(0,i.kt)("inlineCode",{parentName:"p"},"stardust-xr-git")),(0,i.kt)("h3",{id:"build-system-1"},"Build system"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Meson >= 0.55.0"),(0,i.kt)("li",{parentName:"ol"},"Ninja (tested on 1.10.2)"),(0,i.kt)("li",{parentName:"ol"},"CMake (tested on 3.21.1)")),(0,i.kt)("h3",{id:"build-dependencies-1"},"Build dependencies"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"#libstardustxr-server-client-and-fusion"},"libstardustxr")),(0,i.kt)("li",{parentName:"ol"},"Flatbuffers >= 1.12.0"),(0,i.kt)("li",{parentName:"ol"},"EGL+GLES 3.2"),(0,i.kt)("li",{parentName:"ol"},"GLX+Xlib"),(0,i.kt)("li",{parentName:"ol"},"fontconfig"),(0,i.kt)("li",{parentName:"ol"},"dlopen"),(0,i.kt)("li",{parentName:"ol"},"libseat (such as ",(0,i.kt)("a",{parentName:"li",href:"https://sr.ht/~kennylevinsen/seatd/"},"seatd"),")"),(0,i.kt)("li",{parentName:"ol"},"wayland"),(0,i.kt)("li",{parentName:"ol"},"xwayland"),(0,i.kt)("li",{parentName:"ol"},"OpenXR Loader (required even if run in flatscreen mode, generally just named ",(0,i.kt)("inlineCode",{parentName:"li"},"openxr"),")"),(0,i.kt)("li",{parentName:"ol"},"libxkbcommon-x11")),(0,i.kt)("h3",{id:"download-1"},"Download"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/StardustXR/stardust-xr.git\ncd stardust-xr\n")),(0,i.kt)("h3",{id:"build-1"},"Build"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"meson build --prefix=/usr\ncd build\nninja\n")),(0,i.kt)("h3",{id:"install-1"},"Install"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"meson install --skip-subprojects\n")),(0,i.kt)("h2",{id:"stardust-client-tests"},(0,i.kt)("a",{parentName:"h2",href:"https://github.com/StardustXR/stardust-client-tests"},"Stardust Client Tests")),(0,i.kt)("h3",{id:"build-system-2"},"Build system"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"Meson >= 0.55.0"),(0,i.kt)("li",{parentName:"ol"},"Ninja (tested on 1.10.2)")),(0,i.kt)("h3",{id:"build-dependencies-2"},"Build dependencies"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},(0,i.kt)("a",{parentName:"li",href:"#libstardustxr-server-client-and-fusion"},"libstardustxr")),(0,i.kt)("li",{parentName:"ol"},"Flatbuffers >= 1.12.0"),(0,i.kt)("li",{parentName:"ol"},"sdbus-cpp")),(0,i.kt)("h3",{id:"download-2"},"Download"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"git clone https://github.com/StardustXR/stardust-client-tests.git\ncd stardust-client-tests\n")),(0,i.kt)("h3",{id:"build-2"},"Build"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"meson build --prefix=/usr\ncd build\nninja\n")))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.a53db0f5.js b/assets/js/runtime~main.271d7853.js similarity index 98% rename from assets/js/runtime~main.a53db0f5.js rename to assets/js/runtime~main.271d7853.js index 9d6683d4..4674858f 100644 --- a/assets/js/runtime~main.a53db0f5.js +++ b/assets/js/runtime~main.271d7853.js @@ -1 +1 @@ -!function(){"use strict";var e,t,n,r,f,c={},o={};function a(e){var t=o[e];if(void 0!==t)return t.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return c[e].call(n.exports,n,n.exports,a),n.loaded=!0,n.exports}a.m=c,a.c=o,e=[],a.O=function(t,n,r,f){if(!n){var c=1/0;for(d=0;d=f)&&Object.keys(a.O).every((function(e){return a.O[e](n[u])}))?n.splice(u--,1):(o=!1,f0&&e[d-1][2]>f;d--)e[d]=e[d-1];e[d]=[n,r,f]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},a.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);a.r(f);var c={};t=t||[null,n({}),n([]),n(n)];for(var o=2&r&&e;"object"==typeof o&&!~t.indexOf(o);o=n(o))Object.getOwnPropertyNames(o).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},a.d(f,c),f},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,n){return a.f[n](e,t),t}),[]))},a.u=function(e){return"assets/js/"+({16:"1fbe18c3",53:"935f2afb",74:"86790a84",85:"1f391b9e",121:"4cc9031b",172:"b168e304",195:"c4f5d8e4",272:"3e4d3f97",300:"b4e94af8",347:"1134c138",351:"1dea05a0",487:"c9dc9d85",500:"614808c6",505:"06e9be3f",514:"1be78505",523:"c5e91741",587:"42ef8d41",659:"255c4b9f",672:"5f7b5dec",697:"2a2a0c40",745:"89771a17",770:"493a26d0",824:"5ec39a2d",835:"7a96ca3d",855:"40d7c56e",881:"1dc27c04",888:"e6f3b050",918:"17896441",925:"57a1f8cb",993:"2bb13bfd"}[e]||e)+"."+{16:"c0afc8f5",53:"996a9189",74:"27827b1b",85:"85330a5e",121:"cde21c99",172:"f4d311e6",195:"99b18aa9",272:"87d97366",300:"85bac715",347:"b24a43a6",351:"48ca9ef3",486:"1df42a3c",487:"3cbbf9a4",500:"16aa567b",505:"afd6d852",514:"5c39bbd5",523:"8d573ece",587:"ac5da543",608:"7cf15b72",615:"2b77bb13",659:"72808abf",668:"82ad256c",672:"a8b3bef4",697:"705fa002",745:"266683b0",770:"6a5da26e",824:"2c548504",835:"1f678458",849:"fcdae9c0",855:"05ef8968",881:"9be7f57a",888:"529ea470",918:"14c4c675",925:"ac2c0218",993:"2fa1605f"}[e]+".js"},a.miniCssF=function(e){return"assets/css/styles.49daaa62.css"},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},f="stardust-website:",a.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var o,u;if(void 0!==n)for(var i=document.getElementsByTagName("script"),d=0;d=f)&&Object.keys(a.O).every((function(e){return a.O[e](n[u])}))?n.splice(u--,1):(o=!1,f0&&e[d-1][2]>f;d--)e[d]=e[d-1];e[d]=[n,r,f]},a.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return a.d(t,{a:t}),t},n=Object.getPrototypeOf?function(e){return Object.getPrototypeOf(e)}:function(e){return e.__proto__},a.t=function(e,r){if(1&r&&(e=this(e)),8&r)return e;if("object"==typeof e&&e){if(4&r&&e.__esModule)return e;if(16&r&&"function"==typeof e.then)return e}var f=Object.create(null);a.r(f);var c={};t=t||[null,n({}),n([]),n(n)];for(var o=2&r&&e;"object"==typeof o&&!~t.indexOf(o);o=n(o))Object.getOwnPropertyNames(o).forEach((function(t){c[t]=function(){return e[t]}}));return c.default=function(){return e},a.d(f,c),f},a.d=function(e,t){for(var n in t)a.o(t,n)&&!a.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},a.f={},a.e=function(e){return Promise.all(Object.keys(a.f).reduce((function(t,n){return a.f[n](e,t),t}),[]))},a.u=function(e){return"assets/js/"+({16:"1fbe18c3",53:"935f2afb",74:"86790a84",85:"1f391b9e",121:"4cc9031b",172:"b168e304",195:"c4f5d8e4",272:"3e4d3f97",300:"b4e94af8",347:"1134c138",351:"1dea05a0",487:"c9dc9d85",500:"614808c6",505:"06e9be3f",514:"1be78505",523:"c5e91741",587:"42ef8d41",659:"255c4b9f",672:"5f7b5dec",697:"2a2a0c40",745:"89771a17",770:"493a26d0",824:"5ec39a2d",835:"7a96ca3d",855:"40d7c56e",881:"1dc27c04",888:"e6f3b050",918:"17896441",925:"57a1f8cb",993:"2bb13bfd"}[e]||e)+"."+{16:"c0afc8f5",53:"996a9189",74:"27827b1b",85:"85330a5e",121:"cde21c99",172:"f4d311e6",195:"99b18aa9",272:"87d97366",300:"85bac715",347:"b24a43a6",351:"48ca9ef3",486:"1df42a3c",487:"3cbbf9a4",500:"16aa567b",505:"afd6d852",514:"5c39bbd5",523:"8d573ece",587:"ac5da543",608:"7cf15b72",615:"2b77bb13",659:"72808abf",668:"82ad256c",672:"a8b3bef4",697:"08ab495b",745:"266683b0",770:"6a5da26e",824:"2c548504",835:"1f678458",849:"fcdae9c0",855:"05ef8968",881:"9be7f57a",888:"529ea470",918:"14c4c675",925:"ac2c0218",993:"2fa1605f"}[e]+".js"},a.miniCssF=function(e){return"assets/css/styles.49daaa62.css"},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r={},f="stardust-website:",a.l=function(e,t,n,c){if(r[e])r[e].push(t);else{var o,u;if(void 0!==n)for(var i=document.getElementsByTagName("script"),d=0;d Installation | Stardust XR - +
-

Installation

As Stardust is a display server, it is split into multiple parts. Make sure to install the parts in order to avoid issues, and don't be afraid to ask questions in the Matrix or Discord servers!

  1. libstardustxr client/server
  2. libstardustxr-fusion
  3. stardust-xr
  4. Other clients (such as the tests)

libstardustxr (server, client, and fusion)#

Packages#

AUR: libstardustxr-git and libstardustxr-fusion-git

Build system#

  1. Meson >= 0.55.0
  2. Ninja (tested on 1.10.2)

Build dependencies#

  1. Flatbuffers >= 1.12.0

Download#

git clone https://github.com/StardustXR/libstardustxr.gitcd libstardustxr

Build#

meson build --prefix=/usrcd buildninja

Install#

ninja install

stardust-xr (reference server)#

Packages#

AUR: stardust-xr-git

Build system#

  1. Meson >= 0.55.0
  2. Ninja (tested on 1.10.2)
  3. CMake (tested on 3.21.1)

Build dependencies#

  1. libstardustxr
  2. Flatbuffers >= 1.12.0
  3. EGL+GLES 3.2
  4. GLX+Xlib
  5. fontconfig
  6. dlopen
  7. libseat (such as seatd)
  8. wayland
  9. xwayland
  10. OpenXR Loader (required even if run in flatscreen mode, generally just named openxr)

Download#

git clone https://github.com/StardustXR/stardust-xr.gitcd stardust-xr

Build#

meson build --prefix=/usrcd buildninja

Install#

meson install --skip-subprojects

Stardust Client Tests#

Build system#

  1. Meson >= 0.55.0
  2. Ninja (tested on 1.10.2)

Build dependencies#

  1. libstardustxr
  2. Flatbuffers >= 1.12.0
  3. sdbus-cpp

Download#

git clone https://github.com/StardustXR/stardust-client-tests.gitcd stardust-xr

Build#

meson build --prefix=/usrcd buildninja
- +

Installation

As Stardust is a display server, it is split into multiple parts. Make sure to install the parts in order to avoid issues, and don't be afraid to ask questions in the Matrix or Discord servers!

  1. libstardustxr client/server
  2. libstardustxr-fusion
  3. stardust-xr
  4. Other clients (such as the tests)

libstardustxr (server, client, and fusion)#

Packages#

AUR: libstardustxr-git and libstardustxr-fusion-git

Build system#

  1. Meson >= 0.55.0
  2. Ninja (tested on 1.10.2)

Build dependencies#

  1. Flatbuffers >= 1.12.0

Download#

git clone https://github.com/StardustXR/libstardustxr.gitcd libstardustxr

Build#

meson build --prefix=/usrcd buildninja

Install#

ninja install

stardust-xr (reference server)#

Packages#

AUR: stardust-xr-git

Build system#

  1. Meson >= 0.55.0
  2. Ninja (tested on 1.10.2)
  3. CMake (tested on 3.21.1)

Build dependencies#

  1. libstardustxr
  2. Flatbuffers >= 1.12.0
  3. EGL+GLES 3.2
  4. GLX+Xlib
  5. fontconfig
  6. dlopen
  7. libseat (such as seatd)
  8. wayland
  9. xwayland
  10. OpenXR Loader (required even if run in flatscreen mode, generally just named openxr)
  11. libxkbcommon-x11

Download#

git clone https://github.com/StardustXR/stardust-xr.gitcd stardust-xr

Build#

meson build --prefix=/usrcd buildninja

Install#

meson install --skip-subprojects

Stardust Client Tests#

Build system#

  1. Meson >= 0.55.0
  2. Ninja (tested on 1.10.2)

Build dependencies#

  1. libstardustxr
  2. Flatbuffers >= 1.12.0
  3. sdbus-cpp

Download#

git clone https://github.com/StardustXR/stardust-client-tests.gitcd stardust-client-tests

Build#

meson build --prefix=/usrcd buildninja
+ \ No newline at end of file diff --git a/docs/getting-started/overview.html b/docs/getting-started/overview.html index 0da11a0a..d3a0d6b9 100644 --- a/docs/getting-started/overview.html +++ b/docs/getting-started/overview.html @@ -5,13 +5,13 @@ Overview | Stardust XR - +

Overview

Description#

Stardust XR (informally known as Stardust) is an XR display server for Linux-based distros. Unlike display servers of the past that were run on bounded 2D screens, Stardust has to break convention in order to account for unbounded 3D space in any potential virtual or real environment.

Unlike many display servers, Stardust is not trying to reinvent how applications interface with the system. Stardust uses Wayland and will use OpenXR for 2D/XR app integration. Stardust however has a special protocol for creation of virtual objects such as 3D UIs around 2D apps (called Panel Shells) and handling of data as objects (called Items, can represent files or Wayland surfaces or such). Stardust is not a collaborative 3D space, instead focusing on your own personal device and interactions with it.

Put simply, Stardust is a system UI framework where multiple different clients (programs that connect to Stardust directly) can create objects for the user to interact with their apps and device. The user can choose to use the objects that work best for their current scenario, and default setups can easily be created so users start out with all the essentials.

- + \ No newline at end of file diff --git a/docs/getting-started/run.html b/docs/getting-started/run.html index 3c8d188e..428982c7 100644 --- a/docs/getting-started/run.html +++ b/docs/getting-started/run.html @@ -5,7 +5,7 @@ Use | Stardust XR - + @@ -15,7 +15,7 @@ A black void representing Stardust in XR mode with a hand skeleton in the middle

Flatscreen mode when ~/.config/stardust/skytex.hdr is Zhengyang Gate: A pitch black window representing Stardust in flatscreen mode

Help screen#

Stardust XRUsage: stardustxr [OPTIONS]
 Options:  -h,--help                   Print this help message and exit  -F,--flatscreen             Run Stardust in flatscreen mode  --field-debug               Draw translucent meshes around fields
- + \ No newline at end of file diff --git a/docs/getting-started/tech-overview.html b/docs/getting-started/tech-overview.html index 3b1c46bb..852c57a2 100644 --- a/docs/getting-started/tech-overview.html +++ b/docs/getting-started/tech-overview.html @@ -5,13 +5,13 @@ Technical Overview | Stardust XR - +

Technical Overview

Server#

The server is what renders all the meshes of each client, takes in input from input methods, and spits out input to input handlers according to the SUIS (Spatial Universal Interaction System). As well, the server is going to be part Wayland compositor and OpenXR runtime so all 2D and XR applications can be used together at once (if the hardware allows). It is the glue of Stardust, allowing any number of clients and apps to work in harmony while allowing the user full control in an intuitive way.

As new technologies come out, keeping the same server and trying to progressively upgrade it may lead to bloat and issues, so the protocol is designed to make creating new servers possible without too much hassle. Old interfaces can be deprecated without breaking the overall system, and new interfaces can be added if needed due to the object-oriented design. The design is highly inspired by game engines, however the reference server is made in StereoKit due to it being more optimal.

Reference Server#

Stardust has a reference server, but unlike other display servers this reference server is just as functional as any other Stardust server would be, because all the functionality is implemented in the clients. The server is just the glue.

The reference server uses StereoKit as its backend for many reasons:

  • Much more lightweight than any other framework/other engine
    • It was originally designed to run AR apps on HoloLens, and now it works on Quest
    • It's able to render thousands of objects on a HoloLens without breaking a sweat
  • Does not include unnecessary features that slow down performance
    • Physics and UI are not needed for Stardust, but those do not actively run and can always have an option to not be compiled at all.
  • Uses C-style C++ meaning not bytecode or interpreted (however has a C# API that is not used by Stardust)
  • Uses immediate mode rendering meaning the logic is many times easier to implement
  • Exposes its rendering insides whenever needed
    • Very needed for Wayland when it needs to display EGL Wayland surface textures on meshes
    • Overriding the depthbuffer per-pixel in fragment shader is useful for XR depth compositing
  • Is constantly getting new updates faster than most engines
    • World semantics for OpenXR was implemented ~1 week after the official OpenXR extension release
  • Is optimized to load resources JIT
    • Many game engines are best at caching their assets, but this is not practical in a display server
  • Uses OpenXR as its backend out of the box

IPC#

The Stardust XR IPC uses Unix domain sockets for communication.

Protocol#

The Stardust XR protocol is object-oriented, depending on a scenegraph on the server end and scenegraph or functionally equivalent structure on the client end. This allows easier implementation of the protocol while still remaining fast and reliable.

Clients#

The clients tell the server what models to draw, where they would like to accept input in, etc. Stardust clients are much more suited to widgets or user interfaces to 2D/XR apps. However, if a more fully featured application works better in Stardust it can do that too.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/client/initial-connection.html b/docs/stardust-protocol/client/initial-connection.html index 1f2d8383..28987a9f 100644 --- a/docs/stardust-protocol/client/initial-connection.html +++ b/docs/stardust-protocol/client/initial-connection.html @@ -5,13 +5,13 @@ Initial Client Connection | Stardust XR - + - + \ No newline at end of file diff --git a/docs/stardust-protocol/protocol.html b/docs/stardust-protocol/protocol.html index 7b5e053d..1410d3c6 100644 --- a/docs/stardust-protocol/protocol.html +++ b/docs/stardust-protocol/protocol.html @@ -5,7 +5,7 @@ Protocol | Stardust XR - + @@ -13,7 +13,7 @@

Protocol

Data#

Every message uses flatbuffers and flexbuffers to add variant data such as method arguments and return values. The Stardust XR Message schema is:

namespace StardustXR;
 table Message {    type: ubyte;    id: uint;    object: string;    method: string;    error: string;    data:[ubyte] (flexbuffer);}
 root_type Message;

Message Types#

All fields not accounted for are assumed to be not included or 0 or ""

Error#

Field NameValue
type0
id0 or ID of method call
objectPath to the object the error comes from
methodWhat method caused the error (if applicable, otherwise this is an empty string)
errorString containing the error message itself
dataEmpty vector

Signal#

Signals are method calls that do not expect a response of any kind.

Field NameValue
type1
objectPath to object to send signal to
methodName of the method to execute
dataFlexbuffer containing arguments to pass to remote method

Method Call#

Method calls allow for remote procedure calling.

Field NameValue
type2
idDynamically generated ID to identify method return for this method
objectPath to object to execute method on
methodName of the method to execute
dataFlexbuffer containing arguments to pass to remote method

Method Return#

Message to pass the return value back to the program.

Field NameValue
type3
idThe same as the message call's ID
dataFlexbuffer containing return value

Data Types#

Stardust does not support the Map or FixedTypedVector flexbuffers datatypes.

Color#

A Vector of 4 float is treated as a Color in the form RGBA.

Vector2#

A Vector of 2 double is treated as a Vector2.

Vector3#

A Vector of 3 double is treated as a Vector3.

Quaternion#

A Vector of 4 double is treated as a Quaternion.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/objects/drawable.html b/docs/stardust-protocol/server/objects/drawable.html index d55574fe..3c09a133 100644 --- a/docs/stardust-protocol/server/objects/drawable.html +++ b/docs/stardust-protocol/server/objects/drawable.html @@ -5,13 +5,13 @@ /drawable | Stardust XR - + - + \ No newline at end of file diff --git a/docs/stardust-protocol/server/objects/field.html b/docs/stardust-protocol/server/objects/field.html index 3c6070c4..3667305f 100644 --- a/docs/stardust-protocol/server/objects/field.html +++ b/docs/stardust-protocol/server/objects/field.html @@ -5,13 +5,13 @@ /field | Stardust XR - +

/field

Object managing fields for interaction.

Signals#

createBoxField(string name, string spacePath, Vector3 origin, Quaternion orientation, Vector3 size)#

Creates a new BoxField at /field/[name] with parent at spacePath.

createCylinderField(string name, string spacePath, Vector3 origin, Quaternion orientation, float length, float radius)#

Creates a new CylinderField at /field/[name] with parent at spacePath.

createSphereField(string name, string spacePath, Vector3 origin, float radius)#

Creates a new SphereField at /field/[name] with parent at spacePath.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/objects/hmd.html b/docs/stardust-protocol/server/objects/hmd.html index 6f474a95..eb1ca9b3 100644 --- a/docs/stardust-protocol/server/objects/hmd.html +++ b/docs/stardust-protocol/server/objects/hmd.html @@ -5,13 +5,13 @@ /hmd | Stardust XR - + - + \ No newline at end of file diff --git a/docs/stardust-protocol/server/objects/input.html b/docs/stardust-protocol/server/objects/input.html index 64fc9ca1..f6fc0e8c 100644 --- a/docs/stardust-protocol/server/objects/input.html +++ b/docs/stardust-protocol/server/objects/input.html @@ -5,13 +5,13 @@ /input | Stardust XR - +

/input

Object managing input and interaction.

Signals#

registerInputHandler(string name, string field, string spacePath, Vector3 position, Quat rotation, string callbackPath, string callbackMethod)#

Creates a new InputHandler with the specified name and field, located relative to the space referenced in spacePath and the postion + rotation.

Methods#

Vector<Vector<string inputHandlerUUID, Vector3 position>> getInputHandlers(string spacePath, bool excludeSelf)#

Returns a list of all InputHandler UUIDs and their positions (relative to the space at spacePath), as well as puts aliases to those handlers in /input/global_handler/[UUID]. Excludes handlers from this client if excludeSelf is true.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/objects/root.html b/docs/stardust-protocol/server/objects/root.html index b751a7fe..4464b79f 100644 --- a/docs/stardust-protocol/server/objects/root.html +++ b/docs/stardust-protocol/server/objects/root.html @@ -5,13 +5,13 @@ / | Stardust XR - +

/

Object managing the client/server relationship as a whole.

Signals#

subscribeLogicStep(string path, string method)#

Executes method on object at path on the client when the main logic loop of the server starts each frame.

method must have arguments of (double delta, double timeToRender).

delta gives the time in seconds between the current time and the last time the logic loop executed while timeToRender gives the time in ms since epoch when the current frame is expected to reach the user's eyes (returns 0 for now).

disconnect(null)#

Lets the server know that the client wishes to disconnect. After this it can be assumed the client is disconnected from the server.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/objects/spatial.html b/docs/stardust-protocol/server/objects/spatial.html index 45f6c215..97daaa8f 100644 --- a/docs/stardust-protocol/server/objects/spatial.html +++ b/docs/stardust-protocol/server/objects/spatial.html @@ -5,13 +5,13 @@ /spatial | Stardust XR - +

/spatial

Object managing spatial objects and spatial manipulation.

Signals#

createSpatial(string name, string spacePath, Vector3 origin, Quat orientation, Vector3 scale, bool translatable, bool rotatable, bool scalable)#

Creates a new Spatial at /spatial/spatial/[name] with parent at spacePath.

createZone(string name, string fieldPath, string spacePath, Vector3 origin, Quat orientation, string callbackPath, string callbackMethod)#

Creates a new Zone at /spatial/zone/[name] with parent at spacePath and field at fieldPath. The arguments callbackPath and callbackMethod refer to a callback method accepting a Vector of 2 TypedVectors, the first being a list of names of nodes that have just entered the field and the second being names of nodes that left (as string).

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/Model.html b/docs/stardust-protocol/server/types/Model.html index 38102db2..f7dc21e0 100644 --- a/docs/stardust-protocol/server/types/Model.html +++ b/docs/stardust-protocol/server/types/Model.html @@ -5,13 +5,13 @@ Model | Stardust XR - +

Model

Derived from Spatial#

A graphical model. It will only show when enabled.

Properties#

setVisible(bool visible)#

Enables/disables visibility.

setOrigin(Vector3 origin)#

Sets the origin to origin.

setOrientation(Quat orientation)#

Sets the orientation to orientation.

destroy()#

Destroys the model instance. Resources like the mesh and material and textures may be in memory still, but the resource manager will clean it up if needed.

setMaterialProperty(uint32 submeshIndex, string propertyName, float value)#

setMaterialProperty(uint32 submeshIndex, string propertyName, Color value)#

setMaterialProperty(uint32 submeshIndex, string propertyName, string value)#

Sets the material property propertyName on this model's submesh at submeshIndex to value. Valid material names are:

NameTypeDescription
colorColorTint/multiply the shader's output color by this amount. (default is opaque white)
roughnessfloatScale the metal texture's roughness by this amount
metallicfloatScale the metal texture's metalness by this amount
tex_scalefloatScale the UV coordinates of all textures by this amount
diffusestringPath to the diffuse texture of the material (if it has one).
emissionstringPath to the emission texture of the material (if it has one).
metalstringPath to the metalness texture of the material (if it has one).
normalstringPath to the normal map texture of the material (if it has one).
occlusionstringPath to the occlusion map texture of the material (if it has one).
- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/Node.html b/docs/stardust-protocol/server/types/Node.html index 8dd0efd2..36842bee 100644 --- a/docs/stardust-protocol/server/types/Node.html +++ b/docs/stardust-protocol/server/types/Node.html @@ -5,13 +5,13 @@ Node | Stardust XR - + - + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/Spatial.html b/docs/stardust-protocol/server/types/Spatial.html index 82fb8d28..17252de8 100644 --- a/docs/stardust-protocol/server/types/Spatial.html +++ b/docs/stardust-protocol/server/types/Spatial.html @@ -5,13 +5,13 @@ Spatial | Stardust XR - +

Spatial

Derived from Node#

A base type for types that exist in 3D space, always relative to another space or the engine's world space. Spatials are always relative because in AR or XXR reference spaces change constantly in response to new environments.

Internal Properties#

Sometimes it makes sense for a Spatial to not be scalable (like in Fields where scaling dramatically increases the number of steps to raymarch for pointers) or not be rotatable (point lights) or such, so these are disabled for certain Spatial-derived objects, mentioned right after "Derived from Spatial".

translatable: bool#

If false, object's origin cannot be modified from a client.

rotatable: bool#

If false, object's rotation cannot be modified from a client (e.g. point lights, point sound sources).

scalable: bool#

If false, object's scale cannot be modified from a client (e.g. Fields, PointerInput).

zoneable: bool#

If false, no zones will see that this spatial exists. Useful for locking objects in space so they aren't affected by workspaces and generally shouldn't be true for anything other than the root spatial of an object.

Signals#

move(Vector3 position)#

Moves the Spatial relative to itself if translatable is not false.

rotate(Quat rotation)#

Rotates the Spatial relative to itself if rotatable is not false.

scale(float scale)#

Multiplies the Spatial's scale vector by scale if scalable is not false.

setOrigin(Vector3 origin)#

Sets the origin to origin if translatable is not false.

setOrientation(Quat orientation)#

Sets the orientation to orientation if rotatable is not false.

setScale(Vector3 scale)#

Sets the scale to scale if scalable is not false.

setPose(Vector3 origin, Quat orientation)#

Sets the pose relative to the Spatial's space if translatable and rotatable are true. This method saves on IPC calls compared to setOrigin and setOrientation in sequence.

setTransform(Vector3 origin, Quat orientation)#

Sets the transform relative to the Spatial's space if translatable, rotatable and scalable are true. This method saves on IPC calls compared to setOrigin, setOrientation, and setScale in sequence.

setSpatialParent(string parentPath)#

Sets the spatial parent of this Spatial while keeping the object in the same place in local space.

setSpatialParentInPlace(string parentPath)#

Sets the spatial parent of this Spatial while not changing the object's absolute position.

setZoneable(bool zoneable)#

Enable/disable this spatial's zoneable property.

Methods#

Vector<Vector3 origin, Quat orientation, Vector3 scale> getTransform(null)#

Returns the origin, orientation, and scale of this spatial relative to its parent.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/Zone.html b/docs/stardust-protocol/server/types/Zone.html index 12953e2f..89b4e59a 100644 --- a/docs/stardust-protocol/server/types/Zone.html +++ b/docs/stardust-protocol/server/types/Zone.html @@ -5,13 +5,13 @@ Zone | Stardust XR - +

Zone

Derived from Spatial#

An object to manipulate compatible Spatials inside its field, such as organizing/aligning widgets or creating workspaces, acting as an inertial reference frame or part of a multi-selection wand.

Signals#

bool isCaptured(string spatialUUID)#

Returns true/false if the Spatial is captured by this zone or another, null if the Spatial at spatialUUID is not accessible by this zone or does not exist.

capture(string spatialUUID)#

Captures the Spatial at spatialUUID if that Spatial exists and is accessible by this zone. This means that the Spatial cannot be seen or affected by other zones unless a zone is closer to the Spatial than this zone.

release(string spatialUUID)#

Uncaptures the Spatial at spatialUUID so any zone the Spatial is inside can access it.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/field/BoxField.html b/docs/stardust-protocol/server/types/field/BoxField.html index 9e21f840..2a228413 100644 --- a/docs/stardust-protocol/server/types/field/BoxField.html +++ b/docs/stardust-protocol/server/types/field/BoxField.html @@ -5,13 +5,13 @@ BoxField | Stardust XR - + - + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/field/CylinderField.html b/docs/stardust-protocol/server/types/field/CylinderField.html index ba875ce8..2813ce8f 100644 --- a/docs/stardust-protocol/server/types/field/CylinderField.html +++ b/docs/stardust-protocol/server/types/field/CylinderField.html @@ -5,13 +5,13 @@ CylinderField | Stardust XR - + - + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/field/Field.html b/docs/stardust-protocol/server/types/field/Field.html index 9f3516cd..9532ad39 100644 --- a/docs/stardust-protocol/server/types/field/Field.html +++ b/docs/stardust-protocol/server/types/field/Field.html @@ -5,13 +5,13 @@ Field | Stardust XR - +

Field

Derived from Spatial#

Type that contains methods all Fields share. All fields created are under /field. See /field for the field factory.

Methods#

double distance(string spacePath, Vector3 point)#

Returns the distance from point to the surface of the object, positive if the point is outside and negative if inside. When point is far enough away the object will give an approximate distance to the origin instead of the surface.

Vector3 normal(string spacePath, Vector3 point)#

Returns the normal of point compared to the surface of the object. Normal always points toward object.

Vector3 closestPoint(string spacePath, Vector3 point)#

Returns the closest point from point to the surface of the object. Use this instead of distance and normal when best to limit IPC calls.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/field/SphereField.html b/docs/stardust-protocol/server/types/field/SphereField.html index ebf5b954..74b87feb 100644 --- a/docs/stardust-protocol/server/types/field/SphereField.html +++ b/docs/stardust-protocol/server/types/field/SphereField.html @@ -5,13 +5,13 @@ SphereField | Stardust XR - + - + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/input/InputHandler.html b/docs/stardust-protocol/server/types/input/InputHandler.html index fade1163..29148ee0 100644 --- a/docs/stardust-protocol/server/types/input/InputHandler.html +++ b/docs/stardust-protocol/server/types/input/InputHandler.html @@ -5,13 +5,13 @@ InputHandler | Stardust XR - +

InputHandler

Derived from Spatial (scalable: false)#

A handler to allow clients to recieve input. Won't send input through the callback if disabled.

Methods#

setField(string field)#

Sets the field this input handler will use.

setCallback(string callbackPath, string callbackMethod)#

Sets the callback this input handler will use.

setActions(Vector<String> actions)#

Specify all compatible action names (human-readable).

Vector<String> getActions(null)#

Get a list of all action names (human-readable).

setActions(Vector<String> actions)#

Set all the objects on this input handler to actions.

runAction(String actionName)#

Runs the action specififed by actionName.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/input/InputMethod.html b/docs/stardust-protocol/server/types/input/InputMethod.html index 41bb0749..7d67233c 100644 --- a/docs/stardust-protocol/server/types/input/InputMethod.html +++ b/docs/stardust-protocol/server/types/input/InputMethod.html @@ -5,13 +5,13 @@ InputMethod | Stardust XR - +

InputMethod

Derived from Spatial (scalable: false)#

Represents an input device generically, with specifics being fleshed out in subclasses.

Internal Properties#

type: uint8#

NameDescription
0GlobalA non-spatial input, used for power buttons and system volume and such
1ControllerContains a pose and datamap for buttons, trackpad, joystick, grip, trigger, etc.
2PointerInputDefined by origin, direction, and tilt with datamap for buttons, trackpad, etc.
3HandInputContains a full 27-bone hand skeleton (including forearm) and datamap for abstractions like grip, pinch distance/point, etc.

datamap: Dictionary#

See Datamap:

Internal Methods#

distanceToField(string field)#

Returns the distance from this input to a field in meters. field is the name of the field, not the full path.

serialize()#

Returns a serialized version of the InputMethod, each serialized schema is shown under #Serialization in the respective Input subclasses.

Serialization#

KeyValue Type
typeint
distancefloat

Datamap#

The datamap is a dictionary containing abstracted and raw data related to the input that clients can use to analyze input in the most optimal way. It has keys of type Key(Flexbuffers-specific, in any other language use a String) and values:

TypeExample UsesUsage Notes
boolDigital buttonsIf values are analog, use a float instead with 1.0 being considered true.
floatAnalog trigger, gripFor values such as grip/trigger, make the range 0.0-1.0, for something like a scroll wheel -0.5-0.5.
Vector2Touchpad, joystickFor values such as trackpad and joystick, make each component in the range of -0.5-0.5 and calculate+apply deadzone before setting these values.
Vector3Pinch position, grip axis vectorFor points and directions, make this a value inside the InputMethod's local space. Raw hand pose data should not be put in the datamap.
stringInput device type/nameDevice name such as "valveindex" and device type such as "controller" on a PointerInput. Useful for client devs to customize input to work best with these devices.

Standard supported datamap keys will be put in the individual type's documentation, however you can put more data in and some input handlers may be able to use that data for better interactions.

Methods#

modifyDatamap(Dictionary data)#

Merges the datamap of this InputMethod with data. Each key here will add to the datamap if not present and set the existing value if present. Any key not present in data will be unaffected.

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/input/inputtypes/HandInput.html b/docs/stardust-protocol/server/types/input/inputtypes/HandInput.html index e2326569..40227c9e 100644 --- a/docs/stardust-protocol/server/types/input/inputtypes/HandInput.html +++ b/docs/stardust-protocol/server/types/input/inputtypes/HandInput.html @@ -5,13 +5,13 @@ HandInput | Stardust XR - +

HandInput

Derived from InputMethod#

A full 27-bone hand+forearm input with useful abstractions provided through the datamap.

The local space of a hand is where +Z is away from the palm, +Y is from the palm to the fingers, and +X is orthogonal and to the right.

Serialization#

KeyValue Type
originVector3
directionVector3
tiltfloat
datamapDictionary
[    thumb metacarpal,    thumb proximal,    thumb distal,    thumb tip,    index metacarpal,    index proximal,    index intermediate,    index distal,    index tip,    middle metacarpal,    middle proximal,    middle intermediate,    middle distal,    middle tip,    ring metacarpal,    ring proximal,    ring intermediate,    ring distal,    ring tip,    little metacarpal,    little proximal,    little intermediate,    little distal,    little tip]

(This section is WIP)

Datamap#

Required#

KeyValue TypeDescription
confidencefloat (range 0.0-1.0)How confident the hand tracker is of the pose of the hand
isLeftbooltrue if this hand is the left hand, false if not
pinchStrengthfloat (range 0.0-1.0)How much the hand is pinching
pinchDistancefloat (>0.0)The distance in meters between the thumb and index finger
grabStrengthfloat (range 0.0-1.0)How much the hand is making a fist

Methods#

TODO: Properly secured field distance calculation accessible to clients

- + \ No newline at end of file diff --git a/docs/stardust-protocol/server/types/input/inputtypes/PointerInput.html b/docs/stardust-protocol/server/types/input/inputtypes/PointerInput.html index a97a4248..5d2c1548 100644 --- a/docs/stardust-protocol/server/types/input/inputtypes/PointerInput.html +++ b/docs/stardust-protocol/server/types/input/inputtypes/PointerInput.html @@ -5,13 +5,13 @@ PointerInput | Stardust XR - +

PointerInput

Derived from InputMethod#

An input method for pointers, such as the Daydream's remote, a pointer put on an Index controller, Oculus style laser mouse, and your desktop's mouse in flatscreen.

The local space for a pointer is where +Z is along the pointer's direction, +X is to the right of the pointer when laying face up, and +Y is upward when laying face up.

Serialization#

KeyValue Type
originVector3
directionVector3
tiltfloat
datamapDictionary

Datamap#

Required#

KeyValue TypeDescription
selectfloat (range 0.0-1.0)Whether the pointer is attempting to select an object, usually through trigger. 1.0 is selected, 0.0 is not selected, and inbetween is to add smoothness to the interaction.
grabfloat (range 0.0-1.0)How much the pointer is attempting to grab an object. 0.0 is not grabbing at all, 1.0 is grabbing the strongest, and inbetween is to add smoothness.
scrollVector2 (component range -0.5-0.5)The amount to scroll on this input tick (sensitivity determined on the receiving client). Can be used for 2D scrolling as well as adjusting depth/size when grabbing an object.

Built in#

KeyValue TypeDescription
deepestPointDistancefloat (>=0.0)The distance along the ray where the deepest surface point resides.
typestringThe type of pointer. Can be one of "eyes", "mouse", "controller", "gaze", "generic"

Methods#

setDirection(Vector3 direction)#

Sets the direction the pointer is pointing in stage space.

setTilt(float angle)#

Sets the tilt of the pointer (rotation about the pointer direction) clockwise in radians.

setOrientation(Vector3 direction, float angle)#

Sets the direction and tilt of the pointer to save on IPC calls.

setPose(Vector3 origin, Vector3 direction, float angle)#

Sets the origin, direction, and tilt of the pointer to save on IPC calls.

- + \ No newline at end of file diff --git a/index.html b/index.html index 0b40789f..dbfc7faf 100644 --- a/index.html +++ b/index.html @@ -5,13 +5,13 @@ Stardust XR - +

Stardust XR

We Fight for the Users!

Flexible

Flexible

Stardust allows you to make XR widgets or interfaces and run them among others. You don't have to make a whole system UI, just a few pieces.

Streamlined

Streamlined

Stardust is made using StereoKit, an XR application/rendering toolkit allowing for a fast and lightweight display server.

- + \ No newline at end of file diff --git a/roadmap.html b/roadmap.html index 487e8d0d..03a7d3a5 100644 --- a/roadmap.html +++ b/roadmap.html @@ -5,13 +5,13 @@ Roadmap | Stardust XR - +

Roadmap

1.0 (Minimum Viable Product)#

  • Core functionality
    • IPC+RPC
    • Protocol documentation
  • Client
    • Fusion
      • Initial connection
      • Node type creation/destruction
      • Interface interaction
      • Callbacks
  • Server
    • Per-client scenegraph
    • Statically link StereoKit
    • Basic features
      • Logic step
      • Spatial transforms
        • Absolute movement
        • Relative movement
        • Spatial parenting
      • Models
        • Loading
        • Setting material parameters
      • Fields (SDFs for interaction)
        • Box field
        • Rounded box field
        • Sphere field
      • Input
        • Input methods
          • Hand input
            • Creation from OpenXR
            • Creation from StereoKit (flatscreen)
            • Interaction with clients
          • Pointer input
            • Creation from StereoKit (flatscreen, mouse cursor ray)
            • Interaction with clients
        • Input handler
          • Async input propagation through distance
      • Environment
        • Set skytex
        • Set skylight
      • Items
        • Base item class
        • Base item accepter class
        • Environment equirectangular item
        • Environment equirectangular accepter
      • 2D integration
        • Panels
          • Panel item
          • sk-wlroots (for Wayland)
            • Statically link wlroots
            • Rendering
            • Input seats
        • Panel shells
          • Accept panel items
          • Put surface on model material's texture
          • Feed input through to panel
          • Release panel items
- + \ No newline at end of file