top menu
This commit is contained in:
@@ -1,21 +1,21 @@
|
||||
extends Node2D
|
||||
|
||||
@export var STARRY_SKY_LAYER: PackedScene
|
||||
|
||||
@export_group("Visual Settings")
|
||||
@export var Parallax_2d: Parallax2D
|
||||
#@export var Node_2d: Node2D
|
||||
@export var Star_Count: int = 6000: set = set_star_count
|
||||
@export var Background_Image_Size: Vector2 = Vector2(4096, 4096):
|
||||
@export var STARRY_SKY_LAYER: PackedScene
|
||||
@export var Star_Count: int = 2000: set = set_star_count
|
||||
|
||||
@export var Background_Image_Size: Vector2 = Vector2(1080, 1920):
|
||||
set = set_Background_Image_Size
|
||||
|
||||
@export var Background_Layers: Array [StarrySkyLayer]
|
||||
|
||||
|
||||
var Stars_by_Layers: Dictionary = {}
|
||||
|
||||
const BACKGROUND_COLOR: Color = Color.BLACK
|
||||
|
||||
const X_SCROLL_RANGE: Vector2 = Vector2(3, 10)
|
||||
const Y_SCROLL_RANGE: Vector2 = Vector2(1, 5)
|
||||
const SCALE_FACTOR = 1
|
||||
|
||||
const STAR_COLOR_DISTRIBUTION = [
|
||||
[700, '#8FA8FFFF', 0 ],
|
||||
[1700, '#8FA8FFD8', 0 ],
|
||||
@@ -55,30 +55,17 @@ const STAR_COLOR_DISTRIBUTION = [
|
||||
[1_000_000, '#E8F4FF28', 2 ],
|
||||
]
|
||||
|
||||
var x_offset: int = 20
|
||||
var y_offset: int = 20
|
||||
|
||||
var _random
|
||||
|
||||
func _ready() -> void:
|
||||
_random = RandomNumberGenerator.new()
|
||||
x_offset = _random_offset_x() * _random_sign()
|
||||
y_offset = _random_offset_y() * _random_sign()
|
||||
Parallax_2d.autoscroll = Vector2(x_offset, y_offset)
|
||||
initiate_layers()
|
||||
randomize_parallax()
|
||||
generate_layers()
|
||||
#layer.queue_redraw()
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
#Parallax_2d.scroll_offset.x += x_offset * delta
|
||||
#Parallax_2d.scroll_offset.y += y_offset * delta
|
||||
|
||||
if _random.randi_range(0, 2096) == 0:
|
||||
if _random_sign() == 1:
|
||||
x_offset = _random_offset_x() * _random_sign()
|
||||
else:
|
||||
y_offset = _random_offset_y() * _random_sign()
|
||||
Parallax_2d.autoscroll = Vector2(x_offset, y_offset)
|
||||
if randi_range(0, 1000) == 0:
|
||||
randomize_parallax()
|
||||
|
||||
func _draw() -> void:
|
||||
draw_rect(Rect2(Vector2.ZERO, Background_Image_Size), BACKGROUND_COLOR)
|
||||
|
||||
func generate_layers():
|
||||
var max_rnd_seed = STAR_COLOR_DISTRIBUTION[-1][0]
|
||||
@@ -97,42 +84,40 @@ func generate_layers():
|
||||
"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):
|
||||
for ind1 in range(layer_count + 1):
|
||||
var new_star_layer:StarrySkyLayer = STARRY_SKY_LAYER.instantiate()
|
||||
Parallax_2d.add_child(new_star_layer)
|
||||
add_child(new_star_layer)
|
||||
new_star_layer.Background_Image_Size = Background_Image_Size
|
||||
#new_star_layer.autoscroll = (ind1 + 1) * DEFAULT_AUTOSCROL
|
||||
Background_Layers.append(new_star_layer)
|
||||
|
||||
func draw_layer(layer):
|
||||
print(layer)
|
||||
pass
|
||||
func randomize_parallax():
|
||||
var x_offset = 0
|
||||
var y_offset = 0
|
||||
if _random_sign() == 1:
|
||||
x_offset = _random_offset(X_SCROLL_RANGE) * _random_sign()
|
||||
else:
|
||||
y_offset = _random_offset(Y_SCROLL_RANGE) * _random_sign()
|
||||
|
||||
var scale_factor = 1
|
||||
for layer in Background_Layers:
|
||||
layer.autoscroll = Vector2(x_offset, y_offset) * scale_factor
|
||||
scale_factor += SCALE_FACTOR
|
||||
|
||||
#region Random offset
|
||||
|
||||
func _random_offset_x() -> int:
|
||||
return _random.randi_range(15, 25)
|
||||
|
||||
func _random_offset_y() -> int:
|
||||
return _random.randi_range(5, 10)
|
||||
func _random_offset(rng: Vector2i) -> int:
|
||||
return randi_range(rng.x, rng.y)
|
||||
|
||||
func _random_sign() -> int:
|
||||
if _random.randi_range(1, 2) == 1:
|
||||
return 1
|
||||
else:
|
||||
return -1
|
||||
|
||||
return [1, -1].pick_random()
|
||||
|
||||
#endregion
|
||||
|
||||
#region Сеттеры для автоматического обновления
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
extends Node2D
|
||||
|
||||
@export_group("Visual Settings")
|
||||
@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_color: Color = Color.BLACK
|
||||
|
||||
#@export_group("Animation")
|
||||
#@export var auto_rotate: bool = false
|
||||
#@export var rotation_speed: float = 0.1
|
||||
|
||||
var rotation_angle: float = 0.0
|
||||
|
||||
func _ready():
|
||||
queue_redraw()
|
||||
|
||||
func _draw():
|
||||
draw_rect(Rect2(Vector2.ZERO, Background_Image_Size), background_color)
|
||||
|
||||
# Сохраняем текущее состояние трансформации
|
||||
var transform = Transform2D().rotated(rotation_angle)
|
||||
draw_set_transform_matrix(transform)
|
||||
|
||||
draw_galaxy()
|
||||
|
||||
func draw_galaxy():
|
||||
for ind1 in range(Star_Count):
|
||||
var star_coords = Vector2(randi_range(0, Background_Image_Size.x),
|
||||
randi_range(0, Background_Image_Size.y))
|
||||
#draw_star(star_coords)
|
||||
|
||||
func _process(delta):
|
||||
if Engine.is_editor_hint():
|
||||
queue_redraw()
|
||||
|
||||
#func draw_star(star_coords: Vector2):
|
||||
#var rnd_seed = randi_range(0, STAR_COLOR_DISTRIBUTION[-1][0])
|
||||
#for item:Array in STAR_COLOR_DISTRIBUTION:
|
||||
#if rnd_seed <= item[0]:
|
||||
#var star_color = Color.html(item[1])
|
||||
#draw_circle(star_coords, 1, star_color)
|
||||
|
||||
|
||||
#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 +0,0 @@
|
||||
uid://b823gkreu47t3
|
||||
@@ -1,21 +1,11 @@
|
||||
class_name StarrySkyLayer extends Node2D
|
||||
class_name StarrySkyLayer extends Parallax2D
|
||||
|
||||
var Background_Image_Size: Vector2 = Vector2.ZERO
|
||||
var Stars: Array = []
|
||||
|
||||
const BACKGROUND_COLOR: Color = Color.BLACK
|
||||
|
||||
|
||||
func _ready():
|
||||
pass
|
||||
#queue_redraw()
|
||||
|
||||
const BACKGROUND_COLOR: Color = Color.TRANSPARENT
|
||||
|
||||
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))
|
||||
draw_circle(star.coords, 2, star.color)
|
||||
|
||||
@@ -2,5 +2,8 @@
|
||||
|
||||
[ext_resource type="Script" uid="uid://bq7xkdvq4iejn" path="res://world/Background/starry_sky_layer.gd" id="1_st4ay"]
|
||||
|
||||
[node name="StarrySkyLayer" type="Node2D"]
|
||||
[node name="StarrySkyLayer" type="Parallax2D"]
|
||||
scroll_offset = Vector2(1080, 1920)
|
||||
repeat_size = Vector2(1080, 1920)
|
||||
repeat_times = 3
|
||||
script = ExtResource("1_st4ay")
|
||||
|
||||
Reference in New Issue
Block a user