本文整理汇总了C#中OpenSim.Framework.AgentData.Pack方法的典型用法代码示例。如果您正苦于以下问题:C# AgentData.Pack方法的具体用法?C# AgentData.Pack怎么用?C# AgentData.Pack使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类OpenSim.Framework.AgentData
的用法示例。
在下文中一共展示了AgentData.Pack方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateAgent
public virtual bool CreateAgent(GridRegion destination, ref AgentCircuitData aCircuit, uint teleportFlags, AgentData data, out string reason)
{
reason = String.Empty;
// Try local first
if (m_localBackend.CreateAgent(destination, ref aCircuit, teleportFlags, data, out reason))
return true;
reason = String.Empty;
string uri = MakeUri(destination, true) + aCircuit.AgentID + "/";
try
{
OSDMap args = aCircuit.PackAgentCircuitData();
args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString());
args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString());
args["destination_name"] = OSD.FromString(destination.RegionName);
args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString());
args["teleport_flags"] = OSD.FromString(teleportFlags.ToString());
if(data != null)
args["agent_data"] = data.Pack();
OSDMap result = WebUtils.PostToService (uri, args, true, false);
OSDMap results = WebUtils.GetOSDMap(result["_RawResult"].AsString());
//Pull out the result and set it as the reason
if (results == null)
return false;
reason = results["reason"] != null ? results["reason"].AsString() : "";
if (result["Success"].AsBoolean())
{
//Not right... don't return true except for opensim combatibility :/
if (reason == "")
return true;
try
{
OSDMap responseMap = (OSDMap)OSDParser.DeserializeJson(reason);
if (responseMap.ContainsKey("Reason"))
reason = responseMap["Reason"].AsString();
return responseMap["Success"].AsBoolean();
}
catch
{
//Not right... don't return true except for opensim combatibility :/
return true;
}
}
reason = result["Message"] != null ? result["Message"].AsString() : "error";
return false;
}
catch (Exception e)
{
m_log.Warn("[REMOTE SIMULATION CONNECTOR]: CreateAgent failed with exception: " + e.ToString());
reason = e.Message;
}
return false;
}
示例2: EnableChildAgents
public static OSD EnableChildAgents(int DrawDistance, GridRegion[] neighbors,
AgentCircuitData circuit, uint TeleportFlags, AgentData data, byte[] IPAddress, int Port)
{
OSDMap llsdBody = new OSDMap();
llsdBody.Add("DrawDistance", DrawDistance);
OSDArray regionsArray = new OSDArray();
foreach (GridRegion r in neighbors)
{
regionsArray.Add(r.ToOSD());
}
llsdBody.Add("Regions", regionsArray);
if(IPAddress != null)
llsdBody.Add("IPAddress", IPAddress);
if(Port != 0) //0 is the eqivilent of null
llsdBody.Add("Port", Port);
llsdBody.Add("Circuit", circuit.PackAgentCircuitData());
llsdBody.Add("TeleportFlags", TeleportFlags);
if(data != null)
llsdBody.Add("AgentData", data.Pack());
return buildEvent("EnableChildAgents", llsdBody);
}
示例3: CreateAgent
public virtual bool CreateAgent(GridRegion destination, ref AgentCircuitData aCircuit, uint teleportFlags,
AgentData data, out int requestedUDPPort, out string reason)
{
reason = String.Empty;
// Try local first
if (m_localBackend.CreateAgent(destination, ref aCircuit, teleportFlags, data, out requestedUDPPort,
out reason))
return true;
requestedUDPPort = destination.ExternalEndPoint.Port; //Just make sure..
reason = String.Empty;
string uri = MakeUri(destination, true) + aCircuit.AgentID + "/";
try
{
OSDMap args = aCircuit.PackAgentCircuitData();
args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString());
args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString());
args["destination_name"] = OSD.FromString(destination.RegionName);
args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString());
args["teleport_flags"] = OSD.FromString(teleportFlags.ToString());
if (data != null)
args["agent_data"] = data.Pack();
OSDMap result = WebUtils.PostToService(uri, args, true, false);
OSDMap results = WebUtils.GetOSDMap(result["_RawResult"].AsString());
//Pull out the result and set it as the reason
if (results == null)
return false;
reason = results["reason"] != null ? results["reason"].AsString() : "";
if (result["Success"].AsBoolean())
{
//Not right... don't return true except for opensim combatibility :/
if (reason == "")
return true;
//We were able to contact the region
try
{
//We send the CapsURLs through, so we need these
OSDMap responseMap = (OSDMap) OSDParser.DeserializeJson(reason);
if (responseMap.ContainsKey("Reason"))
reason = responseMap["Reason"].AsString();
if (responseMap.ContainsKey("requestedUDPPort"))
requestedUDPPort = responseMap["requestedUDPPort"];
return results["success"].AsBoolean();
}
catch
{
//Something went wrong
return false;
}
}
reason = result.ContainsKey("Message") ? result["Message"].AsString() : "Could not contact the region";
return false;
}
catch (Exception e)
{
MainConsole.Instance.Warn("[REMOTE SIMULATION CONNECTOR]: CreateAgent failed with exception: " + e);
reason = e.Message;
}
return false;
}
示例4: TeleportAgent
public static OSDMap TeleportAgent(int DrawDistance, AgentCircuitData circuit,
AgentData data, uint TeleportFlags,
GridRegion destination, ulong requestingRegion)
{
OSDMap llsdBody = new OSDMap();
llsdBody.Add("DrawDistance", DrawDistance);
llsdBody.Add("Circuit", circuit.PackAgentCircuitData());
llsdBody.Add("TeleportFlags", TeleportFlags);
llsdBody.Add("AgentData", data.Pack());
llsdBody.Add("Region", destination.ToOSD());
return buildEvent("TeleportAgent", llsdBody, circuit.AgentID, requestingRegion);
}
示例5: CrossAgent
public static OSDMap CrossAgent(GridRegion crossingRegion, Vector3 pos,
Vector3 velocity, AgentCircuitData circuit, AgentData cAgent, ulong RequestingRegion)
{
OSDMap llsdBody = new OSDMap();
llsdBody.Add("Pos", pos);
llsdBody.Add("Vel", velocity);
llsdBody.Add("Region", crossingRegion.ToOSD());
llsdBody.Add("Circuit", circuit.PackAgentCircuitData());
llsdBody.Add("AgentData", cAgent.Pack());
return buildEvent("CrossAgent", llsdBody, circuit.AgentID, RequestingRegion);
}