diff options
7 files changed, 114 insertions, 20 deletions
diff --git a/OpenSim/Framework/Capabilities/Caps.cs b/OpenSim/Framework/Capabilities/Caps.cs index 0db7bb9..8a339fe 100644 --- a/OpenSim/Framework/Capabilities/Caps.cs +++ b/OpenSim/Framework/Capabilities/Caps.cs | |||
@@ -44,6 +44,8 @@ namespace OpenSim.Framework.Capabilities | |||
44 | string assetName, string description, UUID assetID, UUID inventoryItem, UUID parentFolder, | 44 | string assetName, string description, UUID assetID, UUID inventoryItem, UUID parentFolder, |
45 | byte[] data, string inventoryType, string assetType); | 45 | byte[] data, string inventoryType, string assetType); |
46 | 46 | ||
47 | public delegate void UploadedBakedTexture(UUID assetID, byte[] data); | ||
48 | |||
47 | public delegate UUID UpdateItem(UUID itemID, byte[] data); | 49 | public delegate UUID UpdateItem(UUID itemID, byte[] data); |
48 | 50 | ||
49 | public delegate void UpdateTaskScript(UUID itemID, UUID primID, bool isScriptRunning, byte[] data, ref ArrayList errors); | 51 | public delegate void UpdateTaskScript(UUID itemID, UUID primID, bool isScriptRunning, byte[] data, ref ArrayList errors); |
@@ -97,6 +99,7 @@ namespace OpenSim.Framework.Capabilities | |||
97 | // private static readonly string m_provisionVoiceAccountRequestPath = "0008/";// This is in a module. | 99 | // private static readonly string m_provisionVoiceAccountRequestPath = "0008/";// This is in a module. |
98 | 100 | ||
99 | // private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule. | 101 | // private static readonly string m_remoteParcelRequestPath = "0009/";// This is in the LandManagementModule. |
102 | private static readonly string m_uploadBakedTexturePath = "0010/";// This is in the LandManagementModule. | ||
100 | 103 | ||
101 | //private string eventQueue = "0100/"; | 104 | //private string eventQueue = "0100/"; |
102 | private IScene m_Scene; | 105 | private IScene m_Scene; |
@@ -185,6 +188,8 @@ namespace OpenSim.Framework.Capabilities | |||
185 | m_capsHandlers["UpdateScriptTaskInventory"] = | 188 | m_capsHandlers["UpdateScriptTaskInventory"] = |
186 | new RestStreamHandler("POST", capsBase + m_notecardTaskUpdatePath, ScriptTaskInventory); | 189 | new RestStreamHandler("POST", capsBase + m_notecardTaskUpdatePath, ScriptTaskInventory); |
187 | m_capsHandlers["UpdateScriptTask"] = m_capsHandlers["UpdateScriptTaskInventory"]; | 190 | m_capsHandlers["UpdateScriptTask"] = m_capsHandlers["UpdateScriptTaskInventory"]; |
191 | m_capsHandlers["UploadBakedTexture"] = | ||
192 | new RestStreamHandler("POST", capsBase + m_uploadBakedTexturePath, UploadBakedTexture); | ||
188 | 193 | ||
189 | } | 194 | } |
190 | catch (Exception e) | 195 | catch (Exception e) |
@@ -742,6 +747,50 @@ namespace OpenSim.Framework.Capabilities | |||
742 | return null; | 747 | return null; |
743 | } | 748 | } |
744 | 749 | ||
750 | public string UploadBakedTexture(string request, string path, | ||
751 | string param, OSHttpRequest httpRequest, | ||
752 | OSHttpResponse httpResponse) | ||
753 | { | ||
754 | try | ||
755 | { | ||
756 | m_log.Debug("[CAPS]: UploadBakedTexture Request in region: " + | ||
757 | m_regionName); | ||
758 | |||
759 | string capsBase = "/CAPS/" + m_capsObjectPath; | ||
760 | string uploaderPath = Util.RandomClass.Next(5000, 8000).ToString("0000"); | ||
761 | |||
762 | BakedTextureUploader uploader = | ||
763 | new BakedTextureUploader( capsBase + uploaderPath, | ||
764 | m_httpListener); | ||
765 | uploader.OnUpLoad += BakedTextureUploaded; | ||
766 | |||
767 | m_httpListener.AddStreamHandler( | ||
768 | new BinaryStreamHandler("POST", capsBase + uploaderPath, | ||
769 | uploader.uploaderCaps)); | ||
770 | |||
771 | string protocol = "http://"; | ||
772 | |||
773 | if (m_httpListener.UseSSL) | ||
774 | protocol = "https://"; | ||
775 | |||
776 | string uploaderURL = protocol + m_httpListenerHostName + ":" + | ||
777 | m_httpListenPort.ToString() + capsBase + uploaderPath; | ||
778 | |||
779 | LLSDAssetUploadResponse uploadResponse = | ||
780 | new LLSDAssetUploadResponse(); | ||
781 | uploadResponse.uploader = uploaderURL; | ||
782 | uploadResponse.state = "upload"; | ||
783 | |||
784 | return LLSDHelpers.SerialiseLLSDReply(uploadResponse); | ||
785 | } | ||
786 | catch (Exception e) | ||
787 | { | ||
788 | m_log.Error("[CAPS]: " + e.ToString()); | ||
789 | } | ||
790 | |||
791 | return null; | ||
792 | } | ||
793 | |||
745 | /// <summary> | 794 | /// <summary> |
746 | /// Called by the notecard update handler. Provides a URL to which the client can upload a new asset. | 795 | /// Called by the notecard update handler. Provides a URL to which the client can upload a new asset. |
747 | /// </summary> | 796 | /// </summary> |
@@ -925,6 +974,17 @@ namespace OpenSim.Framework.Capabilities | |||
925 | } | 974 | } |
926 | } | 975 | } |
927 | 976 | ||
977 | public void BakedTextureUploaded(UUID assetID, byte[] data) | ||
978 | { | ||
979 | m_log.DebugFormat("[CAPS]: Received baked texture {0}", assetID.ToString()); | ||
980 | AssetBase asset; | ||
981 | asset = new AssetBase(assetID, "Baked Texture", (sbyte)AssetType.Texture, m_agentID.ToString()); | ||
982 | asset.Data = data; | ||
983 | asset.Temporary = true; | ||
984 | asset.Local = true; | ||
985 | m_assetCache.Store(asset); | ||
986 | } | ||
987 | |||
928 | /// <summary> | 988 | /// <summary> |
929 | /// Called when new asset data for an agent inventory item update has been uploaded. | 989 | /// Called when new asset data for an agent inventory item update has been uploaded. |
930 | /// </summary> | 990 | /// </summary> |
@@ -1243,5 +1303,50 @@ namespace OpenSim.Framework.Capabilities | |||
1243 | fs.Close(); | 1303 | fs.Close(); |
1244 | } | 1304 | } |
1245 | } | 1305 | } |
1306 | |||
1307 | public class BakedTextureUploader | ||
1308 | { | ||
1309 | public event UploadedBakedTexture OnUpLoad; | ||
1310 | private UploadedBakedTexture handlerUpLoad = null; | ||
1311 | |||
1312 | private string uploaderPath = String.Empty; | ||
1313 | private UUID newAssetID; | ||
1314 | private IHttpServer httpListener; | ||
1315 | |||
1316 | public BakedTextureUploader(string path, IHttpServer httpServer) | ||
1317 | { | ||
1318 | newAssetID = UUID.Random(); | ||
1319 | uploaderPath = path; | ||
1320 | httpListener = httpServer; | ||
1321 | } | ||
1322 | |||
1323 | /// <summary> | ||
1324 | /// | ||
1325 | /// </summary> | ||
1326 | /// <param name="data"></param> | ||
1327 | /// <param name="path"></param> | ||
1328 | /// <param name="param"></param> | ||
1329 | /// <returns></returns> | ||
1330 | public string uploaderCaps(byte[] data, string path, string param) | ||
1331 | { | ||
1332 | string res = String.Empty; | ||
1333 | LLSDAssetUploadComplete uploadComplete = new LLSDAssetUploadComplete(); | ||
1334 | uploadComplete.new_asset = newAssetID.ToString(); | ||
1335 | uploadComplete.new_inventory_item = UUID.Zero; | ||
1336 | uploadComplete.state = "complete"; | ||
1337 | |||
1338 | res = LLSDHelpers.SerialiseLLSDReply(uploadComplete); | ||
1339 | |||
1340 | httpListener.RemoveStreamHandler("POST", uploaderPath); | ||
1341 | |||
1342 | handlerUpLoad = OnUpLoad; | ||
1343 | if (handlerUpLoad != null) | ||
1344 | { | ||
1345 | handlerUpLoad(newAssetID, data); | ||
1346 | } | ||
1347 | |||
1348 | return res; | ||
1349 | } | ||
1350 | } | ||
1246 | } | 1351 | } |
1247 | } | 1352 | } |
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 105501f..aa7de05 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -3427,6 +3427,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
3427 | 3427 | ||
3428 | avp.Sender.IsTrial = false; | 3428 | avp.Sender.IsTrial = false; |
3429 | avp.Sender.ID = agentID; | 3429 | avp.Sender.ID = agentID; |
3430 | m_log.DebugFormat("[CLIENT]: Sending appearance for {0} to {1}", agentID.ToString(), AgentId.ToString()); | ||
3430 | OutPacket(avp, ThrottleOutPacketType.Task); | 3431 | OutPacket(avp, ThrottleOutPacketType.Task); |
3431 | } | 3432 | } |
3432 | 3433 | ||
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs index 2a36362..4159610 100644 --- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs +++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs | |||
@@ -689,7 +689,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
689 | } | 689 | } |
690 | 690 | ||
691 | // Fire on_rez | 691 | // Fire on_rez |
692 | group.CreateScriptInstances(0, true, m_Scene.DefaultScriptEngine, 0); | 692 | group.CreateScriptInstances(0, true, m_Scene.DefaultScriptEngine, 1); |
693 | rootPart.ParentGroup.ResumeScripts(); | 693 | rootPart.ParentGroup.ResumeScripts(); |
694 | 694 | ||
695 | rootPart.ScheduleFullUpdate(); | 695 | rootPart.ScheduleFullUpdate(); |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs index 8760c84..0d9682e 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs | |||
@@ -218,8 +218,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
218 | 218 | ||
219 | // Update item with new asset | 219 | // Update item with new asset |
220 | item.AssetID = asset.FullID; | 220 | item.AssetID = asset.FullID; |
221 | if (group.UpdateInventoryItem(item)) | 221 | group.UpdateInventoryItem(item); |
222 | remoteClient.SendAgentAlertMessage("Script saved", false); | ||
223 | 222 | ||
224 | part.GetProperties(remoteClient); | 223 | part.GetProperties(remoteClient); |
225 | 224 | ||
@@ -232,10 +231,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
232 | // | 231 | // |
233 | errors = part.Inventory.CreateScriptInstanceEr(item.ItemID, 0, false, DefaultScriptEngine, 0); | 232 | errors = part.Inventory.CreateScriptInstanceEr(item.ItemID, 0, false, DefaultScriptEngine, 0); |
234 | } | 233 | } |
235 | else | ||
236 | { | ||
237 | remoteClient.SendAgentAlertMessage("Script saved", false); | ||
238 | } | ||
239 | part.ParentGroup.ResumeScripts(); | 234 | part.ParentGroup.ResumeScripts(); |
240 | return errors; | 235 | return errors; |
241 | } | 236 | } |
@@ -1401,13 +1396,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1401 | { | 1396 | { |
1402 | agentTransactions.HandleTaskItemUpdateFromTransaction( | 1397 | agentTransactions.HandleTaskItemUpdateFromTransaction( |
1403 | remoteClient, part, transactionID, currentItem); | 1398 | remoteClient, part, transactionID, currentItem); |
1404 | |||
1405 | if ((InventoryType)itemInfo.InvType == InventoryType.Notecard) | ||
1406 | remoteClient.SendAgentAlertMessage("Notecard saved", false); | ||
1407 | else if ((InventoryType)itemInfo.InvType == InventoryType.LSL) | ||
1408 | remoteClient.SendAgentAlertMessage("Script saved", false); | ||
1409 | else | ||
1410 | remoteClient.SendAgentAlertMessage("Item saved", false); | ||
1411 | } | 1399 | } |
1412 | 1400 | ||
1413 | // Base ALWAYS has move | 1401 | // Base ALWAYS has move |
@@ -1993,7 +1981,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1993 | 1981 | ||
1994 | // We can only call this after adding the scene object, since the scene object references the scene | 1982 | // We can only call this after adding the scene object, since the scene object references the scene |
1995 | // to find out if scripts should be activated at all. | 1983 | // to find out if scripts should be activated at all. |
1996 | group.CreateScriptInstances(param, true, DefaultScriptEngine, 2); | 1984 | group.CreateScriptInstances(param, true, DefaultScriptEngine, 3); |
1997 | 1985 | ||
1998 | group.ScheduleGroupForFullUpdate(); | 1986 | group.ScheduleGroupForFullUpdate(); |
1999 | 1987 | ||
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 9fea2a0..400f4c0 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1160,6 +1160,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1160 | //m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); | 1160 | //m_heartbeatTimer.Elapsed += new ElapsedEventHandler(Heartbeat); |
1161 | if (HeartbeatThread != null) | 1161 | if (HeartbeatThread != null) |
1162 | { | 1162 | { |
1163 | m_log.ErrorFormat("[SCENE]: Restarting heartbeat thread because it hasn't reported in in region {0}", RegionInfo.RegionName); | ||
1163 | HeartbeatThread.Abort(); | 1164 | HeartbeatThread.Abort(); |
1164 | HeartbeatThread = null; | 1165 | HeartbeatThread = null; |
1165 | } | 1166 | } |
@@ -2442,7 +2443,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2442 | return false; | 2443 | return false; |
2443 | } | 2444 | } |
2444 | 2445 | ||
2445 | newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, 1); | 2446 | newObject.RootPart.ParentGroup.CreateScriptInstances(0, false, DefaultScriptEngine, 2); |
2446 | 2447 | ||
2447 | newObject.ResumeScripts(); | 2448 | newObject.ResumeScripts(); |
2448 | 2449 | ||
@@ -4555,7 +4556,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4555 | // | 4556 | // |
4556 | int health=1; // Start at 1, means we're up | 4557 | int health=1; // Start at 1, means we're up |
4557 | 4558 | ||
4558 | if ((Util.EnvironmentTickCountSubtract(m_lastUpdate)) < 1000) | 4559 | if (m_firstHeartbeat || ((Util.EnvironmentTickCountSubtract(m_lastUpdate)) < 1000)) |
4559 | health+=1; | 4560 | health+=1; |
4560 | else | 4561 | else |
4561 | return health; | 4562 | return health; |
@@ -5067,7 +5068,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
5067 | { | 5068 | { |
5068 | ForEachSOG(delegate (SceneObjectGroup grp) | 5069 | ForEachSOG(delegate (SceneObjectGroup grp) |
5069 | { | 5070 | { |
5070 | if (grp.RootPart.Shape.State != 0 && (!objectsToDelete.Contains(grp))) | 5071 | if (grp.RootPart.Shape.PCode == 0 && grp.RootPart.Shape.State != 0 && (!objectsToDelete.Contains(grp))) |
5071 | { | 5072 | { |
5072 | UUID agentID = grp.OwnerID; | 5073 | UUID agentID = grp.OwnerID; |
5073 | if (agentID == UUID.Zero) | 5074 | if (agentID == UUID.Zero) |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index b86a564..8823df1 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -1928,7 +1928,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1928 | copy.UpdateGroupRotationR(rot); | 1928 | copy.UpdateGroupRotationR(rot); |
1929 | } | 1929 | } |
1930 | 1930 | ||
1931 | copy.CreateScriptInstances(0, false, m_parentScene.DefaultScriptEngine, 0); | 1931 | copy.CreateScriptInstances(0, false, m_parentScene.DefaultScriptEngine, 1); |
1932 | copy.HasGroupChanged = true; | 1932 | copy.HasGroupChanged = true; |
1933 | copy.ScheduleGroupForFullUpdate(); | 1933 | copy.ScheduleGroupForFullUpdate(); |
1934 | copy.ResumeScripts(); | 1934 | copy.ResumeScripts(); |
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index f682ee5..2ed00a0 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -2810,7 +2810,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
2810 | m_controllingClient.SendAvatarDataImmediate(this); | 2810 | m_controllingClient.SendAvatarDataImmediate(this); |
2811 | 2811 | ||
2812 | SendInitialFullUpdateToAllClients(); | 2812 | SendInitialFullUpdateToAllClients(); |
2813 | SendAppearanceToAllOtherAgents(); | ||
2814 | } | 2813 | } |
2815 | 2814 | ||
2816 | /// <summary> | 2815 | /// <summary> |