Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for comparing gltfs by implementing PartialEq on Root #442

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
implemented PartialEq on Root and its attributes
  • Loading branch information
rydb committed Dec 17, 2024
commit 4c31468acd8f98946f71539ad58fcfa31cd56714
12 changes: 6 additions & 6 deletions gltf-json/src/accessor.rs
Original file line number Diff line number Diff line change
@@ -83,7 +83,7 @@ pub mod sparse {
use crate::extensions;

/// Indices of those attributes that deviate from their initialization value.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Indices {
/// The parent buffer view containing the sparse indices.
///
@@ -112,7 +112,7 @@ pub mod sparse {
}

/// Sparse storage of attributes that deviate from their initialization value.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Sparse {
/// The number of attributes encoded in this sparse accessor.
pub count: USize64,
@@ -143,7 +143,7 @@ pub mod sparse {

/// Array of size `count * number_of_components` storing the displaced
/// accessor attributes pointed by `accessor::sparse::Indices`.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Values {
/// The parent buffer view containing the sparse indices.
///
@@ -169,7 +169,7 @@ pub mod sparse {
}

/// A typed view into a buffer view.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
#[gltf(validate_hook = "accessor_validate_hook")]
pub struct Accessor {
/// The parent buffer view this accessor reads from.
@@ -250,11 +250,11 @@ fn is_normalized_default(b: &bool) -> bool {
}

/// The data type of an index.
#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq)]
pub struct IndexComponentType(pub ComponentType);

/// The data type of a generic vertex attribute.
#[derive(Clone, Copy, Debug, Deserialize, Serialize)]
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq)]
pub struct GenericComponentType(pub ComponentType);

impl<'de> de::Deserialize<'de> for Checked<GenericComponentType> {
8 changes: 4 additions & 4 deletions gltf-json/src/animation.rs
Original file line number Diff line number Diff line change
@@ -53,7 +53,7 @@ pub enum Property {
}

/// A keyframe animation.
#[derive(Clone, Debug, Deserialize, Serialize)]
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Animation {
/// Extension specific data.
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -84,7 +84,7 @@ pub struct Animation {
}

/// Targets an animation's sampler at a node's property.
#[derive(Clone, Debug, Deserialize, Serialize)]
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct Channel {
/// The index of a sampler in this animation used to compute the value for the
/// target.
@@ -105,7 +105,7 @@ pub struct Channel {
}

/// The index of the node and TRS property that an animation channel targets.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Target {
/// Extension specific data.
#[serde(default, skip_serializing_if = "Option::is_none")]
@@ -126,7 +126,7 @@ pub struct Target {
}

/// Defines a keyframe graph but not its target.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Sampler {
/// Extension specific data.
#[serde(default, skip_serializing_if = "Option::is_none")]
2 changes: 1 addition & 1 deletion gltf-json/src/asset.rs
Original file line number Diff line number Diff line change
@@ -3,7 +3,7 @@ use gltf_derive::Validate;
use serde_derive::{Deserialize, Serialize};

/// Metadata about the glTF asset.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Asset {
/// A copyright message suitable for display to credit the content creator.
#[serde(skip_serializing_if = "Option::is_none")]
4 changes: 2 additions & 2 deletions gltf-json/src/buffer.rs
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ impl Validate for Stride {
}

/// A buffer points to binary data representing geometry, animations, or skins.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Buffer {
/// The length of the buffer in bytes.
#[serde(default, rename = "byteLength")]
@@ -90,7 +90,7 @@ pub struct Buffer {
///
/// <https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#reference-bufferview>
///
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct View {
/// The parent `Buffer`.
pub buffer: Index<Buffer>,
6 changes: 3 additions & 3 deletions gltf-json/src/camera.rs
Original file line number Diff line number Diff line change
@@ -22,7 +22,7 @@ pub enum Type {
///
/// A node can reference a camera to apply a transform to place the camera in the
/// scene.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
#[gltf(validate_hook = "camera_validate_hook")]
pub struct Camera {
/// Optional user-defined name for this object.
@@ -66,7 +66,7 @@ where
}

/// Values for an orthographic camera.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Orthographic {
/// The horizontal magnification of the view.
pub xmag: f32,
@@ -92,7 +92,7 @@ pub struct Orthographic {
}

/// Values for a perspective camera.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Perspective {
/// Aspect ratio of the field of view.
#[serde(rename = "aspectRatio")]
8 changes: 4 additions & 4 deletions gltf-json/src/extensions/accessor.rs
Original file line number Diff line number Diff line change
@@ -8,21 +8,21 @@ pub mod sparse {
use super::*;

/// Indices of those attributes that deviate from their initialization value.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Indices {}

/// Sparse storage of attributes that deviate from their initialization value.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Sparse {}

/// Array of size `count * number_of_components` storing the displaced
/// accessor attributes pointed by `accessor::sparse::Indices`.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Values {}
}

/// A typed view into a buffer view.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Accessor {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
8 changes: 4 additions & 4 deletions gltf-json/src/extensions/animation.rs
Original file line number Diff line number Diff line change
@@ -4,21 +4,21 @@ use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};

/// A keyframe animation.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Animation {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
pub others: Map<String, Value>,
}

/// Targets an animation's sampler at a node's property.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Channel {}

/// The index of the node and TRS property that an animation channel targets.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Target {}

/// Defines a keyframe graph but not its target.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Sampler {}
2 changes: 1 addition & 1 deletion gltf-json/src/extensions/asset.rs
Original file line number Diff line number Diff line change
@@ -2,5 +2,5 @@ use gltf_derive::Validate;
use serde_derive::{Deserialize, Serialize};

/// Metadata about the glTF asset.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Asset {}
4 changes: 2 additions & 2 deletions gltf-json/src/extensions/buffer.rs
Original file line number Diff line number Diff line change
@@ -4,15 +4,15 @@ use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};

/// A buffer points to binary data representing geometry, animations, or skins.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Buffer {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
pub others: Map<String, Value>,
}

/// A view into a buffer generally representing a subset of the buffer.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct View {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
6 changes: 3 additions & 3 deletions gltf-json/src/extensions/camera.rs
Original file line number Diff line number Diff line change
@@ -7,23 +7,23 @@ use serde_json::{Map, Value};
///
/// A node can reference a camera to apply a transform to place the camera in the
/// scene.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Camera {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
pub others: Map<String, Value>,
}

/// Values for an orthographic camera.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Orthographic {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
pub others: Map<String, Value>,
}

/// Values for a perspective camera.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Perspective {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
2 changes: 1 addition & 1 deletion gltf-json/src/extensions/image.rs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};

/// Image data used to create a texture.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Image {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
8 changes: 4 additions & 4 deletions gltf-json/src/extensions/material.rs
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};

/// The material appearance of a primitive.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Material {
#[cfg(feature = "KHR_materials_pbrSpecularGlossiness")]
#[serde(
@@ -71,7 +71,7 @@ pub struct Material {

/// A set of parameter values that are used to define the metallic-roughness
/// material model from Physically-Based Rendering (PBR) methodology.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct PbrMetallicRoughness {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
@@ -135,15 +135,15 @@ pub struct PbrSpecularGlossiness {
}

/// Defines the normal texture of a material.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct NormalTexture {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
pub others: Map<String, Value>,
}

/// Defines the occlusion texture of a material.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct OcclusionTexture {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
4 changes: 2 additions & 2 deletions gltf-json/src/extensions/mesh.rs
Original file line number Diff line number Diff line change
@@ -7,15 +7,15 @@ use serde_json::{Map, Value};
///
/// A node can contain one or more meshes and its transform places the meshes in
/// the scene.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Mesh {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
pub others: Map<String, Value>,
}

/// Geometry to be rendered with the given material.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Primitive {
#[cfg(feature = "KHR_materials_variants")]
#[serde(
2 changes: 1 addition & 1 deletion gltf-json/src/extensions/root.rs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};

/// The root object of a glTF 2.0 asset.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Root {
#[cfg(feature = "KHR_lights_punctual")]
#[serde(
4 changes: 2 additions & 2 deletions gltf-json/src/extensions/scene.rs
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ use serde_json::{Map, Value};
/// identity. When a node is targeted for animation (referenced by an
/// animation.channel.target), only TRS properties may be present; `matrix` will not
/// be present.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Node {
#[cfg(feature = "KHR_lights_punctual")]
#[serde(
@@ -222,7 +222,7 @@ pub mod khr_materials_variants {
}

/// The root `Node`s of a scene.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Scene {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
2 changes: 1 addition & 1 deletion gltf-json/src/extensions/skin.rs
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};

/// Joints and matrices defining a skin.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Skin {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
6 changes: 3 additions & 3 deletions gltf-json/src/extensions/texture.rs
Original file line number Diff line number Diff line change
@@ -9,15 +9,15 @@ use serde_derive::{Deserialize, Serialize};
use serde_json::{Map, Value};

/// Texture sampler properties for filtering and wrapping modes.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Sampler {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
pub others: Map<String, Value>,
}

/// A texture and its sampler.
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
pub struct Texture {
#[cfg(feature = "extensions")]
#[serde(default, flatten)]
@@ -39,7 +39,7 @@ pub struct TextureWebp {
pub source: Index<image::Image>,
}

#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Default, Deserialize, Serialize, Validate, PartialEq)]
/// Reference to a `Texture`.
pub struct Info {
#[cfg(feature = "KHR_texture_transform")]
2 changes: 1 addition & 1 deletion gltf-json/src/extras.rs
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ pub type Extras = Option<::std::boxed::Box<RawValue>>;
pub type Extras = Void;

/// Type representing no user-defined data.
#[derive(Clone, Default, Serialize, Deserialize, Validate)]
#[derive(Clone, Default, Serialize, Deserialize, Validate, PartialEq)]
pub struct Void {
#[serde(default, skip_serializing)]
_allow_unknown_fields: (),
4 changes: 2 additions & 2 deletions gltf-json/src/image.rs
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@ pub const VALID_MIME_TYPES: &[&str] = &[
];

/// Image data used to create a texture.
#[derive(Clone, Debug, Deserialize, Serialize, Validate)]
#[derive(Clone, Debug, Deserialize, Serialize, Validate, PartialEq)]
pub struct Image {
/// The index of the buffer view that contains the image. Use this instead of
/// the image's uri property.
@@ -48,7 +48,7 @@ pub struct Image {
}

/// An image MIME type.
#[derive(Clone, Debug, Deserialize, Serialize)]
#[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
pub struct MimeType(pub String);

impl Validate for MimeType {}
Loading
Loading