39 type.copy_to_uninitialized(value, value_);
74 new (r_value)
T(
data_[index]);
97 new (r_value)
T(
data_[index]);
108 template<
typename StructT,
typename ElemT, ElemT (*GetFunc)(const StructT &)>
121 const StructT &struct_value =
data_[index];
122 const ElemT value = GetFunc(struct_value);
123 new (r_value) ElemT(value);
139 new (r_value)
T(
data_[index]);
144 data_[index] = *
reinterpret_cast<const T *
>(value);
159 template<
typename StructT,
161 ElemT (*GetFunc)(
const StructT &),
162 void (*SetFunc)(StructT &,
const ElemT &)>
175 const StructT &struct_value =
data_[index];
176 const ElemT value = GetFunc(struct_value);
177 new (r_value) ElemT(value);
182 StructT &struct_value =
data_[index];
183 const ElemT &typed_value = *
reinterpret_cast<const ElemT *
>(value);
184 SetFunc(struct_value, typed_value);
238 : name_(
std::move(name)),
240 data_type_(data_type),
241 createable_(createable),
243 deletable_(deletable)
276 const StringRef attribute_name)
const = 0;
278 const StringRef attribute_name)
const = 0;
308 : domain_(domain), custom_data_access_(custom_data_access)
313 const StringRef attribute_name)
const final;
316 const StringRef attribute_name)
const final;
336 const int domain_size)
const
338 return std::make_unique<ArrayReadAttribute<T>>(
339 domain_,
Span(
static_cast<const T *
>(layer.
data), domain_size));
345 return std::make_unique<ArrayWriteAttribute<T>>(
351 return ((1ULL << data_type) & supported_types_mask) != 0;
366 const AsReadAttribute as_read_attribute_;
367 const AsWriteAttribute as_write_attribute_;
374 const AsReadAttribute as_read_attribute,
375 const AsWriteAttribute as_write_attribute)
377 attribute_type_(attribute_type),
378 stored_type_(stored_type),
379 custom_data_access_(custom_data_access),
380 as_read_attribute_(as_read_attribute),
381 as_write_attribute_(as_write_attribute)
386 const StringRef attribute_name)
const final;
388 const StringRef attribute_name)
const final;
407 const AsReadAttribute as_read_attribute_;
408 const AsWriteAttribute as_write_attribute_;
409 const UpdateOnWrite update_on_write_;
420 const AsReadAttribute as_read_attribute,
421 const AsWriteAttribute as_write_attribute,
422 const UpdateOnWrite update_on_write)
424 std::move(attribute_name),
domain, attribute_type, creatable, writable, deletable),
425 stored_type_(stored_type),
426 custom_data_access_(custom_data_access),
427 as_read_attribute_(as_read_attribute),
428 as_write_attribute_(as_write_attribute),
429 update_on_write_(update_on_write)
470 builtin_attribute_providers_.
add_new(provider->name(), provider);
471 supported_domains_.
add(provider->domain());
474 provider->foreach_domain([&](
AttributeDomain domain) { supported_domains_.
add(domain); });
480 return builtin_attribute_providers_;
485 return dynamic_attribute_providers_;
490 return supported_domains_;
static uint8 component(Color32 c, uint i)
#define CD_MASK_PROP_COLOR
#define CD_MASK_PROP_FLOAT3
#define CD_MASK_PROP_FLOAT2
#define CD_MASK_PROP_BOOL
#define CD_MASK_PROP_INT32
#define CD_MASK_PROP_FLOAT
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void add_new(const Key &key, const Value &value)
ArrayReadAttribute(AttributeDomain domain, Span< T > data)
void get_internal(const int64_t index, void *r_value) const override
void initialize_span() const override
ArrayWriteAttribute(AttributeDomain domain, MutableSpan< T > data)
void get_internal(const int64_t index, void *r_value) const override
void apply_span_if_necessary() override
void initialize_span(const bool UNUSED(write_only)) override
void set_internal(const int64_t index, const void *value) override
const WritableEnum writable_
const CreatableEnum createable_
AttributeDomain domain() const
virtual bool try_create(GeometryComponent &UNUSED(component)) const =0
virtual WriteAttributePtr try_get_for_write(GeometryComponent &component) const =0
BuiltinAttributeProvider(std::string name, const AttributeDomain domain, const CustomDataType data_type, const CreatableEnum createable, const WritableEnum writable, const DeletableEnum deletable)
virtual bool exists(const GeometryComponent &component) const =0
virtual ReadAttributePtr try_get_for_read(const GeometryComponent &component) const =0
const AttributeDomain domain_
virtual bool try_delete(GeometryComponent &component) const =0
const CustomDataType data_type_
StringRefNull name() const
const DeletableEnum deletable_
CustomDataType data_type() const
bool exists(const GeometryComponent &component) const final
WriteAttributePtr try_get_for_write(GeometryComponent &component) const final
bool try_create(GeometryComponent &component) const final
BuiltinCustomDataLayerProvider(std::string attribute_name, const AttributeDomain domain, const CustomDataType attribute_type, const CustomDataType stored_type, const CreatableEnum creatable, const WritableEnum writable, const DeletableEnum deletable, const CustomDataAccessInfo custom_data_access, const AsReadAttribute as_read_attribute, const AsWriteAttribute as_write_attribute, const UpdateOnWrite update_on_write)
bool try_delete(GeometryComponent &component) const final
ReadAttributePtr try_get_for_read(const GeometryComponent &component) const final
Span< const DynamicAttributesProvider * > dynamic_attribute_providers() const
const Map< std::string, const BuiltinAttributeProvider * > & builtin_attribute_providers() const
Span< AttributeDomain > supported_domains() const
ComponentAttributeProviders(Span< const BuiltinAttributeProvider * > builtin_attribute_providers, Span< const DynamicAttributesProvider * > dynamic_attribute_providers)
~ConstantReadAttribute() override
void get_internal(const int64_t UNUSED(index), void *r_value) const override
void initialize_span() const override
ConstantReadAttribute(AttributeDomain domain, const int64_t size, const CPPType &type, const void *value)
void foreach_domain(const FunctionRef< void(AttributeDomain)> callback) const final
CustomDataAttributeProvider(const AttributeDomain domain, const CustomDataAccessInfo custom_data_access)
void get_internal(const int64_t index, void *r_value) const override
DerivedArrayReadAttribute(AttributeDomain domain, Span< StructT > data)
DerivedArrayWriteAttribute(AttributeDomain domain, MutableSpan< StructT > data)
void set_internal(const int64_t index, const void *value) override
void get_internal(const int64_t index, void *r_value) const override
virtual bool try_create(GeometryComponent &UNUSED(component), const StringRef UNUSED(attribute_name), const AttributeDomain UNUSED(domain), const CustomDataType UNUSED(data_type)) const
virtual void foreach_domain(const FunctionRef< void(AttributeDomain)> callback) const =0
virtual bool foreach_attribute(const GeometryComponent &component, const AttributeForeachCallback callback) const =0
virtual ReadAttributePtr try_get_for_read(const GeometryComponent &component, const StringRef attribute_name) const =0
virtual WriteAttributePtr try_get_for_write(GeometryComponent &component, const StringRef attribute_name) const =0
virtual bool try_delete(GeometryComponent &component, const StringRef attribute_name) const =0
bool try_delete(GeometryComponent &component, const StringRef attribute_name) const final
ReadAttributePtr try_get_for_read(const GeometryComponent &component, const StringRef attribute_name) const final
void foreach_domain(const FunctionRef< void(AttributeDomain)> callback) const final
WriteAttributePtr try_get_for_write(GeometryComponent &component, const StringRef attribute_name) const final
NamedLegacyCustomDataProvider(const AttributeDomain domain, const CustomDataType attribute_type, const CustomDataType stored_type, const CustomDataAccessInfo custom_data_access, const AsReadAttribute as_read_attribute, const AsWriteAttribute as_write_attribute)
bool foreach_attribute(const GeometryComponent &component, const AttributeForeachCallback callback) const final
void get_internal(const int64_t index, void *r_value) const override
void initialize_span() const override
OwnedArrayReadAttribute(AttributeDomain domain, Array< T > data)
const CPPType & cpp_type_
void get(const int64_t index, void *r_value) const
AttributeDomain domain() const
AttributeDomain domain() const
void get(const int64_t index, void *r_value) const
int64_t alignment() const
void destruct(void *ptr) const
void fill_uninitialized(const void *value, void *dst, int64_t n) const
void copy_to_uninitialized(const void *src, void *dst) const
DEGForeachIDComponentCallback callback
void(* MEM_freeN)(void *vmemh)
void *(* MEM_mallocN_aligned)(size_t len, size_t alignment, const char *str)
std::unique_ptr< WriteAttribute > WriteAttributePtr
std::unique_ptr< ReadAttribute > ReadAttributePtr
unsigned __int64 uint64_t
ConstCustomDataGetter get_const_custom_data
CustomDataGetter get_custom_data
void(*)(GeometryComponent &component) UpdateCustomDataPointers
UpdateCustomDataPointers update_custom_data_pointers
const CustomData *(*)(const GeometryComponent &component) ConstCustomDataGetter
CustomData *(*)(GeometryComponent &component) CustomDataGetter