private void addGlyph(Glyph g) { PositionRobot p = new PositionRobot(); p.Angle = (float)g.rotation; p.Position = new PositionElement(); p.Position.X = g.Position[0]; p.Position.Y = g.Position[1]; p.Identifiant = g.getIdentifiant(); LstRbt.Add(p); }
/* Fonction Robot */ private void mergePosition(List <PositionRobot> LstTmp) { if (LstTmp.Count == 0) { return; } List <PositionRobot> ListEnvoi = new List <PositionRobot>(); for (int i = 0; i < LstTmp.Count; i++) { bool Trouve = false; PositionRobot tmp = LstTmp[i]; tmp.Position.X = (int)(ratioCmParPixel[0] * tmp.Position.X); tmp.Position.Y = (int)(ratioCmParPixel[1] * tmp.Position.Y); for (int j = 0; j < LstRobot.Count; j++) { if (LstRobot[j].Identifiant == LstTmp[i].Identifiant) { IntPoint itmp = new IntPoint((int)(tmp.Position.X), (int)(tmp.Position.Y)); IntPoint p = new IntPoint(LstRobot[j].Position.X, LstRobot[j].Position.Y); if (p.DistanceTo(itmp) > 5) // Sueil a 2 cm { LstRobot[j] = tmp; ListEnvoi.Add(tmp); } tmp.DerniereModification = DateTime.Now; Trouve = true; break; } } if (Trouve == false) { tmp.DerniereModification = DateTime.Now; ListEnvoi.Add(tmp); LstRobot.Add(tmp); } } if (ListEnvoi.Count > 0) { //Logger.GlobalLogger.debug("" + ListEnvoi.Count); envoieListe(ListEnvoi); } for (int i = LstRobot.Count - 1; i >= 0; i--) { if (LstRobot[i].Position.X == -1) { LstRobot.RemoveAt(i); } } }
protected void clean() { List <PositionRobot> pos = new List <PositionRobot>(); List <ObjColor> obj = new List <ObjColor>(); while (true) { pos.Clear(); obj.Clear(); int i = 0; TimeSpan t; /* Nettoye les glyphs disparut de la bibliotheque de Glyphs */ foreach (PositionRobot tmp in LstRobot) { t = DateTime.Now - tmp.DerniereModification; if (t.Seconds > 3) { PositionRobot ta = tmp; ta.Position.X = -1; ta.Position.Y = -1; pos.Add(ta); i++; } else { pos.Add(tmp); } } if (i > 0) { LstRobot = pos; // Logger.GlobalLogger.debug("Suppression de " + i + " Glyphs"); } Thread.Sleep(3000); } }