aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs101
1 files changed, 51 insertions, 50 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index bcffe39..c75136f 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -40,10 +40,8 @@ namespace OpenSim.Region.Environment.Scenes
40{ 40{
41 public partial class ScenePresence : Entity 41 public partial class ScenePresence : Entity
42 { 42 {
43 public static bool PhysicsEngineFlying = false;
44 public static AvatarAnimations Animations; 43 public static AvatarAnimations Animations;
45 public static byte[] DefaultTexture; 44 public static byte[] DefaultTexture;
46 public IClientAPI ControllingClient;
47 public LLUUID current_anim; 45 public LLUUID current_anim;
48 public int anim_seq; 46 public int anim_seq;
49 private bool updateflag = false; 47 private bool updateflag = false;
@@ -56,8 +54,6 @@ namespace OpenSim.Region.Environment.Scenes
56 private AvatarWearable[] Wearables; 54 private AvatarWearable[] Wearables;
57 private LLObject.TextureEntry m_textureEntry; 55 private LLObject.TextureEntry m_textureEntry;
58 56
59 private ulong m_regionHandle;
60
61 public bool childAgent = true; 57 public bool childAgent = true;
62 public bool IsRestrictedToRegion = false; 58 public bool IsRestrictedToRegion = false;
63 59
@@ -105,10 +101,10 @@ namespace OpenSim.Region.Environment.Scenes
105 /// <summary> 101 /// <summary>
106 /// 102 ///
107 /// </summary> 103 /// </summary>
108 public PhysicsActor PhysActor 104 public PhysicsActor PhysicsActor
109 { 105 {
110 set { _physActor = value; } 106 set { m_physicsActor = value; }
111 get { return _physActor; } 107 get { return m_physicsActor; }
112 } 108 }
113 109
114 public bool Updated 110 public bool Updated
@@ -117,25 +113,30 @@ namespace OpenSim.Region.Environment.Scenes
117 get { return updateflag; } 113 get { return updateflag; }
118 } 114 }
119 115
116 private readonly ulong m_regionHandle;
120 public ulong RegionHandle 117 public ulong RegionHandle
121 { 118 {
122 get { return m_regionHandle; } 119 get { return m_regionHandle; }
123 } 120 }
124 121
125 private string m_firstname; 122 private readonly string m_firstname;
126
127 public string Firstname 123 public string Firstname
128 { 124 {
129 get { return m_firstname; } 125 get { return m_firstname; }
130 } 126 }
131 127
132 private string m_lastname; 128 private readonly string m_lastname;
133
134 public string Lastname 129 public string Lastname
135 { 130 {
136 get { return m_lastname; } 131 get { return m_lastname; }
137 } 132 }
138 133
134 private readonly IClientAPI m_controllingClient;
135 public IClientAPI _ControllingClient
136 {
137 get { return m_controllingClient; }
138 }
139
139 #endregion 140 #endregion
140 141
141 #region Constructor(s) 142 #region Constructor(s)
@@ -143,23 +144,23 @@ namespace OpenSim.Region.Environment.Scenes
143 /// <summary> 144 /// <summary>
144 /// 145 ///
145 /// </summary> 146 /// </summary>
146 /// <param name="theClient"></param> 147 /// <param name="client"></param>
147 /// <param name="world"></param> 148 /// <param name="world"></param>
148 /// <param name="clientThreads"></param> 149 /// <param name="clientThreads"></param>
149 /// <param name="regionDat"></param> 150 /// <param name="regionDat"></param>
150 public ScenePresence(IClientAPI theClient, Scene world, RegionInfo reginfo) 151 public ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo)
151 { 152 {
152 m_scene = world; 153 m_scene = world;
153 m_uuid = theClient.AgentId; 154 m_uuid = client.AgentId;
154 155
155 m_regionInfo = reginfo; 156 m_regionInfo = reginfo;
156 m_regionHandle = reginfo.RegionHandle; 157 m_regionHandle = reginfo.RegionHandle;
157 MainLog.Instance.Verbose("Avatar.cs "); 158 MainLog.Instance.Verbose("Avatar.cs ");
158 ControllingClient = theClient; 159 m_controllingClient = client;
159 m_firstname = ControllingClient.FirstName; 160 m_firstname = m_controllingClient.FirstName;
160 m_lastname = ControllingClient.LastName; 161 m_lastname = m_controllingClient.LastName;
161 m_localId = m_scene.NextLocalId; 162 m_localId = m_scene.NextLocalId;
162 AbsolutePosition = ControllingClient.StartPos; 163 AbsolutePosition = m_controllingClient.StartPos;
163 164
164 visualParams = new byte[218]; 165 visualParams = new byte[218];
165 for (int i = 0; i < 218; i++) 166 for (int i = 0; i < 218; i++)
@@ -172,11 +173,11 @@ namespace OpenSim.Region.Environment.Scenes
172 Animations.LoadAnims(); 173 Animations.LoadAnims();
173 174
174 //register for events 175 //register for events
175 ControllingClient.OnRequestWearables += SendOurAppearance; 176 m_controllingClient.OnRequestWearables += SendOurAppearance;
176 ControllingClient.OnSetAppearance += new SetAppearance(SetAppearance); 177 m_controllingClient.OnSetAppearance += new SetAppearance(SetAppearance);
177 ControllingClient.OnCompleteMovementToRegion += CompleteMovement; 178 m_controllingClient.OnCompleteMovementToRegion += CompleteMovement;
178 ControllingClient.OnCompleteMovementToRegion += SendInitialData; 179 m_controllingClient.OnCompleteMovementToRegion += SendInitialData;
179 ControllingClient.OnAgentUpdate += HandleAgentUpdate; 180 m_controllingClient.OnAgentUpdate += HandleAgentUpdate;
180 // ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack); 181 // ControllingClient.OnStartAnim += new StartAnim(this.SendAnimPack);
181 // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); 182 // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange);
182 //ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); 183 //ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement);
@@ -221,7 +222,7 @@ namespace OpenSim.Region.Environment.Scenes
221 while (terse) 222 while (terse)
222 { 223 {
223 SceneObjectPart part = m_tersePartUpdates.Dequeue(); 224 SceneObjectPart part = m_tersePartUpdates.Dequeue();
224 part.SendTerseUpdate(ControllingClient); 225 part.SendTerseUpdate(m_controllingClient);
225 terseCount++; 226 terseCount++;
226 227
227 if ((m_tersePartUpdates.Count < 1) | (terseCount > 30)) 228 if ((m_tersePartUpdates.Count < 1) | (terseCount > 30))
@@ -238,7 +239,7 @@ namespace OpenSim.Region.Environment.Scenes
238 while (full) 239 while (full)
239 { 240 {
240 SceneObjectPart part = m_fullPartUpdates.Dequeue(); 241 SceneObjectPart part = m_fullPartUpdates.Dequeue();
241 part.SendFullUpdate(ControllingClient); 242 part.SendFullUpdate(m_controllingClient);
242 fullCount++; 243 fullCount++;
243 if ((m_fullPartUpdates.Count < 1) | (fullCount > 40)) 244 if ((m_fullPartUpdates.Count < 1) | (fullCount > 40))
244 { 245 {
@@ -273,7 +274,7 @@ namespace OpenSim.Region.Environment.Scenes
273 AbsolutePosition = pos; 274 AbsolutePosition = pos;
274 275
275 AddToPhysicalScene( ); 276 AddToPhysicalScene( );
276 _physActor.Flying = isFlying; 277 m_physicsActor.Flying = isFlying;
277 278
278 279
279 m_scene.SendAllSceneObjectsToClient(this); 280 m_scene.SendAllSceneObjectsToClient(this);
@@ -291,7 +292,7 @@ namespace OpenSim.Region.Environment.Scenes
291 292
292 private void RemoveFromPhysicalScene() 293 private void RemoveFromPhysicalScene()
293 { 294 {
294 m_scene.PhysScene.RemoveAvatar( this.PhysActor ); 295 m_scene.PhysScene.RemoveAvatar( this.PhysicsActor );
295 } 296 }
296 297
297 /// <summary> 298 /// <summary>
@@ -343,7 +344,7 @@ namespace OpenSim.Region.Environment.Scenes
343 { 344 {
344 look = new LLVector3(0.99f, 0.042f, 0); 345 look = new LLVector3(0.99f, 0.042f, 0);
345 } 346 }
346 ControllingClient.MoveAgentIntoRegion(m_regionInfo, AbsolutePosition, look); 347 m_controllingClient.MoveAgentIntoRegion(m_regionInfo, AbsolutePosition, look);
347 if (childAgent) 348 if (childAgent)
348 { 349 {
349 childAgent = false; 350 childAgent = false;
@@ -364,9 +365,9 @@ namespace OpenSim.Region.Environment.Scenes
364 bool DCFlagKeyPressed = false; 365 bool DCFlagKeyPressed = false;
365 Vector3 agent_control_v3 = new Vector3(0, 0, 0); 366 Vector3 agent_control_v3 = new Vector3(0, 0, 0);
366 Quaternion q = new Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z); 367 Quaternion q = new Quaternion(bodyRotation.W, bodyRotation.X, bodyRotation.Y, bodyRotation.Z);
367 bool oldflying = PhysActor.Flying; 368 bool oldflying = PhysicsActor.Flying;
368 PhysActor.Flying = ((flags & (uint) MainAvatar.ControlFlags.AGENT_CONTROL_FLY) != 0); 369 PhysicsActor.Flying = ((flags & (uint) MainAvatar.ControlFlags.AGENT_CONTROL_FLY) != 0);
369 if (PhysActor.Flying != oldflying) 370 if (PhysicsActor.Flying != oldflying)
370 { 371 {
371 update_movementflag = true; 372 update_movementflag = true;
372 } 373 }
@@ -411,7 +412,7 @@ namespace OpenSim.Region.Environment.Scenes
411 { 412 {
412 if (movementflag != 0) 413 if (movementflag != 0)
413 { 414 {
414 if (_physActor.Flying) 415 if (m_physicsActor.Flying)
415 { 416 {
416 SendAnimPack(Animations.AnimsLLUUID["FLY"], 1); 417 SendAnimPack(Animations.AnimsLLUUID["FLY"], 1);
417 } 418 }
@@ -435,7 +436,7 @@ namespace OpenSim.Region.Environment.Scenes
435 direc.Normalize(); 436 direc.Normalize();
436 437
437 direc = direc*((0.03f)*128f); 438 direc = direc*((0.03f)*128f);
438 if (_physActor.Flying) 439 if (m_physicsActor.Flying)
439 direc *= 4; 440 direc *= 4;
440 441
441 newVelocity.X = direc.x; 442 newVelocity.X = direc.x;
@@ -528,7 +529,7 @@ namespace OpenSim.Region.Environment.Scenes
528 { 529 {
529 m_scene.ForEachScenePresence(delegate(ScenePresence presence) 530 m_scene.ForEachScenePresence(delegate(ScenePresence presence)
530 { 531 {
531 SendTerseUpdateToClient(presence.ControllingClient); 532 SendTerseUpdateToClient(presence.m_controllingClient);
532 }); 533 });
533 } 534 }
534 535
@@ -545,7 +546,7 @@ namespace OpenSim.Region.Environment.Scenes
545 } 546 }
546 } 547 }
547 548
548 ControllingClient.SendCoarseLocationUpdate(CoarseLocations); 549 m_controllingClient.SendCoarseLocationUpdate(CoarseLocations);
549 } 550 }
550 551
551 public void CoarseLocationChange(ScenePresence avatar) 552 public void CoarseLocationChange(ScenePresence avatar)
@@ -571,7 +572,7 @@ namespace OpenSim.Region.Environment.Scenes
571 /// <param name="remoteAvatar"></param> 572 /// <param name="remoteAvatar"></param>
572 public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar) 573 public void SendFullUpdateToOtherClient(ScenePresence remoteAvatar)
573 { 574 {
574 remoteAvatar.ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, 575 remoteAvatar.m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid,
575 LocalId, AbsolutePosition, m_textureEntry.ToBytes()); 576 LocalId, AbsolutePosition, m_textureEntry.ToBytes());
576 } 577 }
577 578
@@ -597,11 +598,11 @@ namespace OpenSim.Region.Environment.Scenes
597 /// </summary> 598 /// </summary>
598 public void SendInitialData() 599 public void SendInitialData()
599 { 600 {
600 ControllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, LocalId, 601 m_controllingClient.SendAvatarData(m_regionInfo.RegionHandle, m_firstname, m_lastname, m_uuid, LocalId,
601 AbsolutePosition, m_textureEntry.ToBytes()); 602 AbsolutePosition, m_textureEntry.ToBytes());
602 if (!childAgent) 603 if (!childAgent)
603 { 604 {
604 m_scene.InformClientOfNeighbours(ControllingClient); 605 m_scene.InformClientOfNeighbours(m_controllingClient);
605 newAvatar = false; 606 newAvatar = false;
606 } 607 }
607 608
@@ -615,13 +616,13 @@ namespace OpenSim.Region.Environment.Scenes
615 /// <param name="OurClient"></param> 616 /// <param name="OurClient"></param>
616 public void SendOurAppearance(IClientAPI OurClient) 617 public void SendOurAppearance(IClientAPI OurClient)
617 { 618 {
618 ControllingClient.SendWearables(Wearables); 619 m_controllingClient.SendWearables(Wearables);
619 620
620 //this.SendFullUpdateToAllClients(); 621 //this.SendFullUpdateToAllClients();
621 //this.SendArrearanceToAllOtherAgents(); 622 //this.SendArrearanceToAllOtherAgents();
622 623
623 m_scene.SendAllSceneObjectsToClient(this); 624 m_scene.SendAllSceneObjectsToClient(this);
624 ControllingClient.SendViewerTime(m_scene.TimePhase); 625 m_controllingClient.SendViewerTime(m_scene.TimePhase);
625 626
626 //Please don't remove the following code (at least not yet), just leave it commented out 627 //Please don't remove the following code (at least not yet), just leave it commented out
627 //gives the user god powers, should help with debuging things in the future 628 //gives the user god powers, should help with debuging things in the future
@@ -651,7 +652,7 @@ namespace OpenSim.Region.Environment.Scenes
651 /// <param name="avatarInfo"></param> 652 /// <param name="avatarInfo"></param>
652 public void SendAppearanceToOtherAgent(ScenePresence avatarInfo) 653 public void SendAppearanceToOtherAgent(ScenePresence avatarInfo)
653 { 654 {
654 avatarInfo.ControllingClient.SendAppearance(ControllingClient.AgentId, visualParams, 655 avatarInfo.m_controllingClient.SendAppearance(m_controllingClient.AgentId, visualParams,
655 m_textureEntry.ToBytes()); 656 m_textureEntry.ToBytes());
656 } 657 }
657 658
@@ -667,8 +668,8 @@ namespace OpenSim.Region.Environment.Scenes
667 668
668 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence) 669 m_scene.ForEachScenePresence(delegate(ScenePresence scenePresence)
669 { 670 {
670 scenePresence.ControllingClient.SendAnimation(animID, seq, 671 scenePresence.m_controllingClient.SendAnimation(animID, seq,
671 ControllingClient.AgentId); 672 m_controllingClient.AgentId);
672 }); 673 });
673 } 674 }
674 675
@@ -691,7 +692,7 @@ namespace OpenSim.Region.Environment.Scenes
691 posLastSignificantMove = AbsolutePosition; 692 posLastSignificantMove = AbsolutePosition;
692 if (OnSignificantClientMovement != null) 693 if (OnSignificantClientMovement != null)
693 { 694 {
694 OnSignificantClientMovement(ControllingClient); 695 OnSignificantClientMovement(m_controllingClient);
695 NotifyMyCoarseLocationChange(); 696 NotifyMyCoarseLocationChange();
696 } 697 }
697 } 698 }
@@ -762,14 +763,14 @@ namespace OpenSim.Region.Environment.Scenes
762 if (neighbourRegion != null) 763 if (neighbourRegion != null)
763 { 764 {
764 bool res = 765 bool res =
765 m_scene.InformNeighbourOfCrossing(neighbourHandle, ControllingClient.AgentId, newpos, 766 m_scene.InformNeighbourOfCrossing(neighbourHandle, m_controllingClient.AgentId, newpos,
766 _physActor.Flying); 767 m_physicsActor.Flying);
767 if (res) 768 if (res)
768 { 769 {
769 //TODO: following line is hard coded to port 9000, really need to change this as soon as possible 770 //TODO: following line is hard coded to port 9000, really need to change this as soon as possible
770 AgentCircuitData circuitdata = ControllingClient.RequestClientInfo(); 771 AgentCircuitData circuitdata = m_controllingClient.RequestClientInfo();
771 string capsPath = Util.GetCapsURL(ControllingClient.AgentId); 772 string capsPath = Util.GetCapsURL(m_controllingClient.AgentId);
772 ControllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.ExternalEndPoint, 773 m_controllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.ExternalEndPoint,
773 capsPath); 774 capsPath);
774 MakeChildAgent(); 775 MakeChildAgent();
775 m_scene.SendKillObject(m_localId); 776 m_scene.SendKillObject(m_localId);
@@ -850,7 +851,7 @@ namespace OpenSim.Region.Environment.Scenes
850 new PhysicsVector(AbsolutePosition.X, AbsolutePosition.Y, 851 new PhysicsVector(AbsolutePosition.X, AbsolutePosition.Y,
851 AbsolutePosition.Z); 852 AbsolutePosition.Z);
852 853
853 _physActor = scene.AddAvatar(pVec); 854 m_physicsActor = scene.AddAvatar(pVec);
854 } 855 }
855 } 856 }
856} \ No newline at end of file 857} \ No newline at end of file