Skip to content

Commit 7a60869

Browse files
committed
Fix #21: Trying to remove a node from an empty node list raises error
1 parent 0163536 commit 7a60869

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

bdk_addon/terrain/operators.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,10 @@ def remove_terrain_layer_nodes(terrain_info_object: Object, nodes):
494494
remove_terrain_layer_node(terrain_info_object, nodes, node_index)
495495

496496

497-
def remove_terrain_layer_node(terrain_info_object: Object, nodes, nodes_index: int):
497+
def remove_terrain_layer_node(terrain_info_object: Object, nodes, nodes_index: int) -> bool:
498+
if nodes_index < 0 or nodes_index >= len(nodes):
499+
return False
500+
498501
node = nodes[nodes_index]
499502

500503
if node.type == 'PAINT':
@@ -509,6 +512,8 @@ def remove_terrain_layer_node(terrain_info_object: Object, nodes, nodes_index: i
509512

510513
nodes.remove(nodes_index)
511514

515+
return True
516+
512517

513518
def move_terrain_layer_node(direction: str, nodes, nodes_index: int) -> int:
514519
match direction:
@@ -574,7 +579,8 @@ def execute(self, context: Context):
574579
deco_layers_index = terrain_info.deco_layers_index
575580
deco_layer: 'BDK_PG_terrain_deco_layer' = deco_layers[deco_layers_index]
576581

577-
remove_terrain_layer_node(context.active_object, deco_layer.nodes, deco_layer.nodes_index)
582+
if not remove_terrain_layer_node(context.active_object, deco_layer.nodes, deco_layer.nodes_index):
583+
return {'CANCELLED'}
578584

579585
ensure_deco_layers(context.active_object)
580586

@@ -646,7 +652,8 @@ def execute(self, context: Context):
646652
paint_layers_index = terrain_info.paint_layers_index
647653
paint_layer = paint_layers[paint_layers_index]
648654

649-
remove_terrain_layer_node(context.active_object, paint_layer.nodes, paint_layer.nodes_index)
655+
if not remove_terrain_layer_node(context.active_object, paint_layer.nodes, paint_layer.nodes_index):
656+
return {'CANCELLED'}
650657

651658
ensure_terrain_layer_node_group(paint_layer.id, 'paint_layers', paint_layers_index, paint_layer.id, paint_layer.nodes, context.active_object)
652659

0 commit comments

Comments
 (0)