scripts
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user