diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index f3ea89a92c..40de870cee 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -346,7 +346,7 @@ namespace OpenSim.Region.Environment.Scenes ForEachScenePresence(delegate(ScenePresence agent) { - if (!(agent.IsChildAgent)) + if (!agent.IsChildAgent) { //agent.ControllingClient.new //this.CommsManager.InterRegion.InformRegionOfChildAgent(otherRegion.RegionHandle, agent.ControllingClient.RequestClientInfo()); @@ -368,24 +368,21 @@ namespace OpenSim.Region.Environment.Scenes public override void Close() { ForEachScenePresence(delegate(ScenePresence avatar) - { - if (avatar.KnownChildRegions.Contains(RegionInfo.RegionHandle)) - avatar.KnownChildRegions.Remove(RegionInfo.RegionHandle); + { + if (avatar.KnownChildRegions.Contains(RegionInfo.RegionHandle)) + avatar.KnownChildRegions.Remove(RegionInfo.RegionHandle); - if (!avatar.IsChildAgent) - avatar.ControllingClient.Kick("The simulator is going down."); + if (!avatar.IsChildAgent) + avatar.ControllingClient.Kick("The simulator is going down."); - avatar.ControllingClient.OutPacket(new libsecondlife.Packets.DisableSimulatorPacket(), ThrottleOutPacketType.Task); - + avatar.ControllingClient.OutPacket(new libsecondlife.Packets.DisableSimulatorPacket(), ThrottleOutPacketType.Task); }); Thread.Sleep(500); ForEachScenePresence(delegate(ScenePresence avatar) { - avatar.ControllingClient.Stop(); - }); m_heartbeatTimer.Close(); @@ -837,7 +834,6 @@ namespace OpenSim.Region.Environment.Scenes bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim); if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0) { - rootPart.PhysActor = PhysicsScene.AddPrimShape( rootPart.Name, @@ -912,8 +908,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - /// + /// public override void AddNewClient(IClientAPI client, bool child) { @@ -1029,17 +1024,17 @@ namespace OpenSim.Region.Environment.Scenes ScenePresence avatar = GetScenePresence(agentID); - Broadcast(delegate(IClientAPI client) { - try - { - client.SendKillObject(avatar.RegionHandle, avatar.LocalId); - } - catch (System.NullReferenceException) - { - //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. - - } - }); + Broadcast(delegate(IClientAPI client) + { + try + { + client.SendKillObject(avatar.RegionHandle, avatar.LocalId); + } + catch (System.NullReferenceException) + { + //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. + } + }); ForEachScenePresence( delegate(ScenePresence presence) { presence.CoarseLocationChange(); }); @@ -1061,7 +1056,6 @@ namespace OpenSim.Region.Environment.Scenes catch (System.NullReferenceException) { //We can safely ignore null reference exceptions. It means the avatar are dead and cleaned up anyway. - } catch (Exception e) { @@ -1117,7 +1111,9 @@ namespace OpenSim.Region.Environment.Scenes m_sceneGridService.KillObject = SendKillObject; } - + /// + /// + /// public void UnRegisterReginWithComms() { m_sceneGridService.OnRegionUp -= OtherRegionUp; @@ -1163,6 +1159,13 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + /// + /// + /// + /// public virtual void AgentCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) { if (regionHandle == m_regInfo.RegionHandle) @@ -1174,6 +1177,11 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + /// + /// public void CloseConnection(ulong regionHandle, LLUUID agentID) { if (regionHandle == m_regionHandle) @@ -1187,15 +1195,20 @@ namespace OpenSim.Region.Environment.Scenes } } - /// /// /// + /// public void InformClientOfNeighbours(ScenePresence presence) { m_sceneGridService.EnableNeighbourChildAgents(presence); } + /// + /// + /// + /// + /// public void InformClientOfNeighbor(ScenePresence presence, RegionInfo region) { m_sceneGridService.InformNeighborChildAgent(presence, region); @@ -1214,6 +1227,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// + /// /// /// /// @@ -1227,7 +1241,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - /// + /// /// /// /// @@ -1243,18 +1257,25 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - /// + /// /// /// - public bool InformNeighbourOfCrossing(ulong regionhandle, LLUUID agentID, LLVector3 position, bool isFlying) + /// + /// + public bool InformNeighbourOfCrossing(ulong regionHandle, LLUUID agentID, LLVector3 position, bool isFlying) { - return m_sceneGridService.CrossToNeighbouringRegion(regionhandle, agentID, position, isFlying); + return m_sceneGridService.CrossToNeighbouringRegion(regionHandle, agentID, position, isFlying); } #endregion #region Module Methods + /// + /// + /// + /// + /// public void AddModule(string name, IRegionModule module) { if (!Modules.ContainsKey(name)) @@ -1263,6 +1284,10 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + /// public void RegisterModuleInterface(M mod) { if (!ModuleInterfaces.ContainsKey(typeof(M))) @@ -1271,6 +1296,10 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + /// public T RequestModuleInterface() { if (ModuleInterfaces.ContainsKey(typeof(T))) @@ -1287,21 +1316,42 @@ namespace OpenSim.Region.Environment.Scenes #region Other Methods + /// + /// + /// + /// public void SetTimePhase(int phase) { m_timePhase = phase; } - public void SendUrlToUser(LLUUID avatarID, string objectname, LLUUID objectID, LLUUID ownerID, bool groupOwned, + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public void SendUrlToUser(LLUUID avatarID, string objectName, LLUUID objectID, LLUUID ownerID, bool groupOwned, string message, string url) { if (m_scenePresences.ContainsKey(avatarID)) { - m_scenePresences[avatarID].ControllingClient.SendLoadURL(objectname, objectID, ownerID, groupOwned, + m_scenePresences[avatarID].ControllingClient.SendLoadURL(objectName, objectID, ownerID, groupOwned, message, url); } } + /// + /// + /// + /// + /// + /// + /// public LLUUID MakeHttpRequest(string url, string type, string body) { if (m_httpRequestModule != null) @@ -1311,6 +1361,9 @@ namespace OpenSim.Region.Environment.Scenes return LLUUID.Zero; } + /// + /// + /// public void performParcelPrimCountUpdate() { m_LandManager.resetAllLandPrimCounts(); @@ -1319,6 +1372,9 @@ namespace OpenSim.Region.Environment.Scenes m_LandManager.landPrimCountTainted = false; } + /// + /// + /// public void addPrimsToParcelCounts() { foreach (EntityBase obj in Entities.Values) @@ -1340,6 +1396,10 @@ namespace OpenSim.Region.Environment.Scenes SendAlertToUser(user, reason, false); } + /// + /// + /// + /// public void SendGeneralAlert(string message) { foreach (ScenePresence presence in m_scenePresences.Values) @@ -1348,6 +1408,12 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + /// + /// + /// public void SendAlertToUser(LLUUID agentID, string message, bool modal) { if (m_scenePresences.ContainsKey(agentID)) @@ -1356,13 +1422,18 @@ namespace OpenSim.Region.Environment.Scenes } } - public void handleRequestGodlikePowers(LLUUID agentID, LLUUID sessionID, LLUUID token, IClientAPI controllingclient) + /// + /// + /// + /// + /// + /// + /// + public void handleRequestGodlikePowers(LLUUID agentID, LLUUID sessionID, LLUUID token, IClientAPI controllingClient) { // First check that this is the sim owner - if (agentID == RegionInfo.MasterAvatarAssignedUUID) { - // User needs to be logged into this sim if (m_scenePresences.ContainsKey(agentID)) { @@ -1370,14 +1441,11 @@ namespace OpenSim.Region.Environment.Scenes LLUUID testSessionID = m_scenePresences[agentID].ControllingClient.SessionId; if (sessionID == testSessionID) { - if (sessionID == controllingclient.SessionId) + if (sessionID == controllingClient.SessionId) { m_scenePresences[agentID].GrantGodlikePowers(agentID, testSessionID, token); - } - } - } } else @@ -1386,82 +1454,94 @@ namespace OpenSim.Region.Environment.Scenes } } - public void handleGodlikeKickUser(LLUUID godid, LLUUID sessionid, LLUUID agentid, uint kickflags, byte[] reason) + /// + /// + /// + /// + /// + /// + /// + /// + public void handleGodlikeKickUser(LLUUID godID, LLUUID sessionID, LLUUID agentID, uint kickflags, byte[] reason) { - // For some reason the client sends the seemingly hard coded, 44e87126e7944ded05b37c42da3d5cdb - // for kicking everyone. Dun-know. - if (m_scenePresences.ContainsKey(agentid) || agentid == new LLUUID("44e87126e7944ded05b37c42da3d5cdb")) + // For some reason the client sends this seemingly hard coded UUID for kicking everyone. Dun-know. + LLUUID kickUserID = new LLUUID("44e87126e7944ded05b37c42da3d5cdb"); + if (m_scenePresences.ContainsKey(agentID) || agentID == kickUserID) { - if (godid == RegionInfo.MasterAvatarAssignedUUID) + if (godID == RegionInfo.MasterAvatarAssignedUUID) { - if (agentid == new LLUUID("44e87126e7944ded05b37c42da3d5cdb")) + if (agentID == kickUserID) { - ClientManager.ForEachClient(delegate(IClientAPI controller) - { - ScenePresence p = GetScenePresence(controller.AgentId); - bool childagent = false; - if (!p.Equals(null)) - if (p.IsChildAgent) - childagent = true; - if (controller.AgentId != godid && !childagent) // Do we really want to kick the initiator of this madness? - { - controller.Kick(Helpers.FieldToUTF8String(reason)); - - } - } - ); + { + ScenePresence p = GetScenePresence(controller.AgentId); + bool childagent = !p.Equals(null) && p.IsChildAgent; + if (controller.AgentId != godID && !childagent) // Do we really want to kick the initiator of this madness? + { + controller.Kick(Helpers.FieldToUTF8String(reason)); + } + } + ); // This is a bit crude. It seems the client will be null before it actually stops the thread // The thread will kill itself eventually :/ // Is there another way to make sure *all* clients get this 'inter region' message? ClientManager.ForEachClient(delegate(IClientAPI controller) - { - ScenePresence p = GetScenePresence(controller.AgentId); - bool childagent = false; - if (!p.Equals(null)) - if (p.IsChildAgent) - childagent = true; - - if (controller.AgentId != godid && !childagent) // Do we really want to kick the initiator of this madness? - { - controller.Close(); - } - } - ); + { + ScenePresence p = GetScenePresence(controller.AgentId); + bool childagent = !p.Equals(null) && p.IsChildAgent; + if (controller.AgentId != godID && !childagent) // Do we really want to kick the initiator of this madness? + { + controller.Close(); + } + } + ); } else { - m_scenePresences[agentid].ControllingClient.Kick(Helpers.FieldToUTF8String(reason)); - m_scenePresences[agentid].ControllingClient.Close(); + m_scenePresences[agentID].ControllingClient.Kick(Helpers.FieldToUTF8String(reason)); + m_scenePresences[agentID].ControllingClient.Close(); } } else { - if (m_scenePresences.ContainsKey(godid)) - m_scenePresences[godid].ControllingClient.SendAgentAlertMessage("Kick request denied", false); + if (m_scenePresences.ContainsKey(godID)) + m_scenePresences[godID].ControllingClient.SendAgentAlertMessage("Kick request denied", false); } } } - public void HandleObjectPermissionsUpdate (IClientAPI controller, LLUUID AgentID, LLUUID SessionID, List permChanges) + + /// + /// + /// + /// + /// + /// + /// + public void HandleObjectPermissionsUpdate (IClientAPI controller, LLUUID agentID, LLUUID sessionID, List permChanges) { // Check for spoofing.. since this is permissions we're talking about here! - if ((controller.SessionId == SessionID) && (controller.AgentId == AgentID)) + if ((controller.SessionId == sessionID) && (controller.AgentId == agentID)) { for (int i = 0; i < permChanges.Count; i++) { - // Tell the object to do permission update byte field = permChanges[i].Field; uint localID = permChanges[i].ObjectLocalID; uint mask = permChanges[i].Mask; byte addRemTF = permChanges[i].Set; SceneObjectGroup chObjectGroup = GetGroupByPrim(localID); - chObjectGroup.UpdatePermissions(AgentID, field, localID, mask, addRemTF); - + chObjectGroup.UpdatePermissions(agentID, field, localID, mask, addRemTF); } } - } + + /// + /// + /// + /// + /// + /// + /// public void SendAlertToUser(string firstName, string lastName, string message, bool modal) { foreach (ScenePresence presence in m_scenePresences.Values) @@ -1474,6 +1554,10 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + /// public void HandleAlertCommand(string[] commandParams) { if (commandParams[0] == "general") @@ -1500,6 +1584,9 @@ namespace OpenSim.Region.Environment.Scenes #endregion + /// + /// + /// public void ForceClientUpdate() { foreach (EntityBase ent in Entities.Values) @@ -1511,9 +1598,13 @@ namespace OpenSim.Region.Environment.Scenes } } - public void HandleEditCommand(string[] cmmdparams) + /// + /// + /// + /// + public void HandleEditCommand(string[] cmdparams) { - Console.WriteLine("Searching for Primitive: '" + cmmdparams[0] + "'"); + Console.WriteLine("Searching for Primitive: '" + cmdparams[0] + "'"); foreach (EntityBase ent in Entities.Values) { if (ent is SceneObjectGroup) @@ -1521,11 +1612,11 @@ namespace OpenSim.Region.Environment.Scenes SceneObjectPart part = ((SceneObjectGroup)ent).GetChildPart(((SceneObjectGroup)ent).UUID); if (part != null) { - if (part.Name == cmmdparams[0]) + if (part.Name == cmdparams[0]) { part.Resize( - new LLVector3(Convert.ToSingle(cmmdparams[1]), Convert.ToSingle(cmmdparams[2]), - Convert.ToSingle(cmmdparams[3]))); + new LLVector3(Convert.ToSingle(cmdparams[1]), Convert.ToSingle(cmdparams[2]), + Convert.ToSingle(cmdparams[3]))); Console.WriteLine("Edited scale of Primitive: " + part.Name); } @@ -1534,9 +1625,13 @@ namespace OpenSim.Region.Environment.Scenes } } - public void Show(string ShowWhat) + /// + /// + /// + /// + public void Show(string showWhat) { - switch (ShowWhat) + switch (showWhat) { case "users": MainLog.Instance.Error("Current Region: " + RegionInfo.RegionName); @@ -1574,6 +1669,10 @@ namespace OpenSim.Region.Environment.Scenes #region Script Handling Methods + /// + /// + /// + /// public void SendCommandToPlugins(string[] args) { m_eventManager.TriggerOnPluginConsole(args); @@ -1586,22 +1685,35 @@ namespace OpenSim.Region.Environment.Scenes private List ScriptEngines = new List(); private bool m_dumpAssetsToFile; - public void AddScriptEngine(ScriptEngineInterface ScriptEngine, LogBase m_logger) + /// + /// + /// + /// + /// + public void AddScriptEngine(ScriptEngineInterface scriptEngine, LogBase logger) { - ScriptEngines.Add(ScriptEngine); - - ScriptEngine.InitializeEngine(this, m_logger); + ScriptEngines.Add(scriptEngine); + scriptEngine.InitializeEngine(this, logger); } #endregion #region InnerScene wrapper methods + /// + /// + /// + /// + /// public LLUUID ConvertLocalIDToFullID(uint localID) { return m_innerScene.ConvertLocalIDToFullID(localID); } + /// + /// + /// + /// public void SendAllSceneObjectsToClient(ScenePresence presence) { m_innerScene.SendAllSceneObjectsToClient(presence); @@ -1610,6 +1722,10 @@ namespace OpenSim.Region.Environment.Scenes //The idea is to have a group of method that return a list of avatars meeting some requirement // ie it could be all m_scenePresences within a certain range of the calling prim/avatar. + /// + /// + /// + /// public List GetAvatars() { return m_innerScene.GetAvatars(); @@ -1627,6 +1743,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// Request a filtered list of m_scenePresences in this World /// + /// /// public List GetScenePresences(FilterAvatarList filter) { @@ -1659,6 +1776,10 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + /// public void ForEachObject(Action action) { foreach (SceneObjectGroup presence in m_sceneObjects.Values) @@ -1667,11 +1788,21 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + /// + /// public SceneObjectPart GetSceneObjectPart(uint localID) { return m_innerScene.GetSceneObjectPart(localID); } + /// + /// + /// + /// + /// public SceneObjectPart GetSceneObjectPart(LLUUID fullID) { return m_innerScene.GetSceneObjectPart(fullID); @@ -1682,7 +1813,6 @@ namespace OpenSim.Region.Environment.Scenes return m_innerScene.TryGetAvatar(avatarId, out avatar); } - internal bool TryGetAvatarByName(string avatarName, out ScenePresence avatar) { return m_innerScene.TryGetAvatarByName(avatarName, out avatar);