Ejemplo n.º 1
0
        private void GenerateSpriteSequenceTargets(StaticTextureSource source)
        {
            if (!source.HasVariants)
            {
                throw new ArgumentException(string.Format("SpriteSequence {0} cannot be dynamically mapped without at least one source rectangle.", source.SpriteSequence));
            }

            int i = _level.SpriteSequences.ToList().FindIndex(s => s.SpriteID == (int)source.SpriteSequence);

            if (i == -1)
            {
                return;
            }

            TRSpriteSequence sequence = _level.SpriteSequences[i];

            StaticMapping[source] = new List <StaticTextureTarget>();

            // An assumption is made here that each variant in the source will have the same number
            // of rectangles. We only want to define targets for the number of source rectangles, rather
            // than the total number of sprites.
            int numTargets = source.VariantMap[source.Variants[0]].Count;

            for (int j = 0; j < numTargets; j++)
            {
                TRSpriteTexture sprite = _level.SpriteTextures[sequence.Offset + j];
                StaticMapping[source].Add(new StaticTextureTarget
                {
                    Segment = j,
                    Tile    = sprite.Atlas,
                    X       = sprite.X,
                    Y       = sprite.Y
                });
            }
        }
Ejemplo n.º 2
0
        // See TextureTransportHandler.ResetUnusedTextures
        public static bool IsValid(this TRSpriteTexture texture)
        {
            if (texture.Atlas == 0)
            {
                if (texture.X == 0 && texture.Y == 0 && texture.Width == 1 && texture.Height == 1)
                {
                    return(false);
                }
            }

            return(texture.Atlas != ushort.MaxValue);
        }
Ejemplo n.º 3
0
        private List <IndexedTRSpriteTexture> LoadSpriteTextures()
        {
            List <IndexedTRSpriteTexture> textures = new List <IndexedTRSpriteTexture>((int)Level.NumSpriteTextures);

            for (int i = 0; i < Level.NumSpriteTextures; i++)
            {
                TRSpriteTexture texture = Level.SpriteTextures[i];
                if (texture.IsValid())
                {
                    textures.Add(new IndexedTRSpriteTexture
                    {
                        Index          = i,
                        Classification = _levelClassifier,
                        Texture        = texture
                    });
                }
            }
            return(textures);
        }
Ejemplo n.º 4
0
 public static void Invalidate(this TRSpriteTexture texture)
 {
     texture.Atlas = 0;
     texture.X     = texture.Y = 0;
     texture.Width = texture.Height = 1;
 }