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"); } }
public void FireEvent_OnWorldEntityDisco(object source, NetworkWorldEntityDiscoArgs args) => OnWorldEntityDisco?.Invoke(source, args);