aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs54
-rw-r--r--OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs2
-rw-r--r--OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs5
3 files changed, 44 insertions, 17 deletions
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
index 14deeb6..1e5af1b 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/MapSearchModule.cs
@@ -49,6 +49,18 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
49 List<Scene> m_scenes = new List<Scene>(); 49 List<Scene> m_scenes = new List<Scene>();
50 List<UUID> m_Clients; 50 List<UUID> m_Clients;
51 51
52 IWorldMapModule m_WorldMap;
53 IWorldMapModule WorldMap
54 {
55 get
56 {
57 if (m_WorldMap == null)
58 m_WorldMap = m_scene.RequestModuleInterface<IWorldMapModule>();
59 return m_WorldMap;
60 }
61
62 }
63
52 #region ISharedRegionModule Members 64 #region ISharedRegionModule Members
53 public void Initialise(IConfigSource source) 65 public void Initialise(IConfigSource source)
54 { 66 {
@@ -130,9 +142,16 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
130 { 142 {
131 Util.FireAndForget(x => 143 Util.FireAndForget(x =>
132 { 144 {
133 if (mapName.Length < 2) 145 List<MapBlockData> blocks = new List<MapBlockData>();
146 if (mapName.Length < 3 || (mapName.EndsWith("#") && mapName.Length < 4))
134 { 147 {
135 remoteClient.SendAlertMessage("Use a search string with at least 2 characters"); 148 // final block, closing the search result
149 AddFinalBlock(blocks);
150
151 // flags are agent flags sent from the viewer.
152 // they have different values depending on different viewers, apparently
153 remoteClient.SendMapBlock(blocks, flags);
154 remoteClient.SendAlertMessage("Use a search string with at least 3 characters");
136 return; 155 return;
137 } 156 }
138 157
@@ -160,8 +179,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
160 // remoteClient.SendAlertMessage("Hyperlink could not be established."); 179 // remoteClient.SendAlertMessage("Hyperlink could not be established.");
161 180
162 //m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions", mapName, regionInfos.Count); 181 //m_log.DebugFormat("[MAPSEARCHMODULE]: search {0} returned {1} regions", mapName, regionInfos.Count);
163 List<MapBlockData> blocks = new List<MapBlockData>(); 182
164
165 MapBlockData data; 183 MapBlockData data;
166 if (regionInfos.Count > 0) 184 if (regionInfos.Count > 0)
167 { 185 {
@@ -171,9 +189,22 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
171 data.Agents = 0; 189 data.Agents = 0;
172 data.Access = info.Access; 190 data.Access = info.Access;
173 if (flags == 2) // V2 sends this 191 if (flags == 2) // V2 sends this
174 data.MapImageId = UUID.Zero; 192 {
193 List<MapBlockData> datas = WorldMap.Map2BlockFromGridRegion(info, flags);
194 // ugh! V2-3 is very sensitive about the result being
195 // exactly the same as the requested name
196
197 if (regionInfos.Count == 1 && (mapName != mapNameOrig))
198 datas.ForEach(d => d.Name = mapNameOrig);
199
200 blocks.AddRange(datas);
201 }
175 else 202 else
176 data.MapImageId = info.TerrainImage; 203 {
204 MapBlockData block = new MapBlockData();
205 WorldMap.MapBlockFromGridRegion(block,info, flags);
206 blocks.Add(block);
207 }
177 // ugh! V2-3 is very sensitive about the result being 208 // ugh! V2-3 is very sensitive about the result being
178 // exactly the same as the requested name 209 // exactly the same as the requested name
179 if (regionInfos.Count == 1 && mapNameOrig.Contains("|") || mapNameOrig.Contains("+")) 210 if (regionInfos.Count == 1 && mapNameOrig.Contains("|") || mapNameOrig.Contains("+"))
@@ -189,16 +220,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
189 } 220 }
190 221
191 // final block, closing the search result 222 // final block, closing the search result
192 data = new MapBlockData(); 223 AddFinalBlock(blocks);
193 data.Agents = 0;
194 data.Access = 255;
195 data.MapImageId = UUID.Zero;
196 data.Name = mapName;
197 data.RegionFlags = 0;
198 data.WaterHeight = 0; // not used
199 data.X = 0;
200 data.Y = 0;
201 blocks.Add(data);
202 224
203 // flags are agent flags sent from the viewer. 225 // flags are agent flags sent from the viewer.
204 // they have different values depending on different viewers, apparently 226 // they have different values depending on different viewers, apparently
diff --git a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
index 59529d8..31b1c35 100644
--- a/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
+++ b/OpenSim/Region/CoreModules/World/WorldMap/WorldMapModule.cs
@@ -1143,7 +1143,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
1143 return allBlocks; 1143 return allBlocks;
1144 } 1144 }
1145 1145
1146 protected void MapBlockFromGridRegion(MapBlockData block, GridRegion r, uint flag) 1146 public void MapBlockFromGridRegion(MapBlockData block, GridRegion r, uint flag)
1147 { 1147 {
1148 block.Access = r.Access; 1148 block.Access = r.Access;
1149 switch (flag & 0xffff) 1149 switch (flag & 0xffff)
diff --git a/OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs b/OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs
index 65c57a6..e9cf4ad 100644
--- a/OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs
+++ b/OpenSim/Region/Framework/Interfaces/IWorldMapModule.cs
@@ -24,6 +24,9 @@
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 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. 25 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27using System.Collections.Generic;
28using OpenSim.Framework;
29using OpenSim.Services.Interfaces;
27 30
28namespace OpenSim.Region.Framework.Interfaces 31namespace OpenSim.Region.Framework.Interfaces
29{ 32{
@@ -33,5 +36,7 @@ namespace OpenSim.Region.Framework.Interfaces
33 /// Generate a map tile for the scene. a terrain texture for this scene 36 /// Generate a map tile for the scene. a terrain texture for this scene
34 /// </summary> 37 /// </summary>
35 void GenerateMaptile(); 38 void GenerateMaptile();
39 List<MapBlockData> Map2BlockFromGridRegion(GridRegion r, uint flag);
40 void MapBlockFromGridRegion(MapBlockData block, GridRegion r, uint flag);
36 } 41 }
37} 42}