Geometry Nodes: Remove experimental option for fields
This enables fields as the official workflow for geometry nodes. While many features are converted to use fields rather than the old attribute workflow, many are not yet converted. In that case, the unconverted nodes are still accessible with an experimental option. In the coming weeks the rest of the nodes will be converted. Differential Revision: https://developer.blender.org/D12672
This commit is contained in:
committed by
Hans Goudey
parent
86ec9d79ec
commit
95fca22bfe
@@ -2251,7 +2251,6 @@ class USERPREF_PT_experimental_new_features(ExperimentalPanel, Panel):
|
||||
({"property": "use_sculpt_tools_tilt"}, "T82877"),
|
||||
({"property": "use_extended_asset_browser"}, ("project/view/130/", "Project Page")),
|
||||
({"property": "use_override_templates"}, ("T73318", "Milestone 4")),
|
||||
({"property": "use_geometry_nodes_fields"}, "T91274"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -2285,6 +2284,7 @@ class USERPREF_PT_experimental_debugging(ExperimentalPanel, Panel):
|
||||
({"property": "override_auto_resync"}, "T83811"),
|
||||
({"property": "proxy_to_override_auto_conversion"}, "T91671"),
|
||||
({"property": "use_cycles_debug"}, None),
|
||||
({"property": "use_geometry_nodes_legacy"}, "T91274"),
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@@ -180,11 +180,8 @@ def object_eevee_cycles_shader_nodes_poll(context):
|
||||
eevee_cycles_shader_nodes_poll(context))
|
||||
|
||||
|
||||
def geometry_nodes_fields_poll(context):
|
||||
return context.preferences.experimental.use_geometry_nodes_fields
|
||||
|
||||
def geometry_nodes_fields_legacy_poll(context):
|
||||
return not context.preferences.experimental.use_geometry_nodes_fields
|
||||
def geometry_nodes_legacy_poll(context):
|
||||
return context.preferences.experimental.use_geometry_nodes_legacy
|
||||
|
||||
|
||||
# All standard node categories currently used in nodes.
|
||||
@@ -483,27 +480,27 @@ texture_node_categories = [
|
||||
geometry_node_categories = [
|
||||
# Geometry Nodes
|
||||
GeometryNodeCategory("GEO_ATTRIBUTE", "Attribute", items=[
|
||||
NodeItem("GeometryNodeLegacyAttributeRandomize", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeMath", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeClamp", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeCompare", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeConvert", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeCurveMap", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeFill", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeMix", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeProximity", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeColorRamp", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeVectorMath", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeVectorRotate", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeSampleTexture", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeCombineXYZ", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeSeparateXYZ", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeMapRange", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeTransfer", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeAttributeRemove", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeRandomize", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeMath", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeClamp", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeCompare", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeConvert", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeCurveMap", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeFill", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeMix", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeProximity", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeColorRamp", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeVectorMath", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeVectorRotate", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeSampleTexture", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeCombineXYZ", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeSeparateXYZ", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeMapRange", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAttributeTransfer", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeAttributeRemove", poll=geometry_nodes_legacy_poll),
|
||||
|
||||
NodeItem("GeometryNodeAttributeCapture", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeAttributeStatistic", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeAttributeCapture"),
|
||||
NodeItem("GeometryNodeAttributeStatistic"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_COLOR", "Color", items=[
|
||||
NodeItem("ShaderNodeMixRGB"),
|
||||
@@ -513,24 +510,24 @@ geometry_node_categories = [
|
||||
NodeItem("ShaderNodeCombineRGB"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_CURVE", "Curve", items=[
|
||||
NodeItem("GeometryNodeLegacyCurveSubdivide", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveReverse", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveSplineType", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveSetHandles", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveSelectHandles", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyMeshToCurve", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveToPoints", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveEndpoints", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveSubdivide", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveReverse", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveSplineType", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveSetHandles", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveSelectHandles", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyMeshToCurve", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveToPoints", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyCurveEndpoints", poll=geometry_nodes_legacy_poll),
|
||||
|
||||
NodeItem("GeometryNodeCurveToMesh"),
|
||||
NodeItem("GeometryNodeCurveResample"),
|
||||
NodeItem("GeometryNodeCurveFill"),
|
||||
NodeItem("GeometryNodeCurveTrim"),
|
||||
NodeItem("GeometryNodeCurveLength"),
|
||||
NodeItem("GeometryNodeCurveParameter", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeInputTangent", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeCurveSample", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeCurveFillet", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeCurveParameter"),
|
||||
NodeItem("GeometryNodeInputTangent"),
|
||||
NodeItem("GeometryNodeCurveSample"),
|
||||
NodeItem("GeometryNodeCurveFillet"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_PRIMITIVES_CURVE", "Curve Primitives", items=[
|
||||
NodeItem("GeometryNodeCurvePrimitiveLine"),
|
||||
@@ -542,20 +539,20 @@ geometry_node_categories = [
|
||||
NodeItem("GeometryNodeCurvePrimitiveBezierSegment"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_GEOMETRY", "Geometry", items=[
|
||||
NodeItem("GeometryNodeLegacyDeleteGeometry", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyRaycast", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyDeleteGeometry", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyRaycast", poll=geometry_nodes_legacy_poll),
|
||||
|
||||
NodeItem("GeometryNodeBoundBox"),
|
||||
NodeItem("GeometryNodeConvexHull"),
|
||||
NodeItem("GeometryNodeTransform"),
|
||||
NodeItem("GeometryNodeJoinGeometry"),
|
||||
NodeItem("GeometryNodeSeparateComponents"),
|
||||
NodeItem("GeometryNodeSetPosition", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeRealizeInstances", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeSetPosition"),
|
||||
NodeItem("GeometryNodeRealizeInstances"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_INPUT", "Input", items=[
|
||||
NodeItem("FunctionNodeLegacyRandomFloat", poll=geometry_nodes_fields_legacy_poll),
|
||||
|
||||
NodeItem("FunctionNodeLegacyRandomFloat", poll=geometry_nodes_legacy_poll),
|
||||
|
||||
NodeItem("GeometryNodeObjectInfo"),
|
||||
NodeItem("GeometryNodeCollectionInfo"),
|
||||
NodeItem("ShaderNodeValue"),
|
||||
@@ -563,26 +560,26 @@ geometry_node_categories = [
|
||||
NodeItem("FunctionNodeInputVector"),
|
||||
NodeItem("GeometryNodeInputMaterial"),
|
||||
NodeItem("GeometryNodeIsViewport"),
|
||||
NodeItem("GeometryNodeInputPosition", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeInputIndex", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeInputNormal", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeInputPosition"),
|
||||
NodeItem("GeometryNodeInputIndex"),
|
||||
NodeItem("GeometryNodeInputNormal"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_MATERIAL", "Material", items=[
|
||||
NodeItem("GeometryNodeLegacyMaterialAssign", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacySelectByMaterial", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyMaterialAssign", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacySelectByMaterial", poll=geometry_nodes_legacy_poll),
|
||||
|
||||
NodeItem("GeometryNodeMaterialAssign", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeMaterialSelection", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeMaterialAssign"),
|
||||
NodeItem("GeometryNodeMaterialSelection"),
|
||||
NodeItem("GeometryNodeMaterialReplace"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_MESH", "Mesh", items=[
|
||||
NodeItem("GeometryNodeLegacyEdgeSplit", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacySubdivisionSurface", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyEdgeSplit", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacySubdivisionSurface", poll=geometry_nodes_legacy_poll),
|
||||
|
||||
NodeItem("GeometryNodeBoolean"),
|
||||
NodeItem("GeometryNodeTriangulate"),
|
||||
NodeItem("GeometryNodeMeshSubdivide"),
|
||||
NodeItem("GeometryNodePointsToVertices", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodePointsToVertices"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_PRIMITIVES_MESH", "Mesh Primitives", items=[
|
||||
NodeItem("GeometryNodeMeshCircle"),
|
||||
@@ -595,16 +592,16 @@ geometry_node_categories = [
|
||||
NodeItem("GeometryNodeMeshUVSphere"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_POINT", "Point", items=[
|
||||
NodeItem("GeometryNodeMeshToPoints", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeInstanceOnPoints", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeDistributePointsOnFaces", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("GeometryNodeLegacyPointDistribute", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointInstance", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointSeparate", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointScale", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointTranslate", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyRotatePoints", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAlignRotationToVector", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeMeshToPoints"),
|
||||
NodeItem("GeometryNodeInstanceOnPoints"),
|
||||
NodeItem("GeometryNodeDistributePointsOnFaces"),
|
||||
NodeItem("GeometryNodeLegacyPointDistribute", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointInstance", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointSeparate", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointScale", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointTranslate", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyRotatePoints", poll=geometry_nodes_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyAlignRotationToVector", poll=geometry_nodes_legacy_poll),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_TEXT", "Text", items=[
|
||||
NodeItem("FunctionNodeStringLength"),
|
||||
@@ -622,10 +619,10 @@ geometry_node_categories = [
|
||||
NodeItem("FunctionNodeFloatCompare"),
|
||||
NodeItem("FunctionNodeFloatToInt"),
|
||||
NodeItem("GeometryNodeSwitch"),
|
||||
NodeItem("FunctionNodeRandomValue", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("FunctionNodeRandomValue"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_TEXTURE", "Texture", items=[
|
||||
NodeItem("ShaderNodeTexNoise", poll=geometry_nodes_fields_poll),
|
||||
NodeItem("ShaderNodeTexNoise"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_VECTOR", "Vector", items=[
|
||||
NodeItem("ShaderNodeVectorCurve"),
|
||||
@@ -638,7 +635,7 @@ geometry_node_categories = [
|
||||
NodeItem("GeometryNodeViewer"),
|
||||
]),
|
||||
GeometryNodeCategory("GEO_VOLUME", "Volume", items=[
|
||||
NodeItem("GeometryNodeLegacyPointsToVolume", poll=geometry_nodes_fields_legacy_poll),
|
||||
NodeItem("GeometryNodeLegacyPointsToVolume", poll=geometry_nodes_legacy_poll),
|
||||
|
||||
NodeItem("GeometryNodeVolumeToMesh"),
|
||||
]),
|
||||
|
||||
@@ -637,6 +637,7 @@ typedef struct UserDef_Experimental {
|
||||
char no_override_auto_resync;
|
||||
char no_proxy_to_override_conversion;
|
||||
char use_cycles_debug;
|
||||
char use_geometry_nodes_legacy;
|
||||
char SANITIZE_AFTER_HERE;
|
||||
/* The following options are automatically sanitized (set to 0)
|
||||
* when the release cycle is not alpha. */
|
||||
@@ -647,7 +648,6 @@ typedef struct UserDef_Experimental {
|
||||
char use_sculpt_tools_tilt;
|
||||
char use_extended_asset_browser;
|
||||
char use_override_templates;
|
||||
char use_geometry_nodes_fields;
|
||||
char _pad[3];
|
||||
/** `makesdna` does not allow empty structs. */
|
||||
} UserDef_Experimental;
|
||||
|
||||
@@ -6335,9 +6335,10 @@ static void rna_def_userdef_experimental(BlenderRNA *brna)
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Override Templates", "Enable library override template in the python API");
|
||||
|
||||
prop = RNA_def_property(srna, "use_geometry_nodes_fields", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "use_geometry_nodes_fields", 1);
|
||||
RNA_def_property_ui_text(prop, "Geometry Nodes Fields", "Enable field nodes in geometry nodes");
|
||||
prop = RNA_def_property(srna, "use_geometry_nodes_legacy", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "use_geometry_nodes_legacy", 1);
|
||||
RNA_def_property_ui_text(
|
||||
prop, "Geometry Nodes Legacy", "Enable legacy geometry nodes in the menu");
|
||||
}
|
||||
|
||||
static void rna_def_userdef_addon_collection(BlenderRNA *brna, PropertyRNA *cprop)
|
||||
|
||||
@@ -1146,8 +1146,7 @@ static void draw_property_for_socket(uiLayout *layout,
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
if (input_has_attribute_toggle(*nmd->node_group, socket_index) &&
|
||||
USER_EXPERIMENTAL_TEST(&U, use_geometry_nodes_fields)) {
|
||||
if (input_has_attribute_toggle(*nmd->node_group, socket_index)) {
|
||||
const std::string rna_path_use_attribute = "[\"" + std::string(socket_id_esc) +
|
||||
use_attribute_suffix + "\"]";
|
||||
const std::string rna_path_attribute_name = "[\"" + std::string(socket_id_esc) +
|
||||
@@ -1240,7 +1239,7 @@ static void panel_draw(const bContext *C, Panel *panel)
|
||||
});
|
||||
}
|
||||
|
||||
if (USER_EXPERIMENTAL_TEST(&U, use_geometry_nodes_fields) && has_legacy_node) {
|
||||
if (has_legacy_node) {
|
||||
uiLayout *row = uiLayoutRow(layout, false);
|
||||
uiItemL(row, IFACE_("Node tree has legacy node"), ICON_ERROR);
|
||||
uiLayout *sub = uiLayoutRow(row, false);
|
||||
|
||||
@@ -878,11 +878,9 @@ class GeometryNodesEvaluator {
|
||||
|
||||
NodeParamsProvider params_provider{*this, node, node_state};
|
||||
GeoNodeExecParams params{params_provider};
|
||||
if (USER_EXPERIMENTAL_TEST(&U, use_geometry_nodes_fields)) {
|
||||
if (node->idname().find("Legacy") != StringRef::not_found) {
|
||||
params.error_message_add(geo_log::NodeWarningType::Legacy,
|
||||
TIP_("Legacy node will be removed before Blender 4.0"));
|
||||
}
|
||||
if (node->idname().find("Legacy") != StringRef::not_found) {
|
||||
params.error_message_add(geo_log::NodeWarningType::Legacy,
|
||||
TIP_("Legacy node will be removed before Blender 4.0"));
|
||||
}
|
||||
bnode.typeinfo->geometry_node_execute(params);
|
||||
}
|
||||
@@ -891,14 +889,12 @@ class GeometryNodesEvaluator {
|
||||
const MultiFunction &fn,
|
||||
NodeState &node_state)
|
||||
{
|
||||
if (USER_EXPERIMENTAL_TEST(&U, use_geometry_nodes_fields)) {
|
||||
if (node->idname().find("Legacy") != StringRef::not_found) {
|
||||
/* Create geometry nodes params just for creating an error message. */
|
||||
NodeParamsProvider params_provider{*this, node, node_state};
|
||||
GeoNodeExecParams params{params_provider};
|
||||
params.error_message_add(geo_log::NodeWarningType::Legacy,
|
||||
TIP_("Legacy node will be removed before Blender 4.0"));
|
||||
}
|
||||
if (node->idname().find("Legacy") != StringRef::not_found) {
|
||||
/* Create geometry nodes params just for creating an error message. */
|
||||
NodeParamsProvider params_provider{*this, node, node_state};
|
||||
GeoNodeExecParams params{params_provider};
|
||||
params.error_message_add(geo_log::NodeWarningType::Legacy,
|
||||
TIP_("Legacy node will be removed before Blender 4.0"));
|
||||
}
|
||||
|
||||
LinearAllocator<> &allocator = local_allocators_.local();
|
||||
|
||||
Reference in New Issue
Block a user