// SPDX-FileCopyrightText: 2023 Unity Technologies and the glTFast authors
// SPDX-License-Identifier: Apache-2.0
using UnityEngine.Serialization;
namespace GLTFast.Schema
{
///
[System.Serializable]
public class TextureInfo : TextureInfoBase { }
///
/// textureInfo extensions type
[System.Serializable]
public abstract class TextureInfoBase : TextureInfoBase
where TExtensions : TextureInfoExtensions, new()
{
///
public TExtensions extensions;
///
public override TextureInfoExtensions Extensions => extensions;
internal override void SetTextureTransform(TextureTransform textureTransform)
{
extensions = extensions ?? new TExtensions();
extensions.KHR_texture_transform = textureTransform;
}
}
///
/// Reference to a texture.
///
[System.Serializable]
public abstract class TextureInfoBase
{
///
/// The index of the texture.
///
public int index = -1;
///
/// This integer value is used to construct a string in the format
/// TEXCOORD_<set index> which is a reference to a key in
/// mesh.primitives.attributes (e.g. A value of 0 corresponds to TEXCOORD_0).
///
public int texCoord;
///
public abstract TextureInfoExtensions Extensions { get; }
///
/// Applies a texture transform by initializing (if required) and setting its
/// field.
///
/// Texture transform to apply.
internal abstract void SetTextureTransform(TextureTransform textureTransform);
internal void GltfSerializeTextureInfo(JsonWriter writer)
{
if (index >= 0)
{
writer.AddProperty("index", index);
}
if (texCoord > 0)
{
writer.AddProperty("texCoord", texCoord);
}
if (Extensions != null)
{
writer.AddProperty("extensions");
Extensions.GltfSerialize(writer);
}
}
internal virtual void GltfSerialize(JsonWriter writer)
{
writer.AddObject();
GltfSerializeTextureInfo(writer);
writer.Close();
}
}
}