Merge branch 'master' of ssh://opensimulator.org/var/git/opensim

iar_mods
Justin Clark-Casey (justincc) 2012-01-25 21:26:34 +00:00
commit 2e7c1bcfd9
7 changed files with 100 additions and 22 deletions

View File

@ -130,5 +130,11 @@ namespace OpenSim.Framework
/// </summary> /// </summary>
/// <param name="url"></param> /// <param name="url"></param>
void SetMusicUrl(string url); void SetMusicUrl(string url);
/// <summary>
/// Get the music url for this land parcel
/// </summary>
/// <returns>The music url.</returns>
string GetMusicUrl();
} }
} }

View File

@ -1095,6 +1095,15 @@ namespace OpenSim.Region.CoreModules.World.Land
SendLandUpdateToAvatarsOverMe(); SendLandUpdateToAvatarsOverMe();
} }
/// <summary>
/// Get the music url for this land parcel
/// </summary>
/// <returns>The music url.</returns>
public string GetMusicUrl()
{
return LandData.MusicURL;
}
#endregion #endregion
} }
} }

View File

@ -373,7 +373,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
public virtual void HandleMapItemRequest(IClientAPI remoteClient, uint flags, public virtual void HandleMapItemRequest(IClientAPI remoteClient, uint flags,
uint EstateID, bool godlike, uint itemtype, ulong regionhandle) uint EstateID, bool godlike, uint itemtype, ulong regionhandle)
{ {
// m_log.DebugFormat("[WORLD MAP]: Handle MapItem request {0} {1}", regionhandle, itemtype); m_log.DebugFormat("[WORLD MAP]: Handle MapItem request {0} {1}", regionhandle, itemtype);
lock (m_rootAgents) lock (m_rootAgents)
{ {
@ -429,7 +429,8 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
// ensures that the blockingqueue doesn't get borked if the GetAgents() timing changes. // ensures that the blockingqueue doesn't get borked if the GetAgents() timing changes.
RequestMapItems("",remoteClient.AgentId,flags,EstateID,godlike,itemtype,regionhandle); RequestMapItems("",remoteClient.AgentId,flags,EstateID,godlike,itemtype,regionhandle);
} }
} else if (itemtype == 7) // Service 7 (MAP_ITEM_LAND_FOR_SALE) }
else if (itemtype == 7) // Service 7 (MAP_ITEM_LAND_FOR_SALE)
{ {
if (regionhandle == 0 || regionhandle == m_scene.RegionInfo.RegionHandle) if (regionhandle == 0 || regionhandle == m_scene.RegionInfo.RegionHandle)
{ {
@ -481,6 +482,32 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
RequestMapItems("",remoteClient.AgentId,flags,EstateID,godlike,itemtype,regionhandle); RequestMapItems("",remoteClient.AgentId,flags,EstateID,godlike,itemtype,regionhandle);
} }
} }
else if (itemtype == 1) // Service 1 (MAP_ITEM_TELEHUB)
{
if (regionhandle == 0 || regionhandle == m_scene.RegionInfo.RegionHandle)
{
List<mapItemReply> mapitems = new List<mapItemReply>();
mapItemReply mapitem = new mapItemReply();
SceneObjectPart sop = m_scene.GetSceneObjectPart(m_scene.RegionInfo.RegionSettings.TelehubObject);
mapitem = new mapItemReply();
mapitem.x = (uint)(xstart + sop.AbsolutePosition.X);
mapitem.y = (uint)(ystart + sop.AbsolutePosition.Y);
mapitem.id = UUID.Zero;
mapitem.name = sop.Name;
mapitem.Extra = 0; // color (not used)
mapitem.Extra2 = 0; // 0 = telehub / 1 = infohub
mapitems.Add(mapitem);
remoteClient.SendMapItemReply(mapitems.ToArray(), itemtype, flags);
}
else
{
// Remote Map Item Request
RequestMapItems("",remoteClient.AgentId,flags,EstateID,godlike,itemtype,regionhandle);
}
}
} }
private int nAsyncRequests = 0; private int nAsyncRequests = 0;
@ -620,6 +647,28 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
} }
av.ControllingClient.SendMapItemReply(returnitems.ToArray(), itemtype, mrs.flags); av.ControllingClient.SendMapItemReply(returnitems.ToArray(), itemtype, mrs.flags);
} }
// Service 1 (MAP_ITEM_TELEHUB)
itemtype = 1;
if (response.ContainsKey(itemtype.ToString()))
{
List<mapItemReply> returnitems = new List<mapItemReply>();
OSDArray itemarray = (OSDArray)response[itemtype.ToString()];
for (int i = 0; i < itemarray.Count; i++)
{
OSDMap mapitem = (OSDMap)itemarray[i];
mapItemReply mi = new mapItemReply();
mi.x = (uint)mapitem["X"].AsInteger();
mi.y = (uint)mapitem["Y"].AsInteger();
mi.id = mapitem["ID"].AsUUID();
mi.Extra = mapitem["Extra"].AsInteger();
mi.Extra2 = mapitem["Extra2"].AsInteger();
mi.name = mapitem["Name"].AsString();
returnitems.Add(mi);
}
av.ControllingClient.SendMapItemReply(returnitems.ToArray(), itemtype, mrs.flags);
}
} }
} }
} }
@ -1252,20 +1301,22 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
if (m_scene.RegionInfo.RegionSettings.TelehubObject != UUID.Zero) if (m_scene.RegionInfo.RegionSettings.TelehubObject != UUID.Zero)
{ {
SceneObjectPart sop = m_scene.GetSceneObjectPart(m_scene.RegionInfo.RegionSettings.TelehubObject); SceneObjectGroup sog = m_scene.GetSceneObjectGroup(m_scene.RegionInfo.RegionSettings.TelehubObject);
if (sog != null)
{
OSDArray responsearr = new OSDArray();
OSDMap responsemapdata = new OSDMap();
responsemapdata["X"] = OSD.FromInteger((int)(xstart + sog.AbsolutePosition.X));
responsemapdata["Y"] = OSD.FromInteger((int)(ystart + sog.AbsolutePosition.Y));
// responsemapdata["Z"] = OSD.FromInteger((int)m_scene.GetGroundHeight(x,y));
responsemapdata["ID"] = OSD.FromUUID(sog.UUID);
responsemapdata["Name"] = OSD.FromString(sog.Name);
responsemapdata["Extra"] = OSD.FromInteger(0); // color (unused)
responsemapdata["Extra2"] = OSD.FromInteger(0); // 0 = telehub / 1 = infohub
responsearr.Add(responsemapdata);
OSDArray responsearr = new OSDArray(); responsemap["1"] = responsearr;
OSDMap responsemapdata = new OSDMap(); }
responsemapdata["X"] = OSD.FromInteger((int)(xstart + sop.AbsolutePosition.X));
responsemapdata["Y"] = OSD.FromInteger((int)(ystart + sop.AbsolutePosition.Y));
// responsemapdata["Z"] = OSD.FromInteger((int)m_scene.GetGroundHeight(x,y));
responsemapdata["ID"] = OSD.FromUUID(sop.UUID);
responsemapdata["Name"] = OSD.FromString(sop.Name);
responsemapdata["Extra"] = OSD.FromInteger(0); // color (unused)
responsemapdata["Extra2"] = OSD.FromInteger(0); // 0 = telehub / 1 = infohub
responsearr.Add(responsemapdata);
responsemap["1"] = responsearr;
} }
return responsemap; return responsemap;

View File

@ -41,12 +41,6 @@ namespace OpenSim.Region.Framework.Scenes
{ {
public delegate void PhysicsCrash(); public delegate void PhysicsCrash();
public delegate void ObjectDuplicateDelegate(EntityBase original, EntityBase clone);
public delegate void ObjectCreateDelegate(EntityBase obj);
public delegate void ObjectDeleteDelegate(EntityBase obj);
/// <summary> /// <summary>
/// This class used to be called InnerScene and may not yet truly be a SceneGraph. The non scene graph components /// This class used to be called InnerScene and may not yet truly be a SceneGraph. The non scene graph components
/// should be migrated out over time. /// should be migrated out over time.

View File

@ -7566,6 +7566,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
ScriptSleep(2000); ScriptSleep(2000);
} }
public LSL_String llGetParcelMusicURL()
{
m_host.AddScriptLPS(1);
ILandObject land = World.LandChannel.GetLandObject(m_host.AbsolutePosition.X, m_host.AbsolutePosition.Y);
if (land.LandData.OwnerID != m_host.OwnerID)
return String.Empty;
return land.GetMusicUrl();
}
public LSL_Vector llGetRootPosition() public LSL_Vector llGetRootPosition()
{ {
m_host.AddScriptLPS(1); m_host.AddScriptLPS(1);

View File

@ -161,6 +161,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
LSL_List llGetParcelDetails(LSL_Vector pos, LSL_List param); LSL_List llGetParcelDetails(LSL_Vector pos, LSL_List param);
LSL_Integer llGetParcelFlags(LSL_Vector pos); LSL_Integer llGetParcelFlags(LSL_Vector pos);
LSL_Integer llGetParcelMaxPrims(LSL_Vector pos, int sim_wide); LSL_Integer llGetParcelMaxPrims(LSL_Vector pos, int sim_wide);
LSL_String llGetParcelMusicURL();
LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide); LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide);
LSL_List llGetParcelPrimOwners(LSL_Vector pos); LSL_List llGetParcelPrimOwners(LSL_Vector pos);
LSL_Integer llGetPermissions(); LSL_Integer llGetPermissions();

View File

@ -649,6 +649,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
return m_LSL_Functions.llGetParcelMaxPrims(pos, sim_wide); return m_LSL_Functions.llGetParcelMaxPrims(pos, sim_wide);
} }
public LSL_String llGetParcelMusicURL()
{
return m_LSL_Functions.llGetParcelMusicURL();
}
public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide) public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide)
{ {
return m_LSL_Functions.llGetParcelPrimCount(pos, category, sim_wide); return m_LSL_Functions.llGetParcelPrimCount(pos, category, sim_wide);