Beispiel #1
0
        public float GetGroupPriority(int frameCountWithoutSync, MyClientInfo forClient)
        {
            ProfilerShort.Begin("MyStreamingEntityStateGroup::GetGroupPriority");

            StreamClientData clientData = m_clientStreamData[forClient.EndpointId.Value];

            if (forClient.IsReplicableReady(Instance as IMyReplicable))
            {
                clientData.CurrentPart = 0;
                clientData.ForceSend   = false;
                clientData.ObjectData  = null;
                clientData.FailedIncompletePackets.Clear();
                clientData.SendPackets.Clear();
                ProfilerShort.End();
                return(0.0f);
            }

            float priority = forClient.HasReplicable(Instance as IMyReplicable) && clientData.Dirty ? Instance.GetPriority(forClient, false) * Instance.PriorityScale() : 0.0f;

            if (priority < 0.01f && (clientData.ForceSend || clientData.FailedIncompletePackets.Count > 0))
            {
                priority = Instance.PriorityScale();
            }

            ProfilerShort.End();
            return(priority);
        }