From fa5acca14374c2748bb49792b33e7d7e178abb12 Mon Sep 17 00:00:00 2001
From: Dennis Postma <dennis@directonline.io>
Date: Thu, 4 Jul 2024 14:56:32 +0200
Subject: [PATCH] Hot reload after adding new objects

---
 .../assetManager/partials/TileList.vue        |  1 +
 .../utilities/zoneEditor/ZoneEditor.vue       | 37 ++++++++++---------
 2 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/src/components/utilities/assetManager/partials/TileList.vue b/src/components/utilities/assetManager/partials/TileList.vue
index a25d4d7..96c927e 100644
--- a/src/components/utilities/assetManager/partials/TileList.vue
+++ b/src/components/utilities/assetManager/partials/TileList.vue
@@ -36,6 +36,7 @@ const handleFileUpload = (e: Event) => {
     }
 
     assetStore.fetchAssets()
+
     socket.connection.emit('gm:tile:list', {}, (response: string[]) => {
       assetManagerStore.setTileList(response)
     })
diff --git a/src/components/utilities/zoneEditor/ZoneEditor.vue b/src/components/utilities/zoneEditor/ZoneEditor.vue
index 7e62a02..0747459 100644
--- a/src/components/utilities/zoneEditor/ZoneEditor.vue
+++ b/src/components/utilities/zoneEditor/ZoneEditor.vue
@@ -144,24 +144,27 @@ function save() {
   })
 }
 
-onMounted(() => {
-  watch(
-    () => assetStore.assets,
-    () => {
-      toRaw(assetStore.assets).forEach((asset) => {
-        if (asset.type === 'link') {
-          scene.load.image(asset.key, config.server_endpoint + '/assets' + asset.value + '.png')
-        }
-        if (asset.type === 'base64') {
-          scene.textures.addBase64(asset.key, asset.value)
-        }
-      })
+watch(
+  () => assetStore.assets,
+  () => {
+    console.log('re-loading assets', assetStore.assets)
+    toRaw(assetStore.assets).forEach((asset) => {
+      if (asset.type === 'link') {
+        scene.load.image(asset.key, config.server_endpoint + '/assets' + asset.value + '.png')
+      }
+      if (asset.type === 'base64') {
+        scene.textures.addBase64(asset.key, asset.value)
+      }
+    })
 
-      scene.load.start()
-    },
-    { deep: true }
-  )
-})
+    scene.load.start()
+
+    scene.load.once('complete', () => {
+      console.log('assets re-loaded')
+    })
+  },
+  { deep: true }
+)
 
 onBeforeMount(() => {
   exampleTilesArray.forEach((row, y) => row.forEach((tile, x) => placeTile(zone, tiles, x, y, 'blank_tile')))