升级6.4.升级水,升级天气
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user