/// <summary>
        /// Add annotation
        /// </summary>
        /// <param name="annot">Annotation to be added</param>
        /// <param name="renderingMode">Rendering mode, if responsive, viewport will be rendered</param>
        public void AddAnnotaion(VelodyneAnnotation annot, SimpleVelodyneViewerRenderingMode renderingMode)
        {
            this.viewPoints.Add(new ViewPoint(annot));

            if (renderingMode == SimpleVelodyneViewerRenderingMode.Responsive)
            {
                Render();
            }
        }
        /// <summary>
        /// Reset the view port and render
        /// </summary>
        /// <param name="renderingMode">Rendering mode, if responsive, viewport will be rendered</param>
        public void ResetView(SimpleVelodyneViewerRenderingMode renderingMode)
        {
            cam = new Camera();
            cloudTransform.Reset();
            PointSize = 3;

            if (renderingMode == SimpleVelodyneViewerRenderingMode.Responsive)
            {
                Render();
            }
        }
        /// <summary>
        /// Add new points to the view
        /// </summary>
        /// <param name="points">Collection of VelodynePoint</param>
        /// <param name="renderingMode">Rendering mode, if responsive, viewport will be rendered</param>
        public void AddNewPoints(IEnumerable <VelodynePoint> points, SimpleVelodyneViewerRenderingMode renderingMode, SimpleVelodyneViewerColorMap colorMap = SimpleVelodyneViewerColorMap.Default)
        {
            foreach (VelodynePoint pt in points)
            {
                this.viewPoints.Add(new ViewPoint(pt, colorMap));
            }

            if (renderingMode == SimpleVelodyneViewerRenderingMode.Responsive)
            {
                Render();
            }
        }
        /// <summary>
        /// Clear the selection
        /// Viewport will be rendered if it is specified by RenderingMode
        /// </summary>
        public void ClearSelection(SimpleVelodyneViewerRenderingMode renderingMode)
        {
            foreach (ViewPoint pt in this.viewPoints)
            {
                pt.IsSelected = false;
            }

            if (renderingMode == SimpleVelodyneViewerRenderingMode.Responsive)
            {
                Render();
            }
        }
        /// <summary>
        /// Remove annotation; annotation is identified by ref
        /// </summary>
        /// <param name="annot">Annotation object</param>
        /// <param name="renderingMode">Rendering mode, if responsive, viewport will be rendered</param>
        public void RemoveAnnotaion(VelodyneAnnotation annot, SimpleVelodyneViewerRenderingMode renderingMode)
        {
            ViewPoint vpToRemove = null;

            foreach (ViewPoint pt in viewPoints)
            {
                if (pt.PointObject == annot)
                {
                    vpToRemove = pt;
                    break;
                }
            }

            if (vpToRemove != null)
            {
                this.viewPoints.Remove(vpToRemove);
                if (renderingMode == SimpleVelodyneViewerRenderingMode.Responsive)
                {
                    Render();
                }
            }
        }
 /// <summary>
 /// Add points to the view with removing the previous points, viewport will be rendered
 /// </summary>
 /// <param name="points">Collection of VelodynePoint</param>
 /// <param name="renderingMode">Rendering mode, if responsive, viewport will be rendered</param>
 public void ClearAndAddNewPoints(IEnumerable <VelodynePoint> points, SimpleVelodyneViewerRenderingMode renderingMode, SimpleVelodyneViewerColorMap colorMap = SimpleVelodyneViewerColorMap.Default)
 {
     this.Clear();
     AddNewPoints(points, renderingMode, colorMap);
 }