diff options
Diffstat (limited to 'OpenSim.RegionServer/world')
-rw-r--r-- | OpenSim.RegionServer/world/Avatar.Update.cs | 57 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/Avatar.cs | 8 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/Primitive.cs | 16 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/Primitive2.cs | 27 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/SceneObject.cs | 4 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/World.PacketHandlers.cs | 56 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/World.cs | 34 | ||||
-rw-r--r-- | OpenSim.RegionServer/world/WorldBase.cs | 10 |
8 files changed, 101 insertions, 111 deletions
diff --git a/OpenSim.RegionServer/world/Avatar.Update.cs b/OpenSim.RegionServer/world/Avatar.Update.cs index ba2965d..75f0bb4 100644 --- a/OpenSim.RegionServer/world/Avatar.Update.cs +++ b/OpenSim.RegionServer/world/Avatar.Update.cs | |||
@@ -28,9 +28,10 @@ namespace OpenSim.world | |||
28 | terse.RegionData.TimeDilation = 64096; | 28 | terse.RegionData.TimeDilation = 64096; |
29 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | 29 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; |
30 | terse.ObjectData[0] = terseBlock; | 30 | terse.ObjectData[0] = terseBlock; |
31 | foreach (SimClient client in m_clientThreads.Values) | 31 | List<Avatar> avList = this.m_world.RequestAvatarList(); |
32 | foreach (Avatar client in avList) | ||
32 | { | 33 | { |
33 | client.OutPacket(terse); | 34 | client.SendPacketToViewer(terse); |
34 | } | 35 | } |
35 | 36 | ||
36 | updateflag = false; | 37 | updateflag = false; |
@@ -51,9 +52,10 @@ namespace OpenSim.world | |||
51 | terse.RegionData.TimeDilation = 64096; | 52 | terse.RegionData.TimeDilation = 64096; |
52 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | 53 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; |
53 | terse.ObjectData[0] = terseBlock; | 54 | terse.ObjectData[0] = terseBlock; |
54 | foreach (SimClient client in m_clientThreads.Values) | 55 | List<Avatar> avList = this.m_world.RequestAvatarList(); |
56 | foreach (Avatar client in avList) | ||
55 | { | 57 | { |
56 | client.OutPacket(terse); | 58 | client.SendPacketToViewer(terse); |
57 | } | 59 | } |
58 | _updateCount = 0; | 60 | _updateCount = 0; |
59 | } | 61 | } |
@@ -134,15 +136,13 @@ namespace OpenSim.world | |||
134 | byte[] pb = pos2.GetBytes(); | 136 | byte[] pb = pos2.GetBytes(); |
135 | Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length); | 137 | Array.Copy(pb, 0, objupdate.ObjectData[0].ObjectData, 16, pb.Length); |
136 | m_world._localNumber++; | 138 | m_world._localNumber++; |
137 | foreach (SimClient client in m_clientThreads.Values) | 139 | |
140 | List<Avatar> avList = this.m_world.RequestAvatarList(); | ||
141 | foreach (Avatar client in avList) | ||
138 | { | 142 | { |
139 | client.OutPacket(objupdate); | 143 | client.SendPacketToViewer(objupdate); |
140 | if (client.AgentID != ControllingClient.AgentID) | 144 | if (client.ControllingClient.AgentID != this.ControllingClient.AgentID) |
141 | { | 145 | { |
142 | //the below line is already in Simclient.cs at line number 245 , directly below the call to this method | ||
143 | //if there is a problem/bug with that , then lets fix it there rather than duplicating it here | ||
144 | //client.ClientAvatar.SendAppearanceToOtherAgent(this.ControllingClient); | ||
145 | |||
146 | SendAppearanceToOtherAgent(client); | 146 | SendAppearanceToOtherAgent(client); |
147 | } | 147 | } |
148 | } | 148 | } |
@@ -169,30 +169,12 @@ namespace OpenSim.world | |||
169 | ControllingClient.OutPacket(aw); | 169 | ControllingClient.OutPacket(aw); |
170 | } | 170 | } |
171 | 171 | ||
172 | public void SendAppearanceToOtherAgent(SimClient userInfo) | 172 | public void SendAppearanceToOtherAgent(Avatar avatarInfo) |
173 | { | 173 | { |
174 | AvatarAppearancePacket avp = new AvatarAppearancePacket(); | 174 | AvatarAppearancePacket avp = new AvatarAppearancePacket(); |
175 | avp.VisualParam = new AvatarAppearancePacket.VisualParamBlock[218]; | 175 | avp.VisualParam = new AvatarAppearancePacket.VisualParamBlock[218]; |
176 | avp.ObjectData.TextureEntry = this.avatarAppearanceTexture.ToBytes(); | 176 | avp.ObjectData.TextureEntry = this.avatarAppearanceTexture.ToBytes(); |
177 | 177 | ||
178 | //a wearable update packets should only be sent about the viewers/agents own avatar not for other avatars | ||
179 | //but it seems that the following code only created the packets and never actually sent them anyway | ||
180 | /*AgentWearablesUpdatePacket aw = new AgentWearablesUpdatePacket(); | ||
181 | aw.AgentData.AgentID = this.ControllingClient.AgentID; | ||
182 | aw.AgentData.SessionID = userInfo.SessionID; | ||
183 | aw.AgentData.SerialNum = 0; //removed the use of a random number as a random number could be less than the last number, should have a counter variable for this | ||
184 | |||
185 | aw.WearableData = new AgentWearablesUpdatePacket.WearableDataBlock[13]; | ||
186 | AgentWearablesUpdatePacket.WearableDataBlock awb; | ||
187 | for (int i = 0; i < 13; i++) | ||
188 | { | ||
189 | awb = new AgentWearablesUpdatePacket.WearableDataBlock(); | ||
190 | awb.WearableType = (byte)i; | ||
191 | awb.AssetID = this.Wearables[i].AssetID; | ||
192 | awb.ItemID = this.Wearables[i].ItemID; | ||
193 | aw.WearableData[i] = awb; | ||
194 | }*/ | ||
195 | |||
196 | AvatarAppearancePacket.VisualParamBlock avblock = null; | 178 | AvatarAppearancePacket.VisualParamBlock avblock = null; |
197 | for (int i = 0; i < 218; i++) | 179 | for (int i = 0; i < 218; i++) |
198 | { | 180 | { |
@@ -203,7 +185,7 @@ namespace OpenSim.world | |||
203 | 185 | ||
204 | avp.Sender.IsTrial = false; | 186 | avp.Sender.IsTrial = false; |
205 | avp.Sender.ID = ControllingClient.AgentID; | 187 | avp.Sender.ID = ControllingClient.AgentID; |
206 | userInfo.OutPacket(avp); | 188 | avatarInfo.SendPacketToViewer(avp); |
207 | } | 189 | } |
208 | 190 | ||
209 | public void SetAppearance(AgentSetAppearancePacket appear) | 191 | public void SetAppearance(AgentSetAppearancePacket appear) |
@@ -214,9 +196,11 @@ namespace OpenSim.world | |||
214 | { | 196 | { |
215 | this.visualParams[i] = appear.VisualParam[i].ParamValue; | 197 | this.visualParams[i] = appear.VisualParam[i].ParamValue; |
216 | } | 198 | } |
217 | foreach (SimClient client in m_clientThreads.Values) | 199 | |
200 | List<Avatar> avList = this.m_world.RequestAvatarList(); | ||
201 | foreach (Avatar client in avList) | ||
218 | { | 202 | { |
219 | if (client.AgentID != ControllingClient.AgentID) | 203 | if (client.ControllingClient.AgentID != this.ControllingClient.AgentID) |
220 | { | 204 | { |
221 | SendAppearanceToOtherAgent(client); | 205 | SendAppearanceToOtherAgent(client); |
222 | } | 206 | } |
@@ -320,11 +304,12 @@ namespace OpenSim.world | |||
320 | ani.AnimationList[0].AnimID = this.current_anim; | 304 | ani.AnimationList[0].AnimID = this.current_anim; |
321 | ani.AnimationList[0].AnimSequenceID = this.anim_seq; | 305 | ani.AnimationList[0].AnimSequenceID = this.anim_seq; |
322 | 306 | ||
323 | //ControllingClient.OutPacket(ani); | 307 | List<Avatar> avList = this.m_world.RequestAvatarList(); |
324 | foreach (SimClient client in m_clientThreads.Values) | 308 | foreach (Avatar client in avList) |
325 | { | 309 | { |
326 | client.OutPacket(ani); | 310 | client.SendPacketToViewer(ani); |
327 | } | 311 | } |
312 | |||
328 | } | 313 | } |
329 | 314 | ||
330 | } | 315 | } |
diff --git a/OpenSim.RegionServer/world/Avatar.cs b/OpenSim.RegionServer/world/Avatar.cs index c684c45..55e5ae4 100644 --- a/OpenSim.RegionServer/world/Avatar.cs +++ b/OpenSim.RegionServer/world/Avatar.cs | |||
@@ -16,7 +16,7 @@ namespace OpenSim.world | |||
16 | public static AvatarAnimations Animations; | 16 | public static AvatarAnimations Animations; |
17 | public string firstname; | 17 | public string firstname; |
18 | public string lastname; | 18 | public string lastname; |
19 | public SimClient ControllingClient; | 19 | public ClientView ControllingClient; |
20 | public LLUUID current_anim; | 20 | public LLUUID current_anim; |
21 | public int anim_seq; | 21 | public int anim_seq; |
22 | private static libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock AvatarTemplate; | 22 | private static libsecondlife.Packets.ObjectUpdatePacket.ObjectDataBlock AvatarTemplate; |
@@ -30,16 +30,16 @@ namespace OpenSim.world | |||
30 | private AvatarWearable[] Wearables; | 30 | private AvatarWearable[] Wearables; |
31 | private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); | 31 | private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); |
32 | private ulong m_regionHandle; | 32 | private ulong m_regionHandle; |
33 | private Dictionary<uint, SimClient> m_clientThreads; | 33 | //private Dictionary<uint, ClientView> m_clientThreads; |
34 | private string m_regionName; | 34 | private string m_regionName; |
35 | private ushort m_regionWaterHeight; | 35 | private ushort m_regionWaterHeight; |
36 | private bool m_regionTerraform; | 36 | private bool m_regionTerraform; |
37 | //private bool childShadowAvatar = false; | 37 | //private bool childShadowAvatar = false; |
38 | 38 | ||
39 | public Avatar(SimClient TheClient, World world, string regionName, Dictionary<uint, SimClient> clientThreads, ulong regionHandle, bool regionTerraform, ushort regionWater) | 39 | public Avatar(ClientView TheClient, World world, string regionName, Dictionary<uint, ClientView> clientThreads, ulong regionHandle, bool regionTerraform, ushort regionWater) |
40 | { | 40 | { |
41 | m_world = world; | 41 | m_world = world; |
42 | m_clientThreads = clientThreads; | 42 | // m_clientThreads = clientThreads; |
43 | m_regionName = regionName; | 43 | m_regionName = regionName; |
44 | m_regionHandle = regionHandle; | 44 | m_regionHandle = regionHandle; |
45 | m_regionTerraform = regionTerraform; | 45 | m_regionTerraform = regionTerraform; |
diff --git a/OpenSim.RegionServer/world/Primitive.cs b/OpenSim.RegionServer/world/Primitive.cs index 4f861f7..e048a9e 100644 --- a/OpenSim.RegionServer/world/Primitive.cs +++ b/OpenSim.RegionServer/world/Primitive.cs | |||
@@ -22,7 +22,7 @@ namespace OpenSim.world | |||
22 | private bool physicsEnabled = false; | 22 | private bool physicsEnabled = false; |
23 | private bool physicstest = false; | 23 | private bool physicstest = false; |
24 | private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); | 24 | private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); |
25 | private Dictionary<uint, SimClient> m_clientThreads; | 25 | private Dictionary<uint, ClientView> m_clientThreads; |
26 | private ulong m_regionHandle; | 26 | private ulong m_regionHandle; |
27 | private const uint FULL_MASK_PERMISSIONS = 2147483647; | 27 | private const uint FULL_MASK_PERMISSIONS = 2147483647; |
28 | 28 | ||
@@ -75,7 +75,7 @@ namespace OpenSim.world | |||
75 | } | 75 | } |
76 | } | 76 | } |
77 | 77 | ||
78 | public Primitive(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, World world) | 78 | public Primitive(Dictionary<uint, ClientView> clientThreads, ulong regionHandle, World world) |
79 | { | 79 | { |
80 | mesh_cutbegin = 0.0f; | 80 | mesh_cutbegin = 0.0f; |
81 | mesh_cutend = 1.0f; | 81 | mesh_cutend = 1.0f; |
@@ -104,7 +104,7 @@ namespace OpenSim.world | |||
104 | return this.primData.ToBytes(); | 104 | return this.primData.ToBytes(); |
105 | } | 105 | } |
106 | 106 | ||
107 | public void GetProperites(SimClient client) | 107 | public void GetProperites(ClientView client) |
108 | { | 108 | { |
109 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); | 109 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); |
110 | proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; | 110 | proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; |
@@ -164,7 +164,7 @@ namespace OpenSim.world | |||
164 | } | 164 | } |
165 | if (this.newPrimFlag) | 165 | if (this.newPrimFlag) |
166 | { | 166 | { |
167 | foreach (SimClient client in m_clientThreads.Values) | 167 | foreach (ClientView client in m_clientThreads.Values) |
168 | { | 168 | { |
169 | client.OutPacket(OurPacket); | 169 | client.OutPacket(OurPacket); |
170 | } | 170 | } |
@@ -177,7 +177,7 @@ namespace OpenSim.world | |||
177 | terse.RegionData.TimeDilation = 64096; | 177 | terse.RegionData.TimeDilation = 64096; |
178 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | 178 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; |
179 | terse.ObjectData[0] = this.CreateImprovedBlock(); | 179 | terse.ObjectData[0] = this.CreateImprovedBlock(); |
180 | foreach (SimClient client in m_clientThreads.Values) | 180 | foreach (ClientView client in m_clientThreads.Values) |
181 | { | 181 | { |
182 | client.OutPacket(terse); | 182 | client.OutPacket(terse); |
183 | } | 183 | } |
@@ -185,7 +185,7 @@ namespace OpenSim.world | |||
185 | } | 185 | } |
186 | else if (this.dirtyFlag) | 186 | else if (this.dirtyFlag) |
187 | { | 187 | { |
188 | foreach (SimClient client in m_clientThreads.Values) | 188 | foreach (ClientView client in m_clientThreads.Values) |
189 | { | 189 | { |
190 | UpdateClient(client); | 190 | UpdateClient(client); |
191 | } | 191 | } |
@@ -202,7 +202,7 @@ namespace OpenSim.world | |||
202 | terse.RegionData.TimeDilation = 64096; | 202 | terse.RegionData.TimeDilation = 64096; |
203 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; | 203 | terse.ObjectData = new ImprovedTerseObjectUpdatePacket.ObjectDataBlock[1]; |
204 | terse.ObjectData[0] = this.CreateImprovedBlock(); | 204 | terse.ObjectData[0] = this.CreateImprovedBlock(); |
205 | foreach (SimClient client in m_clientThreads.Values) | 205 | foreach (ClientView client in m_clientThreads.Values) |
206 | { | 206 | { |
207 | client.OutPacket(terse); | 207 | client.OutPacket(terse); |
208 | } | 208 | } |
@@ -220,7 +220,7 @@ namespace OpenSim.world | |||
220 | } | 220 | } |
221 | } | 221 | } |
222 | 222 | ||
223 | public void UpdateClient(SimClient RemoteClient) | 223 | public void UpdateClient(ClientView RemoteClient) |
224 | { | 224 | { |
225 | 225 | ||
226 | LLVector3 lPos; | 226 | LLVector3 lPos; |
diff --git a/OpenSim.RegionServer/world/Primitive2.cs b/OpenSim.RegionServer/world/Primitive2.cs index 3b39456..6d071d4 100644 --- a/OpenSim.RegionServer/world/Primitive2.cs +++ b/OpenSim.RegionServer/world/Primitive2.cs | |||
@@ -16,7 +16,7 @@ namespace OpenSim.world | |||
16 | protected PrimData primData; | 16 | protected PrimData primData; |
17 | //private ObjectUpdatePacket OurPacket; | 17 | //private ObjectUpdatePacket OurPacket; |
18 | private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); | 18 | private LLVector3 positionLastFrame = new LLVector3(0, 0, 0); |
19 | private Dictionary<uint, SimClient> m_clientThreads; | 19 | private Dictionary<uint, ClientView> m_clientThreads; |
20 | private ulong m_regionHandle; | 20 | private ulong m_regionHandle; |
21 | private const uint FULL_MASK_PERMISSIONS = 2147483647; | 21 | private const uint FULL_MASK_PERMISSIONS = 2147483647; |
22 | private bool physicsEnabled = false; | 22 | private bool physicsEnabled = false; |
@@ -58,7 +58,7 @@ namespace OpenSim.world | |||
58 | } | 58 | } |
59 | #endregion | 59 | #endregion |
60 | 60 | ||
61 | public Primitive2(Dictionary<uint, SimClient> clientThreads, ulong regionHandle, World world) | 61 | public Primitive2(Dictionary<uint, ClientView> clientThreads, ulong regionHandle, World world) |
62 | { | 62 | { |
63 | m_clientThreads = clientThreads; | 63 | m_clientThreads = clientThreads; |
64 | m_regionHandle = regionHandle; | 64 | m_regionHandle = regionHandle; |
@@ -66,6 +66,17 @@ namespace OpenSim.world | |||
66 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); | 66 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); |
67 | } | 67 | } |
68 | 68 | ||
69 | public Primitive2(Dictionary<uint, ClientView> clientThreads, ulong regionHandle, World world, LLUUID owner) | ||
70 | { | ||
71 | m_clientThreads = clientThreads; | ||
72 | m_regionHandle = regionHandle; | ||
73 | m_world = world; | ||
74 | inventoryItems = new Dictionary<LLUUID, InventoryItem>(); | ||
75 | this.primData = new PrimData(); | ||
76 | this.primData.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | ||
77 | this.primData.OwnerID = owner; | ||
78 | } | ||
79 | |||
69 | public byte[] GetByteArray() | 80 | public byte[] GetByteArray() |
70 | { | 81 | { |
71 | byte[] result = null; | 82 | byte[] result = null; |
@@ -159,7 +170,7 @@ namespace OpenSim.world | |||
159 | 170 | ||
160 | } | 171 | } |
161 | 172 | ||
162 | public void GetProperites(SimClient client) | 173 | public void GetProperites(ClientView client) |
163 | { | 174 | { |
164 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); | 175 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); |
165 | proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; | 176 | proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; |
@@ -202,12 +213,12 @@ namespace OpenSim.world | |||
202 | return null; | 213 | return null; |
203 | } | 214 | } |
204 | 215 | ||
205 | public void RequestInventoryInfo(SimClient simClient, RequestTaskInventoryPacket packet) | 216 | public void RequestInventoryInfo(ClientView simClient, RequestTaskInventoryPacket packet) |
206 | { | 217 | { |
207 | 218 | ||
208 | } | 219 | } |
209 | 220 | ||
210 | public void RequestXferInventory(SimClient simClient, ulong xferID) | 221 | public void RequestXferInventory(ClientView simClient, ulong xferID) |
211 | { | 222 | { |
212 | //will only currently work if the total size of the inventory data array is under about 1000 bytes | 223 | //will only currently work if the total size of the inventory data array is under about 1000 bytes |
213 | SendXferPacketPacket send = new SendXferPacketPacket(); | 224 | SendXferPacketPacket send = new SendXferPacketPacket(); |
@@ -246,7 +257,7 @@ namespace OpenSim.world | |||
246 | #region Update viewers Methods | 257 | #region Update viewers Methods |
247 | 258 | ||
248 | //should change these mehtods, so that outgoing packets are sent through the avatar class | 259 | //should change these mehtods, so that outgoing packets are sent through the avatar class |
249 | public void SendFullUpdateToClient(SimClient remoteClient) | 260 | public void SendFullUpdateToClient(ClientView remoteClient) |
250 | { | 261 | { |
251 | LLVector3 lPos; | 262 | LLVector3 lPos; |
252 | if (this._physActor != null && this.physicsEnabled) | 263 | if (this._physActor != null && this.physicsEnabled) |
@@ -273,7 +284,7 @@ namespace OpenSim.world | |||
273 | 284 | ||
274 | } | 285 | } |
275 | 286 | ||
276 | public void SendTerseUpdateToClient(SimClient RemoteClient) | 287 | public void SendTerseUpdateToClient(ClientView RemoteClient) |
277 | { | 288 | { |
278 | 289 | ||
279 | } | 290 | } |
@@ -316,7 +327,7 @@ namespace OpenSim.world | |||
316 | PData.PathTwist = addPacket.ObjectData.PathTwist; | 327 | PData.PathTwist = addPacket.ObjectData.PathTwist; |
317 | PData.PathTwistBegin = addPacket.ObjectData.PathTwistBegin; | 328 | PData.PathTwistBegin = addPacket.ObjectData.PathTwistBegin; |
318 | LLVector3 pos1 = addPacket.ObjectData.RayEnd; | 329 | LLVector3 pos1 = addPacket.ObjectData.RayEnd; |
319 | this.primData.FullID = this.uuid = LLUUID.Random(); | 330 | this.primData.FullID = this.uuid = LLUUID.Random(); |
320 | this.localid = (uint)(localID); | 331 | this.localid = (uint)(localID); |
321 | this.primData.Position = this.Pos = pos1; | 332 | this.primData.Position = this.Pos = pos1; |
322 | } | 333 | } |
diff --git a/OpenSim.RegionServer/world/SceneObject.cs b/OpenSim.RegionServer/world/SceneObject.cs index 5b5a7b2..a846fb5 100644 --- a/OpenSim.RegionServer/world/SceneObject.cs +++ b/OpenSim.RegionServer/world/SceneObject.cs | |||
@@ -15,7 +15,7 @@ namespace OpenSim.world | |||
15 | { | 15 | { |
16 | private LLUUID rootUUID; | 16 | private LLUUID rootUUID; |
17 | private Dictionary<LLUUID, Primitive2> ChildPrimitives = new Dictionary<LLUUID, Primitive2>(); | 17 | private Dictionary<LLUUID, Primitive2> ChildPrimitives = new Dictionary<LLUUID, Primitive2>(); |
18 | private Dictionary<uint, SimClient> m_clientThreads; | 18 | private Dictionary<uint, ClientView> m_clientThreads; |
19 | private World m_world; | 19 | private World m_world; |
20 | 20 | ||
21 | public SceneObject() | 21 | public SceneObject() |
@@ -42,7 +42,7 @@ namespace OpenSim.world | |||
42 | 42 | ||
43 | } | 43 | } |
44 | 44 | ||
45 | public void GetProperites(SimClient client) | 45 | public void GetProperites(ClientView client) |
46 | { | 46 | { |
47 | /* | 47 | /* |
48 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); | 48 | ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); |
diff --git a/OpenSim.RegionServer/world/World.PacketHandlers.cs b/OpenSim.RegionServer/world/World.PacketHandlers.cs index 175b777..27f200f 100644 --- a/OpenSim.RegionServer/world/World.PacketHandlers.cs +++ b/OpenSim.RegionServer/world/World.PacketHandlers.cs | |||
@@ -16,7 +16,7 @@ namespace OpenSim.world | |||
16 | public partial class World | 16 | public partial class World |
17 | { | 17 | { |
18 | 18 | ||
19 | public bool ModifyTerrain(SimClient simClient, Packet packet) | 19 | public bool ModifyTerrain(ClientView simClient, Packet packet) |
20 | { | 20 | { |
21 | ModifyLandPacket modify = (ModifyLandPacket)packet; | 21 | ModifyLandPacket modify = (ModifyLandPacket)packet; |
22 | 22 | ||
@@ -42,68 +42,44 @@ namespace OpenSim.world | |||
42 | return true; | 42 | return true; |
43 | } | 43 | } |
44 | 44 | ||
45 | public bool SimChat(SimClient simClient, Packet packet) | 45 | public void SimChat(byte[] message, byte type, LLVector3 fromPos, string fromName, LLUUID fromAgentID) |
46 | { | 46 | { |
47 | System.Text.Encoding enc = System.Text.Encoding.ASCII; | 47 | foreach (ClientView client in m_clientThreads.Values) |
48 | ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)packet; | ||
49 | if (Util.FieldToString(inchatpack.ChatData.Message) == "") | ||
50 | { | ||
51 | //empty message so don't bother with it | ||
52 | return true; | ||
53 | } | ||
54 | |||
55 | string fromName = simClient.ClientAvatar.firstname + " " + simClient.ClientAvatar.lastname; | ||
56 | byte[] message = inchatpack.ChatData.Message; | ||
57 | byte type = inchatpack.ChatData.Type; | ||
58 | LLVector3 fromPos = simClient.ClientAvatar.Pos; | ||
59 | LLUUID fromAgentID = simClient.AgentID; | ||
60 | |||
61 | libsecondlife.Packets.ChatFromSimulatorPacket reply = new ChatFromSimulatorPacket(); | ||
62 | reply.ChatData.Audible = 1; | ||
63 | reply.ChatData.Message = message; | ||
64 | reply.ChatData.ChatType = type; | ||
65 | reply.ChatData.SourceType = 1; | ||
66 | reply.ChatData.Position = fromPos; | ||
67 | reply.ChatData.FromName = enc.GetBytes(fromName + "\0"); | ||
68 | reply.ChatData.OwnerID = fromAgentID; | ||
69 | reply.ChatData.SourceID = fromAgentID; | ||
70 | |||
71 | foreach (SimClient client in m_clientThreads.Values) | ||
72 | { | 48 | { |
73 | // int dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y)); | 49 | // int dis = Util.fast_distance2d((int)(client.ClientAvatar.Pos.X - simClient.ClientAvatar.Pos.X), (int)(client.ClientAvatar.Pos.Y - simClient.ClientAvatar.Pos.Y)); |
74 | int dis = (int)client.ClientAvatar.Pos.GetDistanceTo(simClient.ClientAvatar.Pos); | 50 | int dis = (int)client.ClientAvatar.Pos.GetDistanceTo(fromPos); |
75 | 51 | ||
76 | switch (inchatpack.ChatData.Type) | 52 | switch (type) |
77 | { | 53 | { |
78 | case 0: // Whisper | 54 | case 0: // Whisper |
79 | if ((dis < 10) && (dis > -10)) | 55 | if ((dis < 10) && (dis > -10)) |
80 | { | 56 | { |
81 | client.OutPacket(reply); | 57 | //should change so the message is sent through the avatar rather than direct to the ClientView |
58 | client.SendChatMessage(message, type, fromPos, fromName, fromAgentID); | ||
82 | } | 59 | } |
83 | break; | 60 | break; |
84 | case 1: // Say | 61 | case 1: // Say |
85 | if ((dis < 30) && (dis > -30)) | 62 | if ((dis < 30) && (dis > -30)) |
86 | { | 63 | { |
87 | client.OutPacket(reply); | 64 | client.SendChatMessage(message, type, fromPos, fromName, fromAgentID); |
88 | } | 65 | } |
89 | break; | 66 | break; |
90 | case 2: // Shout | 67 | case 2: // Shout |
91 | if ((dis < 100) && (dis > -100)) | 68 | if ((dis < 100) && (dis > -100)) |
92 | { | 69 | { |
93 | client.OutPacket(reply); | 70 | client.SendChatMessage(message, type, fromPos, fromName, fromAgentID); |
94 | } | 71 | } |
95 | break; | 72 | break; |
96 | 73 | ||
97 | case 0xff: // Broadcast | 74 | case 0xff: // Broadcast |
98 | client.OutPacket(reply); | 75 | client.SendChatMessage(message, type, fromPos, fromName, fromAgentID); |
99 | break; | 76 | break; |
100 | } | 77 | } |
101 | 78 | ||
102 | } | 79 | } |
103 | return true; | ||
104 | } | 80 | } |
105 | 81 | ||
106 | public bool RezObject(SimClient simClient, Packet packet) | 82 | public bool RezObject(ClientView simClient, Packet packet) |
107 | { | 83 | { |
108 | RezObjectPacket rezPacket = (RezObjectPacket)packet; | 84 | RezObjectPacket rezPacket = (RezObjectPacket)packet; |
109 | AgentInventory inven = this._inventoryCache.GetAgentsInventory(simClient.AgentID); | 85 | AgentInventory inven = this._inventoryCache.GetAgentsInventory(simClient.AgentID); |
@@ -126,7 +102,7 @@ namespace OpenSim.world | |||
126 | return true; | 102 | return true; |
127 | } | 103 | } |
128 | 104 | ||
129 | public bool DeRezObject(SimClient simClient, Packet packet) | 105 | public bool DeRezObject(ClientView simClient, Packet packet) |
130 | { | 106 | { |
131 | DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)packet; | 107 | DeRezObjectPacket DeRezPacket = (DeRezObjectPacket)packet; |
132 | 108 | ||
@@ -151,7 +127,7 @@ namespace OpenSim.world | |||
151 | kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; | 127 | kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; |
152 | kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); | 128 | kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); |
153 | kill.ObjectData[0].ID = ent.localid; | 129 | kill.ObjectData[0].ID = ent.localid; |
154 | foreach (SimClient client in m_clientThreads.Values) | 130 | foreach (ClientView client in m_clientThreads.Values) |
155 | { | 131 | { |
156 | client.OutPacket(kill); | 132 | client.OutPacket(kill); |
157 | } | 133 | } |
@@ -201,7 +177,7 @@ namespace OpenSim.world | |||
201 | kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; | 177 | kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; |
202 | kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); | 178 | kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); |
203 | kill.ObjectData[0].ID = selectedEnt.localid; | 179 | kill.ObjectData[0].ID = selectedEnt.localid; |
204 | foreach (SimClient client in m_clientThreads.Values) | 180 | foreach (ClientView client in m_clientThreads.Values) |
205 | { | 181 | { |
206 | client.OutPacket(kill); | 182 | client.OutPacket(kill); |
207 | } | 183 | } |
@@ -215,7 +191,7 @@ namespace OpenSim.world | |||
215 | return true; | 191 | return true; |
216 | } | 192 | } |
217 | 193 | ||
218 | public void RequestMapBlock(SimClient simClient, int minX, int minY, int maxX, int maxY) | 194 | public void RequestMapBlock(ClientView simClient, int minX, int minY, int maxX, int maxY) |
219 | { | 195 | { |
220 | System.Text.Encoding _enc = System.Text.Encoding.ASCII; | 196 | System.Text.Encoding _enc = System.Text.Encoding.ASCII; |
221 | if (((m_regInfo.RegionLocX > minX) && (m_regInfo.RegionLocX < maxX)) && ((m_regInfo.RegionLocY > minY) && (m_regInfo.RegionLocY < maxY))) | 197 | if (((m_regInfo.RegionLocX > minX) && (m_regInfo.RegionLocX < maxX)) && ((m_regInfo.RegionLocY > minY) && (m_regInfo.RegionLocY < maxY))) |
diff --git a/OpenSim.RegionServer/world/World.cs b/OpenSim.RegionServer/world/World.cs index 983e66d..c90e3f6 100644 --- a/OpenSim.RegionServer/world/World.cs +++ b/OpenSim.RegionServer/world/World.cs | |||
@@ -57,7 +57,7 @@ namespace OpenSim.world | |||
57 | /// <param name="clientThreads">Dictionary to contain client threads</param> | 57 | /// <param name="clientThreads">Dictionary to contain client threads</param> |
58 | /// <param name="regionHandle">Region Handle for this region</param> | 58 | /// <param name="regionHandle">Region Handle for this region</param> |
59 | /// <param name="regionName">Region Name for this region</param> | 59 | /// <param name="regionName">Region Name for this region</param> |
60 | public World(Dictionary<uint, SimClient> clientThreads, RegionInfo regInfo, ulong regionHandle, string regionName) | 60 | public World(Dictionary<uint, ClientView> clientThreads, RegionInfo regInfo, ulong regionHandle, string regionName) |
61 | { | 61 | { |
62 | try | 62 | try |
63 | { | 63 | { |
@@ -324,7 +324,7 @@ namespace OpenSim.world | |||
324 | } | 324 | } |
325 | this.localStorage.SaveMap(this.Terrain.getHeights1D()); | 325 | this.localStorage.SaveMap(this.Terrain.getHeights1D()); |
326 | 326 | ||
327 | foreach (SimClient client in m_clientThreads.Values) | 327 | foreach (ClientView client in m_clientThreads.Values) |
328 | { | 328 | { |
329 | this.SendLayerData(client); | 329 | this.SendLayerData(client); |
330 | } | 330 | } |
@@ -355,7 +355,7 @@ namespace OpenSim.world | |||
355 | } | 355 | } |
356 | this.localStorage.SaveMap(this.Terrain.getHeights1D()); | 356 | this.localStorage.SaveMap(this.Terrain.getHeights1D()); |
357 | 357 | ||
358 | foreach (SimClient client in m_clientThreads.Values) | 358 | foreach (ClientView client in m_clientThreads.Values) |
359 | { | 359 | { |
360 | this.SendLayerData(client); | 360 | this.SendLayerData(client); |
361 | } | 361 | } |
@@ -389,7 +389,7 @@ namespace OpenSim.world | |||
389 | } | 389 | } |
390 | this.localStorage.SaveMap(this.Terrain.getHeights1D()); | 390 | this.localStorage.SaveMap(this.Terrain.getHeights1D()); |
391 | 391 | ||
392 | foreach (SimClient client in m_clientThreads.Values) | 392 | foreach (ClientView client in m_clientThreads.Values) |
393 | { | 393 | { |
394 | this.SendLayerData(pointx, pointy, client); | 394 | this.SendLayerData(pointx, pointy, client); |
395 | } | 395 | } |
@@ -437,7 +437,7 @@ namespace OpenSim.world | |||
437 | /// Sends prims to a client | 437 | /// Sends prims to a client |
438 | /// </summary> | 438 | /// </summary> |
439 | /// <param name="RemoteClient">Client to send to</param> | 439 | /// <param name="RemoteClient">Client to send to</param> |
440 | public void GetInitialPrims(SimClient RemoteClient) | 440 | public void GetInitialPrims(ClientView RemoteClient) |
441 | { | 441 | { |
442 | try | 442 | try |
443 | { | 443 | { |
@@ -495,7 +495,7 @@ namespace OpenSim.world | |||
495 | } | 495 | } |
496 | } | 496 | } |
497 | 497 | ||
498 | public void AddNewPrim(ObjectAddPacket addPacket, SimClient AgentClient) | 498 | public void AddNewPrim(ObjectAddPacket addPacket, ClientView AgentClient) |
499 | { | 499 | { |
500 | AddNewPrim(addPacket, AgentClient.AgentID); | 500 | AddNewPrim(addPacket, AgentClient.AgentID); |
501 | } | 501 | } |
@@ -530,8 +530,9 @@ namespace OpenSim.world | |||
530 | 530 | ||
531 | #region Add/Remove Avatar Methods | 531 | #region Add/Remove Avatar Methods |
532 | 532 | ||
533 | public override void AddViewerAgent(SimClient agentClient) | 533 | public override void AddViewerAgent(ClientView agentClient) |
534 | { | 534 | { |
535 | agentClient.OnChatFromViewer += new ClientView.ChatFromViewer(this.SimChat); | ||
535 | try | 536 | try |
536 | { | 537 | { |
537 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Creating new avatar for remote viewer agent"); | 538 | OpenSim.Framework.Console.MainConsole.Instance.WriteLine(OpenSim.Framework.Console.LogPriority.LOW, "World.cs:AddViewerAgent() - Creating new avatar for remote viewer agent"); |
@@ -576,7 +577,7 @@ namespace OpenSim.world | |||
576 | } | 577 | } |
577 | } | 578 | } |
578 | 579 | ||
579 | public override void RemoveViewerAgent(SimClient agentClient) | 580 | public override void RemoveViewerAgent(ClientView agentClient) |
580 | { | 581 | { |
581 | try | 582 | try |
582 | { | 583 | { |
@@ -600,6 +601,23 @@ namespace OpenSim.world | |||
600 | } | 601 | } |
601 | #endregion | 602 | #endregion |
602 | 603 | ||
604 | #region Request Avatars List Methods | ||
605 | //The idea is to have a group of method that return a list of avatars meeting some requirement | ||
606 | // ie it could be all Avatars within a certain range of the calling prim/avatar. | ||
607 | |||
608 | public List<Avatar> RequestAvatarList() | ||
609 | { | ||
610 | List<Avatar> result = new List<Avatar>(); | ||
611 | |||
612 | foreach (Avatar avatar in Avatars.Values) | ||
613 | { | ||
614 | result.Add(avatar); | ||
615 | } | ||
616 | |||
617 | return result; | ||
618 | } | ||
619 | #endregion | ||
620 | |||
603 | #region ShutDown | 621 | #region ShutDown |
604 | /// <summary> | 622 | /// <summary> |
605 | /// Tidy before shutdown | 623 | /// Tidy before shutdown |
diff --git a/OpenSim.RegionServer/world/WorldBase.cs b/OpenSim.RegionServer/world/WorldBase.cs index b8c086d..edc5518 100644 --- a/OpenSim.RegionServer/world/WorldBase.cs +++ b/OpenSim.RegionServer/world/WorldBase.cs | |||
@@ -20,7 +20,7 @@ namespace OpenSim.world | |||
20 | public class WorldBase | 20 | public class WorldBase |
21 | { | 21 | { |
22 | public Dictionary<libsecondlife.LLUUID, Entity> Entities; | 22 | public Dictionary<libsecondlife.LLUUID, Entity> Entities; |
23 | protected Dictionary<uint, SimClient> m_clientThreads; | 23 | protected Dictionary<uint, ClientView> m_clientThreads; |
24 | protected ulong m_regionHandle; | 24 | protected ulong m_regionHandle; |
25 | protected string m_regionName; | 25 | protected string m_regionName; |
26 | protected InventoryCache _inventoryCache; | 26 | protected InventoryCache _inventoryCache; |
@@ -90,7 +90,7 @@ namespace OpenSim.world | |||
90 | /// Send the region heightmap to the client | 90 | /// Send the region heightmap to the client |
91 | /// </summary> | 91 | /// </summary> |
92 | /// <param name="RemoteClient">Client to send to</param> | 92 | /// <param name="RemoteClient">Client to send to</param> |
93 | public virtual void SendLayerData(SimClient RemoteClient) | 93 | public virtual void SendLayerData(ClientView RemoteClient) |
94 | { | 94 | { |
95 | try | 95 | try |
96 | { | 96 | { |
@@ -122,7 +122,7 @@ namespace OpenSim.world | |||
122 | /// <param name="px">Patch coordinate (x) 0..16</param> | 122 | /// <param name="px">Patch coordinate (x) 0..16</param> |
123 | /// <param name="py">Patch coordinate (y) 0..16</param> | 123 | /// <param name="py">Patch coordinate (y) 0..16</param> |
124 | /// <param name="RemoteClient">The client to send to</param> | 124 | /// <param name="RemoteClient">The client to send to</param> |
125 | public void SendLayerData(int px, int py, SimClient RemoteClient) | 125 | public void SendLayerData(int px, int py, ClientView RemoteClient) |
126 | { | 126 | { |
127 | try | 127 | try |
128 | { | 128 | { |
@@ -148,7 +148,7 @@ namespace OpenSim.world | |||
148 | /// Add a new Agent's avatar | 148 | /// Add a new Agent's avatar |
149 | /// </summary> | 149 | /// </summary> |
150 | /// <param name="agentClient"></param> | 150 | /// <param name="agentClient"></param> |
151 | public virtual void AddViewerAgent(SimClient agentClient) | 151 | public virtual void AddViewerAgent(ClientView agentClient) |
152 | { | 152 | { |
153 | 153 | ||
154 | } | 154 | } |
@@ -157,7 +157,7 @@ namespace OpenSim.world | |||
157 | /// Remove a Agent's avatar | 157 | /// Remove a Agent's avatar |
158 | /// </summary> | 158 | /// </summary> |
159 | /// <param name="agentClient"></param> | 159 | /// <param name="agentClient"></param> |
160 | public virtual void RemoveViewerAgent(SimClient agentClient) | 160 | public virtual void RemoveViewerAgent(ClientView agentClient) |
161 | { | 161 | { |
162 | 162 | ||
163 | } | 163 | } |