glTFTexture.cs
3.52 KB
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
using System;
using System.IO;
using UniJSON;
namespace UniGLTF
{
[Serializable]
public class glTFTextureSampler : JsonSerializableBase
{
[JsonSchema(EnumSerializationType = EnumSerializationType.AsInt,
EnumExcludes = new object[] {
glFilter.NONE,
glFilter.NEAREST_MIPMAP_NEAREST,
glFilter.LINEAR_MIPMAP_NEAREST,
glFilter.NEAREST_MIPMAP_LINEAR,
glFilter.LINEAR_MIPMAP_LINEAR,
})]
public glFilter magFilter = glFilter.NEAREST;
[JsonSchema(EnumSerializationType = EnumSerializationType.AsInt,
EnumExcludes = new object[] { glFilter.NONE })]
public glFilter minFilter = glFilter.NEAREST;
[JsonSchema(EnumSerializationType = EnumSerializationType.AsInt,
EnumExcludes = new object[] { glWrap.NONE })]
public glWrap wrapS = glWrap.REPEAT;
[JsonSchema(EnumSerializationType = EnumSerializationType.AsInt,
EnumExcludes = new object[] { glWrap.NONE })]
public glWrap wrapT = glWrap.REPEAT;
// empty schemas
public object extensions;
public object extras;
public string name;
protected override void SerializeMembers(GLTFJsonFormatter f)
{
f.Key("magFilter"); f.Value((int)magFilter);
f.Key("minFilter"); f.Value((int)minFilter);
f.Key("wrapS"); f.Value((int)wrapS);
f.Key("wrapT"); f.Value((int)wrapT);
}
}
[Serializable]
public class glTFImage : JsonSerializableBase
{
public string name;
public string uri;
[JsonSchema(Dependencies = new string[] { "mimeType" }, Minimum = 0)]
public int bufferView;
[JsonSchema(EnumValues = new object[] { "image/jpeg", "image/png" }, EnumSerializationType =EnumSerializationType.AsString)]
public string mimeType;
public string GetExt()
{
switch (mimeType)
{
case "image/png":
return ".png";
case "image/jpeg":
return ".jpg";
default:
if (uri.StartsWith("data:image/jpeg;"))
{
return ".jpg";
}
else if (uri.StartsWith("data:image/png;"))
{
return ".png";
}
else
{
return Path.GetExtension(uri).ToLower();
}
}
}
// empty schemas
public object extensions;
public object extras;
protected override void SerializeMembers(GLTFJsonFormatter f)
{
f.KeyValue(() => name);
if (!string.IsNullOrEmpty(uri))
{
f.KeyValue(() => uri);
}
else
{
f.KeyValue(() => bufferView);
f.KeyValue(() => mimeType);
}
}
}
[Serializable]
public class glTFTexture : JsonSerializableBase
{
[JsonSchema(Minimum = 0)]
public int sampler;
[JsonSchema(Minimum = 0)]
public int source;
// empty schemas
public object extensions;
public object extras;
public string name;
protected override void SerializeMembers(GLTFJsonFormatter f)
{
f.KeyValue(() => sampler);
f.KeyValue(() => source);
}
}
}