public static object GetValueForProperty(string fileName, string objectName, string propertyName) { string extension = FileManager.GetExtension(fileName); switch (extension) { #region case Scene (scnx) case "scnx": SpriteEditorScene ses = SpriteEditorScene.FromFile(fileName); string oldRelative = FileManager.RelativeDirectory; FileManager.RelativeDirectory = FileManager.GetDirectory(fileName); object returnValue = GetValueForPropertyInScene(ses, objectName, propertyName); FileManager.RelativeDirectory = oldRelative; return(returnValue); //break; #endregion #region case ShapeCollection (shcx) case "shcx": ShapeCollectionSave scs = ShapeCollectionSave.FromFile(fileName); return(GetValueForPropertyInShapeCollection(scs, objectName, propertyName)); //break; #endregion } return(null); }
public static MapDrawableBatch FromScnx(string sceneFileName, string contentManagerName, bool verifySameTexturePerLayer) { // TODO: This line crashes when the path is already absolute! string absoluteFileName = FileManager.MakeAbsolute(sceneFileName); // TODO: The exception doesn't make sense when the file type is wrong. SpriteEditorScene saveInstance = SpriteEditorScene.FromFile(absoluteFileName); int startingIndex = 0; string oldRelativeDirectory = FileManager.RelativeDirectory; FileManager.RelativeDirectory = FileManager.GetDirectory(absoluteFileName); // get the list of sprites from our map file List <SpriteSave> spriteSaveList = saveInstance.SpriteList; // we use the sprites as defined in the scnx file to create and draw the map. MapDrawableBatch mMapBatch = FromSpriteSaves(spriteSaveList, startingIndex, spriteSaveList.Count, contentManagerName, verifySameTexturePerLayer); FileManager.RelativeDirectory = oldRelativeDirectory; // temp //mMapBatch = new MapDrawableBatch(32, 32, 32f, 64, @"content/tiles"); return(mMapBatch); }
public static LayeredTileMap FromScene(string fileName, string contentManagerName, bool verifySameTexturePerLayer) { Section.GetAndStartContextAndTime("Initial FromScene"); LayeredTileMap toReturn = new LayeredTileMap(); string absoluteFileName = FileManager.MakeAbsolute(fileName); Section.EndContextAndTime(); Section.GetAndStartContextAndTime("FromFile"); SpriteEditorScene ses = SpriteEditorScene.FromFile(absoluteFileName); Section.EndContextAndTime(); Section.GetAndStartContextAndTime("BreaksNStuff"); string oldRelativeDirectory = FileManager.RelativeDirectory; FileManager.RelativeDirectory = FileManager.GetDirectory(absoluteFileName); var breaks = GetZBreaks(ses.SpriteList); int valueBefore = 0; MapDrawableBatch mdb; int valueAfter; float zValue = 0; Section.EndContextAndTime(); Section.GetAndStartContextAndTime("Create MDBs"); for (int i = 0; i < breaks.Count; i++) { valueAfter = breaks[i]; int count = valueAfter - valueBefore; mdb = MapDrawableBatch.FromSpriteSaves(ses.SpriteList, valueBefore, count, contentManagerName, verifySameTexturePerLayer); mdb.AttachTo(toReturn, false); mdb.RelativeZ = zValue; toReturn.mMapLists.Add(mdb); zValue += toReturn.mZSplit; valueBefore = valueAfter; } valueAfter = ses.SpriteList.Count; if (valueBefore != valueAfter) { int count = valueAfter - valueBefore; mdb = MapDrawableBatch.FromSpriteSaves(ses.SpriteList, valueBefore, count, contentManagerName, verifySameTexturePerLayer); mdb.AttachTo(toReturn, false); mdb.RelativeZ = zValue; toReturn.mMapLists.Add(mdb); } Section.EndContextAndTime(); FileManager.RelativeDirectory = oldRelativeDirectory; return(toReturn); }
void SaveSceneOk(Window callingWindow) { string fileName = ((FileWindow)callingWindow).Results[0]; SpriteEditorScene ses = SpriteEditorScene.FromScene(EditorData.Scene); ses.Save(fileName); }
public static void SaveActiveScene(string fileName) { SpriteEditorScene sceneSave = SpriteEditorScene.FromScene(mBlockingScene); sceneSave.Save(fileName); mBlockingScene.Name = fileName; }
public static SceneSave FromLayer(Layer layer) { FlatRedBall.Scene scene = new FlatRedBall.Scene(); scene.Sprites.AddRange(layer.Sprites); scene.Texts.AddRange(layer.Texts); scene.Sprites.AddRange(layer.ZBufferedSprites); SceneSave toReturn = new SceneSave(); SpriteEditorScene.SetFromScene(scene, toReturn); return(toReturn); }
public static void SaveScene(string fileName) { if (mScene == null) { GuiManager.ShowMessageBox("There's no scene to save.", "Error Saving"); } else { SpriteEditorScene spriteEditorScene = SpriteEditorScene.FromScene(mScene); spriteEditorScene.Save(fileName); } }
public static void LoadScene(string fileName) { if (mScene != null) { mScene.RemoveFromManagers(); mScene.Clear(); } SpriteEditorScene ses = SpriteEditorScene.FromFile(fileName); mScene = ses.ToScene(AppState.Self.PermanentContentManager); mScene.AddToManagers(); FileMenuWindow.AttemptEmitterAttachment(fileName); }
void CustomInitialize() { SpriteManager.Camera.UsePixelCoordinates(); SpriteManager.Camera.X = 129; SpriteManager.Camera.Y = -216; FlatRedBallServices.GraphicsOptions.TextureFilter = Microsoft.Xna.Framework.Graphics.TextureFilter.Point; SpriteEditorScene ses = SceneSave.FromFile("Content/Screens/TmxScreen/FinalFantasyScene.scnx".ToLowerInvariant()); scene = new Scene(); ses.SetScene <Sprite>(ContentManagerName, scene, SceneSettingOptions.ConvertZSeparatedSpritesIntoSpriteGrids); scene.Shift(new Vector3(0, 0, 0)); scene.AddToManagers(); TestLevel2.X -= 530; if (string.IsNullOrEmpty(TilbTest.MapLayers[0].Name)) { throw new Exception("Map layers names are not coming through"); } // Layer 0 should be called "LayerWithStuff" if (TmxWithEmptyLayers.MapLayers[0].Name != "LayerWithStuff") { throw new Exception("Having empty layers can screw up Layer names. " + "This layer should be named \"LayerWithStuff\" but it is instead named " + TmxWithEmptyLayers.MapLayers[0].Name); } TestRotatedTiles(); TestTileSizeOnMapWithObjects(); TestEntitiesInFolders(); TestCollisionLayerByType(); // Make the shapes visible, to make sure that they get removed when the screen is destroyed: foreach (var shapeCollection in TmxWithShapes.ShapeCollections) { shapeCollection.Visible = true; shapeCollection.AddToManagers(); } }
static bool SaveScene(string name, bool assetsRelativeToScene) { string oldRelativeDirectory = FileManager.RelativeDirectory; assetsRelativeToScene = true; if (assetsRelativeToScene) { FileManager.RelativeDirectory = FileManager.GetDirectory(name); } SpriteEditorScene ses = SpriteEditorScene.FromScene(SceneSaving); ses.AssetsRelativeToSceneFile = assetsRelativeToScene; ses.Save(name); FileManager.RelativeDirectory = oldRelativeDirectory; return(true); }
private AnimationChainListSave GetAnimationChainListFromScnxReference(NamedObjectSave referencedNos) { string sourceFileName = ContentDirectory + referencedNos.SourceFile; string sourceFileDirectory = FlatRedBall.IO.FileManager.GetDirectory(sourceFileName); AnimationChainListSave acls = null; SpriteEditorScene ses; if (System.IO.File.Exists(sourceFileName)) { ses = SpriteEditorScene.FromFile(sourceFileName); string truncatedName = referencedNos.SourceName.Substring(0, referencedNos.SourceName.LastIndexOf('(') - 1); SpriteSave spriteSave = ses.FindSpriteByName(truncatedName); if (spriteSave != null && !string.IsNullOrEmpty(spriteSave.AnimationChainsFile)) { acls = AnimationChainListSave.FromFile( sourceFileDirectory + spriteSave.AnimationChainsFile); } if (acls == null) { SpriteFrameSave sfs = ses.FindSpriteFrameSaveByName(truncatedName); if (sfs != null) { acls = AnimationChainListSave.FromFile( sourceFileDirectory + sfs.ParentSprite.AnimationChainsFile); } } } return(acls); }
public static void AutoSearchScn(Window callingWindow) { callingWindow.Parent.CloseWindow(); List <string> allFiles = FileManager.GetAllFilesInDirectory(System.IO.Directory.GetCurrentDirectory()); for (int i = allFiles.Count - 1; i > -1; i--) { if (FlatRedBall.IO.FileManager.GetExtension(allFiles[i]) != "scnx") { allFiles.RemoveAt(i); } } //throw new NotImplementedException("Feature not implemented. Complain on FlatRedBall forums"); foreach (string scnFile in allFiles) { SpriteEditorScene ses = SpriteEditorScene.FromFile(scnFile); foreach (SpriteSave ss in ses.SpriteList) { for (int i = EditorData.lastLoadedFile.emitters.Count - 1; i > -1; i--) { if (EditorData.lastLoadedFile.emitters[i].ParentSpriteName != null) { if (ss.Name == EditorData.lastLoadedFile.emitters[i].ParentSpriteName) { EditorData.LoadScene(scnFile); return; } } } } } }
private static void AddResetVariablesForSpriteOrSpriteFrame(NamedObjectSave nos, List <string> variables) { // todo - support resetting animation chains on Sprites that aren't using a .scnx if (nos.SourceType == SourceType.File && !string.IsNullOrEmpty(nos.SourceFile)) { string fullFile = ProjectManager.MakeAbsolute(nos.SourceFile); SpriteEditorScene ses = SpriteEditorScene.FromFile(fullFile); int endingIndex = nos.SourceName.LastIndexOf('('); string nameWithoutType = nos.SourceName.Substring(0, endingIndex - 1); SpriteSave ss = ses.FindSpriteByName(nameWithoutType); string animationChainFileName = ""; if (ss != null) { animationChainFileName = ss.AnimationChainsFile; } else { SpriteFrameSave sfs = ses.FindSpriteFrameSaveByName(nameWithoutType); if (sfs != null) { animationChainFileName = sfs.ParentSprite.AnimationChainsFile; } } if (!string.IsNullOrEmpty(animationChainFileName)) { variables.Add("CurrentChainName"); variables.Add("CurrentFrameIndex"); } } variables.Add("Alpha"); variables.Add("AlphaRate"); }
static object GetValueForPropertyInScene(SpriteEditorScene scene, string objectName, string property) { for (int i = 0; i < scene.SpriteFrameSaveList.Count; i++) { if (scene.SpriteFrameSaveList[i].ParentSprite.Name == objectName) { return(GetValueForPropertyOnObject(scene.SpriteFrameSaveList[i], property)); } } for (int i = 0; i < scene.SpriteGridList.Count; i++) { if (scene.SpriteGridList[i].Name == objectName) { return(GetValueForPropertyOnObject(scene.SpriteGridList[i], property)); } } for (int i = 0; i < scene.SpriteList.Count; i++) { if (scene.SpriteList[i].Name == objectName) { return(GetValueForPropertyOnObject(scene.SpriteList[i], property)); } } for (int i = 0; i < scene.TextSaveList.Count; i++) { if (scene.TextSaveList[i].Name == objectName) { return(GetValueForPropertyOnObject(scene.TextSaveList[i], property)); } } return(null); }
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); }
public static List <SourceReferencingFile> GetSourceReferencingFilesReferencedByAsset(string fileName, TopLevelOrRecursive topLevelOrRecursive, ErrorBehavior errorBehavior, ref string error, ref string verboseError) { string fileExtension = FileManager.GetExtension(fileName); List <SourceReferencingFile> referencedFiles = null; switch (fileExtension) { case "scnx": try { SpriteEditorScene ses = SpriteEditorScene.FromFile(fileName); referencedFiles = ses.GetSourceReferencingReferencedFiles(RelativeType.Absolute); } catch (Exception e) { error = "Error loading file " + fileName + ": " + e.Message; referencedFiles = new List <SourceReferencingFile>(); verboseError = e.ToString(); } break; default: referencedFiles = new List <SourceReferencingFile>(); break; } /**/ if (topLevelOrRecursive == TopLevelOrRecursive.Recursive) { //First we need to get a list of all referenced files List <string> filesToSearch = new List <string>(); try { // GetFilesReferencedByAsset can throw an error if the file doesn't // exist. But we don't really care if it's missing if it can't reference // others. I mean, sure we care, but it's not relevant here. Other systems // can check for that. if (CanFileReferenceOtherFiles(fileName)) { GetFilesReferencedByAsset(fileName, topLevelOrRecursive, filesToSearch); } } catch (Exception e) { if (errorBehavior == ErrorBehavior.ThrowException) { throw e; } else { error += e.Message + "\n"; } } if (filesToSearch != null) { for (int i = filesToSearch.Count - 1; i > -1; i--) { string errorForThisFile = ""; string verboseErrorForThisFile = ""; List <SourceReferencingFile> subReferencedFiles = GetSourceReferencingFilesReferencedByAsset(filesToSearch[i], topLevelOrRecursive, errorBehavior, ref errorForThisFile, ref verboseErrorForThisFile); // error may have already been set. If it has already been set, we don't want to dump more errors (which may just be duplicates anyway) if (string.IsNullOrEmpty(error)) { error += errorForThisFile; } if (subReferencedFiles != null) { referencedFiles.AddRange(subReferencedFiles); } } } } /**/ return(referencedFiles); }
public static List <string> GetFilesReferencedByAsset(string file, bool readRecursively) { string fileExtension = FileManager.GetExtension(file); List <string> referencedFiles = null; // = new List<string>(); switch (fileExtension) { #region Scene (.scnx) case "scnx": SpriteEditorScene ses = SpriteEditorScene.FromFile(file); referencedFiles = ses.GetReferencedFiles(RelativeType.Absolute); break; #endregion #region Emitter List (.emix) case "emix": EmitterSaveList esl = EmitterSaveList.FromFile(file); referencedFiles = esl.GetReferencedFiles(RelativeType.Absolute); break; #endregion #region SpriteRig (.srgx) case "srgx": SpriteRigSave srs = SpriteRigSave.FromFile(file); referencedFiles = srs.GetReferencedFiles(RelativeType.Absolute); break; #endregion #region AnimationChain List case "achx": AnimationChainListSave acls = AnimationChainListSave.FromFile(file); referencedFiles = acls.GetReferencedFiles(RelativeType.Absolute); break; #endregion #region Bitmap Font Generator Config File (.bmfc) case "bmfc": referencedFiles = new List <string>(); // These are only referenced IF they actually exist string referencedFileToAdd = FileManager.RemoveExtension(file) + ".png"; if (FileManager.FileExists(referencedFileToAdd)) { referencedFiles.Add(referencedFileToAdd); } referencedFileToAdd = FileManager.RemoveExtension(file) + ".fnt"; if (FileManager.FileExists(referencedFileToAdd)) { referencedFiles.Add(referencedFileToAdd); } break; #endregion #region X File (.x) case "x": referencedFiles = GetTextureReferencesInX(file); break; #endregion #region WME File (.wme) case "wme": referencedFiles = new List <string>(); WMELoader.GetReferencedFiles(file, referencedFiles, RelativeType.Absolute); break; #endregion #region Spline List (.slpx) - falls to default case "splx": #endregion default: referencedFiles = new List <string>(); break; } if (readRecursively) { for (int i = referencedFiles.Count - 1; i > -1; i--) { referencedFiles.AddRange(GetFilesReferencedByAsset(referencedFiles[i], true)); } } // Files may include "../", so let's get rid of that stuff for (int i = 0; i < referencedFiles.Count; i++) { referencedFiles[i] = FileManager.Standardize(referencedFiles[i], "", false); } return(referencedFiles); }
public void PerformLoadScn(string fileName, bool replace) { // This method is public because this method is called if the user drags a // .scnx onto the SpriteEditor #region Mark how many objects before loading in case there is an insertion. // If there is an insertion, only the newly-added objects should have post load // logic performed on them int numSpritesBefore = GameData.Scene.Sprites.Count; int numOfSGsBefore = GameData.Scene.SpriteGrids.Count; int numOfSpriteFramesBefore = GameData.Scene.SpriteFrames.Count; int numberOfPositionedModels = GameData.Scene.PositionedModels.Count; #endregion SpriteEditorScene tempSES = SpriteEditorScene.FromFile(fileName); #region See if there are any Models that reference files that aren't on disk string sceneDirectory = FileManager.GetDirectory(fileName); for (int i = 0; i < tempSES.PositionedModelSaveList.Count; i++) { PositionedModelSave modelSave = tempSES.PositionedModelSaveList[i]; if (!FileManager.FileExists(modelSave.ModelFileName)) { // See if there's a .x with that name if (FileManager.FileExists(sceneDirectory + modelSave.ModelFileName + ".x")) { modelSave.ModelFileName = modelSave.ModelFileName + ".x"; } } } #endregion #region Now, see if there are any other files that haven't been found and create the error window List <string> texturesNotFound = tempSES.GetMissingFiles(); if (texturesNotFound.Count != 0) { OkListWindow okListWindow = new OkListWindow( "There are files that the .scnx references which cannot be located.", "Error loading .scnx"); foreach (string file in texturesNotFound) { okListWindow.AddItem(file); } return; } #endregion #region if replacing, clear the old scene out if (replace) { SpriteManager.RemoveScene(GameData.Scene, true); FlatRedBallServices.Unload(GameData.SceneContentManager); tempSES.SetCamera(GameData.Camera); #if FRB_MDX if (tempSES.CoordinateSystem == FlatRedBall.Math.CoordinateSystem.RightHanded) { GameData.Camera.Z *= -1; } #endif GameData.EditorProperties.PixelSize = tempSES.PixelSize; GuiData.EditorPropertiesGrid.Refresh(); // 4/16/2011: The following line of code // was causing errors when saving the .scnx // file through CTRL+S. Taking it out because // I don't see why we need this anyway. // GameData.FileName = FileManager.RemoveExtension(fileName); GameData.FileName = fileName; FlatRedBallServices.Owner.Text = "SpriteEditor - Currently editing " + GameData.FileName; GuiData.MenuStrip.LastFileTypeLoaded = FileManager.GetExtension(fileName); } #endregion Scene newlyLoadedScene = tempSES.ToScene <EditorSprite>(GameData.SceneContentManager); GameData.Scene.AddToThis(newlyLoadedScene); // This caused // a double-add. // Not sure why we're // adding GameData.Scene. //GameData.Scene.AddToManagers(); newlyLoadedScene.AddToManagers(); GuiData.ListWindow.RefreshListsShown(); #region Add the used Textures to the texture ListBox for (int i = numSpritesBefore; i < GameData.Scene.Sprites.Count; i++) { GuiData.ListWindow.Add(GameData.Scene.Sprites[i].Texture); GuiData.ListWindow.Add(GameData.Scene.Sprites[i].AnimationChains); } for (int i = numOfSpriteFramesBefore; i < GameData.Scene.SpriteFrames.Count; i++) { GuiData.ListWindow.Add(GameData.Scene.SpriteFrames[i].Texture); GuiData.ListWindow.Add(GameData.Scene.SpriteFrames[i].AnimationChains); } for (int i = numOfSGsBefore; i < GameData.Scene.SpriteGrids.Count; i++) { SpriteGrid sg = GameData.Scene.SpriteGrids[i]; sg.PopulateGrid(GameData.Camera.X, GameData.Camera.Y, 0f); sg.RefreshPaint(); List <Texture2D> texturesToAdd = sg.GetUsedTextures(); foreach (Texture2D tex in texturesToAdd) { GuiData.ListWindow.Add(tex); } } #endregion CheckForExtraFiles(FileManager.RemoveExtension(fileName)); GameData.Scene.Sprites.SortZInsertionDescending(); if (tempSES.AssetsRelativeToSceneFile) { FileManager.ResetRelativeToCurrentDirectory(); } }
public bool SaveScene(string name, bool areAssetsRelativeToScene) { string oldRelativeDirectory = FileManager.RelativeDirectory; if (areAssetsRelativeToScene) { FileManager.RelativeDirectory = FileManager.GetDirectory(name); } // This will reduce the file size if we use a lot of SpriteGrids for (int i = 0; i < GameData.Scene.SpriteGrids.Count; i++) { GameData.Scene.SpriteGrids[i].TrimGrid(); } SpriteEditorScene ses = SpriteEditorScene.FromScene(GameData.Scene); ses.AssetsRelativeToSceneFile = areAssetsRelativeToScene; ses.Save(name); // TODO: Need to check if file saving worked properly. bool wasSceneSaved = true; if (wasSceneSaved) { #region create the SpriteEditorSceneProperties GameData.SpriteEditorSceneProperties.SetFromRuntime( GameData.Camera, GameData.BoundsCamera, GameData.EditorProperties.PixelSize, GuiData.CameraBoundsPropertyGrid.Visible ); GameData.SpriteEditorSceneProperties.WorldAxesVisible = GameData.EditorProperties.WorldAxesDisplayVisible; GameData.SpriteEditorSceneProperties.TextureDisplayRegionsList.Clear(); for (int k = 0; k < GuiData.ListWindow.TextureListBox.Count; k++) { TextureDisplayRegionsSave tdrs = new TextureDisplayRegionsSave(); CollapseItem item = GuiData.ListWindow.TextureListBox[k]; // The FileManager's relative directory has been set, so we just have to call MakeRelative and it should work fine tdrs.TextureName = FileManager.MakeRelative(((Texture2D)item.ReferenceObject).SourceFile()); tdrs.DisplayRegions = GuiData.ListWindow.CreateTextureReferences(item); GameData.SpriteEditorSceneProperties.TextureDisplayRegionsList.Add(tdrs); } GameData.SpriteEditorSceneProperties.Save(FileManager.RemoveExtension(name) + ".sep"); #endregion FlatRedBallServices.Owner.Text = "SpriteEditor - Currently editing " + name; // As mentioned in the othe area where GameData.Filename is set, I'm not // sure why we were removing the extension. I've commented out the extension // removal since it causes problems with CTRL+S // name = FileManager.RemoveExtension(name); GameData.FileName = name; if (SavedSuccess != null) { SavedSuccess(this, null); } } FileManager.RelativeDirectory = oldRelativeDirectory; if (!wasSceneSaved) { GuiManager.ShowMessageBox("Could not save " + GameData.FileName + ". Is the file readonly?", "Error Saving"); } return(wasSceneSaved); }
public static List <string> GetNamedObjectsIn(string fileName) { string extension = FileManager.GetExtension(fileName); List <string> listToReturn = new List <string>(); switch (extension) { #region case Scene (scnx) case "scnx": SpriteEditorScene ses = SpriteEditorScene.FromFile(fileName); for (int i = 0; i < ses.PositionedModelSaveList.Count; i++) { listToReturn.Add(ses.PositionedModelSaveList[i].Name + " (PositionedModel)"); } for (int i = 0; i < ses.SpriteFrameSaveList.Count; i++) { listToReturn.Add(ses.SpriteFrameSaveList[i].ParentSprite.Name + " (SpriteFrame)"); } for (int i = 0; i < ses.SpriteGridList.Count; i++) { listToReturn.Add(ses.SpriteGridList[i].Name + " (SpriteGrid)"); } for (int i = 0; i < ses.SpriteList.Count; i++) { listToReturn.Add(ses.SpriteList[i].Name + " (Sprite)"); } for (int i = 0; i < ses.TextSaveList.Count; i++) { listToReturn.Add(ses.TextSaveList[i].Name + " (Text)"); } break; #endregion #region case ShapeCollection (shcx) case "shcx": ShapeCollectionSave scs = ShapeCollectionSave.FromFile(fileName); for (int i = 0; i < scs.AxisAlignedCubeSaves.Count; i++) { listToReturn.Add(scs.AxisAlignedCubeSaves[i].Name + " (AxisAlignedCube)"); } for (int i = 0; i < scs.AxisAlignedRectangleSaves.Count; i++) { listToReturn.Add(scs.AxisAlignedRectangleSaves[i].Name + " (AxisAlignedRectangle)"); } for (int i = 0; i < scs.CircleSaves.Count; i++) { listToReturn.Add(scs.CircleSaves[i].Name + " (Circle)"); } for (int i = 0; i < scs.PolygonSaves.Count; i++) { listToReturn.Add(scs.PolygonSaves[i].Name + " (Polygon)"); } for (int i = 0; i < scs.SphereSaves.Count; i++) { listToReturn.Add(scs.SphereSaves[i].Name + " (Sphere)"); } break; #endregion #region NodeNetwork (nntx) case "nntx": NodeNetworkSave nns = NodeNetworkSave.FromFile(fileName); for (int i = 0; i < nns.PositionedNodes.Count; i++) { listToReturn.Add(nns.PositionedNodes[i].Name + " (PositionedNode)"); } break; #endregion #region EmitterList (emix) case "emix": EmitterSaveList esl = EmitterSaveList.FromFile(fileName); for (int i = 0; i < esl.emitters.Count; i++) { listToReturn.Add(esl.emitters[i].Name + " (Emitter)"); } break; #endregion #region Case AnimationChainList (achx) case "achx": AnimationChainListSave acls = AnimationChainListSave.FromFile(fileName); for (int i = 0; i < acls.AnimationChains.Count; i++) { listToReturn.Add(acls.AnimationChains[i].Name + " (AnimationChain)"); } break; #endregion #region Case SplineList (splx) case "splx": SplineSaveList ssl = SplineSaveList.FromFile(fileName); for (int i = 0; i < ssl.Splines.Count; i++) { listToReturn.Add(ssl.Splines[i].Name + " (Spline)"); } break; #endregion } return(listToReturn); }
public void TestLoading() { SpriteEditorScene.ManualDeserialization = true; SpriteEditorScene.FromFile("Content/BorwnClayout.scnx"); }