summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/source/MonoGame.Extended.Graphics/PrimitiveTypeExtensions.cs
blob: 68a39efb39083ddc5e08cc56b9b3e90501cb8545 (plain)
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
using System;
using Microsoft.Xna.Framework.Graphics;

namespace MonoGame.Extended.Graphics
{
    public static class PrimitiveTypeExtensions
    {
        internal static int GetPrimitivesCount(this PrimitiveType primitiveType, int verticesCount)
        {
            switch (primitiveType)
            {
                case PrimitiveType.LineStrip:
                    return verticesCount - 1;
                case PrimitiveType.LineList:
                    return verticesCount/2;
                case PrimitiveType.TriangleStrip:
                    return verticesCount - 2;
                case PrimitiveType.TriangleList:
                    return verticesCount/3;
                default:
                    throw new ArgumentException("Invalid primitive type.");
            }
        }

        internal static int GetVerticesCount(this PrimitiveType primitiveType, int primitivesCount)
        {
            switch (primitiveType)
            {
                case PrimitiveType.LineStrip:
                    return primitivesCount + 1;
                case PrimitiveType.LineList:
                    return primitivesCount*2;
                case PrimitiveType.TriangleStrip:
                    return primitivesCount + 2;
                case PrimitiveType.TriangleList:
                    return primitivesCount*3;
                default:
                    throw new ArgumentException("Invalid primitive type.");
            }
        }
    }
}