private void HandleCameraMouseDrag(CameraState cameraState, Camera cam)
{
Event current = Event.current;
switch (this.m_CurrentViewTool)
{
case ViewTool.Orbit:
this.OrbitCameraBehavior(cameraState, cam);
break;
case ViewTool.Pan:
{
cameraState.FixNegativeSize();
Vector3 position = cam.WorldToScreenPoint(cameraState.pivot.value) + new Vector3(-Event.current.delta.x, Event.current.delta.y, 0f);
Vector3 vector7 = cam.ScreenToWorldPoint(position) - cameraState.pivot.value;
if (current.shift)
{
vector7 = (Vector3) (vector7 * 4f);
}
AnimVector3 pivot = cameraState.pivot;
pivot.value += vector7;
break;
}
case ViewTool.Zoom:
{
float num = HandleUtility.niceMouseDeltaZoom * (!current.shift ? ((float) 3) : ((float) 9));
this.m_TotalMotion += num;
if (this.m_TotalMotion >= 0f)
{
cameraState.viewSize.value += (num * this.m_ZoomSpeed) * 0.003f;
break;
}
cameraState.viewSize.value = this.m_StartZoom * (1f + (this.m_TotalMotion * 0.001f));
break;
}
case ViewTool.FPS:
{
Vector3 vector = cameraState.pivot.value - ((Vector3) ((cameraState.rotation.value * Vector3.forward) * cameraState.GetCameraDistance()));
Quaternion quaternion = cameraState.rotation.value;
quaternion = Quaternion.AngleAxis((current.delta.y * 0.003f) * 57.29578f, (Vector3) (quaternion * Vector3.right)) * quaternion;
quaternion = Quaternion.AngleAxis((current.delta.x * 0.003f) * 57.29578f, Vector3.up) * quaternion;
cameraState.rotation.value = quaternion;
cameraState.pivot.value = vector + ((Vector3) ((quaternion * Vector3.forward) * cameraState.GetCameraDistance()));
break;
}
}
current.Use();
}