public void AddDetailVegetationSemantic(VegetationSemantic vegetationSemantic)
 {
     detailVeg.AddVegetationSemantic(vegetationSemantic);
 }
        protected void ParseElement(XmlTextReader r)
        {
            bool readEnd = true;
            // set the field in this object based on the element we just read
            switch (r.Name)
            {
                case "name":
                    // read the value
                    r.Read();
                    if (r.NodeType != XmlNodeType.Text)
                    {
                        return;
                    }
                    name = string.Format("{0} - unique boundary - {1}", r.Value, uniqueNum);
                    uniqueNum++;

                    break;

                case "points":
                    ParsePoints(r);
                    readEnd = false;
                    break;
                case "boundarySemantic":
                    BoundarySemanticType type = BoundarySemanticType.None;

                    for (int i = 0; i < r.AttributeCount; i++)
                    {    
                        r.MoveToAttribute(i);

                        // set the field in this object based on the element we just read
                        switch (r.Name)
                        {
                            case "type":
                                switch (r.Value)
                                {
                                    case "SpeedTreeForest":
                                        type = BoundarySemanticType.SpeedTreeForest;
                                        break;
                                    case "WaterPlane":
                                        type = BoundarySemanticType.WaterPlane;
                                        break;
								    case "Vegetation":
										type = BoundarySemanticType.Vegetation;
										break;
								}
                                break;
                        }
                    }
                    r.MoveToElement(); //Moves the reader back to the element node.

                    switch ( type ) 
                    {
                        case BoundarySemanticType.SpeedTreeForest:
                            Forest forest = new Forest(sceneNode, r);
                            this.AddSemantic(forest);
                            break;
                        case BoundarySemanticType.WaterPlane:
                            WaterPlane water = new WaterPlane(sceneNode, r);
                            this.AddSemantic(water);
                            break;
                        case BoundarySemanticType.Vegetation:
                            VegetationSemantic vegetationBoundary = new VegetationSemantic(r);
                            this.AddSemantic(vegetationBoundary);
                            break;
						default:
                            break;
                    }
                    readEnd = false;
                    break;
            }

            if (readEnd)
            {
                // error out if we dont see an end element here
                r.Read();
                if (r.NodeType != XmlNodeType.EndElement)
                {
                    return;
                }
            }
        }
 public void RemoveDetailVegetationSemantic(VegetationSemantic vegetationSemantic)
 {
     detailVeg.RemoveVegetationSemantic(vegetationSemantic);
 }