using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class WorldTimelineManager : MonoBehaviour { public static WorldTimelineManager Instance; [Header("Original Panels to Snapshot")] public GameObject newEmailReceived; public GameObject EmailListPanel; public GameObject OpenedEmailPanel; public GameObject DataStolen; [Header("Timeline Canvas (World Space)")] public Transform timelineParent; public float panelSpacing = 2f; [Header("Playback Settings")] public float frameDelay = 1.0f; public bool loopPlayback = true; private List playbackFrames = new List(); private Coroutine playbackCoroutine; private void Awake() { Instance = this; } public void SnapshotCurrentSequence() { UserActionLogger.Instance.ShowSummary(); ClearPlaybackFrames(); CloneAndAddToTimeline(newEmailReceived); CloneAndAddToTimeline(EmailListPanel); if (OpenedEmailPanel != null) { CloneAndAddToTimeline(OpenedEmailPanel); } CloneAndAddToTimeline(DataStolen); PlayTimelineLoop(); } private void CloneAndAddToTimeline(GameObject original) { if (original == null) return; GameObject clone = Instantiate(original, timelineParent); clone.transform.localScale = original.transform.localScale; clone.transform.localRotation = Quaternion.identity; clone.transform.localPosition = Vector3.zero; //clone.transform.localPosition = Vector3.right * panelSpacing * playbackFrames.Count; clone.SetActive(false); DisableButtons(clone); playbackFrames.Add(clone); } private void DisableButtons(GameObject root) { foreach (Button btn in root.GetComponentsInChildren