15#ifndef DRACO_ATTRIBUTES_POINT_ATTRIBUTE_H_
16#define DRACO_ATTRIBUTES_POINT_ATTRIBUTE_H_
53 bool Reset(
size_t num_attribute_values);
55 size_t size()
const {
return num_unique_entries_; }
57 if (identity_mapping_) {
58 return AttributeValueIndex(point_index.value());
60 return indices_map_[point_index];
68 return indices_map_.size();
82 void Resize(
size_t new_num_unique_entries);
89 identity_mapping_ =
true;
95 identity_mapping_ =
false;
96 indices_map_.resize(num_points, kInvalidAttributeValueIndex);
101 AttributeValueIndex entry_index) {
103 indices_map_[point_index] = entry_index;
112#ifdef DRACO_ATTRIBUTE_VALUES_DEDUPLICATION_SUPPORTED
116 AttributeValueIndex::ValueType DeduplicateValues(
121 AttributeValueIndex::ValueType DeduplicateValues(
129 std::unique_ptr<AttributeTransformData> transform_data) {
130 attribute_transform_data_ = std::move(transform_data);
133 return attribute_transform_data_.get();
136#ifdef DRACO_TRANSCODER_SUPPORTED
139 void RemoveUnusedValues();
143#ifdef DRACO_ATTRIBUTE_VALUES_DEDUPLICATION_SUPPORTED
144 template <
typename T>
145 AttributeValueIndex::ValueType DeduplicateTypedValues(
147 template <
typename T,
int COMPONENTS_COUNT>
148 AttributeValueIndex::ValueType DeduplicateFormattedValues(
154 std::unique_ptr<DataBuffer> attribute_buffer_;
158 AttributeValueIndex::ValueType num_unique_entries_;
160 bool identity_mapping_;
165 std::unique_ptr<AttributeTransformData> attribute_transform_data_;
174 size_t hash = base_hasher(attribute);
175 hash =
HashCombine(attribute.identity_mapping_, hash);
176 hash =
HashCombine(attribute.num_unique_entries_, hash);
178 if (!attribute.indices_map_.
empty()) {
180 reinterpret_cast<const char *
>(attribute.indices_map_.
data()),
181 attribute.indices_map_.
size());
184 if (attribute.attribute_buffer_ !=
nullptr) {
186 reinterpret_cast<const char *
>(attribute.attribute_buffer_->data()),
187 attribute.attribute_buffer_->data_size());
Definition data_buffer.h:36
Definition geometry_attribute.h:43
uint8_t num_components() const
Definition geometry_attribute.h:263
Type attribute_type() const
Definition geometry_attribute.h:256
bool normalized() const
Definition geometry_attribute.h:266
std::array< T, att_components_t > GetValue(AttributeValueIndex att_index) const
Definition geometry_attribute.h:92
const uint8_t * GetAddress(AttributeValueIndex att_index) const
Definition geometry_attribute.h:122
DataType data_type() const
Definition geometry_attribute.h:259
GeometryAttribute()
Definition geometry_attribute.cc:19
Type
Definition geometry_attribute.h:46
Definition draco_index_type_vector.h:32
const ValueTypeT * data() const
Definition draco_index_type_vector.h:82
bool empty() const
Definition draco_index_type_vector.h:60
size_t size() const
Definition draco_index_type_vector.h:59
Definition point_attribute.h:33
const uint8_t * GetAddressOfMappedIndex(PointIndex point_index) const
Definition point_attribute.h:71
size_t indices_map_size() const
Definition point_attribute.h:64
void CopyFrom(const PointAttribute &src_att)
Definition point_attribute.cc:46
void Init(Type attribute_type, int8_t num_components, DataType data_type, bool normalized, size_t num_attribute_values)
Definition point_attribute.cc:35
void SetPointMapEntry(PointIndex point_index, AttributeValueIndex entry_index)
Definition point_attribute.h:100
PointAttribute & operator=(PointAttribute &&attribute)=default
void Resize(size_t new_num_unique_entries)
Definition point_attribute.cc:80
bool is_mapping_identity() const
Definition point_attribute.h:63
const AttributeTransformData * GetAttributeTransformData() const
Definition point_attribute.h:132
void SetExplicitMapping(size_t num_points)
Definition point_attribute.h:94
AttributeValueIndex mapped_index(PointIndex point_index) const
Definition point_attribute.h:56
void SetAttributeTransformData(std::unique_ptr< AttributeTransformData > transform_data)
Definition point_attribute.h:128
friend struct PointAttributeHasher
Definition point_attribute.h:167
bool Reset(size_t num_attribute_values)
Definition point_attribute.cc:66
PointAttribute(PointAttribute &&attribute)=default
void GetMappedValue(PointIndex point_index, void *out_data) const
Definition point_attribute.h:108
void SetIdentityMapping()
Definition point_attribute.h:88
PointAttribute()
Definition point_attribute.cc:27
size_t size() const
Definition point_attribute.h:55
DataBuffer * buffer() const
Definition point_attribute.h:62
#define DRACO_DCHECK(x)
Definition macros.h:80
Definition attribute_octahedron_transform.cc:21
uint64_t FingerprintString(const char *s, size_t len)
Definition hash_utils.cc:24
size_t HashCombine(T1 a, T2 b)
Definition hash_utils.h:26
DataType
Definition draco_types.h:26
Definition GameApi_pl.cc:29382
Definition geometry_attribute.h:502
Definition point_attribute.h:171
size_t operator()(const PointAttribute &attribute) const
Definition point_attribute.h:172