Move to option based API for materials #60
Merged
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.
Proposed fix for #59
The issue itself describes what this change is trying to address. Material fields are now
Option
s which means users will be able to know if a field was not present, instead of having a default value provided.I took the liberty of doing a minor refactor to reduce the number of match statements / lines of code, as well as just deriving
Default
where the a struct'sDefault
implementation was just aDefault
for all of its fields, namely inMesh
andMaterial
. The former was always possible, while the latter is only possible after this change since some values were initialized to 1.0.The bulk of the change is in example / test code, I'm not 100% happy with adding the
unwrap
calls in the test but not sure how to do it otherwise without adding quite some boilerplate.I'm also not very happy with what the
parse_float
andparse_float3
functions look like, they save a bunch of code but are not very pretty