aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/Scene.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs45
1 files changed, 43 insertions, 2 deletions
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index 73133d4..bfc3ee8 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -827,6 +827,7 @@ namespace OpenSim.Region.Environment.Scenes
827 agent.CapsPath, agent.AgentID); 827 agent.CapsPath, agent.AgentID);
828 cap.RegisterHandlers(); 828 cap.RegisterHandlers();
829 cap.AddNewInventoryItem = this.AddInventoryItem; 829 cap.AddNewInventoryItem = this.AddInventoryItem;
830 cap.ItemUpdatedCall = this.UpdateInventoryItemAsset;
830 if (capsHandlers.ContainsKey(agent.AgentID)) 831 if (capsHandlers.ContainsKey(agent.AgentID))
831 { 832 {
832 MainLog.Instance.Warn("client", "Adding duplicate CAPS entry for user " + 833 MainLog.Instance.Warn("client", "Adding duplicate CAPS entry for user " +
@@ -1023,7 +1024,7 @@ namespace OpenSim.Region.Environment.Scenes
1023 { 1024 {
1024 ScriptEngines.Add(ScriptEngine); 1025 ScriptEngines.Add(ScriptEngine);
1025 1026
1026 ScriptEngine.InitializeEngine(this, m_logger); 1027 ScriptEngine.InitializeEngine(this, m_logger);
1027 } 1028 }
1028 #endregion 1029 #endregion
1029 1030
@@ -1046,7 +1047,7 @@ namespace OpenSim.Region.Environment.Scenes
1046 1047
1047 public void AddInventoryItem(LLUUID userID, InventoryItemBase item) 1048 public void AddInventoryItem(LLUUID userID, InventoryItemBase item)
1048 { 1049 {
1049 if(this.Avatars.ContainsKey(userID)) 1050 if (this.Avatars.ContainsKey(userID))
1050 { 1051 {
1051 this.AddInventoryItem(this.Avatars[userID].ControllingClient, item); 1052 this.AddInventoryItem(this.Avatars[userID].ControllingClient, item);
1052 } 1053 }
@@ -1062,5 +1063,45 @@ namespace OpenSim.Region.Environment.Scenes
1062 } 1063 }
1063 } 1064 }
1064 1065
1066 public LLUUID UpdateInventoryItemAsset(LLUUID userID, LLUUID itemID, byte[] data)
1067 {
1068 if (this.Avatars.ContainsKey(userID))
1069 {
1070 return this.UpdateInventoryItemAsset(this.Avatars[userID].ControllingClient, itemID, data);
1071 }
1072 return LLUUID.Zero;
1073 }
1074
1075 public LLUUID UpdateInventoryItemAsset(IClientAPI remoteClient, LLUUID itemID, byte[] data)
1076 {
1077 CachedUserInfo userInfo = commsManager.UserProfiles.GetUserDetails(remoteClient.AgentId);
1078 if (userInfo != null)
1079 {
1080 if (userInfo.RootFolder != null)
1081 {
1082 InventoryItemBase item = userInfo.RootFolder.HasItem(itemID);
1083 if (item != null)
1084 {
1085 AssetBase asset;
1086 asset = new AssetBase();
1087 asset.FullID = LLUUID.Random();
1088 asset.Type = (sbyte)item.assetType;
1089 asset.InvType = (sbyte)item.invType;
1090 asset.Name = item.inventoryName;
1091 asset.Data = data;
1092 this.assetCache.AddAsset(asset);
1093
1094 item.assetID = asset.FullID;
1095 userInfo.updateItem(remoteClient.AgentId, item);
1096
1097 remoteClient.SendInventoryItemUpdate(item);
1098
1099 return (asset.FullID);
1100 }
1101 }
1102 }
1103 return LLUUID.Zero;
1104 }
1105
1065 } 1106 }
1066} 1107}