public ICircuit UseSimCircuit(IPEndPoint ep, UUID sessionID, SceneInterface thisScene, UUID remoteSceneID, uint circuitcode, GridVector remoteLocation, Vector3 remoteOffset) { var circuit = new SimCircuit(this, circuitcode, remoteSceneID, sessionID, remoteLocation, remoteOffset) { Scene = thisScene }; AddCircuit(circuit); var useCircuitCode = new UseCircuitCode { SessionID = sessionID, AgentID = thisScene.ID, CircuitCode = circuitcode }; circuit.SendMessage(useCircuitCode); return(circuit); }
public static void HandleSimCircuitRequest(HttpRequest req, ConfigurationLoader loader) { if (req.ContainsHeader("X-SecondLife-Shard")) { req.ErrorResponse(HttpStatusCode.MethodNotAllowed, "Request source not allowed"); return; } if (req.Method != "POST") { req.ErrorResponse(HttpStatusCode.MethodNotAllowed, "Method not allowed"); return; } Map reqmap; try { reqmap = LlsdXml.Deserialize(req.Body) as Map; } catch { req.ErrorResponse(HttpStatusCode.BadRequest, "Bad Request"); return; } if (reqmap == null) { req.ErrorResponse(HttpStatusCode.BadRequest, "Bad Request"); return; } var regionID = reqmap["to_region_id"].AsUUID; var fromRegionID = reqmap["from_region_id"].AsUUID; SceneInterface scene; try { scene = loader.Scenes[regionID]; } catch { req.ErrorResponse(HttpStatusCode.BadRequest, "Bad Request"); return; } var gridService = scene.GridService; if (gridService == null) { req.ErrorResponse(HttpStatusCode.BadRequest, "Bad Request"); return; } RegionInfo regionInfo; try { regionInfo = gridService[fromRegionID]; } catch { req.ErrorResponse(HttpStatusCode.BadRequest, "Bad Request"); return; } var sessionID = UUID.Random; uint circuitCode = NewCircuitCode; Vector3 remoteOffset = regionInfo.Location - scene.GridPosition; var udpServer = (UDPCircuitsManager)scene.UDPServer; var circuit = new SimCircuit(udpServer, circuitCode, fromRegionID, sessionID, regionInfo.Location, remoteOffset); udpServer.AddCircuit(circuit); var resmap = new Map { { "circuit_code", circuitCode }, { "session_id", sessionID } }; using (var res = req.BeginResponse("application/llsd+xml")) { using (var o = res.GetOutputStream()) { LlsdXml.Serialize(resmap, o); } } }
public ChildAgentUpdater(SimCircuit circuit, uint viewercircuitcode) { m_Circuit = circuit; m_ViewerCircuitCode = viewercircuitcode; }