CameraInfo.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using UnityEngine;
  2. namespace MeidoPhotoStudio.Plugin;
  3. public class CameraInfo
  4. {
  5. public CameraInfo() =>
  6. Reset();
  7. public Vector3 TargetPos { get; set; }
  8. public Quaternion Angle { get; set; }
  9. public float Distance { get; set; }
  10. public float FOV { get; set; }
  11. public static CameraInfo FromCamera(CameraMain mainCamera)
  12. {
  13. var info = new CameraInfo();
  14. info.UpdateInfo(mainCamera);
  15. return info;
  16. }
  17. public void Reset()
  18. {
  19. TargetPos = new(0f, 0.9f, 0f);
  20. Angle = Quaternion.Euler(10f, 180f, 0f);
  21. Distance = 3f;
  22. FOV = 35f;
  23. }
  24. public void UpdateInfo(CameraMain camera)
  25. {
  26. TargetPos = camera.GetTargetPos();
  27. Angle = camera.transform.rotation;
  28. Distance = camera.GetDistance();
  29. FOV = camera.camera.fieldOfView;
  30. }
  31. public void Apply(CameraMain camera)
  32. {
  33. camera.SetTargetPos(TargetPos);
  34. camera.SetDistance(Distance);
  35. camera.transform.rotation = Angle;
  36. camera.camera.fieldOfView = FOV;
  37. }
  38. }