2020-08-18 17:03:49 +03:00
|
|
|
extends Node2D
|
|
|
|
|
2022-06-20 05:07:20 -04:00
|
|
|
var tiles: Tiles
|
|
|
|
var draw_center := false
|
|
|
|
|
2020-08-18 17:03:49 +03:00
|
|
|
|
|
|
|
func _draw() -> void:
|
2022-06-20 05:07:20 -04:00
|
|
|
var positions := get_tile_positions()
|
2020-12-30 18:56:28 +01:00
|
|
|
var tilemode_opacity := Global.tilemode_opacity
|
2020-10-26 00:10:14 +01:00
|
|
|
|
2020-11-23 18:53:21 +02:00
|
|
|
if Global.mirror_view:
|
2022-06-20 05:07:20 -04:00
|
|
|
var position_tmp := Vector2(Global.current_project.size.x, 0)
|
|
|
|
var scale_tmp := Vector2(-1, 1)
|
|
|
|
draw_set_transform(position_tmp, 0, scale_tmp)
|
2020-11-23 18:53:21 +02:00
|
|
|
|
2021-11-25 14:48:30 +02:00
|
|
|
var modulate_color := Color(
|
|
|
|
tilemode_opacity, tilemode_opacity, tilemode_opacity, tilemode_opacity
|
|
|
|
) # premultiply alpha blending is applied
|
2021-01-04 18:30:15 +01:00
|
|
|
var current_frame_texture: Texture = Global.canvas.currently_visible_frame.get_texture()
|
|
|
|
for pos in positions:
|
|
|
|
draw_texture(current_frame_texture, pos, modulate_color)
|
2020-11-13 23:42:20 +05:30
|
|
|
|
2022-06-20 05:07:20 -04:00
|
|
|
draw_set_transform(Vector2.ZERO, 0, Vector2.ONE)
|
|
|
|
|
|
|
|
|
|
|
|
func get_tile_positions() -> Array:
|
|
|
|
var defaulted_tiles := tiles
|
|
|
|
if defaulted_tiles == null:
|
|
|
|
defaulted_tiles = Global.current_project.tiles
|
|
|
|
|
|
|
|
var x_basis: Vector2 = defaulted_tiles.x_basis
|
|
|
|
var y_basis: Vector2 = defaulted_tiles.y_basis
|
|
|
|
var tile_mode: int = defaulted_tiles.mode
|
|
|
|
|
|
|
|
var x_range := (
|
|
|
|
range(-1, 2)
|
|
|
|
if tile_mode in [Tiles.MODE.X_AXIS, Tiles.MODE.BOTH]
|
|
|
|
else range(0, 1)
|
|
|
|
)
|
|
|
|
var y_range := (
|
|
|
|
range(-1, 2)
|
|
|
|
if tile_mode in [Tiles.MODE.Y_AXIS, Tiles.MODE.BOTH]
|
|
|
|
else range(0, 1)
|
|
|
|
)
|
|
|
|
var positions := []
|
|
|
|
for r in y_range:
|
|
|
|
for c in x_range:
|
|
|
|
if not draw_center and r == 0 and c == 0:
|
|
|
|
continue
|
|
|
|
var position: Vector2 = r * y_basis + c * x_basis
|
|
|
|
positions.append(position)
|
|
|
|
return positions
|