background
This commit is contained in:
+5
-3
@@ -1,19 +1,21 @@
|
|||||||
[gd_scene load_steps=3 format=3 uid="uid://bv384dpmvjv8o"]
|
[gd_scene load_steps=4 format=3 uid="uid://bv384dpmvjv8o"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://d2wrwichuoncd" path="res://world/Background/background.gd" id="1_fj7yv"]
|
[ext_resource type="Script" uid="uid://d2wrwichuoncd" path="res://world/Background/background.gd" id="1_fj7yv"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://icbk3la71t7h" path="res://world/Background/starry_sky_layer.tscn" id="3_aqk2v"]
|
||||||
[ext_resource type="Script" uid="uid://b823gkreu47t3" path="res://world/Background/starry_sky_dynamic_bg.gd" id="3_tlwt5"]
|
[ext_resource type="Script" uid="uid://b823gkreu47t3" path="res://world/Background/starry_sky_dynamic_bg.gd" id="3_tlwt5"]
|
||||||
|
|
||||||
[node name="World" type="Node2D"]
|
[node name="World" type="Node2D"]
|
||||||
|
|
||||||
[node name="BackgroundLayer" type="Node2D" parent="." node_paths=PackedStringArray("Parallax_2d", "Node_2d")]
|
[node name="BackgroundLayer" type="Node2D" parent="." node_paths=PackedStringArray("Parallax_2d")]
|
||||||
script = ExtResource("1_fj7yv")
|
script = ExtResource("1_fj7yv")
|
||||||
|
STARRY_SKY_LAYER = ExtResource("3_aqk2v")
|
||||||
Parallax_2d = NodePath("Parallax2D")
|
Parallax_2d = NodePath("Parallax2D")
|
||||||
Node_2d = NodePath("Parallax2D/StarrySkyDynamicBG")
|
|
||||||
|
|
||||||
[node name="Parallax2D" type="Parallax2D" parent="BackgroundLayer"]
|
[node name="Parallax2D" type="Parallax2D" parent="BackgroundLayer"]
|
||||||
repeat_size = Vector2(2048, 2048)
|
repeat_size = Vector2(2048, 2048)
|
||||||
|
|
||||||
[node name="StarrySkyDynamicBG" type="Node2D" parent="BackgroundLayer/Parallax2D"]
|
[node name="StarrySkyDynamicBG" type="Node2D" parent="BackgroundLayer/Parallax2D"]
|
||||||
|
visible = false
|
||||||
script = ExtResource("3_tlwt5")
|
script = ExtResource("3_tlwt5")
|
||||||
Star_Count = 2000
|
Star_Count = 2000
|
||||||
Background_Image_Size = Vector2(2048, 2048)
|
Background_Image_Size = Vector2(2048, 2048)
|
||||||
|
|||||||
@@ -1,11 +1,62 @@
|
|||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
|
@export var STARRY_SKY_LAYER: PackedScene
|
||||||
|
|
||||||
|
@export_group("Visual Settings")
|
||||||
@export var Parallax_2d: Parallax2D
|
@export var Parallax_2d: Parallax2D
|
||||||
@export var Node_2d: Node2D
|
#@export var Node_2d: Node2D
|
||||||
|
@export var Star_Count: int = 6000: set = set_star_count
|
||||||
|
@export var Background_Image_Size: Vector2 = Vector2(4096, 4096):
|
||||||
|
set = set_Background_Image_Size
|
||||||
|
|
||||||
var x_offset: int = 40
|
@export var Background_Layers: Array [StarrySkyLayer]
|
||||||
var y_offset: int = 40
|
|
||||||
|
|
||||||
|
var Stars_by_Layers: Dictionary = {}
|
||||||
|
|
||||||
|
const BACKGROUND_COLOR: Color = Color.BLACK
|
||||||
|
|
||||||
|
const STAR_COLOR_DISTRIBUTION = [
|
||||||
|
[700, '#8FA8FFFF', 0 ],
|
||||||
|
[1700, '#8FA8FFD8', 0 ],
|
||||||
|
[3400, '#8FA8FFA0', 0 ],
|
||||||
|
[6000, '#A0B5FFFF', 0 ],
|
||||||
|
[9900, '#A0B5FFD0', 0 ],
|
||||||
|
[16400, '#A0B5FF90', 0 ],
|
||||||
|
[17300, '#B0C5FFFF', 0 ],
|
||||||
|
[18600, '#B0C5FFC8', 0 ],
|
||||||
|
[20800, '#B0C5FF88', 0 ],
|
||||||
|
[26000, '#D0DBFFFF', 0 ],
|
||||||
|
[33800, '#D0DBFFC0', 0 ],
|
||||||
|
[46800, '#D0DBFF80', 0 ],
|
||||||
|
[57200, '#F8F7FFE0', 1 ],
|
||||||
|
[72900, '#F8F7FFA8', 1 ],
|
||||||
|
[99000, '#F8F7FF70', 1 ],
|
||||||
|
[114700, '#FFF4EAD0', 1 ],
|
||||||
|
[138200, '#FFF4EA98', 1 ],
|
||||||
|
[177400, '#FFF4EA60', 1 ],
|
||||||
|
[180000, '#FFD280F0', 1 ],
|
||||||
|
[183000, '#FFD280B8', 1 ],
|
||||||
|
[189000, '#FFD28078', 1 ],
|
||||||
|
[191000, '#FFA64DF8', 1 ],
|
||||||
|
[194000, '#FFA64DC0', 1 ],
|
||||||
|
[199000, '#FFA64D80', 1 ],
|
||||||
|
[225000, '#FFE4B5C0', 2 ],
|
||||||
|
[264000, '#FFE4B588', 2 ],
|
||||||
|
[309000, '#FFE4B550', 2 ],
|
||||||
|
[364000, '#FFCC99A0', 2 ],
|
||||||
|
[441000, '#FFCC9968', 2 ],
|
||||||
|
[604000, '#FFCC9940', 2 ],
|
||||||
|
[658000, '#FFB36690', 2 ],
|
||||||
|
[753000, '#FFB3665C', 2 ],
|
||||||
|
[893000, '#FFB36630', 2 ],
|
||||||
|
[914000, '#E8F4FF80', 2 ],
|
||||||
|
[946000, '#E8F4FF50', 2 ],
|
||||||
|
[1_000_000, '#E8F4FF28', 2 ],
|
||||||
|
]
|
||||||
|
|
||||||
|
var x_offset: int = 20
|
||||||
|
var y_offset: int = 20
|
||||||
|
|
||||||
var _random
|
var _random
|
||||||
|
|
||||||
@@ -13,22 +64,68 @@ func _ready() -> void:
|
|||||||
_random = RandomNumberGenerator.new()
|
_random = RandomNumberGenerator.new()
|
||||||
x_offset = _random_offset_x() * _random_sign()
|
x_offset = _random_offset_x() * _random_sign()
|
||||||
y_offset = _random_offset_y() * _random_sign()
|
y_offset = _random_offset_y() * _random_sign()
|
||||||
|
Parallax_2d.autoscroll = Vector2(x_offset, y_offset)
|
||||||
|
initiate_layers()
|
||||||
|
generate_layers()
|
||||||
|
#layer.queue_redraw()
|
||||||
|
|
||||||
func _process(delta: float) -> void:
|
func _process(delta: float) -> void:
|
||||||
Parallax_2d.scroll_offset.x += x_offset * delta
|
#Parallax_2d.scroll_offset.x += x_offset * delta
|
||||||
Parallax_2d.scroll_offset.y += y_offset * delta
|
#Parallax_2d.scroll_offset.y += y_offset * delta
|
||||||
|
|
||||||
if _random.randi_range(0, 2096) == 0:
|
if _random.randi_range(0, 2096) == 0:
|
||||||
if _random_sign() == 1:
|
if _random_sign() == 1:
|
||||||
x_offset = _random_offset_x() * _random_sign()
|
x_offset = _random_offset_x() * _random_sign()
|
||||||
else:
|
else:
|
||||||
y_offset = _random_offset_y() * _random_sign()
|
y_offset = _random_offset_y() * _random_sign()
|
||||||
|
Parallax_2d.autoscroll = Vector2(x_offset, y_offset)
|
||||||
|
|
||||||
|
func generate_layers():
|
||||||
|
var max_rnd_seed = STAR_COLOR_DISTRIBUTION[-1][0]
|
||||||
|
|
||||||
|
for ind1 in range(Star_Count):
|
||||||
|
var star_coords = Vector2(randi_range(0, Background_Image_Size.x),
|
||||||
|
randi_range(0, Background_Image_Size.y))
|
||||||
|
var rnd_seed = randi_range(0, max_rnd_seed)
|
||||||
|
for item:Array in STAR_COLOR_DISTRIBUTION:
|
||||||
|
var item_seed = item[0]
|
||||||
|
if rnd_seed <= item_seed:
|
||||||
|
var star_color = Color.html(item[1])
|
||||||
|
var star_layer = item[2]
|
||||||
|
Background_Layers[star_layer].Stars.append({
|
||||||
|
"coords": star_coords,
|
||||||
|
"color": star_color,
|
||||||
|
})
|
||||||
|
break
|
||||||
|
#draw_circle(star_coords, 1, star_color)
|
||||||
|
for it1 in Background_Layers:
|
||||||
|
print(len(it1.Stars))
|
||||||
|
it1.queue_redraw()
|
||||||
|
|
||||||
|
|
||||||
|
func initiate_layers():
|
||||||
|
var layer_count = 0
|
||||||
|
for item:Array in STAR_COLOR_DISTRIBUTION:
|
||||||
|
if item[2] > layer_count:
|
||||||
|
layer_count = item[2]
|
||||||
|
for ind in range(layer_count + 1):
|
||||||
|
var new_star_layer:StarrySkyLayer = STARRY_SKY_LAYER.instantiate()
|
||||||
|
Parallax_2d.add_child(new_star_layer)
|
||||||
|
new_star_layer.Background_Image_Size = Background_Image_Size
|
||||||
|
Background_Layers.append(new_star_layer)
|
||||||
|
|
||||||
|
func draw_layer(layer):
|
||||||
|
print(layer)
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
#region Random offset
|
||||||
|
|
||||||
func _random_offset_x() -> int:
|
func _random_offset_x() -> int:
|
||||||
return _random.randi_range(30, 50)
|
return _random.randi_range(15, 25)
|
||||||
|
|
||||||
func _random_offset_y() -> int:
|
func _random_offset_y() -> int:
|
||||||
return _random.randi_range(5, 15)
|
return _random.randi_range(5, 10)
|
||||||
|
|
||||||
func _random_sign() -> int:
|
func _random_sign() -> int:
|
||||||
if _random.randi_range(1, 2) == 1:
|
if _random.randi_range(1, 2) == 1:
|
||||||
@@ -36,3 +133,15 @@ func _random_sign() -> int:
|
|||||||
else:
|
else:
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Сеттеры для автоматического обновления
|
||||||
|
func set_Background_Image_Size(value: Vector2):
|
||||||
|
Background_Image_Size = value
|
||||||
|
queue_redraw()
|
||||||
|
|
||||||
|
func set_star_count(value: int):
|
||||||
|
Star_Count = value
|
||||||
|
queue_redraw()
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|||||||
@@ -1,52 +1,14 @@
|
|||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
const STAR_COLOR_DISTRIBUTION = [
|
|
||||||
[700, '#8FA8FFFF'],
|
|
||||||
[1700, '#8FA8FFD8'],
|
|
||||||
[3400, '#8FA8FFA0'],
|
|
||||||
[6000, '#A0B5FFFF'],
|
|
||||||
[9900, '#A0B5FFD0'],
|
|
||||||
[16400, '#A0B5FF90'],
|
|
||||||
[17300, '#B0C5FFFF'],
|
|
||||||
[18600, '#B0C5FFC8'],
|
|
||||||
[20800, '#B0C5FF88'],
|
|
||||||
[26000, '#D0DBFFFF'],
|
|
||||||
[33800, '#D0DBFFC0'],
|
|
||||||
[46800, '#D0DBFF80'],
|
|
||||||
[57200, '#F8F7FFE0'],
|
|
||||||
[72900, '#F8F7FFA8'],
|
|
||||||
[99000, '#F8F7FF70'],
|
|
||||||
[114700, '#FFF4EAD0'],
|
|
||||||
[138200, '#FFF4EA98'],
|
|
||||||
[177400, '#FFF4EA60'],
|
|
||||||
[180000, '#FFD280F0'],
|
|
||||||
[183000, '#FFD280B8'],
|
|
||||||
[189000, '#FFD28078'],
|
|
||||||
[191000, '#FFA64DF8'],
|
|
||||||
[194000, '#FFA64DC0'],
|
|
||||||
[199000, '#FFA64D80'],
|
|
||||||
[225000, '#FFE4B5C0'],
|
|
||||||
[264000, '#FFE4B588'],
|
|
||||||
[309000, '#FFE4B550'],
|
|
||||||
[364000, '#FFCC99A0'],
|
|
||||||
[441000, '#FFCC9968'],
|
|
||||||
[604000, '#FFCC9940'],
|
|
||||||
[658000, '#FFB36690'],
|
|
||||||
[753000, '#FFB3665C'],
|
|
||||||
[893000, '#FFB36630'],
|
|
||||||
[914000, '#E8F4FF80'],
|
|
||||||
[946000, '#E8F4FF50'],
|
|
||||||
[1000000, '#E8F4FF28'],
|
|
||||||
]
|
|
||||||
|
|
||||||
@export_group("Visual Settings")
|
@export_group("Visual Settings")
|
||||||
@export var Star_Count: int = 5000: set = set_star_count
|
@export var Star_Count: int = 5000: set = set_star_count
|
||||||
@export var Background_Image_Size: Vector2 = Vector2(4096, 4096): set = set_Background_Image_Size
|
@export var Background_Image_Size: Vector2 = Vector2(4096, 4096):
|
||||||
|
set = set_Background_Image_Size
|
||||||
@export var background_color: Color = Color.BLACK
|
@export var background_color: Color = Color.BLACK
|
||||||
|
|
||||||
@export_group("Animation")
|
#@export_group("Animation")
|
||||||
@export var auto_rotate: bool = false
|
#@export var auto_rotate: bool = false
|
||||||
@export var rotation_speed: float = 0.1
|
#@export var rotation_speed: float = 0.1
|
||||||
|
|
||||||
var rotation_angle: float = 0.0
|
var rotation_angle: float = 0.0
|
||||||
|
|
||||||
@@ -66,24 +28,19 @@ func draw_galaxy():
|
|||||||
for ind1 in range(Star_Count):
|
for ind1 in range(Star_Count):
|
||||||
var star_coords = Vector2(randi_range(0, Background_Image_Size.x),
|
var star_coords = Vector2(randi_range(0, Background_Image_Size.x),
|
||||||
randi_range(0, Background_Image_Size.y))
|
randi_range(0, Background_Image_Size.y))
|
||||||
var star_color = get_star_color()
|
#draw_star(star_coords)
|
||||||
draw_circle(star_coords, 1, star_color)
|
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
if auto_rotate:
|
|
||||||
rotation_angle += rotation_speed * delta
|
|
||||||
queue_redraw()
|
|
||||||
|
|
||||||
if Engine.is_editor_hint():
|
if Engine.is_editor_hint():
|
||||||
queue_redraw()
|
queue_redraw()
|
||||||
|
|
||||||
func get_star_color() -> Color:
|
#func draw_star(star_coords: Vector2):
|
||||||
#var star_color = {"rgb": Colo, "alpha": 0}
|
#var rnd_seed = randi_range(0, STAR_COLOR_DISTRIBUTION[-1][0])
|
||||||
var rnd_seed = randi_range(0, STAR_COLOR_DISTRIBUTION[-1][0])
|
#for item:Array in STAR_COLOR_DISTRIBUTION:
|
||||||
for item:Array in STAR_COLOR_DISTRIBUTION:
|
#if rnd_seed <= item[0]:
|
||||||
if rnd_seed <= item[0]:
|
#var star_color = Color.html(item[1])
|
||||||
return Color.html(item[1])
|
#draw_circle(star_coords, 1, star_color)
|
||||||
return Color.BLACK
|
|
||||||
|
|
||||||
#region Сеттеры для автоматического обновления
|
#region Сеттеры для автоматического обновления
|
||||||
func set_Background_Image_Size(value: Vector2):
|
func set_Background_Image_Size(value: Vector2):
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
class_name StarrySkyLayer extends Node2D
|
||||||
|
|
||||||
|
var Background_Image_Size: Vector2 = Vector2.ZERO
|
||||||
|
var Stars: Array = []
|
||||||
|
|
||||||
|
const BACKGROUND_COLOR: Color = Color.BLACK
|
||||||
|
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
pass
|
||||||
|
#queue_redraw()
|
||||||
|
|
||||||
|
|
||||||
|
func _draw():
|
||||||
|
draw_rect(Rect2(Vector2.ZERO, Background_Image_Size), BACKGROUND_COLOR)
|
||||||
|
for star in Stars:
|
||||||
|
draw_circle(star.coords, 4, star.color)
|
||||||
|
|
||||||
|
|
||||||
|
#draw_rect(Rect2(Vector2.ZERO, Background_Image_Size), background_color)
|
||||||
|
print("Drawn: ", len(Stars))
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://bq7xkdvq4iejn
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
[gd_scene load_steps=2 format=3 uid="uid://icbk3la71t7h"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://bq7xkdvq4iejn" path="res://world/Background/starry_sky_layer.gd" id="1_st4ay"]
|
||||||
|
|
||||||
|
[node name="StarrySkyLayer" type="Node2D"]
|
||||||
|
script = ExtResource("1_st4ay")
|
||||||
Reference in New Issue
Block a user