Exemplo n.º 1
0
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
            if (m_NetStats[0] != 0)
            {
                m_GhostStatsCollectionSystem.AddCommandStats(m_NetStats);
                m_NetStats[0] = 0;
                m_NetStats[1] = 0;
            }
#endif
            var targetTick = m_ClientSimulationSystemGroup.ServerTick;
            if (m_ClientSimulationSystemGroup.ServerTickFraction < 1)
            {
                --targetTick;
            }
            // Make sure we only send a single ack per tick - only triggers when using dynamic timestep
            if (targetTick == m_LastServerTick)
            {
                return(inputDeps);
            }
            m_LastServerTick = targetTick;
            var sendJob = new CommandSendJob
            {
                driver             = m_ReceiveSystem.ConcurrentDriver,
                unreliablePipeline = m_ReceiveSystem.UnreliablePipeline,
                inputFromEntity    = GetBufferFromEntity <TCommandData>(true),
                compressionModel   = m_CompressionModel,
                localTime          = NetworkTimeSystem.TimestampMS,
                inputTargetTick    = targetTick,
                interpolationDelay = m_ClientSimulationSystemGroup.ServerTick - m_ClientSimulationSystemGroup.InterpolationTick,
                isNullCommandData  = typeof(TCommandData) == typeof(NullCommandData),
#if UNITY_EDITOR || DEVELOPMENT_BUILD
                netStats = m_NetStats
#endif
            };

            var handle = sendJob.ScheduleSingle(this,
                                                JobHandle.CombineDependencies(inputDeps, m_ReceiveSystem.LastDriverWriter));
            handle = m_ReceiveSystem.Driver.ScheduleFlushSend(handle);
            m_ReceiveSystem.LastDriverWriter = handle;
            return(handle);
        }
        protected override JobHandle OnUpdate(JobHandle inputDeps)
        {
#if UNITY_EDITOR || DEVELOPMENT_BUILD
            if (m_NetStats[0] != 0)
            {
                m_GhostStatsCollectionSystem.AddCommandStats(m_NetStats);
                m_NetStats[0] = 0;
                m_NetStats[1] = 0;
            }
#endif
            var recvJob = new ReceiveJob();
            recvJob.commandData      = GetBufferFromEntity <TCommandData>();
            recvJob.cmdBuffer        = GetBufferFromEntity <IncomingCommandDataStreamBufferComponent>();
            recvJob.compressionModel = m_CompressionModel;
            recvJob.serverTick       = serverSimulationSystemGroup.ServerTick;
#if UNITY_EDITOR || DEVELOPMENT_BUILD
            recvJob.netStats = m_NetStats;
#endif
            return(recvJob.ScheduleSingle(this, inputDeps));
        }