protected override void ProcessReceivedComponent(ReceivedNetworkComponentEvent received) { TEvent newEvent; var receivedEvent = NetworkConfig.Data.Serializator.GetComponentFromBytes <TEvent>(received.ComponentBytes); EcsWorld.CreateEntityWith(out newEvent); NewToOldConverter(receivedEvent, newEvent); }
private void ReceiveEvent(NetworkStream stream) { var receivedEvent = new ReceivedNetworkComponentEvent { ComponentTypeUid = stream.ReadShort(), ComponentFlags = (EcsNetComponentFlags)stream.ReadByte() }; short eventSize = stream.ReadShort(); byte[] eventBytes = new byte[eventSize]; stream.Read(eventBytes, 0, eventSize); receivedEvent.ComponentBytes = eventBytes; _receivedComponents.Add(receivedEvent); }
protected override void ProcessReceivedComponent(ReceivedNetworkComponentEvent received) { TComponent oldComponent; long networkEntity = received.NetworkEntityUid; bool localEntityExist = NetworkConfig.Data.NetworkEntitiesToLocal.ContainsKey(networkEntity); int localEntity; bool componentWasRemoved = received.ComponentFlags.HasFlag(EcsNetComponentFlags.WAS_REMOVED); if (componentWasRemoved && !localEntityExist) { #if DEBUG throw new Exception(string.Format("Attempt to remove {0} for non exist local entity", typeof(TComponent).Name)); #endif return; } if (localEntityExist) { localEntity = NetworkConfig.Data.NetworkEntitiesToLocal[received.NetworkEntityUid]; bool isNew; oldComponent = EcsWorld.EnsureComponent <TComponent>(localEntity, out isNew); } else { localEntity = EcsWorld.CreateEntityWith(out oldComponent); EcsWorld.CreateEntityWith <NewEntityReceivedEvent>().LocalEntity = localEntity; AddNetworkToLocalEntity(received.NetworkEntityUid, localEntity); } if (componentWasRemoved) { EcsWorld.RemoveComponent <TComponent>(localEntity); if (EcsWorld.IsEntityExists(localEntity)) { return; } RemoveNetworkToLocalEntity(networkEntity, localEntity); } else { var newComponent = NetworkConfig.Data.Serializator.GetComponentFromBytes <TComponent>(received.ComponentBytes); NewToOldConverter(newComponent, oldComponent); } }
private void ReceiveComponent(NetworkStream stream, long networkEntity) { var receivedNetworkComponent = new ReceivedNetworkComponentEvent { NetworkEntityUid = networkEntity, ComponentTypeUid = stream.ReadShort(), ComponentFlags = (EcsNetComponentFlags)stream.ReadByte() }; short componentSize = stream.ReadShort(); byte[] componentBytes = new byte[componentSize]; stream.Read(componentBytes, 0, componentSize); receivedNetworkComponent.ComponentBytes = componentBytes; _receivedComponents.Add(receivedNetworkComponent); }
protected abstract void ProcessReceivedComponent(ReceivedNetworkComponentEvent receivedComponent);