Skip to content

Commit

Permalink
Merge pull request #401 from alteous/main
Browse files Browse the repository at this point in the history
Version 1.4.0
  • Loading branch information
alteous authored Dec 17, 2023
2 parents ec6fc16 + 5d8154e commit c17732e
Show file tree
Hide file tree
Showing 15 changed files with 62 additions and 44 deletions.
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,24 @@ The `gltf` crate adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.

## Unreleased

## [1.4.0] - 2023-12-17

### Added

- New API for reading arbitary extension data.
- Interval improvements to prevent panics on 32 bit systems when loading large glTF files.

### Changed

- Offsets and sizes in the `gltf-json` crate have been widened to 64 bits.
- Loading glTF on a 32 bit system containing offsets or sizes larger than `u32` will
result in a validation error.

### Fixed

- `Gltf::from_reader` no longer winds the reader back to offset zero.
- Broken link in `Material::unlit` documentation.

## [1.3.0] - 2023-08-21

### Added
Expand Down
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "gltf"
version = "1.3.0"
version = "1.4.0"
authors = ["David Harvey-Macaulay <[email protected]>"]
description = "glTF 2.0 loader"
documentation = "https://docs.rs/gltf"
Expand All @@ -25,7 +25,7 @@ approx = "0.5"
[dependencies]
base64 = { optional = true, version = "0.13" }
byteorder = "1.3"
gltf-json = { path = "gltf-json", version = "1.3.0" }
gltf-json = { path = "gltf-json", version = "1.4.0" }
lazy_static = "1"
urlencoding = { optional = true, version = "2.1" }
serde_json = { features = ["raw_value"], version = "1.0" }
Expand Down
2 changes: 1 addition & 1 deletion gltf-derive/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "gltf-derive"
version = "1.3.0"
version = "1.4.0"
authors = ["David Harvey-Macaulay <[email protected]>"]
description = "Internal macros for the gltf crate"
repository = "https://github.com/gltf-rs/gltf"
Expand Down
4 changes: 2 additions & 2 deletions gltf-json/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "gltf-json"
version = "1.3.0"
version = "1.4.0"
authors = ["David Harvey-Macaulay <[email protected]>"]
description = "JSON parsing for the gltf crate"
repository = "https://github.com/gltf-rs/gltf"
Expand All @@ -9,7 +9,7 @@ edition = "2021"
rust-version = "1.61"

[dependencies]
gltf-derive = { path = "../gltf-derive", version = "1.3.0" }
gltf-derive = { path = "../gltf-derive", version = "1.4.0" }
serde = "1.0"
serde_derive = "1.0"
serde_json = { features = ["raw_value"], version = "1.0" }
Expand Down
4 changes: 2 additions & 2 deletions src/accessor/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,15 +140,15 @@ impl<'a> Accessor<'a> {
self.json.component_type.unwrap().0
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
4 changes: 2 additions & 2 deletions src/animation/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -113,15 +113,15 @@ impl<'a> Animation<'a> {
}
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
8 changes: 4 additions & 4 deletions src/buffer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -103,15 +103,15 @@ impl<'a> Buffer<'a> {
self.json.name.as_deref()
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down Expand Up @@ -186,15 +186,15 @@ impl<'a> View<'a> {
self.json.target.map(|target| target.unwrap())
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
12 changes: 6 additions & 6 deletions src/camera.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,15 +89,15 @@ impl<'a> Camera<'a> {
}
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down Expand Up @@ -137,15 +137,15 @@ impl<'a> Orthographic<'a> {
self.json.znear
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down Expand Up @@ -185,15 +185,15 @@ impl<'a> Perspective<'a> {
self.json.znear
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
4 changes: 2 additions & 2 deletions src/image.rs
Original file line number Diff line number Diff line change
Expand Up @@ -131,15 +131,15 @@ impl<'a> Image<'a> {
}
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
4 changes: 2 additions & 2 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -446,15 +446,15 @@ impl Document {
}
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let root = self.0.extensions.as_ref()?;
Some(&root.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
10 changes: 5 additions & 5 deletions src/material.rs
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ impl<'a> Material<'a> {
PbrMetallicRoughness::new(self.document, &self.json.pbr_metallic_roughness)
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
Expand Down Expand Up @@ -239,7 +239,7 @@ impl<'a> Material<'a> {
/// Returns `true` if the [`KHR_materials_unlit`] property was specified, in which
/// case the renderer should prefer to ignore all PBR values except `baseColor`.
///
/// [`KHR_materials_unlit`](https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit#overview)
/// [`KHR_materials_unlit`]: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit#overview
#[cfg(feature = "KHR_materials_unlit")]
#[cfg_attr(docsrs, doc(cfg(feature = "KHR_materials_unlit")))]
pub fn unlit(&self) -> bool {
Expand Down Expand Up @@ -320,7 +320,7 @@ impl<'a> PbrMetallicRoughness<'a> {
})
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
Expand Down Expand Up @@ -610,7 +610,7 @@ impl<'a> NormalTexture<'a> {
self.texture.clone()
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
Expand Down Expand Up @@ -665,7 +665,7 @@ impl<'a> OcclusionTexture<'a> {
self.texture.clone()
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
Expand Down
8 changes: 4 additions & 4 deletions src/mesh/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,15 +148,15 @@ impl<'a> Mesh<'a> {
self.index
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down Expand Up @@ -215,15 +215,15 @@ impl<'a> Primitive<'a> {
Bounds { min, max }
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
8 changes: 4 additions & 4 deletions src/scene/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -145,15 +145,15 @@ impl<'a> Node<'a> {
}
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down Expand Up @@ -245,15 +245,15 @@ impl<'a> Scene<'a> {
self.index
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
4 changes: 2 additions & 2 deletions src/skin/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,15 +46,15 @@ impl<'a> Skin<'a> {
self.index
}

/// Returns the extension values map
/// Returns extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extensions(&self) -> Option<&Map<String, Value>> {
let ext = self.json.extensions.as_ref()?;
Some(&ext.others)
}

/// Return a value for a given extension name
/// Queries extension data unknown to this crate version.
#[cfg(feature = "extensions")]
#[cfg_attr(docsrs, doc(cfg(feature = "extensions")))]
pub fn extension_value(&self, ext_name: &str) -> Option<&Value> {
Expand Down
Loading

0 comments on commit c17732e

Please sign in to comment.