Cache tile mode rects (#443)

* Cache tile mode rects

* Make TransparentChecker don't calculate tile mode rect on its own

* Minor fixes

- typo
- formatting
- moved unlock() call to the method where matching lock() was called
This commit is contained in:
kleonc 2021-01-28 20:21:48 +01:00 committed by GitHub
parent 4db21dae95
commit 4001a32f2b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 23 additions and 32 deletions

View file

@ -6,6 +6,7 @@ var name := "" setget name_changed
var size : Vector2 setget size_changed
var undo_redo : UndoRedo
var tile_mode : int = Global.TileMode.NONE
var tile_mode_rects := [] # Cached to avoid recalculation
var undos := 0 # The number of times we added undo properties
var has_changed := false setget has_changed_changed
var frames := [] setget frames_changed # Array of Frames (that contain Cels)
@ -40,6 +41,7 @@ func _init(_frames := [], _name := tr("untitled"), _size := Vector2(64, 64)) ->
frames = _frames
name = _name
size = _size
update_tile_mode_rects()
select_all_pixels()
undo_redo = UndoRedo.new()
@ -362,6 +364,7 @@ func name_changed(value : String) -> void:
func size_changed(value : Vector2) -> void:
size = value
update_tile_mode_rects()
if Global.selection_rectangle._selected_rect.has_no_area():
select_all_pixels()
@ -568,13 +571,12 @@ func has_changed_changed(value : bool) -> void:
func get_tile_mode_rect() -> Rect2:
match Global.current_project.tile_mode:
Global.TileMode.NONE:
return Rect2(Vector2.ZERO, size)
Global.TileMode.X_AXIS:
return Rect2(Vector2(-1, 0) * size, Vector2(3, 1) * size)
Global.TileMode.Y_AXIS:
return Rect2(Vector2(0, -1) * size, Vector2(1, 3) * size)
Global.TileMode.BOTH:
return Rect2(Vector2(-1, -1) * size, Vector2(3, 3) * size)
return Rect2()
return tile_mode_rects[tile_mode]
func update_tile_mode_rects() -> void:
tile_mode_rects.resize(Global.TileMode.size())
tile_mode_rects[Global.TileMode.NONE] = Rect2(Vector2.ZERO, size)
tile_mode_rects[Global.TileMode.BOTH] = Rect2(Vector2(-1, -1) * size, Vector2(3, 3) * size)
tile_mode_rects[Global.TileMode.X_AXIS] = Rect2(Vector2(-1, 0) * size, Vector2(3, 1) * size)
tile_mode_rects[Global.TileMode.Y_AXIS] = Rect2(Vector2(0, -1) * size, Vector2(1, 3) * size)