Files
2026-06-04 11:42:34 +02:00

128 lines
3.4 KiB
C#

using System;
using System.Collections;
using UnityEngine.Playables;
namespace UnityEngine.Timeline
{
// Token: 0x02000037 RID: 55
public class PrefabControlPlayable : PlayableBehaviour
{
// Token: 0x060001D8 RID: 472 RVA: 0x00009A74 File Offset: 0x00007C74
public static ScriptPlayable<PrefabControlPlayable> Create(PlayableGraph graph, GameObject prefabGameObject, Transform parentTransform)
{
ScriptPlayable<PrefabControlPlayable> scriptPlayable;
if (prefabGameObject == null)
{
scriptPlayable = ScriptPlayable<PrefabControlPlayable>.Null;
}
else
{
ScriptPlayable<PrefabControlPlayable> scriptPlayable2 = ScriptPlayable<PrefabControlPlayable>.Create(graph, 0);
scriptPlayable2.GetBehaviour().Initialize(prefabGameObject, parentTransform);
scriptPlayable = scriptPlayable2;
}
return scriptPlayable;
}
// Token: 0x1700008C RID: 140
// (get) Token: 0x060001D9 RID: 473 RVA: 0x00009AB8 File Offset: 0x00007CB8
public GameObject prefabInstance
{
get
{
return this.m_Instance;
}
}
// Token: 0x060001DA RID: 474 RVA: 0x00009AD4 File Offset: 0x00007CD4
public GameObject Initialize(GameObject prefabGameObject, Transform parentTransform)
{
if (prefabGameObject == null)
{
throw new ArgumentNullException("Prefab cannot be null");
}
if (this.m_Instance != null)
{
Debug.LogWarningFormat("Prefab Control Playable ({0}) has already been initialized with a Prefab ({1}).", new object[]
{
prefabGameObject.name,
this.m_Instance.name
});
}
else
{
this.m_Instance = Object.Instantiate<GameObject>(prefabGameObject, parentTransform, false);
this.m_Instance.name = prefabGameObject.name + " [Timeline]";
this.m_Instance.SetActive(false);
PrefabControlPlayable.SetHideFlagsRecursive(this.m_Instance);
}
return this.m_Instance;
}
// Token: 0x060001DB RID: 475 RVA: 0x00009B87 File Offset: 0x00007D87
public override void OnPlayableDestroy(Playable playable)
{
if (this.m_Instance)
{
if (Application.isPlaying)
{
Object.Destroy(this.m_Instance);
}
else
{
Object.DestroyImmediate(this.m_Instance);
}
}
}
// Token: 0x060001DC RID: 476 RVA: 0x00009BC1 File Offset: 0x00007DC1
public override void OnBehaviourPlay(Playable playable, FrameData info)
{
if (!(this.m_Instance == null))
{
this.m_Instance.SetActive(true);
}
}
// Token: 0x060001DD RID: 477 RVA: 0x00009BE6 File Offset: 0x00007DE6
public override void OnBehaviourPause(Playable playable, FrameData info)
{
if (!(this.m_Instance == null))
{
this.m_Instance.SetActive(false);
}
}
// Token: 0x060001DE RID: 478 RVA: 0x00009C0C File Offset: 0x00007E0C
private static void SetHideFlagsRecursive(GameObject gameObject)
{
gameObject.hideFlags = HideFlags.DontSaveInEditor | HideFlags.DontSaveInBuild;
if (!Application.isPlaying)
{
gameObject.hideFlags |= HideFlags.HideInHierarchy;
}
IEnumerator enumerator = gameObject.transform.GetEnumerator();
try
{
while (enumerator.MoveNext())
{
object obj = enumerator.Current;
Transform transform = (Transform)obj;
PrefabControlPlayable.SetHideFlagsRecursive(transform.gameObject);
}
}
finally
{
IDisposable disposable;
if ((disposable = enumerator as IDisposable) != null)
{
disposable.Dispose();
}
}
}
// Token: 0x040000DD RID: 221
private GameObject m_Instance;
}
}