mixedreality/com.microsoft.mixedreality..../Core/Utilities/Gltf/Schema/GltfMeshPrimitiveAttributes.cs

115 lines
2.8 KiB
C#

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System.Collections.Generic;
using System.Collections.ObjectModel;
namespace Microsoft.MixedReality.Toolkit.Utilities.Gltf.Schema
{
/// <summary>
/// Common mesh primitive attributes.
/// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/schema/mesh.primitive.schema.json
/// </summary>
public class GltfMeshPrimitiveAttributes : ReadOnlyDictionary<string, int>
{
private const string POSITION_KEY = "POSITION";
private const string NORMAL_KEY = "NORMAL";
private const string TANGENT_KEY = "TANGENT";
private const string TEXCOORD_0_KEY = "TEXCOORD_0";
private const string TEXCOORD_1_KEY = "TEXCOORD_1";
private const string TEXCOORD_2_KEY = "TEXCOORD_2";
private const string TEXCOORD_3_KEY = "TEXCOORD_3";
private const string COLOR_0_KEY = "COLOR_0";
private const string JOINTS_0_KEY = "JOINTS_0";
private const string WEIGHTS_0_KEY = "WEIGHTS_0";
public GltfMeshPrimitiveAttributes(IDictionary<string, int> dictionary) : base(dictionary)
{
}
private int TryGetDefault(string key, int defaultVal)
{
int index;
return TryGetValue(key, out index) ? index : defaultVal;
}
public int POSITION
{
get
{
return TryGetDefault(POSITION_KEY, -1);
}
}
public int NORMAL
{
get
{
return TryGetDefault(NORMAL_KEY, -1);
}
}
public int TEXCOORD_0
{
get
{
return TryGetDefault(TEXCOORD_0_KEY, -1);
}
}
public int TEXCOORD_1
{
get
{
return TryGetDefault(TEXCOORD_1_KEY, -1);
}
}
public int TEXCOORD_2
{
get
{
return TryGetDefault(TEXCOORD_2_KEY, -1);
}
}
public int TEXCOORD_3
{
get
{
return TryGetDefault(TEXCOORD_3_KEY, -1);
}
}
public int COLOR_0
{
get
{
return TryGetDefault(COLOR_0_KEY, -1);
}
}
public int TANGENT
{
get
{
return TryGetDefault(TANGENT_KEY, -1);
}
}
public int WEIGHTS_0
{
get
{
return TryGetDefault(WEIGHTS_0_KEY, -1);
}
}
public int JOINTS_0
{
get
{
return TryGetDefault(JOINTS_0_KEY, -1);
}
}
}
}