127 lines
3.4 KiB
C#
127 lines
3.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using UniJSON;
|
|
|
|
namespace UniGLTF
|
|
{
|
|
[Serializable]
|
|
public class glTFAttributes
|
|
{
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int POSITION = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int NORMAL = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int TANGENT = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int TEXCOORD_0 = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int TEXCOORD_1 = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int COLOR_0 = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int JOINTS_0 = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int WEIGHTS_0 = -1;
|
|
|
|
public override int GetHashCode()
|
|
{
|
|
return base.GetHashCode();
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
var rhs = obj as glTFAttributes;
|
|
if (rhs == null)
|
|
{
|
|
return base.Equals(obj);
|
|
}
|
|
|
|
return POSITION == rhs.POSITION
|
|
&& NORMAL == rhs.NORMAL
|
|
&& TANGENT == rhs.TANGENT
|
|
&& TEXCOORD_0 == rhs.TEXCOORD_0
|
|
&& TEXCOORD_1 == rhs.TEXCOORD_1
|
|
&& COLOR_0 == rhs.COLOR_0
|
|
&& JOINTS_0 == rhs.JOINTS_0
|
|
&& WEIGHTS_0 == rhs.WEIGHTS_0
|
|
;
|
|
}
|
|
}
|
|
|
|
[Serializable]
|
|
public class gltfMorphTarget
|
|
{
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int POSITION = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int NORMAL = -1;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int TANGENT = -1;
|
|
}
|
|
|
|
/// <summary>
|
|
/// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/schema/mesh.primitive.schema.json
|
|
/// </summary>
|
|
[Serializable]
|
|
public class glTFPrimitives
|
|
{
|
|
[JsonSchema(EnumValues = new object[] { 0, 1, 2, 3, 4, 5, 6 })]
|
|
public int mode;
|
|
|
|
[JsonSchema(Minimum = 0, ExplicitIgnorableValue = -1)]
|
|
public int indices = -1;
|
|
|
|
[JsonSchema(Required = true, SkipSchemaComparison = true)]
|
|
public glTFAttributes attributes;
|
|
|
|
[JsonSchema(Minimum = 0)]
|
|
public int material;
|
|
|
|
[JsonSchema(MinItems = 1, ExplicitIgnorableItemLength = 0)]
|
|
[ItemJsonSchema(SkipSchemaComparison = true)]
|
|
public List<gltfMorphTarget> targets = new List<gltfMorphTarget>();
|
|
|
|
public glTFExtension extras;
|
|
|
|
[JsonSchema(SkipSchemaComparison = true)]
|
|
public glTFExtension extensions;
|
|
}
|
|
|
|
[Serializable]
|
|
public class glTFMesh
|
|
{
|
|
public string name;
|
|
|
|
[JsonSchema(Required = true, MinItems = 1)]
|
|
public List<glTFPrimitives> primitives = new List<glTFPrimitives>();
|
|
|
|
[JsonSchema(MinItems = 1)]
|
|
public float[] weights;
|
|
|
|
[JsonSchema(SkipSchemaComparison = true)]
|
|
public glTFExtension extras;
|
|
|
|
// empty schemas
|
|
public glTFExtension extensions;
|
|
|
|
public glTFMesh()
|
|
{
|
|
}
|
|
|
|
public glTFMesh(string _name)
|
|
{
|
|
name = _name;
|
|
}
|
|
}
|
|
}
|