diff --git a/addons/block_code/drag_manager/drag_manager.gd b/addons/block_code/drag_manager/drag_manager.gd index 1c322c06..eb8b013a 100644 --- a/addons/block_code/drag_manager/drag_manager.gd +++ b/addons/block_code/drag_manager/drag_manager.gd @@ -24,7 +24,8 @@ var drag: Drag = null func _ready(): - _picker = get_node(picker_path) + if picker_path: + _picker = get_node(picker_path) _block_canvas = get_node(block_canvas_path) @@ -55,7 +56,8 @@ func drag_block(block: Block, copied_from: Block = null, offset: Vector2 = Vecto drag = Drag.new(block, block_scope, offset, _block_canvas) drag.set_snap_points(get_tree().get_nodes_in_group("snap_point")) - drag.add_delete_area(_picker.get_global_rect()) + if _picker: + drag.add_delete_area(_picker.get_global_rect()) if block is ParameterBlock and block.spawned_by: drag.add_delete_area(block.spawned_by.get_global_rect()) add_child(drag) diff --git a/addons/block_code/examples/demo_ingame/demo_ingame.gd b/addons/block_code/examples/demo_ingame/demo_ingame.gd new file mode 100644 index 00000000..27eb3a7d --- /dev/null +++ b/addons/block_code/examples/demo_ingame/demo_ingame.gd @@ -0,0 +1,41 @@ +extends Control + +@onready var _context := BlockEditorContext.get_default() + +@onready var block_code_node: BlockCode = %BlockCode +@onready var block_canvas: MarginContainer = %BlockCanvas +@onready var drag_manager: Control = %DragManager + + +func _ready() -> void: + block_canvas.reconnect_block.connect(drag_manager.connect_block_canvas_signals) + drag_manager.block_dropped.connect(save_script) + drag_manager.block_modified.connect(save_script) + _context.block_code_node = block_code_node + + +func _input(event): + if event is InputEventMouseButton: + var mouse_event: InputEventMouseButton = event as InputEventMouseButton + if mouse_event.button_index == MOUSE_BUTTON_LEFT: + if mouse_event.pressed: + # Release focus + var focused_node := get_viewport().gui_get_focus_owner() + if focused_node: + focused_node.release_focus() + else: + drag_manager.drag_ended() + + +func save_script(): + if _context.block_code_node == null: + print("No script loaded to save.") + return + + var block_script: BlockScriptSerialization = _context.block_script + block_canvas.rebuild_ast_list() + block_canvas.rebuild_block_serialization_trees() + var generated_script = block_canvas.generate_script_from_current_window() + if generated_script != block_script.generated_script: + block_script.generated_script = generated_script + block_code_node._update_parent_script() diff --git a/addons/block_code/examples/demo_ingame/demo_ingame.gd.uid b/addons/block_code/examples/demo_ingame/demo_ingame.gd.uid new file mode 100644 index 00000000..4ff67112 --- /dev/null +++ b/addons/block_code/examples/demo_ingame/demo_ingame.gd.uid @@ -0,0 +1 @@ +uid://cnoxd00s0tn51 diff --git a/addons/block_code/examples/demo_ingame/demo_ingame.tscn b/addons/block_code/examples/demo_ingame/demo_ingame.tscn new file mode 100644 index 00000000..2ab3092f --- /dev/null +++ b/addons/block_code/examples/demo_ingame/demo_ingame.tscn @@ -0,0 +1,111 @@ +[gd_scene load_steps=19 format=3 uid="uid://cytyr4s3vkoqm"] + +[ext_resource type="Script" uid="uid://cnoxd00s0tn51" path="res://addons/block_code/examples/demo_ingame/demo_ingame.gd" id="1_6vqkq"] +[ext_resource type="PackedScene" uid="uid://c6vumewgnfquy" path="res://addons/block_code/ui/block_canvas/block_canvas.tscn" id="2_7wcyd"] +[ext_resource type="Texture2D" uid="uid://dk8joxmlxu82l" path="res://icon.png" id="2_saega"] +[ext_resource type="Script" uid="uid://cumxsbxj56dmk" path="res://addons/block_code/block_code_node/block_code.gd" id="3_com2k"] +[ext_resource type="Script" uid="uid://brx1cabdmgu38" path="res://addons/block_code/serialization/block_serialization_tree.gd" id="4_dmtl1"] +[ext_resource type="Script" uid="uid://u035wsjd5tpj" path="res://addons/block_code/serialization/block_serialization.gd" id="5_fjkgv"] +[ext_resource type="Script" uid="uid://tlsvrkc3fubl" path="res://addons/block_code/serialization/block_script_serialization.gd" id="6_nae1f"] +[ext_resource type="Script" uid="uid://duvgxorhfitb7" path="res://addons/block_code/serialization/value_block_serialization.gd" id="7_25a4o"] +[ext_resource type="Script" uid="uid://bwkinr8omutpw" path="res://addons/block_code/code_generation/variable_definition.gd" id="7_qrh5q"] +[ext_resource type="PackedScene" uid="uid://cph1k5cfximbf" path="res://addons/block_code/drag_manager/drag_manager.tscn" id="10_kgp86"] + +[sub_resource type="Resource" id="Resource_7j0jm"] +script = ExtResource("5_fjkgv") +name = &"Node2D_change_rotation_degrees" +children = Array[ExtResource("5_fjkgv")]([]) +arguments = { +"value": -1.0 +} + +[sub_resource type="Resource" id="Resource_p7e31"] +script = ExtResource("5_fjkgv") +name = &"Node2D_change_rotation_degrees" +children = Array[ExtResource("5_fjkgv")]([]) +arguments = { +"value": 5.0 +} + +[sub_resource type="Resource" id="Resource_8vvuc"] +script = ExtResource("5_fjkgv") +name = &"process" +children = Array[ExtResource("5_fjkgv")]([SubResource("Resource_7j0jm"), SubResource("Resource_p7e31")]) +arguments = {} + +[sub_resource type="Resource" id="Resource_43nhb"] +script = ExtResource("4_dmtl1") +root = SubResource("Resource_8vvuc") +canvas_position = Vector2(75, 150) + +[sub_resource type="Resource" id="Resource_xn35n"] +script = ExtResource("7_25a4o") +name = &"mouse_position" +arguments = {} + +[sub_resource type="Resource" id="Resource_y3fve"] +script = ExtResource("5_fjkgv") +name = &"Node2D_set_position" +children = Array[ExtResource("5_fjkgv")]([]) +arguments = { +"value": SubResource("Resource_xn35n") +} + +[sub_resource type="Resource" id="Resource_k8cej"] +script = ExtResource("4_dmtl1") +root = SubResource("Resource_y3fve") +canvas_position = Vector2(125, 397) + +[sub_resource type="Resource" id="Resource_ydoon"] +script = ExtResource("6_nae1f") +script_inherits = "Sprite2D" +block_serialization_trees = Array[ExtResource("4_dmtl1")]([SubResource("Resource_43nhb"), SubResource("Resource_k8cej")]) +variables = Array[ExtResource("7_qrh5q")]([]) +generated_script = "extends Sprite2D + + +func _process(delta): + rotation_degrees += -1 + rotation_degrees += 5 + +" +version = 0 + +[node name="DemoInGame" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +mouse_filter = 1 +script = ExtResource("1_6vqkq") + +[node name="HSplitContainer" type="HSplitContainer" parent="."] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="BlockCanvas" parent="HSplitContainer" instance=ExtResource("2_7wcyd")] +unique_name_in_owner = true +layout_mode = 2 + +[node name="BoxContainer" type="BoxContainer" parent="HSplitContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="Icon" type="Sprite2D" parent="HSplitContainer/BoxContainer"] +position = Vector2(290, 317) +texture = ExtResource("2_saega") + +[node name="BlockCode" type="Node" parent="HSplitContainer/BoxContainer/Icon"] +unique_name_in_owner = true +script = ExtResource("3_com2k") +block_script = SubResource("Resource_ydoon") + +[node name="DragManager" parent="." instance=ExtResource("10_kgp86")] +unique_name_in_owner = true +block_canvas_path = NodePath("../HSplitContainer/BlockCanvas") diff --git a/addons/block_code/ui/block_canvas/block_canvas.gd b/addons/block_code/ui/block_canvas/block_canvas.gd index 715515b8..79b37f59 100644 --- a/addons/block_code/ui/block_canvas/block_canvas.gd +++ b/addons/block_code/ui/block_canvas/block_canvas.gd @@ -13,6 +13,9 @@ const Types = preload("res://addons/block_code/types/types.gd") const Util = preload("res://addons/block_code/ui/util.gd") const VariableDefinition = preload("res://addons/block_code/code_generation/variable_definition.gd") +const ZOOM_IN_ICON_TEXTURE = preload("res://addons/block_code/ui/block_canvas/zoom_in_icon_texture.tres") +const ZOOM_OUT_ICON_TEXTURE = preload("res://addons/block_code/ui/block_canvas/zoom_out_icon_texture.tres") + const EXTEND_MARGIN: float = 800 const BLOCK_AUTO_PLACE_MARGIN: Vector2 = Vector2(25, 8) const DEFAULT_WINDOW_MARGIN: Vector2 = Vector2(25, 25) @@ -37,8 +40,8 @@ const ZOOM_FACTOR: float = 1.1 @onready var _replace_block_code_button: Button = %ReplaceBlockCodeButton @onready var _open_scene_icon = _open_scene_button.get_theme_icon("Load", "EditorIcons") -@onready var _icon_zoom_out := EditorInterface.get_editor_theme().get_icon("ZoomLess", "EditorIcons") -@onready var _icon_zoom_in := EditorInterface.get_editor_theme().get_icon("ZoomMore", "EditorIcons") +@onready var _icon_zoom_out := EditorInterface.get_editor_theme().get_icon("ZoomLess", "EditorIcons") if EditorInterface.has_method("get_editor_theme") else ZOOM_OUT_ICON_TEXTURE +@onready var _icon_zoom_in := EditorInterface.get_editor_theme().get_icon("ZoomMore", "EditorIcons") if EditorInterface.has_method("get_editor_theme") else ZOOM_IN_ICON_TEXTURE @onready var _mouse_override: Control = %MouseOverride @onready var _zoom_buttons: HBoxContainer = %ZoomButtons @@ -211,7 +214,9 @@ func set_child(n: Node): func _on_context_changed(): clear_canvas() - var edited_node = EditorInterface.get_inspector().get_edited_object() as Node + var edited_node + if EditorInterface.has_method("get_inspector"): + edited_node = EditorInterface.get_inspector().get_edited_object() as Node if _context.block_script != _current_block_script: _window.position = Vector2(0, 0) diff --git a/addons/block_code/ui/block_canvas/zoom_in_icon_texture.tres b/addons/block_code/ui/block_canvas/zoom_in_icon_texture.tres new file mode 100644 index 00000000..94d8d247 --- /dev/null +++ b/addons/block_code/ui/block_canvas/zoom_in_icon_texture.tres @@ -0,0 +1,13 @@ +[gd_resource type="ImageTexture" load_steps=2 format=3 uid="uid://braer205nctqj"] + +[sub_resource type="Image" id="Image_47mxg"] +data = { +"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 58, 0, 0, 0, 86, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 85, 0, 0, 0, 58, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 60, 47, 47, 47, 114, 160, 160, 160, 177, 205, 205, 205, 225, 218, 218, 218, 246, 218, 218, 218, 246, 205, 205, 205, 225, 158, 158, 158, 176, 44, 44, 44, 114, 0, 0, 0, 59, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 76, 119, 119, 119, 150, 218, 218, 218, 246, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 219, 219, 219, 245, 117, 117, 117, 148, 0, 0, 0, 76, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 119, 119, 119, 148, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 254, 114, 114, 114, 147, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 18, 44, 44, 44, 114, 219, 219, 219, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 218, 218, 218, 245, 40, 40, 40, 113, 0, 0, 0, 17, 0, 0, 0, 58, 158, 158, 158, 176, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 155, 155, 155, 173, 0, 0, 0, 57, 0, 0, 0, 86, 206, 206, 206, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 203, 203, 203, 223, 0, 0, 0, 85, 0, 0, 0, 97, 219, 219, 219, 247, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 218, 218, 218, 244, 0, 0, 0, 97, 0, 0, 0, 97, 219, 219, 219, 247, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 218, 218, 218, 244, 0, 0, 0, 97, 0, 0, 0, 85, 206, 206, 206, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 201, 201, 201, 222, 0, 0, 0, 84, 0, 0, 0, 58, 157, 157, 157, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 152, 152, 152, 171, 0, 0, 0, 56, 0, 0, 0, 17, 44, 44, 44, 114, 218, 218, 218, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 217, 217, 217, 243, 36, 36, 36, 111, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 59, 116, 116, 116, 147, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 223, 223, 223, 254, 110, 110, 110, 144, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 76, 117, 117, 117, 148, 219, 219, 219, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 218, 218, 218, 243, 112, 112, 112, 144, 0, 0, 0, 74, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 59, 43, 43, 43, 113, 156, 156, 156, 175, 203, 203, 203, 224, 218, 218, 218, 245, 218, 218, 218, 245, 203, 203, 203, 223, 155, 155, 155, 173, 40, 40, 40, 113, 0, 0, 0, 58, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 57, 0, 0, 0, 85, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 84, 0, 0, 0, 56, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[resource] +image = SubResource("Image_47mxg") diff --git a/addons/block_code/ui/block_canvas/zoom_out_icon_texture.tres b/addons/block_code/ui/block_canvas/zoom_out_icon_texture.tres new file mode 100644 index 00000000..08eb6f2f --- /dev/null +++ b/addons/block_code/ui/block_canvas/zoom_out_icon_texture.tres @@ -0,0 +1,13 @@ +[gd_resource type="ImageTexture" load_steps=2 format=3 uid="uid://uejh0m7utv1t"] + +[sub_resource type="Image" id="Image_cj7at"] +data = { +"data": PackedByteArray(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 58, 0, 0, 0, 86, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 85, 0, 0, 0, 58, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 60, 47, 47, 47, 114, 160, 160, 160, 177, 205, 205, 205, 225, 218, 218, 218, 246, 218, 218, 218, 246, 205, 205, 205, 225, 158, 158, 158, 176, 44, 44, 44, 114, 0, 0, 0, 59, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 76, 119, 119, 119, 150, 218, 218, 218, 246, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 219, 219, 219, 245, 117, 117, 117, 148, 0, 0, 0, 76, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 119, 119, 119, 148, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 254, 114, 114, 114, 147, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 18, 44, 44, 44, 114, 219, 219, 219, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 218, 218, 218, 245, 40, 40, 40, 113, 0, 0, 0, 17, 0, 0, 0, 58, 158, 158, 158, 176, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 155, 155, 155, 173, 0, 0, 0, 57, 0, 0, 0, 86, 206, 206, 206, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 203, 203, 203, 223, 0, 0, 0, 85, 0, 0, 0, 97, 219, 219, 219, 247, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 218, 218, 218, 244, 0, 0, 0, 97, 0, 0, 0, 97, 219, 219, 219, 247, 224, 224, 224, 255, 224, 224, 224, 255, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 0, 0, 0, 102, 224, 224, 224, 255, 224, 224, 224, 255, 218, 218, 218, 244, 0, 0, 0, 97, 0, 0, 0, 85, 206, 206, 206, 226, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 201, 201, 201, 222, 0, 0, 0, 84, 0, 0, 0, 58, 157, 157, 157, 175, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 152, 152, 152, 171, 0, 0, 0, 56, 0, 0, 0, 17, 44, 44, 44, 114, 218, 218, 218, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 217, 217, 217, 243, 36, 36, 36, 111, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 59, 116, 116, 116, 147, 224, 224, 224, 254, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 223, 223, 223, 254, 110, 110, 110, 144, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 76, 117, 117, 117, 148, 219, 219, 219, 245, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 224, 224, 224, 255, 218, 218, 218, 243, 112, 112, 112, 144, 0, 0, 0, 74, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 59, 43, 43, 43, 113, 156, 156, 156, 175, 203, 203, 203, 224, 218, 218, 218, 245, 218, 218, 218, 245, 203, 203, 203, 223, 155, 155, 155, 173, 40, 40, 40, 113, 0, 0, 0, 58, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 57, 0, 0, 0, 85, 0, 0, 0, 97, 0, 0, 0, 97, 0, 0, 0, 84, 0, 0, 0, 56, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), +"format": "RGBA8", +"height": 16, +"mipmaps": false, +"width": 16 +} + +[resource] +image = SubResource("Image_cj7at")