CameraUtility.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. namespace MeidoPhotoStudio.Plugin;
  2. public static class CameraUtility
  3. {
  4. public static CameraMain MainCamera =>
  5. GameMain.Instance.MainCamera;
  6. public static UltimateOrbitCamera UOCamera { get; } =
  7. GameMain.Instance.MainCamera.GetComponent<UltimateOrbitCamera>();
  8. public static void StopSpin()
  9. {
  10. Utility.SetFieldValue(UOCamera, "xVelocity", 0f);
  11. Utility.SetFieldValue(UOCamera, "yVelocity", 0f);
  12. }
  13. public static void StopMovement() =>
  14. MainCamera.SetTargetPos(MainCamera.GetTargetPos());
  15. public static void StopAll()
  16. {
  17. StopSpin();
  18. StopMovement();
  19. }
  20. public static void ForceCalcNearClip(this CameraMain camera)
  21. {
  22. camera.StopAllCoroutines();
  23. camera.m_bCalcNearClip = false;
  24. camera.camera.nearClipPlane = 0.01f;
  25. }
  26. public static void ResetCalcNearClip(this CameraMain camera)
  27. {
  28. if (camera.m_bCalcNearClip)
  29. return;
  30. camera.StopAllCoroutines();
  31. camera.m_bCalcNearClip = true;
  32. camera.Start();
  33. }
  34. }