CameraPotentialVisibleObjectsBox.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. namespace O3DWB
  4. {
  5. public class CameraPotentialVisibleObjectsBox
  6. {
  7. #region Private Variables
  8. private OrientedBox _orientedBox = new OrientedBox();
  9. #endregion
  10. #region Public Properties
  11. public Vector3 Center { get { return _orientedBox.Center; } }
  12. public Vector3 HalfSize { get { return _orientedBox.ModelSpaceExtents; } }
  13. public Quaternion Rotation { get { return _orientedBox.Rotation; } }
  14. #endregion
  15. #region Public Methods
  16. public void Calculate(Camera camera, CameraViewVolume cameraViewVolume)
  17. {
  18. Transform cameraTransform = camera.transform;
  19. _orientedBox = new OrientedBox();
  20. _orientedBox.Rotation = cameraTransform.rotation;
  21. _orientedBox.Center = cameraTransform.position + cameraTransform.forward * cameraViewVolume.FarClipPlaneDistance * 0.5f;
  22. _orientedBox.ModelSpaceSize = new Vector3((cameraViewVolume.TopLeftPointOnFarPlane - cameraViewVolume.TopRightPointOnFarPlane).magnitude,
  23. (cameraViewVolume.TopLeftPointOnFarPlane - cameraViewVolume.BottomLeftPointOnFarPlane).magnitude,
  24. cameraViewVolume.FarClipPlaneDistance - cameraViewVolume.NearClipPlaneDistance);
  25. }
  26. #endregion
  27. }
  28. }
  29. #endif