aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs31
-rw-r--r--OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml2
-rw-r--r--OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs28
-rw-r--r--OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs46
-rw-r--r--OpenSim/Region/Framework/Interfaces/ITerrain.cs2
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.Inventory.cs44
-rw-r--r--OpenSim/Region/Framework/Scenes/Scene.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs4
-rw-r--r--OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs2
-rw-r--r--OpenSim/Region/OptionalModules/Resources/OptionalModules.addin.xml1
-rw-r--r--OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs122
-rw-r--r--OpenSim/Region/OptionalModules/World/WorldView/WorldViewRequestHandler.cs148
-rw-r--r--OpenSim/Region/Physics/Meshing/Meshmerizer.cs3
-rw-r--r--OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs2
-rw-r--r--bin/OpenSim.ini.example5
-rw-r--r--bin/OpenSimDefaults.ini10
16 files changed, 382 insertions, 72 deletions
diff --git a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
index c1d6cd3..d05cfc2 100644
--- a/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
+++ b/OpenSim/Region/CoreModules/Framework/InventoryAccess/InventoryAccessModule.cs
@@ -196,13 +196,24 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
196 // currently calls this with multiple items. 196 // currently calls this with multiple items.
197 UUID ret = UUID.Zero; 197 UUID ret = UUID.Zero;
198 198
199 Dictionary<UUID, List<SceneObjectGroup>> deletes =
200 new Dictionary<UUID, List<SceneObjectGroup>>();
201
199 foreach (SceneObjectGroup g in objectGroups) 202 foreach (SceneObjectGroup g in objectGroups)
200 ret = DeleteToInventory(action, folderID, g, remoteClient); 203 {
204 if (!deletes.ContainsKey(g.OwnerID))
205 deletes[g.OwnerID] = new List<SceneObjectGroup>();
206
207 deletes[g.OwnerID].Add(g);
208 }
209
210 foreach (List<SceneObjectGroup> objlist in deletes.Values)
211 ret = DeleteToInventory(action, folderID, objlist, remoteClient);
201 212
202 return ret; 213 return ret;
203 } 214 }
204 215
205 public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, 216 private UUID DeleteToInventory(DeRezAction action, UUID folderID,
206 SceneObjectGroup objectGroup, IClientAPI remoteClient) 217 SceneObjectGroup objectGroup, IClientAPI remoteClient)
207 { 218 {
208 UUID assetID = UUID.Zero; 219 UUID assetID = UUID.Zero;
@@ -315,10 +326,20 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
315 } 326 }
316 else 327 else
317 { 328 {
318 // Catch all. Use lost & found 329 if (remoteClient == null ||
319 // 330 objectGroup.OwnerID != remoteClient.AgentId)
331 {
332 // Taking copy of another person's item. Take to
333 // Objects folder.
334 folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.Object);
335 }
336 else
337 {
338 // Catch all. Use lost & found
339 //
320 340
321 folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); 341 folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder);
342 }
322 } 343 }
323 } 344 }
324 345
diff --git a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
index e85e4e9..df23eac 100644
--- a/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
+++ b/OpenSim/Region/CoreModules/Resources/CoreModulePlugin.addin.xml
@@ -76,6 +76,8 @@
76 <RegionModule id="GridInfoServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Grid.GridInfoServiceInConnectorModule" /> \ 76 <RegionModule id="GridInfoServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Grid.GridInfoServiceInConnectorModule" /> \
77 <RegionModule id="AuthenticationServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Authentication.AuthenticationServiceInConnectorModule" /> 77 <RegionModule id="AuthenticationServiceInConnectorModule" type="OpenSim.Region.CoreModules.ServiceConnectorsIn.Authentication.AuthenticationServiceInConnectorModule" />
78 <RegionModule id="AccessModule" type="OpenSim.Region.CoreModules.World.AccessModule" /> \ 78 <RegionModule id="AccessModule" type="OpenSim.Region.CoreModules.World.AccessModule" /> \
79 <RegionModule id="MapImageModule" type="OpenSim.Region.CoreModules.World.LegacyMap.MapImageModule" /> \
80 <RegionModule id="Warp3DImageModule" type="OpenSim.Region.CoreModules.World.Warp3DMap.Warp3DImageModule" /> \
79 81
80 </Extension> 82 </Extension>
81 83
diff --git a/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs
index 8408bf9..f86c790 100644
--- a/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs
+++ b/OpenSim/Region/CoreModules/World/LegacyMap/MapImageModule.cs
@@ -59,7 +59,7 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
59 public face[] trns; 59 public face[] trns;
60 } 60 }
61 61
62 public class MapImageModule : IMapImageGenerator, IRegionModule 62 public class MapImageModule : IMapImageGenerator, INonSharedRegionModule
63 { 63 {
64 private static readonly ILog m_log = 64 private static readonly ILog m_log =
65 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 65 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
@@ -67,6 +67,7 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
67 private Scene m_scene; 67 private Scene m_scene;
68 private IConfigSource m_config; 68 private IConfigSource m_config;
69 private IMapTileTerrainRenderer terrainRenderer; 69 private IMapTileTerrainRenderer terrainRenderer;
70 private bool m_Enabled = false;
70 71
71 #region IMapImageGenerator Members 72 #region IMapImageGenerator Members
72 73
@@ -132,9 +133,8 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
132 133
133 #region IRegionModule Members 134 #region IRegionModule Members
134 135
135 public void Initialise(Scene scene, IConfigSource source) 136 public void Initialise(IConfigSource source)
136 { 137 {
137 m_scene = scene;
138 m_config = source; 138 m_config = source;
139 139
140 IConfig startupConfig = m_config.Configs["Startup"]; 140 IConfig startupConfig = m_config.Configs["Startup"];
@@ -142,10 +142,24 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
142 "MapImageModule") 142 "MapImageModule")
143 return; 143 return;
144 144
145 m_Enabled = true;
146 }
147
148 public void AddRegion(Scene scene)
149 {
150 if (!m_Enabled)
151 return;
152
153 m_scene = scene;
154
145 m_scene.RegisterModuleInterface<IMapImageGenerator>(this); 155 m_scene.RegisterModuleInterface<IMapImageGenerator>(this);
146 } 156 }
147 157
148 public void PostInitialise() 158 public void RegionLoaded(Scene scene)
159 {
160 }
161
162 public void RemoveRegion(Scene scene)
149 { 163 {
150 } 164 }
151 165
@@ -158,9 +172,9 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
158 get { return "MapImageModule"; } 172 get { return "MapImageModule"; }
159 } 173 }
160 174
161 public bool IsSharedModule 175 public Type ReplaceableInterface
162 { 176 {
163 get { return false; } 177 get { return null; }
164 } 178 }
165 179
166 #endregion 180 #endregion
@@ -546,7 +560,7 @@ namespace OpenSim.Region.CoreModules.World.LegacyMap
546 return returnpt; 560 return returnpt;
547 } 561 }
548 562
549 public Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height) 563 public Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height, bool useTextures)
550 { 564 {
551 return null; 565 return null;
552 } 566 }
diff --git a/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs b/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs
index 803a33a..00b506e 100644
--- a/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs
+++ b/OpenSim/Region/CoreModules/World/Warp3DMap/MapImageModule.cs
@@ -49,7 +49,7 @@ using WarpRenderer = global::Warp3D.Warp3D;
49 49
50namespace OpenSim.Region.CoreModules.World.Warp3DMap 50namespace OpenSim.Region.CoreModules.World.Warp3DMap
51{ 51{
52 public class Warp3DImageModule : IMapImageGenerator, IRegionModule 52 public class Warp3DImageModule : IMapImageGenerator, INonSharedRegionModule
53 { 53 {
54 private static readonly UUID TEXTURE_METADATA_MAGIC = new UUID("802dc0e0-f080-4931-8b57-d1be8611c4f3"); 54 private static readonly UUID TEXTURE_METADATA_MAGIC = new UUID("802dc0e0-f080-4931-8b57-d1be8611c4f3");
55 private static readonly Color4 WATER_COLOR = new Color4(29, 71, 95, 216); 55 private static readonly Color4 WATER_COLOR = new Color4(29, 71, 95, 216);
@@ -62,18 +62,28 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
62 private IConfigSource m_config; 62 private IConfigSource m_config;
63 private Dictionary<UUID, Color4> m_colors = new Dictionary<UUID, Color4>(); 63 private Dictionary<UUID, Color4> m_colors = new Dictionary<UUID, Color4>();
64 private bool m_useAntiAliasing = true; // TODO: Make this a config option 64 private bool m_useAntiAliasing = true; // TODO: Make this a config option
65 private bool m_Enabled = false;
65 66
66 #region IRegionModule Members 67 #region IRegionModule Members
67 68
68 public void Initialise(Scene scene, IConfigSource source) 69 public void Initialise(IConfigSource source)
69 { 70 {
70 m_scene = scene;
71 m_config = source; 71 m_config = source;
72 72
73 IConfig startupConfig = m_config.Configs["Startup"]; 73 IConfig startupConfig = m_config.Configs["Startup"];
74 if (startupConfig.GetString("MapImageModule", "MapImageModule") != "Warp3DImageModule") 74 if (startupConfig.GetString("MapImageModule", "MapImageModule") != "Warp3DImageModule")
75 return; 75 return;
76 76
77 m_Enabled = true;
78 }
79
80 public void AddRegion(Scene scene)
81 {
82 if (!m_Enabled)
83 return;
84
85 m_scene = scene;
86
77 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); 87 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory());
78 if (renderers.Count > 0) 88 if (renderers.Count > 0)
79 { 89 {
@@ -88,7 +98,11 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
88 m_scene.RegisterModuleInterface<IMapImageGenerator>(this); 98 m_scene.RegisterModuleInterface<IMapImageGenerator>(this);
89 } 99 }
90 100
91 public void PostInitialise() 101 public void RegionLoaded(Scene scene)
102 {
103 }
104
105 public void RemoveRegion(Scene scene)
92 { 106 {
93 } 107 }
94 108
@@ -101,9 +115,9 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
101 get { return "Warp3DImageModule"; } 115 get { return "Warp3DImageModule"; }
102 } 116 }
103 117
104 public bool IsSharedModule 118 public Type ReplaceableInterface
105 { 119 {
106 get { return false; } 120 get { return null; }
107 } 121 }
108 122
109 #endregion 123 #endregion
@@ -114,16 +128,16 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
114 { 128 {
115 Vector3 camPos = new Vector3(127.5f, 127.5f, 221.7025033688163f); 129 Vector3 camPos = new Vector3(127.5f, 127.5f, 221.7025033688163f);
116 Viewport viewport = new Viewport(camPos, -Vector3.UnitZ, 1024f, 0.1f, (int)Constants.RegionSize, (int)Constants.RegionSize, (float)Constants.RegionSize, (float)Constants.RegionSize); 130 Viewport viewport = new Viewport(camPos, -Vector3.UnitZ, 1024f, 0.1f, (int)Constants.RegionSize, (int)Constants.RegionSize, (float)Constants.RegionSize, (float)Constants.RegionSize);
117 return CreateMapTile(viewport); 131 return CreateMapTile(viewport, false);
118 } 132 }
119 133
120 public Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height) 134 public Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height, bool useTextures)
121 { 135 {
122 Viewport viewport = new Viewport(camPos, camDir, fov, (float)Constants.RegionSize, 0.1f, width, height); 136 Viewport viewport = new Viewport(camPos, camDir, fov, (float)Constants.RegionSize, 0.1f, width, height);
123 return CreateMapTile(viewport); 137 return CreateMapTile(viewport, useTextures);
124 } 138 }
125 139
126 public Bitmap CreateMapTile(Viewport viewport) 140 public Bitmap CreateMapTile(Viewport viewport, bool useTextures)
127 { 141 {
128 bool drawPrimVolume = true; 142 bool drawPrimVolume = true;
129 bool textureTerrain = true; 143 bool textureTerrain = true;
@@ -184,7 +198,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
184 CreateWater(renderer); 198 CreateWater(renderer);
185 CreateTerrain(renderer, textureTerrain); 199 CreateTerrain(renderer, textureTerrain);
186 if (drawPrimVolume) 200 if (drawPrimVolume)
187 CreateAllPrims(renderer); 201 CreateAllPrims(renderer, useTextures);
188 202
189 renderer.Render(); 203 renderer.Render();
190 Bitmap bitmap = renderer.Scene.getImage(); 204 Bitmap bitmap = renderer.Scene.getImage();
@@ -311,7 +325,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
311 renderer.SetObjectMaterial("Terrain", "TerrainColor"); 325 renderer.SetObjectMaterial("Terrain", "TerrainColor");
312 } 326 }
313 327
314 private void CreateAllPrims(WarpRenderer renderer) 328 private void CreateAllPrims(WarpRenderer renderer, bool useTextures)
315 { 329 {
316 if (m_primMesher == null) 330 if (m_primMesher == null)
317 return; 331 return;
@@ -319,14 +333,15 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
319 m_scene.ForEachSOG( 333 m_scene.ForEachSOG(
320 delegate(SceneObjectGroup group) 334 delegate(SceneObjectGroup group)
321 { 335 {
322 CreatePrim(renderer, group.RootPart); 336 CreatePrim(renderer, group.RootPart, useTextures);
323 foreach (SceneObjectPart child in group.Parts) 337 foreach (SceneObjectPart child in group.Parts)
324 CreatePrim(renderer, child); 338 CreatePrim(renderer, child, useTextures);
325 } 339 }
326 ); 340 );
327 } 341 }
328 342
329 private void CreatePrim(WarpRenderer renderer, SceneObjectPart prim) 343 private void CreatePrim(WarpRenderer renderer, SceneObjectPart prim,
344 bool useTextures)
330 { 345 {
331 const float MIN_SIZE = 2f; 346 const float MIN_SIZE = 2f;
332 347
@@ -357,6 +372,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
357 string primID = prim.UUID.ToString(); 372 string primID = prim.UUID.ToString();
358 373
359 // Create the prim faces 374 // Create the prim faces
375 // TODO: Implement the useTextures flag behavior
360 for (int i = 0; i < renderMesh.Faces.Count; i++) 376 for (int i = 0; i < renderMesh.Faces.Count; i++)
361 { 377 {
362 Face face = renderMesh.Faces[i]; 378 Face face = renderMesh.Faces[i];
diff --git a/OpenSim/Region/Framework/Interfaces/ITerrain.cs b/OpenSim/Region/Framework/Interfaces/ITerrain.cs
index 38cf020..815a2d8 100644
--- a/OpenSim/Region/Framework/Interfaces/ITerrain.cs
+++ b/OpenSim/Region/Framework/Interfaces/ITerrain.cs
@@ -75,7 +75,7 @@ namespace OpenSim.Region.Framework.Interfaces
75 public interface IMapImageGenerator 75 public interface IMapImageGenerator
76 { 76 {
77 System.Drawing.Bitmap CreateMapTile(); 77 System.Drawing.Bitmap CreateMapTile();
78 System.Drawing.Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height); 78 System.Drawing.Bitmap CreateViewImage(Vector3 camPos, Vector3 camDir, float fov, int width, int height, bool useTextures);
79 byte[] WriteJpeg2000Image(); 79 byte[] WriteJpeg2000Image();
80 } 80 }
81} 81}
diff --git a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
index 1bf6b87..4cc797b 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.Inventory.cs
@@ -1689,37 +1689,6 @@ namespace OpenSim.Region.Framework.Scenes
1689 } 1689 }
1690 } 1690 }
1691 1691
1692 /// <summary>
1693 /// Called when one or more objects are removed from the environment into inventory.
1694 /// </summary>
1695 /// <param name="remoteClient"></param>
1696 /// <param name="localID"></param>
1697 /// <param name="groupID"></param>
1698 /// <param name="action"></param>
1699 /// <param name="destinationID"></param>
1700 public virtual void DeRezObject(IClientAPI remoteClient, List<uint> localIDs,
1701 UUID groupID, DeRezAction action, UUID destinationID)
1702 {
1703 foreach (uint localID in localIDs)
1704 {
1705 DeRezObject(remoteClient, localID, groupID, action, destinationID);
1706 }
1707 }
1708
1709 /// <summary>
1710 /// Called when an object is removed from the environment into inventory.
1711 /// </summary>
1712 /// <param name="remoteClient"></param>
1713 /// <param name="localID"></param>
1714 /// <param name="groupID"></param>
1715 /// <param name="action"></param>
1716 /// <param name="destinationID"></param>
1717 public virtual void DeRezObject(IClientAPI remoteClient, uint localID,
1718 UUID groupID, DeRezAction action, UUID destinationID)
1719 {
1720 DeRezObjects(remoteClient, new List<uint>() { localID }, groupID, action, destinationID);
1721 }
1722
1723 public virtual void DeRezObjects(IClientAPI remoteClient, List<uint> localIDs, 1692 public virtual void DeRezObjects(IClientAPI remoteClient, List<uint> localIDs,
1724 UUID groupID, DeRezAction action, UUID destinationID) 1693 UUID groupID, DeRezAction action, UUID destinationID)
1725 { 1694 {
@@ -1990,14 +1959,19 @@ namespace OpenSim.Region.Framework.Scenes
1990 return group; 1959 return group;
1991 } 1960 }
1992 1961
1993 public virtual bool returnObjects(SceneObjectGroup[] returnobjects, UUID AgentId) 1962 public virtual bool returnObjects(SceneObjectGroup[] returnobjects,
1963 UUID AgentId)
1994 { 1964 {
1965 List<uint> localIDs = new List<uint>();
1966
1995 foreach (SceneObjectGroup grp in returnobjects) 1967 foreach (SceneObjectGroup grp in returnobjects)
1996 { 1968 {
1997 AddReturn(grp.OwnerID, grp.Name, grp.AbsolutePosition, "parcel owner return"); 1969 AddReturn(grp.OwnerID, grp.Name, grp.AbsolutePosition,
1998 DeRezObject(null, grp.RootPart.LocalId, 1970 "parcel owner return");
1999 grp.RootPart.GroupID, DeRezAction.Return, UUID.Zero); 1971 localIDs.Add(grp.RootPart.LocalId);
2000 } 1972 }
1973 DeRezObjects(null, localIDs, UUID.Zero, DeRezAction.Return,
1974 UUID.Zero);
2001 1975
2002 return true; 1976 return true;
2003 } 1977 }
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index fe0ab5b..0cfc235 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -2735,7 +2735,7 @@ namespace OpenSim.Region.Framework.Scenes
2735 client.OnGrabUpdate += m_sceneGraph.MoveObject; 2735 client.OnGrabUpdate += m_sceneGraph.MoveObject;
2736 client.OnSpinStart += m_sceneGraph.SpinStart; 2736 client.OnSpinStart += m_sceneGraph.SpinStart;
2737 client.OnSpinUpdate += m_sceneGraph.SpinObject; 2737 client.OnSpinUpdate += m_sceneGraph.SpinObject;
2738 client.OnDeRezObject += DeRezObject; 2738 client.OnDeRezObject += DeRezObjects;
2739 2739
2740 client.OnObjectName += m_sceneGraph.PrimName; 2740 client.OnObjectName += m_sceneGraph.PrimName;
2741 client.OnObjectClickAction += m_sceneGraph.PrimClickAction; 2741 client.OnObjectClickAction += m_sceneGraph.PrimClickAction;
@@ -2864,7 +2864,7 @@ namespace OpenSim.Region.Framework.Scenes
2864 client.OnGrabUpdate -= m_sceneGraph.MoveObject; 2864 client.OnGrabUpdate -= m_sceneGraph.MoveObject;
2865 client.OnSpinStart -= m_sceneGraph.SpinStart; 2865 client.OnSpinStart -= m_sceneGraph.SpinStart;
2866 client.OnSpinUpdate -= m_sceneGraph.SpinObject; 2866 client.OnSpinUpdate -= m_sceneGraph.SpinObject;
2867 client.OnDeRezObject -= DeRezObject; 2867 client.OnDeRezObject -= DeRezObjects;
2868 client.OnObjectName -= m_sceneGraph.PrimName; 2868 client.OnObjectName -= m_sceneGraph.PrimName;
2869 client.OnObjectClickAction -= m_sceneGraph.PrimClickAction; 2869 client.OnObjectClickAction -= m_sceneGraph.PrimClickAction;
2870 client.OnObjectMaterial -= m_sceneGraph.PrimMaterial; 2870 client.OnObjectMaterial -= m_sceneGraph.PrimMaterial;
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 5513584..5f00f84 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1304,8 +1304,8 @@ namespace OpenSim.Region.Framework.Scenes
1304 DetachFromBackup(); 1304 DetachFromBackup();
1305 m_log.InfoFormat("[SCENE]: Returning object {0} due to parcel auto return", RootPart.UUID.ToString()); 1305 m_log.InfoFormat("[SCENE]: Returning object {0} due to parcel auto return", RootPart.UUID.ToString());
1306 m_scene.AddReturn(OwnerID, Name, AbsolutePosition, "parcel auto return"); 1306 m_scene.AddReturn(OwnerID, Name, AbsolutePosition, "parcel auto return");
1307 m_scene.DeRezObject(null, RootPart.LocalId, 1307 m_scene.DeRezObjects(null, new List<uint>() { RootPart.LocalId }, UUID.Zero,
1308 RootPart.GroupID, DeRezAction.Return, UUID.Zero); 1308 DeRezAction.Return, UUID.Zero);
1309 1309
1310 return; 1310 return;
1311 } 1311 }
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
index 5616a4e..4969b09 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneObjectBasicTests.cs
@@ -142,7 +142,7 @@ namespace OpenSim.Region.Framework.Scenes.Tests
142 SceneObjectPart part = SceneSetupHelpers.AddSceneObject(scene); 142 SceneObjectPart part = SceneSetupHelpers.AddSceneObject(scene);
143 143
144 IClientAPI client = SceneSetupHelpers.AddRootAgent(scene, agentId); 144 IClientAPI client = SceneSetupHelpers.AddRootAgent(scene, agentId);
145 scene.DeRezObject(client, part.LocalId, UUID.Zero, DeRezAction.Delete, UUID.Zero); 145 scene.DeRezObjects(client, new System.Collections.Generic.List<uint>() { part.LocalId }, UUID.Zero, DeRezAction.Delete, UUID.Zero);
146 146
147 SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId); 147 SceneObjectPart retrievedPart = scene.GetSceneObjectPart(part.LocalId);
148 148
diff --git a/OpenSim/Region/OptionalModules/Resources/OptionalModules.addin.xml b/OpenSim/Region/OptionalModules/Resources/OptionalModules.addin.xml
index 352052a..5eea286 100644
--- a/OpenSim/Region/OptionalModules/Resources/OptionalModules.addin.xml
+++ b/OpenSim/Region/OptionalModules/Resources/OptionalModules.addin.xml
@@ -12,5 +12,6 @@
12 <RegionModule id="IRCBridge" type="OpenSim.Region.OptionalModules.Avatar.Chat.IRCBridgeModule" /> 12 <RegionModule id="IRCBridge" type="OpenSim.Region.OptionalModules.Avatar.Chat.IRCBridgeModule" />
13 <RegionModule id="Concierge" type="OpenSim.Region.OptionalModules.Avatar.Concierge.ConciergeModule" /> 13 <RegionModule id="Concierge" type="OpenSim.Region.OptionalModules.Avatar.Concierge.ConciergeModule" />
14 <RegionModule id="VivoxVoice" type="OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice.VivoxVoiceModule" /> 14 <RegionModule id="VivoxVoice" type="OpenSim.Region.OptionalModules.Avatar.Voice.VivoxVoice.VivoxVoiceModule" />
15 <RegionModule id="WorldViewModule" type="OpenSim.Region.OptionalModules.World.WorldView.WorldViewModule" />
15 </Extension> 16 </Extension>
16</Addin> 17</Addin>
diff --git a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs
new file mode 100644
index 0000000..d4b7020
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewModule.cs
@@ -0,0 +1,122 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.Drawing;
31using System.Drawing.Imaging;
32using System.Reflection;
33using System.IO;
34using log4net;
35using Nini.Config;
36using OpenMetaverse;
37using OpenMetaverse.Imaging;
38using OpenSim.Framework;
39using OpenSim.Region.Framework.Interfaces;
40using OpenSim.Region.Framework.Scenes;
41using OpenSim.Server.Base;
42using OpenSim.Framework.Servers.HttpServer;
43using OpenSim.Services.Interfaces;
44
45namespace OpenSim.Region.OptionalModules.World.WorldView
46{
47 public class WorldViewModule : INonSharedRegionModule
48 {
49 private static readonly ILog m_log =
50 LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
51
52
53 private bool m_Enabled = false;
54 private IMapImageGenerator m_Generator;
55
56 public void Initialise(IConfigSource config)
57 {
58 IConfig moduleConfig = config.Configs["Modules"];
59 if (moduleConfig == null)
60 return;
61
62 if (moduleConfig.GetString("WorldViewModule", String.Empty) != Name)
63 return;
64
65 m_Enabled = true;
66 }
67
68 public void AddRegion(Scene scene)
69 {
70 }
71
72 public void RegionLoaded(Scene scene)
73 {
74 m_Generator = scene.RequestModuleInterface<IMapImageGenerator>();
75 if (m_Generator == null)
76 {
77 m_Enabled = false;
78 return;
79 }
80
81 m_log.Info("[WORLDVIEW]: Configured and enabled");
82
83 IHttpServer server = MainServer.GetHttpServer(0);
84 server.AddStreamHandler(new WorldViewRequestHandler(this,
85 scene.RegionInfo.RegionID.ToString()));
86 }
87
88 public void RemoveRegion(Scene scene)
89 {
90 }
91
92 public string Name
93 {
94 get { return "WorldViewModule"; }
95 }
96
97 public Type ReplaceableInterface
98 {
99 get { return null; }
100 }
101
102 public void Close()
103 {
104 }
105
106 public byte[] GenerateWorldView(Vector3 pos, Vector3 rot, float fov,
107 int width, int height, bool usetex)
108 {
109 if (!m_Enabled)
110 return new Byte[0];
111
112 Bitmap bmp = m_Generator.CreateViewImage(pos, rot, fov, width,
113 height, usetex);
114
115 MemoryStream str = new MemoryStream();
116
117 bmp.Save(str, ImageFormat.Jpeg);
118
119 return str.ToArray();
120 }
121 }
122}
diff --git a/OpenSim/Region/OptionalModules/World/WorldView/WorldViewRequestHandler.cs b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewRequestHandler.cs
new file mode 100644
index 0000000..f47d9c7
--- /dev/null
+++ b/OpenSim/Region/OptionalModules/World/WorldView/WorldViewRequestHandler.cs
@@ -0,0 +1,148 @@
1/*
2 * Copyright (c) Contributors, http://opensimulator.org/
3 * See CONTRIBUTORS.TXT for a full list of copyright holders.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of the OpenSimulator Project nor the
13 * names of its contributors may be used to endorse or promote products
14 * derived from this software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27
28using System;
29using System.Collections.Generic;
30using System.IO;
31using System.Reflection;
32using System.Xml;
33
34using OpenSim.Framework;
35using OpenSim.Server.Base;
36using OpenSim.Framework.Servers.HttpServer;
37using OpenSim.Region.Framework.Scenes;
38using OpenSim.Region.Framework.Interfaces;
39
40using OpenMetaverse;
41using log4net;
42
43namespace OpenSim.Region.OptionalModules.World.WorldView
44{
45 public class WorldViewRequestHandler : BaseStreamHandler
46 {
47 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
48
49 protected WorldViewModule m_WorldViewModule;
50 protected Object m_RequestLock = new Object();
51
52 public WorldViewRequestHandler(WorldViewModule fmodule, string rid)
53 : base("GET", "/worldview/" + rid)
54 {
55 m_WorldViewModule = fmodule;
56 }
57
58 public override byte[] Handle(string path, Stream requestData,
59 OSHttpRequest httpRequest, OSHttpResponse httpResponse)
60 {
61 httpResponse.ContentType = "image/jpeg";
62
63// StreamReader sr = new StreamReader(requestData);
64// string body = sr.ReadToEnd();
65// sr.Close();
66// body = body.Trim();
67
68 try
69 {
70 lock (m_RequestLock)
71 {
72 Dictionary<string, object> request =
73 new Dictionary<string, object>();
74 foreach (string name in httpRequest.QueryString)
75 request[name] = httpRequest.QueryString[name];
76
77 return SendWorldView(request);
78 }
79 }
80 catch (Exception e)
81 {
82 m_log.Debug("[WORLDVIEW]: Exception: " + e.ToString());
83 }
84
85 return new Byte[0];
86 }
87
88 public Byte[] SendWorldView(Dictionary<string, object> request)
89 {
90 float posX;
91 float posY;
92 float posZ;
93 float rotX;
94 float rotY;
95 float rotZ;
96 float fov;
97 int width;
98 int height;
99 bool usetex;
100
101 if (!request.ContainsKey("posX"))
102 return new Byte[0];
103 if (!request.ContainsKey("posY"))
104 return new Byte[0];
105 if (!request.ContainsKey("posZ"))
106 return new Byte[0];
107 if (!request.ContainsKey("rotX"))
108 return new Byte[0];
109 if (!request.ContainsKey("rotY"))
110 return new Byte[0];
111 if (!request.ContainsKey("rotZ"))
112 return new Byte[0];
113 if (!request.ContainsKey("fov"))
114 return new Byte[0];
115 if (!request.ContainsKey("width"))
116 return new Byte[0];
117 if (!request.ContainsKey("height"))
118 return new Byte[0];
119 if (!request.ContainsKey("usetex"))
120 return new Byte[0];
121
122 try
123 {
124 posX = Convert.ToSingle(request["posX"]);
125 posY = Convert.ToSingle(request["posY"]);
126 posZ = Convert.ToSingle(request["posZ"]);
127 rotX = Convert.ToSingle(request["rotX"]);
128 rotY = Convert.ToSingle(request["rotY"]);
129 rotZ = Convert.ToSingle(request["rotZ"]);
130 fov = Convert.ToSingle(request["fov"]);
131 width = Convert.ToInt32(request["width"]);
132 height = Convert.ToInt32(request["height"]);
133 usetex = Convert.ToBoolean(request["usetex"]);
134 }
135 catch
136 {
137 return new Byte[0];
138 }
139
140 Vector3 pos = new Vector3(posX, posY, posZ);
141 Vector3 rot = new Vector3(rotX, rotY, rotZ);
142
143 return m_WorldViewModule.GenerateWorldView(pos, rot, fov, width,
144 height, usetex);
145 }
146 }
147}
148
diff --git a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
index 20a5bb4..c97db8c 100644
--- a/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
+++ b/OpenSim/Region/Physics/Meshing/Meshmerizer.cs
@@ -81,7 +81,8 @@ namespace OpenSim.Region.Physics.Meshing
81 { 81 {
82 IConfig start_config = config.Configs["Startup"]; 82 IConfig start_config = config.Configs["Startup"];
83 83
84 decodedSculptMapPath = start_config.GetString("DecodedSculptMapPath","j2kDecodeCache"); 84 decodedSculptMapPath = start_config.GetString("DecodedSculptMapPath","j2kDecodeCache");
85 cacheSculptMaps = start_config.GetBoolean("CacheSculptMaps", cacheSculptMaps);
85 86
86 try 87 try
87 { 88 {
diff --git a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
index fc9db03..9d7733e 100644
--- a/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
+++ b/OpenSim/Tests/Common/Setup/SceneSetupHelpers.cs
@@ -556,7 +556,7 @@ namespace OpenSim.Tests.Common.Setup
556 AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter; 556 AsyncSceneObjectGroupDeleter sogd = scene.SceneObjectGroupDeleter;
557 sogd.Enabled = false; 557 sogd.Enabled = false;
558 558
559 scene.DeRezObject(client, part.LocalId, UUID.Zero, action, destinationId); 559 scene.DeRezObjects(client, new List<uint>() { part.LocalId }, UUID.Zero, action, destinationId);
560 sogd.InventoryDeQueueAndDelete(); 560 sogd.InventoryDeQueueAndDelete();
561 } 561 }
562 } 562 }
diff --git a/bin/OpenSim.ini.example b/bin/OpenSim.ini.example
index 1625de0..9d34854 100644
--- a/bin/OpenSim.ini.example
+++ b/bin/OpenSim.ini.example
@@ -13,7 +13,10 @@
13;; An empty question will set the default if the dependencies are 13;; An empty question will set the default if the dependencies are
14;; satisfied. 14;; satisfied.
15;; 15;;
16;; ; denotes a commented option. It is ignored. 16;; ; denotes a commented out option. Uncomment it to actvate it
17;; and change it to the desired value
18;; Any options added to OpenSim.ini.exmaple must be commented out,
19;; and their value must represent the default.
17 20
18[Startup] 21[Startup]
19 ;# {save_crashes} {} {Save crashes to disk?} {true false} false 22 ;# {save_crashes} {} {Save crashes to disk?} {true false} false
diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini
index f939cc8..53d8ab7 100644
--- a/bin/OpenSimDefaults.ini
+++ b/bin/OpenSimDefaults.ini
@@ -139,7 +139,15 @@
139 ;; Path to decoded sculpty maps 139 ;; Path to decoded sculpty maps
140 ;; Defaults to "j2kDecodeCache 140 ;; Defaults to "j2kDecodeCache
141 ;DecodedSculptMapPath = "j2kDecodeCache" 141 ;DecodedSculptMapPath = "j2kDecodeCache"
142 142
143 ;# {CacheSculptMaps} {Cache decoded sculpt maps?} {true false} true
144 ;; if you use Meshmerizer and want sculpt map collisions, setting this to
145 ;; to true will store decoded sculpt maps in a special folder in your bin
146 ;; folder, which can reduce startup times by reducing asset requests. Some
147 ;; versions of mono dont work well when reading the cache files, so set this
148 ;; to false if you have compatability problems.
149 ; CacheSculptMaps = true
150
143 ; Choose one of the physics engines below 151 ; Choose one of the physics engines below
144 ; OpenDynamicsEngine is by some distance the most developed physics engine 152 ; OpenDynamicsEngine is by some distance the most developed physics engine
145 ; basicphysics effectively does not model physics at all, making all objects phantom 153 ; basicphysics effectively does not model physics at all, making all objects phantom