private void AddNew(ShaderResourceView texture, SpriteVertex data) { //Create new segment with initial values var newSegment = new SpriteSegment(); newSegment.Texture = texture; newSegment.Sprites.Add(data); sprites.Add(newSegment); //Create reference for segment in dictionary if (!textureSprites.ContainsKey(texture)) { textureSprites.Add(texture, new List <SpriteSegment>()); } textureSprites[texture].Add(newSegment); CheckForFullBuffer(); }
public void Draw(ShaderResourceView texture, Vector2 position, Vector2 size, Vector2 texCoords, Vector2 texCoordsSize, Color4 color, CoordinateType coordinateType) { if (texture == null) { return; } var data = new SpriteVertex(); data.Position = ConvertCoordinate(position, coordinateType); data.Size = ConvertCoordinate(position + size, coordinateType) - data.Position; data.Size.X = Math.Abs(data.Size.X); data.Size.Y = Math.Abs(data.Size.Y); data.TexCoord = texCoords; data.TexCoordSize = texCoordsSize; data.Color = color.ToArgb(); if (AllowReorder) { //Is there already a sprite for this texture? if (textureSprites.ContainsKey(texture)) { //Add the sprite to the last segment for this texture var Segment = textureSprites[texture].Last(); AddIn(Segment, data); } else { //Add a new segment for this texture AddNew(texture, data); } } else { //Add a new segment for this texture AddNew(texture, data); } }
private void AddIn(SpriteSegment segment, SpriteVertex data) { segment.Sprites.Add(data); CheckForFullBuffer(); }