Example #1
0
 public void UpdateEntityData(INetworkingEntity entity, string key, MValue value)
 {
     lock (entity.StreamedInClients)
     {
         if (entity.StreamedInClients.Count <= 0)
         {
             return;
         }
         var entityDataChangeEvent = new EntityDataChangeEvent {
             Id = entity.Id, Key = key, Value = value
         };
         var serverEvent = new ServerEvent {
             DataChange = entityDataChangeEvent
         };
         var bytes = serverEvent.ToByteArray();
         foreach (var streamedInClient in entity.StreamedInClients)
         {
             lock (streamedInClient)
             {
                 if (streamedInClient.Exists)
                 {
                     streamedInClient.WebSocket?.SendAsync(bytes, true);
                 }
             }
         }
     }
 }
Example #2
0
 public bool TryGet(ulong id, out INetworkingEntity entity)
 {
     lock (entities)
     {
         return(entities.TryGetValue(id, out entity));
     }
 }
Example #3
0
        public void CreateEntity(INetworkingEntity networkingEntity)
        {
            if (networkingEntity.StreamingType == StreamingType.EntityStreaming)
            {
                return;
            }

            byte[] bytes;
            if (networkingEntity.StreamingType == StreamingType.DataStreaming)
            {
                // Remove data before sending it over the wire
                var entityWithoutData = networkingEntity.StreamedEntity.Clone();
                entityWithoutData.Data.Clear();

                var entityCreateEvent = new EntityCreateEvent {
                    Entity = entityWithoutData
                };
                var serverEvent = new ServerEvent {
                    Create = entityCreateEvent
                };
                bytes = serverEvent.ToByteArray();
            }
            else
            {
                var entityCreateEvent = new EntityCreateEvent {
                    Entity = networkingEntity.StreamedEntity
                };
                var serverEvent = new ServerEvent {
                    Create = entityCreateEvent
                };
                bytes = serverEvent.ToByteArray();
            }

            AltNetworking.Module.ClientPool.SendToAll(bytes);
        }
Example #4
0
        public bool Add(INetworkingEntity entity)
        {
            lock (entities)
            {
                if (entities.TryAdd(entity.Id, entity))
                {
                    OnAdd(entity);
                    return(true);
                }
            }

            return(false);
        }
Example #5
0
 public virtual async Task OnRemove(INetworkingEntity entity)
 {
     try
     {
         await AltNetworking.Module.Streamer.RemoveEntity(entity);
     }
     catch (Exception exception)
     {
         Console.WriteLine(exception);
     }
     finally
     {
         idProvider.Free(entity.Id);
     }
 }
        public async Task RemoveEntity(INetworkingEntity networkingEntity)
        {
            if (networkingEntity.StreamingType == StreamingType.EntityStreaming)
            {
                return;
            }

            var entityDeleteEvent = new EntityDeleteEvent {
                Id = networkingEntity.StreamedEntity.Id
            };
            var serverEvent = new ServerEvent {
                Delete = entityDeleteEvent
            };
            var bytes = serverEvent.ToByteArray();
            await AltNetworking.Module.ClientPool.SendToAllTask(bytes);
        }
 public bool VerifyPosition(INetworkingClient client, INetworkingEntity entity, bool inRange)
 {
     // Can be extended when more trustful position checking is needed
     return(true);
 }
 public bool VerifyPosition(INetworkingClient client, INetworkingEntity entity, bool inRange)
 {
     return(true);
 }
Example #9
0
 public virtual void OnRemove(INetworkingEntity entity)
 {
     AltNetworking.Module.Streamer.RemoveEntity(entity);
 }
Example #10
0
 public virtual void OnAdd(INetworkingEntity entity)
 {
     AltNetworking.Module.Streamer.CreateEntity(entity);
 }
Example #11
0
 public void Remove(INetworkingEntity entity) => Remove(entity.Id);
Example #12
0
 public Task Remove(INetworkingEntity entity) => Remove(entity.Id);