Пример #1
0
            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));;
            }
        }
Пример #2
0
            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)));
            }
        }
Пример #3
0
    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++;
        }
    }
Пример #4
0
    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++;
        }
    }
Пример #6
0
 private void Awake()
 {
     Instance = this;
     levelCurrentBuildIndex = SceneManager.GetActiveScene().buildIndex;
     levelIndex             = System.Array.IndexOf(levelBuildIndexes, levelCurrentBuildIndex);
 }