#[non_exhaustive]pub struct ScaleCapabilityFacts {Show 16 fields
pub coverage: ScaleCapabilityCoverage,
pub morphs_present: bool,
pub morph_weights_present: bool,
pub whole_document_morphs_preservable: bool,
pub cameras_present: bool,
pub lights_present: bool,
pub instancing_present: bool,
pub unregistered_extensions_present: bool,
pub extras_present: bool,
pub unknown_source_members_present: bool,
pub non_triangle_primitives_present: bool,
pub unsupported_vertex_attributes_present: bool,
pub secondary_skin_influences_present: bool,
pub inverse_bind_issues_present: bool,
pub unsafe_accessor_layout_present: bool,
pub external_resources_present: bool,
}Expand description
Format-neutral capability facts a frontend projects from its raw source inventory before any scale plan or candidate exists.
This is deliberately coarser than a format’s own raw capability
manifest (for example animsmith_gltf::GltfCapabilityManifest): it only
carries the flags this module’s planning needs to fail closed on an
unsupported domain, per DESIGN.md Appendix D §D.4. A frontend projects
its richer, format-specific manifest down to these flags.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.coverage: ScaleCapabilityCoverageWhether the projection covers the complete source domain.
morphs_present: boolA morph target is present.
morph_weights_present: boolStatic or animated morph weights are present.
whole_document_morphs_preservable: boolThe format adapter owns exact preservation of every present morph payload for whole-document conversion.
Presence alone is never permission: this witness is set only after a raw adapter has validated its operation-specific write set and proof.
cameras_present: boolA camera is present.
lights_present: boolA punctual light is present.
instancing_present: boolGPU-instancing data is present.
unregistered_extensions_present: boolAn extension is not covered by a registered length-field handler.
extras_present: boolNon-null application-specific extras are present.
unknown_source_members_present: boolA JSON/source member outside the modeled schema was ignored.
non_triangle_primitives_present: boolA non-triangle-list primitive is present.
unsupported_vertex_attributes_present: boolA vertex attribute outside the normalized writer subset is present.
secondary_skin_influences_present: boolA secondary skin-influence set is present.
inverse_bind_issues_present: boolAn inverse-bind accessor is missing, empty, mismatched, or unreadable.
unsafe_accessor_layout_present: boolA scale-bearing source layout cannot be safely bounded or rewritten.
external_resources_present: boolAn external (non-embedded) resource is referenced.
Implementations§
Source§impl ScaleCapabilityFacts
impl ScaleCapabilityFacts
Sourcepub fn is_supported(&self) -> bool
pub fn is_supported(&self) -> bool
A capability projection declaring complete coverage and no unsupported domain for either operation.
This operation-agnostic query stays conservative for callers that do
not yet have an operation in hand. Planning uses
Self::is_supported_for so a format adapter that owns raw morph
preservation can admit morphs for whole-document conversion without
weakening the rest/bind boundary.
Sourcepub fn is_supported_for(&self, operation: ScaleOperation) -> bool
pub fn is_supported_for(&self, operation: ScaleOperation) -> bool
Whether this complete projection is supported for operation.
Morph targets are deliberately operation-specific. A
whole-document format adapter may scale raw POSITION deltas and
preserve dimensionless weights outside crate::Document; rest/bind
still refuses every morph because its raw preservation proof has not
been defined. All other capability domains retain the same refusal for
both operations.
Trait Implementations§
Source§impl Clone for ScaleCapabilityFacts
impl Clone for ScaleCapabilityFacts
Source§fn clone(&self) -> ScaleCapabilityFacts
fn clone(&self) -> ScaleCapabilityFacts
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more