Exemplo n.º 1
0
        protected override void OnUpdate()
        {
            if (m_TimeData == null)
            {
                // Look for a valid Time reference (NB: assumes one UnityInstance!)
                foreach (var world in World.All)
                {
                    var timeSystem = world.GetExistingSystem <UpdateWorldTimeSystem>();
                    if (timeSystem == null)
                    {
                        continue;
                    }
                    m_TimeData = timeSystem.m_TimeData;
                    break;
                }

                if (m_TimeData == null)
                {
                    throw new Exception(
                              "UpdateWorldTimeSystem must either be disabled "
                              + "or initialized with SetInstanceTime(TimeData*) before use.");
                }
            }

            // If elapsed time starts from a non-zero point in time, it can break assumptions made in other code
            // (with Entities fixed time stepping logic being a prime example). Even if our code is protected against
            // this, users will often expect elapsed time to accumulate from 0.
            World.SetTime(*m_TimeData);
        }
Exemplo n.º 2
0
        private UnityInstance()
        {
            m_World = DefaultWorldInitialization.Initialize("Default World");

            m_BootPhase     = BootPhase.Booting;
            m_RunState      = RunState.Resuming;
            m_EntityManager = m_World.EntityManager;

            m_StartTimeInSeconds           = 0;
            m_ElapsedTimeInSeconds         = 0;
            m_PreviousElapsedTimeInSeconds = 0;

            m_SceneSystemGroup = m_World.GetOrCreateSystem <SceneSystemGroup>();
            m_SceneSystem      = m_World.GetOrCreateSystem <SceneSystem>();

            m_TimeData = (TimeData *)UnsafeUtility.Malloc(
                UnsafeUtility.SizeOf <TimeData>(),
                0,
                Collections.Allocator.Persistent);
        }
Exemplo n.º 3
0
        private UnityInstance()
        {
            m_World = DefaultWorldInitialization.Initialize("Default World");

            m_BootPhase     = BootPhase.Booting;
            m_RunState      = RunState.Resuming;
            m_EntityManager = m_World.EntityManager;

            m_StartTimeInSeconds           = 0;
            m_ElapsedTimeInSeconds         = 0;
            m_PreviousElapsedTimeInSeconds = 0;

            // try to find SceneSystemGroup in worlds
            foreach (var w in World.All)
            {
                m_SceneSystemGroup = w.GetExistingSystem <SceneSystemGroup>();
                m_SceneSystem      = w.GetExistingSystem <SceneSystem>();

                if (m_SceneSystemGroup != null)
                {
                    break;
                }
            }

            // if cannot find - create in the default world
            if (m_SceneSystemGroup == null)
            {
                m_SceneSystemGroup = m_World.GetOrCreateSystem <SceneSystemGroup>();
                m_SceneSystem      = m_World.GetOrCreateSystem <SceneSystem>();
            }

            m_TimeData = (TimeData *)UnsafeUtility.Malloc(
                UnsafeUtility.SizeOf <TimeData>(),
                0,
                Collections.Allocator.Persistent);
        }
Exemplo n.º 4
0
 internal void SetInstanceTime(TimeData *timeData)
 {
     m_TimeData = timeData;
 }