예제 #1
0
    protected override JobHandle OnUpdate(JobHandle inputDeps)
    {
        var sendJob = new CommandSendJob
        {
            driver               = m_ReceiveSystem.ConcurrentDriver,
            unreliablePipeline   = m_ReceiveSystem.UnreliablePipeline,
            connectionFromEntity = GetComponentDataFromEntity <NetworkStreamConnection>(),
            ackSnapshot          = GetComponentDataFromEntity <NetworkSnapshotAckComponent>(),
            inputFromEntity      = GetBufferFromEntity <TCommandData>(),
            localTime            = NetworkTimeSystem.TimestampMS,
            inputTargetTick      = NetworkTimeSystem.predictTargetTick
        };

        return(sendJob.ScheduleSingle(this, inputDeps));
    }
예제 #2
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);
        }