From 880aff662dcd00a5da3093c2910476d7b8f177ff Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 7 Feb 2023 16:39:50 +1300 Subject: [PATCH 1/6] Add hot reload for Windows-hosted files --- README.md | 2 +- vite.config.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1816e267..4d068133 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ You can host the source files on either your Windows file system or on the Ubunt **Windows File System:** Run the Git commands to clone and pull source files from a Windows command prompt. You may find this best if you're using programs such as SourceTree as a Git GUI. You can also edit source using your usual IDE. -**Ubuntu File System:** Run the Git commands to clone and pull source files from a WSL command prompt. In this case consider [using the Visual Studio Code WSL extension](https://code.visualstudio.com/docs/remote/wsl) as your dev environment - for features such as hot reload. +**Ubuntu File System:** Run the Git commands to clone and pull source files from a WSL command prompt. In this case consider [using the Visual Studio Code WSL extension](https://code.visualstudio.com/docs/remote/wsl) as your dev environment - for features such as better hot reload. #### Running diff --git a/vite.config.js b/vite.config.js index 771bff6c..6ee2d8b0 100644 --- a/vite.config.js +++ b/vite.config.js @@ -35,6 +35,12 @@ export default defineConfig(({command, mode, ssrBuild}) => { }, host: '0.0.0.0', port: 9999, + watch: { + /* For Windows-hosted files. */ + usePolling: true, + interval: 5000, + binaryInterval: 15000, + }, }, }; }) From 6fe6c1d60c6427e256ca9912e74812238b3d788a Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 7 Feb 2023 17:36:23 +1300 Subject: [PATCH 2/6] Destroy TitleScreenRenderer upon window reload --- src/components/title-screen/TitleScreen.jsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/components/title-screen/TitleScreen.jsx b/src/components/title-screen/TitleScreen.jsx index fd25e6aa..ba8d35d2 100644 --- a/src/components/title-screen/TitleScreen.jsx +++ b/src/components/title-screen/TitleScreen.jsx @@ -1796,6 +1796,16 @@ const TitleScreen = () => { titleScreenRenderer?.keys.down, ]); + useEffect(() => { + const destroyTitleScreenRenderer = () => { + titleScreenRenderer && titleScreenRenderer.destroy(); + } + window.addEventListener('beforeunload', destroyTitleScreenRenderer); + return () => { + window.removeEventListener('beforeunload', destroyTitleScreenRenderer); + }; + }, [titleScreenRenderer]); + return (
Date: Tue, 7 Feb 2023 21:20:22 +1300 Subject: [PATCH 3/6] Fix multiplayer realms with avatars at negative elevation --- packages/multiplayer-do | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/multiplayer-do b/packages/multiplayer-do index 59010eae..50786e44 160000 --- a/packages/multiplayer-do +++ b/packages/multiplayer-do @@ -1 +1 @@ -Subproject commit 59010eae4daf70a7e02bb4b5e9ed6979f218d65a +Subproject commit 50786e44292dc5b3c95393c5a822a2e1b00c6cd3 From 9d1b6da05834b29bb5544be139ba1cee1ba94b26 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 7 Feb 2023 21:32:01 +1300 Subject: [PATCH 4/6] Fix multiplayer for avatars at negative elevations --- packages/multiplayer-do | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/multiplayer-do b/packages/multiplayer-do index 50786e44..0c25e77e 160000 --- a/packages/multiplayer-do +++ b/packages/multiplayer-do @@ -1 +1 @@ -Subproject commit 50786e44292dc5b3c95393c5a822a2e1b00c6cd3 +Subproject commit 0c25e77e362f754877cec1b40c0687ef15d1c266 From 40126853fd3943aad4e492669aaf66ffc95c3f63 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 7 Feb 2023 21:33:50 +1300 Subject: [PATCH 5/6] Add code ready for reinstating auto-starting multiplayer --- src/components/title-screen/TitleScreen.jsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/title-screen/TitleScreen.jsx b/src/components/title-screen/TitleScreen.jsx index ba8d35d2..54231de5 100644 --- a/src/components/title-screen/TitleScreen.jsx +++ b/src/components/title-screen/TitleScreen.jsx @@ -872,6 +872,12 @@ class TitleScreenRenderer extends EventTarget { virtualPlayers.removeEventListener('leave', onVirtualPlayersLeave); }); }; + /* + (async () => { + multiplayerConnect(); + })(); + */ + const keydown = e => { switch (e.key) { case 'm': { From ee0804671b6b44f9fef05164aefe087aaee9e249 Mon Sep 17 00:00:00 2001 From: David Rowe Date: Tue, 7 Feb 2023 21:35:35 +1300 Subject: [PATCH 6/6] Fix indentation --- src/components/title-screen/TitleScreen.jsx | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/title-screen/TitleScreen.jsx b/src/components/title-screen/TitleScreen.jsx index 54231de5..65722d67 100644 --- a/src/components/title-screen/TitleScreen.jsx +++ b/src/components/title-screen/TitleScreen.jsx @@ -1090,7 +1090,7 @@ class TitleScreenRenderer extends EventTarget { const onConnect = async position => { // Initialize network realms player. this.realms.localPlayer.initializePlayer({ - position, + position, }, {}); this.localPlayer.setRealmsPlayer(this.realms.localPlayer); }; @@ -1158,13 +1158,13 @@ class TitleScreenRenderer extends EventTarget { camera: this.camera, keys: this.keys, }); - for (const player of this.remotePlayers.values()) { - player.update({ - timestamp, - timeDiff, - camera: this.camera, - }); - } + for (const player of this.remotePlayers.values()) { + player.update({ + timestamp, + timeDiff, + camera: this.camera, + }); + } } } destroy() { @@ -1661,8 +1661,8 @@ const TitleScreen = () => { console.warn('got invalid file', {firstBytes, firstBytesString}); } } - }; - useEffect(() => { + }; + useEffect(() => { const router = useRouter(); if (!seenRouters.has(router)) { seenRouters.set(router, true); @@ -1676,10 +1676,10 @@ const TitleScreen = () => { }; router.addEventListener('srcchange', srcchange); return () => { - router.removeEventListener('srcchange', srcchange); + router.removeEventListener('srcchange', srcchange); }; } - }, []); + }, []); useEffect(() => { const keydown = async e => {