107 lines
4.0 KiB
C#
107 lines
4.0 KiB
C#
using JetBrains.Annotations;
|
|
using UnityEngine;
|
|
|
|
namespace PrimeTween {
|
|
/// Global PrimeTween configuration.
|
|
[PublicAPI]
|
|
public static partial class PrimeTweenConfig {
|
|
internal static PrimeTweenManager Instance {
|
|
get {
|
|
#if UNITY_EDITOR
|
|
Assert.IsFalse(Constants.noInstance, Constants.editModeWarning);
|
|
#endif
|
|
return PrimeTweenManager.Instance;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// If <see cref="PrimeTweenManager"/> instance is already created, <see cref="SetTweensCapacity"/> will allocate garbage,
|
|
/// so it's recommended to use it when no active gameplay is happening. For example, on game launch or when loading a level.
|
|
/// <para>To set initial capacity before <see cref="PrimeTweenManager"/> is created, call <see cref="SetTweensCapacity"/> from a method
|
|
/// with <see cref="RuntimeInitializeOnLoadMethodAttribute"/> and <see cref="RuntimeInitializeLoadType.BeforeSplashScreen"/>. See example below.</para>
|
|
/// </summary>
|
|
/// <example>
|
|
/// <code>
|
|
/// [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSplashScreen)]
|
|
/// static void beforeSplashScreen() {
|
|
/// PrimeTweenConfig.SetTweensCapacity(42);
|
|
/// }
|
|
/// </code>
|
|
/// </example>
|
|
public static void SetTweensCapacity(int capacity) {
|
|
Assert.IsTrue(capacity >= 0);
|
|
var instance = PrimeTweenManager.Instance; // should use PrimeTweenManager.Instance because Instance property has a built-in null check
|
|
if (instance == null) {
|
|
PrimeTweenManager.customInitialCapacity = capacity;
|
|
} else {
|
|
instance.SetTweensCapacity(capacity);
|
|
}
|
|
}
|
|
|
|
public static Ease defaultEase {
|
|
get => Instance.defaultEase;
|
|
set {
|
|
if (value == Ease.Custom || value == Ease.Default) {
|
|
Debug.LogError("defaultEase can't be Ease.Custom or Ease.Default.");
|
|
return;
|
|
}
|
|
Instance.defaultEase = value;
|
|
}
|
|
}
|
|
|
|
public static UpdateType defaultUpdateType {
|
|
get => new UpdateType(Instance.defaultUpdateType);
|
|
set {
|
|
if (value == UpdateType.Default) {
|
|
Debug.LogError(nameof(defaultUpdateType) + " can't be " + nameof(_UpdateType.Default) + ".");
|
|
return;
|
|
}
|
|
Instance.defaultUpdateType = value.enumValue;
|
|
}
|
|
}
|
|
|
|
public static bool warnTweenOnDisabledTarget {
|
|
set => Instance.warnTweenOnDisabledTarget = value;
|
|
}
|
|
|
|
public static bool warnZeroDuration {
|
|
internal get => Instance.warnZeroDuration;
|
|
set => Instance.warnZeroDuration = value;
|
|
}
|
|
|
|
public static bool warnStructBoxingAllocationInCoroutine {
|
|
set => Instance.warnStructBoxingAllocationInCoroutine = value;
|
|
}
|
|
|
|
public static bool validateCustomCurves {
|
|
set => Instance.validateCustomCurves = value;
|
|
}
|
|
|
|
public static bool warnBenchmarkWithAsserts {
|
|
set => Instance.warnBenchmarkWithAsserts = value;
|
|
}
|
|
|
|
internal const bool defaultUseUnscaledTimeForShakes = false;
|
|
|
|
public static bool warnEndValueEqualsCurrent {
|
|
set => Instance.warnEndValueEqualsCurrent = value;
|
|
}
|
|
|
|
#if PRIME_TWEEN_EXPERIMENTAL
|
|
public
|
|
#endif
|
|
static void ManualUpdate(UpdateType updateType, float? deltaTime = null, float? unscaledDeltaTime = null) {
|
|
Instance.enabled = false;
|
|
Instance.UpdateTweens(updateType.enumValue, deltaTime, unscaledDeltaTime);
|
|
}
|
|
|
|
#if PRIME_TWEEN_EXPERIMENTAL
|
|
public
|
|
#endif
|
|
static void ManualUpdateApplyStartValues(UpdateType updateType) {
|
|
Instance.enabled = false;
|
|
Instance.ApplyStartValues(updateType.enumValue);
|
|
}
|
|
}
|
|
}
|