Add Root::push()
and Index::push()
to assist with glTF construction.
#404
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
These methods reduce the amount of boilerplate and possible mistakes involved in constructing a glTF asset from scratch.
Most use cases are served by
Root::push()
;Index::push()
is useful for cases like animation samplers where the vector of objects is not in theRoot
, or in algorithmically complex situations such as pushing both within and outside closures, which would produce borrow conflicts if&mut Root
was required for everything.This requires some expansion of the(This PR no longer modifiesGet
trait to support writing. By keeping the oldGet::get()
, this is not a breaking change unless some dependent implementsGet
, but if we choose to make general breaking changes, it would probably make sense to rename the trait, and perhaps even declare it an implementation detail, seal it, and hide its methods.Get
and instead addsAsMut<Vec<T>>
implementations.)This is based on a helper function I wrote and used extensively in my own code, and I've also verified that these methods work well in the same situations.