Skip to content

Commit 9a6735f

Browse files
committed
Improve retrieval of assets/space objects
1 parent c49ad11 commit 9a6735f

File tree

1 file changed

+25
-14
lines changed
  • mirror-godot-app/scripts/autoload/zone

1 file changed

+25
-14
lines changed

mirror-godot-app/scripts/autoload/zone/server.gd

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ func _on_edit_server_zone_socket_logged_in() -> void:
243243
push_error("Critical: cannot start server: ", promise.get_error_message())
244244
return
245245
_on_zone_socket_space_received(promise.get_result())
246+
print("Started getting space objects: ", Time.get_datetime_string_from_system())
246247
Net.zone_socket.get_space_objects_page(space_id, 1)
247248

248249

@@ -272,31 +273,41 @@ func _handle_zone_socket_error(request: Dictionary) -> void:
272273
push_error(error_msg, " ", request)
273274
print(error_msg)
274275

275-
276+
var _loaded_pages = 0
277+
var _queued_assets = []
276278
func _on_zone_socket_space_object_page_received(space_objects_page: Dictionary) -> void:
277279
var page = space_objects_page.get("page", 1)
278280
var total_pages = space_objects_page.get("totalPage", 1)
279281
var space_objects_arr = space_objects_page.get("result", [])
280-
for obj in space_objects_arr:
281-
# if we already have the asset in memory, no need to get it again
282-
if not Net.asset_client.get_asset_json(obj["asset"]).is_empty():
283-
continue
284-
Net.zone_socket.queue_download_asset(obj["asset"])
282+
_loaded_pages +=1
283+
print("Loaded page: ", page, " time: ", Time.get_datetime_string_from_system())
284+
print("Total pages loaded: ", _loaded_pages, " total pages ", total_pages)
285285

286-
for space_obj in space_objects_arr:
287-
#assert(not space_obj.has("receipt"), "May happen with old spaces, but should not happen with new spaces.")
288-
if space_obj.has("receipt"):
289-
space_obj["creator"] = space_obj["receipt"].get("created_by_user", "")
290-
space_obj.erase("receipt")
291286
Zone.space_objects.append_array(space_objects_arr)
292287
# if we've reached the final page, we're done getting all the data
293-
if page >= total_pages:
294-
print("All Space Objects Received")
288+
if _loaded_pages >= total_pages:
289+
print("All Space Objects Received: ", Time.get_datetime_string_from_system())
290+
print("Downloading assets for space objects")
291+
for obj in Zone.space_objects:
292+
if obj.has("receipt"):
293+
obj["creator"] = obj["receipt"].get("created_by_user", "")
294+
obj.erase("receipt")
295+
# if we already have the asset in memory, no need to get it again
296+
if not Net.asset_client.get_asset_json(obj["asset"]).is_empty():
297+
continue
298+
var asset_id = obj["asset"]
299+
if not _queued_assets.has(asset_id):
300+
Net.zone_socket.queue_download_asset(asset_id)
301+
_queued_assets.push_back(asset_id)
302+
print("All assets have been queued: ", Time.get_datetime_string_from_system())
303+
295304
Zone.instance_manager.setup_space_objects()
296305
_server_data_received = true
297306
return
298307
# get the next page
299-
Net.zone_socket.get_space_objects_page(space_id, page + 1)
308+
if page == 1:
309+
for page_id in range(2, total_pages+1):
310+
Net.zone_socket.get_space_objects_page(space_id, page_id)
300311

301312

302313
func _on_zone_socket_asset_received(asset: Variant) -> void:

0 commit comments

Comments
 (0)