diff options
Merge branch 'careminster-presence-refactor' of ssh://3dhosting.de/var/git/careminster into careminster-presence-refactor
Diffstat (limited to 'OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs')
-rw-r--r-- | OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | 50 |
1 files changed, 40 insertions, 10 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs index 05e6d27..6048518 100644 --- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs | |||
@@ -438,6 +438,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
438 | 438 | ||
439 | #endregion Properties | 439 | #endregion Properties |
440 | 440 | ||
441 | // ~LLClientView() | ||
442 | // { | ||
443 | // m_log.DebugFormat("[LLCLIENTVIEW]: Destructor called for {0}, circuit code {1}", Name, CircuitCode); | ||
444 | // } | ||
445 | |||
441 | /// <summary> | 446 | /// <summary> |
442 | /// Constructor | 447 | /// Constructor |
443 | /// </summary> | 448 | /// </summary> |
@@ -1476,6 +1481,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1476 | money.MoneyData.TransactionSuccess = success; | 1481 | money.MoneyData.TransactionSuccess = success; |
1477 | money.MoneyData.Description = description; | 1482 | money.MoneyData.Description = description; |
1478 | money.MoneyData.MoneyBalance = balance; | 1483 | money.MoneyData.MoneyBalance = balance; |
1484 | money.TransactionInfo.ItemDescription = Util.StringToBytes256("NONE"); | ||
1479 | OutPacket(money, ThrottleOutPacketType.Task); | 1485 | OutPacket(money, ThrottleOutPacketType.Task); |
1480 | } | 1486 | } |
1481 | 1487 | ||
@@ -2231,7 +2237,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2231 | OutPacket(loadURL, ThrottleOutPacketType.Task); | 2237 | OutPacket(loadURL, ThrottleOutPacketType.Task); |
2232 | } | 2238 | } |
2233 | 2239 | ||
2234 | public void SendDialog(string objectname, UUID objectID, string ownerFirstName, string ownerLastName, string msg, UUID textureID, int ch, string[] buttonlabels) | 2240 | public void SendDialog( |
2241 | string objectname, UUID objectID, UUID ownerID, string ownerFirstName, string ownerLastName, string msg, | ||
2242 | UUID textureID, int ch, string[] buttonlabels) | ||
2235 | { | 2243 | { |
2236 | ScriptDialogPacket dialog = (ScriptDialogPacket)PacketPool.Instance.GetPacket(PacketType.ScriptDialog); | 2244 | ScriptDialogPacket dialog = (ScriptDialogPacket)PacketPool.Instance.GetPacket(PacketType.ScriptDialog); |
2237 | dialog.Data.ObjectID = objectID; | 2245 | dialog.Data.ObjectID = objectID; |
@@ -2249,6 +2257,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2249 | buttons[i].ButtonLabel = Util.StringToBytes256(buttonlabels[i]); | 2257 | buttons[i].ButtonLabel = Util.StringToBytes256(buttonlabels[i]); |
2250 | } | 2258 | } |
2251 | dialog.Buttons = buttons; | 2259 | dialog.Buttons = buttons; |
2260 | |||
2261 | dialog.OwnerData = new ScriptDialogPacket.OwnerDataBlock[1]; | ||
2262 | dialog.OwnerData[0] = new ScriptDialogPacket.OwnerDataBlock(); | ||
2263 | dialog.OwnerData[0].OwnerID = ownerID; | ||
2264 | |||
2252 | OutPacket(dialog, ThrottleOutPacketType.Task); | 2265 | OutPacket(dialog, ThrottleOutPacketType.Task); |
2253 | } | 2266 | } |
2254 | 2267 | ||
@@ -2320,8 +2333,6 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
2320 | OrbitalPosition = (OrbitalPosition - m_sunPainDaHalfOrbitalCutoff) * 0.6666666667f + m_sunPainDaHalfOrbitalCutoff; | 2333 | OrbitalPosition = (OrbitalPosition - m_sunPainDaHalfOrbitalCutoff) * 0.6666666667f + m_sunPainDaHalfOrbitalCutoff; |
2321 | } | 2334 | } |
2322 | 2335 | ||
2323 | |||
2324 | |||
2325 | SimulatorViewerTimeMessagePacket viewertime = (SimulatorViewerTimeMessagePacket)PacketPool.Instance.GetPacket(PacketType.SimulatorViewerTimeMessage); | 2336 | SimulatorViewerTimeMessagePacket viewertime = (SimulatorViewerTimeMessagePacket)PacketPool.Instance.GetPacket(PacketType.SimulatorViewerTimeMessage); |
2326 | viewertime.TimeInfo.SunDirection = Position; | 2337 | viewertime.TimeInfo.SunDirection = Position; |
2327 | viewertime.TimeInfo.SunAngVelocity = Velocity; | 2338 | viewertime.TimeInfo.SunAngVelocity = Velocity; |
@@ -8358,16 +8369,25 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8358 | AssetLandmark lm; | 8369 | AssetLandmark lm; |
8359 | if (lmid != UUID.Zero) | 8370 | if (lmid != UUID.Zero) |
8360 | { | 8371 | { |
8372 | |||
8361 | //AssetBase lma = m_assetCache.GetAsset(lmid, false); | 8373 | //AssetBase lma = m_assetCache.GetAsset(lmid, false); |
8362 | AssetBase lma = m_assetService.Get(lmid.ToString()); | 8374 | AssetBase lma = m_assetService.Get(lmid.ToString()); |
8363 | 8375 | ||
8364 | if (lma == null) | 8376 | if (lma == null) |
8365 | { | 8377 | { |
8366 | // Failed to find landmark | 8378 | // Failed to find landmark |
8367 | TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel); | 8379 | |
8368 | tpCancel.Info.SessionID = tpReq.Info.SessionID; | 8380 | // Let's try to search in the user's home asset server |
8369 | tpCancel.Info.AgentID = tpReq.Info.AgentID; | 8381 | lma = FindAssetInUserAssetServer(lmid.ToString()); |
8370 | OutPacket(tpCancel, ThrottleOutPacketType.Task); | 8382 | |
8383 | if (lma == null) | ||
8384 | { | ||
8385 | // Really doesn't exist | ||
8386 | TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel); | ||
8387 | tpCancel.Info.SessionID = tpReq.Info.SessionID; | ||
8388 | tpCancel.Info.AgentID = tpReq.Info.AgentID; | ||
8389 | OutPacket(tpCancel, ThrottleOutPacketType.Task); | ||
8390 | } | ||
8371 | } | 8391 | } |
8372 | 8392 | ||
8373 | try | 8393 | try |
@@ -8398,13 +8418,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8398 | TeleportLandmarkRequest handlerTeleportLandmarkRequest = OnTeleportLandmarkRequest; | 8418 | TeleportLandmarkRequest handlerTeleportLandmarkRequest = OnTeleportLandmarkRequest; |
8399 | if (handlerTeleportLandmarkRequest != null) | 8419 | if (handlerTeleportLandmarkRequest != null) |
8400 | { | 8420 | { |
8401 | handlerTeleportLandmarkRequest(this, lm.RegionID, lm.Position); | 8421 | handlerTeleportLandmarkRequest(this, lm); |
8402 | } | 8422 | } |
8403 | else | 8423 | else |
8404 | { | 8424 | { |
8405 | //no event handler so cancel request | 8425 | //no event handler so cancel request |
8406 | |||
8407 | |||
8408 | TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel); | 8426 | TeleportCancelPacket tpCancel = (TeleportCancelPacket)PacketPool.Instance.GetPacket(PacketType.TeleportCancel); |
8409 | tpCancel.Info.AgentID = tpReq.Info.AgentID; | 8427 | tpCancel.Info.AgentID = tpReq.Info.AgentID; |
8410 | tpCancel.Info.SessionID = tpReq.Info.SessionID; | 8428 | tpCancel.Info.SessionID = tpReq.Info.SessionID; |
@@ -8414,6 +8432,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
8414 | return true; | 8432 | return true; |
8415 | } | 8433 | } |
8416 | 8434 | ||
8435 | private AssetBase FindAssetInUserAssetServer(string id) | ||
8436 | { | ||
8437 | AgentCircuitData aCircuit = ((Scene)Scene).AuthenticateHandler.GetAgentCircuitData(CircuitCode); | ||
8438 | if (aCircuit != null && aCircuit.ServiceURLs != null && aCircuit.ServiceURLs.ContainsKey("AssetServerURI")) | ||
8439 | { | ||
8440 | string assetServer = aCircuit.ServiceURLs["AssetServerURI"].ToString(); | ||
8441 | return ((Scene)Scene).AssetService.Get(assetServer + "/" + id); | ||
8442 | } | ||
8443 | |||
8444 | return null; | ||
8445 | } | ||
8446 | |||
8417 | private bool HandleTeleportLocationRequest(IClientAPI sender, Packet Pack) | 8447 | private bool HandleTeleportLocationRequest(IClientAPI sender, Packet Pack) |
8418 | { | 8448 | { |
8419 | TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; | 8449 | TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack; |