private void CustomInitialize() { this.YAcceleration = -40; spriteRigSave = SpriteRigSave.FromFile("Content/Entities/Player/ballMan.srgx"); spriteRig = spriteRigSave.ToSpriteRig("Global"); SpriteManager.AddSpriteRig(spriteRig); spriteRig.SetPose(poseChainName, secondsFromTheStart); spriteRig.Animate = true; spriteRig.AnimationSpeed = 3.0f; spriteRig.ScaleBy(0.3f, true); spriteRig.Cycle = true; spriteRig.Root.RelativeRotationZ = 90; }
public static void saveSpriteRig(Window callingWindow) { mAssetsRelativeToSpriteRig = (callingWindow.FindByName("scnRelativeAssets") as ToggleButton).IsPressed; string fileName = ((FileWindow)callingWindow).Results[0]; if (mAssetsRelativeToSpriteRig) { MessageBox mb; string pathOfSrg = FileManager.GetDirectory(fileName); foreach (Sprite s in GuiData.srSaveOptions.joints) { if (!((s.Texture.Name == null) || FileManager.IsRelativeTo(s.Texture.Name, pathOfSrg))) { mb = GuiManager.ShowMessageBox(string.Concat(new object[] { "Cannot save ", fileName, " because the texture ", s.Texture, " is not relative to the .srgx file." }), "Texture not relative."); return; } } foreach (Sprite s in GuiData.srSaveOptions.bodySprites) { if (!FileManager.IsRelativeTo(s.Texture.Name, pathOfSrg)) { mb = GuiManager.ShowMessageBox(string.Concat(new object[] { "Cannot save ", fileName, " because the texture ", s.Texture, " is not relative to the .srgx file." }), "Texture not relative."); return; } } if ((GuiData.srSaveOptions.root != null) && !FileManager.IsRelativeTo(GuiData.srSaveOptions.root.Texture.Name, pathOfSrg)) { mb = GuiManager.ShowMessageBox("Cannot save " + fileName + " because the texture " + GuiData.srSaveOptions.root.Texture.Name + " is not relative to the .srgx file.", "Texture not relative."); return; } } SpriteRigSave srs = new SpriteRigSave(GuiData.srSaveOptions.joints, GuiData.srSaveOptions.bodySprites, GuiData.srSaveOptions.poseChains, GuiData.srSaveOptions.root, mAssetsRelativeToSpriteRig); srs.JointsVisible = GuiData.srSaveOptions.jointsVisible.IsPressed; srs.RootVisible = GuiData.srSaveOptions.rootVisible.IsPressed; GuiData.srSaveOptions.joints.Visible = true; if (GuiData.srSaveOptions.root != null) { GuiData.srSaveOptions.root.Visible = true; } srs.Save(fileName); }
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 static void saveSpriteRig(Window callingWindow) { mAssetsRelativeToSpriteRig = (callingWindow.FindByName("scnRelativeAssets") as ToggleButton).IsPressed; string fileName = ((FileWindow)callingWindow).Results[0]; if (mAssetsRelativeToSpriteRig) { MessageBox mb; string pathOfSrg = FileManager.GetDirectory(fileName); foreach (Sprite s in GuiData.srSaveOptions.joints) { if (!((s.Texture.Name == null) || FileManager.IsRelativeTo(s.Texture.Name, pathOfSrg))) { mb = GuiManager.ShowMessageBox(string.Concat(new object[] { "Cannot save ", fileName, " because the texture ", s.Texture, " is not relative to the .srgx file." }), "Texture not relative."); return; } } foreach (Sprite s in GuiData.srSaveOptions.bodySprites) { if (!FileManager.IsRelativeTo(s.Texture.Name, pathOfSrg)) { mb = GuiManager.ShowMessageBox(string.Concat(new object[] { "Cannot save ", fileName, " because the texture ", s.Texture, " is not relative to the .srgx file." }), "Texture not relative."); return; } } if ((GuiData.srSaveOptions.root != null) && !FileManager.IsRelativeTo(GuiData.srSaveOptions.root.Texture.Name, pathOfSrg)) { mb = GuiManager.ShowMessageBox("Cannot save " + fileName + " because the texture " + GuiData.srSaveOptions.root.Texture.Name + " is not relative to the .srgx file.", "Texture not relative."); return; } } SpriteRigSave srs = new SpriteRigSave(GuiData.srSaveOptions.joints, GuiData.srSaveOptions.bodySprites, GuiData.srSaveOptions.poseChains, GuiData.srSaveOptions.root, mAssetsRelativeToSpriteRig); srs.JointsVisible = GuiData.srSaveOptions.jointsVisible.IsPressed; srs.RootVisible = GuiData.srSaveOptions.rootVisible.IsPressed; GuiData.srSaveOptions.joints.Visible = true; if (GuiData.srSaveOptions.root != null) { GuiData.srSaveOptions.root.Visible = true; } srs.Save(fileName); }
public static void LoadSpriteRigOk(Window callingWindow) { #region Load the SpriteRig EditorSprite es; string fileName = ((FileWindow)callingWindow).Results[0]; SpriteRigSave srs = SpriteRigSave.FromFile(fileName); SpriteList loadedSprites = new SpriteList(); SpriteRig spriteRig = srs.ToSpriteRig(GameData.SceneContentManager); #endregion #region Play some Pose so that the SpriteRig has a proper pose and texture coordinates // Play and stop an animation to get the texture coordinates set up in case // the SpriteRig has texture coords defined in its AnimationChains if (spriteRig.PoseChains.Count != 0) { spriteRig.SetPoseChain(spriteRig.PoseChains[0]); spriteRig.Animate = true; spriteRig.SetPositionAtTimeFromAnimationStart(0); spriteRig.Animate = false; } #endregion GuiData.srSaveOptions.joints = new SpriteList(); GuiData.srSaveOptions.bodySprites = new SpriteList(); GuiData.srSaveOptions.joints.Clear(); GuiData.srSaveOptions.bodySprites.Clear(); string oldRelativeDirectory = FileManager.RelativeDirectory; FileManager.RelativeDirectory = FileManager.GetDirectory(fileName); foreach (Sprite regularSprite in spriteRig.Joints) { es = new EditorSprite(); es.SetFromRegularSprite(regularSprite); GameData.Scene.Sprites.Add(es); SpriteManager.AddSprite(es); loadedSprites.AddOneWay(es); GuiData.srSaveOptions.joints.Add(es); } foreach (Sprite regularSprite in spriteRig.BodySprites) { es = new EditorSprite(); es.SetFromRegularSprite(regularSprite); GameData.Scene.Sprites.Add(es); SpriteManager.AddSprite(es); loadedSprites.AddOneWay(es); GuiData.srSaveOptions.bodySprites.Add(es); } // The root is not part of the body Sprites, but it should be if (spriteRig.Root != null && GameData.Scene.Sprites.Contains(spriteRig.Root) == false) { es = new EditorSprite(); es.SetFromRegularSprite(spriteRig.Root); GameData.Scene.Sprites.Add(es); SpriteManager.AddSprite(es); loadedSprites.AddOneWay(es); GuiData.srSaveOptions.bodySprites.Add(es); } if (spriteRig.Root != null) { GuiData.srSaveOptions.root = GuiData.srSaveOptions.bodySprites.FindByName(spriteRig.Root.Name); GuiData.srSaveOptions.bodySprites.Remove(GuiData.srSaveOptions.root); } GuiData.srSaveOptions.poseChains = spriteRig.PoseChains; if (srs.JointsVisible) { GuiData.srSaveOptions.jointsVisible.Press(); } else { GuiData.srSaveOptions.jointsVisible.Unpress(); } if (srs.RootVisible) { GuiData.srSaveOptions.rootVisible.Press(); } else { GuiData.srSaveOptions.rootVisible.Unpress(); } FileManager.RelativeDirectory = oldRelativeDirectory; string oldRelative = FileManager.RelativeDirectory; if (srs.AssetsRelativeToFile) { FileManager.RelativeDirectory = FileManager.GetDirectory(fileName); } FileManager.RelativeDirectory = oldRelative; foreach (SpriteSave ss in srs.Joints) { srs.BodySprites.Add(ss); } for (int i = 0; i < loadedSprites.Count; i++) { if (loadedSprites[i].PixelSize > 0f) { ((EditorSprite)loadedSprites[i]).ConstantPixelSizeExempt = false; } else { ((EditorSprite)loadedSprites[i]).ConstantPixelSizeExempt = true; } if (loadedSprites[i].Texture.texture != null) { GuiData.ListWindow.Add(loadedSprites[i].Texture); } string parentName = ""; Sprite matchingSprite = spriteRig.BodySprites.FindByName(loadedSprites[i].Name); if (matchingSprite == null) { matchingSprite = spriteRig.Joints.FindByName(loadedSprites[i].Name); } // parent may be null if there is no root if (matchingSprite != null && matchingSprite.Parent != null) { parentName = matchingSprite.Parent.Name; loadedSprites[i].AttachTo(loadedSprites.FindByName(parentName), false); } } GameData.Scene.Sprites.SortZInsertionDescending(); AskToSearchForReplacements(((FileWindow)callingWindow).Results[0]); }