Import plumbing from Halcyon for camera data to physics engine.

Signed-off-by: UbitUmarov <ajlduarte@sapo.pt>
This commit is contained in:
Vegaslon
2016-08-26 12:44:14 -04:00
committed by UbitUmarov
parent 78fa544f0d
commit c918dd74da
2 changed files with 70 additions and 7 deletions

View File

@@ -55,6 +55,16 @@ namespace OpenSim.Region.PhysicsModules.SharedBase
Absolute
}
public struct CameraData
{
public Quaternion CameraRotation;
public Vector3 CameraPosition;
public bool MouseLook;
public bool Valid;
public Quaternion HeadRotation;
public Quaternion BodyRotation;
}
public struct ContactPoint
{
public Vector3 Position;
@@ -159,13 +169,15 @@ namespace OpenSim.Region.PhysicsModules.SharedBase
public delegate void RequestTerseUpdate();
public delegate void CollisionUpdate(EventArgs e);
public delegate void OutOfBounds(Vector3 pos);
public delegate CameraData GetCameraData();
// disable warning: public events
// disable warning: public events
#pragma warning disable 67
public event PositionUpdate OnPositionUpdate;
public event VelocityUpdate OnVelocityUpdate;
public event OrientationUpdate OnOrientationUpdate;
public event RequestTerseUpdate OnRequestTerseUpdate;
public event GetCameraData OnPhysicsRequestingCameraData;
/// <summary>
/// Subscribers to this event must synchronously handle the dictionary of collisions received, since the event
@@ -176,6 +188,17 @@ namespace OpenSim.Region.PhysicsModules.SharedBase
public event OutOfBounds OnOutOfBounds;
#pragma warning restore 67
public CameraData TryGetCameraData()
{
GetCameraData handler = OnPhysicsRequestingCameraData;
if (handler != null)
{
return handler();
}
return new CameraData { Valid = false };
}
public static PhysicsActor Null
{
get { return new NullPhysicsActor(); }