Use reactive player settings in volume clouds

This commit is contained in:
Meta Vens 2026-06-28 16:12:35 +01:00
commit 692fc6e2b1
2 changed files with 9 additions and 8 deletions

View file

@ -7457,8 +7457,8 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
"VolumeCloudRenderer.cs"));
var requiredVolumeCloudSymbols = new[]
{
"AetheriaRuntimePlayerSettingsSession _playerSettings",
".ObservePlayer()",
"CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings",
".ReactivePlayer()",
"_playerSettings?.Dispose()",
"_playerSettings?.Current"
};
@ -7468,15 +7468,15 @@ static void RequireUnitySharedDocumentAccessorErgonomics(string root)
if (missingVolumeCloudSymbols.Length > 0)
{
throw new InvalidOperationException(
"VolumeCloudRenderer should read player settings through AetheriaRuntimePlayerSettingsSession: " +
"VolumeCloudRenderer should read player settings through a managed reactive typed document: " +
string.Join(", ", missingVolumeCloudSymbols));
}
if (volumeCloudRenderer.Contains("CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings", StringComparison.Ordinal) ||
volumeCloudRenderer.Contains(".ReactivePlayer()", StringComparison.Ordinal))
if (volumeCloudRenderer.Contains("AetheriaRuntimePlayerSettingsSession _playerSettings", StringComparison.Ordinal) ||
volumeCloudRenderer.Contains(".ObservePlayer()", StringComparison.Ordinal))
{
throw new InvalidOperationException(
"VolumeCloudRenderer still owns the raw player-settings CultMesh document instead of AetheriaRuntimePlayerSettingsSession.");
"VolumeCloudRenderer still routes player settings through AetheriaRuntimePlayerSettingsSession instead of the managed reactive typed document.");
}
var observedTargetQuery = File.ReadAllText(Path.Combine(

View file

@ -3,6 +3,7 @@ using System.Linq;
using System.Collections;
using System.Collections.Generic;
using GameCult.Aetheria.State.Verse;
using GameCult.Mesh;
using UnityEngine;
using UnityEngine.Rendering;
@ -53,7 +54,7 @@ public class VolumeCloudRenderer : EffectBase
// The index of 4x4 pixels.
private int frameIndex = 0;
private bool firstFrame = true;
private AetheriaRuntimePlayerSettingsSession _playerSettings;
private CultMeshReactiveDocument<AetheriaRuntimePlayerSettingsDocument> _playerSettings;
[SerializeField]
private Shader cloudShader;
@ -103,7 +104,7 @@ public class VolumeCloudRenderer : EffectBase
_playerSettings = ResolveClient()
.State
.Settings
.ObservePlayer();
.ReactivePlayer();
}
catch (Exception ex)
{