/// <summary>
        /// Loads a Daggerfall flat (billboard).
        /// </summary>
        /// <param name="textureArchive">Texture archive index.</param>
        /// <param name="textureRecord">Texture record index.</param>
        /// <param name="textureFlags">Texture create flags.</param>
        /// <param name="material">Material.</param>
        /// <param name="startSize">Start size before scaling.</param>
        /// <param name="finalSize">Final size after scaling.</param>
        private void LoadDaggerfallFlat(
            int textureArchive,
            int textureRecord,
            MaterialManager.TextureCreateFlags textureFlags,
            out BaseMaterialEffect material,
            out Vector2 startSize,
            out Vector2 finalSize)
        {
            // Get path to texture file
            string path = Path.Combine(
                core.MaterialManager.Arena2Path,
                TextureFile.IndexToFileName(textureArchive));

            // Get size and scale of this texture
            System.Drawing.Size size  = TextureFile.QuickSize(path, textureRecord);
            System.Drawing.Size scale = TextureFile.QuickScale(path, textureRecord);

            // Set start size
            startSize.X = size.Width;
            startSize.Y = size.Height;

            // Apply scale
            int xChange = (int)(size.Width * (scale.Width / BlocksFile.ScaleDivisor));
            int yChange = (int)(size.Height * (scale.Height / BlocksFile.ScaleDivisor));

            finalSize.X = size.Width + xChange;
            finalSize.Y = size.Height + yChange;

            // Load material
            material = core.MaterialManager.CreateDaggerfallMaterialEffect(
                textureArchive,
                textureRecord,
                renderBillboards,
                MaterialManager.DefaultBillboardFlags);
        }
        /// <summary>
        /// Add billboard to collection.
        /// </summary>
        /// <param name="archive">Texture archive.</param>
        /// <param name="record">Texture index.</param>
        /// <param name="position">Position relative to parent entity.</param>
        public void AddBillboard(int archive, int record, Vector3 position)
        {
            MaterialManager.TextureCreateFlags flags =
                MaterialManager.TextureCreateFlags.Dilate |
                MaterialManager.TextureCreateFlags.PreMultiplyAlpha |
                MaterialManager.TextureCreateFlags.MipMaps;

            // Load flat
            BaseMaterialEffect material;
            Vector2            startSize, finalSize;

            LoadDaggerfallFlat(archive, record, flags, out material, out startSize, out finalSize);

            // Calcuate final position
            Vector3 finalPosition = new Vector3(position.X, -position.Y + (finalSize.Y / 2) - 4, -position.Z);

            // Information about the billboard is packed into unused parts of the vertex format.
            // This allows us to send a huge static batch of billboards and correctly position, rotate, and scale
            // each one for the camera.
            for (int i = 0; i < 4; i++)
            {
                billboardVertices[i].Tangent  = finalPosition;
                billboardVertices[i].Binormal = new Vector3(finalSize.X, finalSize.Y, 0);
            }

            // Add to batch
            staticGeometry.AddToBuilder(material.ID, billboardVertices, billboardIndices, Matrix.Identity);
        }