From 50803dfe2ca8818f438d740e788762e1faf1078c Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 15 Nov 2011 15:57:53 +0000 Subject: For clients that are entering a simulator from initial login, stop executing FriendsModule.FetchFriendslist() asychronously. Executing this asynchronously allows a race condition where subsequent friends fetches hit a cache that FetchFriendsList() had not yet populated. Changing this to synchronous may improve issues where a user does not see friends as online even though they are. I don't believe synchronous is a problem here, but if it is, then a more complicated signalling mechanism is required. Locking the cache isn't sufficient. --- OpenSim/Region/Framework/Scenes/EventManager.cs | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 96da2c3..bf9ad65 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -73,8 +73,10 @@ namespace OpenSim.Region.Framework.Scenes /// public event OnNewClientDelegate OnNewClient; - public delegate void OnClientLoginDelegate(IClientAPI client); - public event OnClientLoginDelegate OnClientLogin; + /// + /// Fired if the client entering this sim is doing so as a new login + /// + public event Action OnClientLogin; public delegate void OnNewPresenceDelegate(ScenePresence presence); @@ -651,10 +653,10 @@ namespace OpenSim.Region.Framework.Scenes public void TriggerOnClientLogin(IClientAPI client) { - OnClientLoginDelegate handlerClientLogin = OnClientLogin; + Action handlerClientLogin = OnClientLogin; if (handlerClientLogin != null) { - foreach (OnClientLoginDelegate d in handlerClientLogin.GetInvocationList()) + foreach (Action d in handlerClientLogin.GetInvocationList()) { try { -- cgit v1.1 From 64784bc0cf194a3fae0168dd5f2d6fadc8a9235d Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 15 Nov 2011 17:30:58 +0000 Subject: remove SceneCommunicationService.OnAvatarCrossingIntoRegion. This stuff is not being used any more - it's now IEntityTransferModule and SimulationService instead --- OpenSim/Region/Framework/Scenes/Scene.cs | 2 -- OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | 5 ----- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 9 ++++++--- 3 files changed, 6 insertions(+), 10 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index ce5b493..781f922 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -3200,7 +3200,6 @@ namespace OpenSim.Region.Framework.Scenes /// public void RegisterCommsEvents() { - m_sceneGridService.OnAvatarCrossingIntoRegion += AgentCrossing; m_sceneGridService.OnCloseAgentConnection += IncomingCloseAgent; //m_eventManager.OnRegionUp += OtherRegionUp; //m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; @@ -3218,7 +3217,6 @@ namespace OpenSim.Region.Framework.Scenes //m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; //m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; //m_eventManager.OnRegionUp -= OtherRegionUp; - m_sceneGridService.OnAvatarCrossingIntoRegion -= AgentCrossing; m_sceneGridService.OnCloseAgentConnection -= IncomingCloseAgent; m_sceneGridService.OnGetLandData -= GetLandData; diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index eccce89..ff45b1f 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs @@ -61,11 +61,6 @@ namespace OpenSim.Region.Framework.Scenes protected List m_agentsInTransit; /// - /// An agent is crossing into this region - /// - public event AgentCrossing OnAvatarCrossingIntoRegion; - - /// /// A user will arrive shortly, set up appropriate credentials so it can connect /// // public event ExpectUserDelegate OnExpectUser; diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 098437a..189394e 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -859,9 +859,12 @@ namespace OpenSim.Region.Framework.Scenes #region Status Methods /// - /// This turns a child agent, into a root agent - /// This is called when an agent teleports into a region, or if an - /// agent crosses into this region from a neighbor over the border + /// Turns a child agent into a root agent. + /// + /// Child agents are logged into neighbouring sims largely to observe changes. Root agents exist when the + /// avatar is actual in the sim. They can perform all actions. + /// This change is made whenever an avatar enters a region, whether by crossing over from a neighbouring sim, + /// teleporting in or on initial login. /// public void MakeRootAgent(Vector3 pos, bool isFlying) { -- cgit v1.1 From 20f26eeb17da708a58a26629e8e9b08a5e9a6950 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 15 Nov 2011 17:38:55 +0000 Subject: Remove unused RegionCommsListener/IRegionCommsListener. All this is now being handled through IEntityTransferModule and SimulationService instead, and has been for some time. --- OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs | 3 --- 1 file changed, 3 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index ff45b1f..3d56f9b 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs @@ -55,9 +55,6 @@ namespace OpenSim.Region.Framework.Scenes protected RegionInfo m_regionInfo; protected Scene m_scene; - - protected RegionCommsListener regionCommsHost; - protected List m_agentsInTransit; /// -- cgit v1.1 From a3c5f76942270f17e359bfcf8f43c6db3d1f782d Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 15 Nov 2011 18:16:43 +0000 Subject: Removed unused and mostly commented out SceneCommunicationService methods As far as I can see, the SCS is only now used for informing neighbours of up/down status and possibly sending child agent updates and close requests --- OpenSim/Region/Framework/Scenes/Scene.cs | 38 +--------- .../Framework/Scenes/SceneCommunicationService.cs | 81 +--------------------- 2 files changed, 3 insertions(+), 116 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 781f922..fb4b545 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1121,8 +1121,8 @@ namespace OpenSim.Region.Framework.Scenes m_sceneGraph.Close(); - // De-register with region communications (events cleanup) - UnRegisterRegionWithComms(); + if (!GridService.DeregisterRegion(m_regInfo.RegionID)) + m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", m_regInfo.RegionName); // call the base class Close method. base.Close(); @@ -1623,8 +1623,6 @@ namespace OpenSim.Region.Framework.Scenes /// Thrown if registration of the region itself fails. public void RegisterRegionWithGrid() { - RegisterCommsEvents(); - m_sceneGridService.SetScene(this); GridRegion region = new GridRegion(RegionInfo); @@ -3196,38 +3194,6 @@ namespace OpenSim.Region.Framework.Scenes #region RegionComms /// - /// Register the methods that should be invoked when this scene receives various incoming events - /// - public void RegisterCommsEvents() - { - m_sceneGridService.OnCloseAgentConnection += IncomingCloseAgent; - //m_eventManager.OnRegionUp += OtherRegionUp; - //m_sceneGridService.OnChildAgentUpdate += IncomingChildAgentDataUpdate; - //m_sceneGridService.OnRemoveKnownRegionFromAvatar += HandleRemoveKnownRegionsFromAvatar; - m_sceneGridService.OnLogOffUser += HandleLogOffUserFromGrid; - m_sceneGridService.OnGetLandData += GetLandData; - } - - /// - /// Deregister this scene from receiving incoming region events - /// - public void UnRegisterRegionWithComms() - { - m_sceneGridService.OnLogOffUser -= HandleLogOffUserFromGrid; - //m_sceneGridService.OnRemoveKnownRegionFromAvatar -= HandleRemoveKnownRegionsFromAvatar; - //m_sceneGridService.OnChildAgentUpdate -= IncomingChildAgentDataUpdate; - //m_eventManager.OnRegionUp -= OtherRegionUp; - m_sceneGridService.OnCloseAgentConnection -= IncomingCloseAgent; - m_sceneGridService.OnGetLandData -= GetLandData; - - // this does nothing; should be removed - m_sceneGridService.Close(); - - if (!GridService.DeregisterRegion(m_regInfo.RegionID)) - m_log.WarnFormat("[SCENE]: Deregister from grid failed for region {0}", m_regInfo.RegionName); - } - - /// /// Do the work necessary to initiate a new user connection for a particular scene. /// At the moment, this consists of setting up the caps infrastructure /// The return bool should allow for connections to be refused, but as not all calling paths diff --git a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs index 3d56f9b..0e22156 100644 --- a/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs +++ b/OpenSim/Region/Framework/Scenes/SceneCommunicationService.cs @@ -55,57 +55,6 @@ namespace OpenSim.Region.Framework.Scenes protected RegionInfo m_regionInfo; protected Scene m_scene; - protected List m_agentsInTransit; - - /// - /// A user will arrive shortly, set up appropriate credentials so it can connect - /// -// public event ExpectUserDelegate OnExpectUser; - - /// - /// A Prim will arrive shortly - /// - public event CloseAgentConnection OnCloseAgentConnection; - - /// - /// A new prim has arrived - /// -// public event PrimCrossing OnPrimCrossingIntoRegion; - - ///// - ///// A New Region is up and available - ///// - //public event RegionUp OnRegionUp; - - /// - /// We have a child agent for this avatar and we're getting a status update about it - /// -// public event ChildAgentUpdate OnChildAgentUpdate; - //public event RemoveKnownRegionsFromAvatarList OnRemoveKnownRegionFromAvatar; - - /// - /// Time to log one of our users off. Grid Service sends this mostly - /// - public event LogOffUser OnLogOffUser; - - /// - /// A region wants land data from us! - /// - public event GetLandData OnGetLandData; - -// private AgentCrossing handlerAvatarCrossingIntoRegion = null; // OnAvatarCrossingIntoRegion; -// private ExpectUserDelegate handlerExpectUser = null; // OnExpectUser; -// private CloseAgentConnection handlerCloseAgentConnection = null; // OnCloseAgentConnection; -// private PrimCrossing handlerPrimCrossingIntoRegion = null; // OnPrimCrossingIntoRegion; - //private RegionUp handlerRegionUp = null; // OnRegionUp; -// private ChildAgentUpdate handlerChildAgentUpdate = null; // OnChildAgentUpdate; - //private RemoveKnownRegionsFromAvatarList handlerRemoveKnownRegionFromAvatar = null; // OnRemoveKnownRegionFromAvatar; -// private LogOffUser handlerLogOffUser = null; -// private GetLandData handlerGetLandData = null; // OnGetLandData - - public SceneCommunicationService() - { - } public void SetScene(Scene s) { @@ -113,23 +62,6 @@ namespace OpenSim.Region.Framework.Scenes m_regionInfo = s.RegionInfo; } - /// - /// Register a region with the grid - /// - /// - /// Thrown if region registration fails. - public void RegisterRegion(IInterregionCommsOut comms_out, RegionInfo regionInfos) - { - } - - /// - /// This region is shutting down, de-register all events! - /// De-Register region from Grid! - /// - public void Close() - { - } - public delegate void InformNeighbourThatRegionUpDelegate(INeighbourService nService, RegionInfo region, ulong regionhandle); private void InformNeighborsThatRegionisUpCompleted(IAsyncResult iar) @@ -165,7 +97,6 @@ namespace OpenSim.Region.Framework.Scenes } } - public void InformNeighborsThatRegionisUp(INeighbourService neighbourService, RegionInfo region) { //m_log.Info("[INTER]: " + debugRegionName + ": SceneCommunicationService: Sending InterRegion Notification that region is up " + region.RegionName); @@ -182,7 +113,6 @@ namespace OpenSim.Region.Framework.Scenes } public delegate void SendChildAgentDataUpdateDelegate(AgentPosition cAgentData, UUID scopeID, GridRegion dest); - /// /// This informs all neighboring regions about the settings of it's child agent. @@ -247,19 +177,11 @@ namespace OpenSim.Region.Framework.Scenes } - //public delegate void SendCloseChildAgentDelegate(UUID agentID, ulong regionHandle); - //private void SendCloseChildAgentCompleted(IAsyncResult iar) - //{ - // SendCloseChildAgentDelegate icon = (SendCloseChildAgentDelegate)iar.AsyncState; - // icon.EndInvoke(iar); - //} - /// /// Closes a child agent on a given region /// protected void SendCloseChildAgent(UUID agentID, ulong regionHandle) { - m_log.Debug("[INTERGRID]: Sending close agent to " + regionHandle); // let's do our best, but there's not much we can do if the neighbour doesn't accept. @@ -291,6 +213,5 @@ namespace OpenSim.Region.Framework.Scenes { return m_scene.GridService.GetRegionsByName(UUID.Zero, name, maxNumber); } - } -} +} \ No newline at end of file -- cgit v1.1 From 828e4a5b093c6a67302776137fc0bdbcfded4c9b Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 15 Nov 2011 20:26:42 +0000 Subject: Add comments about trying to avoid synchronous work off the EventManager.OnMakeRootAgent event since this is on the critical path for transfer of avatars from one region to another. --- OpenSim/Region/Framework/Scenes/EventManager.cs | 13 +++++++++---- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 3 +++ 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index bf9ad65..4906665 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs @@ -212,10 +212,15 @@ namespace OpenSim.Region.Framework.Scenes public delegate void OnMakeChildAgentDelegate(ScenePresence presence); public event OnMakeChildAgentDelegate OnMakeChildAgent; - public delegate void OnMakeRootAgentDelegate(ScenePresence presence); public delegate void OnSaveNewWindlightProfileDelegate(); public delegate void OnSendNewWindlightProfileTargetedDelegate(RegionLightShareData wl, UUID user); - public event OnMakeRootAgentDelegate OnMakeRootAgent; + + /// + /// This event is on the critical path for transferring an avatar from one region to another. Try and do + /// as little work on this event as possible, or do work asynchronously. + /// + public event Action OnMakeRootAgent; + public event OnSendNewWindlightProfileTargetedDelegate OnSendNewWindlightProfileTargeted; public event OnSaveNewWindlightProfileDelegate OnSaveNewWindlightProfile; @@ -1322,10 +1327,10 @@ namespace OpenSim.Region.Framework.Scenes public void TriggerOnMakeRootAgent(ScenePresence presence) { - OnMakeRootAgentDelegate handlerMakeRootAgent = OnMakeRootAgent; + Action handlerMakeRootAgent = OnMakeRootAgent; if (handlerMakeRootAgent != null) { - foreach (OnMakeRootAgentDelegate d in handlerMakeRootAgent.GetInvocationList()) + foreach (Action d in handlerMakeRootAgent.GetInvocationList()) { try { diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 189394e..5587073 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -865,6 +865,9 @@ namespace OpenSim.Region.Framework.Scenes /// avatar is actual in the sim. They can perform all actions. /// This change is made whenever an avatar enters a region, whether by crossing over from a neighbouring sim, /// teleporting in or on initial login. + /// + /// This method is on the critical path for transferring an avatar from one region to another. Delay here + /// delays that crossing. /// public void MakeRootAgent(Vector3 pos, bool isFlying) { -- cgit v1.1 From 31ffd5450bab751f4df396b7d099367246b2f552 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Tue, 15 Nov 2011 23:34:28 +0000 Subject: Make tracked per scene thread names conform to the majorirty format. This is () --- OpenSim/Region/Framework/Scenes/Scene.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index fb4b545..c1cbbd4 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1145,7 +1145,9 @@ namespace OpenSim.Region.Framework.Scenes } m_lastUpdate = Util.EnvironmentTickCount(); - HeartbeatThread = Watchdog.StartThread(Heartbeat, "Heartbeat for region " + RegionInfo.RegionName, ThreadPriority.Normal, false); + HeartbeatThread + = Watchdog.StartThread( + Heartbeat, string.Format("Heartbeat ({0})", RegionInfo.RegionName), ThreadPriority.Normal, false); } /// -- cgit v1.1 From baa65d4a15c0907434bb26f2ac85ad881dd3c3ca Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Tue, 15 Nov 2011 17:09:17 -0800 Subject: In AddNewClient, iterator over copy of entities rather than copying under read lock --- OpenSim/Region/Framework/Scenes/Scene.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index c1cbbd4..f10789b 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -2544,11 +2544,12 @@ namespace OpenSim.Region.Framework.Scenes // Send all scene object to the new client Util.FireAndForget(delegate { - Entities.ForEach(delegate(EntityBase e) + EntityBase[] entities = Entities.GetEntities(); + foreach(EntityBase e in entities) { if (e != null && e is SceneObjectGroup) ((SceneObjectGroup)e).SendFullUpdateToClient(client); - }); + } }); } -- cgit v1.1 From bd01c4a5cb40a2df02e9a3a9aee3db0829795f05 Mon Sep 17 00:00:00 2001 From: Dan Lake Date: Wed, 16 Nov 2011 02:33:56 -0800 Subject: Call public ForEach instead of using m_entities directly. No semantic changes, just cleanup --- OpenSim/Region/Framework/Scenes/EntityManager.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/EntityManager.cs b/OpenSim/Region/Framework/Scenes/EntityManager.cs index 1812bd2..b788a3c 100644 --- a/OpenSim/Region/Framework/Scenes/EntityManager.cs +++ b/OpenSim/Region/Framework/Scenes/EntityManager.cs @@ -79,7 +79,7 @@ namespace OpenSim.Region.Framework.Scenes { List tmp = new List(); - m_entities.ForEach( + ForEach( delegate(EntityBase entity) { if (entity is T) @@ -93,7 +93,7 @@ namespace OpenSim.Region.Framework.Scenes public EntityBase[] GetEntities() { List tmp = new List(m_entities.Count); - m_entities.ForEach(delegate(EntityBase entity) { tmp.Add(entity); }); + ForEach(delegate(EntityBase entity) { tmp.Add(entity); }); return tmp.ToArray(); } -- cgit v1.1 From b6d83e9c0f4bd1d450e36270278285be50d5ace8 Mon Sep 17 00:00:00 2001 From: Justin Clark-Casey (justincc) Date: Wed, 16 Nov 2011 23:01:59 +0000 Subject: Stop OdePrim and OdeCharacter insanely overriding set LocalID to set their own private m_localID property but leaving get to return the then unset PhysicsActor.LocalId! Instead, just have both subclasses use the PhysicsActor.LocalID property. This restores collision functionality that fell away in 45c7789 yesterday --- OpenSim/Region/Framework/Scenes/EntityBase.cs | 6 +++++- OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 6 +++++- OpenSim/Region/Framework/Scenes/ScenePresence.cs | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes') diff --git a/OpenSim/Region/Framework/Scenes/EntityBase.cs b/OpenSim/Region/Framework/Scenes/EntityBase.cs index 664be01..741f53b 100644 --- a/OpenSim/Region/Framework/Scenes/EntityBase.cs +++ b/OpenSim/Region/Framework/Scenes/EntityBase.cs @@ -103,7 +103,11 @@ namespace OpenSim.Region.Framework.Scenes public virtual uint LocalId { get { return m_localId; } - set { m_localId = value; } + set + { + m_localId = value; +// m_log.DebugFormat("[ENTITY BASE]: Set part {0} to local id {1}", Name, m_localId); + } } /// diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index f693b36..4e79311 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs @@ -517,7 +517,11 @@ namespace OpenSim.Region.Framework.Scenes public uint LocalId { get { return m_localId; } - set { m_localId = value; } + set + { + m_localId = value; +// m_log.DebugFormat("[SCENE OBJECT PART]: Set part {0} to local id {1}", Name, m_localId); + } } public virtual string Name diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index 5587073..7d901c9 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs @@ -756,7 +756,7 @@ namespace OpenSim.Region.Framework.Scenes m_name = String.Format("{0} {1}", Firstname, Lastname); m_scene = world; m_uuid = client.AgentId; - m_localId = m_scene.AllocateLocalId(); + LocalId = m_scene.AllocateLocalId(); UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid); if (account != null) -- cgit v1.1