= fbx_direct, a low-level FBX parser for Rust
**DEPRECATED**.
Use link:https://github.com/lo48576/fbxcel[`fbxcel`] instead.
fbx_direct is an FBX library for Rust programming language.
It is heavily inspired by link:https://en.wikipedia.org/wiki/StAX[Java Streaming API for XML (StAX)] and link:https://github.com/netvl/xml-rs[xml-rs].
This library currently contains event reader for Binary FBX and event writer for ASCII/Binary FBX like xml-rs.
ASCII FBX reader is not yet supported.
This library supports FBX 7.4 or later.
== Documentation
link:https://docs.rs/fbx_direct/[link to the documentation]
== TODO
.reader
- [x] Binary FBX parser
- [ ] ASCII FBX parser
.writer
- [x] Binary FBX writer
- [x] ASCII FBX writer
== License
Licensed under either of
- Apache License, Version 2.0, (link:LICENSE-APACHE[] or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (link:LICENSE-MIT[] or http://opensource.org/licenses/MIT)
at your option.
=== Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any
additional terms or conditions.
== Release Notes
=== 0.6.4
New feature and improvements::
Bump dependencies;;
`byteorder` 0.9 -> 0.10, `env_logger` 0.5.10 -> 0.6
Rewrite in Rust edition 2018;;
Applied `cargo fix` and fixed clippy lints.
=== 0.6.3
New feature and improvements::
Bump many dependencies;;
link:https://github.com/lo48576/fbx_direct/pull/2[#2], thanks @VictorKoenders
=== 0.6.2
No interface changes.
=== 0.6.1
New feature and improvements::
Bump `byteorder` crate version;;
0.5 -> 0.6
=== 0.6.0
Changes and deprecations::
Changed interface of `common::OwnedProperty::into_*()`;;
Their return types are changed from `Option<Foo>` to `Result<Foo, OwnedProperty>`.
Now they return `Err(self)` on conversion failure.
=== 0.5.1
Fixes::
Invalid left-brace '{' emission of FBX ascii writer;;
Sometimes '{' is missing in output data.
Now this is fixed.
=== 0.5.0
Changes and deprecations::
`writer::Error::DataTooLarge` variant is added;;
When a data size (number of elements, byte offset, byte size, etc.) is too large for the format of writing file,
this error will be emitted.
New feature and improvements::
Support FBX 7.5;;
From FBX 7.5.0, specification of binary format changed a little.
Now, binary reader/writer supports it.
Of course, FBX 7.4 is also supported.
=== 0.4.0
Changes and deprecations::
Relicenced under MIT and Apache-2.0;;
See link:https://github.com/l1048576/fbx_direct/issues/1[Issue #1].
Changed interface of `common::{OwnedProperty,Property}::{get,into}_binary()`;;
Now their type is `fn get_binary(&self, from_string: bool) -> Option<Cow<[u8]>>` and
`fn into_binary(&self, from_string: bool) -> Option<Vec<u8>>`.
Now the function tries to convert string to binary when `from_string` is `true`, and doesn't try when `false`.
=== 0.3.0
New feature and improvements::
ASCII FBX writer became available;;
Note that some feature (such as ascii representation of node property of boolean vector)
is unconfirmed and might be wrong.
`writer::EmitterConfig::fbx_version` member variable is added;;
This is used to specify FBX version to export.
Default value is `None`.
When `None`, it is automatically decided by writer if necessary.
When it cannot be automatically decided, error will be emitted.
Changes and deprecations::
`writer::Error::InvalidOption` variant is added;;
When writer is configured with invalid/inconsistent option or inconsistent writer event
(e.g. event specifying different version as writer config) is given, this error will be emitted.
=== 0.2.2
New feature and improvements::
`common::OwnedProperty::into_{bool,i16,i32,i64,f32,f64,vec_bool,vec_i32,vec_i64,vec_f32,vec_f64,string,binary}` is added;;
`get_foo` converts value safely but not consuming self.
`into_foo` converts value safely consuming self.
When both can be used, `into_foo` is preferred because it is more efficient.
=== 0.2.1
New feature and improvements::
`common::OwnedProperty::get_{bool,i16,i32,i64,f32,f64,vec_bool,vec_i32,vec_i64,vec_f32,vec_f64,string,binary}` is added;;
`get_foo` converts value safely but not consuming self.
Note that it cannot be used to conversion with loss of information (such as `i64` to `i32` or `f32` to `i64`),
but conversion between `f32` and `f64` is exceptionally allowed.
=== 0.2.0
- Binary FBX writer became available.
- Major changes.