internal static unsafe void Invoke(IntPtr obj, LevelSequence InSequence) { long *p = stackalloc long[] { 0L, 0L }; byte *b = (byte *)p; *((IntPtr *)(b + 0)) = InSequence; Main.GetProcessEvent(obj, SetSequence_ptr, new IntPtr(p));; } }
internal static unsafe (LevelSequenceActor, LevelSequencePlayer) Invoke(UObject WorldContextObject, LevelSequence LevelSequence, MovieSceneSequencePlaybackSettings Settings) { long *p = stackalloc long[] { 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L }; byte *b = (byte *)p; *((IntPtr *)(b + 0)) = WorldContextObject; *((IntPtr *)(b + 8)) = LevelSequence; *((MovieSceneSequencePlaybackSettings *)(b + 16)) = Settings; Main.GetProcessEvent(LevelSequencePlayer.DefaultObject, CreateLevelSequencePlayer_ptr, new IntPtr(p));; return(*((IntPtr *)(b + 80)), *((IntPtr *)(b + 88))); } }
void Update() { if (isWaiting) { return; } m_currentTime += Time.deltaTime; while (m_sequenceId < m_orderSequences.Count) { LevelSequence currentSequence = m_orderSequences [m_sequenceId]; if (!started) { if (currentSequence.start == LevelSequence.LevelSequenceStart.WHEN_DONE) { if (!done) { return; } m_currentTime = Time.deltaTime; } else { //m_currentTime -= latestTime; latestTime = 0; } started = true; } while (m_orderId < currentSequence.orders.Count) { LevelOrder currentOrder = currentSequence.orders [m_orderId]; print(currentOrder.when + " " + m_currentTime); if (currentOrder.when > m_currentTime) { return; } latestTime = currentOrder.when; ExecuteOrder(currentOrder); m_orderId++; } started = false; m_sequenceId++; } }
public static void ParseFile(this LevelGenerator levelGenerator, string file) { string[] lines = File.ReadAllLines(file); List <LevelSequence> sequences = levelGenerator.m_OrderSequences = new List <LevelSequence> (); LevelSequence currentSequence = new LevelSequence(); foreach (string line in lines) { try { string[] words = line.Split(' '); if (words.Length == 0) { continue; } LevelSequence.ELevelSequenceStart type = LevelSequence.Parse(words[0]); //New sequence if (type != LevelSequence.ELevelSequenceStart.ERROR) { if (currentSequence.m_Orders.Count > 0 && currentSequence.m_Start != LevelSequence.ELevelSequenceStart.ERROR) { sequences.Add(currentSequence); } currentSequence = new LevelSequence(type); continue; } //New order LevelOrder order = MakeLevelOrder(words); currentSequence.m_Orders.Add(order); } catch (Exception e) { Debug.LogWarning("Couldn't read line \"" + line + "\" of file \"" + file + "\""); Debug.LogWarning(e.Message); } } if (currentSequence.m_Orders.Count > 0 && currentSequence.m_Start != LevelSequence.ELevelSequenceStart.ERROR) { sequences.Add(currentSequence); } }
void Update() { m_CurrentTime += Time.deltaTime; if (m_SequenceId >= m_OrderSequences.Count) { return; } LevelSequence currentSequence = m_OrderSequences[m_SequenceId]; float latestTime; while (m_OrderId < currentSequence.m_Orders.Count) { LevelOrder currentOrder = currentSequence.m_Orders[m_OrderId]; if (currentOrder.GetTime() > m_CurrentTime) { break; } latestTime = currentOrder.GetTime(); currentOrder.ExecuteOrder(); m_OrderId++; } }
private void Awake() { Instance = this; levelCurrentBuildIndex = SceneManager.GetActiveScene().buildIndex; levelIndex = System.Array.IndexOf(levelBuildIndexes, levelCurrentBuildIndex); }