升级6.4.升级水,升级天气

This commit is contained in:
2026-04-05 00:26:54 +08:00
parent 63bc9b5536
commit 5f7cbfb713
635 changed files with 34718 additions and 22567 deletions

View File

@@ -17,20 +17,10 @@ namespace WaveHarmonic.Crest
internal const string k_ProxyShader = "Hidden/Crest/Editor/WaterProxy";
internal GameObject _ProxyPlane;
private protected override bool CanRunInEditMode => !_ShowWaterProxyPlane;
internal static float EditorTime { get; set; }
internal static float EditorDeltaTime { get; set; }
static int s_EditorFrames = 0;
// Useful for rate limiting processes called outside of RunUpdate like camera events.
static int s_EditorFramesSinceUpdate = 0;
static int EditorFramesSinceUpdate => Application.isPlaying ? 0 : s_EditorFramesSinceUpdate;
internal static bool IsWithinEditorUpdate => EditorFramesSinceUpdate == 0;
internal bool IsSceneViewActive { get; set; }
int _LastFrameSceneCamera;
internal Camera _SceneCameraWithMouseHover;
internal bool _CurrentSceneCameraHasMouseHover;
private protected override void Reset()
{
@@ -43,7 +33,7 @@ namespace WaveHarmonic.Crest
}
// Tracks the scene view rendering to determine if a scene camera is active.
void UpdateLastActiveSceneCamera(Camera camera)
void OnBeginSceneCameraRendering(Camera camera)
{
if (camera.cameraType == CameraType.SceneView)
{
@@ -55,39 +45,41 @@ namespace WaveHarmonic.Crest
{
IsSceneViewActive = false;
}
}
static void EditorUpdate()
{
// Do not execute when editor is not active to conserve power and prevent possible leaks.
if (!UnityEditorInternal.InternalEditorUtility.isApplicationActive)
if (camera.cameraType != CameraType.SceneView)
{
return;
}
s_EditorFramesSinceUpdate++;
if (Instance == null) return;
if (!Application.isPlaying)
foreach (SceneView sceneView in SceneView.sceneViews)
{
if ((Time.time - EditorTime) >= (1f / Mathf.Clamp(Instance._EditModeFrameRate, 0.01f, 120f)))
if (sceneView == null)
{
s_EditorFrames++;
s_EditorFramesSinceUpdate = 0;
continue;
}
EditorDeltaTime = Time.time - EditorTime;
EditorTime = Time.time;
if (sceneView.camera != camera)
{
continue;
}
Instance.RunUpdate();
if (sceneView.cameraViewport.Contains(Event.current.mousePosition))
{
_SceneCameraWithMouseHover = sceneView.camera;
_CurrentSceneCameraHasMouseHover = true;
return;
}
}
}
void OnEndSceneCameraRendering(Camera camera)
{
_CurrentSceneCameraHasMouseHover = false;
}
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void OnDomainReload()
{
s_EditorFramesSinceUpdate = 0;
AfterRuntimeLoad();
}
@@ -102,6 +94,10 @@ namespace WaveHarmonic.Crest
{
switch (path)
{
case nameof(_MultipleViewpoints):
case nameof(_EditorMultipleViewpoints):
Rebuild();
break;
case nameof(_ExtentsSizeMultiplier):
case nameof(_GeometryDownSampleFactor):
Surface._Rebuild = true;