public static void Init() { s_sprite = new Sprite(s_tmpBmp); s_totalSize = new Vector2f(s_sprite.Bitmap.Size.Width, s_sprite.Bitmap.Size.Height)/Tile.Size; Vector2f worldPosition = new Vector2f(0,0); Vector2f pixelPosition = new Vector2f(0,0); Vector2f previousPixelPosition = new Vector2f(0,0); Vector2f pixelSize = new Vector2f(0,0); Vector2f worldSize = new Vector2f(0,0); foreach (char character in characters) { previousPixelPosition = pixelPosition.Clone(); pixelPosition = RenderCharacter (character, pixelPosition, out pixelSize); if (pixelPosition.X >= s_sprite.Bitmap.Size.Width) { pixelPosition.Y += pixelSize.Y; pixelPosition.X = 0; previousPixelPosition = pixelPosition.Clone(); pixelPosition = RenderCharacter(character, pixelPosition, out pixelSize); } worldSize = pixelSize / Tile.Size; worldPosition = previousPixelPosition / Tile.Size; s_characters[character] = new Character() { Size = worldSize.Clone(), Position = worldPosition.Clone(), Char = character }; } s_sprite.ReloadBitmap(); }