forked from joey/godottest
47 lines
1.1 KiB
GDScript
47 lines
1.1 KiB
GDScript
extends SS2D_Action
|
|
class_name SS2D_ActionDeleteControlPoint
|
|
|
|
enum PointType {POINT_IN, POINT_OUT}
|
|
|
|
var _invert_orientation: SS2D_ActionInvertOrientation
|
|
|
|
var _shape: SS2D_Shape
|
|
var _key: int
|
|
var _point_type: PointType
|
|
var _old_value: Vector2
|
|
|
|
|
|
func _init(shape: SS2D_Shape, key: int, point_type: PointType) -> void:
|
|
_shape = shape
|
|
_key = key
|
|
_point_type = point_type
|
|
var pa := _shape.get_point_array()
|
|
_old_value = pa.get_point_in(key) if _point_type == PointType.POINT_IN else pa.get_point_out(key)
|
|
_invert_orientation = SS2D_ActionInvertOrientation.new(shape)
|
|
|
|
|
|
func get_name() -> String:
|
|
return "Delete Control Point " + ("In" if _point_type == PointType.POINT_IN else "Out")
|
|
|
|
|
|
func do() -> void:
|
|
var pa := _shape.get_point_array()
|
|
pa.begin_update()
|
|
if _point_type == PointType.POINT_IN:
|
|
pa.set_point_in(_key, Vector2.ZERO)
|
|
else:
|
|
pa.set_point_out(_key, Vector2.ZERO)
|
|
_invert_orientation.do()
|
|
pa.end_update()
|
|
|
|
|
|
func undo() -> void:
|
|
var pa := _shape.get_point_array()
|
|
pa.begin_update()
|
|
_invert_orientation.undo()
|
|
if _point_type == PointType.POINT_IN:
|
|
pa.set_point_in(_key, _old_value)
|
|
else:
|
|
pa.set_point_out(_key, _old_value)
|
|
pa.end_update()
|