diff options
author | Jeff Ames | 2008-05-16 01:22:11 +0000 |
---|---|---|
committer | Jeff Ames | 2008-05-16 01:22:11 +0000 |
commit | 65c5efe43b68700bad94076d4cd421160203c5de (patch) | |
tree | 589b56649ed02f4942671fd6e51c6dc43f682e0d /OpenSim/Region/Environment/Scenes/ScenePresence.cs | |
parent | Thank you very much, mjm for : (diff) | |
download | opensim-SC-65c5efe43b68700bad94076d4cd421160203c5de.zip opensim-SC-65c5efe43b68700bad94076d4cd421160203c5de.tar.gz opensim-SC-65c5efe43b68700bad94076d4cd421160203c5de.tar.bz2 opensim-SC-65c5efe43b68700bad94076d4cd421160203c5de.tar.xz |
Formatting cleanup.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/ScenePresence.cs | 184 |
1 files changed, 92 insertions, 92 deletions
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index 28507cd..ba8bbd9 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -40,7 +40,7 @@ using OpenSim.Region.Physics.Manager; | |||
40 | 40 | ||
41 | namespace OpenSim.Region.Environment.Scenes | 41 | namespace OpenSim.Region.Environment.Scenes |
42 | { | 42 | { |
43 | enum ScriptControlled : int | 43 | enum ScriptControlled : int |
44 | { | 44 | { |
45 | CONTROL_ZERO = 0, | 45 | CONTROL_ZERO = 0, |
46 | CONTROL_FWD = 1, | 46 | CONTROL_FWD = 1, |
@@ -63,14 +63,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
63 | public ScriptControlled eventControls; | 63 | public ScriptControlled eventControls; |
64 | } | 64 | } |
65 | 65 | ||
66 | [Serializable] | 66 | [Serializable] |
67 | public class ScenePresence : EntityBase, ISerializable | 67 | public class ScenePresence : EntityBase, ISerializable |
68 | { | 68 | { |
69 | // ~ScenePresence() | 69 | // ~ScenePresence() |
70 | // { | 70 | // { |
71 | // System.Console.WriteLine("[ScenePresence] Destructor called"); | 71 | // System.Console.WriteLine("[ScenePresence] Destructor called"); |
72 | // } | 72 | // } |
73 | 73 | ||
74 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 74 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
75 | 75 | ||
76 | public static byte[] DefaultTexture; | 76 | public static byte[] DefaultTexture; |
@@ -92,7 +92,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
92 | private LLVector3 m_requestedSitOffset = new LLVector3(); | 92 | private LLVector3 m_requestedSitOffset = new LLVector3(); |
93 | private float m_sitAvatarHeight = 2.0f; | 93 | private float m_sitAvatarHeight = 2.0f; |
94 | private float m_godlevel = 0; | 94 | private float m_godlevel = 0; |
95 | 95 | ||
96 | private bool m_invulnerable = true; | 96 | private bool m_invulnerable = true; |
97 | 97 | ||
98 | private LLVector3 m_LastChildAgentUpdatePosition = new LLVector3(); | 98 | private LLVector3 m_LastChildAgentUpdatePosition = new LLVector3(); |
@@ -114,7 +114,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
114 | private float m_health = 100f; | 114 | private float m_health = 100f; |
115 | 115 | ||
116 | private LLVector3 m_lastVelocity = LLVector3.Zero; | 116 | private LLVector3 m_lastVelocity = LLVector3.Zero; |
117 | 117 | ||
118 | // Default AV Height | 118 | // Default AV Height |
119 | private float m_avHeight = 127.0f; | 119 | private float m_avHeight = 127.0f; |
120 | 120 | ||
@@ -213,10 +213,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
213 | get { return m_invulnerable; } | 213 | get { return m_invulnerable; } |
214 | } | 214 | } |
215 | 215 | ||
216 | public float GodLevel | 216 | public float GodLevel |
217 | { | 217 | { |
218 | get { return m_godlevel; } | 218 | get { return m_godlevel; } |
219 | } | 219 | } |
220 | 220 | ||
221 | private readonly ulong m_regionHandle; | 221 | private readonly ulong m_regionHandle; |
222 | 222 | ||
@@ -260,7 +260,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
260 | /// <summary> | 260 | /// <summary> |
261 | /// This works out to be the ClientView object associated with this avatar, or it's client connection manager | 261 | /// This works out to be the ClientView object associated with this avatar, or it's client connection manager |
262 | /// </summary> | 262 | /// </summary> |
263 | private IClientAPI m_controllingClient; | 263 | private IClientAPI m_controllingClient; |
264 | 264 | ||
265 | protected PhysicsActor m_physicsActor; | 265 | protected PhysicsActor m_physicsActor; |
266 | 266 | ||
@@ -350,7 +350,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
350 | /// <summary> | 350 | /// <summary> |
351 | /// If this is true, agent doesn't have a representation in this scene. | 351 | /// If this is true, agent doesn't have a representation in this scene. |
352 | /// this is an agent 'looking into' this scene from a nearby scene(region) | 352 | /// this is an agent 'looking into' this scene from a nearby scene(region) |
353 | /// | 353 | /// |
354 | /// if False, this agent has a representation in this scene | 354 | /// if False, this agent has a representation in this scene |
355 | /// </summary> | 355 | /// </summary> |
356 | private bool m_isChildAgent = true; | 356 | private bool m_isChildAgent = true; |
@@ -482,7 +482,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
482 | } | 482 | } |
483 | 483 | ||
484 | /// <summary> | 484 | /// <summary> |
485 | /// Send updates to the client about prims which have been placed on the update queue. We don't | 485 | /// Send updates to the client about prims which have been placed on the update queue. We don't |
486 | /// necessarily send updates for all the parts on the queue, e.g. if an updates with a more recent | 486 | /// necessarily send updates for all the parts on the queue, e.g. if an updates with a more recent |
487 | /// timestamp has already been sent. | 487 | /// timestamp has already been sent. |
488 | /// </summary> | 488 | /// </summary> |
@@ -498,12 +498,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
498 | if (!m_gotAllObjectsInScene) | 498 | if (!m_gotAllObjectsInScene) |
499 | { | 499 | { |
500 | if (!m_isChildAgent || m_scene.m_seeIntoRegionFromNeighbor) | 500 | if (!m_isChildAgent || m_scene.m_seeIntoRegionFromNeighbor) |
501 | { | 501 | { |
502 | m_scene.SendAllSceneObjectsToClient(this); | 502 | m_scene.SendAllSceneObjectsToClient(this); |
503 | m_gotAllObjectsInScene = true; | 503 | m_gotAllObjectsInScene = true; |
504 | } | 504 | } |
505 | } | 505 | } |
506 | 506 | ||
507 | if (m_partsUpdateQueue.Count > 0) | 507 | if (m_partsUpdateQueue.Count > 0) |
508 | { | 508 | { |
509 | bool runUpdate = true; | 509 | bool runUpdate = true; |
@@ -520,12 +520,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
520 | if (update.LastFullUpdateTime < part.TimeStampFull) | 520 | if (update.LastFullUpdateTime < part.TimeStampFull) |
521 | { | 521 | { |
522 | // m_log.DebugFormat( | 522 | // m_log.DebugFormat( |
523 | // "[SCENE PRESENCE]: Fully updating prim {0}, {1} - part timestamp {2}", | 523 | // "[SCENE PRESENCE]: Fully updating prim {0}, {1} - part timestamp {2}", |
524 | // part.Name, part.UUID, part.TimeStampFull); | 524 | // part.Name, part.UUID, part.TimeStampFull); |
525 | 525 | ||
526 | part.SendFullUpdate(ControllingClient, GenerateClientFlags(part.UUID)); | 526 | part.SendFullUpdate(ControllingClient, GenerateClientFlags(part.UUID)); |
527 | 527 | ||
528 | // We'll update to the part's timestamp rather than the current time to | 528 | // We'll update to the part's timestamp rather than the current time to |
529 | // avoid the race condition whereby the next tick occurs while we are | 529 | // avoid the race condition whereby the next tick occurs while we are |
530 | // doing this update. If this happened, then subsequent updates which occurred | 530 | // doing this update. If this happened, then subsequent updates which occurred |
531 | // on the same tick or the next tick of the last update would be ignored. | 531 | // on the same tick or the next tick of the last update would be ignored. |
@@ -536,9 +536,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
536 | else if (update.LastTerseUpdateTime <= part.TimeStampTerse) | 536 | else if (update.LastTerseUpdateTime <= part.TimeStampTerse) |
537 | { | 537 | { |
538 | // m_log.DebugFormat( | 538 | // m_log.DebugFormat( |
539 | // "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}", | 539 | // "[SCENE PRESENCE]: Tersely updating prim {0}, {1} - part timestamp {2}", |
540 | // part.Name, part.UUID, part.TimeStampTerse); | 540 | // part.Name, part.UUID, part.TimeStampTerse); |
541 | 541 | ||
542 | part.SendTerseUpdate(ControllingClient); | 542 | part.SendTerseUpdate(ControllingClient); |
543 | 543 | ||
544 | update.LastTerseUpdateTime = part.TimeStampTerse; | 544 | update.LastTerseUpdateTime = part.TimeStampTerse; |
@@ -575,15 +575,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
575 | 575 | ||
576 | /// <summary> | 576 | /// <summary> |
577 | /// This turns a child agent, into a root agent | 577 | /// This turns a child agent, into a root agent |
578 | /// This is called when an agent teleports into a region, or if an | 578 | /// This is called when an agent teleports into a region, or if an |
579 | /// agent crosses into this region from a neighbor over the border | 579 | /// agent crosses into this region from a neighbor over the border |
580 | /// </summary> | 580 | /// </summary> |
581 | public void MakeRootAgent(LLVector3 pos, bool isFlying) | 581 | public void MakeRootAgent(LLVector3 pos, bool isFlying) |
582 | { | 582 | { |
583 | // m_log.DebugFormat( | 583 | // m_log.DebugFormat( |
584 | // "[SCENEPRESENCE]: Upgrading child agent {0}, {1} to a root agent in {2}", | 584 | // "[SCENEPRESENCE]: Upgrading child agent {0}, {1} to a root agent in {2}", |
585 | // Name, UUID, m_scene.RegionInfo.RegionName); | 585 | // Name, UUID, m_scene.RegionInfo.RegionName); |
586 | 586 | ||
587 | m_isChildAgent = false; | 587 | m_isChildAgent = false; |
588 | 588 | ||
589 | AbsolutePosition = pos; | 589 | AbsolutePosition = pos; |
@@ -599,7 +599,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
599 | //{ | 599 | //{ |
600 | m_scene.SendAllSceneObjectsToClient(this); | 600 | m_scene.SendAllSceneObjectsToClient(this); |
601 | m_scene.LandChannel.SendLandUpdate(this, true); | 601 | m_scene.LandChannel.SendLandUpdate(this, true); |
602 | 602 | ||
603 | //m_gotAllObjectsInScene = true; | 603 | //m_gotAllObjectsInScene = true; |
604 | //} | 604 | //} |
605 | } | 605 | } |
@@ -607,8 +607,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
607 | /// <summary> | 607 | /// <summary> |
608 | /// This turns a root agent into a child agent | 608 | /// This turns a root agent into a child agent |
609 | /// when an agent departs this region for a neighbor, this gets called. | 609 | /// when an agent departs this region for a neighbor, this gets called. |
610 | /// | 610 | /// |
611 | /// It doesn't get called for a teleport. Reason being, an agent that | 611 | /// It doesn't get called for a teleport. Reason being, an agent that |
612 | /// teleports out may not be anywhere near this region | 612 | /// teleports out may not be anywhere near this region |
613 | /// </summary> | 613 | /// </summary> |
614 | public void MakeChildAgent() | 614 | public void MakeChildAgent() |
@@ -616,15 +616,15 @@ namespace OpenSim.Region.Environment.Scenes | |||
616 | m_animations.Clear(); | 616 | m_animations.Clear(); |
617 | 617 | ||
618 | // m_log.DebugFormat( | 618 | // m_log.DebugFormat( |
619 | // "[SCENEPRESENCE]: Downgrading child agent {0}, {1} to a root agent in {2}", | 619 | // "[SCENEPRESENCE]: Downgrading child agent {0}, {1} to a root agent in {2}", |
620 | // Name, UUID, m_scene.RegionInfo.RegionName); | 620 | // Name, UUID, m_scene.RegionInfo.RegionName); |
621 | 621 | ||
622 | Velocity = new LLVector3(0, 0, 0); | 622 | Velocity = new LLVector3(0, 0, 0); |
623 | m_isChildAgent = true; | 623 | m_isChildAgent = true; |
624 | m_scene.SwapRootAgentCount(true); | 624 | m_scene.SwapRootAgentCount(true); |
625 | RemoveFromPhysicalScene(); | 625 | RemoveFromPhysicalScene(); |
626 | m_scene.EventManager.TriggerOnMakeChildAgent(this); | 626 | m_scene.EventManager.TriggerOnMakeChildAgent(this); |
627 | //this.Pos = new LLVector3(128, 128, 70); | 627 | //this.Pos = new LLVector3(128, 128, 70); |
628 | } | 628 | } |
629 | 629 | ||
630 | /// <summary> | 630 | /// <summary> |
@@ -643,7 +643,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
643 | } | 643 | } |
644 | 644 | ||
645 | /// <summary> | 645 | /// <summary> |
646 | /// | 646 | /// |
647 | /// </summary> | 647 | /// </summary> |
648 | /// <param name="pos"></param> | 648 | /// <param name="pos"></param> |
649 | public void Teleport(LLVector3 pos) | 649 | public void Teleport(LLVector3 pos) |
@@ -656,7 +656,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
656 | } | 656 | } |
657 | 657 | ||
658 | /// <summary> | 658 | /// <summary> |
659 | /// | 659 | /// |
660 | /// </summary> | 660 | /// </summary> |
661 | public void StopMovement() | 661 | public void StopMovement() |
662 | { | 662 | { |
@@ -762,7 +762,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
762 | uint flags = agentData.ControlFlags; | 762 | uint flags = agentData.ControlFlags; |
763 | LLQuaternion bodyRotation = agentData.BodyRotation; | 763 | LLQuaternion bodyRotation = agentData.BodyRotation; |
764 | 764 | ||
765 | // Camera location in world. We'll need to raytrace | 765 | // Camera location in world. We'll need to raytrace |
766 | // from this location from time to time. | 766 | // from this location from time to time. |
767 | m_CameraCenter.x = agentData.CameraCenter.X; | 767 | m_CameraCenter.x = agentData.CameraCenter.X; |
768 | m_CameraCenter.y = agentData.CameraCenter.Y; | 768 | m_CameraCenter.y = agentData.CameraCenter.Y; |
@@ -815,7 +815,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
815 | // m_AgentControlFlags = flags; | 815 | // m_AgentControlFlags = flags; |
816 | // m_headrotation = agentData.AgentData.HeadRotation; | 816 | // m_headrotation = agentData.AgentData.HeadRotation; |
817 | // m_state = agentData.AgentData.State; | 817 | // m_state = agentData.AgentData.State; |
818 | 818 | ||
819 | if (m_allowMovement) | 819 | if (m_allowMovement) |
820 | { | 820 | { |
821 | int i = 0; | 821 | int i = 0; |
@@ -870,7 +870,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
870 | i++; | 870 | i++; |
871 | } | 871 | } |
872 | } | 872 | } |
873 | // Cause the avatar to stop flying if it's colliding | 873 | // Cause the avatar to stop flying if it's colliding |
874 | // with something with the down arrow pressed. | 874 | // with something with the down arrow pressed. |
875 | 875 | ||
876 | // Skip if there's no physicsactor | 876 | // Skip if there's no physicsactor |
@@ -886,7 +886,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
886 | // Are the collision requirements fulfilled? | 886 | // Are the collision requirements fulfilled? |
887 | bool colliding = (m_physicsActor.IsColliding == true); | 887 | bool colliding = (m_physicsActor.IsColliding == true); |
888 | 888 | ||
889 | 889 | ||
890 | 890 | ||
891 | if (m_physicsActor.Flying && colliding && controlland) | 891 | if (m_physicsActor.Flying && colliding && controlland) |
892 | { | 892 | { |
@@ -903,9 +903,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
903 | UpdateMovementAnimations(); | 903 | UpdateMovementAnimations(); |
904 | } | 904 | } |
905 | } | 905 | } |
906 | 906 | ||
907 | m_scene.EventManager.TriggerOnClientMovement(this); | 907 | m_scene.EventManager.TriggerOnClientMovement(this); |
908 | 908 | ||
909 | m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); | 909 | m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); |
910 | } | 910 | } |
911 | 911 | ||
@@ -934,7 +934,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
934 | 934 | ||
935 | m_pos += m_parentPosition + new LLVector3(0.0f, 0.0f, 2.0f*m_sitAvatarHeight); | 935 | m_pos += m_parentPosition + new LLVector3(0.0f, 0.0f, 2.0f*m_sitAvatarHeight); |
936 | m_parentPosition = new LLVector3(); | 936 | m_parentPosition = new LLVector3(); |
937 | 937 | ||
938 | m_parentID = 0; | 938 | m_parentID = 0; |
939 | SendFullUpdateToAllClients(); | 939 | SendFullUpdateToAllClients(); |
940 | 940 | ||
@@ -949,10 +949,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
949 | 949 | ||
950 | private void SendSitResponse(IClientAPI remoteClient, LLUUID targetID, LLVector3 offset) | 950 | private void SendSitResponse(IClientAPI remoteClient, LLUUID targetID, LLVector3 offset) |
951 | { | 951 | { |
952 | |||
953 | 952 | ||
954 | 953 | ||
955 | 954 | ||
955 | |||
956 | bool autopilot = true; | 956 | bool autopilot = true; |
957 | LLVector3 pos = new LLVector3(); | 957 | LLVector3 pos = new LLVector3(); |
958 | LLQuaternion sitOrientation = new LLQuaternion(0, 0, 0, 1); | 958 | LLQuaternion sitOrientation = new LLQuaternion(0, 0, 0, 1); |
@@ -1008,10 +1008,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
1008 | } | 1008 | } |
1009 | 1009 | ||
1010 | ControllingClient.SendSitResponse(targetID, offset, sitOrientation, autopilot, LLVector3.Zero, LLVector3.Zero, false); | 1010 | ControllingClient.SendSitResponse(targetID, offset, sitOrientation, autopilot, LLVector3.Zero, LLVector3.Zero, false); |
1011 | 1011 | ||
1012 | // This calls HandleAgentSit twice, once from here, and the client calls | 1012 | // This calls HandleAgentSit twice, once from here, and the client calls |
1013 | // HandleAgentSit itself after it gets to the location | 1013 | // HandleAgentSit itself after it gets to the location |
1014 | // It doesn't get to the location until we've moved them there though | 1014 | // It doesn't get to the location until we've moved them there though |
1015 | // which happens in HandleAgentSit :P | 1015 | // which happens in HandleAgentSit :P |
1016 | if (!autopilot) | 1016 | if (!autopilot) |
1017 | HandleAgentSit(remoteClient, UUID); | 1017 | HandleAgentSit(remoteClient, UUID); |
@@ -1256,7 +1256,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1256 | } | 1256 | } |
1257 | 1257 | ||
1258 | m_perfMonMS = System.Environment.TickCount; | 1258 | m_perfMonMS = System.Environment.TickCount; |
1259 | 1259 | ||
1260 | m_rotation = rotation; | 1260 | m_rotation = rotation; |
1261 | NewForce newVelocity = new NewForce(); | 1261 | NewForce newVelocity = new NewForce(); |
1262 | Vector3 direc = rotation*vec; | 1262 | Vector3 direc = rotation*vec; |
@@ -1268,9 +1268,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1268 | direc *= 4; | 1268 | direc *= 4; |
1269 | //bool controlland = (((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || ((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); | 1269 | //bool controlland = (((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || ((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); |
1270 | //bool colliding = (m_physicsActor.IsColliding==true); | 1270 | //bool colliding = (m_physicsActor.IsColliding==true); |
1271 | //if (controlland) | 1271 | //if (controlland) |
1272 | // m_log.Info("[AGENT]: landCommand"); | 1272 | // m_log.Info("[AGENT]: landCommand"); |
1273 | //if (colliding) | 1273 | //if (colliding) |
1274 | // m_log.Info("[AGENT]: colliding"); | 1274 | // m_log.Info("[AGENT]: colliding"); |
1275 | //if (m_physicsActor.Flying && colliding && controlland) | 1275 | //if (m_physicsActor.Flying && colliding && controlland) |
1276 | //{ | 1276 | //{ |
@@ -1306,7 +1306,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1306 | #region Overridden Methods | 1306 | #region Overridden Methods |
1307 | 1307 | ||
1308 | /// <summary> | 1308 | /// <summary> |
1309 | /// | 1309 | /// |
1310 | /// </summary> | 1310 | /// </summary> |
1311 | public override void Update() | 1311 | public override void Update() |
1312 | { | 1312 | { |
@@ -1383,7 +1383,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1383 | lastPhysPos = AbsolutePosition; | 1383 | lastPhysPos = AbsolutePosition; |
1384 | 1384 | ||
1385 | m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); | 1385 | m_scene.AddAgentTime(System.Environment.TickCount - m_perfMonMS); |
1386 | 1386 | ||
1387 | } | 1387 | } |
1388 | 1388 | ||
1389 | public void SendCoarseLocations() | 1389 | public void SendCoarseLocations() |
@@ -1433,7 +1433,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1433 | foreach (ScenePresence avatar in avatars) | 1433 | foreach (ScenePresence avatar in avatars) |
1434 | { | 1434 | { |
1435 | SendFullUpdateToOtherClient(avatar); | 1435 | SendFullUpdateToOtherClient(avatar); |
1436 | 1436 | ||
1437 | if (avatar.LocalId != LocalId) | 1437 | if (avatar.LocalId != LocalId) |
1438 | { | 1438 | { |
1439 | if (!avatar.m_isChildAgent || m_scene.m_seeIntoRegionFromNeighbor) | 1439 | if (!avatar.m_isChildAgent || m_scene.m_seeIntoRegionFromNeighbor) |
@@ -1448,7 +1448,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1448 | } | 1448 | } |
1449 | 1449 | ||
1450 | /// <summary> | 1450 | /// <summary> |
1451 | /// | 1451 | /// |
1452 | /// </summary> | 1452 | /// </summary> |
1453 | public void SendInitialData() | 1453 | public void SendInitialData() |
1454 | { | 1454 | { |
@@ -1472,7 +1472,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1472 | } | 1472 | } |
1473 | 1473 | ||
1474 | /// <summary> | 1474 | /// <summary> |
1475 | /// | 1475 | /// |
1476 | /// </summary> | 1476 | /// </summary> |
1477 | /// <param name="client"></param> | 1477 | /// <param name="client"></param> |
1478 | public void SendOwnAppearance() | 1478 | public void SendOwnAppearance() |
@@ -1481,7 +1481,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1481 | } | 1481 | } |
1482 | 1482 | ||
1483 | /// <summary> | 1483 | /// <summary> |
1484 | /// | 1484 | /// |
1485 | /// </summary> | 1485 | /// </summary> |
1486 | public void SendAppearanceToAllOtherAgents() | 1486 | public void SendAppearanceToAllOtherAgents() |
1487 | { | 1487 | { |
@@ -1498,7 +1498,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1498 | } | 1498 | } |
1499 | 1499 | ||
1500 | public void SendAppearanceToOtherAgent(ScenePresence avatar) | 1500 | public void SendAppearanceToOtherAgent(ScenePresence avatar) |
1501 | { | 1501 | { |
1502 | avatar.ControllingClient.SendAppearance( | 1502 | avatar.ControllingClient.SendAppearance( |
1503 | m_appearance.Owner, | 1503 | m_appearance.Owner, |
1504 | m_appearance.VisualParams, | 1504 | m_appearance.VisualParams, |
@@ -1522,7 +1522,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1522 | } | 1522 | } |
1523 | 1523 | ||
1524 | /// <summary> | 1524 | /// <summary> |
1525 | /// | 1525 | /// |
1526 | /// </summary> | 1526 | /// </summary> |
1527 | /// <param name="animations"></param> | 1527 | /// <param name="animations"></param> |
1528 | /// <param name="seqs"></param> | 1528 | /// <param name="seqs"></param> |
@@ -1536,7 +1536,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1536 | } | 1536 | } |
1537 | 1537 | ||
1538 | /// <summary> | 1538 | /// <summary> |
1539 | /// | 1539 | /// |
1540 | /// </summary> | 1540 | /// </summary> |
1541 | public void SendAnimPack() | 1541 | public void SendAnimPack() |
1542 | { | 1542 | { |
@@ -1568,7 +1568,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1568 | } | 1568 | } |
1569 | 1569 | ||
1570 | // Minimum Draw distance is 64 meters, the Radius of the draw distance sphere is 32m | 1570 | // Minimum Draw distance is 64 meters, the Radius of the draw distance sphere is 32m |
1571 | if (Util.GetDistanceTo(AbsolutePosition,m_LastChildAgentUpdatePosition) > 32) | 1571 | if (Util.GetDistanceTo(AbsolutePosition,m_LastChildAgentUpdatePosition) > 32) |
1572 | { | 1572 | { |
1573 | ChildAgentDataUpdate cadu = new ChildAgentDataUpdate(); | 1573 | ChildAgentDataUpdate cadu = new ChildAgentDataUpdate(); |
1574 | cadu.ActiveGroupID=LLUUID.Zero.UUID; | 1574 | cadu.ActiveGroupID=LLUUID.Zero.UUID; |
@@ -1593,14 +1593,14 @@ namespace OpenSim.Region.Environment.Scenes | |||
1593 | multiplier = 0.25f; | 1593 | multiplier = 0.25f; |
1594 | } | 1594 | } |
1595 | 1595 | ||
1596 | //m_log.Info("[NeighborThrottle]: " + m_scene.GetInaccurateNeighborCount().ToString() + " - m: " + multiplier.ToString()); | 1596 | //m_log.Info("[NeighborThrottle]: " + m_scene.GetInaccurateNeighborCount().ToString() + " - m: " + multiplier.ToString()); |
1597 | cadu.throttles = ControllingClient.GetThrottlesPacked(multiplier); | 1597 | cadu.throttles = ControllingClient.GetThrottlesPacked(multiplier); |
1598 | |||
1599 | 1598 | ||
1600 | |||
1601 | 1599 | ||
1602 | 1600 | ||
1603 | cadu.Velocity = new sLLVector3(Velocity); | 1601 | |
1602 | |||
1603 | cadu.Velocity = new sLLVector3(Velocity); | ||
1604 | m_scene.SendOutChildAgentUpdates(cadu,this); | 1604 | m_scene.SendOutChildAgentUpdates(cadu,this); |
1605 | m_LastChildAgentUpdatePosition.X = AbsolutePosition.X; | 1605 | m_LastChildAgentUpdatePosition.X = AbsolutePosition.X; |
1606 | m_LastChildAgentUpdatePosition.Y = AbsolutePosition.Y; | 1606 | m_LastChildAgentUpdatePosition.Y = AbsolutePosition.Y; |
@@ -1681,9 +1681,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1681 | ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * Constants.RegionSize), (uint)(neighboury * Constants.RegionSize)); | 1681 | ulong neighbourHandle = Helpers.UIntsToLong((uint)(neighbourx * Constants.RegionSize), (uint)(neighboury * Constants.RegionSize)); |
1682 | SimpleRegionInfo neighbourRegion = m_scene.RequestNeighbouringRegionInfo(neighbourHandle); | 1682 | SimpleRegionInfo neighbourRegion = m_scene.RequestNeighbouringRegionInfo(neighbourHandle); |
1683 | if (neighbourRegion != null) | 1683 | if (neighbourRegion != null) |
1684 | { | 1684 | { |
1685 | // When the neighbour is informed of the border crossing, it will set up CAPS handlers for the avatar | 1685 | // When the neighbour is informed of the border crossing, it will set up CAPS handlers for the avatar |
1686 | // This means we need to remove the current caps handler here and possibly compensate later, | 1686 | // This means we need to remove the current caps handler here and possibly compensate later, |
1687 | // in case both scenes are being hosted on the same region server. Messy | 1687 | // in case both scenes are being hosted on the same region server. Messy |
1688 | m_scene.RemoveCapsHandler(UUID); | 1688 | m_scene.RemoveCapsHandler(UUID); |
1689 | newpos = newpos + (vel); | 1689 | newpos = newpos + (vel); |
@@ -1691,17 +1691,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
1691 | m_scene.InformNeighbourOfCrossing(neighbourHandle, m_controllingClient.AgentId, newpos, | 1691 | m_scene.InformNeighbourOfCrossing(neighbourHandle, m_controllingClient.AgentId, newpos, |
1692 | m_physicsActor.Flying); | 1692 | m_physicsActor.Flying); |
1693 | if (res) | 1693 | if (res) |
1694 | { | 1694 | { |
1695 | AgentCircuitData circuitdata = m_controllingClient.RequestClientInfo(); | 1695 | AgentCircuitData circuitdata = m_controllingClient.RequestClientInfo(); |
1696 | 1696 | ||
1697 | // TODO Should construct this behind a method | 1697 | // TODO Should construct this behind a method |
1698 | string capsPath = | 1698 | string capsPath = |
1699 | "http://" + neighbourRegion.ExternalHostName + ":" + neighbourRegion.HttpPort | 1699 | "http://" + neighbourRegion.ExternalHostName + ":" + neighbourRegion.HttpPort |
1700 | + "/CAPS/" + circuitdata.CapsPath + "0000/"; | 1700 | + "/CAPS/" + circuitdata.CapsPath + "0000/"; |
1701 | 1701 | ||
1702 | m_log.DebugFormat( | 1702 | m_log.DebugFormat( |
1703 | "[CAPS]: Sending new CAPS seed url {0} to client {1}", capsPath, m_uuid); | 1703 | "[CAPS]: Sending new CAPS seed url {0} to client {1}", capsPath, m_uuid); |
1704 | 1704 | ||
1705 | m_controllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.ExternalEndPoint, | 1705 | m_controllingClient.CrossRegion(neighbourHandle, newpos, vel, neighbourRegion.ExternalEndPoint, |
1706 | capsPath); | 1706 | capsPath); |
1707 | MakeChildAgent(); | 1707 | MakeChildAgent(); |
@@ -1742,17 +1742,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
1742 | /// </summary> | 1742 | /// </summary> |
1743 | public void ChildAgentDataUpdate(ChildAgentDataUpdate cAgentData, uint tRegionX, uint tRegionY, uint rRegionX, uint rRegionY) | 1743 | public void ChildAgentDataUpdate(ChildAgentDataUpdate cAgentData, uint tRegionX, uint tRegionY, uint rRegionX, uint rRegionY) |
1744 | { | 1744 | { |
1745 | // | 1745 | // |
1746 | int shiftx = ((int)rRegionX - (int)tRegionX) * (int)Constants.RegionSize; | 1746 | int shiftx = ((int)rRegionX - (int)tRegionX) * (int)Constants.RegionSize; |
1747 | int shifty = ((int)rRegionY - (int)tRegionY) * (int)Constants.RegionSize; | 1747 | int shifty = ((int)rRegionY - (int)tRegionY) * (int)Constants.RegionSize; |
1748 | 1748 | ||
1749 | m_DrawDistance = cAgentData.drawdistance; | 1749 | m_DrawDistance = cAgentData.drawdistance; |
1750 | m_pos = new LLVector3(cAgentData.Position.x + shiftx, cAgentData.Position.y + shifty, cAgentData.Position.z); | 1750 | m_pos = new LLVector3(cAgentData.Position.x + shiftx, cAgentData.Position.y + shifty, cAgentData.Position.z); |
1751 | 1751 | ||
1752 | // It's hard to say here.. We can't really tell where the camera position is unless it's in world cordinates from the sending region | 1752 | // It's hard to say here.. We can't really tell where the camera position is unless it's in world cordinates from the sending region |
1753 | m_CameraCenter = | 1753 | m_CameraCenter = |
1754 | new Vector3(cAgentData.cameraPosition.x, cAgentData.cameraPosition.y, cAgentData.cameraPosition.z); | 1754 | new Vector3(cAgentData.cameraPosition.x, cAgentData.cameraPosition.y, cAgentData.cameraPosition.z); |
1755 | 1755 | ||
1756 | 1756 | ||
1757 | m_godlevel = cAgentData.godlevel; | 1757 | m_godlevel = cAgentData.godlevel; |
1758 | SetHeight(cAgentData.AVHeight); | 1758 | SetHeight(cAgentData.AVHeight); |
@@ -1793,8 +1793,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1793 | } | 1793 | } |
1794 | catch (NullReferenceException) | 1794 | catch (NullReferenceException) |
1795 | { | 1795 | { |
1796 | // Under extreme load, this returns a NullReference Exception that we can ignore. | 1796 | // Under extreme load, this returns a NullReference Exception that we can ignore. |
1797 | // Ignoring this causes no movement to be sent to the physics engine... | 1797 | // Ignoring this causes no movement to be sent to the physics engine... |
1798 | // which when the scene is moving at 1 frame every 10 seconds, it doesn't really matter! | 1798 | // which when the scene is moving at 1 frame every 10 seconds, it doesn't really matter! |
1799 | } | 1799 | } |
1800 | m_newForce = true; | 1800 | m_newForce = true; |
@@ -1809,12 +1809,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
1809 | 1809 | ||
1810 | static ScenePresence() | 1810 | static ScenePresence() |
1811 | { | 1811 | { |
1812 | 1812 | ||
1813 | LLObject.TextureEntry textu = AvatarAppearance.GetDefaultTexture(); | 1813 | LLObject.TextureEntry textu = AvatarAppearance.GetDefaultTexture(); |
1814 | DefaultTexture = textu.ToBytes(); | 1814 | DefaultTexture = textu.ToBytes(); |
1815 | } | 1815 | } |
1816 | 1816 | ||
1817 | [Serializable] | 1817 | [Serializable] |
1818 | public class NewForce | 1818 | public class NewForce |
1819 | { | 1819 | { |
1820 | public float X; | 1820 | public float X; |
@@ -1826,8 +1826,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
1826 | } | 1826 | } |
1827 | } | 1827 | } |
1828 | 1828 | ||
1829 | [Serializable] | 1829 | [Serializable] |
1830 | public class ScenePartUpdate : ISerializable | 1830 | public class ScenePartUpdate : ISerializable |
1831 | { | 1831 | { |
1832 | public LLUUID FullID; | 1832 | public LLUUID FullID; |
1833 | public uint LastFullUpdateTime; | 1833 | public uint LastFullUpdateTime; |
@@ -1883,7 +1883,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1883 | public void AddToPhysicalScene() | 1883 | public void AddToPhysicalScene() |
1884 | { | 1884 | { |
1885 | PhysicsScene scene = m_scene.PhysicsScene; | 1885 | PhysicsScene scene = m_scene.PhysicsScene; |
1886 | 1886 | ||
1887 | PhysicsVector pVec = | 1887 | PhysicsVector pVec = |
1888 | new PhysicsVector(AbsolutePosition.X, AbsolutePosition.Y, | 1888 | new PhysicsVector(AbsolutePosition.X, AbsolutePosition.Y, |
1889 | AbsolutePosition.Z); | 1889 | AbsolutePosition.Z); |
@@ -1936,7 +1936,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
1936 | if (m_health <= 0) | 1936 | if (m_health <= 0) |
1937 | m_scene.EventManager.TriggerAvatarKill(killerObj, this); | 1937 | m_scene.EventManager.TriggerAvatarKill(killerObj, this); |
1938 | } | 1938 | } |
1939 | 1939 | ||
1940 | if (Velocity.X > 0 || Velocity.Y > 0) | 1940 | if (Velocity.X > 0 || Velocity.Y > 0) |
1941 | UpdateMovementAnimations(); | 1941 | UpdateMovementAnimations(); |
1942 | } | 1942 | } |
@@ -2161,7 +2161,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2161 | // m_partsUpdateQueue = (UpdateQueue)info.GetValue("m_partsUpdateQueue", typeof(UpdateQueue)); | 2161 | // m_partsUpdateQueue = (UpdateQueue)info.GetValue("m_partsUpdateQueue", typeof(UpdateQueue)); |
2162 | 2162 | ||
2163 | /* | 2163 | /* |
2164 | Dictionary<Guid, ScenePartUpdate> updateTimes_work | 2164 | Dictionary<Guid, ScenePartUpdate> updateTimes_work |
2165 | = (Dictionary<Guid, ScenePartUpdate>)info.GetValue("m_updateTimes", typeof(Dictionary<Guid, ScenePartUpdate>)); | 2165 | = (Dictionary<Guid, ScenePartUpdate>)info.GetValue("m_updateTimes", typeof(Dictionary<Guid, ScenePartUpdate>)); |
2166 | 2166 | ||
2167 | foreach (Guid id in updateTimes_work.Keys) | 2167 | foreach (Guid id in updateTimes_work.Keys) |
@@ -2188,7 +2188,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2188 | (float)info.GetValue("lastKnownAllowedPosition.X", typeof(float)), | 2188 | (float)info.GetValue("lastKnownAllowedPosition.X", typeof(float)), |
2189 | (float)info.GetValue("lastKnownAllowedPosition.Y", typeof(float)), | 2189 | (float)info.GetValue("lastKnownAllowedPosition.Y", typeof(float)), |
2190 | (float)info.GetValue("lastKnownAllowedPosition.Z", typeof(float))); | 2190 | (float)info.GetValue("lastKnownAllowedPosition.Z", typeof(float))); |
2191 | 2191 | ||
2192 | sentMessageAboutRestrictedParcelFlyingDown = (bool)info.GetValue("sentMessageAboutRestrictedParcelFlyingDown", typeof(bool)); | 2192 | sentMessageAboutRestrictedParcelFlyingDown = (bool)info.GetValue("sentMessageAboutRestrictedParcelFlyingDown", typeof(bool)); |
2193 | 2193 | ||
2194 | m_LastChildAgentUpdatePosition | 2194 | m_LastChildAgentUpdatePosition |
@@ -2196,7 +2196,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2196 | (float)info.GetValue("m_LastChildAgentUpdatePosition.X", typeof(float)), | 2196 | (float)info.GetValue("m_LastChildAgentUpdatePosition.X", typeof(float)), |
2197 | (float)info.GetValue("m_LastChildAgentUpdatePosition.Y", typeof(float)), | 2197 | (float)info.GetValue("m_LastChildAgentUpdatePosition.Y", typeof(float)), |
2198 | (float)info.GetValue("m_LastChildAgentUpdatePosition.Z", typeof(float))); | 2198 | (float)info.GetValue("m_LastChildAgentUpdatePosition.Z", typeof(float))); |
2199 | 2199 | ||
2200 | m_perfMonMS = (int)info.GetValue("m_perfMonMS", typeof(int)); | 2200 | m_perfMonMS = (int)info.GetValue("m_perfMonMS", typeof(int)); |
2201 | m_AgentControlFlags = (uint)info.GetValue("m_AgentControlFlags", typeof(uint)); | 2201 | m_AgentControlFlags = (uint)info.GetValue("m_AgentControlFlags", typeof(uint)); |
2202 | 2202 | ||
@@ -2246,7 +2246,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2246 | info.AddValue("m_sitAvatarHeight", m_sitAvatarHeight); | 2246 | info.AddValue("m_sitAvatarHeight", m_sitAvatarHeight); |
2247 | info.AddValue("m_godlevel", m_godlevel); | 2247 | info.AddValue("m_godlevel", m_godlevel); |
2248 | info.AddValue("m_setAlwaysRun", m_setAlwaysRun); | 2248 | info.AddValue("m_setAlwaysRun", m_setAlwaysRun); |
2249 | 2249 | ||
2250 | // Quaternion | 2250 | // Quaternion |
2251 | info.AddValue("m_bodyRot.w", m_bodyRot.w); | 2251 | info.AddValue("m_bodyRot.w", m_bodyRot.w); |
2252 | info.AddValue("m_bodyRot.x", m_bodyRot.x); | 2252 | info.AddValue("m_bodyRot.x", m_bodyRot.x); |
@@ -2374,7 +2374,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2374 | 2374 | ||
2375 | public void RegisterControlEventsToScript(int controls, int accept, int pass_on, uint Obj_localID, LLUUID Script_item_LLUUID) | 2375 | public void RegisterControlEventsToScript(int controls, int accept, int pass_on, uint Obj_localID, LLUUID Script_item_LLUUID) |
2376 | { | 2376 | { |
2377 | 2377 | ||
2378 | ScriptControllers obj = new ScriptControllers(); | 2378 | ScriptControllers obj = new ScriptControllers(); |
2379 | obj.ignoreControls = ScriptControlled.CONTROL_ZERO; | 2379 | obj.ignoreControls = ScriptControlled.CONTROL_ZERO; |
2380 | obj.eventControls = ScriptControlled.CONTROL_ZERO; | 2380 | obj.eventControls = ScriptControlled.CONTROL_ZERO; |
@@ -2386,7 +2386,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2386 | IgnoredControls |= (ScriptControlled)controls; | 2386 | IgnoredControls |= (ScriptControlled)controls; |
2387 | obj.ignoreControls = (ScriptControlled)controls; | 2387 | obj.ignoreControls = (ScriptControlled)controls; |
2388 | } | 2388 | } |
2389 | 2389 | ||
2390 | if (pass_on == 0 && accept == 1) | 2390 | if (pass_on == 0 && accept == 1) |
2391 | { | 2391 | { |
2392 | IgnoredControls |= (ScriptControlled)controls; | 2392 | IgnoredControls |= (ScriptControlled)controls; |
@@ -2432,7 +2432,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2432 | lock (scriptedcontrols) | 2432 | lock (scriptedcontrols) |
2433 | { | 2433 | { |
2434 | scriptedcontrols.Clear(); | 2434 | scriptedcontrols.Clear(); |
2435 | } | 2435 | } |
2436 | ControllingClient.SendTakeControls(int.MaxValue, false, false); | 2436 | ControllingClient.SendTakeControls(int.MaxValue, false, false); |
2437 | } | 2437 | } |
2438 | 2438 | ||
@@ -2454,7 +2454,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2454 | 2454 | ||
2455 | internal void SendControlToScripts(uint flags, ScriptControlled lastFlags) | 2455 | internal void SendControlToScripts(uint flags, ScriptControlled lastFlags) |
2456 | { | 2456 | { |
2457 | 2457 | ||
2458 | ScriptControlled allflags = ScriptControlled.CONTROL_ZERO; | 2458 | ScriptControlled allflags = ScriptControlled.CONTROL_ZERO; |
2459 | 2459 | ||
2460 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0) | 2460 | if ((flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS) != 0 || (flags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS) != 0) |
@@ -2497,10 +2497,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
2497 | { | 2497 | { |
2498 | allflags |= ScriptControlled.CONTROL_LBUTTON; | 2498 | allflags |= ScriptControlled.CONTROL_LBUTTON; |
2499 | } | 2499 | } |
2500 | 2500 | ||
2501 | ScriptControlled held = ScriptControlled.CONTROL_ZERO; | 2501 | ScriptControlled held = ScriptControlled.CONTROL_ZERO; |
2502 | ScriptControlled change = ScriptControlled.CONTROL_ZERO; | 2502 | ScriptControlled change = ScriptControlled.CONTROL_ZERO; |
2503 | 2503 | ||
2504 | foreach (ScriptControlled DCF in Enum.GetValues(typeof (ScriptControlled))) | 2504 | foreach (ScriptControlled DCF in Enum.GetValues(typeof (ScriptControlled))) |
2505 | { | 2505 | { |
2506 | // Held | 2506 | // Held |
@@ -2539,7 +2539,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2539 | } | 2539 | } |
2540 | } | 2540 | } |
2541 | LastCommands = allflags; | 2541 | LastCommands = allflags; |
2542 | 2542 | ||
2543 | } | 2543 | } |
2544 | internal uint RemoveIgnoredControls(uint flags, ScriptControlled Ignored) | 2544 | internal uint RemoveIgnoredControls(uint flags, ScriptControlled Ignored) |
2545 | { | 2545 | { |