Basic selector drag implemented
This commit is contained in:
parent
a7da10c17c
commit
04ea9c0be2
@ -43,6 +43,8 @@ func draw_tile_click(start_pos):
|
||||
|
||||
func init_tile_drag(float_build_start_pos, float_build_mouse_pos):
|
||||
|
||||
var tile_drag_array = []
|
||||
|
||||
var build_start_pos: Vector3i = float_build_start_pos.snapped(Vector3i(1.0, 1.0, 1.0))
|
||||
var build_mouse_pos: Vector3i = float_build_mouse_pos.snapped(Vector3i(1.0, 1.0, 1.0))
|
||||
|
||||
@ -56,47 +58,71 @@ func init_tile_drag(float_build_start_pos, float_build_mouse_pos):
|
||||
tile_count_x_hist = tile_count_x
|
||||
tile_count_z_hist = tile_count_z
|
||||
|
||||
draw_tile_drag(tile_count_x_diff, tile_count_z_diff, build_start_pos)
|
||||
for x in range(min(0, tile_count_x), max(0, tile_count_x) + 1):
|
||||
for z in range(min(0, tile_count_z), max(0, tile_count_z) + 1):
|
||||
var tile_drag_pos = build_start_pos + Vector3i(x, 0, z)
|
||||
|
||||
tile_drag_array.append(tile_drag_pos)
|
||||
|
||||
draw_tile_drag(tile_drag_array)
|
||||
|
||||
|
||||
|
||||
func draw_tile_drag(x_diff, z_diff, start_pos):
|
||||
func draw_tile_drag(array):
|
||||
|
||||
tile_drag_x_hist = x_diff + tile_drag_x_hist
|
||||
tile_drag_z_hist = z_diff + tile_drag_z_hist
|
||||
tile_drag_dict.clear()
|
||||
|
||||
if x_diff:
|
||||
for z in range(min(0, tile_drag_z_hist), max(0, tile_drag_z_hist) + 1):
|
||||
for x in abs(x_diff):
|
||||
var id = Vector3i(start_pos.x - tile_drag_x_hist, 0, start_pos.z - tile_drag_z_hist - z)
|
||||
for i in self.get_children():
|
||||
i.queue_free()
|
||||
|
||||
if tile_drag_dict.has(id):
|
||||
var tile = tile_drag_dict[id]
|
||||
tile.queue_free()
|
||||
tile_drag_dict.erase(id)
|
||||
else:
|
||||
for i in array:
|
||||
|
||||
var tile = load_tile.instantiate()
|
||||
tile.position = id
|
||||
tile_drag_dict[id] = tile
|
||||
add_child(tile)
|
||||
var id = i
|
||||
|
||||
if z_diff:
|
||||
for x in range(min(0, tile_drag_x_hist), max(0, tile_drag_x_hist) + 1):
|
||||
for z in abs(z_diff):
|
||||
var id = Vector3i(start_pos.x - tile_drag_x_hist - x, 0, start_pos.z - tile_drag_z_hist)
|
||||
if not tile_drag_dict.has(id):
|
||||
var tile = load_tile.instantiate()
|
||||
|
||||
if tile_drag_dict.has(id):
|
||||
var tile = tile_drag_dict[id]
|
||||
tile.queue_free()
|
||||
tile_drag_dict.erase(id)
|
||||
else:
|
||||
var tile = load_tile.instantiate()
|
||||
tile.position = id
|
||||
tile_drag_dict[id] = tile
|
||||
add_child(tile)
|
||||
tile.position = i
|
||||
|
||||
print(tile_drag_dict)
|
||||
tile_drag_dict[id] = tile
|
||||
|
||||
add_child(tile)
|
||||
|
||||
#tile_drag_x_hist = x_diff + tile_drag_x_hist
|
||||
#tile_drag_z_hist = z_diff + tile_drag_z_hist
|
||||
#
|
||||
#if x_diff:
|
||||
#for z in range(min(0, tile_drag_z_hist), max(0, tile_drag_z_hist) + 1):
|
||||
#for x in abs(x_diff):
|
||||
#var id = Vector3i(start_pos.x - tile_drag_x_hist, 0, start_pos.z - z)
|
||||
##var lastid = Vector3i(start_pos.x - tile_drag_x_hist - x_diff, 0, start_pos.z - z)
|
||||
#if tile_drag_dict.has(id):
|
||||
#var tile = tile_drag_dict[id]
|
||||
#tile.queue_free()
|
||||
#tile_drag_dict.erase(id)
|
||||
#else:
|
||||
#
|
||||
#var tile = load_tile.instantiate()
|
||||
#tile.position = id
|
||||
#tile_drag_dict[id] = tile
|
||||
#add_child(tile)
|
||||
#
|
||||
#if z_diff:
|
||||
#for x in range(min(0, tile_drag_x_hist), max(0, tile_drag_x_hist) + 1):
|
||||
#for z in abs(z_diff):
|
||||
#var id = Vector3i(start_pos.x - x, 0, start_pos.z - tile_drag_z_hist)
|
||||
#
|
||||
#if tile_drag_dict.has(id):
|
||||
#var tile = tile_drag_dict[id]
|
||||
#tile.queue_free()
|
||||
#tile_drag_dict.erase(id)
|
||||
#else:
|
||||
#var tile = load_tile.instantiate()
|
||||
#tile.position = id
|
||||
#tile_drag_dict[id] = tile
|
||||
#add_child(tile)
|
||||
|
||||
#print(tile_drag_dict)
|
||||
#if x_diff > 0:
|
||||
#var tile = load_tile.instantiate()
|
||||
#tile.position = Vector3i(start_pos.x - tile_drag_x_hist, 0, tile_drag_z_hist - z)
|
||||
|
||||
@ -6,3 +6,6 @@
|
||||
script = ExtResource("1_2j6sh")
|
||||
|
||||
[node name="Grid" type="Node3D" parent="."]
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.345446, 0.938439, 0, -0.938439, 0.345446, 41.393, 18.7409, 34.4224)
|
||||
|
||||
@ -1,11 +1,17 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://gs6yynwvvot2"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://gs6yynwvvot2"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://jqjcr7dxjnbt" path="res://tiles/base_tile/tile.gd" id="1_v7x5k"]
|
||||
[ext_resource type="PlaneMesh" uid="uid://bis4hdushjnjm" path="res://tiles/base_tile/base_floor.tres" id="2_ipr02"]
|
||||
|
||||
[sub_resource type="SphereMesh" id="SphereMesh_sbkyc"]
|
||||
|
||||
[node name="Tile" type="Node3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0, 0.5)
|
||||
script = ExtResource("1_v7x5k")
|
||||
|
||||
[node name="FloorMesh" type="MeshInstance3D" parent="."]
|
||||
visible = false
|
||||
mesh = ExtResource("2_ipr02")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.25, 0, 0, 0, 0.25, 0, 0, 0, 0.25, 0, 0, 0)
|
||||
mesh = SubResource("SphereMesh_sbkyc")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user