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); }
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); } }
public void AddFrameset(SpriteFrameset frameset) { //_animationCollectionKeys.Add(name); //_animationCollectionElements.Add(animation); _framesets.Add(frameset); }
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(); }
void SelectFrameset(int index) { if(_sprite != null && index >= 0 && index < _sprite.FramesetsCount()) { _frameset = _sprite.GetFrameset(index); _framesetIndex = index; } }
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); } */ }
/* 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(); } */ }