gltf_json/extensions/
texture.rs1#[cfg(feature = "KHR_texture_transform")]
2use crate::{extras::Extras, validation::Validate};
3use gltf_derive::Validate;
4use serde_derive::{Deserialize, Serialize};
5#[cfg(feature = "extensions")]
6use serde_json::{Map, Value};
7
8#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
10pub struct Sampler {
11 #[cfg(feature = "extensions")]
12 #[serde(default, flatten)]
13 pub others: Map<String, Value>,
14}
15
16#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
18pub struct Texture {
19 #[cfg(feature = "extensions")]
20 #[serde(default, flatten)]
21 pub others: Map<String, Value>,
22}
23
24#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
25pub struct Info {
27 #[cfg(feature = "KHR_texture_transform")]
28 #[serde(
29 default,
30 rename = "KHR_texture_transform",
31 skip_serializing_if = "Option::is_none"
32 )]
33 pub texture_transform: Option<TextureTransform>,
34 #[cfg(feature = "extensions")]
35 #[serde(default, flatten)]
36 pub others: Map<String, Value>,
37}
38
39#[cfg(feature = "KHR_texture_transform")]
48#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
49#[serde(default, rename_all = "camelCase")]
50pub struct TextureTransform {
51 pub offset: TextureTransformOffset,
53
54 pub rotation: TextureTransformRotation,
57
58 pub scale: TextureTransformScale,
60
61 pub tex_coord: Option<u32>,
63
64 #[cfg_attr(feature = "extras", serde(skip_serializing_if = "Option::is_none"))]
66 #[cfg_attr(not(feature = "extras"), serde(skip_serializing))]
67 pub extras: Extras,
68}
69
70#[cfg(feature = "KHR_texture_transform")]
72#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
73pub struct TextureTransformOffset(pub [f32; 2]);
74
75#[cfg(feature = "KHR_texture_transform")]
76impl Default for TextureTransformOffset {
77 fn default() -> Self {
78 Self([0.0, 0.0])
79 }
80}
81
82#[cfg(feature = "KHR_texture_transform")]
83impl Validate for TextureTransformOffset {}
84
85#[cfg(feature = "KHR_texture_transform")]
88#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
89pub struct TextureTransformRotation(pub f32);
90
91#[cfg(feature = "KHR_texture_transform")]
92impl Default for TextureTransformRotation {
93 fn default() -> Self {
94 Self(0.0)
95 }
96}
97
98#[cfg(feature = "KHR_texture_transform")]
99impl Validate for TextureTransformRotation {}
100
101#[cfg(feature = "KHR_texture_transform")]
103#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
104pub struct TextureTransformScale(pub [f32; 2]);
105
106#[cfg(feature = "KHR_texture_transform")]
107impl Default for TextureTransformScale {
108 fn default() -> Self {
109 Self([1.0, 1.0])
110 }
111}
112
113#[cfg(feature = "KHR_texture_transform")]
114impl Validate for TextureTransformScale {}