First step toward external portals
This commit is contained in:
parent
47352e365d
commit
63991388f3
|
@ -4,7 +4,7 @@
|
||||||
"description": "vr experiments 3",
|
"description": "vr experiments 3",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"prepare": "yarn regenerate && yarn compile && yarn rollup",
|
"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",
|
"regenerate:watch": "yarn regenerate --watch",
|
||||||
"compile": "syndicate-tsc",
|
"compile": "syndicate-tsc",
|
||||||
"compile:watch": "syndicate-tsc -w --verbose --intermediate-directory src.ts",
|
"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> .
|
Portal = <portal @name string @destination PortalDestination @position shapes.Vector3> .
|
||||||
PortalDestination =
|
PortalDestination =
|
||||||
/ @local #!any
|
/ @local #!any
|
||||||
/ @remote <remote <ws @url string> @sturdyref sturdy.SturdyRef>
|
/ @remote noise.Route
|
||||||
.
|
.
|
||||||
|
|
||||||
Gravity = <gravity @direction shapes.Vector3> .
|
Gravity = <gravity @direction shapes.Vector3> .
|
||||||
|
|
|
@ -6,5 +6,6 @@
|
||||||
$scene <portal $spriteName $ds $initialPos>
|
$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>>>
|
<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"
|
<sprite "plans"
|
||||||
<texture ["plans/signal-2022-12-27-125451_002.jpeg"]
|
<texture ["plans/signal-2022-12-27-125451_002.jpeg"]
|
||||||
<move <v 0.0 1.0 -10.0>
|
<move <v 0.0 1.0 -10.0>
|
||||||
|
@ -66,10 +76,20 @@
|
||||||
<color 0.5 0.5 0.0
|
<color 0.5 0.5 0.0
|
||||||
<box>>>>>>>
|
<box>>>>>>>
|
||||||
|
|
||||||
<sprite "sofa"
|
; <sprite "sponge"
|
||||||
<rotate <v -0.125 0.5 0.0>
|
; <move <v 4.0 1.6 0.0> [
|
||||||
<scale <v 0.01 0.01 0.01>
|
; <scale <v 0.001 0.001 0.001>
|
||||||
<external "objects/IKE020001_obj/IKEA-Arild_2_Seat_Sofa-3D.obj">>>>
|
; <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"
|
<sprite "x"
|
||||||
<move <v 10.0 1.6 -5.0>
|
<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(
|
async function enterScene(
|
||||||
|
routeField: Dataflow.Field<wsRelay.Noise.Route<Ref>>,
|
||||||
id: string,
|
id: string,
|
||||||
runningEngine: RunningEngine,
|
runningEngine: RunningEngine,
|
||||||
ds: Ref,
|
ds: Ref,
|
||||||
|
@ -142,7 +143,8 @@ async function enterScene(
|
||||||
runningEngine.scene.removeMesh(rootMesh, true);
|
runningEngine.scene.removeMesh(rootMesh, true);
|
||||||
Turn.active.stop(currentSceneFacet, () => {
|
Turn.active.stop(currentSceneFacet, () => {
|
||||||
react {
|
react {
|
||||||
enterScene(id,
|
enterScene(routeField,
|
||||||
|
id,
|
||||||
runningEngine,
|
runningEngine,
|
||||||
ds,
|
ds,
|
||||||
dest.value,
|
dest.value,
|
||||||
|
@ -153,6 +155,8 @@ async function enterScene(
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
console.log('jumping to remote portal', dest);
|
||||||
|
routeField.value = dest.value;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -215,12 +219,15 @@ function bootApp(ds: Ref, runningEngine: RunningEngine) {
|
||||||
localStorage.setItem('userEmail', emailInput.value);
|
localStorage.setItem('userEmail', emailInput.value);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
const route = wsRelay.Noise.Route<Ref>({
|
field route: wsRelay.Noise.Route<Ref> = wsRelay.Noise.Route<Ref>({
|
||||||
"transports": [fromJS(relayAddr)],
|
"transports": [fromJS(relayAddr)],
|
||||||
"steps": [wsRelay.Noise.RouteStep.GatekeeperStep(serverCap)],
|
"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;
|
const remoteDs = remoteDs_e.embeddedValue;
|
||||||
|
|
||||||
setupLog(remoteDs, id, Symbol.for('vr-demo'));
|
setupLog(remoteDs, id, Symbol.for('vr-demo'));
|
||||||
|
@ -234,7 +241,8 @@ function bootApp(ds: Ref, runningEngine: RunningEngine) {
|
||||||
at remoteDs {
|
at remoteDs {
|
||||||
stop on asserted SceneHandle($sceneDs_e: Embedded) => {
|
stop on asserted SceneHandle($sceneDs_e: Embedded) => {
|
||||||
react {
|
react {
|
||||||
enterScene(id,
|
enterScene(route,
|
||||||
|
id,
|
||||||
runningEngine,
|
runningEngine,
|
||||||
ds,
|
ds,
|
||||||
sceneDs_e.embeddedValue,
|
sceneDs_e.embeddedValue,
|
||||||
|
|
Loading…
Reference in New Issue