Files
test2/source/blender/editors/include/ED_geometry.hh
Hans Goudey 10bc136a1a Fix #119935: Attribute set operator support for 2D integer vector lost
Also fix the poll to properly check for the remaining unsupported types.
Don't add back Quaternion support, since that's arguably less useful,
and we might want different ways to set those values compared to
just entering WXYZ.
2024-03-27 13:14:02 -04:00

75 lines
2.3 KiB
C++

/* SPDX-FileCopyrightText: 2020 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup editors
*/
#pragma once
#include "BLI_generic_pointer.hh"
#include "BLI_string_ref.hh"
#include "DNA_customdata_types.h"
#include "BKE_screen.hh"
struct Mesh;
struct ReportList;
struct PointerRNA;
struct PropertyRNA;
namespace blender::bke {
enum class AttrDomain : int8_t;
}
namespace blender::ed::geometry {
/* -------------------------------------------------------------------- */
/** \name Attribute Value RNA Property Helpers
*
* Functions to make it easier to register RNA properties for the various attribute types and
* retrieve/set their values.
* \{ */
StringRefNull rna_property_name_for_type(eCustomDataType type);
PropertyRNA *rna_property_for_type(PointerRNA &ptr, const eCustomDataType type);
void register_rna_properties_for_attribute_types(StructRNA &srna);
GPointer rna_property_for_attribute_type_retrieve_value(PointerRNA &ptr,
const eCustomDataType type,
void *buffer);
void rna_property_for_attribute_type_set_value(PointerRNA &ptr, PropertyRNA &prop, GPointer value);
bool attribute_set_poll(bContext &C, const ID &object_data);
/** \} */
} // namespace blender::ed::geometry
void ED_operatortypes_geometry();
/**
* Convert an attribute with the given name to a new type and domain.
* The attribute must already exist.
*
* \note Does not support meshes in edit mode.
*/
bool ED_geometry_attribute_convert(Mesh *mesh,
const char *name,
eCustomDataType dst_type,
blender::bke::AttrDomain dst_domain,
ReportList *reports);
namespace blender::ed::geometry {
MenuType node_group_operator_assets_menu();
MenuType node_group_operator_assets_menu_unassigned();
void clear_operator_asset_trees();
void ui_template_node_operator_asset_menu_items(uiLayout &layout,
const bContext &C,
StringRef catalog_path);
void ui_template_node_operator_asset_root_items(uiLayout &layout, const bContext &C);
} // namespace blender::ed::geometry