This commit is contained in:
niko
2026-06-04 11:42:34 +02:00
parent f39ba70a9f
commit e720b98cd1
7488 changed files with 2493818 additions and 0 deletions
+172
View File
@@ -0,0 +1,172 @@
using System;
namespace UnityEngine.Playables
{
// Token: 0x020004C0 RID: 1216
public struct ScriptPlayable<T> : IPlayable, IEquatable<ScriptPlayable<T>> where T : class, IPlayableBehaviour, new()
{
// Token: 0x06003B6C RID: 15212 RVA: 0x00068498 File Offset: 0x00066698
internal ScriptPlayable(PlayableHandle handle)
{
if (handle.IsValid())
{
if (!typeof(T).IsAssignableFrom(handle.GetPlayableType()))
{
throw new InvalidCastException(string.Format("Incompatible handle: Trying to assign a playable data of type `{0}` that is not compatible with the PlayableBehaviour of type `{1}`.", handle.GetPlayableType(), typeof(T)));
}
}
this.m_Handle = handle;
}
// Token: 0x17000D7C RID: 3452
// (get) Token: 0x06003B6D RID: 15213 RVA: 0x000684F8 File Offset: 0x000666F8
public static ScriptPlayable<T> Null
{
get
{
return ScriptPlayable<T>.m_NullPlayable;
}
}
// Token: 0x06003B6E RID: 15214 RVA: 0x00068514 File Offset: 0x00066714
public static ScriptPlayable<T> Create(PlayableGraph graph, int inputCount = 0)
{
PlayableHandle playableHandle = ScriptPlayable<T>.CreateHandle(graph, (T)((object)null), inputCount);
return new ScriptPlayable<T>(playableHandle);
}
// Token: 0x06003B6F RID: 15215 RVA: 0x00068540 File Offset: 0x00066740
public static ScriptPlayable<T> Create(PlayableGraph graph, T template, int inputCount = 0)
{
PlayableHandle playableHandle = ScriptPlayable<T>.CreateHandle(graph, template, inputCount);
return new ScriptPlayable<T>(playableHandle);
}
// Token: 0x06003B70 RID: 15216 RVA: 0x00068564 File Offset: 0x00066764
private static PlayableHandle CreateHandle(PlayableGraph graph, T template, int inputCount)
{
object obj;
if (template == null)
{
obj = ScriptPlayable<T>.CreateScriptInstance();
}
else
{
obj = ScriptPlayable<T>.CloneScriptInstance(template);
}
PlayableHandle playableHandle;
if (obj == null)
{
Debug.LogError("Could not create a ScriptPlayable of Type " + typeof(T).ToString());
playableHandle = PlayableHandle.Null;
}
else
{
PlayableHandle playableHandle2 = graph.CreatePlayableHandle();
if (!playableHandle2.IsValid())
{
playableHandle = PlayableHandle.Null;
}
else
{
playableHandle2.SetInputCount(inputCount);
playableHandle2.SetScriptInstance(obj);
playableHandle = playableHandle2;
}
}
return playableHandle;
}
// Token: 0x06003B71 RID: 15217 RVA: 0x00068604 File Offset: 0x00066804
private static object CreateScriptInstance()
{
IPlayableBehaviour playableBehaviour;
if (typeof(ScriptableObject).IsAssignableFrom(typeof(T)))
{
playableBehaviour = ScriptableObject.CreateInstance(typeof(T)) as T;
}
else
{
playableBehaviour = new T();
}
return playableBehaviour;
}
// Token: 0x06003B72 RID: 15218 RVA: 0x00068670 File Offset: 0x00066870
private static object CloneScriptInstance(IPlayableBehaviour source)
{
Object @object = source as Object;
object obj;
if (@object != null)
{
obj = ScriptPlayable<T>.CloneScriptInstanceFromEngineObject(@object);
}
else
{
ICloneable cloneable = source as ICloneable;
if (cloneable != null)
{
obj = ScriptPlayable<T>.CloneScriptInstanceFromIClonable(cloneable);
}
else
{
obj = null;
}
}
return obj;
}
// Token: 0x06003B73 RID: 15219 RVA: 0x000686C0 File Offset: 0x000668C0
private static object CloneScriptInstanceFromEngineObject(Object source)
{
Object @object = Object.Instantiate(source);
if (@object != null)
{
@object.hideFlags |= HideFlags.DontSave;
}
return @object;
}
// Token: 0x06003B74 RID: 15220 RVA: 0x000686FC File Offset: 0x000668FC
private static object CloneScriptInstanceFromIClonable(ICloneable source)
{
return source.Clone();
}
// Token: 0x06003B75 RID: 15221 RVA: 0x00068718 File Offset: 0x00066918
public PlayableHandle GetHandle()
{
return this.m_Handle;
}
// Token: 0x06003B76 RID: 15222 RVA: 0x00068734 File Offset: 0x00066934
public T GetBehaviour()
{
return this.m_Handle.GetObject<T>();
}
// Token: 0x06003B77 RID: 15223 RVA: 0x00068754 File Offset: 0x00066954
public static implicit operator Playable(ScriptPlayable<T> playable)
{
return new Playable(playable.GetHandle());
}
// Token: 0x06003B78 RID: 15224 RVA: 0x00068778 File Offset: 0x00066978
public static explicit operator ScriptPlayable<T>(Playable playable)
{
return new ScriptPlayable<T>(playable.GetHandle());
}
// Token: 0x06003B79 RID: 15225 RVA: 0x0006879C File Offset: 0x0006699C
public bool Equals(ScriptPlayable<T> other)
{
return this.GetHandle() == other.GetHandle();
}
// Token: 0x040011E6 RID: 4582
private PlayableHandle m_Handle;
// Token: 0x040011E7 RID: 4583
private static readonly ScriptPlayable<T> m_NullPlayable = new ScriptPlayable<T>(PlayableHandle.Null);
}
}