mirror of
https://github.com/GarrettGunnell/God-Machine.git
synced 2025-10-19 14:43:16 +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;
|
ivec4 _RuleRanges4;
|
||||||
int _Seed;
|
int _Seed;
|
||||||
int _Zoom;
|
int _Zoom;
|
||||||
int _Pad2;
|
ivec2 _Offset;
|
||||||
int _Pad3;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
layout(push_constant, std430) uniform Params {
|
layout(push_constant, std430) uniform Params {
|
||||||
|
@ -210,7 +209,7 @@ void Automaton() {
|
||||||
void Blit() {
|
void Blit() {
|
||||||
ivec2 uv = ivec2(gl_GlobalInvocationID.xy);
|
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));
|
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://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"]
|
[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://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://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://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://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"]
|
[ext_resource type="Shader" uid="uid://bmeyydltsvw3p" path="res://Assets/Shaders/color_palette.gdshader" id="36_l2vhu"]
|
||||||
|
|
||||||
[sub_resource type="Environment" id="Environment_0xm2m"]
|
[sub_resource type="Environment" id="Environment_0xm2m"]
|
||||||
|
@ -938,7 +943,7 @@ offset_top = -14.0
|
||||||
offset_right = 13.5
|
offset_right = 13.5
|
||||||
offset_bottom = 14.0
|
offset_bottom = 14.0
|
||||||
mouse_default_cursor_shape = 2
|
mouse_default_cursor_shape = 2
|
||||||
script = ExtResource("13_4qkp8")
|
script = ExtResource("28_e7l2l")
|
||||||
|
|
||||||
[node name="Down Button Sprite" type="Sprite2D" parent="UI"]
|
[node name="Down Button Sprite" type="Sprite2D" parent="UI"]
|
||||||
texture_filter = 1
|
texture_filter = 1
|
||||||
|
@ -953,7 +958,7 @@ offset_top = -14.0
|
||||||
offset_right = 13.5
|
offset_right = 13.5
|
||||||
offset_bottom = 13.0
|
offset_bottom = 13.0
|
||||||
mouse_default_cursor_shape = 2
|
mouse_default_cursor_shape = 2
|
||||||
script = ExtResource("13_4qkp8")
|
script = ExtResource("30_snioh")
|
||||||
|
|
||||||
[node name="Play Button Sprite" type="Sprite2D" parent="UI"]
|
[node name="Play Button Sprite" type="Sprite2D" parent="UI"]
|
||||||
texture_filter = 1
|
texture_filter = 1
|
||||||
|
@ -983,7 +988,7 @@ offset_top = -14.0
|
||||||
offset_right = 13.5
|
offset_right = 13.5
|
||||||
offset_bottom = 14.0
|
offset_bottom = 14.0
|
||||||
mouse_default_cursor_shape = 2
|
mouse_default_cursor_shape = 2
|
||||||
script = ExtResource("13_4qkp8")
|
script = ExtResource("33_052nx")
|
||||||
|
|
||||||
[node name="Left Button Sprite" type="Sprite2D" parent="UI"]
|
[node name="Left Button Sprite" type="Sprite2D" parent="UI"]
|
||||||
texture_filter = 1
|
texture_filter = 1
|
||||||
|
@ -998,7 +1003,7 @@ offset_top = -14.0
|
||||||
offset_right = 13.5
|
offset_right = 13.5
|
||||||
offset_bottom = 14.0
|
offset_bottom = 14.0
|
||||||
mouse_default_cursor_shape = 2
|
mouse_default_cursor_shape = 2
|
||||||
script = ExtResource("13_4qkp8")
|
script = ExtResource("35_sld5i")
|
||||||
|
|
||||||
[node name="Up Button Sprite" type="Sprite2D" parent="UI"]
|
[node name="Up Button Sprite" type="Sprite2D" parent="UI"]
|
||||||
texture_filter = 1
|
texture_filter = 1
|
||||||
|
@ -1013,7 +1018,7 @@ offset_top = -14.0
|
||||||
offset_right = 13.5
|
offset_right = 13.5
|
||||||
offset_bottom = 14.0
|
offset_bottom = 14.0
|
||||||
mouse_default_cursor_shape = 2
|
mouse_default_cursor_shape = 2
|
||||||
script = ExtResource("13_4qkp8")
|
script = ExtResource("36_ews5c")
|
||||||
|
|
||||||
[node name="Reseed Button" type="Panel" parent="UI"]
|
[node name="Reseed Button" type="Panel" parent="UI"]
|
||||||
offset_left = 223.0
|
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()):
|
for view in range(render_scene_buffers.get_view_count()):
|
||||||
# Pack the exposure vector into a byte array
|
# Pack the exposure vector into a byte array
|
||||||
var uniform_array = PackedInt32Array(automaton.get_rule_ranges())
|
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
|
# 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)
|
exposure_compute.set_texture(0, world_texture)
|
||||||
|
|
|
@ -10,6 +10,11 @@ var needs_reseed : bool = true
|
||||||
|
|
||||||
var paused = false
|
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:
|
func _ready() -> void:
|
||||||
active_automaton = Automaton.new()
|
active_automaton = Automaton.new()
|
||||||
|
|
||||||
|
@ -48,4 +53,22 @@ func pause_automaton() -> void:
|
||||||
paused = !paused
|
paused = !paused
|
||||||
|
|
||||||
func is_paused() -> bool:
|
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