public bool EnableChildAgents(UUID AgentID, ulong requestingRegion, int DrawDistance, AgentCircuitData circuit) { int count = 0; bool informed = true; INeighborService neighborService = m_registry.RequestModuleInterface <INeighborService>(); if (neighborService != null) { int x, y; Util.UlongToInts(requestingRegion, out x, out y); GridRegion ourRegion = m_registry.RequestModuleInterface <IGridService>().GetRegionByPosition(UUID.Zero, x, y); if (ourRegion == null) { m_log.Info("[AgentProcessing]: Failed to inform neighbors about new agent, could not find our region."); return(false); } List <GridRegion> neighbors = neighborService.GetNeighbors(ourRegion, DrawDistance); foreach (GridRegion neighbor in neighbors) { //m_log.WarnFormat("--> Going to send child agent to {0}, new agent {1}", neighbour.RegionName, newAgent); if (neighbor.RegionHandle != requestingRegion) { string reason; AgentCircuitData regionCircuitData = circuit.Copy(); regionCircuitData.child = true; //Fix child agent status if (!InformClientOfNeighbor(AgentID, requestingRegion, regionCircuitData, neighbor, (uint)TeleportFlags.Default, null, out reason)) { informed = false; } } count++; } } return(informed); }
public bool EnableChildAgents(int DrawDistance, GridRegion[] neighbors, AgentCircuitData circuit, uint TeleportFlags, AgentData data, byte[] IPAddress, int Port) { int count = 0; bool informed = true; foreach (GridRegion neighbor in neighbors) { //m_log.WarnFormat("--> Going to send child agent to {0}, new agent {1}", neighbour.RegionName, newAgent); if (neighbor.RegionHandle != m_service.RegionHandle) { byte[] endAddress = IPAddress; int endPort = Port; if (endAddress == null) { //We need to find the IP then IPEndPoint endPoint = neighbor.ExternalEndPoint; endAddress = endPoint.Address.GetAddressBytes(); endPort = endPoint.Port; } if (!InformClientOfNeighbor(circuit.Copy(), neighbor, TeleportFlags, data, endAddress, endPort)) informed = false; } count++; } return informed; }
public bool EnableChildAgents(int DrawDistance, AgentCircuitData circuit) { int count = 0; bool informed = true; INeighborService neighborService = m_service.Registry.RequestModuleInterface<INeighborService>(); if (neighborService != null) { uint x, y; Utils.LongToUInts(m_service.RegionHandle, out x, out y); GridRegion ourRegion = m_service.Registry.RequestModuleInterface<IGridService>().GetRegionByPosition(UUID.Zero, (int)x, (int)y); if (ourRegion == null) { m_log.Info("[EQMService]: Failed to inform neighbors about new agent, could not find our region. "); return false; } List<GridRegion> neighbors = neighborService.GetNeighbors(ourRegion, DrawDistance); foreach (GridRegion neighbor in neighbors) { //m_log.WarnFormat("--> Going to send child agent to {0}, new agent {1}", neighbour.RegionName, newAgent); if (neighbor.RegionHandle != m_service.RegionHandle) { if (!InformClientOfNeighbor(circuit.Copy(), neighbor, (uint)TeleportFlags.Default, null)) informed = false; } count++; } } return informed; }