Files
.vs
Assets
Library
APIUpdater
Artifacts
Bee
BuildPlayerData
PackageCache
com.unity.collab-proxy@2.5.2
com.unity.editorcoroutines@1.0.0
com.unity.ext.nunit@1.0.6
com.unity.feature.development@1.0.1
com.unity.ide.rider@3.0.31
com.unity.ide.visualstudio@2.0.22
com.unity.ide.vscode@1.2.5
com.unity.modules.ai@1.0.0
com.unity.modules.androidjni@1.0.0
com.unity.modules.animation@1.0.0
com.unity.modules.assetbundle@1.0.0
com.unity.modules.audio@1.0.0
com.unity.modules.cloth@1.0.0
com.unity.modules.director@1.0.0
com.unity.modules.imageconversion@1.0.0
com.unity.modules.imgui@1.0.0
com.unity.modules.jsonserialize@1.0.0
com.unity.modules.particlesystem@1.0.0
com.unity.modules.physics2d@1.0.0
com.unity.modules.physics@1.0.0
com.unity.modules.screencapture@1.0.0
com.unity.modules.subsystems@1.0.0
com.unity.modules.terrain@1.0.0
com.unity.modules.terrainphysics@1.0.0
com.unity.modules.tilemap@1.0.0
com.unity.modules.ui@1.0.0
com.unity.modules.uielements@1.0.0
com.unity.modules.umbra@1.0.0
com.unity.modules.unityanalytics@1.0.0
com.unity.modules.unitywebrequest@1.0.0
com.unity.modules.unitywebrequestassetbundle@1.0.0
com.unity.modules.unitywebrequestaudio@1.0.0
com.unity.modules.unitywebrequesttexture@1.0.0
com.unity.modules.unitywebrequestwww@1.0.0
com.unity.modules.vehicles@1.0.0
com.unity.modules.video@1.0.0
com.unity.modules.vr@1.0.0
com.unity.modules.wind@1.0.0
com.unity.modules.xr@1.0.0
com.unity.performance.profile-analyzer@1.2.2
com.unity.settings-manager@2.0.1
com.unity.test-framework@1.1.33
com.unity.testtools.codecoverage@1.2.6
com.unity.textmeshpro@3.0.6
com.unity.timeline@1.7.6
DocCodeExamples
Documentation~
Editor
Actions
Activation
Analytics
Animation
Attributes
Audio
ControlTrack
CustomEditors
Extensions
AnimatedParameterExtensions.cs
AnimatedParameterExtensions.cs.meta
AnimationTrackExtensions.cs
AnimationTrackExtensions.cs.meta
TrackExtensions.cs
TrackExtensions.cs.meta
Items
Localization
Manipulators
Playables
Properties
Recording
Signals
State
StyleSheets
Undo
Utilities
Window
inspectors
treeview
Actions.meta
Activation.meta
Analytics.meta
Animation.meta
Attributes.meta
Audio.meta
ControlTrack.meta
CurveEditUtility.cs
CurveEditUtility.cs.meta
CustomEditors.meta
DirectorNamedColor.cs
DirectorNamedColor.cs.meta
DirectorStyles.cs
DirectorStyles.cs.meta
Extensions.meta
Items.meta
Localization.meta
Manipulators.meta
MenuPriority.cs
MenuPriority.cs.meta
Playables.meta
Properties.meta
Recording.meta
Shortcuts.cs
Shortcuts.cs.meta
Signals.meta
State.meta
StyleSheets.meta
TimelineEditor.cs
TimelineEditor.cs.meta
TimelineHelpers.cs
TimelineHelpers.cs.meta
TimelineSelection.cs
TimelineSelection.cs.meta
TimelineUtility.cs
TimelineUtility.cs.meta
Tooltip.cs
Tooltip.cs.meta
Trackhead.cs
Trackhead.cs.meta
Undo.meta
Unity.Timeline.Editor.asmdef
Unity.Timeline.Editor.asmdef.meta
UnityEditorInternals.cs
UnityEditorInternals.cs.meta
Utilities.meta
Window.meta
inspectors.meta
treeview.meta
Runtime
Samples~
.signature
CHANGELOG.md
CHANGELOG.md.meta
DocCodeExamples.meta
Editor.meta
LICENSE.md
LICENSE.md.meta
README.md
README.md.meta
Runtime.meta
ValidationExceptions.json
ValidationExceptions.json.meta
package.json
package.json.meta
com.unity.ugui@1.0.0
com.unity.visualscripting@1.9.4
PackageManager
PlayModeViewStates
PlayerDataCache
ScriptAssemblies
Search
ShaderCache
SplashScreenCache
StateCache
UIElements
AnnotationManager
ArtifactDB
ArtifactDB-lock
BuildPlayer.prefs
BuildSettings.asset
EditorOnlyScriptingSettings.json
EditorOnlyVirtualTextureState.json
EditorSnapSettings.asset
EditorUserBuildSettings.asset
InspectorExpandedItems.asset
LastBuild.buildreport
LastSceneManagerSetup.txt
LibraryFormatVersion.txt
MonoManager.asset
SceneVisibilityState.asset
ScriptMapper
ShaderCache.db
SourceAssetDB
SourceAssetDB-lock
SpriteAtlasDatabase.asset
Style.catalog
expandedItems
ilpp.pid
Logs
Packages
ProjectSettings
UserSettings
obj
.vsconfig
Assembly-CSharp.Player.csproj
Assembly-CSharp.csproj
TM1.sln
Unity.CollabProxy.Editor.csproj
Unity.EditorCoroutines.Editor.csproj
Unity.Performance.Profile-Analyzer.Editor.csproj
Unity.PlasticSCM.Editor.csproj
Unity.Rider.Editor.csproj
Unity.Settings.Editor.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Model.csproj
Unity.TestTools.CodeCoverage.Editor.OpenCover.Mono.Reflection.csproj
Unity.TestTools.CodeCoverage.Editor.csproj
Unity.TextMeshPro.Editor.csproj
Unity.TextMeshPro.Player.csproj
Unity.TextMeshPro.csproj
Unity.Timeline.Editor.csproj
Unity.Timeline.Player.csproj
Unity.Timeline.csproj
Unity.VSCode.Editor.csproj
Unity.VisualScripting.Core.Editor.csproj
Unity.VisualScripting.Core.Player.csproj
Unity.VisualScripting.Core.csproj
Unity.VisualScripting.Flow.Editor.csproj
Unity.VisualScripting.Flow.Player.csproj
Unity.VisualScripting.Flow.csproj
Unity.VisualScripting.SettingsProvider.Editor.csproj
Unity.VisualScripting.Shared.Editor.csproj
Unity.VisualScripting.State.Editor.csproj
Unity.VisualScripting.State.Player.csproj
Unity.VisualScripting.State.csproj
Unity.VisualStudio.Editor.csproj
UnityEditor.TestRunner.csproj
UnityEditor.UI.csproj
UnityEngine.TestRunner.Player.csproj
UnityEngine.TestRunner.csproj
UnityEngine.UI.Player.csproj
UnityEngine.UI.csproj
TP_Multimedia/Library/PackageCache/com.unity.timeline@1.7.6/Editor/Extensions/AnimatedParameterExtensions.cs

152 lines
6.4 KiB
C#
Raw Normal View History

2025-01-17 13:10:20 +01:00
using System.Collections.Generic;
using JetBrains.Annotations;
using UnityEngine;
using UnityEngine.Timeline;
namespace UnityEditor.Timeline
{
static class AnimatedParameterExtensions
{
public static bool HasAnyAnimatableParameters(this ICurvesOwner curvesOwner)
{
return AnimatedParameterUtility.HasAnyAnimatableParameters(curvesOwner.asset);
}
public static IEnumerable<SerializedProperty> GetAllAnimatableParameters(this ICurvesOwner curvesOwner)
{
return AnimatedParameterUtility.GetAllAnimatableParameters(curvesOwner.asset);
}
public static bool IsParameterAnimatable(this ICurvesOwner curvesOwner, string parameterName)
{
return AnimatedParameterUtility.IsParameterAnimatable(curvesOwner.asset, parameterName);
}
public static bool IsParameterAnimated(this ICurvesOwner curvesOwner, string parameterName)
{
return AnimatedParameterUtility.IsParameterAnimated(curvesOwner.asset, curvesOwner.curves, parameterName);
}
public static EditorCurveBinding GetCurveBinding(this ICurvesOwner curvesOwner, string parameterName)
{
return AnimatedParameterUtility.GetCurveBinding(curvesOwner.asset, parameterName);
}
public static string GetUniqueRecordedClipName(this ICurvesOwner curvesOwner)
{
return AnimationTrackRecorder.GetUniqueRecordedClipName(curvesOwner.assetOwner, curvesOwner.defaultCurvesName);
}
public static AnimationCurve GetAnimatedParameter(this ICurvesOwner curvesOwner, string bindingName)
{
return AnimatedParameterUtility.GetAnimatedParameter(curvesOwner.asset, curvesOwner.curves, bindingName);
}
public static bool AddAnimatedParameterValueAt(this ICurvesOwner curvesOwner, string parameterName, float value, float time)
{
if (!curvesOwner.IsParameterAnimatable(parameterName))
return false;
if (curvesOwner.curves == null)
curvesOwner.CreateCurves(curvesOwner.GetUniqueRecordedClipName());
var binding = curvesOwner.GetCurveBinding(parameterName);
var curve = AnimationUtility.GetEditorCurve(curvesOwner.curves, binding) ?? new AnimationCurve();
var serializedObject = AnimatedParameterUtility.GetSerializedPlayableAsset(curvesOwner.asset);
var property = serializedObject.FindProperty(parameterName);
bool isStepped = property.propertyType == SerializedPropertyType.Boolean ||
property.propertyType == SerializedPropertyType.Integer ||
property.propertyType == SerializedPropertyType.Enum;
TimelineUndo.PushUndo(curvesOwner.curves, "Set Key");
CurveEditUtility.AddKeyFrameToCurve(curve, time, curvesOwner.curves.frameRate, value, isStepped);
AnimationUtility.SetEditorCurve(curvesOwner.curves, binding, curve);
return true;
}
public static void SanitizeCurvesData(this ICurvesOwner curvesOwner)
{
var curves = curvesOwner.curves;
if (curves == null)
return;
// Remove any 0-length curves
foreach (var binding in AnimationUtility.GetCurveBindings(curves))
{
var curve = AnimationUtility.GetEditorCurve(curves, binding);
if (curve.length == 0)
AnimationUtility.SetEditorCurve(curves, binding, null);
}
// If no curves remain, delete the curves asset
if (curves.empty)
{
var track = curvesOwner.targetTrack;
var timeline = track != null ? track.timelineAsset : null;
TimelineUndo.PushDestroyUndo(timeline, track, curves);
}
}
public static bool AddAnimatedParameter(this ICurvesOwner curvesOwner, string parameterName)
{
var newBinding = new EditorCurveBinding();
SerializedProperty property;
if (!InternalAddParameter(curvesOwner, parameterName, ref newBinding, out property))
return false;
var duration = (float)curvesOwner.duration;
CurveEditUtility.AddKey(curvesOwner.curves, newBinding, property, 0);
CurveEditUtility.AddKey(curvesOwner.curves, newBinding, property, duration);
return true;
}
public static bool RemoveAnimatedParameter(this ICurvesOwner curvesOwner, string parameterName)
{
if (!curvesOwner.IsParameterAnimated(parameterName) || curvesOwner.curves == null)
return false;
var binding = curvesOwner.GetCurveBinding(parameterName);
AnimationUtility.SetEditorCurve(curvesOwner.curves, binding, null);
return true;
}
// Set an animated parameter. Requires the field identifier 'position.x', but will add default curves to all fields
public static bool SetAnimatedParameter(this ICurvesOwner curvesOwner, string parameterName, AnimationCurve curve)
{
// this will add a basic curve for all the related parameters
if (!curvesOwner.IsParameterAnimated(parameterName) && !curvesOwner.AddAnimatedParameter(parameterName))
return false;
var binding = curvesOwner.GetCurveBinding(parameterName);
AnimationUtility.SetEditorCurve(curvesOwner.curves, binding, curve);
return true;
}
static bool InternalAddParameter([NotNull] ICurvesOwner curvesOwner, string parameterName, ref EditorCurveBinding binding, out SerializedProperty property)
{
property = null;
if (curvesOwner.IsParameterAnimated(parameterName))
return false;
var serializedObject = AnimatedParameterUtility.GetSerializedPlayableAsset(curvesOwner.asset);
if (serializedObject == null)
return false;
property = serializedObject.FindProperty(parameterName);
if (property == null || !AnimatedParameterUtility.IsTypeAnimatable(property.propertyType))
return false;
if (curvesOwner.curves == null)
curvesOwner.CreateCurves(curvesOwner.GetUniqueRecordedClipName());
binding = curvesOwner.GetCurveBinding(parameterName);
return true;
}
}
}