ObjectPlacementExtensionPlaneRenderer.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. namespace O3DWB
  5. {
  6. public class ObjectPlacementExtensionPlaneRenderer
  7. {
  8. #region Public Methods
  9. public void RenderGizmos(ObjectPlacementExtensionPlane extensionPlane)
  10. {
  11. ObjectPlacementExtensionPlaneRenderSettings renderSettings = extensionPlane.RenderSettings;
  12. XZOrientedQuad3D planeQuad = extensionPlane.PlaneQuad;
  13. planeQuad.SetScale(renderSettings.PlaneScale);
  14. // Note: Add a small offset to avoid Z wars when the extension plane sits on top of other objects.
  15. const float quadOffset = 0.005f;
  16. GizmosEx.RenderXZOrientedQuad(planeQuad, renderSettings.PlaneColor, quadOffset);
  17. GizmosEx.RenderXZOrientedQuadBorderLines(planeQuad, renderSettings.PlaneBorderLineColor, quadOffset);
  18. // Render the plane normals
  19. List<Vector3> quadCornerPoints = planeQuad.GetCornerPoints();
  20. Vector3 offsetToEndOfLine = extensionPlane.Plane.normal * renderSettings.PlaneNormalLineLength;
  21. foreach(Vector3 quadCornerPoint in quadCornerPoints)
  22. {
  23. GizmosEx.RenderLine(quadCornerPoint, quadCornerPoint + offsetToEndOfLine, renderSettings.PlaneNormalLineColor);
  24. }
  25. }
  26. #endregion
  27. }
  28. }
  29. #endif