fna-workbench

fna-workbench Git Source Tree


Root/src/Content/ContentReaders/TextureCubeReader.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#region License
/* FNA - XNA4 Reimplementation for Desktop Platforms
 * Copyright 2009-2016 Ethan Lee and the MonoGame Team
 *
 * Released under the Microsoft Public License.
 * See LICENSE for details.
 */
#endregion
 
#region Using Statements
using Microsoft.Xna.Framework.Graphics;
#endregion
 
namespace Microsoft.Xna.Framework.Content
{
    internal class TextureCubeReader : ContentTypeReader<TextureCube>
    {
        #region Protected Read Method
 
        protected internal override TextureCube Read(
            ContentReader reader,
            TextureCube existingInstance
        ) {
            TextureCube textureCube = null;
 
            SurfaceFormat surfaceFormat = (SurfaceFormat) reader.ReadInt32();
            int size = reader.ReadInt32();
            int levels = reader.ReadInt32();
 
            if (existingInstance == null)
            {
                textureCube = new TextureCube(
                    reader.GraphicsDevice,
                    size,
                    levels > 1,
                    surfaceFormat
                );
            }
            else
            {
                textureCube = existingInstance;
            }
 
            for (int face = 0; face < 6; face += 1)
            {
                for (int i = 0; i < levels; i += 1)
                {
                    int faceSize = reader.ReadInt32();
                    byte[] faceData = reader.ReadBytes(faceSize);
                    textureCube.SetData<byte>(
                        (CubeMapFace) face,
                        i,
                        null,
                        faceData,
                        0,
                        faceSize
                    );
                }
            }
 
            return textureCube;
        }
 
        #endregion
    }
}

Archive Download this file

Branches

Number of commits:
Page rendered in 0.17215s using 11 queries.