Files
test2/source/blender/editors/include/ED_geometry.hh
Hans Goudey 740d1fbc4b Geometry Nodes: Log socket values for node tools
To ease the process of debugging a node group while creating
a node tool, while the group is visible in a node editor, log the socket
values from its last execution. The values are only logged for the
active object is nothing selected. The Viewer node is still not supported
because visualization would probably be very tricky.

Pull Request: https://projects.blender.org/blender/blender/pulls/120596
2024-04-14 16:47:46 +02:00

90 lines
2.6 KiB
C++

/* SPDX-FileCopyrightText: 2020 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup editors
*/
#pragma once
#include <string>
#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::nodes::geo_eval_log {
class GeoModifierLog;
}
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 {
struct GeoOperatorLog {
std::string node_group_name;
std::unique_ptr<nodes::geo_eval_log::GeoModifierLog> log;
GeoOperatorLog() = default;
~GeoOperatorLog();
};
const GeoOperatorLog &node_group_operator_static_eval_log();
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