public override void RenderGizmos()
        {
            Ellipse2D ellipse = Ellipse;

            GizmosEx.Render2DFilledEllipse(ellipse, _renderSettings.FillColor);
            GizmosEx.Render2DEllipseBorderLines(ellipse, _renderSettings.BorderLineColor);
        }
Ejemplo n.º 2
0
        public static void Render2DEllipseBorderLines(Ellipse2D ellipse, Color color)
        {
            Camera         camera            = SceneViewCamera.Camera;
            List <Vector3> worldBorderPoints = ellipse.GetWorldBorderLinesInFrontOfCamera(camera, _2DPointOffsetFromCamNearPlane, _numberOfCircleMeshSlices);

            RenderLinesBetweenPoints(worldBorderPoints, color);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 6
0
        public static void Render2DCircleBorderLines(Circle2D circle, Color color)
        {
            Ellipse2D ellipse = new Ellipse2D(circle);

            Render2DEllipseBorderLines(ellipse, color);
        }