93 lines
3.0 KiB
C#
93 lines
3.0 KiB
C#
using System;
|
|
using System.Text.Json;
|
|
|
|
namespace ReFuel.Gltf
|
|
{
|
|
internal enum GltfSamplerValue : int
|
|
{
|
|
Nearest = 9728,
|
|
Linear = 9729,
|
|
NearestMipmapNearest = 9984,
|
|
LinearMipmapNearest = 9985,
|
|
NearestMipmapLinear = 9986,
|
|
LinearMipmapLinear = 9987,
|
|
ClampToEdge = 33071,
|
|
MirroredRepeat = 33648,
|
|
Repeat = 10497,
|
|
}
|
|
|
|
public enum GltfSamplerMagFilter
|
|
{
|
|
Unset = 0,
|
|
Nearest = GltfSamplerValue.Nearest,
|
|
Linear = GltfSamplerValue.Linear
|
|
}
|
|
|
|
public enum GltfSamplerMinFilter
|
|
{
|
|
Unset = 0,
|
|
Nearest = GltfSamplerValue.Nearest,
|
|
Linear = GltfSamplerValue.Linear,
|
|
NearestMipmapNearest = GltfSamplerValue.NearestMipmapNearest,
|
|
LinearMipmapNearest = GltfSamplerValue.LinearMipmapNearest,
|
|
NearestMipmapLinear = GltfSamplerValue.NearestMipmapLinear,
|
|
LinearMipmapLinear = GltfSamplerValue.LinearMipmapLinear,
|
|
}
|
|
|
|
public enum GltfSamplerWrapMode
|
|
{
|
|
ClampToEdge = GltfSamplerValue.ClampToEdge,
|
|
MirroredRepeat = GltfSamplerValue.MirroredRepeat,
|
|
Repeat = GltfSamplerValue.Repeat,
|
|
}
|
|
|
|
public class GltfSampler : GltfIdObject
|
|
{
|
|
public override GltfObjectKind Kind => GltfObjectKind.Sampler;
|
|
|
|
public string? Name { get; set; } = null;
|
|
public GltfSamplerMinFilter MinFilter { get; set; } = GltfSamplerMinFilter.Unset;
|
|
public GltfSamplerMagFilter MagFilter { get; set; } = GltfSamplerMagFilter.Unset;
|
|
public GltfSamplerWrapMode WrapS { get; set; } = GltfSamplerWrapMode.Repeat;
|
|
public GltfSamplerWrapMode WrapT { get; set; } = GltfSamplerWrapMode.Repeat;
|
|
|
|
internal GltfSampler(GltfDocument document) : base(document)
|
|
{
|
|
}
|
|
|
|
internal override void Deserialize(JsonElement element)
|
|
{
|
|
if (element.ValueKind != JsonValueKind.Object)
|
|
throw new Exception("Expected an object as a sampler.");
|
|
|
|
foreach (JsonProperty property in element.EnumerateObject())
|
|
{
|
|
switch (property.Name)
|
|
{
|
|
case "name":
|
|
Name = property.Value.GetString();
|
|
break;
|
|
case "magFilter":
|
|
MagFilter = (GltfSamplerMagFilter)property.Value.GetInt32();
|
|
break;
|
|
case "minFilter":
|
|
MinFilter = (GltfSamplerMinFilter)property.Value.GetInt32();
|
|
break;
|
|
case "wrapS":
|
|
WrapS = (GltfSamplerWrapMode)property.Value.GetInt32();
|
|
break;
|
|
case "wrapT":
|
|
WrapT = (GltfSamplerWrapMode)property.Value.GetInt32();
|
|
break;
|
|
}
|
|
}
|
|
|
|
DeserializeCommon(element);
|
|
}
|
|
|
|
internal override void Serialize(Utf8JsonWriter writer)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
}
|
|
} |