Asgard.Client.AsgardClient.MergeJitterBuffer C# (CSharp) Метод

MergeJitterBuffer() приватный Метод

private MergeJitterBuffer ( ) : void
Результат void
        private void MergeJitterBuffer()
        {
            var netObjects = _jitterBuffer.Get();
            if (netObjects != null)
            {
                foreach(var netObj in netObjects)
                {
                    var entity = netObj.Item1;
                    var objB = netObj.Item2;

                    if (objB == null)
                    {
                        //TODO : LOG => should never happen
                        continue;
                    }

                    var objType = objB.GetType();
                    var compType = ComponentTypeManager.GetTypeFor(objType);

                    if (netObj.Item2 is DefinitionNetworkObject)
                    {
                        if ((netObj.Item2 as DefinitionNetworkObject).Destroy)
                        {
                            var defObA = entity.GetComponent(compType);
                            if (defObA != null)
                            {
                                var ditem = DataLookupTable.Get(objType.GetTypeInfo());
                                foreach (var prop in ditem.Properties)
                                {
                                    if (prop.ChildProperty != null)
                                    {
                                        prop.UnDefineObject(defObA as NetworkObject, entity);
                                    }
                                }
                                ObjectMapper.UnDefineObject(defObA, entity.UniqueId);
                            }
                            continue;
                        }
                        else
                        {
                            var ditem = DataLookupTable.Get(objType.GetTypeInfo());
                            foreach (var prop in ditem.Properties)
                            {
                                if (prop.ChildProperty != null)
                                {
                                    prop.DefineObject(objB, entity);
                                }
                            }
                            ObjectMapper.DefineObject(objB, entity.UniqueId);

                        }
                    }

                    var objA =  entity.GetComponent(compType);
                    if (objA == null)
                    {
                        objB.Owner = entity;
                        entity.AddComponent(objB as IComponent);
                    }
                    else
                    {
                        var ditem = DataLookupTable.Get(objType.GetTypeInfo());

                        ditem.Merge((NetworkObject)objA, objB);
                    }
                }
            }
        }