移除水
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc21fdc0db7e149fdb0391bc461bcd87
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b6d1a5ea192714d488d3edff0cdfc51f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8182878ea3609401dbda036c252b24da
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a678a2450d1c34c838e465cc0581d0f6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f4dfdc79ebe2543e1a48acb408acec16
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user