mirror of
https://github.com/GarrettGunnell/God-Machine.git
synced 2025-10-19 06:43:15 +00:00
Implement directional buttons
This commit is contained in:
parent
6bf0a1566a
commit
f05064608e
14 changed files with 67 additions and 11 deletions
|
@ -23,8 +23,7 @@ layout(binding = 1) uniform UniformBufferObject {
|
|||
ivec4 _RuleRanges4;
|
||||
int _Seed;
|
||||
int _Zoom;
|
||||
int _Pad2;
|
||||
int _Pad3;
|
||||
ivec2 _Offset;
|
||||
};
|
||||
|
||||
layout(push_constant, std430) uniform Params {
|
||||
|
@ -210,7 +209,7 @@ void Automaton() {
|
|||
void Blit() {
|
||||
ivec2 uv = ivec2(gl_GlobalInvocationID.xy);
|
||||
|
||||
float automata = imageLoad(_AutomatonFrom, uv / _Zoom).r;
|
||||
float automata = imageLoad(_AutomatonFrom, ((uv + _Offset * _Zoom) / _Zoom) % 1024).r;
|
||||
|
||||
imageStore(_RenderTarget, uv, vec4(automata, 0, 0, 1.0));
|
||||
}
|
5
Assets/Scenes/down_button.gd
Normal file
5
Assets/Scenes/down_button.gd
Normal file
|
@ -0,0 +1,5 @@
|
|||
extends AcerolaPanel
|
||||
|
||||
|
||||
func on_pressed() -> void:
|
||||
GameMaster.move(Vector2i(0, -1))
|
1
Assets/Scenes/down_button.gd.uid
Normal file
1
Assets/Scenes/down_button.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bamfdhdbb8wim
|
5
Assets/Scenes/left_button.gd
Normal file
5
Assets/Scenes/left_button.gd
Normal file
|
@ -0,0 +1,5 @@
|
|||
extends AcerolaPanel
|
||||
|
||||
|
||||
func on_pressed() -> void:
|
||||
GameMaster.move(Vector2i(-1, 0))
|
1
Assets/Scenes/left_button.gd.uid
Normal file
1
Assets/Scenes/left_button.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://frngf0psnuck
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=48 format=4 uid="uid://cfsgy7huubpok"]
|
||||
[gd_scene load_steps=53 format=4 uid="uid://cfsgy7huubpok"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://drfxlavovcgta" path="res://Assets/Scripts/automata_compositor_effect.gd" id="1_vlji8"]
|
||||
[ext_resource type="Script" uid="uid://bjuwof03jt0ds" path="res://Assets/Scripts/draw_world_compositor_effect.gd" id="2_ttgh6"]
|
||||
|
@ -34,7 +34,12 @@
|
|||
[ext_resource type="Script" uid="uid://cbxol4ngxuqsp" path="res://Assets/Scripts/UI/new_seed_button.gd" id="17_tm25p"]
|
||||
[ext_resource type="Script" uid="uid://bj4mhuarslaom" path="res://Assets/Scripts/UI/Tool Buttons/stable_lower_button.gd" id="19_2whn1"]
|
||||
[ext_resource type="Script" uid="uid://dnos8f2lfqq4t" path="res://Assets/Scripts/UI/Tool Buttons/stable_upper_button.gd" id="21_qvima"]
|
||||
[ext_resource type="Script" uid="uid://csran21uqb4ik" path="res://Assets/Scenes/right_button.gd" id="28_e7l2l"]
|
||||
[ext_resource type="Script" uid="uid://bamfdhdbb8wim" path="res://Assets/Scenes/down_button.gd" id="30_snioh"]
|
||||
[ext_resource type="Script" uid="uid://dn6pyw303yaas" path="res://Assets/Scenes/play_button.gd" id="31_l2vhu"]
|
||||
[ext_resource type="Script" uid="uid://3nx16dgm23ms" path="res://Assets/Scenes/zoom_button.gd" id="33_052nx"]
|
||||
[ext_resource type="Script" uid="uid://frngf0psnuck" path="res://Assets/Scenes/left_button.gd" id="35_sld5i"]
|
||||
[ext_resource type="Script" uid="uid://bjimcn3qcxim1" path="res://Assets/Scenes/up_button.gd" id="36_ews5c"]
|
||||
[ext_resource type="Shader" uid="uid://bmeyydltsvw3p" path="res://Assets/Shaders/color_palette.gdshader" id="36_l2vhu"]
|
||||
|
||||
[sub_resource type="Environment" id="Environment_0xm2m"]
|
||||
|
@ -938,7 +943,7 @@ offset_top = -14.0
|
|||
offset_right = 13.5
|
||||
offset_bottom = 14.0
|
||||
mouse_default_cursor_shape = 2
|
||||
script = ExtResource("13_4qkp8")
|
||||
script = ExtResource("28_e7l2l")
|
||||
|
||||
[node name="Down Button Sprite" type="Sprite2D" parent="UI"]
|
||||
texture_filter = 1
|
||||
|
@ -953,7 +958,7 @@ offset_top = -14.0
|
|||
offset_right = 13.5
|
||||
offset_bottom = 13.0
|
||||
mouse_default_cursor_shape = 2
|
||||
script = ExtResource("13_4qkp8")
|
||||
script = ExtResource("30_snioh")
|
||||
|
||||
[node name="Play Button Sprite" type="Sprite2D" parent="UI"]
|
||||
texture_filter = 1
|
||||
|
@ -983,7 +988,7 @@ offset_top = -14.0
|
|||
offset_right = 13.5
|
||||
offset_bottom = 14.0
|
||||
mouse_default_cursor_shape = 2
|
||||
script = ExtResource("13_4qkp8")
|
||||
script = ExtResource("33_052nx")
|
||||
|
||||
[node name="Left Button Sprite" type="Sprite2D" parent="UI"]
|
||||
texture_filter = 1
|
||||
|
@ -998,7 +1003,7 @@ offset_top = -14.0
|
|||
offset_right = 13.5
|
||||
offset_bottom = 14.0
|
||||
mouse_default_cursor_shape = 2
|
||||
script = ExtResource("13_4qkp8")
|
||||
script = ExtResource("35_sld5i")
|
||||
|
||||
[node name="Up Button Sprite" type="Sprite2D" parent="UI"]
|
||||
texture_filter = 1
|
||||
|
@ -1013,7 +1018,7 @@ offset_top = -14.0
|
|||
offset_right = 13.5
|
||||
offset_bottom = 14.0
|
||||
mouse_default_cursor_shape = 2
|
||||
script = ExtResource("13_4qkp8")
|
||||
script = ExtResource("36_ews5c")
|
||||
|
||||
[node name="Reseed Button" type="Panel" parent="UI"]
|
||||
offset_left = 223.0
|
||||
|
|
5
Assets/Scenes/right_button.gd
Normal file
5
Assets/Scenes/right_button.gd
Normal file
|
@ -0,0 +1,5 @@
|
|||
extends AcerolaPanel
|
||||
|
||||
|
||||
func on_pressed() -> void:
|
||||
GameMaster.move(Vector2i(1, 0))
|
1
Assets/Scenes/right_button.gd.uid
Normal file
1
Assets/Scenes/right_button.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://csran21uqb4ik
|
5
Assets/Scenes/up_button.gd
Normal file
5
Assets/Scenes/up_button.gd
Normal file
|
@ -0,0 +1,5 @@
|
|||
extends AcerolaPanel
|
||||
|
||||
|
||||
func on_pressed() -> void:
|
||||
GameMaster.move(Vector2i(0, 1))
|
1
Assets/Scenes/up_button.gd.uid
Normal file
1
Assets/Scenes/up_button.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://bjimcn3qcxim1
|
4
Assets/Scenes/zoom_button.gd
Normal file
4
Assets/Scenes/zoom_button.gd
Normal file
|
@ -0,0 +1,4 @@
|
|||
extends AcerolaPanel
|
||||
|
||||
func on_pressed() -> void:
|
||||
GameMaster.cycle_zoom()
|
1
Assets/Scenes/zoom_button.gd.uid
Normal file
1
Assets/Scenes/zoom_button.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://3nx16dgm23ms
|
|
@ -115,7 +115,7 @@ func _render_callback(p_effect_callback_type, p_render_data):
|
|||
for view in range(render_scene_buffers.get_view_count()):
|
||||
# Pack the exposure vector into a byte array
|
||||
var uniform_array = PackedInt32Array(automaton.get_rule_ranges())
|
||||
uniform_array.append_array([GameMaster.get_seed(), 1, 0, 0])
|
||||
uniform_array.append_array([GameMaster.get_seed(), GameMaster.get_zoom_setting(), GameMaster.get_horizontal_offset(), GameMaster.get_vertical_offset()])
|
||||
|
||||
# ACompute handles uniform caching under the hood, as long as the exposure value doesn't change or the render target doesn't change, these functions will only do work once
|
||||
exposure_compute.set_texture(0, world_texture)
|
||||
|
|
|
@ -10,6 +10,11 @@ var needs_reseed : bool = true
|
|||
|
||||
var paused = false
|
||||
|
||||
var zoom_setting = 0
|
||||
var zoom_settings : Array = Array([1, 2, 4, 8])
|
||||
|
||||
var world_offset : Vector2i = Vector2i.ZERO
|
||||
|
||||
func _ready() -> void:
|
||||
active_automaton = Automaton.new()
|
||||
|
||||
|
@ -48,4 +53,22 @@ func pause_automaton() -> void:
|
|||
paused = !paused
|
||||
|
||||
func is_paused() -> bool:
|
||||
return paused
|
||||
return paused
|
||||
|
||||
func cycle_zoom() -> void:
|
||||
zoom_setting += 1
|
||||
if zoom_setting > zoom_settings.size() - 1: zoom_setting = 0
|
||||
|
||||
func get_zoom_setting() -> int:
|
||||
return zoom_settings[zoom_setting]
|
||||
|
||||
|
||||
func get_horizontal_offset() -> int:
|
||||
return world_offset.x
|
||||
|
||||
func get_vertical_offset() -> int:
|
||||
return world_offset.y
|
||||
|
||||
|
||||
func move(v : Vector2i) -> void:
|
||||
world_offset += v
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue