public void UpdatePosition(int index, Render.IRenderNode renderNode, int baseLineOffset, Render.PositionTransformation positionTransformation, Render.SizeTransformation sizeTransformation) { var position = new Position(renderNode.X, renderNode.Y); var size = new Size(renderNode.Width, renderNode.Height); if (positionTransformation != null) { position = positionTransformation(position); } if (sizeTransformation != null) { size = sizeTransformation(size); } positionBuffer.Update(index, (short)position.X, (short)position.Y); positionBuffer.Update(index + 1, (short)(position.X + size.Width), (short)position.Y); positionBuffer.Update(index + 2, (short)(position.X + size.Width), (short)(position.Y + size.Height)); positionBuffer.Update(index + 3, (short)position.X, (short)(position.Y + size.Height)); if (Shape != Shape.Triangle && baseLineBuffer != null) { ushort baseLine = (ushort)(position.Y + size.Height + baseLineOffset); baseLineBuffer.Update(index, baseLine); baseLineBuffer.Update(index + 1, baseLine); baseLineBuffer.Update(index + 2, baseLine); baseLineBuffer.Update(index + 3, baseLine); } }
public void UpdateTextureAtlasOffset(int index, Render.ISprite sprite, Position maskSpriteTextureAtlasOffset = null) { if (textureAtlasOffsetBuffer == null) { return; } textureAtlasOffsetBuffer.Update(index, (short)sprite.TextureAtlasOffset.X, (short)sprite.TextureAtlasOffset.Y); textureAtlasOffsetBuffer.Update(index + 1, (short)(sprite.TextureAtlasOffset.X + sprite.Width), (short)sprite.TextureAtlasOffset.Y); textureAtlasOffsetBuffer.Update(index + 2, (short)(sprite.TextureAtlasOffset.X + sprite.Width), (short)(sprite.TextureAtlasOffset.Y + sprite.Height)); textureAtlasOffsetBuffer.Update(index + 3, (short)sprite.TextureAtlasOffset.X, (short)(sprite.TextureAtlasOffset.Y + sprite.Height)); if (Masked && maskSpriteTextureAtlasOffset != null) { maskTextureAtlasOffsetBuffer.Update(index, (short)maskSpriteTextureAtlasOffset.X, (short)maskSpriteTextureAtlasOffset.Y); maskTextureAtlasOffsetBuffer.Update(index + 1, (short)(maskSpriteTextureAtlasOffset.X + sprite.Width), (short)maskSpriteTextureAtlasOffset.Y); maskTextureAtlasOffsetBuffer.Update(index + 2, (short)(maskSpriteTextureAtlasOffset.X + sprite.Width), (short)(maskSpriteTextureAtlasOffset.Y + sprite.Height)); maskTextureAtlasOffsetBuffer.Update(index + 3, (short)maskSpriteTextureAtlasOffset.X, (short)(maskSpriteTextureAtlasOffset.Y + sprite.Height)); } }