protected override void LoadContent() { base.LoadContent(); spriteBatch = new SpriteBatch(GraphicsDevice); spriteFont = Content.Load <SpriteFont>(FontName); Vector2 charPosition = new Vector2(Width / 2.0f, Height / 1.5f); foreach (var pair in Scmls) { string scmlPath = pair.Key; string spriterName = pair.Value; string data = File.ReadAllText(scmlPath); Spriter spriter = SpriterParser.Parse(data); foreach (SpriterEntity entity in spriter.Entities) { var animator = new MonogameSpriterAnimator(entity, charPosition, spriteBatch, GraphicsDevice); RegisterTextures(animator, spriter, spriterName); animators.Add(animator); } } currentAnimator = animators.First(); currentAnimator.EventTriggered += CurrentAnimator_EventTriggered; }
public void OnEnable() { if (Spriter != null) { SpriterParser.Init(Spriter); } }
public void Init_IfCalledOnASpriterWithAFullHierarchy_SetsTimelineKeyObjectInfosToThePivotsFromTheFiles() { var spriter = new Spriter() { Folders = new[] { new SpriterFolder() { Id = 0, Files = new[] { new SpriterFile() { Id = 0, PivotX = 0.25f, PivotY = 0.75f } } } }, Entities = new[] { new SpriterEntity() { Animations = new [] { new SpriterAnimation() { Timelines = new [] { new SpriterTimeline() { Keys = new[] { new SpriterTimelineKey() { ObjectInfo = new SpriterObject() { FolderId = 0, FileId = 0, PivotX = float.NaN, PivotY = float.NaN } } } } } } } } } }; SpriterParser.Init(spriter); var objectInfo = spriter.Entities.First().Animations.First().Timelines.First().Keys.First().ObjectInfo; objectInfo.PivotX.Should().Be(0.25f); objectInfo.PivotY.Should().Be(0.75f); }
public void Parse_IfAMatchIsNotFoundInParsers_NoAttemptWillBeMadeToParseTheData() { using (new SpriterParserTestScope()) { var parser = new Mock <ISpriterParser>(); parser.Setup(p => p.CanParse(It.IsAny <string>())).Returns(false); parser.Setup(p => p.Parse(It.IsAny <string>())).Returns((Spriter)null); SpriterParser.Parsers.Clear(); SpriterParser.Parsers.Add(parser.Object); SpriterParser.Parse("DATA"); parser.Verify(p => p.CanParse(It.IsAny <string>()), Times.Once); parser.Verify(p => p.Parse(It.IsAny <string>()), Times.Never); } }
public static void CreateSpriter(string path) { string data = File.ReadAllText(path); Spriter spriter = SpriterParser.Parse(data); string rootFolder = Path.GetDirectoryName(path); string name = Path.GetFileNameWithoutExtension(path); SpriterData spriterData = CreateSpriterData(spriter, rootFolder, name); foreach (SpriterEntity entity in spriter.Entities) { GameObject go = new GameObject(entity.Name); GameObject sprites = new GameObject("Sprites"); GameObject metadata = new GameObject("Metadata"); SpriterDotNetBehaviour behaviour = go.AddComponent <SpriterDotNetBehaviour>(); behaviour.UseNativeTags = UseNativeTags; if (HasSound(entity)) { go.AddComponent <AudioSource>(); } sprites.SetParent(go); metadata.SetParent(go); ChildData cd = new ChildData(); CreateSprites(entity, cd, spriter, sprites); CreateCollisionRectangles(entity, cd, spriter, metadata); CreatePoints(entity, cd, spriter, metadata); behaviour.EntityIndex = entity.Id; behaviour.enabled = true; behaviour.SpriterData = spriterData; behaviour.ChildData = cd; CreatePrefab(go, rootFolder); EntityImported(entity, go); } if (UseNativeTags) { CreateTags(spriter); } }
public void Parse_WithNullOrEmptyData_ReturnsNull(string data, string because) { SpriterParser.Parse(data).Should().BeNull(because); }