diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/ScenePresence.cs | 575 |
1 files changed, 288 insertions, 287 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs index b3e04be..0290576 100644 --- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs | |||
@@ -100,16 +100,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
100 | 100 | ||
101 | public UUID currentParcelUUID = UUID.Zero; | 101 | public UUID currentParcelUUID = UUID.Zero; |
102 | 102 | ||
103 | private ISceneViewer m_sceneViewer; | 103 | protected ScenePresenceAnimator m_animator; |
104 | |||
105 | /// <value> | 104 | /// <value> |
106 | /// The animator for this avatar | 105 | /// The animator for this avatar |
107 | /// </value> | 106 | /// </value> |
108 | public ScenePresenceAnimator Animator | 107 | public ScenePresenceAnimator Animator |
109 | { | 108 | { |
110 | get { return m_animator; } | 109 | get { return m_animator; } |
110 | private set { m_animator = value; } | ||
111 | } | 111 | } |
112 | protected ScenePresenceAnimator m_animator; | ||
113 | 112 | ||
114 | /// <summary> | 113 | /// <summary> |
115 | /// Attachments recorded on this avatar. | 114 | /// Attachments recorded on this avatar. |
@@ -137,8 +136,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
137 | private Vector3 m_lastVelocity; | 136 | private Vector3 m_lastVelocity; |
138 | //private int m_lastTerseSent; | 137 | //private int m_lastTerseSent; |
139 | 138 | ||
140 | private bool m_updateflag; | ||
141 | private byte m_movementflag; | ||
142 | private Vector3? m_forceToApply; | 139 | private Vector3? m_forceToApply; |
143 | private TeleportFlags m_teleportFlags; | 140 | private TeleportFlags m_teleportFlags; |
144 | public TeleportFlags TeleportFlags | 141 | public TeleportFlags TeleportFlags |
@@ -159,25 +156,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
159 | 156 | ||
160 | private float m_sitAvatarHeight = 2.0f; | 157 | private float m_sitAvatarHeight = 2.0f; |
161 | 158 | ||
162 | private int m_godLevel; | ||
163 | private int m_userLevel; | ||
164 | |||
165 | private bool m_invulnerable = true; | ||
166 | |||
167 | private Vector3 m_lastChildAgentUpdatePosition; | 159 | private Vector3 m_lastChildAgentUpdatePosition; |
168 | private Vector3 m_lastChildAgentUpdateCamPosition; | 160 | private Vector3 m_lastChildAgentUpdateCamPosition; |
169 | 161 | ||
170 | private int m_perfMonMS; | 162 | private int m_perfMonMS; |
171 | 163 | ||
172 | private bool m_setAlwaysRun; | ||
173 | |||
174 | private bool m_forceFly; | ||
175 | private bool m_flyDisabled; | ||
176 | |||
177 | private float m_speedModifier = 1.0f; | ||
178 | |||
179 | private Quaternion m_bodyRot = Quaternion.Identity; | ||
180 | |||
181 | private const int LAND_VELOCITYMAG_MAX = 12; | 164 | private const int LAND_VELOCITYMAG_MAX = 12; |
182 | 165 | ||
183 | public bool IsRestrictedToRegion; | 166 | public bool IsRestrictedToRegion; |
@@ -190,22 +173,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
190 | 173 | ||
191 | private readonly Vector3[] Dir_Vectors = new Vector3[9]; | 174 | private readonly Vector3[] Dir_Vectors = new Vector3[9]; |
192 | 175 | ||
193 | // Position of agent's camera in world (region cordinates) | ||
194 | protected Vector3 m_CameraCenter; | ||
195 | protected Vector3 m_lastCameraCenter; | ||
196 | 176 | ||
197 | protected Timer m_reprioritization_timer; | 177 | protected Timer m_reprioritization_timer; |
198 | protected bool m_reprioritizing; | 178 | protected bool m_reprioritizing; |
199 | protected bool m_reprioritization_called; | 179 | protected bool m_reprioritization_called; |
200 | 180 | ||
201 | // Use these three vectors to figure out what the agent is looking at | ||
202 | // Convert it to a Matrix and/or Quaternion | ||
203 | protected Vector3 m_CameraAtAxis; | ||
204 | protected Vector3 m_CameraLeftAxis; | ||
205 | protected Vector3 m_CameraUpAxis; | ||
206 | private AgentManager.ControlFlags m_AgentControlFlags; | ||
207 | private Quaternion m_headrotation = Quaternion.Identity; | 181 | private Quaternion m_headrotation = Quaternion.Identity; |
208 | private byte m_state; | ||
209 | 182 | ||
210 | //Reuse the Vector3 instead of creating a new one on the UpdateMovement method | 183 | //Reuse the Vector3 instead of creating a new one on the UpdateMovement method |
211 | // private Vector3 movementvector; | 184 | // private Vector3 movementvector; |
@@ -234,11 +207,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
234 | //private int m_moveToPositionStateStatus; | 207 | //private int m_moveToPositionStateStatus; |
235 | //***************************************************** | 208 | //***************************************************** |
236 | 209 | ||
237 | // Agent's Draw distance. | ||
238 | protected float m_DrawDistance; | ||
239 | |||
240 | protected AvatarAppearance m_appearance; | 210 | protected AvatarAppearance m_appearance; |
241 | 211 | ||
212 | public AvatarAppearance Appearance | ||
213 | { | ||
214 | get { return m_appearance; } | ||
215 | set | ||
216 | { | ||
217 | m_appearance = value; | ||
218 | // m_log.DebugFormat("[SCENE PRESENCE]: Set appearance for {0} to {1}", Name, value); | ||
219 | } | ||
220 | } | ||
221 | |||
222 | |||
242 | // neighbouring regions we have enabled a child agent in | 223 | // neighbouring regions we have enabled a child agent in |
243 | // holds the seed cap for the child agent in that region | 224 | // holds the seed cap for the child agent in that region |
244 | private Dictionary<ulong, string> m_knownChildRegions = new Dictionary<ulong, string>(); | 225 | private Dictionary<ulong, string> m_knownChildRegions = new Dictionary<ulong, string>(); |
@@ -250,6 +231,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
250 | public List<string> InTransitScriptStates | 231 | public List<string> InTransitScriptStates |
251 | { | 232 | { |
252 | get { return m_InTransitScriptStates; } | 233 | get { return m_InTransitScriptStates; } |
234 | private set { m_InTransitScriptStates = value; } | ||
253 | } | 235 | } |
254 | private List<string> m_InTransitScriptStates = new List<string>(); | 236 | private List<string> m_InTransitScriptStates = new List<string>(); |
255 | 237 | ||
@@ -278,8 +260,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
278 | string m_callbackURI; | 260 | string m_callbackURI; |
279 | UUID m_originRegionID; | 261 | UUID m_originRegionID; |
280 | 262 | ||
281 | ulong m_rootRegionHandle; | ||
282 | |||
283 | /// <value> | 263 | /// <value> |
284 | /// Script engines present in the scene | 264 | /// Script engines present in the scene |
285 | /// </value> | 265 | /// </value> |
@@ -287,6 +267,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
287 | 267 | ||
288 | #region Properties | 268 | #region Properties |
289 | 269 | ||
270 | protected PhysicsActor m_physicsActor; | ||
271 | |||
290 | /// <summary> | 272 | /// <summary> |
291 | /// Physical scene representation of this Avatar. | 273 | /// Physical scene representation of this Avatar. |
292 | /// </summary> | 274 | /// </summary> |
@@ -296,69 +278,102 @@ namespace OpenSim.Region.Framework.Scenes | |||
296 | get { return m_physicsActor; } | 278 | get { return m_physicsActor; } |
297 | } | 279 | } |
298 | 280 | ||
281 | private byte m_movementflag; | ||
282 | |||
299 | public byte MovementFlag | 283 | public byte MovementFlag |
300 | { | 284 | { |
301 | set { m_movementflag = value; } | 285 | set { m_movementflag = value; } |
302 | get { return m_movementflag; } | 286 | get { return m_movementflag; } |
303 | } | 287 | } |
304 | 288 | ||
289 | private bool m_updateflag; | ||
290 | |||
305 | public bool Updated | 291 | public bool Updated |
306 | { | 292 | { |
307 | set { m_updateflag = value; } | 293 | set { m_updateflag = value; } |
308 | get { return m_updateflag; } | 294 | get { return m_updateflag; } |
309 | } | 295 | } |
310 | 296 | ||
297 | private bool m_invulnerable = true; | ||
298 | |||
311 | public bool Invulnerable | 299 | public bool Invulnerable |
312 | { | 300 | { |
313 | set { m_invulnerable = value; } | 301 | set { m_invulnerable = value; } |
314 | get { return m_invulnerable; } | 302 | get { return m_invulnerable; } |
315 | } | 303 | } |
316 | 304 | ||
305 | private int m_userLevel; | ||
306 | |||
317 | public int UserLevel | 307 | public int UserLevel |
318 | { | 308 | { |
319 | get { return m_userLevel; } | 309 | get { return m_userLevel; } |
310 | private set { m_userLevel = value; } | ||
320 | } | 311 | } |
321 | 312 | ||
313 | private int m_godLevel; | ||
314 | |||
322 | public int GodLevel | 315 | public int GodLevel |
323 | { | 316 | { |
324 | get { return m_godLevel; } | 317 | get { return m_godLevel; } |
318 | private set { m_godLevel = value; } | ||
325 | } | 319 | } |
326 | 320 | ||
321 | private ulong m_rootRegionHandle; | ||
322 | |||
327 | public ulong RegionHandle | 323 | public ulong RegionHandle |
328 | { | 324 | { |
329 | get { return m_rootRegionHandle; } | 325 | get { return m_rootRegionHandle; } |
326 | private set { m_rootRegionHandle = value; } | ||
330 | } | 327 | } |
331 | 328 | ||
329 | #region Client Camera | ||
330 | // Position of agent's camera in world (region cordinates) | ||
331 | protected Vector3 m_lastCameraPosition; | ||
332 | |||
333 | protected Vector3 m_CameraPosition; | ||
334 | |||
332 | public Vector3 CameraPosition | 335 | public Vector3 CameraPosition |
333 | { | 336 | { |
334 | get { return m_CameraCenter; } | 337 | get { return m_CameraPosition; } |
338 | private set { m_CameraPosition = value; } | ||
335 | } | 339 | } |
336 | 340 | ||
337 | public Quaternion CameraRotation | 341 | public Quaternion CameraRotation |
338 | { | 342 | { |
339 | get { return Util.Axes2Rot(m_CameraAtAxis, m_CameraLeftAxis, m_CameraUpAxis); } | 343 | get { return Util.Axes2Rot(CameraAtAxis, CameraLeftAxis, CameraUpAxis); } |
340 | } | 344 | } |
341 | 345 | ||
346 | // Use these three vectors to figure out what the agent is looking at | ||
347 | // Convert it to a Matrix and/or Quaternion | ||
348 | // | ||
349 | protected Vector3 m_CameraAtAxis; | ||
350 | protected Vector3 m_CameraLeftAxis; | ||
351 | protected Vector3 m_CameraUpAxis; | ||
352 | |||
342 | public Vector3 CameraAtAxis | 353 | public Vector3 CameraAtAxis |
343 | { | 354 | { |
344 | get { return m_CameraAtAxis; } | 355 | get { return m_CameraAtAxis; } |
356 | private set { m_CameraAtAxis = value; } | ||
345 | } | 357 | } |
346 | 358 | ||
359 | |||
347 | public Vector3 CameraLeftAxis | 360 | public Vector3 CameraLeftAxis |
348 | { | 361 | { |
349 | get { return m_CameraLeftAxis; } | 362 | get { return m_CameraLeftAxis; } |
363 | private set { m_CameraLeftAxis = value; } | ||
350 | } | 364 | } |
351 | 365 | ||
352 | public Vector3 CameraUpAxis | 366 | public Vector3 CameraUpAxis |
353 | { | 367 | { |
354 | get { return m_CameraUpAxis; } | 368 | get { return m_CameraUpAxis; } |
369 | private set { m_CameraUpAxis = value; } | ||
355 | } | 370 | } |
356 | 371 | ||
357 | public Vector3 Lookat | 372 | public Vector3 Lookat |
358 | { | 373 | { |
359 | get | 374 | get |
360 | { | 375 | { |
361 | Vector3 a = new Vector3(m_CameraAtAxis.X, m_CameraAtAxis.Y, 0); | 376 | Vector3 a = new Vector3(CameraAtAxis.X, CameraAtAxis.Y, 0); |
362 | 377 | ||
363 | if (a == Vector3.Zero) | 378 | if (a == Vector3.Zero) |
364 | return a; | 379 | return a; |
@@ -366,20 +381,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
366 | return Util.GetNormalizedVector(a); | 381 | return Util.GetNormalizedVector(a); |
367 | } | 382 | } |
368 | } | 383 | } |
384 | #endregion | ||
369 | 385 | ||
370 | private readonly string m_firstname; | 386 | public readonly string Firstname; |
371 | 387 | public readonly string Lastname; | |
372 | public string Firstname | ||
373 | { | ||
374 | get { return m_firstname; } | ||
375 | } | ||
376 | |||
377 | private readonly string m_lastname; | ||
378 | |||
379 | public string Lastname | ||
380 | { | ||
381 | get { return m_lastname; } | ||
382 | } | ||
383 | 388 | ||
384 | private string m_grouptitle; | 389 | private string m_grouptitle; |
385 | 390 | ||
@@ -389,9 +394,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
389 | set { m_grouptitle = value; } | 394 | set { m_grouptitle = value; } |
390 | } | 395 | } |
391 | 396 | ||
397 | // Agent's Draw distance. | ||
398 | protected float m_DrawDistance; | ||
399 | |||
392 | public float DrawDistance | 400 | public float DrawDistance |
393 | { | 401 | { |
394 | get { return m_DrawDistance; } | 402 | get { return m_DrawDistance; } |
403 | private set { m_DrawDistance = value; } | ||
395 | } | 404 | } |
396 | 405 | ||
397 | protected bool m_allowMovement = true; | 406 | protected bool m_allowMovement = true; |
@@ -402,6 +411,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
402 | set { m_allowMovement = value; } | 411 | set { m_allowMovement = value; } |
403 | } | 412 | } |
404 | 413 | ||
414 | private bool m_setAlwaysRun; | ||
415 | |||
405 | public bool SetAlwaysRun | 416 | public bool SetAlwaysRun |
406 | { | 417 | { |
407 | get | 418 | get |
@@ -425,12 +436,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
425 | } | 436 | } |
426 | } | 437 | } |
427 | 438 | ||
439 | private byte m_state; | ||
440 | |||
428 | public byte State | 441 | public byte State |
429 | { | 442 | { |
430 | get { return m_state; } | 443 | get { return m_state; } |
431 | set { m_state = value; } | 444 | set { m_state = value; } |
432 | } | 445 | } |
433 | 446 | ||
447 | private AgentManager.ControlFlags m_AgentControlFlags; | ||
448 | |||
434 | public uint AgentControlFlags | 449 | public uint AgentControlFlags |
435 | { | 450 | { |
436 | get { return (uint)m_AgentControlFlags; } | 451 | get { return (uint)m_AgentControlFlags; } |
@@ -442,11 +457,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
442 | /// </summary> | 457 | /// </summary> |
443 | private IClientAPI m_controllingClient; | 458 | private IClientAPI m_controllingClient; |
444 | 459 | ||
445 | protected PhysicsActor m_physicsActor; | ||
446 | |||
447 | public IClientAPI ControllingClient | 460 | public IClientAPI ControllingClient |
448 | { | 461 | { |
449 | get { return m_controllingClient; } | 462 | get { return m_controllingClient; } |
463 | private set { m_controllingClient = value; } | ||
450 | } | 464 | } |
451 | 465 | ||
452 | public IClientCore ClientView | 466 | public IClientCore ClientView |
@@ -455,6 +469,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
455 | } | 469 | } |
456 | 470 | ||
457 | protected Vector3 m_parentPosition; | 471 | protected Vector3 m_parentPosition; |
472 | |||
458 | public Vector3 ParentPosition | 473 | public Vector3 ParentPosition |
459 | { | 474 | { |
460 | get { return m_parentPosition; } | 475 | get { return m_parentPosition; } |
@@ -468,10 +483,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
468 | { | 483 | { |
469 | get | 484 | get |
470 | { | 485 | { |
471 | PhysicsActor actor = m_physicsActor; | 486 | if (PhysicsActor != null) |
472 | if (actor != null) | ||
473 | { | 487 | { |
474 | m_pos = actor.Position; | 488 | m_pos = PhysicsActor.Position; |
475 | 489 | ||
476 | // m_log.DebugFormat( | 490 | // m_log.DebugFormat( |
477 | // "[SCENE PRESENCE]: Set position {0} for {1} in {2} via getting AbsolutePosition!", | 491 | // "[SCENE PRESENCE]: Set position {0} for {1} in {2} via getting AbsolutePosition!", |
@@ -484,7 +498,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
484 | // the avatar is seated, this value will also | 498 | // the avatar is seated, this value will also |
485 | // be used as the location to unsit to. | 499 | // be used as the location to unsit to. |
486 | // | 500 | // |
487 | // If m_parentID is not 0, assume we are a seated avatar | 501 | // If ParentID is not 0, assume we are a seated avatar |
488 | // and we should return the position based on the sittarget | 502 | // and we should return the position based on the sittarget |
489 | // offset and rotation of the prim we are seated on. | 503 | // offset and rotation of the prim we are seated on. |
490 | // | 504 | // |
@@ -492,16 +506,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
492 | // in the sim unless the avatar is on a sit target. While | 506 | // in the sim unless the avatar is on a sit target. While |
493 | // on a sit target, m_pos will contain the desired offset | 507 | // on a sit target, m_pos will contain the desired offset |
494 | // without the parent rotation applied. | 508 | // without the parent rotation applied. |
495 | if (m_parentID != 0) | 509 | if (ParentID != 0) |
496 | { | 510 | { |
497 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID); | 511 | SceneObjectPart part = m_scene.GetSceneObjectPart(ParentID); |
498 | if (part != null) | 512 | if (part != null) |
499 | { | 513 | { |
500 | return m_parentPosition + (m_pos * part.GetWorldRotation()); | 514 | return ParentPosition + (m_pos * part.GetWorldRotation()); |
501 | } | 515 | } |
502 | else | 516 | else |
503 | { | 517 | { |
504 | return m_parentPosition + m_pos; | 518 | return ParentPosition + m_pos; |
505 | } | 519 | } |
506 | } | 520 | } |
507 | } | 521 | } |
@@ -510,13 +524,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
510 | } | 524 | } |
511 | set | 525 | set |
512 | { | 526 | { |
513 | PhysicsActor actor = m_physicsActor; | 527 | if (PhysicsActor != null) |
514 | if (actor != null) | ||
515 | { | 528 | { |
516 | try | 529 | try |
517 | { | 530 | { |
518 | lock (m_scene.SyncRoot) | 531 | lock (m_scene.SyncRoot) |
519 | m_physicsActor.Position = value; | 532 | PhysicsActor.Position = value; |
520 | } | 533 | } |
521 | catch (Exception e) | 534 | catch (Exception e) |
522 | { | 535 | { |
@@ -525,7 +538,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
525 | } | 538 | } |
526 | 539 | ||
527 | m_pos = value; | 540 | m_pos = value; |
528 | m_parentPosition = Vector3.Zero; | 541 | ParentPosition = Vector3.Zero; |
529 | 542 | ||
530 | // m_log.DebugFormat( | 543 | // m_log.DebugFormat( |
531 | // "[ENTITY BASE]: In {0} set AbsolutePosition of {1} to {2}", | 544 | // "[ENTITY BASE]: In {0} set AbsolutePosition of {1} to {2}", |
@@ -549,10 +562,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
549 | { | 562 | { |
550 | get | 563 | get |
551 | { | 564 | { |
552 | PhysicsActor actor = m_physicsActor; | 565 | if (PhysicsActor != null) |
553 | if (actor != null) | ||
554 | { | 566 | { |
555 | m_velocity = actor.Velocity; | 567 | m_velocity = PhysicsActor.Velocity; |
556 | 568 | ||
557 | // m_log.DebugFormat( | 569 | // m_log.DebugFormat( |
558 | // "[SCENE PRESENCE]: Set velocity {0} for {1} in {2} via getting Velocity!", | 570 | // "[SCENE PRESENCE]: Set velocity {0} for {1} in {2} via getting Velocity!", |
@@ -563,13 +575,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
563 | } | 575 | } |
564 | set | 576 | set |
565 | { | 577 | { |
566 | PhysicsActor actor = m_physicsActor; | 578 | if (PhysicsActor != null) |
567 | if (actor != null) | ||
568 | { | 579 | { |
569 | try | 580 | try |
570 | { | 581 | { |
571 | lock (m_scene.SyncRoot) | 582 | lock (m_scene.SyncRoot) |
572 | actor.Velocity = value; | 583 | PhysicsActor.Velocity = value; |
573 | } | 584 | } |
574 | catch (Exception e) | 585 | catch (Exception e) |
575 | { | 586 | { |
@@ -585,6 +596,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
585 | } | 596 | } |
586 | } | 597 | } |
587 | 598 | ||
599 | private Quaternion m_bodyRot = Quaternion.Identity; | ||
600 | |||
588 | public Quaternion Rotation | 601 | public Quaternion Rotation |
589 | { | 602 | { |
590 | get { return m_bodyRot; } | 603 | get { return m_bodyRot; } |
@@ -645,9 +658,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
645 | } | 658 | } |
646 | } | 659 | } |
647 | 660 | ||
661 | private ISceneViewer m_sceneViewer; | ||
662 | |||
648 | public ISceneViewer SceneViewer | 663 | public ISceneViewer SceneViewer |
649 | { | 664 | { |
650 | get { return m_sceneViewer; } | 665 | get { return m_sceneViewer; } |
666 | private set { m_sceneViewer = value; } | ||
651 | } | 667 | } |
652 | 668 | ||
653 | public void AdjustKnownSeeds() | 669 | public void AdjustKnownSeeds() |
@@ -694,28 +710,35 @@ namespace OpenSim.Region.Framework.Scenes | |||
694 | } | 710 | } |
695 | } | 711 | } |
696 | 712 | ||
697 | private bool m_inTransit; | ||
698 | private bool m_mouseLook; | 713 | private bool m_mouseLook; |
699 | private bool m_leftButtonDown; | 714 | private bool m_leftButtonDown; |
700 | 715 | ||
716 | private bool m_inTransit; | ||
717 | |||
701 | public bool IsInTransit | 718 | public bool IsInTransit |
702 | { | 719 | { |
703 | get { return m_inTransit; } | 720 | get { return m_inTransit; } |
704 | set { m_inTransit = value; } | 721 | private set { m_inTransit = value; } |
705 | } | 722 | } |
706 | 723 | ||
724 | private float m_speedModifier = 1.0f; | ||
725 | |||
707 | public float SpeedModifier | 726 | public float SpeedModifier |
708 | { | 727 | { |
709 | get { return m_speedModifier; } | 728 | get { return m_speedModifier; } |
710 | set { m_speedModifier = value; } | 729 | set { m_speedModifier = value; } |
711 | } | 730 | } |
712 | 731 | ||
732 | private bool m_forceFly; | ||
733 | |||
713 | public bool ForceFly | 734 | public bool ForceFly |
714 | { | 735 | { |
715 | get { return m_forceFly; } | 736 | get { return m_forceFly; } |
716 | set { m_forceFly = value; } | 737 | set { m_forceFly = value; } |
717 | } | 738 | } |
718 | 739 | ||
740 | private bool m_flyDisabled; | ||
741 | |||
719 | public bool FlyDisabled | 742 | public bool FlyDisabled |
720 | { | 743 | { |
721 | get { return m_flyDisabled; } | 744 | get { return m_flyDisabled; } |
@@ -737,15 +760,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
737 | AttachmentsSyncLock = new Object(); | 760 | AttachmentsSyncLock = new Object(); |
738 | 761 | ||
739 | m_sendCourseLocationsMethod = SendCoarseLocationsDefault; | 762 | m_sendCourseLocationsMethod = SendCoarseLocationsDefault; |
740 | m_sceneViewer = new SceneViewer(this); | 763 | SceneViewer = new SceneViewer(this); |
741 | m_animator = new ScenePresenceAnimator(this); | 764 | Animator = new ScenePresenceAnimator(this); |
742 | PresenceType = type; | 765 | PresenceType = type; |
743 | m_DrawDistance = world.DefaultDrawDistance; | 766 | DrawDistance = world.DefaultDrawDistance; |
744 | m_rootRegionHandle = world.RegionInfo.RegionHandle; | 767 | RegionHandle = world.RegionInfo.RegionHandle; |
745 | m_controllingClient = client; | 768 | ControllingClient = client; |
746 | m_firstname = m_controllingClient.FirstName; | 769 | Firstname = ControllingClient.FirstName; |
747 | m_lastname = m_controllingClient.LastName; | 770 | Lastname = ControllingClient.LastName; |
748 | m_name = String.Format("{0} {1}", m_firstname, m_lastname); | 771 | m_name = String.Format("{0} {1}", Firstname, Lastname); |
749 | m_scene = world; | 772 | m_scene = world; |
750 | m_uuid = client.AgentId; | 773 | m_uuid = client.AgentId; |
751 | m_localId = m_scene.AllocateLocalId(); | 774 | m_localId = m_scene.AllocateLocalId(); |
@@ -753,16 +776,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
753 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid); | 776 | UserAccount account = m_scene.UserAccountService.GetUserAccount(m_scene.RegionInfo.ScopeID, m_uuid); |
754 | 777 | ||
755 | if (account != null) | 778 | if (account != null) |
756 | m_userLevel = account.UserLevel; | 779 | UserLevel = account.UserLevel; |
757 | 780 | ||
758 | IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); | 781 | IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); |
759 | if (gm != null) | 782 | if (gm != null) |
760 | m_grouptitle = gm.GetGroupTitle(m_uuid); | 783 | Grouptitle = gm.GetGroupTitle(m_uuid); |
761 | 784 | ||
762 | m_scriptEngines = m_scene.RequestModuleInterfaces<IScriptModule>(); | 785 | m_scriptEngines = m_scene.RequestModuleInterfaces<IScriptModule>(); |
763 | 786 | ||
764 | AbsolutePosition = posLastSignificantMove = m_CameraCenter = | 787 | AbsolutePosition = posLastSignificantMove = CameraPosition = |
765 | m_lastCameraCenter = m_controllingClient.StartPos; | 788 | m_lastCameraPosition = ControllingClient.StartPos; |
766 | 789 | ||
767 | m_reprioritization_timer = new Timer(world.ReprioritizationInterval); | 790 | m_reprioritization_timer = new Timer(world.ReprioritizationInterval); |
768 | m_reprioritization_timer.Elapsed += new ElapsedEventHandler(Reprioritize); | 791 | m_reprioritization_timer.Elapsed += new ElapsedEventHandler(Reprioritize); |
@@ -785,21 +808,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
785 | RegisterToEvents(); | 808 | RegisterToEvents(); |
786 | SetDirectionVectors(); | 809 | SetDirectionVectors(); |
787 | 810 | ||
788 | m_appearance = appearance; | 811 | Appearance = appearance; |
789 | } | 812 | } |
790 | 813 | ||
791 | public void RegisterToEvents() | 814 | public void RegisterToEvents() |
792 | { | 815 | { |
793 | m_controllingClient.OnCompleteMovementToRegion += CompleteMovement; | 816 | ControllingClient.OnCompleteMovementToRegion += CompleteMovement; |
794 | //m_controllingClient.OnCompleteMovementToRegion += SendInitialData; | 817 | //ControllingClient.OnCompleteMovementToRegion += SendInitialData; |
795 | m_controllingClient.OnAgentUpdate += HandleAgentUpdate; | 818 | ControllingClient.OnAgentUpdate += HandleAgentUpdate; |
796 | m_controllingClient.OnAgentRequestSit += HandleAgentRequestSit; | 819 | ControllingClient.OnAgentRequestSit += HandleAgentRequestSit; |
797 | m_controllingClient.OnAgentSit += HandleAgentSit; | 820 | ControllingClient.OnAgentSit += HandleAgentSit; |
798 | m_controllingClient.OnSetAlwaysRun += HandleSetAlwaysRun; | 821 | ControllingClient.OnSetAlwaysRun += HandleSetAlwaysRun; |
799 | m_controllingClient.OnStartAnim += HandleStartAnim; | 822 | ControllingClient.OnStartAnim += HandleStartAnim; |
800 | m_controllingClient.OnStopAnim += HandleStopAnim; | 823 | ControllingClient.OnStopAnim += HandleStopAnim; |
801 | m_controllingClient.OnForceReleaseControls += HandleForceReleaseControls; | 824 | ControllingClient.OnForceReleaseControls += HandleForceReleaseControls; |
802 | m_controllingClient.OnAutoPilotGo += MoveToTarget; | 825 | ControllingClient.OnAutoPilotGo += MoveToTarget; |
803 | 826 | ||
804 | // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); | 827 | // ControllingClient.OnChildAgentStatus += new StatusChange(this.ChildStatusChange); |
805 | // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); | 828 | // ControllingClient.OnStopMovement += new GenericCall2(this.StopMovement); |
@@ -821,15 +844,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
821 | private Vector3[] GetWalkDirectionVectors() | 844 | private Vector3[] GetWalkDirectionVectors() |
822 | { | 845 | { |
823 | Vector3[] vector = new Vector3[9]; | 846 | Vector3[] vector = new Vector3[9]; |
824 | vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD | 847 | vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -CameraAtAxis.Z); //FORWARD |
825 | vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK | 848 | vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, CameraAtAxis.Z); //BACK |
826 | vector[2] = Vector3.UnitY; //LEFT | 849 | vector[2] = Vector3.UnitY; //LEFT |
827 | vector[3] = -Vector3.UnitY; //RIGHT | 850 | vector[3] = -Vector3.UnitY; //RIGHT |
828 | vector[4] = new Vector3(m_CameraAtAxis.Z, 0f, m_CameraUpAxis.Z); //UP | 851 | vector[4] = new Vector3(CameraAtAxis.Z, 0f, m_CameraUpAxis.Z); //UP |
829 | vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN | 852 | vector[5] = new Vector3(-CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN |
830 | vector[8] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_Nudge | 853 | vector[8] = new Vector3(-CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_Nudge |
831 | vector[6] = (new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z) * 2); //FORWARD Nudge | 854 | vector[6] = (new Vector3(m_CameraUpAxis.Z, 0f, -CameraAtAxis.Z) * 2); //FORWARD Nudge |
832 | vector[7] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK Nudge | 855 | vector[7] = new Vector3(-m_CameraUpAxis.Z, 0f, CameraAtAxis.Z); //BACK Nudge |
833 | return vector; | 856 | return vector; |
834 | } | 857 | } |
835 | 858 | ||
@@ -849,7 +872,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
849 | { | 872 | { |
850 | m_perfMonMS = Util.EnvironmentTickCount(); | 873 | m_perfMonMS = Util.EnvironmentTickCount(); |
851 | 874 | ||
852 | m_sceneViewer.SendPrimUpdates(); | 875 | SceneViewer.SendPrimUpdates(); |
853 | 876 | ||
854 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 877 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); |
855 | } | 878 | } |
@@ -869,21 +892,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
869 | 892 | ||
870 | //m_log.DebugFormat("[SCENE]: known regions in {0}: {1}", Scene.RegionInfo.RegionName, KnownChildRegionHandles.Count); | 893 | //m_log.DebugFormat("[SCENE]: known regions in {0}: {1}", Scene.RegionInfo.RegionName, KnownChildRegionHandles.Count); |
871 | 894 | ||
872 | bool wasChild = m_isChildAgent; | 895 | bool wasChild = IsChildAgent; |
873 | m_isChildAgent = false; | 896 | IsChildAgent = false; |
874 | 897 | ||
875 | IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); | 898 | IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); |
876 | if (gm != null) | 899 | if (gm != null) |
877 | m_grouptitle = gm.GetGroupTitle(m_uuid); | 900 | Grouptitle = gm.GetGroupTitle(m_uuid); |
878 | 901 | ||
879 | m_rootRegionHandle = m_scene.RegionInfo.RegionHandle; | 902 | RegionHandle = m_scene.RegionInfo.RegionHandle; |
880 | 903 | ||
881 | m_scene.EventManager.TriggerSetRootAgentScene(m_uuid, m_scene); | 904 | m_scene.EventManager.TriggerSetRootAgentScene(m_uuid, m_scene); |
882 | 905 | ||
883 | // Moved this from SendInitialData to ensure that m_appearance is initialized | 906 | // Moved this from SendInitialData to ensure that Appearance is initialized |
884 | // before the inventory is processed in MakeRootAgent. This fixes a race condition | 907 | // before the inventory is processed in MakeRootAgent. This fixes a race condition |
885 | // related to the handling of attachments | 908 | // related to the handling of attachments |
886 | //m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); | 909 | //m_scene.GetAvatarAppearance(ControllingClient, out Appearance); |
887 | if (m_scene.TestBorderCross(pos, Cardinals.E)) | 910 | if (m_scene.TestBorderCross(pos, Cardinals.E)) |
888 | { | 911 | { |
889 | Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.E); | 912 | Border crossedBorder = m_scene.GetCrossedBorder(pos, Cardinals.E); |
@@ -908,8 +931,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
908 | } | 931 | } |
909 | 932 | ||
910 | float localAVHeight = 1.56f; | 933 | float localAVHeight = 1.56f; |
911 | if (m_appearance.AvatarHeight > 0) | 934 | if (Appearance.AvatarHeight > 0) |
912 | localAVHeight = m_appearance.AvatarHeight; | 935 | localAVHeight = Appearance.AvatarHeight; |
913 | 936 | ||
914 | float posZLimit = 0; | 937 | float posZLimit = 0; |
915 | 938 | ||
@@ -925,13 +948,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
925 | 948 | ||
926 | AddToPhysicalScene(isFlying); | 949 | AddToPhysicalScene(isFlying); |
927 | 950 | ||
928 | if (m_forceFly) | 951 | if (ForceFly) |
929 | { | 952 | { |
930 | m_physicsActor.Flying = true; | 953 | PhysicsActor.Flying = true; |
931 | } | 954 | } |
932 | else if (m_flyDisabled) | 955 | else if (FlyDisabled) |
933 | { | 956 | { |
934 | m_physicsActor.Flying = false; | 957 | PhysicsActor.Flying = false; |
935 | } | 958 | } |
936 | 959 | ||
937 | // Don't send an animation pack here, since on a region crossing this will sometimes cause a flying | 960 | // Don't send an animation pack here, since on a region crossing this will sometimes cause a flying |
@@ -969,7 +992,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
969 | // If we don't reset the movement flag here, an avatar that crosses to a neighbouring sim and returns will | 992 | // If we don't reset the movement flag here, an avatar that crosses to a neighbouring sim and returns will |
970 | // stall on the border crossing since the existing child agent will still have the last movement | 993 | // stall on the border crossing since the existing child agent will still have the last movement |
971 | // recorded, which stops the input from being processed. | 994 | // recorded, which stops the input from being processed. |
972 | m_movementflag = 0; | 995 | MovementFlag = 0; |
973 | 996 | ||
974 | m_scene.EventManager.TriggerOnMakeRootAgent(this); | 997 | m_scene.EventManager.TriggerOnMakeRootAgent(this); |
975 | } | 998 | } |
@@ -999,12 +1022,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
999 | { | 1022 | { |
1000 | // Reset these so that teleporting in and walking out isn't seen | 1023 | // Reset these so that teleporting in and walking out isn't seen |
1001 | // as teleporting back | 1024 | // as teleporting back |
1002 | m_teleportFlags = TeleportFlags.Default; | 1025 | TeleportFlags = TeleportFlags.Default; |
1003 | 1026 | ||
1004 | // It looks like m_animator is set to null somewhere, and MakeChild | 1027 | // It looks like Animator is set to null somewhere, and MakeChild |
1005 | // is called after that. Probably in aborted teleports. | 1028 | // is called after that. Probably in aborted teleports. |
1006 | if (m_animator == null) | 1029 | if (Animator == null) |
1007 | m_animator = new ScenePresenceAnimator(this); | 1030 | Animator = new ScenePresenceAnimator(this); |
1008 | else | 1031 | else |
1009 | Animator.ResetAnimations(); | 1032 | Animator.ResetAnimations(); |
1010 | 1033 | ||
@@ -1016,11 +1039,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1016 | // depending on the exact timing. This shouldn't matter anyway since child agent positions are not updated. | 1039 | // depending on the exact timing. This shouldn't matter anyway since child agent positions are not updated. |
1017 | //Velocity = new Vector3(0, 0, 0); | 1040 | //Velocity = new Vector3(0, 0, 0); |
1018 | 1041 | ||
1019 | m_isChildAgent = true; | 1042 | IsChildAgent = true; |
1020 | m_scene.SwapRootAgentCount(true); | 1043 | m_scene.SwapRootAgentCount(true); |
1021 | RemoveFromPhysicalScene(); | 1044 | RemoveFromPhysicalScene(); |
1022 | 1045 | ||
1023 | // FIXME: Set m_rootRegionHandle to the region handle of the scene this agent is moving into | 1046 | // FIXME: Set RegionHandle to the region handle of the scene this agent is moving into |
1024 | 1047 | ||
1025 | m_scene.EventManager.TriggerOnMakeChildAgent(this); | 1048 | m_scene.EventManager.TriggerOnMakeChildAgent(this); |
1026 | } | 1049 | } |
@@ -1032,11 +1055,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1032 | { | 1055 | { |
1033 | if (PhysicsActor != null) | 1056 | if (PhysicsActor != null) |
1034 | { | 1057 | { |
1035 | m_physicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; | 1058 | PhysicsActor.OnRequestTerseUpdate -= SendTerseUpdateToAllClients; |
1036 | m_physicsActor.OnOutOfBounds -= OutOfBoundsCall; | 1059 | PhysicsActor.OnOutOfBounds -= OutOfBoundsCall; |
1037 | m_scene.PhysicsScene.RemoveAvatar(PhysicsActor); | 1060 | m_scene.PhysicsScene.RemoveAvatar(PhysicsActor); |
1038 | m_physicsActor.UnSubscribeEvents(); | 1061 | PhysicsActor.UnSubscribeEvents(); |
1039 | m_physicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate; | 1062 | PhysicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate; |
1040 | PhysicsActor = null; | 1063 | PhysicsActor = null; |
1041 | } | 1064 | } |
1042 | } | 1065 | } |
@@ -1048,8 +1071,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1048 | public void Teleport(Vector3 pos) | 1071 | public void Teleport(Vector3 pos) |
1049 | { | 1072 | { |
1050 | bool isFlying = false; | 1073 | bool isFlying = false; |
1051 | if (m_physicsActor != null) | 1074 | if (PhysicsActor != null) |
1052 | isFlying = m_physicsActor.Flying; | 1075 | isFlying = PhysicsActor.Flying; |
1053 | 1076 | ||
1054 | RemoveFromPhysicalScene(); | 1077 | RemoveFromPhysicalScene(); |
1055 | Velocity = Vector3.Zero; | 1078 | Velocity = Vector3.Zero; |
@@ -1062,8 +1085,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
1062 | public void TeleportWithMomentum(Vector3 pos) | 1085 | public void TeleportWithMomentum(Vector3 pos) |
1063 | { | 1086 | { |
1064 | bool isFlying = false; | 1087 | bool isFlying = false; |
1065 | if (m_physicsActor != null) | 1088 | if (PhysicsActor != null) |
1066 | isFlying = m_physicsActor.Flying; | 1089 | isFlying = PhysicsActor.Flying; |
1067 | 1090 | ||
1068 | RemoveFromPhysicalScene(); | 1091 | RemoveFromPhysicalScene(); |
1069 | AbsolutePosition = pos; | 1092 | AbsolutePosition = pos; |
@@ -1178,11 +1201,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1178 | 1201 | ||
1179 | //m_log.DebugFormat("[SCENE PRESENCE] Completed movement"); | 1202 | //m_log.DebugFormat("[SCENE PRESENCE] Completed movement"); |
1180 | 1203 | ||
1181 | m_controllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); | 1204 | ControllingClient.MoveAgentIntoRegion(m_scene.RegionInfo, AbsolutePosition, look); |
1182 | SendInitialData(); | 1205 | SendInitialData(); |
1183 | 1206 | ||
1184 | // Create child agents in neighbouring regions | 1207 | // Create child agents in neighbouring regions |
1185 | if (openChildAgents && !m_isChildAgent) | 1208 | if (openChildAgents && !IsChildAgent) |
1186 | { | 1209 | { |
1187 | IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>(); | 1210 | IEntityTransferModule m_agentTransfer = m_scene.RequestModuleInterface<IEntityTransferModule>(); |
1188 | if (m_agentTransfer != null) | 1211 | if (m_agentTransfer != null) |
@@ -1226,7 +1249,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1226 | { | 1249 | { |
1227 | if (!m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || | 1250 | if (!m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE) || |
1228 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || | 1251 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || |
1229 | !m_bodyRot.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE)) | 1252 | !Rotation.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE)) |
1230 | { | 1253 | { |
1231 | if (CameraConstraintActive) | 1254 | if (CameraConstraintActive) |
1232 | { | 1255 | { |
@@ -1247,7 +1270,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1247 | // "[SCENE PRESENCE]: In {0} received agent update from {1}", | 1270 | // "[SCENE PRESENCE]: In {0} received agent update from {1}", |
1248 | // Scene.RegionInfo.RegionName, remoteClient.Name); | 1271 | // Scene.RegionInfo.RegionName, remoteClient.Name); |
1249 | 1272 | ||
1250 | //if (m_isChildAgent) | 1273 | //if (IsChildAgent) |
1251 | //{ | 1274 | //{ |
1252 | // // m_log.Debug("DEBUG: HandleAgentUpdate: child agent"); | 1275 | // // m_log.Debug("DEBUG: HandleAgentUpdate: child agent"); |
1253 | // return; | 1276 | // return; |
@@ -1291,28 +1314,28 @@ namespace OpenSim.Region.Framework.Scenes | |||
1291 | 1314 | ||
1292 | // Camera location in world. We'll need to raytrace | 1315 | // Camera location in world. We'll need to raytrace |
1293 | // from this location from time to time. | 1316 | // from this location from time to time. |
1294 | m_CameraCenter = agentData.CameraCenter; | 1317 | CameraPosition = agentData.CameraCenter; |
1295 | if (Vector3.Distance(m_lastCameraCenter, m_CameraCenter) >= Scene.RootReprioritizationDistance) | 1318 | if (Vector3.Distance(m_lastCameraPosition, CameraPosition) >= Scene.RootReprioritizationDistance) |
1296 | { | 1319 | { |
1297 | ReprioritizeUpdates(); | 1320 | ReprioritizeUpdates(); |
1298 | m_lastCameraCenter = m_CameraCenter; | 1321 | m_lastCameraPosition = CameraPosition; |
1299 | } | 1322 | } |
1300 | 1323 | ||
1301 | // Use these three vectors to figure out what the agent is looking at | 1324 | // Use these three vectors to figure out what the agent is looking at |
1302 | // Convert it to a Matrix and/or Quaternion | 1325 | // Convert it to a Matrix and/or Quaternion |
1303 | m_CameraAtAxis = agentData.CameraAtAxis; | 1326 | CameraAtAxis = agentData.CameraAtAxis; |
1304 | m_CameraLeftAxis = agentData.CameraLeftAxis; | 1327 | CameraLeftAxis = agentData.CameraLeftAxis; |
1305 | m_CameraUpAxis = agentData.CameraUpAxis; | 1328 | m_CameraUpAxis = agentData.CameraUpAxis; |
1306 | 1329 | ||
1307 | // The Agent's Draw distance setting | 1330 | // The Agent's Draw distance setting |
1308 | // When we get to the point of re-computing neighbors everytime this | 1331 | // When we get to the point of re-computing neighbors everytime this |
1309 | // changes, then start using the agent's drawdistance rather than the | 1332 | // changes, then start using the agent's drawdistance rather than the |
1310 | // region's draw distance. | 1333 | // region's draw distance. |
1311 | // m_DrawDistance = agentData.Far; | 1334 | // DrawDistance = agentData.Far; |
1312 | m_DrawDistance = Scene.DefaultDrawDistance; | 1335 | DrawDistance = Scene.DefaultDrawDistance; |
1313 | 1336 | ||
1314 | // Check if Client has camera in 'follow cam' or 'build' mode. | 1337 | // Check if Client has camera in 'follow cam' or 'build' mode. |
1315 | Vector3 camdif = (Vector3.One * m_bodyRot - Vector3.One * CameraRotation); | 1338 | Vector3 camdif = (Vector3.One * Rotation - Vector3.One * CameraRotation); |
1316 | 1339 | ||
1317 | m_followCamAuto = ((m_CameraUpAxis.Z > 0.959f && m_CameraUpAxis.Z < 0.98f) | 1340 | m_followCamAuto = ((m_CameraUpAxis.Z > 0.959f && m_CameraUpAxis.Z < 0.98f) |
1318 | && (Math.Abs(camdif.X) < 0.4f && Math.Abs(camdif.Y) < 0.4f)) ? true : false; | 1341 | && (Math.Abs(camdif.X) < 0.4f && Math.Abs(camdif.Y) < 0.4f)) ? true : false; |
@@ -1334,7 +1357,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1334 | if (m_followCamAuto) | 1357 | if (m_followCamAuto) |
1335 | { | 1358 | { |
1336 | Vector3 posAdjusted = m_pos + HEAD_ADJUSTMENT; | 1359 | Vector3 posAdjusted = m_pos + HEAD_ADJUSTMENT; |
1337 | m_scene.PhysicsScene.RaycastWorld(m_pos, Vector3.Normalize(m_CameraCenter - posAdjusted), Vector3.Distance(m_CameraCenter, posAdjusted) + 0.3f, RayCastCameraCallback); | 1360 | m_scene.PhysicsScene.RaycastWorld(m_pos, Vector3.Normalize(CameraPosition - posAdjusted), Vector3.Distance(CameraPosition, posAdjusted) + 0.3f, RayCastCameraCallback); |
1338 | } | 1361 | } |
1339 | } | 1362 | } |
1340 | 1363 | ||
@@ -1363,7 +1386,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1363 | // Here's where you get them. | 1386 | // Here's where you get them. |
1364 | m_AgentControlFlags = flags; | 1387 | m_AgentControlFlags = flags; |
1365 | m_headrotation = agentData.HeadRotation; | 1388 | m_headrotation = agentData.HeadRotation; |
1366 | m_state = agentData.State; | 1389 | State = agentData.State; |
1367 | 1390 | ||
1368 | PhysicsActor actor = PhysicsActor; | 1391 | PhysicsActor actor = PhysicsActor; |
1369 | if (actor == null) | 1392 | if (actor == null) |
@@ -1371,12 +1394,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1371 | return; | 1394 | return; |
1372 | } | 1395 | } |
1373 | 1396 | ||
1374 | if (m_allowMovement && !SitGround) | 1397 | if (AllowMovement && !SitGround) |
1375 | { | 1398 | { |
1376 | Quaternion bodyRotation = agentData.BodyRotation; | 1399 | Quaternion bodyRotation = agentData.BodyRotation; |
1377 | bool update_rotation = false; | 1400 | bool update_rotation = false; |
1378 | 1401 | ||
1379 | if (bodyRotation != m_bodyRot) | 1402 | if (bodyRotation != Rotation) |
1380 | { | 1403 | { |
1381 | Rotation = bodyRotation; | 1404 | Rotation = bodyRotation; |
1382 | update_rotation = true; | 1405 | update_rotation = true; |
@@ -1396,9 +1419,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
1396 | 1419 | ||
1397 | bool oldflying = PhysicsActor.Flying; | 1420 | bool oldflying = PhysicsActor.Flying; |
1398 | 1421 | ||
1399 | if (m_forceFly) | 1422 | if (ForceFly) |
1400 | actor.Flying = true; | 1423 | actor.Flying = true; |
1401 | else if (m_flyDisabled) | 1424 | else if (FlyDisabled) |
1402 | actor.Flying = false; | 1425 | actor.Flying = false; |
1403 | else | 1426 | else |
1404 | actor.Flying = ((flags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); | 1427 | actor.Flying = ((flags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0); |
@@ -1406,7 +1429,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1406 | if (actor.Flying != oldflying) | 1429 | if (actor.Flying != oldflying) |
1407 | update_movementflag = true; | 1430 | update_movementflag = true; |
1408 | 1431 | ||
1409 | if (m_parentID == 0) | 1432 | if (ParentID == 0) |
1410 | { | 1433 | { |
1411 | bool bAllowUpdateMoveToPosition = false; | 1434 | bool bAllowUpdateMoveToPosition = false; |
1412 | 1435 | ||
@@ -1414,12 +1437,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
1414 | 1437 | ||
1415 | // use camera up angle when in mouselook and not flying or when holding the left mouse button down and not flying | 1438 | // use camera up angle when in mouselook and not flying or when holding the left mouse button down and not flying |
1416 | // this prevents 'jumping' in inappropriate situations. | 1439 | // this prevents 'jumping' in inappropriate situations. |
1417 | if ((m_mouseLook && !m_physicsActor.Flying) || (m_leftButtonDown && !m_physicsActor.Flying)) | 1440 | if ((m_mouseLook && !PhysicsActor.Flying) || (m_leftButtonDown && !PhysicsActor.Flying)) |
1418 | dirVectors = GetWalkDirectionVectors(); | 1441 | dirVectors = GetWalkDirectionVectors(); |
1419 | else | 1442 | else |
1420 | dirVectors = Dir_Vectors; | 1443 | dirVectors = Dir_Vectors; |
1421 | 1444 | ||
1422 | // The fact that m_movementflag is a byte needs to be fixed | 1445 | // The fact that MovementFlag is a byte needs to be fixed |
1423 | // it really should be a uint | 1446 | // it really should be a uint |
1424 | // A DIR_CONTROL_FLAG occurs when the user is trying to move in a particular direction. | 1447 | // A DIR_CONTROL_FLAG occurs when the user is trying to move in a particular direction. |
1425 | uint nudgehack = 250; | 1448 | uint nudgehack = 250; |
@@ -1439,32 +1462,32 @@ namespace OpenSim.Region.Framework.Scenes | |||
1439 | // Why did I get this? | 1462 | // Why did I get this? |
1440 | } | 1463 | } |
1441 | 1464 | ||
1442 | if ((m_movementflag & (byte)(uint)DCF) == 0) | 1465 | if ((MovementFlag & (byte)(uint)DCF) == 0) |
1443 | { | 1466 | { |
1444 | if (DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE) | 1467 | if (DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE) |
1445 | { | 1468 | { |
1446 | m_movementflag |= (byte)nudgehack; | 1469 | MovementFlag |= (byte)nudgehack; |
1447 | } | 1470 | } |
1448 | 1471 | ||
1449 | // m_log.DebugFormat("[SCENE PRESENCE]: Updating m_movementflag for {0} with {1}", Name, DCF); | 1472 | // m_log.DebugFormat("[SCENE PRESENCE]: Updating MovementFlag for {0} with {1}", Name, DCF); |
1450 | m_movementflag += (byte)(uint)DCF; | 1473 | MovementFlag += (byte)(uint)DCF; |
1451 | update_movementflag = true; | 1474 | update_movementflag = true; |
1452 | } | 1475 | } |
1453 | } | 1476 | } |
1454 | else | 1477 | else |
1455 | { | 1478 | { |
1456 | if ((m_movementflag & (byte)(uint)DCF) != 0 || | 1479 | if ((MovementFlag & (byte)(uint)DCF) != 0 || |
1457 | ((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE) | 1480 | ((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE) |
1458 | && ((m_movementflag & (byte)nudgehack) == nudgehack)) | 1481 | && ((MovementFlag & (byte)nudgehack) == nudgehack)) |
1459 | ) // This or is for Nudge forward | 1482 | ) // This or is for Nudge forward |
1460 | { | 1483 | { |
1461 | // m_log.DebugFormat("[SCENE PRESENCE]: Updating m_movementflag for {0} with lack of {1}", Name, DCF); | 1484 | // m_log.DebugFormat("[SCENE PRESENCE]: Updating MovementFlag for {0} with lack of {1}", Name, DCF); |
1462 | m_movementflag -= ((byte)(uint)DCF); | 1485 | MovementFlag -= ((byte)(uint)DCF); |
1463 | update_movementflag = true; | 1486 | update_movementflag = true; |
1464 | 1487 | ||
1465 | /* | 1488 | /* |
1466 | if ((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE) | 1489 | if ((DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD_NUDGE || DCF == Dir_ControlFlags.DIR_CONTROL_FLAG_BACKWARD_NUDGE) |
1467 | && ((m_movementflag & (byte)nudgehack) == nudgehack)) | 1490 | && ((MovementFlag & (byte)nudgehack) == nudgehack)) |
1468 | { | 1491 | { |
1469 | m_log.Debug("Removed Hack flag"); | 1492 | m_log.Debug("Removed Hack flag"); |
1470 | } | 1493 | } |
@@ -1499,7 +1522,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1499 | // with something with the down arrow pressed. | 1522 | // with something with the down arrow pressed. |
1500 | 1523 | ||
1501 | // Only do this if we're flying | 1524 | // Only do this if we're flying |
1502 | if (m_physicsActor != null && m_physicsActor.Flying && !m_forceFly) | 1525 | if (PhysicsActor != null && PhysicsActor.Flying && !ForceFly) |
1503 | { | 1526 | { |
1504 | // Landing detection code | 1527 | // Landing detection code |
1505 | 1528 | ||
@@ -1507,10 +1530,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1507 | bool controlland = (((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || | 1530 | bool controlland = (((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || |
1508 | ((flags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); | 1531 | ((flags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); |
1509 | 1532 | ||
1510 | // Are the collision requirements fulfilled? | 1533 | if (PhysicsActor.Flying && PhysicsActor.IsColliding && controlland) |
1511 | bool colliding = (m_physicsActor.IsColliding == true); | ||
1512 | |||
1513 | if (m_physicsActor.Flying && colliding && controlland) | ||
1514 | { | 1534 | { |
1515 | // nesting this check because LengthSquared() is expensive and we don't | 1535 | // nesting this check because LengthSquared() is expensive and we don't |
1516 | // want to do it every step when flying. | 1536 | // want to do it every step when flying. |
@@ -1539,7 +1559,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1539 | // } | 1559 | // } |
1540 | // } | 1560 | // } |
1541 | 1561 | ||
1542 | if (update_movementflag && m_parentID == 0) | 1562 | if (update_movementflag && ParentID == 0) |
1543 | Animator.UpdateMovementAnimations(); | 1563 | Animator.UpdateMovementAnimations(); |
1544 | } | 1564 | } |
1545 | 1565 | ||
@@ -1620,26 +1640,26 @@ namespace OpenSim.Region.Framework.Scenes | |||
1620 | // one of left/right/back/forward. | 1640 | // one of left/right/back/forward. |
1621 | if (LocalVectorToTarget3D.X < 0) //MoveBack | 1641 | if (LocalVectorToTarget3D.X < 0) //MoveBack |
1622 | { | 1642 | { |
1623 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; | 1643 | MovementFlag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; |
1624 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; | 1644 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_BACK; |
1625 | updated = true; | 1645 | updated = true; |
1626 | } | 1646 | } |
1627 | else if (LocalVectorToTarget3D.X > 0) //Move Forward | 1647 | else if (LocalVectorToTarget3D.X > 0) //Move Forward |
1628 | { | 1648 | { |
1629 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; | 1649 | MovementFlag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; |
1630 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; | 1650 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_FORWARD; |
1631 | updated = true; | 1651 | updated = true; |
1632 | } | 1652 | } |
1633 | 1653 | ||
1634 | if (LocalVectorToTarget3D.Y > 0) //MoveLeft | 1654 | if (LocalVectorToTarget3D.Y > 0) //MoveLeft |
1635 | { | 1655 | { |
1636 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; | 1656 | MovementFlag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; |
1637 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; | 1657 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_LEFT; |
1638 | updated = true; | 1658 | updated = true; |
1639 | } | 1659 | } |
1640 | else if (LocalVectorToTarget3D.Y < 0) //MoveRight | 1660 | else if (LocalVectorToTarget3D.Y < 0) //MoveRight |
1641 | { | 1661 | { |
1642 | m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; | 1662 | MovementFlag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; |
1643 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; | 1663 | AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_RIGHT; |
1644 | updated = true; | 1664 | updated = true; |
1645 | } | 1665 | } |
@@ -1648,14 +1668,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
1648 | { | 1668 | { |
1649 | // Don't set these flags for up or down - doing so will make the avatar crouch or | 1669 | // Don't set these flags for up or down - doing so will make the avatar crouch or |
1650 | // keep trying to jump even if walking along level ground | 1670 | // keep trying to jump even if walking along level ground |
1651 | //m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_UP; | 1671 | //MovementFlag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_UP; |
1652 | //AgentControlFlags | 1672 | //AgentControlFlags |
1653 | //AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_UP; | 1673 | //AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_UP; |
1654 | updated = true; | 1674 | updated = true; |
1655 | } | 1675 | } |
1656 | else if (LocalVectorToTarget3D.Z < 0) //Down | 1676 | else if (LocalVectorToTarget3D.Z < 0) //Down |
1657 | { | 1677 | { |
1658 | //m_movementflag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN; | 1678 | //MovementFlag += (byte)(uint)Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN; |
1659 | //AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN; | 1679 | //AgentControlFlags |= (uint)Dir_ControlFlags.DIR_CONTROL_FLAG_DOWN; |
1660 | updated = true; | 1680 | updated = true; |
1661 | } | 1681 | } |
@@ -1818,10 +1838,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
1818 | { | 1838 | { |
1819 | SitGround = false; | 1839 | SitGround = false; |
1820 | 1840 | ||
1821 | if (m_parentID != 0) | 1841 | if (ParentID != 0) |
1822 | { | 1842 | { |
1823 | m_log.Debug("StandupCode Executed"); | 1843 | m_log.Debug("StandupCode Executed"); |
1824 | SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID); | 1844 | SceneObjectPart part = m_scene.GetSceneObjectPart(ParentID); |
1825 | if (part != null) | 1845 | if (part != null) |
1826 | { | 1846 | { |
1827 | TaskInventoryDictionary taskIDict = part.TaskInventory; | 1847 | TaskInventoryDictionary taskIDict = part.TaskInventory; |
@@ -1844,19 +1864,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
1844 | part.SitTargetAvatar = UUID.Zero; | 1864 | part.SitTargetAvatar = UUID.Zero; |
1845 | part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); | 1865 | part.ParentGroup.TriggerScriptChangedEvent(Changed.LINK); |
1846 | 1866 | ||
1847 | m_parentPosition = part.GetWorldPosition(); | 1867 | ParentPosition = part.GetWorldPosition(); |
1848 | ControllingClient.SendClearFollowCamProperties(part.ParentUUID); | 1868 | ControllingClient.SendClearFollowCamProperties(part.ParentUUID); |
1849 | } | 1869 | } |
1850 | 1870 | ||
1851 | if (m_physicsActor == null) | 1871 | if (PhysicsActor == null) |
1852 | { | 1872 | { |
1853 | AddToPhysicalScene(false); | 1873 | AddToPhysicalScene(false); |
1854 | } | 1874 | } |
1855 | 1875 | ||
1856 | m_pos += m_parentPosition + new Vector3(0.0f, 0.0f, 2.0f*m_sitAvatarHeight); | 1876 | m_pos += ParentPosition + new Vector3(0.0f, 0.0f, 2.0f*m_sitAvatarHeight); |
1857 | m_parentPosition = Vector3.Zero; | 1877 | ParentPosition = Vector3.Zero; |
1858 | 1878 | ||
1859 | m_parentID = 0; | 1879 | ParentID = 0; |
1860 | SendAvatarDataToAllAgents(); | 1880 | SendAvatarDataToAllAgents(); |
1861 | m_requestedSitTargetID = 0; | 1881 | m_requestedSitTargetID = 0; |
1862 | } | 1882 | } |
@@ -1954,11 +1974,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
1954 | // offset = pos; | 1974 | // offset = pos; |
1955 | //autopilot = false; | 1975 | //autopilot = false; |
1956 | //} | 1976 | //} |
1957 | if (m_physicsActor != null) | 1977 | if (PhysicsActor != null) |
1958 | { | 1978 | { |
1959 | // If we're not using the client autopilot, we're immediately warping the avatar to the location | 1979 | // If we're not using the client autopilot, we're immediately warping the avatar to the location |
1960 | // We can remove the physicsActor until they stand up. | 1980 | // We can remove the physicsActor until they stand up. |
1961 | m_sitAvatarHeight = m_physicsActor.Size.Z; | 1981 | m_sitAvatarHeight = PhysicsActor.Size.Z; |
1962 | 1982 | ||
1963 | if (autopilot) | 1983 | if (autopilot) |
1964 | { | 1984 | { |
@@ -1997,7 +2017,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1997 | // public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset, string sitAnimation) | 2017 | // public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset, string sitAnimation) |
1998 | public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset) | 2018 | public void HandleAgentRequestSit(IClientAPI remoteClient, UUID agentID, UUID targetID, Vector3 offset) |
1999 | { | 2019 | { |
2000 | if (m_parentID != 0) | 2020 | if (ParentID != 0) |
2001 | { | 2021 | { |
2002 | StandUp(); | 2022 | StandUp(); |
2003 | } | 2023 | } |
@@ -2266,16 +2286,16 @@ namespace OpenSim.Region.Framework.Scenes | |||
2266 | 2286 | ||
2267 | m_pos = new Vector3(sitTargetPos.X, sitTargetPos.Y, sitTargetPos.Z); | 2287 | m_pos = new Vector3(sitTargetPos.X, sitTargetPos.Y, sitTargetPos.Z); |
2268 | m_pos += SIT_TARGET_ADJUSTMENT; | 2288 | m_pos += SIT_TARGET_ADJUSTMENT; |
2269 | m_bodyRot = sitTargetOrient; | 2289 | Rotation = sitTargetOrient; |
2270 | //Rotation = sitTargetOrient; | 2290 | //Rotation = sitTargetOrient; |
2271 | m_parentPosition = part.AbsolutePosition; | 2291 | ParentPosition = part.AbsolutePosition; |
2272 | 2292 | ||
2273 | //SendTerseUpdateToAllClients(); | 2293 | //SendTerseUpdateToAllClients(); |
2274 | } | 2294 | } |
2275 | else | 2295 | else |
2276 | { | 2296 | { |
2277 | m_pos -= part.AbsolutePosition; | 2297 | m_pos -= part.AbsolutePosition; |
2278 | m_parentPosition = part.AbsolutePosition; | 2298 | ParentPosition = part.AbsolutePosition; |
2279 | } | 2299 | } |
2280 | } | 2300 | } |
2281 | else | 2301 | else |
@@ -2283,7 +2303,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2283 | return; | 2303 | return; |
2284 | } | 2304 | } |
2285 | } | 2305 | } |
2286 | m_parentID = m_requestedSitTargetID; | 2306 | ParentID = m_requestedSitTargetID; |
2287 | 2307 | ||
2288 | Velocity = Vector3.Zero; | 2308 | Velocity = Vector3.Zero; |
2289 | RemoveFromPhysicalScene(); | 2309 | RemoveFromPhysicalScene(); |
@@ -2302,11 +2322,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2302 | /// </summary> | 2322 | /// </summary> |
2303 | public void HandleSetAlwaysRun(IClientAPI remoteClient, bool pSetAlwaysRun) | 2323 | public void HandleSetAlwaysRun(IClientAPI remoteClient, bool pSetAlwaysRun) |
2304 | { | 2324 | { |
2305 | m_setAlwaysRun = pSetAlwaysRun; | 2325 | SetAlwaysRun = pSetAlwaysRun; |
2306 | if (PhysicsActor != null) | ||
2307 | { | ||
2308 | PhysicsActor.SetAlwaysRun = pSetAlwaysRun; | ||
2309 | } | ||
2310 | } | 2326 | } |
2311 | 2327 | ||
2312 | public void HandleStartAnim(IClientAPI remoteClient, UUID animID) | 2328 | public void HandleStartAnim(IClientAPI remoteClient, UUID animID) |
@@ -2330,27 +2346,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
2330 | Vector3 direc = vec * Rotation; | 2346 | Vector3 direc = vec * Rotation; |
2331 | direc.Normalize(); | 2347 | direc.Normalize(); |
2332 | 2348 | ||
2333 | direc *= 0.03f * 128f * m_speedModifier; | 2349 | direc *= 0.03f * 128f * SpeedModifier; |
2334 | 2350 | ||
2335 | PhysicsActor actor = m_physicsActor; | 2351 | if (PhysicsActor != null) |
2336 | if (actor != null) | ||
2337 | { | 2352 | { |
2338 | if (actor.Flying) | 2353 | if (PhysicsActor.Flying) |
2339 | { | 2354 | { |
2340 | direc *= 4.0f; | 2355 | direc *= 4.0f; |
2341 | //bool controlland = (((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || ((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); | 2356 | //bool controlland = (((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) || ((m_AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0)); |
2342 | //bool colliding = (m_physicsActor.IsColliding==true); | ||
2343 | //if (controlland) | 2357 | //if (controlland) |
2344 | // m_log.Info("[AGENT]: landCommand"); | 2358 | // m_log.Info("[AGENT]: landCommand"); |
2345 | //if (colliding) | 2359 | //if (PhysicsActor.IsColliding) |
2346 | // m_log.Info("[AGENT]: colliding"); | 2360 | // m_log.Info("[AGENT]: colliding"); |
2347 | //if (m_physicsActor.Flying && colliding && controlland) | 2361 | //if (PhysicsActor.Flying && PhysicsActor.IsColliding && controlland) |
2348 | //{ | 2362 | //{ |
2349 | // StopFlying(); | 2363 | // StopFlying(); |
2350 | // m_log.Info("[AGENT]: Stop FLying"); | 2364 | // m_log.Info("[AGENT]: Stop Flying"); |
2351 | //} | 2365 | //} |
2352 | } | 2366 | } |
2353 | else if (!actor.Flying && actor.IsColliding) | 2367 | else if (!PhysicsActor.Flying && PhysicsActor.IsColliding) |
2354 | { | 2368 | { |
2355 | if (direc.Z > 2.0f) | 2369 | if (direc.Z > 2.0f) |
2356 | { | 2370 | { |
@@ -2385,16 +2399,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
2385 | if (!sendingPrims) | 2399 | if (!sendingPrims) |
2386 | Util.FireAndForget(delegate { sendingPrims = true; SendPrimUpdates(); sendingPrims = false; }); | 2400 | Util.FireAndForget(delegate { sendingPrims = true; SendPrimUpdates(); sendingPrims = false; }); |
2387 | 2401 | ||
2388 | if (m_isChildAgent == false) | 2402 | if (IsChildAgent == false) |
2389 | { | 2403 | { |
2390 | // PhysicsActor actor = m_physicsActor; | ||
2391 | |||
2392 | // NOTE: Velocity is not the same as m_velocity. Velocity will attempt to | 2404 | // NOTE: Velocity is not the same as m_velocity. Velocity will attempt to |
2393 | // grab the latest PhysicsActor velocity, whereas m_velocity is often | 2405 | // grab the latest PhysicsActor velocity, whereas m_velocity is often |
2394 | // storing a requested force instead of an actual traveling velocity | 2406 | // storing a requested force instead of an actual traveling velocity |
2395 | 2407 | ||
2396 | // Throw away duplicate or insignificant updates | 2408 | // Throw away duplicate or insignificant updates |
2397 | if (!m_bodyRot.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || | 2409 | if (!Rotation.ApproxEquals(m_lastRotation, ROTATION_TOLERANCE) || |
2398 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || | 2410 | !Velocity.ApproxEquals(m_lastVelocity, VELOCITY_TOLERANCE) || |
2399 | !m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE)) | 2411 | !m_pos.ApproxEquals(m_lastPosition, POSITION_TOLERANCE)) |
2400 | //Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) | 2412 | //Environment.TickCount - m_lastTerseSent > TIME_MS_TOLERANCE) |
@@ -2403,13 +2415,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
2403 | 2415 | ||
2404 | // Update the "last" values | 2416 | // Update the "last" values |
2405 | m_lastPosition = m_pos; | 2417 | m_lastPosition = m_pos; |
2406 | m_lastRotation = m_bodyRot; | 2418 | m_lastRotation = Rotation; |
2407 | m_lastVelocity = Velocity; | 2419 | m_lastVelocity = Velocity; |
2408 | //m_lastTerseSent = Environment.TickCount; | 2420 | //m_lastTerseSent = Environment.TickCount; |
2409 | } | 2421 | } |
2410 | 2422 | ||
2411 | // followed suggestion from mic bowman. reversed the two lines below. | 2423 | // followed suggestion from mic bowman. reversed the two lines below. |
2412 | if (m_parentID == 0 && m_physicsActor != null || m_parentID != 0) // Check that we have a physics actor or we're sitting on something | 2424 | if (ParentID == 0 && PhysicsActor != null || ParentID != 0) // Check that we have a physics actor or we're sitting on something |
2413 | CheckForBorderCrossing(); | 2425 | CheckForBorderCrossing(); |
2414 | 2426 | ||
2415 | CheckForSignificantMovement(); // sends update to the modules. | 2427 | CheckForSignificantMovement(); // sends update to the modules. |
@@ -2434,9 +2446,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2434 | m_perfMonMS = Util.EnvironmentTickCount(); | 2446 | m_perfMonMS = Util.EnvironmentTickCount(); |
2435 | 2447 | ||
2436 | Vector3 pos = m_pos; | 2448 | Vector3 pos = m_pos; |
2437 | pos.Z += m_appearance.HipOffset; | 2449 | pos.Z += Appearance.HipOffset; |
2438 | 2450 | ||
2439 | //m_log.DebugFormat("[SCENE PRESENCE]: " + Name + " sending TerseUpdate to " + remoteClient.Name + " : Pos={0} Rot={1} Vel={2}", m_pos, m_bodyRot, m_velocity); | 2451 | //m_log.DebugFormat("[SCENE PRESENCE]: " + Name + " sending TerseUpdate to " + remoteClient.Name + " : Pos={0} Rot={1} Vel={2}", m_pos, Rotation, m_velocity); |
2440 | 2452 | ||
2441 | remoteClient.SendPrimUpdate( | 2453 | remoteClient.SendPrimUpdate( |
2442 | this, | 2454 | this, |
@@ -2513,7 +2525,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2513 | public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p, List<Vector3> coarseLocations, List<UUID> avatarUUIDs) | 2525 | public void SendCoarseLocationsDefault(UUID sceneId, ScenePresence p, List<Vector3> coarseLocations, List<UUID> avatarUUIDs) |
2514 | { | 2526 | { |
2515 | m_perfMonMS = Util.EnvironmentTickCount(); | 2527 | m_perfMonMS = Util.EnvironmentTickCount(); |
2516 | m_controllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations); | 2528 | ControllingClient.SendCoarseLocationUpdate(avatarUUIDs, coarseLocations); |
2517 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); | 2529 | m_scene.StatsReporter.AddAgentTime(Util.EnvironmentTickCountSubtract(m_perfMonMS)); |
2518 | } | 2530 | } |
2519 | 2531 | ||
@@ -2524,21 +2536,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
2524 | private void SendInitialData() | 2536 | private void SendInitialData() |
2525 | { | 2537 | { |
2526 | //m_log.DebugFormat("[SCENE PRESENCE] SendInitialData: {0} ({1})", Name, UUID); | 2538 | //m_log.DebugFormat("[SCENE PRESENCE] SendInitialData: {0} ({1})", Name, UUID); |
2527 | // Moved this into CompleteMovement to ensure that m_appearance is initialized before | 2539 | // Moved this into CompleteMovement to ensure that Appearance is initialized before |
2528 | // the inventory arrives | 2540 | // the inventory arrives |
2529 | // m_scene.GetAvatarAppearance(m_controllingClient, out m_appearance); | 2541 | // m_scene.GetAvatarAppearance(ControllingClient, out Appearance); |
2530 | 2542 | ||
2531 | bool cachedappearance = false; | 2543 | bool cachedappearance = false; |
2532 | 2544 | ||
2533 | // We have an appearance but we may not have the baked textures. Check the asset cache | 2545 | // We have an appearance but we may not have the baked textures. Check the asset cache |
2534 | // to see if all the baked textures are already here. | 2546 | // to see if all the baked textures are already here. |
2535 | if (m_scene.AvatarFactory != null) | 2547 | if (m_scene.AvatarFactory != null) |
2536 | cachedappearance = m_scene.AvatarFactory.ValidateBakedTextureCache(m_controllingClient); | 2548 | cachedappearance = m_scene.AvatarFactory.ValidateBakedTextureCache(ControllingClient); |
2537 | 2549 | ||
2538 | // If we aren't using a cached appearance, then clear out the baked textures | 2550 | // If we aren't using a cached appearance, then clear out the baked textures |
2539 | if (!cachedappearance) | 2551 | if (!cachedappearance) |
2540 | { | 2552 | { |
2541 | m_appearance.ResetAppearance(); | 2553 | Appearance.ResetAppearance(); |
2542 | if (m_scene.AvatarFactory != null) | 2554 | if (m_scene.AvatarFactory != null) |
2543 | m_scene.AvatarFactory.QueueAppearanceSave(UUID); | 2555 | m_scene.AvatarFactory.QueueAppearanceSave(UUID); |
2544 | } | 2556 | } |
@@ -2697,17 +2709,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2697 | // "[SCENE PRESENCE] Send appearance from {0} {1} to {2} {3}", Name, m_uuid, avatar.Name, avatar.UUID); | 2709 | // "[SCENE PRESENCE] Send appearance from {0} {1} to {2} {3}", Name, m_uuid, avatar.Name, avatar.UUID); |
2698 | 2710 | ||
2699 | avatar.ControllingClient.SendAppearance( | 2711 | avatar.ControllingClient.SendAppearance( |
2700 | UUID, m_appearance.VisualParams, m_appearance.Texture.GetBytes()); | 2712 | UUID, Appearance.VisualParams, Appearance.Texture.GetBytes()); |
2701 | } | ||
2702 | |||
2703 | public AvatarAppearance Appearance | ||
2704 | { | ||
2705 | get { return m_appearance; } | ||
2706 | set | ||
2707 | { | ||
2708 | m_appearance = value; | ||
2709 | // m_log.DebugFormat("[SCENE PRESENCE]: Set appearance for {0} to {1}", Name, value); | ||
2710 | } | ||
2711 | } | 2713 | } |
2712 | 2714 | ||
2713 | #endregion | 2715 | #endregion |
@@ -2735,14 +2737,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
2735 | ChildAgentDataUpdate cadu = new ChildAgentDataUpdate(); | 2737 | ChildAgentDataUpdate cadu = new ChildAgentDataUpdate(); |
2736 | cadu.ActiveGroupID = UUID.Zero.Guid; | 2738 | cadu.ActiveGroupID = UUID.Zero.Guid; |
2737 | cadu.AgentID = UUID.Guid; | 2739 | cadu.AgentID = UUID.Guid; |
2738 | cadu.alwaysrun = m_setAlwaysRun; | 2740 | cadu.alwaysrun = SetAlwaysRun; |
2739 | cadu.AVHeight = m_appearance.AvatarHeight; | 2741 | cadu.AVHeight = Appearance.AvatarHeight; |
2740 | Vector3 tempCameraCenter = m_CameraCenter; | 2742 | cadu.cameraPosition = CameraPosition; |
2741 | cadu.cameraPosition = tempCameraCenter; | 2743 | cadu.drawdistance = DrawDistance; |
2742 | cadu.drawdistance = m_DrawDistance; | ||
2743 | cadu.GroupAccess = 0; | 2744 | cadu.GroupAccess = 0; |
2744 | cadu.Position = AbsolutePosition; | 2745 | cadu.Position = AbsolutePosition; |
2745 | cadu.regionHandle = m_rootRegionHandle; | 2746 | cadu.regionHandle = RegionHandle; |
2746 | 2747 | ||
2747 | // Throttles | 2748 | // Throttles |
2748 | float multiplier = 1; | 2749 | float multiplier = 1; |
@@ -2848,7 +2849,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2848 | { | 2849 | { |
2849 | if (m_requestedSitTargetUUID == UUID.Zero) | 2850 | if (m_requestedSitTargetUUID == UUID.Zero) |
2850 | { | 2851 | { |
2851 | bool isFlying = m_physicsActor.Flying; | 2852 | bool isFlying = PhysicsActor.Flying; |
2852 | RemoveFromPhysicalScene(); | 2853 | RemoveFromPhysicalScene(); |
2853 | 2854 | ||
2854 | Vector3 pos = AbsolutePosition; | 2855 | Vector3 pos = AbsolutePosition; |
@@ -2873,7 +2874,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2873 | { | 2874 | { |
2874 | if (m_requestedSitTargetUUID == UUID.Zero) | 2875 | if (m_requestedSitTargetUUID == UUID.Zero) |
2875 | { | 2876 | { |
2876 | bool isFlying = m_physicsActor.Flying; | 2877 | bool isFlying = PhysicsActor.Flying; |
2877 | RemoveFromPhysicalScene(); | 2878 | RemoveFromPhysicalScene(); |
2878 | 2879 | ||
2879 | Vector3 pos = AbsolutePosition; | 2880 | Vector3 pos = AbsolutePosition; |
@@ -2963,7 +2964,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2963 | { | 2964 | { |
2964 | try | 2965 | try |
2965 | { | 2966 | { |
2966 | return m_scene.CrossAgentToNewRegion(this, m_physicsActor.Flying); | 2967 | return m_scene.CrossAgentToNewRegion(this, PhysicsActor.Flying); |
2967 | } | 2968 | } |
2968 | catch | 2969 | catch |
2969 | { | 2970 | { |
@@ -2973,9 +2974,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
2973 | 2974 | ||
2974 | public void InTransit() | 2975 | public void InTransit() |
2975 | { | 2976 | { |
2976 | m_inTransit = true; | 2977 | IsInTransit = true; |
2977 | 2978 | ||
2978 | if ((m_physicsActor != null) && m_physicsActor.Flying) | 2979 | if ((PhysicsActor != null) && PhysicsActor.Flying) |
2979 | m_AgentControlFlags |= AgentManager.ControlFlags.AGENT_CONTROL_FLY; | 2980 | m_AgentControlFlags |= AgentManager.ControlFlags.AGENT_CONTROL_FLY; |
2980 | else if ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) | 2981 | else if ((m_AgentControlFlags & AgentManager.ControlFlags.AGENT_CONTROL_FLY) != 0) |
2981 | m_AgentControlFlags &= ~AgentManager.ControlFlags.AGENT_CONTROL_FLY; | 2982 | m_AgentControlFlags &= ~AgentManager.ControlFlags.AGENT_CONTROL_FLY; |
@@ -2983,7 +2984,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2983 | 2984 | ||
2984 | public void NotInTransit() | 2985 | public void NotInTransit() |
2985 | { | 2986 | { |
2986 | m_inTransit = false; | 2987 | IsInTransit = false; |
2987 | } | 2988 | } |
2988 | 2989 | ||
2989 | public void RestoreInCurrentScene() | 2990 | public void RestoreInCurrentScene() |
@@ -3039,7 +3040,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3039 | if (byebyeRegions.Count > 0) | 3040 | if (byebyeRegions.Count > 0) |
3040 | { | 3041 | { |
3041 | m_log.Debug("[SCENE PRESENCE]: Closing " + byebyeRegions.Count + " child agents"); | 3042 | m_log.Debug("[SCENE PRESENCE]: Closing " + byebyeRegions.Count + " child agents"); |
3042 | m_scene.SceneGridService.SendCloseChildAgentConnections(m_controllingClient.AgentId, byebyeRegions); | 3043 | m_scene.SceneGridService.SendCloseChildAgentConnections(ControllingClient.AgentId, byebyeRegions); |
3043 | } | 3044 | } |
3044 | 3045 | ||
3045 | foreach (ulong handle in byebyeRegions) | 3046 | foreach (ulong handle in byebyeRegions) |
@@ -3065,17 +3066,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
3065 | if (account != null) | 3066 | if (account != null) |
3066 | { | 3067 | { |
3067 | if (account.UserLevel > 0) | 3068 | if (account.UserLevel > 0) |
3068 | m_godLevel = account.UserLevel; | 3069 | GodLevel = account.UserLevel; |
3069 | else | 3070 | else |
3070 | m_godLevel = 200; | 3071 | GodLevel = 200; |
3071 | } | 3072 | } |
3072 | } | 3073 | } |
3073 | else | 3074 | else |
3074 | { | 3075 | { |
3075 | m_godLevel = 0; | 3076 | GodLevel = 0; |
3076 | } | 3077 | } |
3077 | 3078 | ||
3078 | ControllingClient.SendAdminResponse(token, (uint)m_godLevel); | 3079 | ControllingClient.SendAdminResponse(token, (uint)GodLevel); |
3079 | } | 3080 | } |
3080 | 3081 | ||
3081 | #region Child Agent Updates | 3082 | #region Child Agent Updates |
@@ -3107,8 +3108,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
3107 | // When we get to the point of re-computing neighbors everytime this | 3108 | // When we get to the point of re-computing neighbors everytime this |
3108 | // changes, then start using the agent's drawdistance rather than the | 3109 | // changes, then start using the agent's drawdistance rather than the |
3109 | // region's draw distance. | 3110 | // region's draw distance. |
3110 | // m_DrawDistance = cAgentData.Far; | 3111 | // DrawDistance = cAgentData.Far; |
3111 | m_DrawDistance = Scene.DefaultDrawDistance; | 3112 | DrawDistance = Scene.DefaultDrawDistance; |
3112 | 3113 | ||
3113 | if (cAgentData.Position != new Vector3(-1f, -1f, -1f)) // UGH!! | 3114 | if (cAgentData.Position != new Vector3(-1f, -1f, -1f)) // UGH!! |
3114 | m_pos = cAgentData.Position + offset; | 3115 | m_pos = cAgentData.Position + offset; |
@@ -3119,7 +3120,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3119 | ReprioritizeUpdates(); | 3120 | ReprioritizeUpdates(); |
3120 | } | 3121 | } |
3121 | 3122 | ||
3122 | m_CameraCenter = cAgentData.Center + offset; | 3123 | CameraPosition = cAgentData.Center + offset; |
3123 | 3124 | ||
3124 | //SetHeight(cAgentData.AVHeight); | 3125 | //SetHeight(cAgentData.AVHeight); |
3125 | 3126 | ||
@@ -3127,7 +3128,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3127 | ControllingClient.SetChildAgentThrottle(cAgentData.Throttles); | 3128 | ControllingClient.SetChildAgentThrottle(cAgentData.Throttles); |
3128 | 3129 | ||
3129 | //cAgentData.AVHeight; | 3130 | //cAgentData.AVHeight; |
3130 | m_rootRegionHandle = cAgentData.RegionHandle; | 3131 | RegionHandle = cAgentData.RegionHandle; |
3131 | //m_velocity = cAgentData.Velocity; | 3132 | //m_velocity = cAgentData.Velocity; |
3132 | } | 3133 | } |
3133 | 3134 | ||
@@ -3140,12 +3141,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
3140 | 3141 | ||
3141 | cAgent.Position = AbsolutePosition; | 3142 | cAgent.Position = AbsolutePosition; |
3142 | cAgent.Velocity = m_velocity; | 3143 | cAgent.Velocity = m_velocity; |
3143 | cAgent.Center = m_CameraCenter; | 3144 | cAgent.Center = CameraPosition; |
3144 | cAgent.AtAxis = m_CameraAtAxis; | 3145 | cAgent.AtAxis = CameraAtAxis; |
3145 | cAgent.LeftAxis = m_CameraLeftAxis; | 3146 | cAgent.LeftAxis = CameraLeftAxis; |
3146 | cAgent.UpAxis = m_CameraUpAxis; | 3147 | cAgent.UpAxis = m_CameraUpAxis; |
3147 | 3148 | ||
3148 | cAgent.Far = m_DrawDistance; | 3149 | cAgent.Far = DrawDistance; |
3149 | 3150 | ||
3150 | // Throttles | 3151 | // Throttles |
3151 | float multiplier = 1; | 3152 | float multiplier = 1; |
@@ -3160,17 +3161,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
3160 | cAgent.Throttles = ControllingClient.GetThrottlesPacked(multiplier); | 3161 | cAgent.Throttles = ControllingClient.GetThrottlesPacked(multiplier); |
3161 | 3162 | ||
3162 | cAgent.HeadRotation = m_headrotation; | 3163 | cAgent.HeadRotation = m_headrotation; |
3163 | cAgent.BodyRotation = m_bodyRot; | 3164 | cAgent.BodyRotation = Rotation; |
3164 | cAgent.ControlFlags = (uint)m_AgentControlFlags; | 3165 | cAgent.ControlFlags = (uint)m_AgentControlFlags; |
3165 | 3166 | ||
3166 | if (m_scene.Permissions.IsGod(new UUID(cAgent.AgentID))) | 3167 | if (m_scene.Permissions.IsGod(new UUID(cAgent.AgentID))) |
3167 | cAgent.GodLevel = (byte)m_godLevel; | 3168 | cAgent.GodLevel = (byte)GodLevel; |
3168 | else | 3169 | else |
3169 | cAgent.GodLevel = (byte) 0; | 3170 | cAgent.GodLevel = (byte) 0; |
3170 | 3171 | ||
3171 | cAgent.AlwaysRun = m_setAlwaysRun; | 3172 | cAgent.AlwaysRun = SetAlwaysRun; |
3172 | 3173 | ||
3173 | cAgent.Appearance = new AvatarAppearance(m_appearance); | 3174 | cAgent.Appearance = new AvatarAppearance(Appearance); |
3174 | 3175 | ||
3175 | lock (scriptedcontrols) | 3176 | lock (scriptedcontrols) |
3176 | { | 3177 | { |
@@ -3199,7 +3200,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3199 | cAgent.AttachmentObjects = new List<ISceneObject>(); | 3200 | cAgent.AttachmentObjects = new List<ISceneObject>(); |
3200 | cAgent.AttachmentObjectStates = new List<string>(); | 3201 | cAgent.AttachmentObjectStates = new List<string>(); |
3201 | // IScriptModule se = m_scene.RequestModuleInterface<IScriptModule>(); | 3202 | // IScriptModule se = m_scene.RequestModuleInterface<IScriptModule>(); |
3202 | m_InTransitScriptStates.Clear(); | 3203 | InTransitScriptStates.Clear(); |
3203 | 3204 | ||
3204 | foreach (SceneObjectGroup sog in m_attachments) | 3205 | foreach (SceneObjectGroup sog in m_attachments) |
3205 | { | 3206 | { |
@@ -3212,7 +3213,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3212 | cAgent.AttachmentObjects.Add(clone); | 3213 | cAgent.AttachmentObjects.Add(clone); |
3213 | string state = sog.GetStateSnapshot(); | 3214 | string state = sog.GetStateSnapshot(); |
3214 | cAgent.AttachmentObjectStates.Add(state); | 3215 | cAgent.AttachmentObjectStates.Add(state); |
3215 | m_InTransitScriptStates.Add(state); | 3216 | InTransitScriptStates.Add(state); |
3216 | // Let's remove the scripts of the original object here | 3217 | // Let's remove the scripts of the original object here |
3217 | sog.RemoveScriptInstances(true); | 3218 | sog.RemoveScriptInstances(true); |
3218 | } | 3219 | } |
@@ -3228,32 +3229,32 @@ namespace OpenSim.Region.Framework.Scenes | |||
3228 | 3229 | ||
3229 | m_pos = cAgent.Position; | 3230 | m_pos = cAgent.Position; |
3230 | m_velocity = cAgent.Velocity; | 3231 | m_velocity = cAgent.Velocity; |
3231 | m_CameraCenter = cAgent.Center; | 3232 | CameraPosition = cAgent.Center; |
3232 | m_CameraAtAxis = cAgent.AtAxis; | 3233 | CameraAtAxis = cAgent.AtAxis; |
3233 | m_CameraLeftAxis = cAgent.LeftAxis; | 3234 | CameraLeftAxis = cAgent.LeftAxis; |
3234 | m_CameraUpAxis = cAgent.UpAxis; | 3235 | m_CameraUpAxis = cAgent.UpAxis; |
3235 | 3236 | ||
3236 | // When we get to the point of re-computing neighbors everytime this | 3237 | // When we get to the point of re-computing neighbors everytime this |
3237 | // changes, then start using the agent's drawdistance rather than the | 3238 | // changes, then start using the agent's drawdistance rather than the |
3238 | // region's draw distance. | 3239 | // region's draw distance. |
3239 | // m_DrawDistance = cAgent.Far; | 3240 | // DrawDistance = cAgent.Far; |
3240 | m_DrawDistance = Scene.DefaultDrawDistance; | 3241 | DrawDistance = Scene.DefaultDrawDistance; |
3241 | 3242 | ||
3242 | if ((cAgent.Throttles != null) && cAgent.Throttles.Length > 0) | 3243 | if ((cAgent.Throttles != null) && cAgent.Throttles.Length > 0) |
3243 | ControllingClient.SetChildAgentThrottle(cAgent.Throttles); | 3244 | ControllingClient.SetChildAgentThrottle(cAgent.Throttles); |
3244 | 3245 | ||
3245 | m_headrotation = cAgent.HeadRotation; | 3246 | m_headrotation = cAgent.HeadRotation; |
3246 | m_bodyRot = cAgent.BodyRotation; | 3247 | Rotation = cAgent.BodyRotation; |
3247 | m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags; | 3248 | m_AgentControlFlags = (AgentManager.ControlFlags)cAgent.ControlFlags; |
3248 | 3249 | ||
3249 | if (m_scene.Permissions.IsGod(new UUID(cAgent.AgentID))) | 3250 | if (m_scene.Permissions.IsGod(new UUID(cAgent.AgentID))) |
3250 | m_godLevel = cAgent.GodLevel; | 3251 | GodLevel = cAgent.GodLevel; |
3251 | m_setAlwaysRun = cAgent.AlwaysRun; | 3252 | SetAlwaysRun = cAgent.AlwaysRun; |
3252 | 3253 | ||
3253 | m_appearance = new AvatarAppearance(cAgent.Appearance); | 3254 | Appearance = new AvatarAppearance(cAgent.Appearance); |
3254 | if (m_physicsActor != null) | 3255 | if (PhysicsActor != null) |
3255 | { | 3256 | { |
3256 | bool isFlying = m_physicsActor.Flying; | 3257 | bool isFlying = PhysicsActor.Flying; |
3257 | RemoveFromPhysicalScene(); | 3258 | RemoveFromPhysicalScene(); |
3258 | AddToPhysicalScene(isFlying); | 3259 | AddToPhysicalScene(isFlying); |
3259 | } | 3260 | } |
@@ -3319,7 +3320,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3319 | { | 3320 | { |
3320 | Vector3 force = m_forceToApply.Value; | 3321 | Vector3 force = m_forceToApply.Value; |
3321 | 3322 | ||
3322 | m_updateflag = true; | 3323 | Updated = true; |
3323 | 3324 | ||
3324 | Velocity = force; | 3325 | Velocity = force; |
3325 | 3326 | ||
@@ -3336,30 +3337,30 @@ namespace OpenSim.Region.Framework.Scenes | |||
3336 | // "[SCENE PRESENCE]: Adding physics actor for {0}, ifFlying = {1} in {2}", | 3337 | // "[SCENE PRESENCE]: Adding physics actor for {0}, ifFlying = {1} in {2}", |
3337 | // Name, isFlying, Scene.RegionInfo.RegionName); | 3338 | // Name, isFlying, Scene.RegionInfo.RegionName); |
3338 | 3339 | ||
3339 | if (m_appearance.AvatarHeight == 0) | 3340 | if (Appearance.AvatarHeight == 0) |
3340 | m_appearance.SetHeight(); | 3341 | Appearance.SetHeight(); |
3341 | 3342 | ||
3342 | PhysicsScene scene = m_scene.PhysicsScene; | 3343 | PhysicsScene scene = m_scene.PhysicsScene; |
3343 | 3344 | ||
3344 | Vector3 pVec = AbsolutePosition; | 3345 | Vector3 pVec = AbsolutePosition; |
3345 | 3346 | ||
3346 | // Old bug where the height was in centimeters instead of meters | 3347 | // Old bug where the height was in centimeters instead of meters |
3347 | m_physicsActor = scene.AddAvatar(LocalId, Firstname + "." + Lastname, pVec, | 3348 | PhysicsActor = scene.AddAvatar(LocalId, Firstname + "." + Lastname, pVec, |
3348 | new Vector3(0f, 0f, m_appearance.AvatarHeight), isFlying); | 3349 | new Vector3(0f, 0f, Appearance.AvatarHeight), isFlying); |
3349 | 3350 | ||
3350 | scene.AddPhysicsActorTaint(m_physicsActor); | 3351 | scene.AddPhysicsActorTaint(PhysicsActor); |
3351 | //m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; | 3352 | //PhysicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients; |
3352 | m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; | 3353 | PhysicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; |
3353 | m_physicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong | 3354 | PhysicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong |
3354 | m_physicsActor.SubscribeEvents(500); | 3355 | PhysicsActor.SubscribeEvents(500); |
3355 | m_physicsActor.LocalID = LocalId; | 3356 | PhysicsActor.LocalID = LocalId; |
3356 | 3357 | ||
3357 | SetHeight(m_appearance.AvatarHeight); | 3358 | SetHeight(Appearance.AvatarHeight); |
3358 | } | 3359 | } |
3359 | 3360 | ||
3360 | private void OutOfBoundsCall(Vector3 pos) | 3361 | private void OutOfBoundsCall(Vector3 pos) |
3361 | { | 3362 | { |
3362 | //bool flying = m_physicsActor.Flying; | 3363 | //bool flying = PhysicsActor.Flying; |
3363 | //RemoveFromPhysicalScene(); | 3364 | //RemoveFromPhysicalScene(); |
3364 | 3365 | ||
3365 | //AddToPhysicalScene(flying); | 3366 | //AddToPhysicalScene(flying); |
@@ -3374,7 +3375,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3374 | return; | 3375 | return; |
3375 | 3376 | ||
3376 | //if ((Math.Abs(Velocity.X) > 0.1e-9f) || (Math.Abs(Velocity.Y) > 0.1e-9f)) | 3377 | //if ((Math.Abs(Velocity.X) > 0.1e-9f) || (Math.Abs(Velocity.Y) > 0.1e-9f)) |
3377 | // The Physics Scene will send updates every 500 ms grep: m_physicsActor.SubscribeEvents( | 3378 | // The Physics Scene will send updates every 500 ms grep: PhysicsActor.SubscribeEvents( |
3378 | // as of this comment the interval is set in AddToPhysicalScene | 3379 | // as of this comment the interval is set in AddToPhysicalScene |
3379 | if (Animator != null) | 3380 | if (Animator != null) |
3380 | Animator.UpdateMovementAnimations(); | 3381 | Animator.UpdateMovementAnimations(); |
@@ -3413,7 +3414,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3413 | } | 3414 | } |
3414 | } | 3415 | } |
3415 | 3416 | ||
3416 | if (m_invulnerable) | 3417 | if (Invulnerable) |
3417 | return; | 3418 | return; |
3418 | 3419 | ||
3419 | float starthealth = Health; | 3420 | float starthealth = Health; |
@@ -3438,13 +3439,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
3438 | //m_log.Debug("[AVATAR]: Collision with localid: " + localid.ToString() + " at depth: " + coldata[localid].ToString()); | 3439 | //m_log.Debug("[AVATAR]: Collision with localid: " + localid.ToString() + " at depth: " + coldata[localid].ToString()); |
3439 | } | 3440 | } |
3440 | //Health = 100; | 3441 | //Health = 100; |
3441 | if (!m_invulnerable) | 3442 | if (!Invulnerable) |
3442 | { | 3443 | { |
3443 | if (starthealth != Health) | 3444 | if (starthealth != Health) |
3444 | { | 3445 | { |
3445 | ControllingClient.SendHealth(Health); | 3446 | ControllingClient.SendHealth(Health); |
3446 | } | 3447 | } |
3447 | if (m_health <= 0) | 3448 | if (Health <= 0) |
3448 | m_scene.EventManager.TriggerAvatarKill(killerObj, this); | 3449 | m_scene.EventManager.TriggerAvatarKill(killerObj, this); |
3449 | } | 3450 | } |
3450 | } | 3451 | } |
@@ -3475,11 +3476,11 @@ namespace OpenSim.Region.Framework.Scenes | |||
3475 | // unsetting the elapsed callback should be enough to allow for cleanup however. | 3476 | // unsetting the elapsed callback should be enough to allow for cleanup however. |
3476 | // m_reprioritizationTimer.Dispose(); | 3477 | // m_reprioritizationTimer.Dispose(); |
3477 | 3478 | ||
3478 | m_sceneViewer.Close(); | 3479 | SceneViewer.Close(); |
3479 | 3480 | ||
3480 | RemoveFromPhysicalScene(); | 3481 | RemoveFromPhysicalScene(); |
3481 | m_animator.Close(); | 3482 | Animator.Close(); |
3482 | m_animator = null; | 3483 | Animator = null; |
3483 | } | 3484 | } |
3484 | 3485 | ||
3485 | public void AddAttachment(SceneObjectGroup gobj) | 3486 | public void AddAttachment(SceneObjectGroup gobj) |
@@ -3841,7 +3842,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
3841 | 3842 | ||
3842 | private void Reprioritize(object sender, ElapsedEventArgs e) | 3843 | private void Reprioritize(object sender, ElapsedEventArgs e) |
3843 | { | 3844 | { |
3844 | m_controllingClient.ReprioritizeUpdates(); | 3845 | ControllingClient.ReprioritizeUpdates(); |
3845 | 3846 | ||
3846 | lock (m_reprioritization_timer) | 3847 | lock (m_reprioritization_timer) |
3847 | { | 3848 | { |