19 lines
811 B
GDScript3
19 lines
811 B
GDScript3
|
|
extends ColorRect
|
||
|
|
|
||
|
|
# Feeds the lunar shader the camera's position split into a CELL INDEX plus
|
||
|
|
# a fraction within that cell, rather than a raw world position. See the
|
||
|
|
# long note in Starfield.gd for why - identical reasoning, identical split.
|
||
|
|
|
||
|
|
@onready var camera: Camera2D = get_node("../../Camera2D")
|
||
|
|
|
||
|
|
|
||
|
|
func _process(_delta: float) -> void:
|
||
|
|
var viewport_size: Vector2 = get_viewport_rect().size
|
||
|
|
var cell_size: float = material.get_shader_parameter("cell_size")
|
||
|
|
var p: Vector2 = camera.global_position / cell_size
|
||
|
|
var cell: Vector2 = Vector2(floor(p.x), floor(p.y))
|
||
|
|
|
||
|
|
material.set_shader_parameter("camera_cell", cell)
|
||
|
|
material.set_shader_parameter("camera_frac", p - cell)
|
||
|
|
material.set_shader_parameter("camera_zoom", 1.0 / camera.zoom.x)
|
||
|
|
material.set_shader_parameter("viewport_size", viewport_size)
|