internal static SpriteGridSave FromXElement(System.Xml.Linq.XElement element) { SpriteGridSave sgs = new SpriteGridSave(); foreach (var subElement in element.Elements()) { switch (subElement.Name.LocalName) { case "AnimationChainGridSave": sgs.AnimationChainGridSave = AnimationChainGridSave.FromXElement(subElement); break; case "Axis": sgs.Axis = SpriteEditorScene.AsChar(subElement); break; case "Blueprint": sgs.Blueprint = SpriteSave.FromXElement(subElement); break; case "BaseTexture": sgs.BaseTexture = (string)subElement.Value; break; case "CreatesAutomaticallyUpdatedSprites": sgs.CreatesAutomaticallyUpdatedSprites = SpriteEditorScene.AsBool(subElement); break; case "CreatesParticleSprites": sgs.CreatesParticleSprites = SpriteEditorScene.AsBool(subElement); break; case "DisplayRegionGridSave": sgs.DisplayRegionGridSave = DisplayRegionGridSave.FromXElement(subElement); break; case "DrawableBatch": sgs.DrawableBatch = SpriteEditorScene.AsBool(subElement); break; case "DrawDefaultTile": sgs.DrawDefaultTile = SpriteEditorScene.AsBool(subElement); break; case "FirstPaintedX": sgs.FirstPaintedX = SpriteEditorScene.AsFloatList(subElement); break; case "FirstPaintedY": sgs.FirstPaintedY = SceneSave.AsFloat(subElement); break; case "GridSpacing": sgs.GridSpacing = SceneSave.AsFloat(subElement); break; case "GridTexturesArray": sgs.GridTexturesArray = SpriteEditorScene.AsStringArrayArray(subElement); break; case "Name": sgs.Name = subElement.Value; break; case "OrderingMode": sgs.OrderingMode = (Graphics.OrderingMode)Enum.Parse(typeof(Graphics.OrderingMode), subElement.Value, true); break; case "XLeftBound": sgs.XLeftBound = SceneSave.AsFloat(subElement); break; case "XRightBound": sgs.XRightBound = SceneSave.AsFloat(subElement); break; case "YBottomBound": sgs.YBottomBound = SceneSave.AsFloat(subElement); break; case "YTopBound": sgs.YTopBound = SceneSave.AsFloat(subElement); break; case "ZCloseBound": sgs.ZCloseBound = SceneSave.AsFloat(subElement); break; case "ZFarBound": sgs.ZFarBound = SceneSave.AsFloat(subElement); break; default: throw new NotImplementedException("Node not understood: " + subElement.Name.LocalName); } } return(sgs); }