Beispiel #1
0
        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;
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);

        }
Beispiel #5
0
        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]);
        }