public void OnMouseMove(Renderer r, MouseEventArgs e)
        {
            currentPoint = Vector2.FromPointF(r.ScreenToWorld(e.Location));

            if ((modeMovePOI == true) && (shouldMove == true))
            {
                PointF p = r.ScreenToWorld(new PointF(e.X, e.Y));
                foreach (NotepointRenderer np in poiList)
                {
                    if (np.Equals(pointToMove))
                    {
                        NotepointRenderer mousePoint = np;
                        mousePoint.X = p.X;
                        mousePoint.Y = p.Y;
                        poiList.Remove(np);
                        poiList.Add(mousePoint);
                        pointToMove = mousePoint;
                        break;
                    }
                }
            }
        }
 public void OnMouseDown(Renderer r, MouseEventArgs e)
 {
     PointF worldPoint = r.ScreenToWorld(e.Location);
     if (e.Button == MouseButtons.Right)
     {
         //if (GestureExpData != null)
         //    GestureExpData(this, new GestureExpPointToolEventArgs("right down click, at " + e.X + ", " + e.Y + " (screen), " + worldPoint.X + ", " + worldPoint.Y + " (world)"));
     }
     else if(e.Button.Equals(MouseButtons.Left))
     {
         //PointF worldPoint = r.ScreenToWorld(e.Location);
         if (modeNewPOI == true)
         {
             if (POItype == "PICTURE")
             {
                 if (r.Selectables.Count() > 0)
                 {
                     foreach (ISelectable sel in r.Selectables)
                     {
                         RobotRenderer rr = sel as RobotRenderer;
                         if (rr != null && rr.IsSelected)
                         {
                             r.AddRenderable(new FakeObjectRenderer("important", rr.GetBoundingPolygon().Center.ToPointF(), "picture"));
                             if (GestureExpData != null)
                             {
                                 GestureExpData(this, new GestureExpHRIEventArgs("Tool:PointTool|left click down|take picture|Robot " + rr.GetName().Substring(rr.GetName().Length-1) + "|" + e.X + "|" + e.Y + "|(screen)|" + worldPoint.X + "|" + worldPoint.Y + "|(world)"));
                             }
                         }
                     }
                 }
             }
             else
             {
                 NotepointRenderer newPoint = new NotepointRenderer();
                 newPoint.Name = POItype;
                 if (POItype == "SQUARE")
                 {
                     newPoint.Color = Color.DarkMagenta;
                 }
                 else if (POItype == "TRIANGLE")
                 {
                     newPoint.Color = Color.DarkGreen;
                 }
                 else if (POItype == "SPIRAL")
                 {
                     newPoint.Color = Color.DarkRed;
                 }
                 newPoint.X = worldPoint.X;
                 newPoint.Y = worldPoint.Y;
                 newPoint.Z = 0;
                 poiList.Add(newPoint);
                 r.AddRenderable(newPoint);
                 if (GestureExpData != null)
                 {
                     GestureExpData(this, new GestureExpHRIEventArgs("Tool:PointTool|left click down|create|" + newPoint.Name + "|" + e.X + "|" + e.Y + "|(screen)|" + worldPoint.X + "|" + worldPoint.Y + "|(world)"));
                 }
             }
         }
         else if (modeDeletePOI == true)
         {
             if (poiList.Count > 0)
             {
                 List<NotepointRenderer> pointsToRemove= new List<NotepointRenderer>();
                 foreach (NotepointRenderer np in poiList)
                 {
                     if ((worldPoint.X - np.X > -.25) && (worldPoint.Y - np.Y > -.25) &&
                         (worldPoint.X - np.X < .25) && (worldPoint.Y - np.Y < .25))
                     {
                         pointsToRemove.Add(np);
                         r.RemoveRenderable(np);
                         if (GestureExpData != null)
                             GestureExpData(this, new GestureExpHRIEventArgs("Tool:PointTool|left click down|remove|" + np.Name + "|" + e.X + "|" + e.Y + "|(screen)|" + worldPoint.X + "|" + worldPoint.Y + "|(world)"));
                     }
                 }
                 if (pointsToRemove.Count>0)
                 {
                     foreach (NotepointRenderer n in pointsToRemove)
                     {
                         poiList.Remove(n);
                     }
                     myToolManager.SelectTool.TempReactivate();
                     myToolManager.PathTool.TempReactivate();
                     modeDeletePOI = false;
                 }
             }
         }
         else if (modeMovePOI == true)
         {
             if (poiList.Count > 0)
             {
                 foreach (NotepointRenderer np in poiList)
                 {
                     if ((worldPoint.X - np.X > -.25) && (worldPoint.Y - np.Y > -.25) &&
                         (worldPoint.X - np.X < .25) && (worldPoint.Y - np.Y < .25))
                     {
                         shouldMove = true;
                         pointToMove = np;
                         if (GestureExpData != null)
                             GestureExpData(this, new GestureExpHRIEventArgs("Tool:PointTool|left click down|move|" + np.Name + "|" + e.X + "|" + e.Y + "|(screen)|" + worldPoint.X + "|" + worldPoint.Y + "|(world)"));
                         break;
                     }
                 }
             }
         }
     }
 }