移除水

This commit is contained in:
2025-06-21 21:58:06 +08:00
parent d61516a576
commit e9f76d0f11
1566 changed files with 9218 additions and 300913 deletions

View File

@@ -1,97 +0,0 @@
// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
using UnityEngine;
namespace WaveHarmonic.Crest
{
/// <summary>
/// This time provider fixes the water time at a custom value which is usable for testing/debugging.
/// </summary>
[AddComponentMenu(Constants.k_MenuPrefixTime + "Custom Time Provider")]
[@HelpURL("Manual/TimeProviders.html#supporting-pause")]
public sealed partial class CustomTimeProvider : TimeProvider
{
[SerializeField, HideInInspector]
#pragma warning disable 414
int _Version = 0;
#pragma warning restore 414
[Tooltip("Freeze progression of time. Only works properly in Play mode.")]
[@GenerateAPI]
[SerializeField]
bool _Paused = false;
[Tooltip("Whether to override the water simulation time.")]
[@GenerateAPI]
[SerializeField]
bool _OverrideTime = false;
[Tooltip("The time override value.")]
[@Predicated(nameof(_OverrideTime))]
[@GenerateAPI(name: "TimeOverride")]
[@DecoratedField, SerializeField]
float _Time = 0f;
[Tooltip("Whether to override the water simulation time.\n\nThis in particular affects dynamic elements of the simulation like the foam simulation and the ripple simulation.")]
[@GenerateAPI]
[SerializeField]
bool _OverrideDeltaTime = false;
[Tooltip("The delta time override value.")]
[@Predicated(nameof(_OverrideDeltaTime))]
[@GenerateAPI]
[@DecoratedField, SerializeField]
float _DeltaTime = 0f;
readonly DefaultTimeProvider _DefaultTimeProvider = new();
float _TimeInternal = 0f;
private protected override void OnEnable()
{
base.OnEnable();
// May as well start on the same time value as unity
_TimeInternal = UnityEngine.Time.time;
}
void Update()
{
// Use default TP delta time to update our time, because this dt works
// well in edit mode
if (!_Paused)
{
_TimeInternal += _DefaultTimeProvider.Delta;
}
}
/// <inheritdoc/>
public override float Time
{
get
{
// Override means override
if (_OverrideTime)
{
return _Time;
}
// In edit mode, update is seldom called, so rely on the default TP
#if UNITY_EDITOR
if (!Application.isPlaying && !_Paused)
{
return _DefaultTimeProvider.Time;
}
#endif
// Otherwise use our accumulated time
return _TimeInternal;
}
}
// Either use override, or the default TP which works in edit mode
/// <inheritdoc/>
public override float Delta => _OverrideDeltaTime ? _DeltaTime : _DefaultTimeProvider.Delta;
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: bc21fdc0db7e149fdb0391bc461bcd87
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,113 +0,0 @@
// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
using UnityEngine;
using UnityEngine.Playables;
namespace WaveHarmonic.Crest
{
/// <summary>
/// This time provider feeds a Timeline time to the water system, using a Playable Director.
/// </summary>
[AddComponentMenu(Constants.k_MenuPrefixTime + "Cutscene Time Provider")]
[@HelpURL("Manual/TimeProviders.html#timelines-and-cutscenes")]
public sealed partial class CutsceneTimeProvider : TimeProvider
{
[SerializeField, HideInInspector]
#pragma warning disable 414
int _Version = 0;
#pragma warning restore 414
#if d_ModuleUnityDirector
[Tooltip("Playable Director to take time from.")]
[@GenerateAPI(symbol: "d_ModuleUnityDirector")]
[SerializeField]
internal PlayableDirector _PlayableDirector;
#endif
[Tooltip("Time offset which will be added to the Timeline time.")]
[@GenerateAPI]
[SerializeField]
float _TimeOffset = 0f;
[Tooltip("Assign this time provider to the water system when this component becomes active.")]
[@GenerateAPI]
[SerializeField]
bool _AssignToWaterComponentOnEnable = true;
[Tooltip("Restore the time provider that was previously assigned to water system when this component disables.")]
[@GenerateAPI]
[SerializeField]
bool _RestorePreviousTimeProviderOnDisable = true;
readonly DefaultTimeProvider _FallbackTimeProvider = new();
bool _Attached = false;
private protected override void OnDisable()
{
base.OnDisable();
var water = WaterRenderer.Instance;
if (_RestorePreviousTimeProviderOnDisable && _Attached && water != null)
{
water.TimeProviders.Pop(this);
}
_Attached = false;
}
private protected override System.Action<WaterRenderer> OnEnableMethod => Attach;
void Attach(WaterRenderer water)
{
if (_Attached) return;
#if d_ModuleUnityDirector
if (_PlayableDirector == null) return;
#endif
if (_AssignToWaterComponentOnEnable && water)
{
water.TimeProviders.Push(this);
}
_Attached = true;
}
/// <remarks>
/// If there is a PlayableDirector which is playing, return its time, otherwise use
/// the <see cref="TimeProvider"/> being used before this component initialised,
/// else fallback to a default <see cref="TimeProvider"/>.
/// </remarks>
/// <inheritdoc/>
public override float Time
{
get
{
#if d_ModuleUnityDirector
if (_PlayableDirector != null
&& _PlayableDirector.isActiveAndEnabled
&& (!Application.isPlaying || _PlayableDirector.state == PlayState.Playing))
{
return (float)_PlayableDirector.time + _TimeOffset;
}
#endif
// Use a fallback TP
return _FallbackTimeProvider.Time;
}
}
/// <inheritdoc/>
public override float Delta => UnityEngine.Time.deltaTime;
#if UNITY_EDITOR
[@OnChange]
void OnChange(string propertyPath, object previousValue)
{
if (!isActiveAndEnabled) return;
// Try to attach on change.
Attach(WaterRenderer.Instance);
}
#endif
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: b6d1a5ea192714d488d3edff0cdfc51f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,51 +0,0 @@
// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
namespace WaveHarmonic.Crest
{
/// <summary>
/// Default time provider - sets the water time to Unity's game time.
/// </summary>
sealed class DefaultTimeProvider : ITimeProvider
{
public float Time
{
get
{
#if UNITY_EDITOR
if (UnityEngine.Application.isPlaying)
{
return UnityEngine.Time.time;
}
else
{
return WaterRenderer.LastUpdateEditorTime;
}
#else
return UnityEngine.Time.time;
#endif
}
}
public float Delta
{
get
{
#if UNITY_EDITOR
if (UnityEngine.Application.isPlaying)
{
return UnityEngine.Time.deltaTime;
}
else
{
return 1f / 20f;
}
#else
return UnityEngine.Time.deltaTime;
#endif
;
}
}
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 8182878ea3609401dbda036c252b24da
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,39 +0,0 @@
// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
using UnityEngine;
namespace WaveHarmonic.Crest
{
/// <summary>
/// Gives a time to Crest with a custom time offset.
/// </summary>
/// <remarks>
/// Assign this component to the <see cref="WaterRenderer"/> component and set the
/// <see cref="TimeOffsetToServer"/> property of this component to the delta from
/// this client's time to the shared server time.
/// </remarks>
[AddComponentMenu(Constants.k_MenuPrefixTime + "Networked Time Provider")]
[@HelpURL("Manual/TimeProviders.html#network-synchronisation")]
public sealed class NetworkedTimeProvider : TimeProvider
{
[SerializeField, HideInInspector]
#pragma warning disable 414
int _Version = 0;
#pragma warning restore 414
/// <summary>
/// If Time.time on this client is 1.5s ahead of the shared/server Time.time, set
/// this field to -1.5.
/// </summary>
public float TimeOffsetToServer { get; set; }
readonly DefaultTimeProvider _DefaultTimeProvider = new();
/// <inheritdoc/>
public override float Time => _DefaultTimeProvider.Time + TimeOffsetToServer;
/// <inheritdoc/>
public override float Delta => _DefaultTimeProvider.Delta;
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: a678a2450d1c34c838e465cc0581d0f6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,38 +0,0 @@
// Crest Water System
// Copyright © 2024 Wave Harmonic. All rights reserved.
using WaveHarmonic.Crest.Internal;
namespace WaveHarmonic.Crest
{
/// <summary>
/// Base class for scripts that provide the time to the water system.
/// </summary>
/// <remarks>
/// See derived classes for examples.
/// </remarks>
public interface ITimeProvider
{
/// <summary>
/// Current time.
/// </summary>
float Time { get; }
/// <summary>
/// Delta time.
/// </summary>
float Delta { get; }
}
/// <inheritdoc/>
[@ExecuteDuringEditMode]
[@HelpURL("Manual/TimeProviders.html")]
public abstract class TimeProvider : ManagedBehaviour<WaterRenderer>, ITimeProvider
{
/// <inheritdoc/>
public abstract float Time { get; }
/// <inheritdoc/>
public abstract float Delta { get; }
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: f4dfdc79ebe2543e1a48acb408acec16
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: