First step toward external portals
This commit is contained in:
parent
47352e365d
commit
63991388f3
|
@ -4,7 +4,7 @@
|
|||
"description": "vr experiments 3",
|
||||
"scripts": {
|
||||
"prepare": "yarn regenerate && yarn compile && yarn rollup",
|
||||
"regenerate": "rm -rf ./src/gen && preserves-schema-ts --module sturdy=@syndicate-lang/core:Schemas.sturdy --xref node_modules/@syndicate-lang/core/protocols/schemas --output ./src/gen ./protocols/schemas",
|
||||
"regenerate": "rm -rf ./src/gen && preserves-schema-ts --module sturdy=@syndicate-lang/core:Schemas.sturdy --module noise=@syndicate-lang/core:Schemas.noise --xref node_modules/@syndicate-lang/core/protocols/schemas --output ./src/gen ./protocols/schemas",
|
||||
"regenerate:watch": "yarn regenerate --watch",
|
||||
"compile": "syndicate-tsc",
|
||||
"compile:watch": "syndicate-tsc -w --verbose --intermediate-directory src.ts",
|
||||
|
|
|
@ -3,7 +3,7 @@ version 1 .
|
|||
Portal = <portal @name string @destination PortalDestination @position shapes.Vector3> .
|
||||
PortalDestination =
|
||||
/ @local #!any
|
||||
/ @remote <remote <ws @url string> @sturdyref sturdy.SturdyRef>
|
||||
/ @remote noise.Route
|
||||
.
|
||||
|
||||
Gravity = <gravity @direction shapes.Vector3> .
|
||||
|
|
|
@ -6,5 +6,6 @@
|
|||
$scene <portal $spriteName $ds $initialPos>
|
||||
]
|
||||
]
|
||||
? <portal ?spriteName ?target> <portal $spriteName $target <v 0.0 0.0 0.0>>
|
||||
]
|
||||
]
|
||||
|
|
|
@ -51,6 +51,16 @@
|
|||
<scale <v 1.0 2.11 0.1> <move <v 0.0 0.5 0.6> <box>>>
|
||||
]>>>
|
||||
|
||||
<portal "door2" <route [<ws "wss://vr.demo.eighty-twenty.org/ws">]>>
|
||||
<sprite "door2"
|
||||
<move <v -5.0 0.0 1.5>
|
||||
<rotate <v 0.0 -0.1 0.0> [
|
||||
<scale <v 1.0 2.11 1.0>
|
||||
<texture ["textures/door1.jpg"]
|
||||
<touchable <move <v 0.0 0.5 0.0> <plane>>>>>
|
||||
<scale <v 1.0 2.11 0.1> <move <v 0.0 0.5 0.6> <box>>>
|
||||
]>>>
|
||||
|
||||
<sprite "plans"
|
||||
<texture ["plans/signal-2022-12-27-125451_002.jpeg"]
|
||||
<move <v 0.0 1.0 -10.0>
|
||||
|
@ -66,10 +76,20 @@
|
|||
<color 0.5 0.5 0.0
|
||||
<box>>>>>>>
|
||||
|
||||
<sprite "sofa"
|
||||
<rotate <v -0.125 0.5 0.0>
|
||||
<scale <v 0.01 0.01 0.01>
|
||||
<external "objects/IKE020001_obj/IKEA-Arild_2_Seat_Sofa-3D.obj">>>>
|
||||
; <sprite "sponge"
|
||||
; <move <v 4.0 1.6 0.0> [
|
||||
; <scale <v 0.001 0.001 0.001>
|
||||
; <external "objects/usnm_346-100k-obj/usnm_346-01-100k.obj">>
|
||||
; <texture ["textures/oak-herringbone-5e80fb40b00c9-1200.jpg"]
|
||||
; <scale <v 0.105 1.6 0.13>
|
||||
; <move <v -0.05 -0.5384 0.5>
|
||||
; <box>>>>
|
||||
; ]>>
|
||||
|
||||
; <sprite "sofa"
|
||||
; <rotate <v -0.125 0.5 0.0>
|
||||
; <scale <v 0.01 0.01 0.01>
|
||||
; <external "objects/IKE020001_obj/IKEA-Arild_2_Seat_Sofa-3D.obj">>>>
|
||||
|
||||
<sprite "x"
|
||||
<move <v 10.0 1.6 -5.0>
|
||||
|
|
16
src/index.ts
16
src/index.ts
|
@ -61,6 +61,7 @@ function spriteMain(spriteName: string, runningEngine: RunningEngine, rootMesh:
|
|||
}
|
||||
|
||||
async function enterScene(
|
||||
routeField: Dataflow.Field<wsRelay.Noise.Route<Ref>>,
|
||||
id: string,
|
||||
runningEngine: RunningEngine,
|
||||
ds: Ref,
|
||||
|
@ -142,7 +143,8 @@ async function enterScene(
|
|||
runningEngine.scene.removeMesh(rootMesh, true);
|
||||
Turn.active.stop(currentSceneFacet, () => {
|
||||
react {
|
||||
enterScene(id,
|
||||
enterScene(routeField,
|
||||
id,
|
||||
runningEngine,
|
||||
ds,
|
||||
dest.value,
|
||||
|
@ -153,6 +155,8 @@ async function enterScene(
|
|||
}
|
||||
break;
|
||||
default:
|
||||
console.log('jumping to remote portal', dest);
|
||||
routeField.value = dest.value;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -215,12 +219,15 @@ function bootApp(ds: Ref, runningEngine: RunningEngine) {
|
|||
localStorage.setItem('userEmail', emailInput.value);
|
||||
}));
|
||||
|
||||
const route = wsRelay.Noise.Route<Ref>({
|
||||
field route: wsRelay.Noise.Route<Ref> = wsRelay.Noise.Route<Ref>({
|
||||
"transports": [fromJS(relayAddr)],
|
||||
"steps": [wsRelay.Noise.RouteStep.GatekeeperStep(serverCap)],
|
||||
});
|
||||
|
||||
during wsRelay.Resolved({ "route": route, "resolved": $remoteDs_e: Embedded }) => {
|
||||
during wsRelay.Resolved({
|
||||
"route": route.value,
|
||||
"resolved": $remoteDs_e: Embedded,
|
||||
}) => {
|
||||
const remoteDs = remoteDs_e.embeddedValue;
|
||||
|
||||
setupLog(remoteDs, id, Symbol.for('vr-demo'));
|
||||
|
@ -234,7 +241,8 @@ function bootApp(ds: Ref, runningEngine: RunningEngine) {
|
|||
at remoteDs {
|
||||
stop on asserted SceneHandle($sceneDs_e: Embedded) => {
|
||||
react {
|
||||
enterScene(id,
|
||||
enterScene(route,
|
||||
id,
|
||||
runningEngine,
|
||||
ds,
|
||||
sceneDs_e.embeddedValue,
|
||||
|
|
Loading…
Reference in New Issue