IsRenderedByCamera.cs 629 B

123456789101112131415161718192021222324252627282930
  1. using System;
  2. using UnityEngine;
  3. namespace UnityTest
  4. {
  5. public class IsRenderedByCamera : ComparerBaseGeneric<Renderer, Camera>
  6. {
  7. public enum CompareType
  8. {
  9. IsVisible,
  10. IsNotVisible,
  11. };
  12. public CompareType compareType;
  13. protected override bool Compare(Renderer renderer, Camera camera)
  14. {
  15. var planes = GeometryUtility.CalculateFrustumPlanes(camera);
  16. var isVisible = GeometryUtility.TestPlanesAABB(planes, renderer.bounds);
  17. switch (compareType)
  18. {
  19. case CompareType.IsVisible:
  20. return isVisible;
  21. case CompareType.IsNotVisible:
  22. return !isVisible;
  23. }
  24. throw new Exception();
  25. }
  26. }
  27. }