diff options
Diffstat (limited to 'extern/draco/draco/src/draco/attributes/attribute_transform.cc')
-rw-r--r-- | extern/draco/draco/src/draco/attributes/attribute_transform.cc | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/extern/draco/draco/src/draco/attributes/attribute_transform.cc b/extern/draco/draco/src/draco/attributes/attribute_transform.cc index 55af630ac07..fb2ed18297a 100644 --- a/extern/draco/draco/src/draco/attributes/attribute_transform.cc +++ b/extern/draco/draco/src/draco/attributes/attribute_transform.cc @@ -24,21 +24,18 @@ bool AttributeTransform::TransferToAttribute(PointAttribute *attribute) const { return true; } -std::unique_ptr<PointAttribute> AttributeTransform::InitPortableAttribute( - int num_entries, int num_components, int num_points, - const PointAttribute &attribute, bool is_unsigned) const { - const DataType dt = is_unsigned ? DT_UINT32 : DT_INT32; - GeometryAttribute va; - va.Init(attribute.attribute_type(), nullptr, num_components, dt, false, +std::unique_ptr<PointAttribute> AttributeTransform::InitTransformedAttribute( + const PointAttribute &src_attribute, int num_entries) { + const int num_components = GetTransformedNumComponents(src_attribute); + const DataType dt = GetTransformedDataType(src_attribute); + GeometryAttribute ga; + ga.Init(src_attribute.attribute_type(), nullptr, num_components, dt, false, num_components * DataTypeLength(dt), 0); - std::unique_ptr<PointAttribute> portable_attribute(new PointAttribute(va)); - portable_attribute->Reset(num_entries); - if (num_points) { - portable_attribute->SetExplicitMapping(num_points); - } else { - portable_attribute->SetIdentityMapping(); - } - return portable_attribute; + std::unique_ptr<PointAttribute> transformed_attribute(new PointAttribute(ga)); + transformed_attribute->Reset(num_entries); + transformed_attribute->SetIdentityMapping(); + transformed_attribute->set_unique_id(src_attribute.unique_id()); + return transformed_attribute; } } // namespace draco |