public override void RenderGizmos() { Ellipse2D ellipse = Ellipse; GizmosEx.Render2DFilledEllipse(ellipse, _renderSettings.FillColor); GizmosEx.Render2DEllipseBorderLines(ellipse, _renderSettings.BorderLineColor); }
public static void Render2DEllipseBorderLines(Ellipse2D ellipse, Color color) { Camera camera = SceneViewCamera.Camera; List <Vector3> worldBorderPoints = ellipse.GetWorldBorderLinesInFrontOfCamera(camera, _2DPointOffsetFromCamNearPlane, _numberOfCircleMeshSlices); RenderLinesBetweenPoints(worldBorderPoints, color); }
public static void Render2DFilledEllipse(Ellipse2D ellipse, Color color) { Camera camera = SceneViewCamera.Camera; Transform cameraTransform = camera.transform; List <Vector3> ellipseWorldPoints = ellipse.GetWorldExtentPointsInFrontOfCamera(camera, _2DPointOffsetFromCamNearPlane); float radiusX = (ellipseWorldPoints[1] - ellipseWorldPoints[3]).magnitude * 0.5f; float radiusY = (ellipseWorldPoints[0] - ellipseWorldPoints[2]).magnitude * 0.5f; Vector3 ellipseWorldPosition = ellipse.GetWorldCenterPointInFrontOfCamera(camera, _2DPointOffsetFromCamNearPlane); Matrix4x4 transformMatrix = Matrix4x4.TRS(ellipseWorldPosition, cameraTransform.rotation, new Vector3(radiusX, radiusY, 1.0f)); RenderMesh(GetCircleMesh(), transformMatrix, color); }
private List <GameObject> GetOverlappedGameObjectsForPartialOverlap(List <GameObject> objectsOveralppedByEnclosingRect, Camera camera) { Ellipse2D ellipse = Ellipse; List <GameObject> overlappedGameObjects = new List <GameObject>(objectsOveralppedByEnclosingRect.Count); foreach (GameObject gameObject in objectsOveralppedByEnclosingRect) { if (ellipse.OverlapsRectangle(gameObject.GetScreenRectangle(camera))) { overlappedGameObjects.Add(gameObject); } } return(overlappedGameObjects); }
private List <GameObject> GetOverlappedGameObjectsForFullOverlap(List <GameObject> objectsOveralppedByEnclosingRect, Camera camera) { Ellipse2D ellipse = Ellipse; List <GameObject> overlappedGameObjects = new List <GameObject>(objectsOveralppedByEnclosingRect.Count); foreach (GameObject gameObject in objectsOveralppedByEnclosingRect) { OrientedBox worldOrientedBox = gameObject.gameObject.GetWorldOrientedBox(); if (worldOrientedBox.IsValid() && ellipse.FullyContainsOrientedBoxCenterAndCornerPointsInScreenSpace(worldOrientedBox, camera)) { overlappedGameObjects.Add(gameObject); } } return(overlappedGameObjects); }
public static void Render2DCircleBorderLines(Circle2D circle, Color color) { Ellipse2D ellipse = new Ellipse2D(circle); Render2DEllipseBorderLines(ellipse, color); }