diff --git a/Block.gd b/Block.gd new file mode 100644 index 0000000..6cec4e5 --- /dev/null +++ b/Block.gd @@ -0,0 +1,15 @@ +extends Node2D +tool + + +export var color: Color setget set_color + + +func _ready(): + set_color(color) + + +func set_color(new_color): + color = new_color + if is_inside_tree(): + $Sprite.material.set_shader_param("color", new_color) diff --git a/Block.tscn b/Block.tscn index 858d3ce..d812e31 100644 --- a/Block.tscn +++ b/Block.tscn @@ -1,11 +1,30 @@ -[gd_scene load_steps=2 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://brick.png" type="Texture" id=1] +[ext_resource path="res://Block.gd" type="Script" id=2] + +[sub_resource type="Shader" id=1] +code = "shader_type canvas_item; + +uniform vec4 color; + + +void fragment() { + vec4 original_color = texture(TEXTURE, UV); + + COLOR = original_color * color; +}" + +[sub_resource type="ShaderMaterial" id=2] +resource_local_to_scene = true +shader = SubResource( 1 ) +shader_param/color = Color( 1, 1, 1, 1 ) [node name="Block" type="Node2D"] +script = ExtResource( 2 ) +color = Color( 1, 1, 1, 1 ) [node name="Sprite" type="Sprite" parent="."] +material = SubResource( 2 ) scale = Vector2( 0.125, 0.125 ) texture = ExtResource( 1 ) - -[node name="AdjacentRays" type="Sprite" parent="."] diff --git a/ShapeI.tscn b/ShapeI.tscn index ec43bf6..3afa308 100644 --- a/ShapeI.tscn +++ b/ShapeI.tscn @@ -8,12 +8,16 @@ script = ExtResource( 2 ) [node name="Block" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 32 ) +color = Color( 0.717647, 1, 0.952941, 1 ) [node name="Block2" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -32 ) +color = Color( 0.717647, 1, 0.952941, 1 ) [node name="Block3" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -96 ) +color = Color( 0.717647, 1, 0.952941, 1 ) [node name="Block4" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -160 ) +color = Color( 0.717647, 1, 0.952941, 1 ) diff --git a/ShapeJ.tscn b/ShapeJ.tscn index ffbe4ce..ad01cf6 100644 --- a/ShapeJ.tscn +++ b/ShapeJ.tscn @@ -8,12 +8,16 @@ script = ExtResource( 2 ) [node name="Block" parent="." instance=ExtResource( 1 )] position = Vector2( -32, 32 ) +color = Color( 0.486275, 0.494118, 1, 1 ) [node name="Block2" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 32 ) +color = Color( 0.486275, 0.494118, 1, 1 ) [node name="Block3" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -32 ) +color = Color( 0.486275, 0.494118, 1, 1 ) [node name="Block4" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -96 ) +color = Color( 0.486275, 0.494118, 1, 1 ) diff --git a/ShapeL.tscn b/ShapeL.tscn index a13b719..9286a9f 100644 --- a/ShapeL.tscn +++ b/ShapeL.tscn @@ -8,12 +8,16 @@ script = ExtResource( 2 ) [node name="Block" parent="." instance=ExtResource( 1 )] position = Vector2( -32, 32 ) +color = Color( 1, 0.47451, 0.47451, 1 ) [node name="Block3" parent="." instance=ExtResource( 1 )] position = Vector2( -32, -32 ) +color = Color( 1, 0.47451, 0.47451, 1 ) [node name="Block4" parent="." instance=ExtResource( 1 )] position = Vector2( -32, -96 ) +color = Color( 1, 0.47451, 0.47451, 1 ) [node name="Block2" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 32 ) +color = Color( 1, 0.47451, 0.47451, 1 ) diff --git a/ShapeO.tscn b/ShapeO.tscn index 4f75ec4..dc03e0e 100644 --- a/ShapeO.tscn +++ b/ShapeO.tscn @@ -8,12 +8,16 @@ script = ExtResource( 2 ) [node name="Block" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 32 ) +color = Color( 0.827451, 1, 0.490196, 1 ) [node name="Block2" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -32 ) +color = Color( 0.827451, 1, 0.490196, 1 ) [node name="Block3" parent="." instance=ExtResource( 1 )] position = Vector2( -32, -32 ) +color = Color( 0.827451, 1, 0.490196, 1 ) [node name="Block4" parent="." instance=ExtResource( 1 )] position = Vector2( -32, 32 ) +color = Color( 0.827451, 1, 0.490196, 1 ) diff --git a/ShapeS.tscn b/ShapeS.tscn index 21330d8..84cddf5 100644 --- a/ShapeS.tscn +++ b/ShapeS.tscn @@ -8,12 +8,16 @@ script = ExtResource( 2 ) [node name="Block" parent="." instance=ExtResource( 1 )] position = Vector2( -32, 32 ) +color = Color( 0.607843, 1, 0.603922, 1 ) [node name="Block2" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 32 ) +color = Color( 0.607843, 1, 0.603922, 1 ) [node name="Block3" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -32 ) +color = Color( 0.607843, 1, 0.603922, 1 ) [node name="Block4" parent="." instance=ExtResource( 1 )] position = Vector2( 96, -32 ) +color = Color( 0.607843, 1, 0.603922, 1 ) diff --git a/ShapeT.tscn b/ShapeT.tscn index e14f5d3..d029cf9 100644 --- a/ShapeT.tscn +++ b/ShapeT.tscn @@ -8,12 +8,16 @@ script = ExtResource( 2 ) [node name="Block" parent="." instance=ExtResource( 1 )] position = Vector2( -32, 32 ) +color = Color( 0.968627, 0.411765, 1, 1 ) [node name="Block2" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 32 ) +color = Color( 0.968627, 0.411765, 1, 1 ) [node name="Block3" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -32 ) +color = Color( 0.968627, 0.411765, 1, 1 ) [node name="Block4" parent="." instance=ExtResource( 1 )] position = Vector2( 96, 32 ) +color = Color( 0.968627, 0.411765, 1, 1 ) diff --git a/ShapeZ.tscn b/ShapeZ.tscn index 429aae7..fa6ea72 100644 --- a/ShapeZ.tscn +++ b/ShapeZ.tscn @@ -8,12 +8,16 @@ script = ExtResource( 2 ) [node name="Block" parent="." instance=ExtResource( 1 )] position = Vector2( -32, -32 ) +color = Color( 0.984314, 1, 0.537255, 1 ) [node name="Block2" parent="." instance=ExtResource( 1 )] position = Vector2( 32, -32 ) +color = Color( 0.984314, 1, 0.537255, 1 ) [node name="Block3" parent="." instance=ExtResource( 1 )] position = Vector2( 32, 32 ) +color = Color( 0.984314, 1, 0.537255, 1 ) [node name="Block4" parent="." instance=ExtResource( 1 )] position = Vector2( 96, 32 ) +color = Color( 0.984314, 1, 0.537255, 1 )