Skip to content

Commit

Permalink
fix: remove wait on realm change for satellite images (#2787)
Browse files Browse the repository at this point in the history
  • Loading branch information
dalkia authored Nov 14, 2024
1 parent 7a66be5 commit a91a083
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 19 deletions.
36 changes: 25 additions & 11 deletions Explorer/Assets/DCL/Landscape/SatelliteFloor.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using DCL.Landscape.Settings;
using DCL.MapRenderer.ComponentsFactory;
using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Triggers;
using UnityEngine;
using Utility;

Expand All @@ -23,8 +24,9 @@ public class SatelliteFloor
private MaterialPropertyBlock materialPropertyBlock;
private LandscapeData landscapeData;

private bool satelliteRenderersEnabled;
private bool Initialized;
private bool initialized;
private bool currentlyInGenesis;
private bool debugSettingEnabled;

public void Initialize(LandscapeData config)
{
Expand All @@ -34,6 +36,8 @@ public void Initialize(LandscapeData config)
materialPropertyBlock = new MaterialPropertyBlock();

satelliteRenderers = new Renderer[SATELLITE_MAP_RESOLUTION * SATELLITE_MAP_RESOLUTION];

debugSettingEnabled = landscapeData.showSatelliteView;
}

public void Create(MapRendererTextureContainer textureContainer)
Expand Down Expand Up @@ -67,22 +71,32 @@ public void Create(MapRendererTextureContainer textureContainer)
satelliteRenderers[x + (y * SATELLITE_MAP_RESOLUTION)] = satelliteRenderer;
}

Initialized = true;
SwitchVisibilityAsync(landscapeData.showSatelliteView);
initialized = true;
SwitchVisibility();
}


public async UniTask SwitchVisibilityAsync(bool isVisible)
public void SetCurrentlyInGenesis(bool isGenesis)
{
if (satelliteRenderersEnabled == isVisible) return;
currentlyInGenesis = isGenesis;
SwitchVisibility();
}

if (!Initialized)
await UniTask.WaitUntil(() => Initialized);
public void SwitchVisibilitySetting(bool newValue)
{
debugSettingEnabled = newValue;
SwitchVisibility();
}

satelliteRenderersEnabled = isVisible;
private void SwitchVisibility()
{
var newVisibilityState = debugSettingEnabled && currentlyInGenesis;

if (!initialized)
return;

// Set rendering state for each renderer
foreach (Renderer satelliteRenderer in satelliteRenderers)
satelliteRenderer.forceRenderingOff = !isVisible;
satelliteRenderer.forceRenderingOff = !newVisibilityState;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ private void OnDetailToggle(ChangeEvent<bool> evt)

private void OnSatelliteToggle(ChangeEvent<bool> evt)
{
floor.SwitchVisibilityAsync(evt.newValue);
floor.SwitchVisibilitySetting(evt.newValue);
}

private void OnLoadRadiusConfirm(int value)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using CommunicationData.URLHelpers;
using System;
using CommunicationData.URLHelpers;
using Cysharp.Threading.Tasks;
using DCL.Diagnostics;
using DCL.MapRenderer.ComponentsFactory;
Expand All @@ -9,6 +10,7 @@
using Utility;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using Object = UnityEngine.Object;

namespace DCL.MapRenderer.MapLayers.Atlas.SatelliteAtlas
{
Expand Down Expand Up @@ -77,8 +79,9 @@ public async UniTask LoadImageAsync(Vector2Int chunkId, float chunkWorldSize, Ca
{
texture = await textureTask;
}
catch
catch (Exception e)
{
ReportHub.LogException(e, ReportCategory.UI);
texture = await Addressables.LoadAssetAsync<Texture2D>($"{chunkId.x},{chunkId.y}").Task;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public SwitchRealmMiscVisibilityStartupOperation(ILoadingStatus loadingStatus, I
public async UniTask<Result> ExecuteAsync(AsyncLoadProcessReport report, CancellationToken ct)
{
float finalizationProgress = loadingStatus.SetCurrentStage(LoadingStatus.LoadingStage.EnvironmentMiscSetting);
await realmNavigator.SwitchMiscVisibilityAsync();
realmNavigator.SwitchMiscVisibilityAsync();
report.SetProgress(finalizationProgress);
return Result.SuccessResult();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ UniTask<Result> TryInitializeTeleportToParcelAsync(Vector2Int parcel, Cancellati

UniTask LoadTerrainAsync(AsyncLoadProcessReport loadReport, CancellationToken ct);

UniTask SwitchMiscVisibilityAsync();
void SwitchMiscVisibilityAsync();

UniTask ChangeRealmAsync(URLDomain realm, CancellationToken ct);

Expand Down
6 changes: 3 additions & 3 deletions Explorer/Assets/Scripts/Global/Dynamic/RealmNavigator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -406,13 +406,13 @@ private async UniTask GenerateFixedScenesTerrainAsync(AsyncLoadProcessReport lan
}
}

public async UniTask SwitchMiscVisibilityAsync()
public void SwitchMiscVisibilityAsync()
{
bool isGenesis = IsGenesisRealm();

RealmChanged?.Invoke(isGenesis);
mapRenderer.SetSharedLayer(MapLayer.PlayerMarker, isGenesis);
await satelliteFloor.SwitchVisibilityAsync(isGenesis);
satelliteFloor.SetCurrentlyInGenesis(isGenesis);
roadsPlugin.RoadAssetPool?.SwitchVisibility(isGenesis);
}

Expand Down Expand Up @@ -446,7 +446,7 @@ public async UniTask ChangeRealmAsync(URLDomain realm, CancellationToken ct)
{
await realmController.SetRealmAsync(realm, ct);
currentRealm = realm;
await SwitchMiscVisibilityAsync();
SwitchMiscVisibilityAsync();
}

private bool IsGenesisRealm() =>
Expand Down

0 comments on commit a91a083

Please sign in to comment.