diff --git a/src/components/zone/partials/ZoneObject.vue b/src/components/zone/partials/ZoneObject.vue
index e787a05..fbf9df0 100644
--- a/src/components/zone/partials/ZoneObject.vue
+++ b/src/components/zone/partials/ZoneObject.vue
@@ -5,8 +5,12 @@
diff --git a/src/composables/zoneComposable.ts b/src/composables/zoneComposable.ts
index 766f2b2..6204483 100644
--- a/src/composables/zoneComposable.ts
+++ b/src/composables/zoneComposable.ts
@@ -3,6 +3,7 @@ import Tilemap = Phaser.Tilemaps.Tilemap
import TilemapLayer = Phaser.Tilemaps.TilemapLayer
import Tileset = Phaser.Tilemaps.Tileset
import Tile = Phaser.Tilemaps.Tile
+import { useAssetManager } from '@/utilities/assetManager'
export function getTile(layer: TilemapLayer | Tilemap, x: number, y: number): Tile | undefined {
const tile = layer.getTileAtWorldXY(x, y)
@@ -69,3 +70,30 @@ export const calculateIsometricDepth = (x: number, y: number, width: number = 0,
}
return baseDepth + (width + height) / (2 * config.tile_size.x)
}
+
+export async function loadZoneObjectTexture(scene: Phaser.Scene, textureId: string, updatedAt: Date): Promise {
+ const assetManager = useAssetManager
+
+ // Check if the texture is already loaded in Phaser
+ if (scene.textures.exists(textureId)) {
+ return true
+ }
+
+ let assetData = await assetManager.getAsset(textureId)
+
+ if (!assetData) {
+ await assetManager.downloadAsset(textureId, `/assets/objects/${textureId}.png`, 'objects', updatedAt)
+ assetData = await assetManager.getAsset(textureId)
+ }
+
+ if (assetData) {
+ return new Promise((resolve) => {
+ scene.textures.addBase64(textureId, assetData.data)
+ scene.textures.once(`addtexture-${textureId}`, () => {
+ resolve(true)
+ })
+ })
+ }
+
+ return false
+}