From b9808f831428876ec9ede8ce87a159566b97a850 Mon Sep 17 00:00:00 2001 From: lbsa71 Date: Fri, 21 Sep 2007 04:58:40 +0000 Subject: * First example of moving stuff to a Region layer * Also, changed RegionPresence to 'RegionSubscription' - let's just see where we land with this... --- OpenSim/Region/Environment/Scenes/Scene.cs | 16 +++++++--- OpenSim/Region/Environment/Scenes/SceneBase.cs | 11 ------- .../Region/Environment/Scenes/SceneObjectPart.cs | 9 ------ OpenSim/Region/Environment/Scenes/ScenePresence.cs | 34 ++++++++-------------- 4 files changed, 24 insertions(+), 46 deletions(-) (limited to 'OpenSim/Region/Environment/Scenes') diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 55d760e..62e7941 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -49,6 +49,7 @@ using OpenSim.Region.Environment.Types; using OpenSim.Region.Physics.Manager; using OpenSim.Region.Terrain; using Timer = System.Timers.Timer; +using OpenSim.Region.Environment.Regions; namespace OpenSim.Region.Environment.Scenes { @@ -63,6 +64,8 @@ namespace OpenSim.Region.Environment.Scenes /// publicized so it can be accessed from SceneObjectGroup. protected float timeStep = 0.1f; + private Regions.Region m_region; + private Random Rand = new Random(); private uint _primCount = 702000; private readonly Mutex _primAllocateMutex = new Mutex(false); @@ -159,6 +162,8 @@ namespace OpenSim.Region.Environment.Scenes { updateLock = new Mutex(false); + m_region = new Regions.Region(this); + m_moduleLoader = moduleLoader; authenticateHandler = authen; commsManager = commsMan; @@ -302,7 +307,7 @@ namespace OpenSim.Region.Environment.Scenes float[] terData = Terrain.GetHeights1D(); - ForEachScenePresence(delegate(ScenePresence presence) + Broadcast( delegate( IClientAPI client ) { for (int x = 0; x < 16; x++) { @@ -310,8 +315,7 @@ namespace OpenSim.Region.Environment.Scenes { if (Terrain.Tainted(x * 16, y * 16)) { - SendLayerData(x, y, presence.ControllingClient, - terData); + client.SendLayerData(x, y, terData); } } } @@ -366,6 +370,10 @@ namespace OpenSim.Region.Environment.Scenes updateLock.ReleaseMutex(); } + internal void Broadcast(Action whatToDo) + { + m_region.Broadcast( whatToDo ); + } /// /// /// @@ -396,7 +404,7 @@ namespace OpenSim.Region.Environment.Scenes storageManager.DataStore.StoreTerrain(Terrain.GetHeights2DD()); - ForEachScenePresence(delegate(ScenePresence presence) { SendLayerData(presence.ControllingClient); }); + Broadcast(delegate(IClientAPI client ) { SendLayerData( client ); }); foreach (LLUUID UUID in Entities.Keys) { diff --git a/OpenSim/Region/Environment/Scenes/SceneBase.cs b/OpenSim/Region/Environment/Scenes/SceneBase.cs index 7b2e17f..fc81d5f 100644 --- a/OpenSim/Region/Environment/Scenes/SceneBase.cs +++ b/OpenSim/Region/Environment/Scenes/SceneBase.cs @@ -88,17 +88,6 @@ namespace OpenSim.Region.Environment.Scenes RemoteClient.SendLayerData(Terrain.GetHeights1D()); } - /// - /// Sends a specified patch to a client - /// - /// Patch coordinate (x) 0..16 - /// Patch coordinate (y) 0..16 - /// The client to send to - public virtual void SendLayerData(int px, int py, IClientAPI RemoteClient, float[] terrain) - { - RemoteClient.SendLayerData(px, py, terrain); - } - #endregion #region Add/Remove Agent/Avatar diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 468def0..406db9b 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs @@ -777,10 +777,6 @@ namespace OpenSim.Region.Environment.Scenes m_parentGroup.SendPartTerseUpdate(remoteClient, this); } - /// - /// - /// - /// public void SendTerseUpdateToClient(IClientAPI remoteClient) { LLVector3 lPos; @@ -789,11 +785,6 @@ namespace OpenSim.Region.Environment.Scenes remoteClient.SendPrimTerseUpdate(m_regionHandle, 64096, LocalID, lPos, mRot); } - /// - /// - /// - /// - /// public void SendTerseUpdateToClient(IClientAPI remoteClient, LLVector3 lPos) { LLQuaternion mRot = RotationOffset; diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 23e1035..41e555a 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -69,8 +69,6 @@ namespace OpenSim.Region.Environment.Scenes private readonly Vector3[] Dir_Vectors = new Vector3[6]; private LLVector3 lastPhysPos = new LLVector3(); - private RegionPresence m_regionPresence; - private enum Dir_ControlFlags { DIR_CONTROL_FLAG_FOWARD = MainAvatar.ControlFlags.AGENT_CONTROL_AT_POS, @@ -216,6 +214,13 @@ namespace OpenSim.Region.Environment.Scenes set { m_isChildAgent = value; } } + private RegionSubscription m_regionSubscription; + + public RegionSubscription RegionSubscription + { + get { return m_regionSubscription; } + } + #endregion #region Constructor(s) @@ -229,7 +234,7 @@ namespace OpenSim.Region.Environment.Scenes /// public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo) { - m_regionPresence = new RegionPresence( client ); + m_regionSubscription = new RegionSubscription( client ); m_scene = world; m_uuid = client.AgentId; @@ -331,21 +336,6 @@ namespace OpenSim.Region.Environment.Scenes #region Status Methods - /// - /// Not Used, most likely can be deleted - /// - /// - public void ChildStatusChange(bool status) - { - m_isChildAgent = status; - - if (m_isChildAgent == true) - { - Velocity = new LLVector3(0, 0, 0); - AbsolutePosition = new LLVector3(128, 128, 70); - } - } - public void MakeAvatarPhysical(LLVector3 pos, bool isFlying) { newAvatar = true; @@ -425,7 +415,9 @@ namespace OpenSim.Region.Environment.Scenes { look = new LLVector3(0.99f, 0.042f, 0); } + m_controllingClient.MoveAgentIntoRegion(m_regionInfo, AbsolutePosition, look); + if (m_isChildAgent) { m_isChildAgent = false; @@ -434,10 +426,6 @@ namespace OpenSim.Region.Environment.Scenes } } - /// - /// - /// - /// public void HandleAgentUpdate(IClientAPI remoteClient, uint flags, LLQuaternion bodyRotation) { if (m_isChildAgent) @@ -445,6 +433,7 @@ namespace OpenSim.Region.Environment.Scenes Console.WriteLine("DEBUG: HandleAgentUpdate: child agent"); return; } + if(PhysicsActor==null) { Console.WriteLine("DEBUG: HandleAgentUpdate: null PhysicsActor!"); return; @@ -526,6 +515,7 @@ namespace OpenSim.Region.Environment.Scenes Console.WriteLine("DEBUG: AddNewMovement: child agent"); return; } + NewForce newVelocity = new NewForce(); Vector3 direc = rotation*vec; direc.Normalize(); -- cgit v1.1