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 Create(PlayableGraph graph, GameObject prefabGameObject, Transform parentTransform) { ScriptPlayable scriptPlayable; if (prefabGameObject == null) { scriptPlayable = ScriptPlayable.Null; } else { ScriptPlayable scriptPlayable2 = ScriptPlayable.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(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; } }