mirror of
https://github.com/opensim/opensim.git
synced 2026-08-05 17:05:55 +08:00
CameraData is a bit too large to be a struct
This commit is contained in:
@@ -1393,10 +1393,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
PhysicsActor partPhysActor = part.PhysActor;
|
||||
if(partPhysActor != null)
|
||||
{
|
||||
partPhysActor.OnPhysicsRequestingCameraData -=
|
||||
physActor_OnPhysicsRequestingCameraData;
|
||||
partPhysActor.OnPhysicsRequestingCameraData +=
|
||||
physActor_OnPhysicsRequestingCameraData;
|
||||
partPhysActor.OnPhysicsRequestingCameraData -= physActor_OnPhysicsRequestingCameraData;
|
||||
partPhysActor.OnPhysicsRequestingCameraData += physActor_OnPhysicsRequestingCameraData;
|
||||
}
|
||||
}
|
||||
ParentUUID = UUID.Zero;
|
||||
@@ -5888,15 +5886,15 @@ namespace OpenSim.Region.Framework.Scenes
|
||||
}
|
||||
}
|
||||
|
||||
private CameraData CameraDataCache;
|
||||
CameraData physActor_OnPhysicsRequestingCameraData()
|
||||
{
|
||||
return new CameraData
|
||||
{
|
||||
Valid = true,
|
||||
MouseLook = this.m_mouseLook,
|
||||
CameraRotation = this.CameraRotation,
|
||||
CameraAtAxis = this.CameraAtAxis
|
||||
};
|
||||
if(CameraDataCache == null)
|
||||
CameraDataCache = new CameraData();
|
||||
CameraDataCache.MouseLook = m_mouseLook;
|
||||
CameraDataCache.CameraRotation = CameraRotation;
|
||||
CameraDataCache.CameraAtAxis = CameraAtAxis;
|
||||
return CameraDataCache;
|
||||
}
|
||||
|
||||
public void RegisterControlEventsToScript(int controls, int accept, int pass_on, uint Obj_localID, UUID Script_item_UUID)
|
||||
|
||||
@@ -55,12 +55,11 @@ namespace OpenSim.Region.PhysicsModules.SharedBase
|
||||
Absolute
|
||||
}
|
||||
|
||||
public struct CameraData
|
||||
public class CameraData
|
||||
{
|
||||
public Quaternion CameraRotation;
|
||||
public Vector3 CameraAtAxis;
|
||||
public bool MouseLook;
|
||||
public bool Valid;
|
||||
}
|
||||
|
||||
public struct ContactPoint
|
||||
@@ -187,12 +186,7 @@ namespace OpenSim.Region.PhysicsModules.SharedBase
|
||||
public CameraData TryGetCameraData()
|
||||
{
|
||||
GetCameraData handler = OnPhysicsRequestingCameraData;
|
||||
if (handler != null)
|
||||
{
|
||||
return handler();
|
||||
}
|
||||
|
||||
return new CameraData { Valid = false };
|
||||
return (handler == null) ? null : handler();
|
||||
}
|
||||
|
||||
public static PhysicsActor Null
|
||||
|
||||
@@ -1046,7 +1046,7 @@ namespace OpenSim.Region.PhysicsModule.ubOde
|
||||
if(mousemode)
|
||||
{
|
||||
CameraData cam = rootPrim.TryGetCameraData();
|
||||
if(cam.Valid && cam.MouseLook)
|
||||
if(cam != null && cam.MouseLook)
|
||||
{
|
||||
Vector3 dirv = cam.CameraAtAxis * irotq;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user