/// <summary> /// parse an xml node /// </summary> /// <param name="xnod"></param> /// <param name="level"></param> public void LoadFromXml( XmlNode xnod, int level) { XmlNode xnodWorking; if (xnod.Name == "SteersmanGeometry") { int cameraIndex = -1; if (robot_geometry == null) { robot_geometry = new robotGeometry(); } robot_geometry.LoadFromXml(xnod, level + 1, ref cameraIndex); } if (xnod.Name == "SteersmanBuffer") { if (buffer == null) { buffer = new metagridBuffer(); } int no_of_grid_levels = 0; int grid_type = 0; int dimension_mm = 0; int dimension_vertical_mm = 0; int cellSize_mm = 0; int localisationRadius_mm = 0; int maxMappingRange_mm = 0; float vacancyWeighting = 0; buffer.LoadFromXml(xnod, level + 1, ref no_of_grid_levels, ref grid_type, ref dimension_mm, ref dimension_vertical_mm, ref cellSize_mm, ref localisationRadius_mm, ref maxMappingRange_mm, ref vacancyWeighting ); buffer.Initialise( no_of_grid_levels, grid_type, dimension_mm, dimension_vertical_mm, cellSize_mm, localisationRadius_mm, maxMappingRange_mm, vacancyWeighting); } if (xnod.Name == "SteersmanSensorModels") { if (robot_geometry == null) { robot_geometry = new robotGeometry(); } int no_of_stereo_cameras = 0; int no_of_grid_levels = 0; int camera_index = 0; int grid_level = 0; robot_geometry.LoadFromXmlSensorModels( xnod, level + 1, ref no_of_stereo_cameras, ref no_of_grid_levels, ref camera_index, ref grid_level); } // call recursively on all children of the current node if (xnod.HasChildNodes) { xnodWorking = xnod.FirstChild; while (xnodWorking != null) { LoadFromXml(xnodWorking, level + 1); xnodWorking = xnodWorking.NextSibling; } } }