Exemplo n.º 1
0
        private void OnWorldEntityDisco(object source, NetworkWorldEntityDiscoArgs args)
        {
            Logger.Debug($"OnWorldEntityDisco :: {args.Guid}");
            Assert.IsTrue(_entities.ContainsKey(args.Guid));
            var entity = _entities[args.Guid];

            Logger.Debug($"Target Entity => {entity}");
            var visible = _entities
                          .Where(kvp => kvp.Key != args.Guid)
                          .Where(kvp => Vector3.Distance(entity.transform.position, kvp.Value.transform.position) < 100.0);

            foreach (var kvp in visible)
            {
                Logger.Debug($"Advertising entity: {kvp.Key}");
                var pos   = kvp.Value.transform.position;
                var disco = new PacketWriter <WorldOpcode>(WorldOpcode.SpawnWorldEntity);
                disco.Write(args.Guid.ToByteArray());
                disco.Write(kvp.Key.ToByteArray());
                disco.Write(pos.x);
                disco.Write(pos.y);
                disco.Write(pos.z);
                var client = (WorldNetworkClient)source;
                client.Send(disco, "239.0.0.0");
            }
        }
Exemplo n.º 2
0
 public void FireEvent_OnWorldEntityDisco(object source, NetworkWorldEntityDiscoArgs args) =>
 OnWorldEntityDisco?.Invoke(source, args);