Exemplo n.º 1
0
        public void AddUndefinedFrameset()
        {
            int i = 0;
            string name = "anim_0";

            while(FramesetExists(name))
            {
                name = "anim_" + (++i).ToString();
            }

            SpriteFrameset fSet = new SpriteFrameset(name, 1);
            fSet.Frames[0].Size = TextureSize();

            _framesets.Add(fSet);
        }
Exemplo n.º 2
0
        public void FromXml(string inputData)
        {
            try
            {
                XmlDocument xmlDoc = new XmlDocument();

                if(File.Exists(inputData))
                {
                    //Debug.Log("Fetching XML from file");
                    inputData = File.ReadAllText(inputData, Encoding.UTF8);
                }

                xmlDoc.LoadXml(inputData.Trim());

                XmlNodeList SPRITE = xmlDoc.GetElementsByTagName("sprite");
                if(SPRITE.Count == 1)
                {
                    //string tName = nodeSPRITE[0].Attributes["texture"];
                    //string mName = nodeSPRITE[0].Attributes["material"];

                    //reset prev data
                    Reset();

                    if(SPRITE[0].Attributes["texture"] != null)
                    {
                        SetTextureFromResource(Path.GetFileNameWithoutExtension(SPRITE[0].Attributes["texture"].Value));
                    }

                    if(SPRITE[0].Attributes["material"] != null)
                    {
                        SetMaterialFromResource(Path.GetFileNameWithoutExtension(SPRITE[0].Attributes["material"].Value));
                    }

                    XmlNodeList FRAMESETS = SPRITE[0].SelectNodes("frameset");

                    foreach(XmlNode n in FRAMESETS)
                    {
                        SpriteFrameset fSet = new SpriteFrameset();

                        if(n.Attributes["name"] != null)
                        {
                            fSet.Name = n.Attributes["name"].Value;
                        }

                        if(n.Attributes["loop"] != null)
                        {
                            int intVal;

                            if(n.Attributes["loop"].Value == "once")
                            {
                                fSet.LoopType = SpriteFramesetLoopType.Counter;
                                fSet.LoopCount = 1;
                            }
                            else if(n.Attributes["loop"].Value == "infinite")
                            {
                                fSet.IsInfinite = true;
                            }
                            else if(int.TryParse(n.Attributes["loop"].Value, out intVal))
                            {
                                fSet.LoopCount = intVal;
                            }
                        }

                        XmlNodeList FRAMES = n.SelectNodes("frame");

                        foreach(XmlNode _n in FRAMES)
                        {
                            int x = 0; int y = 0; int w = 0; int h = 0; float d = 0f;

                            if(_n.Attributes["x"] != null)
                            {
                                int.TryParse(_n.Attributes["x"].Value, out x);
                            }

                            if(_n.Attributes["y"] != null)
                            {
                                int.TryParse(_n.Attributes["y"].Value, out y);
                            }

                            if(_n.Attributes["width"] != null)
                            {
                                int.TryParse(_n.Attributes["width"].Value, out w);
                            }

                            if(_n.Attributes["height"] != null)
                            {
                                int.TryParse(_n.Attributes["height"].Value, out h);
                            }

                            if(_n.Attributes["duration"] != null)
                            {
                                float.TryParse(_n.Attributes["duration"].Value, out d);
                            }

                            fSet.AddFrame(x, y, w, h, d);
                        }

                        AddFrameset(fSet);
                    }

                }

            }
            catch(XmlException e)
            {
                Debug.Log(e.Message);
            }
        }
Exemplo n.º 3
0
        public void AddFrameset(SpriteFrameset frameset)
        {
            //_animationCollectionKeys.Add(name);
            //_animationCollectionElements.Add(animation);

            _framesets.Add(frameset);
        }
Exemplo n.º 4
0
        void GUIDrawAnimList()
        {
            EditorGUILayout.BeginVertical();

            //Animations list
            _guivarAnimListScroll = EditorGUILayout.BeginScrollView(_guivarAnimListScroll, _guistyleAnimListView);

            GUILayout.Label("Animations");

            //if there are framesets
            if(_framesetsNames.Count > 0)
            {
                int i = GUILayout.SelectionGrid
                (
                    _framesetIndex,
                    _framesetsNames.ToArray(),
                    1
                );

                if( i != _framesetIndex)
                {
                    _framesetIndex = i;
                    _frameIndex = 0;

                    _frameset = _sprite.Framesets[_framesetIndex];
                    _frame = _sprite.Framesets[_framesetIndex].Frames[_frameIndex];
                    //if(_framesetIndex >= 0 && _framesetIndex < _sprite.FramesetsCount())
                    //{
                    //	_frameIndex = 0;
                    //}
                }
                /*
                if(_framesetIndex < 0)
                {
                    _framesetIndex = 0;
                }

                _framesetIndex = GUILayout.SelectionGrid
                (
                    _framesetIndex,
                    _framesetsNames.ToArray(),
                    1
                );

                if(_framesetIndex >= 0 && _framesetIndex < _sprite.FramesetsCount())
                {
                    _frameset = _sprite.Framesets[_framesetIndex];

                    _frameIndex = -1;
                    if(_frameset.FramesCount() > 0)
                    {
                        _frameIndex = 0;
                        _frame = _frameset.Frames[_frameIndex];
                    }
                }
                */
            }
            else
            {
                if(GUILayout.Button("New Frameset", GuiHeight(64)))
                {
                    AddNewFrameset();
                }
            }

            EditorGUILayout.EndScrollView();

            EditorGUILayout.EndVertical();
        }
Exemplo n.º 5
0
 void SelectFrameset(int index)
 {
     if(_sprite != null && index >= 0 && index < _sprite.FramesetsCount())
     {
         _frameset = _sprite.GetFrameset(index);
         _framesetIndex = index;
     }
 }
Exemplo n.º 6
0
        void OpenSpriteToEdit(string fileName)
        {
            if(File.Exists(fileName))
            {
                _sprite = null;
                _frameset = null;
                _frame = null;
                _spriteSrc = "";

                _sprite = new Sprite();
                _sprite.FromXml(fileName);
                _guivarActiveTabIndex = 0;
                //_sprResourcesList = null;
                _guivarFilmScroll = Vector2.zero;
                _framesetsNames = _sprite.GetFramesetsNames();
                _framesetIndex = -1;
                _frameIndex = -1;
                _texture = _sprite.Texture;
                //_guivarFilmScrollView = new Dictionary<string, Vector2>();

                /*
                foreach(SpriteFrameset fSet in _sprite.GetFramesets())
                {
                    _guivarFilmScrollView.Add(fSet.Name, Vector2.zero);
                }
                */

                SelectFrameset(0);
                SelectFrame(0);

                _spriteSrc = fileName;
            }
            /*
            _guivarFilmFoldout = new Dictionary<string, bool>();

            foreach(SpriteFrameset fSet in _sprite.GetFramesets())
            {
                _guivarFilmFoldout.Add(fSet.Name, false);
            }
            */
        }
Exemplo n.º 7
0
        /*
        void GUIDrawFrameset(SpriteFrameset fSet)
        {
            GUIDrawFrameset(fSet, 0);
        }
        */
        void GUIDrawFrameset(SpriteFrameset fSet)
        {
            //EditorGUILayout.BeginHorizontal(_guistyleStretchedWidth);
            //_guivarLastRect = GUILayoutUtility.GetLastRect();

            //GUILayout.BeginArea(new Rect(0,0, GetCanvasWidth(), 200));

            //GUIDrawFramesetSpacer();

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("Name: ", _guistyleTextRightLabel, GuiWidth(45));
            GUILayout.TextField(fSet.Name, GuiWidth(120));
            //GUILayout.Button("Apply", _guistyleMiniButton);

            float durVal;
            GUILayout.Label("Duration: ", _guistyleTextRightLabel, GuiWidth(70));
            if(float.TryParse(GUILayout.TextField(fSet.Duration.ToString(), GuiWidth(40)), out durVal))
            {
                fSet.Duration = durVal;
            }
            //GUILayout.Button("Apply", _guistyleMiniButton);

            int loopVal;
            GUILayout.Label("Loop count: ", _guistyleTextRightLabel, GuiWidth(80));
            if(int.TryParse(GUILayout.TextField((fSet.IsInfinite ? 0 : fSet.LoopCount).ToString(), GuiWidth(40)), out loopVal))
            {
                fSet.LoopCount = loopVal;
            }

            fSet.IsInfinite = GUILayout.Toggle(fSet.IsInfinite, "infinite");

            if(GUILayout.Button("Apply changes", _guistyleMiniButtonMedium))
            {
                _sprite.ToXML(SPRITES_DIR + "/" + "save-test" + ".xml");
            }

            EditorGUILayout.EndHorizontal();

            //EditorGUILayout.BeginHorizontal();

            _guivarFilmScrollView[fSet.Name] = GUILayout.BeginScrollView(_guivarFilmScrollView[fSet.Name], _guistyleFilmScrollView); //GuiHeight((int)_guistyleFilmFrame.fixedHeight + 60)
            EditorGUILayout.BeginHorizontal();
            int i = 0;
            foreach(SpriteFrame f in fSet.Frames)
            {
                EditorGUILayout.BeginVertical(GuiWidth((int)_guistyleFilmFrame.fixedWidth));

                //r.width = _guistyleFilmFrame.fixedWidth;
                //r.height = _guistyleFilmFrame.fixedHeight;

                //r.x = r.width * i;

                //EditorGUI.DrawRect(r, (i % 2 == 0 ? Color.grey : Color.white));
                GUILayout.Box("", i == 1 ? _guistyleFilmFrameActive : _guistyleFilmFrame);

                //r = GUILayoutUtility.GetLastRect();

                Rect r = GUILayoutUtility.GetLastRect();
                Vector2 c = r.center;
                float a = 1f;

                if(f.Width > 124f || f.Height > 96f)
                {
                    a = f.Width > f.Height ? 124f / f.Width : 96f / f.Height;
                }

                r.width = Mathf.Floor(a * f.Width);
                r.height = Mathf.Floor(a * f.Height);
                r.x = c.x - Mathf.Floor(r.width / 2f);
                r.y = c.y - Mathf.Floor(r.height / 2f); // + 168 * setIndex;

                //r.xMin += 1;
                //r.xMax -= 1;
                //r.y = 168 * setIndex;
                //r.yMin += 16;
                //r.yMax -= 16;

                GUI.DrawTextureWithTexCoords(r, _sprite.Texture, f.GetNormalizedUVCoordinates(_sprite.Texture));
                //GUI.DrawTexture(r, _sprite.Texture);
                //GUILayout.Label(GUILayoutUtility.GetLastRect().ToString());

                //int fX, fY, fW, fH;

                int incSize = 0; //Event.current.control ? 10 : 1;

                GUIDrawValControl(ref f.X, "X", incSize, 0, _sprite.TextureWidth());
                GUIDrawValControl(ref f.Y, "Y", incSize, 0, _sprite.TextureWidth());
                GUIDrawValControl(ref f.Width, "Width", incSize, 0, _sprite.TextureWidth() - f.X);
                GUIDrawValControl(ref f.Height, "Height", incSize, 0, _sprite.TextureHeight() - f.Y);
                //GUIDrawValControl(ref f.Height, "Time:", 0.1f, 0, _sprite.TextureHeight() - f.Y);
                //GUIDrawValControl(f.Width, "X", 1, 0, _sprite.TextureWidth());

            //				EditorGUILayout.BeginHorizontal();
            //				GUILayout.Label("X");
            //				GUILayout.Button("", _guistyleValControlLeftButton);
            //				GUILayout.TextField(f.X.ToString(), _guistyleValControlInput);
            //				GUILayout.Button("", _guistyleValControlRightButton);
            //				EditorGUILayout.EndHorizontal();
            //
            //				EditorGUILayout.BeginHorizontal();
            //				GUILayout.Label("Y");
            //				GUILayout.Button("", _guistyleValControlLeftButton);
            //				GUILayout.TextField(f.Y.ToString(), _guistyleValControlInput);
            //				GUILayout.Button("", _guistyleValControlRightButton);
            //				EditorGUILayout.EndHorizontal();
            //
            //				EditorGUILayout.BeginHorizontal();
            //				GUILayout.Label("Width");
            //				GUILayout.Button("", _guistyleValControlLeftButton);
            //				GUILayout.TextField(f.Width.ToString(), _guistyleValControlInput);
            //				GUILayout.Button("", _guistyleValControlRightButton);
            //				EditorGUILayout.EndHorizontal();
            //
            //				EditorGUILayout.BeginHorizontal();
            //				GUILayout.Label("Height");
            //				GUILayout.Button("", _guistyleValControlLeftButton);
            //				GUILayout.TextField(f.Height.ToString(), _guistyleValControlInput);
            //				GUILayout.Button("", _guistyleValControlRightButton);
            //				EditorGUILayout.EndHorizontal();

                /***
                EditorGUILayout.BeginHorizontal();
                GUILayout.Label("X");
                if(int.TryParse(GUILayout.TextField(f.X.ToString(), GuiWidth(40)), out fX))
                {
                    f.X = fX;
                }

                GUILayout.Label("W");
                if(int.TryParse(GUILayout.TextField(f.Width.ToString(), GuiWidth(40)), out fW))
                {
                    f.Width = fW;
                }
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                GUILayout.Label("Y");
                if(int.TryParse(GUILayout.TextField(f.Y.ToString(), GuiWidth(40)), out fY))
                {
                    f.Y = fY;
                }

                GUILayout.Label("H");
                if(int.TryParse(GUILayout.TextField(f.Height.ToString(), GuiWidth(40)), out fH))
                {
                    f.Height = fH;
                }
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                GUILayout.Label("[ " + i.ToString() + " ]");

                float fDurVal;
                GUILayout.Box("", _guistyleIcoTimer);
                if(float.TryParse(GUILayout.TextField(f.Duration.ToString(), GuiWidth(40)), out fDurVal))
                {
                    f.Duration = fDurVal;
                }
                EditorGUILayout.EndHorizontal();
                ***/

                EditorGUILayout.EndVertical();

                i++;
            }
            EditorGUILayout.EndHorizontal();
            GUILayout.EndScrollView();

            //EditorGUILayout.EndHorizontal();

            //GUILayout.Box(GUILayoutUtility.GetLastRect().ToString(),GuiWidth(700));
            /*
            _guivarFilmFoldout[fSet.Name] = EditorGUILayout.Foldout(_guivarFilmFoldout[fSet.Name], "Animation: " + fSet.Name, _guistyleFilmFrameFoldout);
            //EditorGUILayout.EndHorizontal();

            if(_guivarFilmFoldout[fSet.Name])
            {
                GUILayout.Label(_guivarLastRect.ToString());

                EditorGUILayout.BeginHorizontal();

                foreach(SpriteFrame f in fSet.GetFrames())
                {
                    //EditorGUILayout.BeginVertical(_guistyleFilmFrame);

                    EditorGUILayout.BeginHorizontal();
                    GUILayout.Label("Time: ", GUILayout.Width(50));
                    f.Duration = Mathf.Max(0f, EditorGUILayout.FloatField(f.Duration));
                    EditorGUILayout.EndHorizontal();

                    //EditorGUILayout.EndVertical();
                }

                EditorGUILayout.EndHorizontal();
            }
            */
        }