diff --git a/addons/SignalVisualizer/Clear.svg b/addons/SignalVisualizer/Clear.svg new file mode 100644 index 0000000..289c24b --- /dev/null +++ b/addons/SignalVisualizer/Clear.svg @@ -0,0 +1 @@ + diff --git a/addons/SignalVisualizer/Clear.svg.import b/addons/SignalVisualizer/Clear.svg.import new file mode 100644 index 0000000..080f675 --- /dev/null +++ b/addons/SignalVisualizer/Clear.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmnff63evbdhv" +path="res://.godot/imported/Clear.svg-d661617e27b91e3580171e3447fde514.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SignalVisualizer/Clear.svg" +dest_files=["res://.godot/imported/Clear.svg-d661617e27b91e3580171e3447fde514.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/SignalVisualizer/Common/signal_connection.gd b/addons/SignalVisualizer/Common/signal_connection.gd new file mode 100644 index 0000000..9104e71 --- /dev/null +++ b/addons/SignalVisualizer/Common/signal_connection.gd @@ -0,0 +1,58 @@ +class_name SignalConnection extends Object + +# Properties +# |===================================| +# |===================================| +# |===================================| + +var signal_id: int +var source_node_name: String +var destination_node_name: String +var method_signature: String + +var description: String : + get: + return "ID: {signal_id} Source: {source_node_name} Destination: {destination_node_name} Method: {method_signature}".format({ + "signal_id": signal_id, + "source_node_name": source_node_name, + "destination_node_name": destination_node_name, + "method_signature": method_signature, + }) + +var dictionary_key: String : + get: + return "{signal_id}__{source_node_name}__{destination_node_name}__{method_signature}".format({ "signal_id": signal_id, "source_node_name": source_node_name, "destination_node_name": destination_node_name, "method_signature": method_signature.replace("::", "_") }) + +var dictionary_representation: Dictionary : + get: + return { + "signal_id": signal_id, + "source_node_name": source_node_name, + "destination_node_name": destination_node_name, + "method_signature": method_signature, + } + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + +func _init(signal_id: int, source_node_name: String, destination_node_name: String, method_signature: String): + self.signal_id = signal_id + self.source_node_name = source_node_name + self.destination_node_name = destination_node_name + self.method_signature = method_signature + +# Signals +# |===================================| +# |===================================| +# |===================================| + + + +# Methods +# |===================================| +# |===================================| +# |===================================| + + diff --git a/addons/SignalVisualizer/Common/signal_connection.gd.uid b/addons/SignalVisualizer/Common/signal_connection.gd.uid new file mode 100644 index 0000000..bd2142d --- /dev/null +++ b/addons/SignalVisualizer/Common/signal_connection.gd.uid @@ -0,0 +1 @@ +uid://dm613ct57qfwa diff --git a/addons/SignalVisualizer/Common/signal_description.gd b/addons/SignalVisualizer/Common/signal_description.gd new file mode 100644 index 0000000..66dddb0 --- /dev/null +++ b/addons/SignalVisualizer/Common/signal_description.gd @@ -0,0 +1,56 @@ +class_name SignalDescription extends Object + +# Properties +# |===================================| +# |===================================| +# |===================================| + +var id: int: + get: + if _source_id != null: + return _source_id + return get_instance_id() + +var node_name: String +var signal_name: String + +var description: String : + get: + return "ID: {id} Node: {node_name} Signal: {signal_name}".format({ + "id": id, + "node_name": node_name, + "signal_name": signal_name, + }) + +var dictionary_representation: Dictionary : + get: + return { + "id": id, + "node_name": node_name, + "signal_name": signal_name, + } + +var _source_id = null + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + +func _init(node_name: String, signal_name: String): + self.node_name = node_name + self.signal_name = signal_name + +# Signals +# |===================================| +# |===================================| +# |===================================| + + + +# Methods +# |===================================| +# |===================================| +# |===================================| + + diff --git a/addons/SignalVisualizer/Common/signal_description.gd.uid b/addons/SignalVisualizer/Common/signal_description.gd.uid new file mode 100644 index 0000000..1c41304 --- /dev/null +++ b/addons/SignalVisualizer/Common/signal_description.gd.uid @@ -0,0 +1 @@ +uid://dvgsocxisw3ae diff --git a/addons/SignalVisualizer/Common/signal_graph.gd b/addons/SignalVisualizer/Common/signal_graph.gd new file mode 100644 index 0000000..731d8a5 --- /dev/null +++ b/addons/SignalVisualizer/Common/signal_graph.gd @@ -0,0 +1,53 @@ +class_name SignalGraph extends Object + +# Properties +# |===================================| +# |===================================| +# |===================================| + +var name: String +var signals: Array[SignalDescription] +var edges: Array[SignalConnection] + +var description: String : + get: + return "Signals: {signals}\nEdges: {edges}".format({ + "signals": signals.map(func (item): return item.description), + "edges": edges.map(func (item): return item.description), + }) + +var dictionary_representation: Dictionary : + get: + return { + "name": name, + "signals": signals.map(func (element): return element.dictionary_representation), + "edges": edges.map(func (element): return element.dictionary_representation), + } + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + +func _init(name: String, signals: Array[SignalDescription] = [], edges: Array[SignalConnection] = []): + self.name = name + self.signals = signals + self.edges = edges + +# Signals +# |===================================| +# |===================================| +# |===================================| + + + +# Methods +# |===================================| +# |===================================| +# |===================================| + +func get_source_signal_for_edge(edge: SignalConnection) -> SignalDescription: + var result = signals.filter(func (item): return item.id == edge.signal_id) + if result.size() > 0: + return result[0] + return null diff --git a/addons/SignalVisualizer/Common/signal_graph.gd.uid b/addons/SignalVisualizer/Common/signal_graph.gd.uid new file mode 100644 index 0000000..8e72ce2 --- /dev/null +++ b/addons/SignalVisualizer/Common/signal_graph.gd.uid @@ -0,0 +1 @@ +uid://2qj81iy1le0a diff --git a/addons/SignalVisualizer/Common/signal_graph_utility.gd b/addons/SignalVisualizer/Common/signal_graph_utility.gd new file mode 100644 index 0000000..0a2cd22 --- /dev/null +++ b/addons/SignalVisualizer/Common/signal_graph_utility.gd @@ -0,0 +1,170 @@ +@tool +class_name SignalGraphUtility + +static var SignalGraphNode = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node.tscn") +static var GraphNodeItem = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn") + +const SOURCE_COLOR: Color = Color.SKY_BLUE +const DESTINATION_COLOR: Color = Color.CORAL +const CONNECTION_TYPE: int = 0 + +#region Methods + +static func create_signal_graph(name: String, signals: Array, edges: Array) -> SignalGraph: + var signal_graph = SignalGraph.new(name) + + for signal_item in signals: + var new_signal_description = SignalDescription.new(signal_item.node_name, signal_item.signal_name) + new_signal_description._source_id = signal_item.id + signal_graph.signals.append(new_signal_description) + + for connection in edges: + var new_edge = SignalConnection.new(connection.signal_id, connection.source_node_name, connection.destination_node_name, connection.method_signature) + signal_graph.edges.append(new_edge) + + return signal_graph + +static func create_signal_graph_from_node(root_node: Node, is_persistent_only: bool = false): + var signal_graph = SignalGraph.new(root_node.scene_file_path) + var all_nodes: Array[Node] = _gather_nodes_from_node(root_node) + var signals: Array[SignalDescription] = [] + var edges: Array[SignalConnection] = [] + + for node in all_nodes: + for signal_item in node.get_signal_list(): + var existing_signals = [] + var connection_list = node.get_signal_connection_list(signal_item["name"] as String) + if connection_list.size() > 0: + for connection in connection_list: + var enabled_flags = connection["flags"] == CONNECT_PERSIST if is_persistent_only else true + var should_display_connection = "name" in connection["callable"].get_object() and not connection["callable"].get_object().name.begins_with("@") and enabled_flags + if should_display_connection: + var signal_description: SignalDescription + var filtered_signals = existing_signals.filter(func (element): return element.signal_name == signal_item.name and element.node_name == node.name) + if filtered_signals.size() == 1: + signal_description = filtered_signals[0] + else: + signal_description = SignalDescription.new(node.name, signal_item.name) + existing_signals.append(signal_description) + signals.append(signal_description) + + var signal_edge = SignalConnection.new(signal_description.id, signal_description.node_name, connection["callable"].get_object().name, connection["callable"].get_method()) + if not signal_graph.edges.any(func (element): return element.signal_id == signal_description.id): + edges.append(signal_edge) + + var temp_signals = {} + for item in signals: + temp_signals[item.id] = item + + var temp_edges = {} + for item in edges: + temp_edges[item.dictionary_key] = item + + signal_graph.signals.assign(temp_signals.keys().map(func (key): return temp_signals[key])) + signal_graph.edges.assign(temp_edges.keys().map(func (key): return temp_edges[key])) + + return signal_graph + +static func generate_signal_graph_nodes(signal_graph: SignalGraph, graph_node: GraphEdit, open_script_callable: Callable): + var graph_nodes: Dictionary = {} + + for signal_item in signal_graph.signals: + var current_graph_node: SignalGraphNode + if graph_nodes.has(signal_item.node_name): + current_graph_node = graph_nodes[signal_item.node_name] + if not current_graph_node: + current_graph_node = SignalGraphNode.instantiate() + current_graph_node.title = signal_item.node_name + current_graph_node.name = _get_graph_node_name(signal_item.node_name) + graph_node.add_child(current_graph_node) + graph_nodes[signal_item.node_name] = current_graph_node + + for edge in signal_graph.edges: + var destination_graph_node: SignalGraphNode + if graph_nodes.has(edge.destination_node_name): + destination_graph_node = graph_nodes[edge.destination_node_name] + else: + destination_graph_node = SignalGraphNode.instantiate() + destination_graph_node.title = edge.destination_node_name + destination_graph_node.name = _get_graph_node_name(edge.destination_node_name) + graph_node.add_child(destination_graph_node) + graph_nodes[edge.destination_node_name] = destination_graph_node + + var source_signal = signal_graph.get_source_signal_for_edge(edge) + if source_signal != null: + var source_graph_node: SignalGraphNode = graph_nodes[edge.source_node_name] as SignalGraphNode + + if not source_graph_node.has_source_signal_description(source_signal.signal_name, edge.destination_node_name): + var source_signal_label = Label.new() + source_signal_label.text = source_signal.signal_name + source_signal_label.name = "source_" + source_signal.signal_name + "_" + edge.destination_node_name + source_graph_node.add_child(source_signal_label) + + var destination_signal_name = "destination_" + source_signal.signal_name + "_" + edge.method_signature.replace("::", "__") + var has_destination = destination_graph_node.has_destination_signal_description(source_signal.signal_name, edge.method_signature) + if not has_destination: + var destination_signal_item = GraphNodeItem.instantiate() + destination_signal_item.signal_data = SignalGraphNodeItem.Metadata.new(source_signal.signal_name, edge.method_signature, edge.destination_node_name) + destination_signal_item.text = edge.method_signature + destination_signal_item.name = destination_signal_name + destination_signal_item.open_script.connect(open_script_callable) + destination_graph_node.add_child(destination_signal_item) + + for edge in signal_graph.edges: + var source_signal = signal_graph.get_source_signal_for_edge(edge) + if source_signal != null: + var source_graph_node: SignalGraphNode = graph_nodes[edge.source_node_name] as SignalGraphNode + var destination_graph_node: SignalGraphNode = graph_nodes[edge.destination_node_name] as SignalGraphNode + + var from_port = source_graph_node.get_source_slot(source_signal.signal_name, edge.destination_node_name) + var to_port = destination_graph_node.get_destination_slot(source_signal.signal_name, edge.method_signature) + + source_graph_node.set_slot(from_port, false, CONNECTION_TYPE, Color.BLACK, true, CONNECTION_TYPE, SOURCE_COLOR) + destination_graph_node.set_slot(to_port, true, CONNECTION_TYPE, DESTINATION_COLOR, false, CONNECTION_TYPE, Color.BLACK) + + var from_slot_index = source_graph_node.get_next_source_slot(source_signal.signal_name, edge.destination_node_name) + var to_slot_index = destination_graph_node.get_next_destination_slot(source_signal.signal_name, edge.method_signature) + + if from_port >= 0 and to_port >= 0: + graph_node.connect_node(source_graph_node.name, from_slot_index, destination_graph_node.name, to_slot_index) + else: + print(">>> Invalid Connection Request") + +static func generate_signal_graph_tree(signal_graph: SignalGraph, tree_node: Tree): + var root = tree_node.create_item() + root.set_text(0, signal_graph.name) + + var tree_items: Dictionary = {} + + for signal_item in signal_graph.signals: + var node_tree_item: TreeItem + if tree_items.has(signal_item.node_name): + node_tree_item = tree_items[signal_item.node_name] as TreeItem + else: + node_tree_item = tree_node.create_item(root) + node_tree_item.set_text(0, signal_item.node_name) + tree_items[signal_item.node_name] = node_tree_item + + var signal_tree_item = tree_node.create_item(node_tree_item) + signal_tree_item.set_text(0, signal_item.signal_name) + + for edge in signal_graph.edges.filter(func (item): return item.signal_id == signal_item.id): + var signal_connection_tree_item = tree_node.create_item(signal_tree_item) + signal_connection_tree_item.set_text(0, edge.destination_node_name + "::" + edge.method_signature) + +static func _get_graph_node_name(name: String) -> String: + return "{node_name}_graph_node".format({ "node_name": name }) + +static func _gather_nodes_from_node(root_node: Node) -> Array[Node]: + var node_list: Array[Node] = [root_node] + return node_list + __gather_nodes_from_node(root_node) + +static func __gather_nodes_from_node(node: Node) -> Array[Node]: + var nodes: Array[Node] = [] + for child in node.get_children(false): + nodes.append(child) + nodes += __gather_nodes_from_node(child) + + return nodes + +#endregion diff --git a/addons/SignalVisualizer/Common/signal_graph_utility.gd.uid b/addons/SignalVisualizer/Common/signal_graph_utility.gd.uid new file mode 100644 index 0000000..3055a04 --- /dev/null +++ b/addons/SignalVisualizer/Common/signal_graph_utility.gd.uid @@ -0,0 +1 @@ +uid://csw8uccbs0vuk diff --git a/addons/SignalVisualizer/Debugger/SignalDebugger.gd b/addons/SignalVisualizer/Debugger/SignalDebugger.gd new file mode 100644 index 0000000..2f8a712 --- /dev/null +++ b/addons/SignalVisualizer/Debugger/SignalDebugger.gd @@ -0,0 +1,146 @@ +extends Node + +# Properties +# |===================================| +# |===================================| +# |===================================| + +var _signal_graph: SignalGraph +var _lambda_map: Dictionary = {} + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + +func _ready(): + if OS.is_debug_build(): + EngineDebugger.register_message_capture("signal_debugger", _on_signal_debugger_message_capture) + +# Signals +# |===================================| +# |===================================| +# |===================================| + +func _on_signal_debugger_message_capture(message: String, data: Array) -> bool: + if message == "start": + _signal_graph = generate_signal_graph() + for signal_item in _signal_graph.signals: + _connect_to_signal(signal_item) + EngineDebugger.send_message( + "signal_debugger:generated_graph", + [[_signal_graph.signals.map(func (item): return item.dictionary_representation), _signal_graph.edges.map(func (item): return item.dictionary_representation)]] + ) + if message == "stop" and _signal_graph: + for signal_item in _signal_graph.signals: + _disconnect_from_signal(signal_item) + + if message == "invoke_signal" and data.size() == 2: + var node_name = data[0] + var signal_name = data[1] + + var root_node = get_tree().current_scene + var node = root_node if root_node.name == node_name else root_node.find_child(node_name) + if node: + var connection_list = node.get_signal_connection_list(signal_name) + for connection in connection_list: + var callable = connection["callable"] + var bound_args = callable.get_bound_arguments() + var bound_args_count = callable.get_bound_arguments_count() + var method = callable.get_method() + callable.callv([node]) + + return true + +func _on_signal_execution(signal_name: String, node_name: String, args): + EngineDebugger.send_message( + "signal_debugger:signal_executed", + [Time.get_datetime_string_from_system(), node_name, signal_name] + ) + +# Methods +# |===================================| +# |===================================| +# |===================================| + +func generate_signal_graph() -> SignalGraph: + var graph = SignalGraphUtility.create_signal_graph_from_node(get_tree().current_scene) + return graph + #var signal_graph = SignalGraph.new(get_tree().current_scene.name) + #var all_nodes: Array[Node] = _gather_nodes_in_scene() + #var signals: Array[SignalDescription] = [] + #var edges: Array[SignalConnection] = [] + # + #for node in all_nodes: + #for signal_item in node.get_signal_list(): + #var existing_signals = [] + #var connection_list = node.get_signal_connection_list(signal_item["name"] as String) + #if connection_list.size() > 0: + #for connection in connection_list: + #var should_display_connection = "name" in connection["callable"].get_object() and not connection["callable"].get_object().name.begins_with("@") + #if should_display_connection: + #var signal_description: SignalDescription + #var filtered_signals = existing_signals.filter(func (element): return element.signal_name == signal_item.name and element.node_name == node.name) + #if filtered_signals.size() == 1: + #signal_description = filtered_signals[0] + #else: + #signal_description = SignalDescription.new(node.name, signal_item.name) + #existing_signals.append(signal_description) + #signals.append(signal_description) + # + #var signal_edge = SignalConnection.new(signal_description.id, signal_description.node_name, connection["callable"].get_object().name, connection["callable"].get_method()) + #if not signal_graph.edges.any(func (element): return element.signal_id == signal_description.id): + #edges.append(signal_edge) + # + #var temp_signals = {} + #for item in signals: + #temp_signals[item.id] = item + # + #var temp_edges = {} + #for item in edges: + #temp_edges[item.dictionary_key] = item + # + #signal_graph.signals.assign(temp_signals.keys().map(func (key): return temp_signals[key])) + #signal_graph.edges.assign(temp_edges.keys().map(func (key): return temp_edges[key])) + # + #return signal_graph + +#func _gather_nodes_in_scene() -> Array[Node]: + #var scene_root = get_tree().current_scene + #var node_list: Array[Node] = [scene_root] + #return node_list + _gather_nodes_from_node(scene_root) +# +#func _gather_nodes_from_node(node: Node) -> Array[Node]: + #var nodes: Array[Node] = [] + #for child in node.get_children(false): + #nodes.append(child) + #nodes += _gather_nodes_from_node(child) + # + #return nodes + +func _connect_to_signal(signal_item: SignalDescription): + var root_node = get_tree().current_scene + var _execute: Callable = func (args = []): _on_signal_execution(signal_item.signal_name, signal_item.node_name, args) + if root_node.name == signal_item.node_name: + root_node.connect(signal_item.signal_name, _execute) + _lambda_map[signal_item] = _execute + else: + var child = root_node.find_child(signal_item.node_name) + if child: + child.connect(signal_item.signal_name, _execute) + _lambda_map[signal_item] = _execute + +func _disconnect_from_signal(signal_item: SignalDescription): + var root_node = get_tree().current_scene + if root_node.name == signal_item.node_name: + var callable = _lambda_map[signal_item] + if callable: + root_node.disconnect(signal_item.signal_name, callable) + _lambda_map.erase(signal_item) + else: + var child = root_node.find_child(signal_item.node_name) + if child: + var callable = _lambda_map[signal_item] + if callable: + child.disconnect(signal_item.signal_name, callable) + _lambda_map.erase(signal_item) diff --git a/addons/SignalVisualizer/Debugger/SignalDebugger.gd.uid b/addons/SignalVisualizer/Debugger/SignalDebugger.gd.uid new file mode 100644 index 0000000..cafedea --- /dev/null +++ b/addons/SignalVisualizer/Debugger/SignalDebugger.gd.uid @@ -0,0 +1 @@ +uid://bmsqdh2cnmgw8 diff --git a/addons/SignalVisualizer/Debugger/SignalDebugger.tscn b/addons/SignalVisualizer/Debugger/SignalDebugger.tscn new file mode 100644 index 0000000..12760a0 --- /dev/null +++ b/addons/SignalVisualizer/Debugger/SignalDebugger.tscn @@ -0,0 +1,97 @@ +[gd_scene load_steps=5 format=3 uid="uid://cbsmvov8u78q"] + +[ext_resource type="Script" path="res://addons/SignalVisualizer/Debugger/signal_debugger_panel.gd" id="1_66cpc"] +[ext_resource type="Texture2D" uid="uid://be3nwoioa311t" path="res://addons/SignalVisualizer/Play.svg" id="2_2wkuv"] +[ext_resource type="Texture2D" uid="uid://oo1oq2colx5b" path="res://addons/SignalVisualizer/Stop.svg" id="3_bg5eu"] +[ext_resource type="Texture2D" uid="uid://bmnff63evbdhv" path="res://addons/SignalVisualizer/Clear.svg" id="4_vg63r"] + +[node name="SignalDebugger" type="Control"] +clip_contents = true +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_66cpc") +start_icon = ExtResource("2_2wkuv") +stop_icon = ExtResource("3_bg5eu") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +custom_minimum_size = Vector2(2.08165e-12, 50) +layout_mode = 2 +theme_override_constants/separation = 8 + +[node name="ActionButton" type="Button" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +disabled = true +text = "Start" +icon = ExtResource("2_2wkuv") + +[node name="ClearAllButton" type="Button" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Clear All" +icon = ExtResource("4_vg63r") + +[node name="Spacer" type="Control" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="ClearLogsButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Clear Logs" +icon = ExtResource("4_vg63r") + +[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="SignalTree" type="Tree" parent="VBoxContainer/HSplitContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(250, 2.08165e-12) +layout_mode = 2 +columns = 2 +allow_reselect = true +allow_rmb_select = true +hide_root = true + +[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HSplitContainer"] +layout_mode = 2 + +[node name="TabBar" type="TabBar" parent="VBoxContainer/HSplitContainer/VBoxContainer"] +layout_mode = 2 +tab_count = 2 +tab_0/title = "Signal Log" +tab_1/title = "Signal Graph" + +[node name="LogLabel" type="RichTextLabel" parent="VBoxContainer/HSplitContainer/VBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +theme_override_colors/default_color = Color(0.690196, 0.690196, 0.690196, 1) +bbcode_enabled = true +scroll_following = true + +[node name="Graph" type="GraphEdit" parent="VBoxContainer/HSplitContainer/VBoxContainer"] +unique_name_in_owner = true +visible = false +layout_mode = 2 +size_flags_vertical = 3 + +[connection signal="pressed" from="VBoxContainer/HBoxContainer/ActionButton" to="." method="_on_action_button_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/ClearAllButton" to="." method="_on_clear_all_button_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/ClearLogsButton" to="." method="_on_clear_logs_button_pressed"] +[connection signal="item_selected" from="VBoxContainer/HSplitContainer/SignalTree" to="." method="_on_signal_tree_item_selected"] +[connection signal="tab_changed" from="VBoxContainer/HSplitContainer/VBoxContainer/TabBar" to="." method="_on_tab_bar_tab_changed"] diff --git a/addons/SignalVisualizer/Debugger/signal_debugger_panel.gd b/addons/SignalVisualizer/Debugger/signal_debugger_panel.gd new file mode 100644 index 0000000..9cf51de --- /dev/null +++ b/addons/SignalVisualizer/Debugger/signal_debugger_panel.gd @@ -0,0 +1,192 @@ +@tool +class_name SignalDebuggerPanel extends Control + +signal open_script(node_name: String, method_signature: String) + +signal start_signal_debugging +signal stop_signal_debugging + +var SignalGraphNode = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node.tscn") +var GraphNodeItem = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn") + +const SOURCE_COLOR: Color = Color.SKY_BLUE +const DESTINATION_COLOR: Color = Color.CORAL +const CONNECTION_TYPE: int = 0 + +enum Tabs { + LOG, + GRAPH +} + +# Properties +# |===================================| +# |===================================| +# |===================================| + +@export var start_icon: Texture2D +@export var stop_icon: Texture2D + +@onready var action_button: Button = %ActionButton +@onready var clear_all_button: Button = %ClearAllButton +@onready var signal_tree: Tree = %SignalTree +@onready var log_label: RichTextLabel = %LogLabel +@onready var graph_node: GraphEdit = %Graph + +var is_started: bool = false : + get: return is_started + set(new_value): + is_started = new_value + _update_action_button() + +var _signals: Array = [] +var _signal_filter: Array = [] +var _is_stack_trace_enabled: bool = false +var _debugger_tab_state: Tabs = Tabs.LOG +var _graph: SignalGraph + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + +func _ready(): + disable() + _handle_tab_update(0) + +# Signals +# |===================================| +# |===================================| +# |===================================| + +func _on_action_button_pressed(): + if is_started: + stop() + else: + start() + +func _on_clear_all_button_pressed(): + log_label.clear() + signal_tree.clear() + graph_node.clear_connections() + for child in graph_node.get_children(): + if child is SignalGraphNode: + child.queue_free() + +func _on_clear_logs_button_pressed(): + log_label.clear() + +func _on_signal_tree_item_selected(): + # Updates the checkmark button + var selected_item = signal_tree.get_selected() + var is_checked = selected_item.is_checked(1) + selected_item.set_checked(1, (not is_checked)) + + # Add / Remove signal from filters + var selected_signal = _signals.filter(func (element): return element.signal_name == selected_item.get_text(0))[0] + if _signal_filter.has(selected_signal.signal_name): + var selected_index = _signal_filter.find(selected_signal.signal_name) + _signal_filter.remove_at(selected_index) + else: + _signal_filter.append(selected_signal.signal_name) + +func _on_tab_bar_tab_changed(tab: int): + _handle_tab_update(tab) + +func _on_stack_trace_button_pressed(): + _is_stack_trace_enabled = not _is_stack_trace_enabled + +func _on_open_signal_in_script(data: SignalGraphNodeItem.Metadata): + open_script.emit(data.node_name, data.method_signature) + +# Methods +# |===================================| +# |===================================| +# |===================================| + +func enable(): + action_button.disabled = false + +func disable(): + action_button.disabled = true + +func start(): + if not is_started: + is_started = true + action_button.icon = stop_icon + start_signal_debugging.emit() + log_label.append_text("[color=#B0B0B0]Signal Debugging Started...[/color]") + log_label.newline() + log_label.newline() + +func stop(): + if is_started: + is_started = false + action_button.icon = start_icon + stop_signal_debugging.emit() + log_label.newline() + log_label.append_text("[color=#B0B0B0]Signal Debugging Stopped[/color]") + log_label.newline() + log_label.newline() + +func create_tree_from_signals(signals: Array): + _signals = signals + var root = signal_tree.create_item() + root.set_text(0, "Signals") + + var tree_items: Dictionary = {} + + for signal_item in signals: + var node_tree_item: TreeItem + if tree_items.has(signal_item.node_name): + node_tree_item = tree_items[signal_item.node_name] as TreeItem + else: + node_tree_item = signal_tree.create_item(root) + node_tree_item.set_text(0, signal_item.node_name) + node_tree_item.set_selectable(0, false) + node_tree_item.set_selectable(1, false) + tree_items[signal_item.node_name] = node_tree_item + + var signal_tree_item = signal_tree.create_item(node_tree_item) + signal_tree_item.set_text(0, signal_item.signal_name) + signal_tree_item.set_cell_mode(1, TreeItem.CELL_MODE_CHECK) + signal_tree_item.set_checked(1, true) + signal_tree_item.set_selectable(0, false) + signal_tree_item.set_selectable(1, true) + +func create_signal_graph(signals: Array, edges: Array): + _graph = SignalGraphUtility.create_signal_graph(get_tree().edited_scene_root.scene_file_path, signals, edges) + SignalGraphUtility.generate_signal_graph_nodes(_graph, graph_node, _on_open_signal_in_script) + +func log_signal_execution(time: String, node_name: String, signal_name: String): + if _signal_filter != null and _signal_filter.has(signal_name): + return + + if not log_label.text.is_empty(): + log_label.newline() + log_label.append_text( + "[color=#FFCC00]{time}[/color]\t\t{node_name}\t\t{signal_name}".format({ "time": time, "node_name": node_name, "signal_name": signal_name }) + ) + log_label.newline() + +func _handle_tab_update(selected_tab_index: int): + match selected_tab_index: + 1: + _debugger_tab_state = Tabs.GRAPH + _: + _debugger_tab_state = Tabs.LOG + + match _debugger_tab_state: + Tabs.LOG: + log_label.show() + graph_node.hide() + Tabs.GRAPH: + log_label.hide() + graph_node.show() + +func _update_action_button(): + if is_started: + action_button.text = "Stop" + action_button.modulate = Color("#ff3b30") + else: + action_button.text = "Start" + action_button.modulate = Color.WHITE diff --git a/addons/SignalVisualizer/Debugger/signal_debugger_panel.gd.uid b/addons/SignalVisualizer/Debugger/signal_debugger_panel.gd.uid new file mode 100644 index 0000000..45d1550 --- /dev/null +++ b/addons/SignalVisualizer/Debugger/signal_debugger_panel.gd.uid @@ -0,0 +1 @@ +uid://yg8cqm6f1prd diff --git a/addons/SignalVisualizer/GraphEdit.svg b/addons/SignalVisualizer/GraphEdit.svg new file mode 100644 index 0000000..b53e264 --- /dev/null +++ b/addons/SignalVisualizer/GraphEdit.svg @@ -0,0 +1 @@ + diff --git a/addons/SignalVisualizer/GraphEdit.svg.import b/addons/SignalVisualizer/GraphEdit.svg.import new file mode 100644 index 0000000..30d83d6 --- /dev/null +++ b/addons/SignalVisualizer/GraphEdit.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bxj8ep08wbnm6" +path="res://.godot/imported/GraphEdit.svg-90dae61e8e0b157ab8eff95fe4b91e53.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SignalVisualizer/GraphEdit.svg" +dest_files=["res://.godot/imported/GraphEdit.svg-90dae61e8e0b157ab8eff95fe4b91e53.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/SignalVisualizer/Play.svg b/addons/SignalVisualizer/Play.svg new file mode 100644 index 0000000..7da41c1 --- /dev/null +++ b/addons/SignalVisualizer/Play.svg @@ -0,0 +1 @@ + diff --git a/addons/SignalVisualizer/Play.svg.import b/addons/SignalVisualizer/Play.svg.import new file mode 100644 index 0000000..e580485 --- /dev/null +++ b/addons/SignalVisualizer/Play.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://be3nwoioa311t" +path="res://.godot/imported/Play.svg-a446691ffcef211028bb160b5a2d6ff1.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SignalVisualizer/Play.svg" +dest_files=["res://.godot/imported/Play.svg-a446691ffcef211028bb160b5a2d6ff1.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/SignalVisualizer/SignalVisualizer.gd b/addons/SignalVisualizer/SignalVisualizer.gd new file mode 100644 index 0000000..7701613 --- /dev/null +++ b/addons/SignalVisualizer/SignalVisualizer.gd @@ -0,0 +1,162 @@ +@tool +extends EditorPlugin + +class SignalDebuggerPlugin extends EditorDebuggerPlugin: + var SignalDebuggerPanelScene = preload("res://addons/SignalVisualizer/Debugger/SignalDebugger.tscn") + + signal open_script + signal start_signal_debugging + signal stop_signal_debugging + + var debugger_panel + + func _has_capture(prefix) -> bool: + return prefix == "signal_debugger" + + func _capture(message, data, session_id) -> bool: + if message == "signal_debugger:signal_executed": + if data.size() == 3: + var time = data[0] + var node_name = data[1] + var signal_name = data[2] + debugger_panel.log_signal_execution(time, node_name, signal_name) + return true + + if message == "signal_debugger:generated_graph": + if data.size() == 1: + var signals = data[0][0] as Array + var edges = data[0][1] as Array + debugger_panel.create_tree_from_signals(signals) + debugger_panel.create_signal_graph(signals, edges) + return true + + return false + + func _setup_session(session_id): + debugger_panel = SignalDebuggerPanelScene.instantiate() + var session = get_session(session_id) + + debugger_panel.name = "Signal Debugger" + debugger_panel.open_script.connect(func (arg1, arg2): open_script.emit(arg1, arg2)) + debugger_panel.start_signal_debugging.connect(func (): start_signal_debugging.emit()) + debugger_panel.stop_signal_debugging.connect(func (): stop_signal_debugging.emit()) + + session.started.connect( + func (): + debugger_panel.enable() + ) + session.stopped.connect( + func (): + debugger_panel.stop() + debugger_panel.disable() + stop_signal_debugging.emit() + ) + + session.add_session_tab(debugger_panel) + +var SignalVisualizerDockScene = preload("res://addons/SignalVisualizer/Visualizer/signal_visualizer_dock.tscn") + +class ScriptMethodReference: + var script_reference: Script + var line_number: int + +# Properties +# |===================================| +# |===================================| +# |===================================| + +var dock: Control +var debugger: SignalDebuggerPlugin + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + +func _enter_tree(): + dock = SignalVisualizerDockScene.instantiate() + debugger = SignalDebuggerPlugin.new() + + dock.open_script.connect(_on_open_signal_in_script) + add_control_to_bottom_panel(dock, "Signal Visualizer") + + debugger.start_signal_debugging.connect(_on_debugger_start_signal_debugging) + debugger.stop_signal_debugging.connect(_on_debugger_stop_signal_debugging) + debugger.open_script.connect(_on_open_signal_in_script) + add_debugger_plugin(debugger) + + if not ProjectSettings.has_setting("autoload/Signal_Debugger"): + add_autoload_singleton("Signal_Debugger", "res://addons/SignalVisualizer/Debugger/SignalDebugger.gd") + +func _exit_tree(): + remove_control_from_bottom_panel(dock) + dock.free() + + remove_debugger_plugin(debugger) + remove_autoload_singleton("Signal_Debugger") + +# Signals +# |===================================| +# |===================================| +# |===================================| + +func _on_open_signal_in_script(node_name: String, method_signature: String): + var node: Node + if get_tree().edited_scene_root.name == node_name: + node = get_tree().edited_scene_root + else: + node = get_tree().edited_scene_root.find_child(node_name) + + if node != null: + var script: Script = node.get_script() + if script != null: + var editor = get_editor_interface() + var method_reference = _find_method_reference_in_script(script, method_signature) + + if method_reference != null: + editor.edit_script(method_reference.script_reference, method_reference.line_number, 0) + editor.set_main_screen_editor("Script") + else: + push_warning("Requested method in script ({script}) for node ({name}) is not available.".format({ "name": node_name, "script": script.name })) + else: + push_warning("Requested script for node ({name}) is not available.".format({ "name": node_name })) + else: + push_warning("Requested script for node ({name}) is not available.".format({ "name": node_name })) + +func _on_debugger_start_signal_debugging(): + for session in debugger.get_sessions(): + session.send_message("signal_debugger:start", []) + +func _on_debugger_stop_signal_debugging(): + for session in debugger.get_sessions(): + session.send_message("signal_debugger:stop", []) + +# Methods +# |===================================| +# |===================================| +# |===================================| + +func _find_method_reference_in_script(script: Script, method_signature: String) -> ScriptMethodReference: + var line_number = __find_method_line_number_in_script(script, method_signature) + + if line_number == -1: + var base_script = script.get_base_script() + if base_script: + return _find_method_reference_in_script(base_script, method_signature) + + var reference = ScriptMethodReference.new() + reference.script_reference = script + reference.line_number = line_number + + return reference + +func __find_method_line_number_in_script(script: Script, method_signature: String) -> int: + var line_number = 0 + var found = false + for line in script.source_code.split("\n", true): + line_number += 1 + if line.contains(method_signature): + found = true + return line_number + + return -1 diff --git a/addons/SignalVisualizer/SignalVisualizer.gd.uid b/addons/SignalVisualizer/SignalVisualizer.gd.uid new file mode 100644 index 0000000..3cb5af2 --- /dev/null +++ b/addons/SignalVisualizer/SignalVisualizer.gd.uid @@ -0,0 +1 @@ +uid://43lcsn3nt3ri diff --git a/addons/SignalVisualizer/Stop.svg b/addons/SignalVisualizer/Stop.svg new file mode 100644 index 0000000..4c79ea1 --- /dev/null +++ b/addons/SignalVisualizer/Stop.svg @@ -0,0 +1 @@ + diff --git a/addons/SignalVisualizer/Stop.svg.import b/addons/SignalVisualizer/Stop.svg.import new file mode 100644 index 0000000..5e92938 --- /dev/null +++ b/addons/SignalVisualizer/Stop.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://oo1oq2colx5b" +path="res://.godot/imported/Stop.svg-e085086fb31c334bc2f02ca2bffba522.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/SignalVisualizer/Stop.svg" +dest_files=["res://.godot/imported/Stop.svg-e085086fb31c334bc2f02ca2bffba522.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/SignalVisualizer/Visualizer/resizable_label.gd b/addons/SignalVisualizer/Visualizer/resizable_label.gd new file mode 100644 index 0000000..1c09297 --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/resizable_label.gd @@ -0,0 +1,31 @@ +@tool +extends Label + +# Properties +# |===================================| +# |===================================| +# |===================================| + + + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + + + +# Signals +# |===================================| +# |===================================| +# |===================================| + + + +# Methods +# |===================================| +# |===================================| +# |===================================| + +func get_text_size() -> Vector2: + return get_theme_default_font().get_string_size(text) diff --git a/addons/SignalVisualizer/Visualizer/resizable_label.gd.uid b/addons/SignalVisualizer/Visualizer/resizable_label.gd.uid new file mode 100644 index 0000000..b87c32a --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/resizable_label.gd.uid @@ -0,0 +1 @@ +uid://d3lyqancfvwup diff --git a/addons/SignalVisualizer/Visualizer/signal_graph_node.gd b/addons/SignalVisualizer/Visualizer/signal_graph_node.gd new file mode 100644 index 0000000..1b3fa5e --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_graph_node.gd @@ -0,0 +1,94 @@ +@tool +class_name SignalGraphNode extends GraphNode + +# Properties +# |===================================| +# |===================================| +# |===================================| + +var connections: Array = [] : + get: return connections + set(new_value): + connections = new_value + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + +func _ready(): + selectable = true + resizable = true + draggable = true + +# Signals +# |===================================| +# |===================================| +# |===================================| + +func _on_resize_request(new_minsize): + size = new_minsize + +# Methods +# |===================================| +# |===================================| +# |===================================| + +func has_source_signal_description(signal_name: String, destination_node_name: String) -> bool: + for child in get_children(): + if child.name == "source_" + signal_name + "_" + destination_node_name: + return true + + return false + +func get_source_slot(signal_name: String, destination_node_name: String) -> int: + var index = 0 + for child in get_children(): + if child.name == "source_" + signal_name + "_" + destination_node_name: + return index + + index += 1 + + return -1 + +func get_next_source_slot(signal_name: String, destination_node_name: String) -> int: + var index = 0 + for child in get_children(): + if child.name.begins_with("source_"): + if child.name == "source_" + signal_name + "_" + destination_node_name: + return index + + index += 1 + + return -1 + +func has_destination_signal_description(signal_name: String, method_signature: String) -> bool: + for child in get_children(): + if child.name == "destination_" + signal_name + "_" + _sanitize_method_signature(method_signature): + return true + + return false + +func get_destination_slot(signal_name: String, method_signature: String) -> int: + var index = 0 + for child in get_children(): + if child.name == "destination_" + signal_name + "_" + _sanitize_method_signature(method_signature): + return index + + index += 1 + + return -1 + +func get_next_destination_slot(signal_name: String, method_signature: String) -> int: + var index = 0 + for child in get_children(): + if child.name.begins_with("destination_"): + if child.name == "destination_" + signal_name + "_" + _sanitize_method_signature(method_signature): + return index + + index += 1 + + return -1 + +func _sanitize_method_signature(signature: String) -> String: + return signature.replace("::", "__") diff --git a/addons/SignalVisualizer/Visualizer/signal_graph_node.gd.uid b/addons/SignalVisualizer/Visualizer/signal_graph_node.gd.uid new file mode 100644 index 0000000..fd4bbdb --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_graph_node.gd.uid @@ -0,0 +1 @@ +uid://bdwkkgkhgfrtk diff --git a/addons/SignalVisualizer/Visualizer/signal_graph_node.tscn b/addons/SignalVisualizer/Visualizer/signal_graph_node.tscn new file mode 100644 index 0000000..b28fdda --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_graph_node.tscn @@ -0,0 +1,12 @@ +[gd_scene load_steps=2 format=3 uid="uid://cq10iaub18e54"] + +[ext_resource type="Script" path="res://addons/SignalVisualizer/Visualizer/signal_graph_node.gd" id="1_ovklj"] + +[node name="SignalGraphNode" type="GraphNode"] +custom_minimum_size = Vector2(100, 50) +offset_right = 232.0 +offset_bottom = 54.0 +resizable = true +script = ExtResource("1_ovklj") + +[connection signal="resize_request" from="." to="." method="_on_resize_request"] diff --git a/addons/SignalVisualizer/Visualizer/signal_graph_node_item.gd b/addons/SignalVisualizer/Visualizer/signal_graph_node_item.gd new file mode 100644 index 0000000..60f7df5 --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_graph_node_item.gd @@ -0,0 +1,57 @@ +@tool +class_name SignalGraphNodeItem extends Control + +signal open_script(metadata: SignalGraphNodeItem.Metadata) + +class Metadata: + var signal_name: String + var method_signature: String + var node_name: String + + func _init(signal_name: String, method_signature: String, node_name: String): + self.signal_name = signal_name + self.method_signature = method_signature + self.node_name = node_name + +# Properties +# |===================================| +# |===================================| +# |===================================| + +@onready var label: Label = %DescriptionLabel + +var signal_data: Metadata = null + +var text: String = "" : + get: return text + set(new_value): + text = new_value + if label: + label.text = text + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + +func _ready(): + _update() + +# Signals +# |===================================| +# |===================================| +# |===================================| + +func _on_open_signal_in_script_button_pressed(): + open_script.emit(signal_data) + +# Methods +# |===================================| +# |===================================| +# |===================================| + +func _update(): + label.text = text + + var text_size = label.get_text_size() + custom_minimum_size = Vector2((text_size.x * 2) + 50, text_size.y * 3) diff --git a/addons/SignalVisualizer/Visualizer/signal_graph_node_item.gd.uid b/addons/SignalVisualizer/Visualizer/signal_graph_node_item.gd.uid new file mode 100644 index 0000000..f506749 --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_graph_node_item.gd.uid @@ -0,0 +1 @@ +uid://c0n3sifmbiih0 diff --git a/addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn b/addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn new file mode 100644 index 0000000..788ba36 --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn @@ -0,0 +1,43 @@ +[gd_scene load_steps=3 format=3 uid="uid://b2lwtwp6kpwtb"] + +[ext_resource type="Script" path="res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.gd" id="1_jrd34"] +[ext_resource type="Script" path="res://addons/SignalVisualizer/Visualizer/resizable_label.gd" id="2_4wwd5"] + +[node name="SignalItem" type="Control"] +clip_contents = true +custom_minimum_size = Vector2(51, 23) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_jrd34") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +custom_minimum_size = Vector2(100, 50) +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="DescriptionLabel" type="Label" parent="HBoxContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(100, 50) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 1 +vertical_alignment = 1 +clip_text = true +script = ExtResource("2_4wwd5") + +[node name="OpenSignalInScriptButton" type="Button" parent="HBoxContainer"] +layout_mode = 2 +text = "Open" +flat = true + +[connection signal="pressed" from="HBoxContainer/OpenSignalInScriptButton" to="." method="_on_open_signal_in_script_button_pressed"] diff --git a/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd b/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd new file mode 100644 index 0000000..b3f6539 --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd @@ -0,0 +1,67 @@ +@tool +extends Control + +signal open_script(node_name: String, method_signature: String) + +var SignalGraphNode = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node.tscn") +var GraphNodeItem = preload("res://addons/SignalVisualizer/Visualizer/signal_graph_node_item.tscn") + +# Properties +# |===================================| +# |===================================| +# |===================================| + +const SOURCE_COLOR: Color = Color.SKY_BLUE +const DESTINATION_COLOR: Color = Color.CORAL +const CONNECTION_TYPE: int = 0 + +@onready var arrange_nodes_checkbox: CheckBox = %ArrangeNodesCheckBox +@onready var signal_details_checkbox: CheckBox = %SignalDetailsCheckBox +@onready var signal_tree: Tree = %SignalTree +@onready var graph: GraphEdit = %Graph + +# Lifecycle +# |===================================| +# |===================================| +# |===================================| + + + +# Signals +# |===================================| +# |===================================| +# |===================================| + +func _on_clear_graph_button_pressed(): + clear() + +func _on_generate_graph_button_pressed(): + clear() + + var scene_signal_graph = SignalGraphUtility.create_signal_graph_from_node(get_tree().edited_scene_root, true) + SignalGraphUtility.generate_signal_graph_nodes(scene_signal_graph, graph, _on_open_signal_in_script) + SignalGraphUtility.generate_signal_graph_tree(scene_signal_graph, signal_tree) + + if arrange_nodes_checkbox.button_pressed: + graph.arrange_nodes() + +func _on_open_signal_in_script(data: SignalGraphNodeItem.Metadata): + open_script.emit(data.node_name, data.method_signature) + +# Methods +# |===================================| +# |===================================| +# |===================================| + +func clear(): + _clear_graph_nodes() + _clear_tree() + +func _clear_graph_nodes(): + graph.clear_connections() + for child in graph.get_children(): + if child is SignalGraphNode: + child.queue_free() + +func _clear_tree(): + signal_tree.clear() diff --git a/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd.uid b/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd.uid new file mode 100644 index 0000000..ccd3b7e --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd.uid @@ -0,0 +1 @@ +uid://bbd48wbihmuos diff --git a/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.tscn b/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.tscn new file mode 100644 index 0000000..c94817d --- /dev/null +++ b/addons/SignalVisualizer/Visualizer/signal_visualizer_dock.tscn @@ -0,0 +1,78 @@ +[gd_scene load_steps=5 format=3 uid="uid://dppfamjc0ji40"] + +[ext_resource type="Script" path="res://addons/SignalVisualizer/Visualizer/signal_visualizer_dock.gd" id="1_akar5"] +[ext_resource type="Texture2D" uid="uid://bmnff63evbdhv" path="res://addons/SignalVisualizer/Clear.svg" id="2_m8bsv"] +[ext_resource type="Texture2D" uid="uid://bxj8ep08wbnm6" path="res://addons/SignalVisualizer/GraphEdit.svg" id="3_dtmqs"] + +[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ae0jg"] + +[node name="SignalVisualizerDock" type="Control"] +clip_contents = true +custom_minimum_size = Vector2(2.08165e-12, 200) +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +script = ExtResource("1_akar5") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +clip_contents = true +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +clip_contents = true +custom_minimum_size = Vector2(2.08165e-12, 50) +layout_mode = 2 +theme_override_constants/separation = 8 +alignment = 2 + +[node name="ArrangeNodesCheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Arrange Nodes" + +[node name="SignalDetailsCheckBox" type="CheckBox" parent="VBoxContainer/HBoxContainer"] +unique_name_in_owner = true +layout_mode = 2 +text = "Signal Details" + +[node name="Panel" type="Panel" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 +theme_override_styles/panel = SubResource("StyleBoxEmpty_ae0jg") + +[node name="ClearGraphButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Clear Graph" +icon = ExtResource("2_m8bsv") + +[node name="GenerateGraphButton" type="Button" parent="VBoxContainer/HBoxContainer"] +layout_mode = 2 +text = "Generate Graph" +icon = ExtResource("3_dtmqs") + +[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer"] +layout_mode = 2 +size_flags_vertical = 3 + +[node name="SignalTree" type="Tree" parent="VBoxContainer/HSplitContainer"] +unique_name_in_owner = true +custom_minimum_size = Vector2(200, 2.08165e-12) +layout_mode = 2 +column_titles_visible = true + +[node name="Graph" type="GraphEdit" parent="VBoxContainer/HSplitContainer"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_vertical = 3 + +[connection signal="pressed" from="VBoxContainer/HBoxContainer/ClearGraphButton" to="." method="_on_clear_graph_button_pressed"] +[connection signal="pressed" from="VBoxContainer/HBoxContainer/GenerateGraphButton" to="." method="_on_generate_graph_button_pressed"] diff --git a/addons/SignalVisualizer/plugin.cfg b/addons/SignalVisualizer/plugin.cfg new file mode 100644 index 0000000..1b02071 --- /dev/null +++ b/addons/SignalVisualizer/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="SignalVisualizer" +description="Visual the current scene's signal connections as a graph. Debug the current running scene's signals with automatic logging in a new debugger panel." +author="MiniGameDev" +version="1.7.0" +script="SignalVisualizer.gd" diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn index 177596b..7c07a3e 100644 --- a/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn @@ -21,5 +21,5 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 -color = Color(1, 1, 1, 0) +color = Color(0, 0, 0, 0.658824) script = ExtResource("2_ghan2") diff --git a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres index 07489b4..a255140 100644 --- a/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres +++ b/addons/dialogic/Modules/DefaultLayoutParts/Layer_VN_Textbox/vn_textbox_default_panel.tres @@ -10,3 +10,4 @@ corner_radius_top_left = 5 corner_radius_top_right = 5 corner_radius_bottom_right = 5 corner_radius_bottom_left = 5 +shadow_color = Color(0, 0, 0, 0.772549) diff --git a/art/farm/Babushka_house_01.png b/art/farm/Babushka_house_01.png new file mode 100644 index 0000000..f6d2589 Binary files /dev/null and b/art/farm/Babushka_house_01.png differ diff --git a/art/farm/Babushka_house_01.png.import b/art/farm/Babushka_house_01.png.import new file mode 100644 index 0000000..a0f95c6 --- /dev/null +++ b/art/farm/Babushka_house_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://65e44yde224q" +path="res://.godot/imported/Babushka_house_01.png-2abdaa4b7145961a1de62ba9271ec19d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/farm/Babushka_house_01.png" +dest_files=["res://.godot/imported/Babushka_house_01.png-2abdaa4b7145961a1de62ba9271ec19d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/farm/Babushka_house_01.png~ b/art/farm/Babushka_house_01.png~ new file mode 100644 index 0000000..6cf13ac Binary files /dev/null and b/art/farm/Babushka_house_01.png~ differ diff --git a/art/indoor/room export/Room_01_walls.png b/art/indoor/room export/Room_01_walls.png index 2d1d7c0..ca488d9 100644 Binary files a/art/indoor/room export/Room_01_walls.png and b/art/indoor/room export/Room_01_walls.png differ diff --git a/art/indoor/room export/Room_01_walls.png~ b/art/indoor/room export/Room_01_walls.png~ new file mode 100644 index 0000000..2d1d7c0 Binary files /dev/null and b/art/indoor/room export/Room_01_walls.png~ differ diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg01.png b/art/mockups/Jelena 2d/jelena_mockup_bg01.png index d822521..0e230bc 100644 Binary files a/art/mockups/Jelena 2d/jelena_mockup_bg01.png and b/art/mockups/Jelena 2d/jelena_mockup_bg01.png differ diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg01.png~ b/art/mockups/Jelena 2d/jelena_mockup_bg01.png~ new file mode 100644 index 0000000..d822521 Binary files /dev/null and b/art/mockups/Jelena 2d/jelena_mockup_bg01.png~ differ diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg_02.png b/art/mockups/Jelena 2d/jelena_mockup_bg_02.png index 6014c1f..aa48b08 100644 Binary files a/art/mockups/Jelena 2d/jelena_mockup_bg_02.png and b/art/mockups/Jelena 2d/jelena_mockup_bg_02.png differ diff --git a/art/mockups/Jelena 2d/jelena_mockup_bg_02.png~ b/art/mockups/Jelena 2d/jelena_mockup_bg_02.png~ new file mode 100644 index 0000000..6014c1f Binary files /dev/null and b/art/mockups/Jelena 2d/jelena_mockup_bg_02.png~ differ diff --git a/art/nature/baum märz 2025/gräser und büsche.png b/art/nature/baum märz 2025/gräser und büsche.png index f34be01..6f19cf3 100644 Binary files a/art/nature/baum märz 2025/gräser und büsche.png and b/art/nature/baum märz 2025/gräser und büsche.png differ diff --git a/art/nature/baum märz 2025/gräser und büsche.png~ b/art/nature/baum märz 2025/gräser und büsche.png~ new file mode 100644 index 0000000..f34be01 Binary files /dev/null and b/art/nature/baum märz 2025/gräser und büsche.png~ differ diff --git a/art/ui/UI/UI_bag_export_01.png b/art/ui/UI/UI_bag_export_01.png index 7feb88c..c235ec0 100644 Binary files a/art/ui/UI/UI_bag_export_01.png and b/art/ui/UI/UI_bag_export_01.png differ diff --git a/art/ui/UI/UI_bag_export_01.png~ b/art/ui/UI/UI_bag_export_01.png~ new file mode 100644 index 0000000..7feb88c Binary files /dev/null and b/art/ui/UI/UI_bag_export_01.png~ differ diff --git a/art/ui/UI/UI_bag_export_02.png b/art/ui/UI/UI_bag_export_02.png index 2b7173c..d13fd2e 100644 Binary files a/art/ui/UI/UI_bag_export_02.png and b/art/ui/UI/UI_bag_export_02.png differ diff --git a/art/ui/UI/UI_bag_export_02.png~ b/art/ui/UI/UI_bag_export_02.png~ new file mode 100644 index 0000000..2b7173c Binary files /dev/null and b/art/ui/UI/UI_bag_export_02.png~ differ diff --git a/art/ui/UI/UI_bag_export_highlight_01.png b/art/ui/UI/UI_bag_export_highlight_01.png new file mode 100644 index 0000000..fa731f5 Binary files /dev/null and b/art/ui/UI/UI_bag_export_highlight_01.png differ diff --git a/art/ui/UI/UI_bag_export_highlight_01.png.import b/art/ui/UI/UI_bag_export_highlight_01.png.import new file mode 100644 index 0000000..afe1fe0 --- /dev/null +++ b/art/ui/UI/UI_bag_export_highlight_01.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://u0dku75l17re" +path="res://.godot/imported/UI_bag_export_highlight_01.png-75e9e14d3080a5afb41b921dc593da52.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/UI_bag_export_highlight_01.png" +dest_files=["res://.godot/imported/UI_bag_export_highlight_01.png-75e9e14d3080a5afb41b921dc593da52.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/UI_bag_export_highlight_02.png b/art/ui/UI/UI_bag_export_highlight_02.png new file mode 100644 index 0000000..ca9e6ad Binary files /dev/null and b/art/ui/UI/UI_bag_export_highlight_02.png differ diff --git a/art/ui/UI/UI_bag_export_highlight_02.png.import b/art/ui/UI/UI_bag_export_highlight_02.png.import new file mode 100644 index 0000000..a5d8b75 --- /dev/null +++ b/art/ui/UI/UI_bag_export_highlight_02.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bag1xalfh731d" +path="res://.godot/imported/UI_bag_export_highlight_02.png-3c40cc6d764913cde7bcc1bd97f1eb6d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/UI_bag_export_highlight_02.png" +dest_files=["res://.godot/imported/UI_bag_export_highlight_02.png-3c40cc6d764913cde7bcc1bd97f1eb6d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/UI_bag_export_highlight_03.png b/art/ui/UI/UI_bag_export_highlight_03.png new file mode 100644 index 0000000..c221274 Binary files /dev/null and b/art/ui/UI/UI_bag_export_highlight_03.png differ diff --git a/art/ui/UI/UI_bag_export_highlight_03.png.import b/art/ui/UI/UI_bag_export_highlight_03.png.import new file mode 100644 index 0000000..026852c --- /dev/null +++ b/art/ui/UI/UI_bag_export_highlight_03.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxptule8n38ph" +path="res://.godot/imported/UI_bag_export_highlight_03.png-d901f8d53fc4b996a469e8098ea5900b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/UI_bag_export_highlight_03.png" +dest_files=["res://.godot/imported/UI_bag_export_highlight_03.png-d901f8d53fc4b996a469e8098ea5900b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-1.png b/art/ui/UI/Watercan-ui/Tropfen-ui-1.png new file mode 100644 index 0000000..aaa41d5 Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-1.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-1.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-1.png.import new file mode 100644 index 0000000..577bd6c --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l0k3vh3kdprp" +path="res://.godot/imported/Tropfen-ui-1.png-ffd2adc2dec240ddecc1432b18c1c0f0.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-1.png" +dest_files=["res://.godot/imported/Tropfen-ui-1.png-ffd2adc2dec240ddecc1432b18c1c0f0.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-2.png b/art/ui/UI/Watercan-ui/Tropfen-ui-2.png new file mode 100644 index 0000000..4bdb07b Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-2.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-2.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-2.png.import new file mode 100644 index 0000000..265f288 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://t4w7axbof7bq" +path="res://.godot/imported/Tropfen-ui-2.png-f4fdc398383d494823a9c23512b5d46c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-2.png" +dest_files=["res://.godot/imported/Tropfen-ui-2.png-f4fdc398383d494823a9c23512b5d46c.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-3.png b/art/ui/UI/Watercan-ui/Tropfen-ui-3.png new file mode 100644 index 0000000..a7f53ad Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-3.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-3.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-3.png.import new file mode 100644 index 0000000..e37d168 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://di2npqkvvst6x" +path="res://.godot/imported/Tropfen-ui-3.png-3b58039a60642d36367527f2d94654fa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-3.png" +dest_files=["res://.godot/imported/Tropfen-ui-3.png-3b58039a60642d36367527f2d94654fa.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-4.png b/art/ui/UI/Watercan-ui/Tropfen-ui-4.png new file mode 100644 index 0000000..248fada Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-4.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-4.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-4.png.import new file mode 100644 index 0000000..1bc33c5 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-4.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://clti3basli30" +path="res://.godot/imported/Tropfen-ui-4.png-e2c1542b620809f430977af3bdacd86f.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-4.png" +dest_files=["res://.godot/imported/Tropfen-ui-4.png-e2c1542b620809f430977af3bdacd86f.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-5.png b/art/ui/UI/Watercan-ui/Tropfen-ui-5.png new file mode 100644 index 0000000..615f622 Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-5.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-5.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-5.png.import new file mode 100644 index 0000000..cb5ab16 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-5.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://n1v4hgd467wp" +path="res://.godot/imported/Tropfen-ui-5.png-ee46a9fd4d81820f6fec9c30046a3b47.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-5.png" +dest_files=["res://.godot/imported/Tropfen-ui-5.png-ee46a9fd4d81820f6fec9c30046a3b47.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-6.png b/art/ui/UI/Watercan-ui/Tropfen-ui-6.png new file mode 100644 index 0000000..0ff2c5d Binary files /dev/null and b/art/ui/UI/Watercan-ui/Tropfen-ui-6.png differ diff --git a/art/ui/UI/Watercan-ui/Tropfen-ui-6.png.import b/art/ui/UI/Watercan-ui/Tropfen-ui-6.png.import new file mode 100644 index 0000000..dedad38 --- /dev/null +++ b/art/ui/UI/Watercan-ui/Tropfen-ui-6.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://l5ym7gi82l1b" +path="res://.godot/imported/Tropfen-ui-6.png-2fee37aa3fbbde454a4d1b4f8ee350e6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" +dest_files=["res://.godot/imported/Tropfen-ui-6.png-2fee37aa3fbbde454a4d1b4f8ee350e6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/art/ui/UI/inventory_active.png b/art/ui/UI/inventory_active.png index 1e123f2..d1129d0 100644 Binary files a/art/ui/UI/inventory_active.png and b/art/ui/UI/inventory_active.png differ diff --git a/audio/default_bus_layout.tres b/audio/default_bus_layout.tres new file mode 100644 index 0000000..7fe0d48 --- /dev/null +++ b/audio/default_bus_layout.tres @@ -0,0 +1,16 @@ +[gd_resource type="AudioBusLayout" format=3 uid="uid://b6dwkmkyb0axk"] + +[resource] +bus/0/volume_db = -5.93075 +bus/1/name = &"Music" +bus/1/solo = false +bus/1/mute = false +bus/1/bypass_fx = false +bus/1/volume_db = -17.6573 +bus/1/send = &"Master" +bus/2/name = &"SFX" +bus/2/solo = false +bus/2/mute = false +bus/2/bypass_fx = false +bus/2/volume_db = 0.0 +bus/2/send = &"Master" diff --git a/dialog/NPC_narrative.tres b/dialog/NPC_narrative.tres index 7c85383..5b3302d 100644 --- a/dialog/NPC_narrative.tres +++ b/dialog/NPC_narrative.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="DialogicStyle" load_steps=20 format=3 uid="uid://f7q6jac5tsk8"] +[gd_resource type="Resource" script_class="DialogicStyle" load_steps=21 format=3 uid="uid://f7q6jac5tsk8"] [ext_resource type="Script" uid="uid://dfx2htp24tuvm" path="res://addons/dialogic/Resources/dialogic_style_layer.gd" id="1_0jwhi"] [ext_resource type="PackedScene" uid="uid://c1k5m0w3r40xf" path="res://addons/dialogic/Modules/DefaultLayoutParts/Layer_FullBackground/full_background_layer.tscn" id="2_8wrfq"] @@ -40,6 +40,7 @@ scene = ExtResource("5_reo2u") overrides = { "box_animation_in": "1", "box_animation_out": "1", +"box_panel": "\"vn_textbox_default_panel.tres\"", "name_label_alignment": "2", "name_label_box_modulate": "Color(1, 1, 1, 1)", "name_label_box_panel": "\"res://dialog/Babushka_NPC_Namebox_background.tres\"", @@ -70,10 +71,15 @@ script = ExtResource("1_0jwhi") scene = ExtResource("9_4c2uo") overrides = {} +[sub_resource type="Resource" id="Resource_0jwhi"] +script = ExtResource("1_0jwhi") +scene = ExtResource("6_i6h15") +overrides = {} + [resource] script = ExtResource("10_e3ue2") name = "NPC_narrative" -layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16", "17"]) +layer_list = Array[String](["10", "11", "12", "13", "14", "15", "16", "17", "18"]) layer_info = { "": SubResource("Resource_wg0yj"), "10": SubResource("Resource_uxnk3"), @@ -83,8 +89,9 @@ layer_info = { "14": SubResource("Resource_clhbu"), "15": SubResource("Resource_umvdi"), "16": SubResource("Resource_ci2ul"), -"17": SubResource("Resource_sadu5") +"17": SubResource("Resource_sadu5"), +"18": SubResource("Resource_0jwhi") } base_overrides = {} layers = Array[ExtResource("1_0jwhi")]([]) -metadata/_latest_layer = "" +metadata/_latest_layer = "14" diff --git a/prefabs/UI/Inventory/Inventory.tscn b/prefabs/UI/Inventory/Inventory.tscn index fba388b..61c9286 100644 --- a/prefabs/UI/Inventory/Inventory.tscn +++ b/prefabs/UI/Inventory/Inventory.tscn @@ -1,11 +1,13 @@ -[gd_scene load_steps=7 format=3 uid="uid://cgjc4wurbgimy"] +[gd_scene load_steps=9 format=3 uid="uid://cgjc4wurbgimy"] [ext_resource type="Script" uid="uid://hg7jay2kt441" path="res://scripts/CSharp/Common/Inventory/InventoryUi.cs" id="1_6wusm"] [ext_resource type="Texture2D" uid="uid://3ln8aleyxgp1" path="res://art/ui/UI/UI_bag_export_01.png" id="3_vvo7l"] -[ext_resource type="Texture2D" uid="uid://dcidjcsqk12p1" path="res://art/ui/UI/UI_bag_export_02.png" id="4_df8i8"] -[ext_resource type="Texture2D" uid="uid://c7wqla0mbu3np" path="res://art/ui/babushka_ui_tmp_inventory_select.png" id="4_tiss4"] +[ext_resource type="Texture2D" uid="uid://u0dku75l17re" path="res://art/ui/UI/UI_bag_export_highlight_01.png" id="5_df8i8"] [ext_resource type="PackedScene" uid="uid://c0kmdjeqkqrwv" path="res://prefabs/UI/Inventory/Slot.tscn" id="5_u7kje"] [ext_resource type="Script" uid="uid://cvkw4qd2hxksi" path="res://scripts/GdScript/dialogic_toggle.gd" id="6_n5apg"] +[ext_resource type="Texture2D" uid="uid://bag1xalfh731d" path="res://art/ui/UI/UI_bag_export_highlight_02.png" id="6_u7kje"] +[ext_resource type="Texture2D" uid="uid://cxptule8n38ph" path="res://art/ui/UI/UI_bag_export_highlight_03.png" id="7_l3npx"] +[ext_resource type="Texture2D" uid="uid://qwia360i1ir1" path="res://art/ui/UI/inventory_active.png" id="8_df8i8"] [node name="CanvasLayer" type="CanvasLayer"] layer = 90 @@ -16,52 +18,36 @@ scale = Vector2(0.7, 0.7) script = ExtResource("6_n5apg") itemToToggle = NodePath("../Inventory") -[node name="Inventory" type="Control" parent="."] +[node name="Inventory" type="Control" parent="." node_paths=PackedStringArray("_slotsParent", "_slotsMover", "_headerSlots", "_slotSelect")] layout_mode = 3 -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 grow_horizontal = 2 grow_vertical = 2 scale = Vector2(0.7, 0.7) +size_flags_vertical = 8 script = ExtResource("1_6wusm") -metadata/_edit_use_anchors_ = true +_slotsParent = NodePath("SlotsContainer/SlotsMover/Slots") +_slotsMover = NodePath("SlotsContainer/SlotsMover") +_headerSlots = [NodePath("SlotsContainer/SlotsMover/Slots/Slot"), NodePath("SlotsContainer/SlotsMover/Slots/Slot2"), NodePath("SlotsContainer/SlotsMover/Slots/Slot3"), NodePath("SlotsContainer/SlotsMover/Slots/Slot4"), NodePath("SlotsContainer/SlotsMover/Slots/Slot5"), NodePath("SlotsContainer/SlotsMover/Slots/Slot6"), NodePath("SlotsContainer/SlotsMover/Slots/Slot7"), NodePath("SlotsContainer/SlotsMover/Slots/Slot8"), NodePath("SlotsContainer/SlotsMover/Slots/Slot9")] +_slotSelect = NodePath("SlotsContainer/SlotsMover/SlotSelectContainer/Selector") [node name="SlotsContainer" type="Control" parent="Inventory"] custom_minimum_size = Vector2(500, 0) layout_mode = 1 -anchors_preset = 13 +anchors_preset = 8 anchor_left = 0.5 +anchor_top = 0.5 anchor_right = 0.5 -anchor_bottom = 1.0 +anchor_bottom = 0.5 +offset_left = -250.0 +offset_right = 250.0 grow_horizontal = 2 grow_vertical = 2 -[node name="SlotSelectContainer" type="Control" parent="Inventory/SlotsContainer"] -custom_minimum_size = Vector2(900, 100) -layout_mode = 1 -anchors_preset = 7 -anchor_left = 0.5 -anchor_top = 1.0 -anchor_right = 0.5 -anchor_bottom = 1.0 -offset_left = -450.0 -offset_top = -115.0 -offset_right = 450.0 -offset_bottom = -15.0 -grow_horizontal = 2 -grow_vertical = 0 - -[node name="Selector" type="TextureRect" parent="Inventory/SlotsContainer/SlotSelectContainer"] -z_index = 10 -custom_minimum_size = Vector2(100, 100) -layout_mode = 0 -offset_left = 1.0 -offset_right = 101.0 -offset_bottom = 100.0 -texture = ExtResource("4_tiss4") -expand_mode = 1 - [node name="SlotsMover" type="Control" parent="Inventory/SlotsContainer"] custom_minimum_size = Vector2(900, 610) layout_mode = 1 @@ -75,6 +61,7 @@ offset_right = 200.0 offset_bottom = -1.0 grow_horizontal = 2 grow_vertical = 0 +mouse_filter = 2 [node name="BackgroundContainer" type="Control" parent="Inventory/SlotsContainer/SlotsMover"] layout_mode = 1 @@ -90,8 +77,9 @@ layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_left = -305.0 -offset_right = 303.0 +offset_left = 435.0 +offset_right = 339.0 +offset_bottom = 30.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 @@ -103,6 +91,9 @@ layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 +offset_left = -356.0 +offset_right = -452.0 +offset_bottom = 30.0 grow_horizontal = 2 grow_vertical = 2 mouse_filter = 2 @@ -115,11 +106,53 @@ layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 +offset_left = -142.429 +offset_top = 1.85717 +offset_right = -808.428 +offset_bottom = -774.143 grow_horizontal = 2 grow_vertical = 2 +scale = Vector2(1.7, 1.7) mouse_filter = 2 -texture = ExtResource("4_df8i8") -expand_mode = 3 +texture = ExtResource("5_df8i8") +expand_mode = 1 +stretch_mode = 3 +flip_h = true + +[node name="TextureRect4" type="TextureRect" parent="Inventory/SlotsContainer/SlotsMover/BackgroundContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 303.286 +offset_top = 209.0 +offset_right = -362.714 +offset_bottom = -567.0 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(1.7, 1.7) +mouse_filter = 2 +texture = ExtResource("6_u7kje") +expand_mode = 1 +stretch_mode = 3 +flip_h = true + +[node name="TextureRect5" type="TextureRect" parent="Inventory/SlotsContainer/SlotsMover/BackgroundContainer"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = 474.714 +offset_top = 754.714 +offset_right = -191.286 +offset_bottom = -21.2858 +grow_horizontal = 2 +grow_vertical = 2 +scale = Vector2(1.7, 1.7) +mouse_filter = 2 +texture = ExtResource("7_l3npx") +expand_mode = 1 +stretch_mode = 3 flip_h = true [node name="Slots" type="Control" parent="Inventory/SlotsContainer/SlotsMover"] @@ -128,53 +161,75 @@ layout_mode = 1 anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 -offset_top = 496.0 -offset_bottom = 496.0 +offset_left = -48.5714 +offset_top = 501.0 +offset_right = -48.5714 +offset_bottom = 501.0 grow_horizontal = 2 grow_vertical = 2 [node name="Slot" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 +offset_left = 2.85714 +offset_top = -54.2857 +offset_right = 102.857 +offset_bottom = 45.7143 [node name="Slot2" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 -offset_left = 100.0 -offset_right = 200.0 +offset_left = 102.857 +offset_top = -54.2857 +offset_right = 202.857 +offset_bottom = 45.7143 [node name="Slot3" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 -offset_left = 201.0 -offset_right = 301.0 +offset_left = 203.857 +offset_top = -54.2857 +offset_right = 303.857 +offset_bottom = 45.7143 [node name="Slot4" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 -offset_left = 301.0 -offset_right = 401.0 +offset_left = 303.857 +offset_top = -54.2857 +offset_right = 403.857 +offset_bottom = 45.7143 [node name="Slot5" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 -offset_left = 401.0 -offset_right = 501.0 +offset_left = 403.857 +offset_top = -54.2857 +offset_right = 503.857 +offset_bottom = 45.7143 [node name="Slot6" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 -offset_left = 501.0 -offset_right = 601.0 +offset_left = 503.857 +offset_top = -54.2857 +offset_right = 603.857 +offset_bottom = 45.7143 [node name="Slot7" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 -offset_left = 601.0 -offset_right = 701.0 +offset_left = 603.857 +offset_top = -54.2857 +offset_right = 703.857 +offset_bottom = 45.7143 [node name="Slot8" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 -offset_left = 702.0 -offset_right = 802.0 +offset_left = 704.857 +offset_top = -54.2857 +offset_right = 804.857 +offset_bottom = 45.7143 [node name="Slot9" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 -offset_left = 802.0 -offset_right = 902.0 +offset_left = 804.857 +offset_top = -54.2857 +offset_right = 904.857 +offset_bottom = 45.7143 [node name="Slot10" parent="Inventory/SlotsContainer/SlotsMover/Slots" instance=ExtResource("5_u7kje")] layout_mode = 1 @@ -371,3 +426,27 @@ offset_left = 703.0 offset_top = 512.0 offset_right = 803.0 offset_bottom = 612.0 + +[node name="SlotSelectContainer" type="Control" parent="Inventory/SlotsContainer/SlotsMover"] +custom_minimum_size = Vector2(900, 100) +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -497.0 +offset_top = -164.0 +offset_right = 403.0 +offset_bottom = -64.0 +grow_horizontal = 2 +grow_vertical = 0 + +[node name="Selector" type="TextureRect" parent="Inventory/SlotsContainer/SlotsMover/SlotSelectContainer"] +z_index = 10 +custom_minimum_size = Vector2(100, 100) +layout_mode = 0 +offset_right = 100.0 +offset_bottom = 100.0 +texture = ExtResource("8_df8i8") +expand_mode = 1 diff --git a/prefabs/characters/Player2D.tscn b/prefabs/characters/Player2D.tscn index 072d0dd..d321b3e 100644 --- a/prefabs/characters/Player2D.tscn +++ b/prefabs/characters/Player2D.tscn @@ -1,114 +1,64 @@ -[gd_scene load_steps=822 format=3 uid="uid://c25udixd5m6l0"] +[gd_scene load_steps=476 format=3 uid="uid://c25udixd5m6l0"] [ext_resource type="Script" uid="uid://b05uyj001ehwi" path="res://scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs" id="1_yd5ep"] [ext_resource type="Script" uid="uid://cjbclkxesh3hc" path="res://scripts/CSharp/Common/CharacterControls/Player2D.cs" id="2_1vqmv"] [ext_resource type="Texture2D" uid="uid://7jrac5ii3ah3" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0001.png" id="3_tb2wl"] [ext_resource type="Texture2D" uid="uid://c06b551t2qlo6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0002.png" id="4_dy5kt"] -[ext_resource type="Texture2D" uid="uid://d0dqhq2cbwyus" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0003.png" id="5_ooryh"] [ext_resource type="Texture2D" uid="uid://bj2ssu0ixr0p1" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0004.png" id="6_3sina"] -[ext_resource type="Texture2D" uid="uid://baho1jt70dj6u" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0005.png" id="7_bjd5b"] [ext_resource type="Texture2D" uid="uid://c4kq6oyxchwae" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0006.png" id="8_f7dmn"] -[ext_resource type="Texture2D" uid="uid://b5by425y8hgtx" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0007.png" id="9_51g6i"] [ext_resource type="Texture2D" uid="uid://yw8ood8ve3wj" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0008.png" id="10_fftrp"] -[ext_resource type="Texture2D" uid="uid://cw3q23y6dx0sw" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0009.png" id="11_ct2ci"] [ext_resource type="Texture2D" uid="uid://c7kddep6y8ncb" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0010.png" id="12_3b8my"] -[ext_resource type="Texture2D" uid="uid://dtw2oldmvbjmm" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0011.png" id="13_uyop1"] [ext_resource type="Texture2D" uid="uid://djto85rs7jva6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0012.png" id="14_dbxha"] -[ext_resource type="Texture2D" uid="uid://x58jwci33ciq" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0013.png" id="15_myc1w"] [ext_resource type="Texture2D" uid="uid://b1fgjvh5rq5ma" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0014.png" id="16_g5k82"] -[ext_resource type="Texture2D" uid="uid://toccb6la5idk" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0015.png" id="17_g8eyg"] [ext_resource type="Texture2D" uid="uid://bo72c20b1qlfe" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0016.png" id="18_uluck"] -[ext_resource type="Texture2D" uid="uid://ejvukeofnhyb" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0017.png" id="19_jm67u"] [ext_resource type="Texture2D" uid="uid://bwdm43a3v8tve" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0018.png" id="20_7auft"] -[ext_resource type="Texture2D" uid="uid://cout06kqdrkyo" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0019.png" id="21_idwqi"] [ext_resource type="Texture2D" uid="uid://cblm40bllo6yo" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B01-Idle/0020.png" id="22_wfdgo"] [ext_resource type="Texture2D" uid="uid://ddseayrsfgsx3" path="res://art/animation/vesna/Back/B01-Idle/0001.png" id="23_lbuvx"] [ext_resource type="Texture2D" uid="uid://dcudwf7uydow4" path="res://art/animation/vesna/Back/B01-Idle/0002.png" id="24_tb8a3"] -[ext_resource type="Texture2D" uid="uid://j1g1utrqshni" path="res://art/animation/vesna/Back/B01-Idle/0003.png" id="25_3algh"] [ext_resource type="Texture2D" uid="uid://wfwv4ov0braf" path="res://art/animation/vesna/Back/B01-Idle/0004.png" id="26_hvbdn"] -[ext_resource type="Texture2D" uid="uid://dp3u7hdc1rkig" path="res://art/animation/vesna/Back/B01-Idle/0005.png" id="27_bkxju"] [ext_resource type="Texture2D" uid="uid://coovp0d0od40p" path="res://art/animation/vesna/Back/B01-Idle/0006.png" id="28_7klc7"] -[ext_resource type="Texture2D" uid="uid://bck4wvhsmoxb5" path="res://art/animation/vesna/Back/B01-Idle/0007.png" id="29_g8yjr"] [ext_resource type="Texture2D" uid="uid://duwqidqblvvj8" path="res://art/animation/vesna/Back/B01-Idle/0008.png" id="30_4sjqa"] -[ext_resource type="Texture2D" uid="uid://xy0eqmcxx5y3" path="res://art/animation/vesna/Back/B01-Idle/0009.png" id="31_j5gdy"] [ext_resource type="Texture2D" uid="uid://bsff7wlu0fiya" path="res://art/animation/vesna/Back/B01-Idle/0010.png" id="32_srg3p"] -[ext_resource type="Texture2D" uid="uid://cmf8amo3ig3eo" path="res://art/animation/vesna/Back/B01-Idle/0011.png" id="33_s0f6c"] [ext_resource type="Texture2D" uid="uid://ofesaa3vsotc" path="res://art/animation/vesna/Back/B01-Idle/0012.png" id="34_cnsul"] -[ext_resource type="Texture2D" uid="uid://duiv3m53i1oie" path="res://art/animation/vesna/Back/B01-Idle/0013.png" id="35_30y07"] [ext_resource type="Texture2D" uid="uid://cw8febmpuuihg" path="res://art/animation/vesna/Back/B01-Idle/0014.png" id="36_n7dk1"] -[ext_resource type="Texture2D" uid="uid://bn6qhqerncfvw" path="res://art/animation/vesna/Back/B01-Idle/0015.png" id="37_aw564"] [ext_resource type="Texture2D" uid="uid://clr4662lpf12y" path="res://art/animation/vesna/Back/B01-Idle/0016.png" id="38_y5m8n"] -[ext_resource type="Texture2D" uid="uid://hnpveciwch8i" path="res://art/animation/vesna/Back/B01-Idle/0017.png" id="39_4rb1e"] [ext_resource type="Texture2D" uid="uid://bdqk2nr4i5sy" path="res://art/animation/vesna/Back/B01-Idle/0018.png" id="40_lkrss"] -[ext_resource type="Texture2D" uid="uid://lvknst2wyk8k" path="res://art/animation/vesna/Back/B01-Idle/0019.png" id="41_5yc38"] [ext_resource type="Texture2D" uid="uid://ctaiqt8gbpvuu" path="res://art/animation/vesna/Back/B01-Idle/0020.png" id="42_oq7bk"] -[ext_resource type="Texture2D" uid="uid://8ffedddjju0o" path="res://art/animation/vesna/Back/B01-Idle/0021.png" id="43_06tv4"] [ext_resource type="Texture2D" uid="uid://co6v8dsf1pscm" path="res://art/animation/vesna/Back/B01-Idle/0022.png" id="44_oi8d4"] -[ext_resource type="Texture2D" uid="uid://blnqecpxtpjsi" path="res://art/animation/vesna/Back/B01-Idle/0023.png" id="45_qmmd3"] [ext_resource type="Texture2D" uid="uid://wnqyetonkdf3" path="res://art/animation/vesna/Back/B01-Idle/0024.png" id="46_g8hfs"] -[ext_resource type="Texture2D" uid="uid://cixw17dp5n1jq" path="res://art/animation/vesna/Back/B01-Idle/0025.png" id="47_b1kaj"] [ext_resource type="Texture2D" uid="uid://b41e1bfnb8pql" path="res://art/animation/vesna/Back/B01-Idle/0026.png" id="48_trb4q"] -[ext_resource type="Texture2D" uid="uid://cawmf2oxe3awf" path="res://art/animation/vesna/Back/B01-Idle/0027.png" id="49_ln0lw"] [ext_resource type="Texture2D" uid="uid://wwrctt8v8sm3" path="res://art/animation/vesna/Back/B01-Idle/0028.png" id="50_m3e1x"] -[ext_resource type="Texture2D" uid="uid://c20wkbu520dxt" path="res://art/animation/vesna/Back/B01-Idle/0029.png" id="51_dnl6u"] [ext_resource type="Texture2D" uid="uid://b06f0web7033e" path="res://art/animation/vesna/Back/B01-Idle/0030.png" id="52_kgncu"] -[ext_resource type="Texture2D" uid="uid://bl421n5emu21n" path="res://art/animation/vesna/Back/B01-Idle/0031.png" id="53_r7rcw"] [ext_resource type="Texture2D" uid="uid://dptn0ewhksogi" path="res://art/animation/vesna/Back/B01-Idle/0032.png" id="54_hvusu"] -[ext_resource type="Texture2D" uid="uid://db65yywxdynqj" path="res://art/animation/vesna/Back/B01-Idle/0033.png" id="55_s7u3f"] [ext_resource type="Texture2D" uid="uid://djb3ppgoui6h6" path="res://art/animation/vesna/Back/B01-Idle/0034.png" id="56_33shn"] -[ext_resource type="Texture2D" uid="uid://c5pmcdopfactx" path="res://art/animation/vesna/Back/B01-Idle/0035.png" id="57_vtw6e"] [ext_resource type="Texture2D" uid="uid://cx68afqq4io3k" path="res://art/animation/vesna/Back/B01-Idle/0036.png" id="58_tm4g7"] -[ext_resource type="Texture2D" uid="uid://cqnq6exjs5xpb" path="res://art/animation/vesna/Back/B01-Idle/0037.png" id="59_nwsu2"] [ext_resource type="Texture2D" uid="uid://cngptl8ojv0kn" path="res://art/animation/vesna/Back/B01-Idle/0038.png" id="60_5iaia"] -[ext_resource type="Texture2D" uid="uid://cbdaffwt6jiy3" path="res://art/animation/vesna/Back/B01-Idle/0039.png" id="61_jtnjo"] [ext_resource type="Texture2D" uid="uid://cbsg5d8nddxcp" path="res://art/animation/vesna/Back/B01-Idle/0040.png" id="62_gqhbm"] -[ext_resource type="Texture2D" uid="uid://cqkm3m5vtt2ec" path="res://art/animation/vesna/Back/B01-Idle/0041.png" id="63_ywdkx"] [ext_resource type="Texture2D" uid="uid://cepjhr0v86e21" path="res://art/animation/vesna/Back/B01-Idle/0042.png" id="64_tpynu"] -[ext_resource type="Texture2D" uid="uid://drndvrpyx3aqm" path="res://art/animation/vesna/Back/B01-Idle/0043.png" id="65_i4fg5"] [ext_resource type="Texture2D" uid="uid://brokoyln03mb7" path="res://art/animation/vesna/Back/B01-Idle/0044.png" id="66_73ci5"] -[ext_resource type="Texture2D" uid="uid://dpp2w67j4lp6h" path="res://art/animation/vesna/Back/B01-Idle/0045.png" id="67_plvxc"] [ext_resource type="Texture2D" uid="uid://dhiwmld14vguu" path="res://art/animation/vesna/Back/B01-Idle/0046.png" id="68_6xgay"] -[ext_resource type="Texture2D" uid="uid://d1utxoyolyq5j" path="res://art/animation/vesna/Back/B01-Idle/0047.png" id="69_g5ryt"] [ext_resource type="Texture2D" uid="uid://7dxbumnnq36g" path="res://art/animation/vesna/Back/B01-Idle/0048.png" id="70_uh3u2"] [ext_resource type="Texture2D" uid="uid://dsshwwrdqpvnw" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0001.png" id="71_dsfaw"] [ext_resource type="Texture2D" uid="uid://dtg2xbb2sypbs" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0002.png" id="72_krjt8"] -[ext_resource type="Texture2D" uid="uid://ugfsmioyhj2v" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0003.png" id="73_fc507"] [ext_resource type="Texture2D" uid="uid://cf2ldiut2wlgn" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0004.png" id="74_8o5vf"] -[ext_resource type="Texture2D" uid="uid://dchukvc5ahkp3" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0005.png" id="75_5g28e"] [ext_resource type="Texture2D" uid="uid://dwvjsbigpsl7l" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0006.png" id="76_5m4eb"] -[ext_resource type="Texture2D" uid="uid://os58b3fc2uw" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0007.png" id="77_0e45w"] [ext_resource type="Texture2D" uid="uid://d0rxcyh3d4r26" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0008.png" id="78_ea0ih"] -[ext_resource type="Texture2D" uid="uid://c24s7c1rctnjw" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0009.png" id="79_8guwf"] [ext_resource type="Texture2D" uid="uid://dl4gibopy05xb" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0010.png" id="80_nthv1"] -[ext_resource type="Texture2D" uid="uid://pnpbaskie7ln" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0011.png" id="81_ll850"] [ext_resource type="Texture2D" uid="uid://cg2n44j88t4fu" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0012.png" id="82_srvcl"] -[ext_resource type="Texture2D" uid="uid://5qtmnjkj314b" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0013.png" id="83_8b7sp"] [ext_resource type="Texture2D" uid="uid://6hxwloli4g07" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0014.png" id="84_gbgxl"] -[ext_resource type="Texture2D" uid="uid://bd8smhc7jf3rm" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0015.png" id="85_gso82"] [ext_resource type="Texture2D" uid="uid://coop7751xrik6" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0016.png" id="86_vdw06"] -[ext_resource type="Texture2D" uid="uid://b17kxk4j0elwb" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0017.png" id="87_hqqwf"] [ext_resource type="Texture2D" uid="uid://djrpb2i8s73uv" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0018.png" id="88_rplna"] -[ext_resource type="Texture2D" uid="uid://de34d81lpgn2s" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0019.png" id="89_c4fmc"] [ext_resource type="Texture2D" uid="uid://c8n72xqn40iy2" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Harke/0020.png" id="90_ktgpd"] [ext_resource type="Texture2D" uid="uid://drrro4jyywnoo" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0001.png" id="91_t3bcs"] [ext_resource type="Texture2D" uid="uid://fncpo7yklhdb" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0002.png" id="92_r247x"] -[ext_resource type="Texture2D" uid="uid://cecxpvtb8jys1" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0003.png" id="93_ubpl1"] [ext_resource type="Texture2D" uid="uid://cxb2nw03fxv5c" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0004.png" id="94_gakvy"] -[ext_resource type="Texture2D" uid="uid://cdbgx22301kjs" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0005.png" id="95_pse5n"] [ext_resource type="Texture2D" uid="uid://bmyg88l0kl0ou" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0006.png" id="96_in860"] -[ext_resource type="Texture2D" uid="uid://c2delmldrigif" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0007.png" id="97_gsmph"] [ext_resource type="Texture2D" uid="uid://ioe3mqsmkkj6" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0008.png" id="98_qfbag"] -[ext_resource type="Texture2D" uid="uid://cdl5p1gguf74c" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0009.png" id="99_uc1kl"] [ext_resource type="Texture2D" uid="uid://ddwsvepfged62" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0010.png" id="100_24v4s"] -[ext_resource type="Texture2D" uid="uid://14jwd808d7q" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0011.png" id="101_5jfin"] [ext_resource type="Texture2D" uid="uid://btw1kx5q35hx6" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0012.png" id="102_0swag"] -[ext_resource type="Texture2D" uid="uid://b10h0aorp1xv0" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0013.png" id="103_kan7k"] [ext_resource type="Texture2D" uid="uid://vbg7ecm6hfpw" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0014.png" id="104_elbbc"] -[ext_resource type="Texture2D" uid="uid://b4pqj2r8eg8bf" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0015.png" id="105_e08lw"] [ext_resource type="Texture2D" uid="uid://clm05egjmvy1y" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0016.png" id="106_q2no2"] -[ext_resource type="Texture2D" uid="uid://dmydgctyhanwv" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0017.png" id="107_7u8lk"] [ext_resource type="Texture2D" uid="uid://cqonl6n8rurh3" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0018.png" id="108_m0omi"] -[ext_resource type="Texture2D" uid="uid://cdc4m8vgfd8y8" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0019.png" id="109_glh2j"] [ext_resource type="Texture2D" uid="uid://c806q0yf13ykp" path="res://art/animation/Vesna2D/Vesna Anims Tools/B01-Idle-Gießkanne/0020.png" id="110_lcssq"] [ext_resource type="Texture2D" uid="uid://bgr18gr5llndj" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0001.png" id="111_yv8b4"] [ext_resource type="Texture2D" uid="uid://c6numa054fpiy" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0002.png" id="112_43gwt"] @@ -122,111 +72,61 @@ [ext_resource type="Texture2D" uid="uid://dcadeimwb2eoy" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B03-Interact/0010.png" id="120_3a5yw"] [ext_resource type="Texture2D" uid="uid://cqoi6k3hjfgpl" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0001.png" id="121_2chl3"] [ext_resource type="Texture2D" uid="uid://uy84anap6qed" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0002.png" id="122_cxvrh"] -[ext_resource type="Texture2D" uid="uid://c3hqrf3514o1i" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0003.png" id="123_54tjs"] [ext_resource type="Texture2D" uid="uid://ok3ug04l7u2a" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0004.png" id="124_mn60e"] -[ext_resource type="Texture2D" uid="uid://bj2g3txdc8kff" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0005.png" id="125_4uvde"] [ext_resource type="Texture2D" uid="uid://05yfumefb31t" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0006.png" id="126_hgnnd"] -[ext_resource type="Texture2D" uid="uid://dequojwesw4id" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0007.png" id="127_7uog1"] [ext_resource type="Texture2D" uid="uid://ckw4cnhpj5tey" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0008.png" id="128_jtga8"] -[ext_resource type="Texture2D" uid="uid://bbj87e52o5ix0" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0009.png" id="129_lxme3"] [ext_resource type="Texture2D" uid="uid://dxdlihqw1jxdr" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0010.png" id="130_ygmj0"] -[ext_resource type="Texture2D" uid="uid://ckwnp7fekds1o" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0011.png" id="131_hcgb3"] [ext_resource type="Texture2D" uid="uid://bpq83qt8a3261" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0012.png" id="132_uinys"] -[ext_resource type="Texture2D" uid="uid://b3nwi6jdmmbcq" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0013.png" id="133_q5j2s"] [ext_resource type="Texture2D" uid="uid://vb2avhob7kjp" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0014.png" id="134_bu26w"] -[ext_resource type="Texture2D" uid="uid://byyx7simr7qr2" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0015.png" id="135_13e2b"] [ext_resource type="Texture2D" uid="uid://h3t6vmncseim" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0016.png" id="136_vnx5q"] -[ext_resource type="Texture2D" uid="uid://ds5vy2e2n4d7s" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0017.png" id="137_21peu"] [ext_resource type="Texture2D" uid="uid://cvtkhaewrdhrj" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0018.png" id="138_4hhqw"] -[ext_resource type="Texture2D" uid="uid://bgypvf11ntxwp" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0019.png" id="139_trklr"] [ext_resource type="Texture2D" uid="uid://r2sdov8x5kfa" path="res://art/animation/Vesna2D/Vesna Anims Sequences/B02-Walk/0020.png" id="140_ikvge"] [ext_resource type="Texture2D" uid="uid://ckivuklh4qhya" path="res://art/animation/vesna/Back/B02-Walk/0001.png" id="141_lr5oy"] [ext_resource type="Texture2D" uid="uid://c4fkayumeccfo" path="res://art/animation/vesna/Back/B02-Walk/0002.png" id="142_1kv2c"] -[ext_resource type="Texture2D" uid="uid://buijs4bnx7maf" path="res://art/animation/vesna/Back/B02-Walk/0003.png" id="143_v0vcu"] [ext_resource type="Texture2D" uid="uid://bsm7ut41ip7ig" path="res://art/animation/vesna/Back/B02-Walk/0004.png" id="144_lcakx"] -[ext_resource type="Texture2D" uid="uid://3nm7c4wswb7e" path="res://art/animation/vesna/Back/B02-Walk/0005.png" id="145_2yoii"] [ext_resource type="Texture2D" uid="uid://6gh02sauxaex" path="res://art/animation/vesna/Back/B02-Walk/0006.png" id="146_jcr6r"] -[ext_resource type="Texture2D" uid="uid://dbgntiu78j5ec" path="res://art/animation/vesna/Back/B02-Walk/0007.png" id="147_vwfko"] [ext_resource type="Texture2D" uid="uid://cx8apsg1051hp" path="res://art/animation/vesna/Back/B02-Walk/0008.png" id="148_060nq"] -[ext_resource type="Texture2D" uid="uid://b6eugr0f2c2jr" path="res://art/animation/vesna/Back/B02-Walk/0009.png" id="149_smj2x"] [ext_resource type="Texture2D" uid="uid://b3jqiwe1n0chv" path="res://art/animation/vesna/Back/B02-Walk/0010.png" id="150_8u7ah"] -[ext_resource type="Texture2D" uid="uid://bj23ksgu8qqi1" path="res://art/animation/vesna/Back/B02-Walk/0011.png" id="151_0dx2o"] [ext_resource type="Texture2D" uid="uid://6r2073ug0nr1" path="res://art/animation/vesna/Back/B02-Walk/0012.png" id="152_yw3l0"] -[ext_resource type="Texture2D" uid="uid://dw2ylkuw5qmti" path="res://art/animation/vesna/Back/B02-Walk/0013.png" id="153_nd5dk"] [ext_resource type="Texture2D" uid="uid://iip4ctkxqknp" path="res://art/animation/vesna/Back/B02-Walk/0014.png" id="154_6qloc"] -[ext_resource type="Texture2D" uid="uid://v2kkhbalmuvn" path="res://art/animation/vesna/Back/B02-Walk/0015.png" id="155_13eiv"] [ext_resource type="Texture2D" uid="uid://cpc8jkevjt01r" path="res://art/animation/vesna/Back/B02-Walk/0016.png" id="156_kglr5"] -[ext_resource type="Texture2D" uid="uid://dxdc70e22jvwg" path="res://art/animation/vesna/Back/B02-Walk/0017.png" id="157_hgbgw"] [ext_resource type="Texture2D" uid="uid://b2h2xmpknxjm3" path="res://art/animation/vesna/Back/B02-Walk/0018.png" id="158_s71l2"] -[ext_resource type="Texture2D" uid="uid://d0ftu6fd8tx2k" path="res://art/animation/vesna/Back/B02-Walk/0019.png" id="159_7lm3j"] [ext_resource type="Texture2D" uid="uid://banv0fn0hvqbu" path="res://art/animation/vesna/Back/B02-Walk/0020.png" id="160_sjrvp"] -[ext_resource type="Texture2D" uid="uid://g3er846hkqyk" path="res://art/animation/vesna/Back/B02-Walk/0021.png" id="161_t363w"] [ext_resource type="Texture2D" uid="uid://46ecx6326vr2" path="res://art/animation/vesna/Back/B02-Walk/0022.png" id="162_dvpnv"] -[ext_resource type="Texture2D" uid="uid://dyojtdxaamtbc" path="res://art/animation/vesna/Back/B02-Walk/0023.png" id="163_wftmg"] [ext_resource type="Texture2D" uid="uid://c8ecgh85euufm" path="res://art/animation/vesna/Back/B02-Walk/0024.png" id="164_6fxu6"] -[ext_resource type="Texture2D" uid="uid://bp8jy26xcqoyw" path="res://art/animation/vesna/Back/B02-Walk/0025.png" id="165_hkal4"] [ext_resource type="Texture2D" uid="uid://cqbrf2fey4mi5" path="res://art/animation/vesna/Back/B02-Walk/0026.png" id="166_nqquh"] -[ext_resource type="Texture2D" uid="uid://b72dho73ag7hv" path="res://art/animation/vesna/Back/B02-Walk/0027.png" id="167_ekhdj"] [ext_resource type="Texture2D" uid="uid://bwv8ar3ql621w" path="res://art/animation/vesna/Back/B02-Walk/0028.png" id="168_wl1fv"] -[ext_resource type="Texture2D" uid="uid://ds41s42vx5b3w" path="res://art/animation/vesna/Back/B02-Walk/0029.png" id="169_ii55e"] [ext_resource type="Texture2D" uid="uid://co7gkc6v1307b" path="res://art/animation/vesna/Back/B02-Walk/0030.png" id="170_dvtvo"] -[ext_resource type="Texture2D" uid="uid://cuq55acr20luj" path="res://art/animation/vesna/Back/B02-Walk/0031.png" id="171_7c80y"] [ext_resource type="Texture2D" uid="uid://c6625qc5my8aa" path="res://art/animation/vesna/Back/B02-Walk/0032.png" id="172_o6pqr"] -[ext_resource type="Texture2D" uid="uid://c877yq644kodi" path="res://art/animation/vesna/Back/B02-Walk/0033.png" id="173_c5yps"] [ext_resource type="Texture2D" uid="uid://7jul8qgkmppd" path="res://art/animation/vesna/Back/B02-Walk/0034.png" id="174_kihv4"] -[ext_resource type="Texture2D" uid="uid://emj0166lqj3" path="res://art/animation/vesna/Back/B02-Walk/0035.png" id="175_5khq4"] [ext_resource type="Texture2D" uid="uid://ig7flnq26khd" path="res://art/animation/vesna/Back/B02-Walk/0036.png" id="176_7eupn"] -[ext_resource type="Texture2D" uid="uid://cdvh56eke46o3" path="res://art/animation/vesna/Back/B02-Walk/0037.png" id="177_vfawh"] [ext_resource type="Texture2D" uid="uid://c67abbv4nkawu" path="res://art/animation/vesna/Back/B02-Walk/0038.png" id="178_f6f2d"] -[ext_resource type="Texture2D" uid="uid://ca2vqn3k30dm7" path="res://art/animation/vesna/Back/B02-Walk/0039.png" id="179_qph5u"] [ext_resource type="Texture2D" uid="uid://bhv5jn16h6krw" path="res://art/animation/vesna/Back/B02-Walk/0040.png" id="180_lu7eo"] -[ext_resource type="Texture2D" uid="uid://51lciutu87ao" path="res://art/animation/vesna/Back/B02-Walk/0041.png" id="181_vh87k"] [ext_resource type="Texture2D" uid="uid://bc37fsnli01wy" path="res://art/animation/vesna/Back/B02-Walk/0042.png" id="182_pn5mg"] -[ext_resource type="Texture2D" uid="uid://j4mb1261cx0s" path="res://art/animation/vesna/Back/B02-Walk/0043.png" id="183_klu6v"] [ext_resource type="Texture2D" uid="uid://cj4aaeif3xnpw" path="res://art/animation/vesna/Back/B02-Walk/0044.png" id="184_ys15e"] -[ext_resource type="Texture2D" uid="uid://djeqa5o26lcvj" path="res://art/animation/vesna/Back/B02-Walk/0045.png" id="185_afhyr"] [ext_resource type="Texture2D" uid="uid://c0nhh610veynv" path="res://art/animation/vesna/Back/B02-Walk/0046.png" id="186_qtrjy"] -[ext_resource type="Texture2D" uid="uid://b206kb5kggejq" path="res://art/animation/vesna/Back/B02-Walk/0047.png" id="187_i253v"] [ext_resource type="Texture2D" uid="uid://ci7uer5wecm2a" path="res://art/animation/vesna/Back/B02-Walk/0048.png" id="188_bpice"] [ext_resource type="Texture2D" uid="uid://b5scjrsad12q4" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0001.png" id="189_bul27"] [ext_resource type="Texture2D" uid="uid://dpbaemg351012" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0002.png" id="190_q1o7y"] -[ext_resource type="Texture2D" uid="uid://c8mrf7wom7pj2" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0003.png" id="191_dgrcv"] [ext_resource type="Texture2D" uid="uid://cqe05m8wknlw6" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0004.png" id="192_cagdb"] -[ext_resource type="Texture2D" uid="uid://4hj34rue5qyh" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0005.png" id="193_7uqc6"] [ext_resource type="Texture2D" uid="uid://dtqoat75ccsee" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0006.png" id="194_j84th"] -[ext_resource type="Texture2D" uid="uid://bmmjgjvn5t3xf" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0007.png" id="195_biaa4"] [ext_resource type="Texture2D" uid="uid://dw0gys4bejifq" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0008.png" id="196_byym0"] -[ext_resource type="Texture2D" uid="uid://c8wbt200eua3q" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0009.png" id="197_ruvn3"] [ext_resource type="Texture2D" uid="uid://cmr75bx66i0jp" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0010.png" id="198_mqj3d"] -[ext_resource type="Texture2D" uid="uid://cgsm61yijjyup" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0011.png" id="199_6sg07"] [ext_resource type="Texture2D" uid="uid://kdw433c3kjqd" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0012.png" id="200_nquvr"] -[ext_resource type="Texture2D" uid="uid://bp3xwy0lica8f" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0013.png" id="201_orc6w"] [ext_resource type="Texture2D" uid="uid://c0l1bq5vjhjuq" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0014.png" id="202_jyw6b"] -[ext_resource type="Texture2D" uid="uid://c21rrvn4dv0w5" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0015.png" id="203_1tdqy"] [ext_resource type="Texture2D" uid="uid://dtq7t5jcut4ww" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0016.png" id="204_xpi67"] -[ext_resource type="Texture2D" uid="uid://c51w0fq7rku7p" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0017.png" id="205_2stfx"] [ext_resource type="Texture2D" uid="uid://dt5spwnq4al8h" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0018.png" id="206_bsgc5"] -[ext_resource type="Texture2D" uid="uid://c0r1qlh3elsgc" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0019.png" id="207_rfav7"] [ext_resource type="Texture2D" uid="uid://dri0svis0h7n4" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Harke/0020.png" id="208_ct716"] [ext_resource type="Texture2D" uid="uid://boothx5m2ewlp" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0001.png" id="209_7hol8"] [ext_resource type="Texture2D" uid="uid://c75i3h547yt5r" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0002.png" id="210_vkget"] -[ext_resource type="Texture2D" uid="uid://owi8l2844mcc" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0003.png" id="211_4ejo6"] [ext_resource type="Texture2D" uid="uid://bediov8jrwtlo" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0004.png" id="212_qwtqh"] -[ext_resource type="Texture2D" uid="uid://ul688u4krnbq" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0005.png" id="213_tom53"] [ext_resource type="Texture2D" uid="uid://kbqedk57aau3" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0006.png" id="214_posuh"] -[ext_resource type="Texture2D" uid="uid://ca7ru866o28tc" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0007.png" id="215_8rehj"] [ext_resource type="Texture2D" uid="uid://go8unh7legof" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0008.png" id="216_6ctoe"] -[ext_resource type="Texture2D" uid="uid://dvootr0r1d8if" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0009.png" id="217_mya32"] [ext_resource type="Texture2D" uid="uid://b655ye830ggrh" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0010.png" id="218_qmjxl"] -[ext_resource type="Texture2D" uid="uid://24c0e0o4qqsr" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0011.png" id="219_arja3"] [ext_resource type="Texture2D" uid="uid://dn61c7ccourfj" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0012.png" id="220_yiria"] -[ext_resource type="Texture2D" uid="uid://dw8rvc2k8d04d" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0013.png" id="221_v6rrd"] [ext_resource type="Texture2D" uid="uid://dbqo63ivpe70" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0014.png" id="222_vna73"] -[ext_resource type="Texture2D" uid="uid://mvhdc05i0le2" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0015.png" id="223_ovybi"] [ext_resource type="Texture2D" uid="uid://c3eovowba3o75" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0016.png" id="224_mogb5"] -[ext_resource type="Texture2D" uid="uid://wseia0klwgxu" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0017.png" id="225_ewhm7"] [ext_resource type="Texture2D" uid="uid://bjexugf0yoy7t" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0018.png" id="226_swf68"] -[ext_resource type="Texture2D" uid="uid://bns16shnp8e1x" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0019.png" id="227_tvjrw"] [ext_resource type="Texture2D" uid="uid://b8i7ivioar4s4" path="res://art/animation/Vesna2D/Vesna Anims Tools/B02-Walk-Gießkanne/0020.png" id="228_0vxgv"] [ext_resource type="Texture2D" uid="uid://crnef86drjaph" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0001.png" id="229_pmnwl"] [ext_resource type="Texture2D" uid="uid://cx6v3d0p2jd8m" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D03-Farming/0002.png" id="230_5bf5a"] @@ -250,447 +150,251 @@ [ext_resource type="Texture2D" uid="uid://bg8vhxi6a6mf" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D06-Harvesting/0010.png" id="248_amllb"] [ext_resource type="Texture2D" uid="uid://b65eekouoodxb" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0001.png" id="249_jdmex"] [ext_resource type="Texture2D" uid="uid://5ympv77kkafi" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0002.png" id="250_oen1t"] -[ext_resource type="Texture2D" uid="uid://bgx4sua0605a2" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0003.png" id="251_0jqke"] [ext_resource type="Texture2D" uid="uid://oyqr5qd00wl3" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0004.png" id="252_r0pcu"] -[ext_resource type="Texture2D" uid="uid://firp25dwbuag" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0005.png" id="253_vljsd"] [ext_resource type="Texture2D" uid="uid://blu3oxng1fvfu" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0006.png" id="254_psw4s"] -[ext_resource type="Texture2D" uid="uid://dvx04bqdtns0k" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0007.png" id="255_7s0f6"] [ext_resource type="Texture2D" uid="uid://yv3647j12j1r" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0008.png" id="256_sp4ui"] -[ext_resource type="Texture2D" uid="uid://ca30lideqdq7y" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0009.png" id="257_afi7i"] [ext_resource type="Texture2D" uid="uid://8hsle05jsbj" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0010.png" id="258_lb23i"] -[ext_resource type="Texture2D" uid="uid://0pjhs1gx58px" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0011.png" id="259_0bigc"] [ext_resource type="Texture2D" uid="uid://b7jnr68qpttxk" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0012.png" id="260_je6v5"] -[ext_resource type="Texture2D" uid="uid://8ltfkn0hv0j5" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0013.png" id="261_4yvls"] [ext_resource type="Texture2D" uid="uid://c15tbe3swmxwh" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0014.png" id="262_5b60r"] -[ext_resource type="Texture2D" uid="uid://b43k3tmng2o05" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0015.png" id="263_w4uhd"] [ext_resource type="Texture2D" uid="uid://d00k5a06ledgm" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0016.png" id="264_eip6u"] -[ext_resource type="Texture2D" uid="uid://c5yyh6p4duvwh" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0017.png" id="265_enj1o"] [ext_resource type="Texture2D" uid="uid://dycsloodg1t48" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0018.png" id="266_0udiy"] -[ext_resource type="Texture2D" uid="uid://jnvc4igo1x62" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0019.png" id="267_d2pv8"] [ext_resource type="Texture2D" uid="uid://c6rr71iu4oktn" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D01-Idle/0020.png" id="268_6tcma"] [ext_resource type="Texture2D" uid="uid://cmuc63m3tl87e" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0001.png" id="269_54g8u"] [ext_resource type="Texture2D" uid="uid://ccoatscn40d2" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0002.png" id="270_70su0"] -[ext_resource type="Texture2D" uid="uid://cc4ia2he41m20" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0003.png" id="271_eu3ff"] [ext_resource type="Texture2D" uid="uid://jisrle5dkrjc" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0004.png" id="272_pxgu8"] -[ext_resource type="Texture2D" uid="uid://c02wlcvmd18xn" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0005.png" id="273_m2pd7"] [ext_resource type="Texture2D" uid="uid://bd2m1nu27lda3" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0006.png" id="274_b2pqd"] -[ext_resource type="Texture2D" uid="uid://db80xvfcik3k6" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0007.png" id="275_hnmss"] [ext_resource type="Texture2D" uid="uid://duxtedwuusua2" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0008.png" id="276_qpuf0"] -[ext_resource type="Texture2D" uid="uid://b0klh2f6th67p" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0009.png" id="277_l3idq"] [ext_resource type="Texture2D" uid="uid://c2o2v33c1u3mq" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0010.png" id="278_4j61t"] -[ext_resource type="Texture2D" uid="uid://b8dfwyiarjha3" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0011.png" id="279_0u33n"] [ext_resource type="Texture2D" uid="uid://dweut6q766oef" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0012.png" id="280_5cfs0"] -[ext_resource type="Texture2D" uid="uid://bey1tk7lgiodg" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0013.png" id="281_0fe6s"] [ext_resource type="Texture2D" uid="uid://skk5o8bwvoh3" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0014.png" id="282_ooo1i"] -[ext_resource type="Texture2D" uid="uid://el4qxvir0wh4" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0015.png" id="283_l44m2"] [ext_resource type="Texture2D" uid="uid://btavwmodnvrxg" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0016.png" id="284_0qemg"] -[ext_resource type="Texture2D" uid="uid://c6fklv6mnmj80" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0017.png" id="285_lgxh3"] [ext_resource type="Texture2D" uid="uid://1qw2nk1agnf2" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0018.png" id="286_4plxa"] -[ext_resource type="Texture2D" uid="uid://c6g8pejfpuaqs" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0019.png" id="287_ocb1q"] [ext_resource type="Texture2D" uid="uid://c8b3gj1w7srgm" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Harke/0020.png" id="288_7n4ms"] [ext_resource type="Texture2D" uid="uid://crxdyp65dfp2t" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0001.png" id="289_ugtu6"] [ext_resource type="Texture2D" uid="uid://yryct86ynwgj" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0002.png" id="290_4svr2"] -[ext_resource type="Texture2D" uid="uid://cuavdkcmmgdop" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0003.png" id="291_uq464"] [ext_resource type="Texture2D" uid="uid://dmwofg5hm2xex" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0004.png" id="292_36rlr"] -[ext_resource type="Texture2D" uid="uid://cknmktqvxr3fb" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0005.png" id="293_q1pcj"] [ext_resource type="Texture2D" uid="uid://ctvi2x8ojo68n" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0006.png" id="294_245qu"] -[ext_resource type="Texture2D" uid="uid://dl0sf60jnln2" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0007.png" id="295_6hjd7"] [ext_resource type="Texture2D" uid="uid://cnxj38difdk04" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0008.png" id="296_6xx1k"] -[ext_resource type="Texture2D" uid="uid://blv161r4el7hv" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0009.png" id="297_2ahco"] [ext_resource type="Texture2D" uid="uid://27486660viuq" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0010.png" id="298_50dpy"] -[ext_resource type="Texture2D" uid="uid://nm12rhi3x5lk" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0011.png" id="299_34fky"] [ext_resource type="Texture2D" uid="uid://cwyhs5w2n2l24" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0012.png" id="300_iwb4e"] -[ext_resource type="Texture2D" uid="uid://b35klan6wqasx" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0013.png" id="301_6nmxi"] [ext_resource type="Texture2D" uid="uid://bu5k4ecgwt3lx" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0014.png" id="302_utrda"] -[ext_resource type="Texture2D" uid="uid://dderxwqmnh4dg" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0015.png" id="303_w3qpx"] [ext_resource type="Texture2D" uid="uid://gav711umfrv2" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0016.png" id="304_1vyc7"] -[ext_resource type="Texture2D" uid="uid://de8h0tmylmlol" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0017.png" id="305_ljwfd"] [ext_resource type="Texture2D" uid="uid://ctw7qgl5qvrvi" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0018.png" id="306_ckff6"] -[ext_resource type="Texture2D" uid="uid://bdeobrft6d6gt" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0019.png" id="307_jw5ap"] [ext_resource type="Texture2D" uid="uid://5owkgubxroks" path="res://art/animation/Vesna2D/Vesna Anims Tools/D01-Idle-Gießkanne/0020.png" id="308_ve1ef"] [ext_resource type="Texture2D" uid="uid://b103j03ancfyy" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0001.png" id="309_yht8o"] [ext_resource type="Texture2D" uid="uid://oko6pwxrv3x2" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0002.png" id="310_uunj5"] -[ext_resource type="Texture2D" uid="uid://2f4e2ijx2ua0" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0003.png" id="311_15hr6"] [ext_resource type="Texture2D" uid="uid://b3deqqgbojq3w" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0004.png" id="312_ptmn2"] -[ext_resource type="Texture2D" uid="uid://ch42v8bs3hi3s" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0005.png" id="313_c7v0a"] [ext_resource type="Texture2D" uid="uid://gv61g18j1528" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0006.png" id="314_gqt4r"] -[ext_resource type="Texture2D" uid="uid://g42b16asxhnc" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0007.png" id="315_l264e"] [ext_resource type="Texture2D" uid="uid://cavhvbl32oqsa" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0008.png" id="316_es1q6"] -[ext_resource type="Texture2D" uid="uid://ct02r4rt25uct" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0009.png" id="317_8oer6"] [ext_resource type="Texture2D" uid="uid://7jtoyq301fy6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0010.png" id="318_pa783"] -[ext_resource type="Texture2D" uid="uid://cci08dtmjpwid" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0011.png" id="319_o2c84"] [ext_resource type="Texture2D" uid="uid://cym1jfqg0eyg5" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0012.png" id="320_xpcbu"] -[ext_resource type="Texture2D" uid="uid://l6m7w6sfkipl" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0013.png" id="321_qjopn"] [ext_resource type="Texture2D" uid="uid://dw7qgkawxdjlu" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0014.png" id="322_sjy8g"] -[ext_resource type="Texture2D" uid="uid://q54ulgrvvrf4" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0015.png" id="323_ngntu"] [ext_resource type="Texture2D" uid="uid://ddie80jxvmy5f" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0016.png" id="324_qblpa"] -[ext_resource type="Texture2D" uid="uid://cswewdawtxfth" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0017.png" id="325_k6al3"] [ext_resource type="Texture2D" uid="uid://ba5funuelsn4u" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0018.png" id="326_hyut3"] -[ext_resource type="Texture2D" uid="uid://brhb4fvqofqfw" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0019.png" id="327_0m744"] [ext_resource type="Texture2D" uid="uid://bijy3gjn7pawx" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D11-Item/0020.png" id="328_sch8a"] [ext_resource type="Texture2D" uid="uid://0h6lc1gj8f03" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0001.png" id="329_6rfjn"] [ext_resource type="Texture2D" uid="uid://dhpfdtrdhihtb" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0002.png" id="330_hsw7b"] -[ext_resource type="Texture2D" uid="uid://cc2sj260u1dfh" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0003.png" id="331_gcahn"] [ext_resource type="Texture2D" uid="uid://dvoi3wovyxj2j" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0004.png" id="332_re6e1"] -[ext_resource type="Texture2D" uid="uid://djwrpq3n46vms" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0005.png" id="333_spiee"] [ext_resource type="Texture2D" uid="uid://cjtqhn8h635h1" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0006.png" id="334_x3shw"] -[ext_resource type="Texture2D" uid="uid://bhu703s6vac8i" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0007.png" id="335_qh3js"] [ext_resource type="Texture2D" uid="uid://cevedhkrxlhom" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0008.png" id="336_mascw"] -[ext_resource type="Texture2D" uid="uid://cgu22ny23cffa" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0009.png" id="337_lwe0m"] [ext_resource type="Texture2D" uid="uid://cq5ut1vcxwoee" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0010.png" id="338_fdcf2"] -[ext_resource type="Texture2D" uid="uid://bf564donmiifi" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0011.png" id="339_npar6"] [ext_resource type="Texture2D" uid="uid://dej0qb7oiy7jc" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0012.png" id="340_67swc"] -[ext_resource type="Texture2D" uid="uid://cns5j4t1d3j1r" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0013.png" id="341_xvb8t"] [ext_resource type="Texture2D" uid="uid://bn0huce4t056a" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0014.png" id="342_u85oh"] -[ext_resource type="Texture2D" uid="uid://b78try8gg5yds" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0015.png" id="343_ci6ne"] [ext_resource type="Texture2D" uid="uid://4ximx63tqe0p" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0016.png" id="344_rfucn"] -[ext_resource type="Texture2D" uid="uid://wkk4qua0862d" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0017.png" id="345_5l6yn"] [ext_resource type="Texture2D" uid="uid://c82xel2dsyomt" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0018.png" id="346_a532r"] -[ext_resource type="Texture2D" uid="uid://bp1yfawa2iejv" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0019.png" id="347_21i80"] [ext_resource type="Texture2D" uid="uid://58a0dvy0n0in" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D05-Talk/0020.png" id="348_ay7cy"] [ext_resource type="Texture2D" uid="uid://dlkqja0yx4im8" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0001.png" id="349_xexvc"] [ext_resource type="Texture2D" uid="uid://b7t266mvqyfmf" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0002.png" id="350_0nscs"] -[ext_resource type="Texture2D" uid="uid://b181quxvj4iix" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0003.png" id="351_084cq"] [ext_resource type="Texture2D" uid="uid://c8unnufabwbwr" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0004.png" id="352_nq8ef"] -[ext_resource type="Texture2D" uid="uid://c6u7gs36msh30" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0005.png" id="353_a3lgg"] [ext_resource type="Texture2D" uid="uid://bn831n4ip3kq0" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0006.png" id="354_njctl"] -[ext_resource type="Texture2D" uid="uid://db0uxeuxipft7" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0007.png" id="355_jsh87"] [ext_resource type="Texture2D" uid="uid://bqdw674714yt7" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0008.png" id="356_h2ttx"] -[ext_resource type="Texture2D" uid="uid://b7l5rrq66f8ic" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0009.png" id="357_s13a4"] [ext_resource type="Texture2D" uid="uid://dj5v0iic4waoi" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0010.png" id="358_itni2"] -[ext_resource type="Texture2D" uid="uid://dd3ohe6cfkba4" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0011.png" id="359_lvae6"] [ext_resource type="Texture2D" uid="uid://b3posc2llvlp1" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0012.png" id="360_gpc8b"] -[ext_resource type="Texture2D" uid="uid://b8fd6nb8end72" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0013.png" id="361_wcsqp"] [ext_resource type="Texture2D" uid="uid://dkqt3c2jmgm8l" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0014.png" id="362_g3tnl"] -[ext_resource type="Texture2D" uid="uid://c77nsu5f6ug0a" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0015.png" id="363_5pjs1"] [ext_resource type="Texture2D" uid="uid://blm1ekgiv46je" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0016.png" id="364_ry8vj"] -[ext_resource type="Texture2D" uid="uid://dewpigwcscskw" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0017.png" id="365_n4wdc"] [ext_resource type="Texture2D" uid="uid://6r8c0gcm771g" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0018.png" id="366_ebc3m"] -[ext_resource type="Texture2D" uid="uid://bp6ow32ru65s0" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0019.png" id="367_co6wt"] [ext_resource type="Texture2D" uid="uid://hkyrwakpje76" path="res://art/animation/Vesna2D/Vesna Anims Sequences/D10-Watercan/0020.png" id="368_k3vs2"] [ext_resource type="Texture2D" uid="uid://bhput7cf71gsn" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0001.png" id="369_sy3jn"] [ext_resource type="Texture2D" uid="uid://7me1qicg01wt" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0002.png" id="370_itiyy"] -[ext_resource type="Texture2D" uid="uid://bdp5mtpcc0qih" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0003.png" id="371_5xcne"] [ext_resource type="Texture2D" uid="uid://b30i6oddlsvxh" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0004.png" id="372_d1ikf"] -[ext_resource type="Texture2D" uid="uid://c8ac6qniltlmf" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0005.png" id="373_jvfxt"] [ext_resource type="Texture2D" uid="uid://b3s0ddml0xd38" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0006.png" id="374_gnhre"] -[ext_resource type="Texture2D" uid="uid://cdvmyddggkrqn" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0007.png" id="375_cfi8a"] [ext_resource type="Texture2D" uid="uid://dv5l0yqmtac5h" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0008.png" id="376_x786h"] -[ext_resource type="Texture2D" uid="uid://mufq0lfsxbt6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0009.png" id="377_d0qpy"] [ext_resource type="Texture2D" uid="uid://c1us4s5uyj7v8" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0010.png" id="378_dddmw"] -[ext_resource type="Texture2D" uid="uid://t6le4hx3s1yu" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0011.png" id="379_2hc63"] [ext_resource type="Texture2D" uid="uid://dt4l0cijtyvfb" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0012.png" id="380_feb73"] -[ext_resource type="Texture2D" uid="uid://cn01d7ts3oden" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0013.png" id="381_kknvl"] [ext_resource type="Texture2D" uid="uid://b4556vsbxq4jn" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0014.png" id="382_xh53a"] -[ext_resource type="Texture2D" uid="uid://cq2wcyw51gk71" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0015.png" id="383_4rhaa"] [ext_resource type="Texture2D" uid="uid://v5d3v64klgjx" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0016.png" id="384_w8ka8"] -[ext_resource type="Texture2D" uid="uid://cacxxck8o6b0y" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0017.png" id="385_8e62m"] [ext_resource type="Texture2D" uid="uid://c500av7jn4llt" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0018.png" id="386_53jhd"] -[ext_resource type="Texture2D" uid="uid://bdyqlsvb1jc0r" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0019.png" id="387_0ai3x"] [ext_resource type="Texture2D" uid="uid://csrke8b6kw7r5" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F01-Idle/0020.png" id="388_koymh"] [ext_resource type="Texture2D" uid="uid://dygkh117flcou" path="res://art/animation/vesna/Front/F01-Idle/0001.png" id="389_scyk5"] [ext_resource type="Texture2D" uid="uid://rwqptk0hk53" path="res://art/animation/vesna/Front/F01-Idle/0002.png" id="390_tk8qh"] -[ext_resource type="Texture2D" uid="uid://c5om11bu7mtvh" path="res://art/animation/vesna/Front/F01-Idle/0003.png" id="391_t0kq4"] [ext_resource type="Texture2D" uid="uid://dwma5btqs2uy3" path="res://art/animation/vesna/Front/F01-Idle/0004.png" id="392_y35a5"] -[ext_resource type="Texture2D" uid="uid://dfyny0twpg14k" path="res://art/animation/vesna/Front/F01-Idle/0005.png" id="393_2cb1c"] [ext_resource type="Texture2D" uid="uid://cqi3ncjs6paut" path="res://art/animation/vesna/Front/F01-Idle/0006.png" id="394_cok4e"] -[ext_resource type="Texture2D" uid="uid://bajv3di18puw3" path="res://art/animation/vesna/Front/F01-Idle/0007.png" id="395_wnp4a"] [ext_resource type="Texture2D" uid="uid://dpp6m2mkd0xua" path="res://art/animation/vesna/Front/F01-Idle/0008.png" id="396_yoylm"] -[ext_resource type="Texture2D" uid="uid://eflkom1ar3ho" path="res://art/animation/vesna/Front/F01-Idle/0009.png" id="397_1asry"] [ext_resource type="Texture2D" uid="uid://d33j2i3b2pkk4" path="res://art/animation/vesna/Front/F01-Idle/0010.png" id="398_jj5fl"] -[ext_resource type="Texture2D" uid="uid://dhbhnu36g6281" path="res://art/animation/vesna/Front/F01-Idle/0011.png" id="399_5eewt"] [ext_resource type="Texture2D" uid="uid://v4nwls33bkkl" path="res://art/animation/vesna/Front/F01-Idle/0012.png" id="400_yu75q"] -[ext_resource type="Texture2D" uid="uid://cvggdji135cjs" path="res://art/animation/vesna/Front/F01-Idle/0013.png" id="401_bllxk"] [ext_resource type="Texture2D" uid="uid://cmo4x5h28ikf7" path="res://art/animation/vesna/Front/F01-Idle/0014.png" id="402_q0e3h"] -[ext_resource type="Texture2D" uid="uid://diedmh5rtxf3i" path="res://art/animation/vesna/Front/F01-Idle/0015.png" id="403_cx4n8"] [ext_resource type="Texture2D" uid="uid://btcts8s3beik7" path="res://art/animation/vesna/Front/F01-Idle/0016.png" id="404_cvgn6"] -[ext_resource type="Texture2D" uid="uid://dnd2p4pw63mxg" path="res://art/animation/vesna/Front/F01-Idle/0017.png" id="405_fb3rg"] [ext_resource type="Texture2D" uid="uid://bctaos4woe16j" path="res://art/animation/vesna/Front/F01-Idle/0018.png" id="406_ahbdu"] -[ext_resource type="Texture2D" uid="uid://b1oepweesd8rv" path="res://art/animation/vesna/Front/F01-Idle/0019.png" id="407_xpdqt"] [ext_resource type="Texture2D" uid="uid://df2uy52nowiv7" path="res://art/animation/vesna/Front/F01-Idle/0020.png" id="408_d82fx"] -[ext_resource type="Texture2D" uid="uid://csqjb65s0evy5" path="res://art/animation/vesna/Front/F01-Idle/0021.png" id="409_wus31"] [ext_resource type="Texture2D" uid="uid://byga4mwbr61xu" path="res://art/animation/vesna/Front/F01-Idle/0022.png" id="410_s7wqi"] -[ext_resource type="Texture2D" uid="uid://gyib1bem1fdf" path="res://art/animation/vesna/Front/F01-Idle/0023.png" id="411_yefb7"] [ext_resource type="Texture2D" uid="uid://b33ge37wsb48d" path="res://art/animation/vesna/Front/F01-Idle/0024.png" id="412_1mefy"] -[ext_resource type="Texture2D" uid="uid://chtdvgljm261p" path="res://art/animation/vesna/Front/F01-Idle/0025.png" id="413_opxon"] [ext_resource type="Texture2D" uid="uid://gtemoxthr3dn" path="res://art/animation/vesna/Front/F01-Idle/0026.png" id="414_phpds"] -[ext_resource type="Texture2D" uid="uid://0a6exv7jrguj" path="res://art/animation/vesna/Front/F01-Idle/0027.png" id="415_egnqi"] [ext_resource type="Texture2D" uid="uid://0nfaqqu61h2v" path="res://art/animation/vesna/Front/F01-Idle/0028.png" id="416_oup86"] -[ext_resource type="Texture2D" uid="uid://bcj1yrf2jcg5s" path="res://art/animation/vesna/Front/F01-Idle/0029.png" id="417_454oj"] [ext_resource type="Texture2D" uid="uid://csiffnh05dj4m" path="res://art/animation/vesna/Front/F01-Idle/0030.png" id="418_dfvyj"] -[ext_resource type="Texture2D" uid="uid://duveatgt4lsxu" path="res://art/animation/vesna/Front/F01-Idle/0031.png" id="419_7jpwm"] [ext_resource type="Texture2D" uid="uid://2a6v2ljqasoh" path="res://art/animation/vesna/Front/F01-Idle/0032.png" id="420_reknm"] -[ext_resource type="Texture2D" uid="uid://bbjntge7tj0tw" path="res://art/animation/vesna/Front/F01-Idle/0033.png" id="421_m5538"] [ext_resource type="Texture2D" uid="uid://bnm65uhbly3f6" path="res://art/animation/vesna/Front/F01-Idle/0034.png" id="422_5iyfg"] -[ext_resource type="Texture2D" uid="uid://g5beiwsshrxv" path="res://art/animation/vesna/Front/F01-Idle/0035.png" id="423_76mcj"] [ext_resource type="Texture2D" uid="uid://rkf2r5dhsbqa" path="res://art/animation/vesna/Front/F01-Idle/0036.png" id="424_42jwc"] -[ext_resource type="Texture2D" uid="uid://ckkk6iru88sit" path="res://art/animation/vesna/Front/F01-Idle/0037.png" id="425_47xdr"] [ext_resource type="Texture2D" uid="uid://der772wlrlt2r" path="res://art/animation/vesna/Front/F01-Idle/0038.png" id="426_j7yl5"] -[ext_resource type="Texture2D" uid="uid://dawuluwe7qjj7" path="res://art/animation/vesna/Front/F01-Idle/0039.png" id="427_7utu1"] [ext_resource type="Texture2D" uid="uid://bbmtx0k1bv7wf" path="res://art/animation/vesna/Front/F01-Idle/0040.png" id="428_itvbl"] -[ext_resource type="Texture2D" uid="uid://dhwfeuehtiwys" path="res://art/animation/vesna/Front/F01-Idle/0041.png" id="429_1q8fq"] [ext_resource type="Texture2D" uid="uid://dqcr8wtxrfqay" path="res://art/animation/vesna/Front/F01-Idle/0042.png" id="430_5qcny"] -[ext_resource type="Texture2D" uid="uid://bv6a3q75jd2m3" path="res://art/animation/vesna/Front/F01-Idle/0043.png" id="431_1fkuv"] [ext_resource type="Texture2D" uid="uid://7qhvkauqxyba" path="res://art/animation/vesna/Front/F01-Idle/0044.png" id="432_7gq0s"] -[ext_resource type="Texture2D" uid="uid://cijmyjgpfc1ld" path="res://art/animation/vesna/Front/F01-Idle/0045.png" id="433_u2g1t"] [ext_resource type="Texture2D" uid="uid://cwlkmcu8odht0" path="res://art/animation/vesna/Front/F01-Idle/0046.png" id="434_j611n"] -[ext_resource type="Texture2D" uid="uid://kec6w70xrc4v" path="res://art/animation/vesna/Front/F01-Idle/0047.png" id="435_1iael"] [ext_resource type="Texture2D" uid="uid://bkpdyw3cmgmrb" path="res://art/animation/vesna/Front/F01-Idle/0048.png" id="436_armfy"] [ext_resource type="Texture2D" uid="uid://bn1lc1r75fr5r" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0001.png" id="437_buk8h"] [ext_resource type="Texture2D" uid="uid://di7pbg8h1bcum" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0002.png" id="438_cqepc"] -[ext_resource type="Texture2D" uid="uid://bxmbql0qwc0ky" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0003.png" id="439_djotj"] [ext_resource type="Texture2D" uid="uid://dvdvene2ee6jb" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0004.png" id="440_pej03"] -[ext_resource type="Texture2D" uid="uid://2a1srfqr37x6" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0005.png" id="441_8qhd5"] [ext_resource type="Texture2D" uid="uid://c7eqi8dkbj0qy" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0006.png" id="442_r5lkt"] -[ext_resource type="Texture2D" uid="uid://d20eaf6iga1q4" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0007.png" id="443_3lece"] [ext_resource type="Texture2D" uid="uid://fmsejppsimsq" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0008.png" id="444_ny2p1"] -[ext_resource type="Texture2D" uid="uid://375dlakijr1c" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0009.png" id="445_k0f2x"] [ext_resource type="Texture2D" uid="uid://4hqvdwqukg8g" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0010.png" id="446_vtwy4"] -[ext_resource type="Texture2D" uid="uid://djitxb8qcxqcw" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0011.png" id="447_7kv3k"] [ext_resource type="Texture2D" uid="uid://d2xgu7ug2o5fk" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0012.png" id="448_4hgl1"] -[ext_resource type="Texture2D" uid="uid://cl515xu61jw42" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0013.png" id="449_jpjbe"] [ext_resource type="Texture2D" uid="uid://bet1mnj33rfqt" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0014.png" id="450_0q8vj"] [ext_resource type="Texture2D" uid="uid://bwhmf7ymok016" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0015.png" id="451_5k1rr"] [ext_resource type="Texture2D" uid="uid://plw18ir73yvj" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0016.png" id="452_fdymn"] -[ext_resource type="Texture2D" uid="uid://cupa4gnlef368" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0017.png" id="453_t08dx"] [ext_resource type="Texture2D" uid="uid://blt5oytpcntl2" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0018.png" id="454_mdjx6"] -[ext_resource type="Texture2D" uid="uid://dxymheost3jg8" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0019.png" id="455_7okl3"] [ext_resource type="Texture2D" uid="uid://cxkb05c3kxdhb" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Harke/0020.png" id="456_ruc3g"] [ext_resource type="Texture2D" uid="uid://d1v1kkphh3w53" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0001.png" id="457_tsu1x"] [ext_resource type="Texture2D" uid="uid://cicp47ibjt526" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0002.png" id="458_3ddjs"] -[ext_resource type="Texture2D" uid="uid://6qgllokjeng7" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0003.png" id="459_x6it6"] [ext_resource type="Texture2D" uid="uid://cw68t2kbcvlen" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0004.png" id="460_6b7gh"] -[ext_resource type="Texture2D" uid="uid://bqliyyxtxhbvs" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0005.png" id="461_cvvib"] [ext_resource type="Texture2D" uid="uid://dh3cfbcqm0fs4" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0006.png" id="462_6yyoj"] -[ext_resource type="Texture2D" uid="uid://b223y313sflni" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0007.png" id="463_pkshe"] [ext_resource type="Texture2D" uid="uid://vahac0df0dhj" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0008.png" id="464_pbc3r"] -[ext_resource type="Texture2D" uid="uid://bo51i2jkxhyqg" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0009.png" id="465_lr12j"] [ext_resource type="Texture2D" uid="uid://b37lpqrsjjuc0" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0010.png" id="466_pw1ip"] -[ext_resource type="Texture2D" uid="uid://c6brq58x3g4bt" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0011.png" id="467_no4vd"] +[ext_resource type="Script" uid="uid://er03dkj8axlr" path="res://scripts/CSharp/Common/UI/WateringCanUi.cs" id="467_j4m0f"] [ext_resource type="Texture2D" uid="uid://oi11ax6tml6j" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0012.png" id="468_08021"] -[ext_resource type="Texture2D" uid="uid://oyyjcos1u8u3" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0013.png" id="469_ory5o"] +[ext_resource type="Texture2D" uid="uid://l0k3vh3kdprp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-1.png" id="468_f6xmn"] +[ext_resource type="Texture2D" uid="uid://t4w7axbof7bq" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-2.png" id="469_nxglm"] +[ext_resource type="Texture2D" uid="uid://di2npqkvvst6x" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-3.png" id="470_8fyd7"] [ext_resource type="Texture2D" uid="uid://dsjj23763pej5" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0014.png" id="470_bmmei"] -[ext_resource type="Texture2D" uid="uid://bhgdbt3poomff" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0015.png" id="471_fi56f"] +[ext_resource type="Texture2D" uid="uid://clti3basli30" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-4.png" id="471_dnm27"] +[ext_resource type="Texture2D" uid="uid://n1v4hgd467wp" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-5.png" id="472_e04c3"] [ext_resource type="Texture2D" uid="uid://blh0t2ofqj2uq" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0016.png" id="472_wdxsr"] -[ext_resource type="Texture2D" uid="uid://qr3xju3t1obd" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0017.png" id="473_0rglf"] +[ext_resource type="Texture2D" uid="uid://l5ym7gi82l1b" path="res://art/ui/UI/Watercan-ui/Tropfen-ui-6.png" id="473_g32y8"] [ext_resource type="Texture2D" uid="uid://3t1m2xi4ks75" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0018.png" id="474_tu801"] -[ext_resource type="Texture2D" uid="uid://cybr8susqmgp6" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0019.png" id="475_ivtia"] [ext_resource type="Texture2D" uid="uid://drtgi1qyq7fji" path="res://art/animation/Vesna2D/Vesna Anims Tools/F01-Idle-Gießkanne/0020.png" id="476_g4jjd"] [ext_resource type="Texture2D" uid="uid://d3rdsclnqbx7" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0001.png" id="477_qko58"] [ext_resource type="Texture2D" uid="uid://dqubvx1a08kn4" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0002.png" id="478_5myrm"] -[ext_resource type="Texture2D" uid="uid://cpbpacc7cdsoi" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0003.png" id="479_t7bl3"] [ext_resource type="Texture2D" uid="uid://dystt4hyqad74" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0004.png" id="480_wnay3"] -[ext_resource type="Texture2D" uid="uid://b0aiqq6w30kvn" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0005.png" id="481_1q611"] [ext_resource type="Texture2D" uid="uid://bopxv06co1osl" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0006.png" id="482_wfdif"] -[ext_resource type="Texture2D" uid="uid://db03d5ni2hfld" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0007.png" id="483_x4ny3"] [ext_resource type="Texture2D" uid="uid://coyggdfwgkeru" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0008.png" id="484_32thn"] -[ext_resource type="Texture2D" uid="uid://devhwksnljxh8" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0009.png" id="485_2xd7q"] [ext_resource type="Texture2D" uid="uid://du6x1h42smp6m" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0010.png" id="486_kobao"] -[ext_resource type="Texture2D" uid="uid://dueluilccsse6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0011.png" id="487_aqei0"] [ext_resource type="Texture2D" uid="uid://bras5gn8ov27l" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0012.png" id="488_ygjj5"] -[ext_resource type="Texture2D" uid="uid://bfrj113onig3k" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0013.png" id="489_ebusu"] [ext_resource type="Texture2D" uid="uid://rjmsht4g8dvp" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0014.png" id="490_6603x"] -[ext_resource type="Texture2D" uid="uid://lr1avqq12yao" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0015.png" id="491_1b1vm"] [ext_resource type="Texture2D" uid="uid://diqnv8ut7lffx" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0016.png" id="492_0tmn6"] -[ext_resource type="Texture2D" uid="uid://b3voy62ape62n" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0017.png" id="493_laqyq"] [ext_resource type="Texture2D" uid="uid://r4hv24417xpp" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0018.png" id="494_6j13p"] -[ext_resource type="Texture2D" uid="uid://g4u3om1u77c6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0019.png" id="495_45oh6"] [ext_resource type="Texture2D" uid="uid://b2mspl1vrjqbm" path="res://art/animation/Vesna2D/Vesna Anims Sequences/F02-Walk/0020.png" id="496_svyx0"] [ext_resource type="Texture2D" uid="uid://b4hhktk00bbqc" path="res://art/animation/vesna/Front/F02-Walk/0001.png" id="497_n4dnj"] [ext_resource type="Texture2D" uid="uid://d7wxdukk7xid" path="res://art/animation/vesna/Front/F02-Walk/0002.png" id="498_yjt3v"] -[ext_resource type="Texture2D" uid="uid://ca7x57cqvffcb" path="res://art/animation/vesna/Front/F02-Walk/0003.png" id="499_rpb3x"] [ext_resource type="Texture2D" uid="uid://d0v70fu37f0fh" path="res://art/animation/vesna/Front/F02-Walk/0004.png" id="500_vsiwk"] -[ext_resource type="Texture2D" uid="uid://1ioispbfo753" path="res://art/animation/vesna/Front/F02-Walk/0005.png" id="501_0xl7o"] [ext_resource type="Texture2D" uid="uid://110cauhmveo8" path="res://art/animation/vesna/Front/F02-Walk/0006.png" id="502_vkc8f"] -[ext_resource type="Texture2D" uid="uid://x8f8ryjq8wvt" path="res://art/animation/vesna/Front/F02-Walk/0007.png" id="503_q88c4"] [ext_resource type="Texture2D" uid="uid://kvt4ev4rsrg6" path="res://art/animation/vesna/Front/F02-Walk/0008.png" id="504_i8wsp"] -[ext_resource type="Texture2D" uid="uid://c7nj18fn1sva8" path="res://art/animation/vesna/Front/F02-Walk/0009.png" id="505_jswdb"] [ext_resource type="Texture2D" uid="uid://cvn23xxxxvlxk" path="res://art/animation/vesna/Front/F02-Walk/0010.png" id="506_3gngl"] -[ext_resource type="Texture2D" uid="uid://bkm8ly5p7f8vj" path="res://art/animation/vesna/Front/F02-Walk/0011.png" id="507_4jn6c"] [ext_resource type="Texture2D" uid="uid://dxhemjn1tr0kc" path="res://art/animation/vesna/Front/F02-Walk/0012.png" id="508_33ok2"] -[ext_resource type="Texture2D" uid="uid://c8ydwasn62av0" path="res://art/animation/vesna/Front/F02-Walk/0013.png" id="509_cdril"] [ext_resource type="Texture2D" uid="uid://botrs5iedo1eb" path="res://art/animation/vesna/Front/F02-Walk/0014.png" id="510_iik0a"] -[ext_resource type="Texture2D" uid="uid://duote4c2u2ebh" path="res://art/animation/vesna/Front/F02-Walk/0015.png" id="511_m7t7h"] [ext_resource type="Texture2D" uid="uid://d1k85w7o1ruqj" path="res://art/animation/vesna/Front/F02-Walk/0016.png" id="512_ognpj"] -[ext_resource type="Texture2D" uid="uid://c0sg7wtpfg4o3" path="res://art/animation/vesna/Front/F02-Walk/0017.png" id="513_b17kc"] [ext_resource type="Texture2D" uid="uid://8q0x0epa03s3" path="res://art/animation/vesna/Front/F02-Walk/0018.png" id="514_1uw6m"] -[ext_resource type="Texture2D" uid="uid://drs6rt5pbu8kf" path="res://art/animation/vesna/Front/F02-Walk/0019.png" id="515_3n8w1"] [ext_resource type="Texture2D" uid="uid://bvx2b584yayfx" path="res://art/animation/vesna/Front/F02-Walk/0020.png" id="516_b3h5k"] -[ext_resource type="Texture2D" uid="uid://cvkx40u5kmwce" path="res://art/animation/vesna/Front/F02-Walk/0021.png" id="517_s5w14"] [ext_resource type="Texture2D" uid="uid://cu7ygp8ubtsk" path="res://art/animation/vesna/Front/F02-Walk/0022.png" id="518_jgj7y"] -[ext_resource type="Texture2D" uid="uid://dtbq7ablcqid4" path="res://art/animation/vesna/Front/F02-Walk/0023.png" id="519_0ww3y"] [ext_resource type="Texture2D" uid="uid://btcs5yd0x3u3e" path="res://art/animation/vesna/Front/F02-Walk/0024.png" id="520_g7ywp"] -[ext_resource type="Texture2D" uid="uid://vuuy4gn00g2g" path="res://art/animation/vesna/Front/F02-Walk/0025.png" id="521_176d2"] [ext_resource type="Texture2D" uid="uid://cq41bmnctsmgv" path="res://art/animation/vesna/Front/F02-Walk/0026.png" id="522_iutes"] -[ext_resource type="Texture2D" uid="uid://b5e6rj54673i0" path="res://art/animation/vesna/Front/F02-Walk/0027.png" id="523_mv43l"] [ext_resource type="Texture2D" uid="uid://bmwbom8yqlusu" path="res://art/animation/vesna/Front/F02-Walk/0028.png" id="524_kqwdc"] -[ext_resource type="Texture2D" uid="uid://20llxig7ur6" path="res://art/animation/vesna/Front/F02-Walk/0029.png" id="525_pjbfp"] [ext_resource type="Texture2D" uid="uid://c00arg43pq8lb" path="res://art/animation/vesna/Front/F02-Walk/0030.png" id="526_s12im"] -[ext_resource type="Texture2D" uid="uid://ccrpnu21ikipw" path="res://art/animation/vesna/Front/F02-Walk/0031.png" id="527_m3twh"] [ext_resource type="Texture2D" uid="uid://csj3qojq53a3" path="res://art/animation/vesna/Front/F02-Walk/0032.png" id="528_l6jhg"] -[ext_resource type="Texture2D" uid="uid://chdwu52fc7ogj" path="res://art/animation/vesna/Front/F02-Walk/0033.png" id="529_wfhlo"] [ext_resource type="Texture2D" uid="uid://c0kcyujhyql2x" path="res://art/animation/vesna/Front/F02-Walk/0034.png" id="530_qjcs6"] -[ext_resource type="Texture2D" uid="uid://b6b13s0idl4id" path="res://art/animation/vesna/Front/F02-Walk/0035.png" id="531_hawsb"] [ext_resource type="Texture2D" uid="uid://ccodf2thfn5co" path="res://art/animation/vesna/Front/F02-Walk/0036.png" id="532_2ko7a"] -[ext_resource type="Texture2D" uid="uid://dahwtbgkjei0y" path="res://art/animation/vesna/Front/F02-Walk/0037.png" id="533_rcmwo"] [ext_resource type="Texture2D" uid="uid://cyxisoyf10wyj" path="res://art/animation/vesna/Front/F02-Walk/0038.png" id="534_tn6m1"] -[ext_resource type="Texture2D" uid="uid://h1ac48iuvyjb" path="res://art/animation/vesna/Front/F02-Walk/0039.png" id="535_ktdxm"] [ext_resource type="Texture2D" uid="uid://bauhrxofvjh1h" path="res://art/animation/vesna/Front/F02-Walk/0040.png" id="536_k760p"] -[ext_resource type="Texture2D" uid="uid://b4tjl0id46mst" path="res://art/animation/vesna/Front/F02-Walk/0041.png" id="537_ghb0e"] [ext_resource type="Texture2D" uid="uid://diy78nj3m8baa" path="res://art/animation/vesna/Front/F02-Walk/0042.png" id="538_ffkgb"] -[ext_resource type="Texture2D" uid="uid://bt4djbvv0qhyd" path="res://art/animation/vesna/Front/F02-Walk/0043.png" id="539_qkrg3"] [ext_resource type="Texture2D" uid="uid://cs5goc51slttq" path="res://art/animation/vesna/Front/F02-Walk/0044.png" id="540_00apb"] -[ext_resource type="Texture2D" uid="uid://b2xlq03lubcw7" path="res://art/animation/vesna/Front/F02-Walk/0045.png" id="541_ebo8g"] [ext_resource type="Texture2D" uid="uid://b66rx3t7qf5n1" path="res://art/animation/vesna/Front/F02-Walk/0046.png" id="542_562cu"] -[ext_resource type="Texture2D" uid="uid://b2qutc2vjvsup" path="res://art/animation/vesna/Front/F02-Walk/0047.png" id="543_ah3ul"] [ext_resource type="Texture2D" uid="uid://dt65s8qcmh08j" path="res://art/animation/vesna/Front/F02-Walk/0048.png" id="544_203a3"] [ext_resource type="Texture2D" uid="uid://dihktwgykpaux" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0001.png" id="545_2k5bd"] [ext_resource type="Texture2D" uid="uid://gg5807j8g780" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0002.png" id="546_i84pd"] -[ext_resource type="Texture2D" uid="uid://bldn11wgjaqle" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0003.png" id="547_r28y4"] [ext_resource type="Texture2D" uid="uid://gqr146yrc4jo" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0004.png" id="548_v4uwm"] -[ext_resource type="Texture2D" uid="uid://ciymfjoqfqsbu" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0005.png" id="549_wlukx"] [ext_resource type="Texture2D" uid="uid://dbpgdxlkb7lf0" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0006.png" id="550_y5333"] -[ext_resource type="Texture2D" uid="uid://dgfp8arrvvqhr" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0007.png" id="551_rjbr8"] [ext_resource type="Texture2D" uid="uid://brjo51e4stp7t" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0008.png" id="552_sbj83"] -[ext_resource type="Texture2D" uid="uid://2y6yvku8dva8" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0009.png" id="553_a8tcf"] [ext_resource type="Texture2D" uid="uid://bsmgh2vmmsvb4" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0010.png" id="554_7pxht"] -[ext_resource type="Texture2D" uid="uid://c6xhst5y1cpmk" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0011.png" id="555_ern7x"] [ext_resource type="Texture2D" uid="uid://doe3vcfgrsav8" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0012.png" id="556_67q52"] -[ext_resource type="Texture2D" uid="uid://bupckmoekk347" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0013.png" id="557_mynrt"] [ext_resource type="Texture2D" uid="uid://8dfj1nq2sfog" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0014.png" id="558_q5tla"] -[ext_resource type="Texture2D" uid="uid://bd18jpwlhf5ke" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0015.png" id="559_y5a67"] [ext_resource type="Texture2D" uid="uid://djkkrs31wjj55" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0016.png" id="560_h0jaa"] -[ext_resource type="Texture2D" uid="uid://lyi0kv61ublk" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0017.png" id="561_7dos6"] [ext_resource type="Texture2D" uid="uid://ksimo2r5w2qb" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0018.png" id="562_0v72r"] -[ext_resource type="Texture2D" uid="uid://ctuhwa5hboaoa" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0019.png" id="563_1el36"] [ext_resource type="Texture2D" uid="uid://hrdutg4w7w42" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Harke/0020.png" id="564_8r86j"] [ext_resource type="Texture2D" uid="uid://b7qnpnmr760qk" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0001.png" id="565_lrt82"] [ext_resource type="Texture2D" uid="uid://daou4rbcpedbe" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0002.png" id="566_ei2yw"] -[ext_resource type="Texture2D" uid="uid://b7vxusqjli60y" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0003.png" id="567_xlxen"] [ext_resource type="Texture2D" uid="uid://d3vipx5kcun8" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0004.png" id="568_0475c"] -[ext_resource type="Texture2D" uid="uid://dam0wpsipt4oy" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0005.png" id="569_a6rtw"] [ext_resource type="Texture2D" uid="uid://cjaqbq8rqjw25" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0006.png" id="570_vwcij"] -[ext_resource type="Texture2D" uid="uid://c1tsougejh8fn" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0007.png" id="571_p5500"] [ext_resource type="Texture2D" uid="uid://c0tsxnclpg60f" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0008.png" id="572_2r4hx"] -[ext_resource type="Texture2D" uid="uid://b2vnrhhxpn61c" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0009.png" id="573_26tt0"] [ext_resource type="Texture2D" uid="uid://bqlukfu2wd3yf" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0010.png" id="574_my0kq"] -[ext_resource type="Texture2D" uid="uid://d135j3jvkkrxi" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0011.png" id="575_rxqlw"] [ext_resource type="Texture2D" uid="uid://vcoontx40fk5" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0012.png" id="576_pi3ln"] -[ext_resource type="Texture2D" uid="uid://6yox4k4te47a" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0013.png" id="577_gxxpd"] [ext_resource type="Texture2D" uid="uid://cg1rfbwvt61gf" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0014.png" id="578_x5qma"] -[ext_resource type="Texture2D" uid="uid://dl7urlgfacp5l" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0015.png" id="579_1c3al"] [ext_resource type="Texture2D" uid="uid://cq4gwvai4siyq" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0016.png" id="580_7f7yj"] -[ext_resource type="Texture2D" uid="uid://hg5cadudhvks" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0017.png" id="581_ehwxa"] [ext_resource type="Texture2D" uid="uid://bu2ctlhxy5paw" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0018.png" id="582_4h62b"] -[ext_resource type="Texture2D" uid="uid://vog7t8snaw2d" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0019.png" id="583_1hmje"] [ext_resource type="Texture2D" uid="uid://6sqfbej2sr2b" path="res://art/animation/Vesna2D/Vesna Anims Tools/F02-Walk-Gießkanne/0020.png" id="584_vv7re"] [ext_resource type="Texture2D" uid="uid://om2axn1vfa5o" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0001.png" id="585_0hjp1"] [ext_resource type="Texture2D" uid="uid://2kan4a2kgd67" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0002.png" id="586_pmq4n"] -[ext_resource type="Texture2D" uid="uid://bpiyjt6l15dsb" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0003.png" id="587_g53rd"] [ext_resource type="Texture2D" uid="uid://drt72cgdujyyw" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0004.png" id="588_afimt"] -[ext_resource type="Texture2D" uid="uid://dwt0fvah6d8tx" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0005.png" id="589_1qnwy"] [ext_resource type="Texture2D" uid="uid://bprel8ljvtbxm" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0006.png" id="590_cf7hp"] -[ext_resource type="Texture2D" uid="uid://yubqf1n3e6lq" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0007.png" id="591_5bi84"] [ext_resource type="Texture2D" uid="uid://c77shxrvhlxk6" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0008.png" id="592_73i6g"] -[ext_resource type="Texture2D" uid="uid://b33tsq8bb4aof" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0009.png" id="593_7u500"] [ext_resource type="Texture2D" uid="uid://lq7ib25udrhc" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0010.png" id="594_ex0sg"] -[ext_resource type="Texture2D" uid="uid://d1cbj7vg0dkmc" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0011.png" id="595_cokyk"] [ext_resource type="Texture2D" uid="uid://bfhpoouf4p42x" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0012.png" id="596_gwcp1"] -[ext_resource type="Texture2D" uid="uid://b4cqjun55my0f" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0013.png" id="597_h1qcq"] [ext_resource type="Texture2D" uid="uid://bcvlpnqvbt1v4" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0014.png" id="598_6vr1t"] -[ext_resource type="Texture2D" uid="uid://car2a6ng8dkox" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0015.png" id="599_j3t5q"] [ext_resource type="Texture2D" uid="uid://k8bwpkyhdisd" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0016.png" id="600_0mubi"] -[ext_resource type="Texture2D" uid="uid://pgbaa5s2623r" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0017.png" id="601_3px4h"] [ext_resource type="Texture2D" uid="uid://fai21q76ntk8" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0018.png" id="602_rf6e2"] -[ext_resource type="Texture2D" uid="uid://b5iaf6xgoxs4h" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0019.png" id="603_vrgxu"] [ext_resource type="Texture2D" uid="uid://dkcgax7qivrgd" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S01-Idle/0020.png" id="604_v3yvu"] [ext_resource type="Texture2D" uid="uid://f7htcxiwvuup" path="res://art/animation/vesna/Side/S01-Idle/0001.png" id="605_6tbh7"] [ext_resource type="Texture2D" uid="uid://dogtalawnjbsm" path="res://art/animation/vesna/Side/S01-Idle/0002.png" id="606_0gmsg"] -[ext_resource type="Texture2D" uid="uid://dy8q1argyr42y" path="res://art/animation/vesna/Side/S01-Idle/0003.png" id="607_w55e0"] [ext_resource type="Texture2D" uid="uid://bjkuxovwfoh2g" path="res://art/animation/vesna/Side/S01-Idle/0004.png" id="608_m7alr"] -[ext_resource type="Texture2D" uid="uid://bnbgkqalf3ob7" path="res://art/animation/vesna/Side/S01-Idle/0005.png" id="609_ex8wj"] [ext_resource type="Texture2D" uid="uid://dp528g7vl2o1t" path="res://art/animation/vesna/Side/S01-Idle/0006.png" id="610_7eb8p"] -[ext_resource type="Texture2D" uid="uid://c63ntcisk7ul3" path="res://art/animation/vesna/Side/S01-Idle/0007.png" id="611_g612e"] [ext_resource type="Texture2D" uid="uid://wgk8gl42xhrv" path="res://art/animation/vesna/Side/S01-Idle/0008.png" id="612_kugcx"] -[ext_resource type="Texture2D" uid="uid://blx8nrbahftm1" path="res://art/animation/vesna/Side/S01-Idle/0009.png" id="613_5wcc4"] [ext_resource type="Texture2D" uid="uid://byiw0g04fh3fl" path="res://art/animation/vesna/Side/S01-Idle/0010.png" id="614_dnd3n"] -[ext_resource type="Texture2D" uid="uid://bwrolxnbgouf5" path="res://art/animation/vesna/Side/S01-Idle/0011.png" id="615_jh127"] [ext_resource type="Texture2D" uid="uid://6b1ujlfiynog" path="res://art/animation/vesna/Side/S01-Idle/0012.png" id="616_exnt1"] -[ext_resource type="Texture2D" uid="uid://dp3js8exvbq8d" path="res://art/animation/vesna/Side/S01-Idle/0013.png" id="617_l11ns"] [ext_resource type="Texture2D" uid="uid://2ynt3lurauh0" path="res://art/animation/vesna/Side/S01-Idle/0014.png" id="618_sws0p"] -[ext_resource type="Texture2D" uid="uid://p0br6ngk2lt7" path="res://art/animation/vesna/Side/S01-Idle/0015.png" id="619_mpliu"] [ext_resource type="Texture2D" uid="uid://dkdqpu38eglvt" path="res://art/animation/vesna/Side/S01-Idle/0016.png" id="620_ikq1g"] -[ext_resource type="Texture2D" uid="uid://tu0ocxvudhso" path="res://art/animation/vesna/Side/S01-Idle/0017.png" id="621_2l6la"] [ext_resource type="Texture2D" uid="uid://w2w8s4fll8fl" path="res://art/animation/vesna/Side/S01-Idle/0018.png" id="622_kum8w"] -[ext_resource type="Texture2D" uid="uid://m6cltq0bcejg" path="res://art/animation/vesna/Side/S01-Idle/0019.png" id="623_puki8"] [ext_resource type="Texture2D" uid="uid://bbd36en7jnhrx" path="res://art/animation/vesna/Side/S01-Idle/0020.png" id="624_ax3c1"] -[ext_resource type="Texture2D" uid="uid://b8bv6d2rt8h8v" path="res://art/animation/vesna/Side/S01-Idle/0021.png" id="625_k7myn"] [ext_resource type="Texture2D" uid="uid://bxhengbbqgho1" path="res://art/animation/vesna/Side/S01-Idle/0022.png" id="626_ehncs"] -[ext_resource type="Texture2D" uid="uid://bycvvq3vmbcss" path="res://art/animation/vesna/Side/S01-Idle/0023.png" id="627_gw36k"] [ext_resource type="Texture2D" uid="uid://oi44ce2uea6f" path="res://art/animation/vesna/Side/S01-Idle/0024.png" id="628_tlvlq"] -[ext_resource type="Texture2D" uid="uid://bkv341734rnim" path="res://art/animation/vesna/Side/S01-Idle/0025.png" id="629_sh8q0"] [ext_resource type="Texture2D" uid="uid://yhtoba2kt5a" path="res://art/animation/vesna/Side/S01-Idle/0026.png" id="630_3p107"] -[ext_resource type="Texture2D" uid="uid://bo165178craxh" path="res://art/animation/vesna/Side/S01-Idle/0027.png" id="631_s48mk"] [ext_resource type="Texture2D" uid="uid://wx260sg538cx" path="res://art/animation/vesna/Side/S01-Idle/0028.png" id="632_k2em2"] -[ext_resource type="Texture2D" uid="uid://d4mffc4wsp0du" path="res://art/animation/vesna/Side/S01-Idle/0029.png" id="633_cgisl"] [ext_resource type="Texture2D" uid="uid://dxh3gvtr7g41o" path="res://art/animation/vesna/Side/S01-Idle/0030.png" id="634_8gbgf"] -[ext_resource type="Texture2D" uid="uid://c2pvha48evpvm" path="res://art/animation/vesna/Side/S01-Idle/0031.png" id="635_af50v"] [ext_resource type="Texture2D" uid="uid://bx7m2bc3s0vua" path="res://art/animation/vesna/Side/S01-Idle/0032.png" id="636_0o0q8"] -[ext_resource type="Texture2D" uid="uid://dp2wj86bkw8qd" path="res://art/animation/vesna/Side/S01-Idle/0033.png" id="637_gcqp8"] [ext_resource type="Texture2D" uid="uid://pkligbymyevi" path="res://art/animation/vesna/Side/S01-Idle/0034.png" id="638_x8puo"] -[ext_resource type="Texture2D" uid="uid://u80eiwbk7e00" path="res://art/animation/vesna/Side/S01-Idle/0035.png" id="639_2kr0c"] [ext_resource type="Texture2D" uid="uid://bvfsbnwi5p8e3" path="res://art/animation/vesna/Side/S01-Idle/0036.png" id="640_gloiw"] -[ext_resource type="Texture2D" uid="uid://bjch2sgjq8bbw" path="res://art/animation/vesna/Side/S01-Idle/0037.png" id="641_gb3ia"] [ext_resource type="Texture2D" uid="uid://hhjjdbhgu6uy" path="res://art/animation/vesna/Side/S01-Idle/0038.png" id="642_co1v5"] -[ext_resource type="Texture2D" uid="uid://cl1d3eagu3e7v" path="res://art/animation/vesna/Side/S01-Idle/0039.png" id="643_u4032"] [ext_resource type="Texture2D" uid="uid://b3di3vja8bgc6" path="res://art/animation/vesna/Side/S01-Idle/0040.png" id="644_ygw38"] -[ext_resource type="Texture2D" uid="uid://bqksfi1dnqbv1" path="res://art/animation/vesna/Side/S01-Idle/0041.png" id="645_dufr2"] [ext_resource type="Texture2D" uid="uid://bshotijvkl5ql" path="res://art/animation/vesna/Side/S01-Idle/0042.png" id="646_k778w"] -[ext_resource type="Texture2D" uid="uid://cc6t1qdt2d2tx" path="res://art/animation/vesna/Side/S01-Idle/0043.png" id="647_8d5nc"] [ext_resource type="Texture2D" uid="uid://d2376yy03a4l2" path="res://art/animation/vesna/Side/S01-Idle/0044.png" id="648_ylj23"] -[ext_resource type="Texture2D" uid="uid://b86kewaxkoi4g" path="res://art/animation/vesna/Side/S01-Idle/0045.png" id="649_y5gfu"] [ext_resource type="Texture2D" uid="uid://ciwlbi1txx71r" path="res://art/animation/vesna/Side/S01-Idle/0046.png" id="650_2rjx7"] -[ext_resource type="Texture2D" uid="uid://ffqckan6gwxb" path="res://art/animation/vesna/Side/S01-Idle/0047.png" id="651_hi44u"] [ext_resource type="Texture2D" uid="uid://cecnohftednrt" path="res://art/animation/vesna/Side/S01-Idle/0048.png" id="652_dyko2"] [ext_resource type="Texture2D" uid="uid://c6afcstw52b0n" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0001.png" id="653_7l6sq"] [ext_resource type="Texture2D" uid="uid://dnoj1a0m05hu0" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0002.png" id="654_1th1q"] -[ext_resource type="Texture2D" uid="uid://cvql4p4kloaon" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0003.png" id="655_kelvf"] [ext_resource type="Texture2D" uid="uid://hv7dbe0ar40w" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0004.png" id="656_c5w6d"] -[ext_resource type="Texture2D" uid="uid://ba3grb0t3xv5v" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0005.png" id="657_i3dtq"] [ext_resource type="Texture2D" uid="uid://cxa8xoufbpxfu" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0006.png" id="658_ipgfv"] -[ext_resource type="Texture2D" uid="uid://n4rfecampw0u" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0007.png" id="659_544fe"] [ext_resource type="Texture2D" uid="uid://bfxjniy4grait" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0008.png" id="660_mi1bi"] -[ext_resource type="Texture2D" uid="uid://b5oqpm13s8mw8" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0009.png" id="661_m1gnf"] [ext_resource type="Texture2D" uid="uid://bqwy0bfphc1i6" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0010.png" id="662_8pix2"] -[ext_resource type="Texture2D" uid="uid://br6yfs72sffrc" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0011.png" id="663_d8kbx"] [ext_resource type="Texture2D" uid="uid://b5nemoibkcd1e" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0012.png" id="664_o457m"] -[ext_resource type="Texture2D" uid="uid://qiy04scra7bm" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0013.png" id="665_aui43"] [ext_resource type="Texture2D" uid="uid://chwg1k2dte0n6" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0014.png" id="666_dv0yi"] -[ext_resource type="Texture2D" uid="uid://cjtpptaeuih5a" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0015.png" id="667_a81gx"] [ext_resource type="Texture2D" uid="uid://d3e5ctql10n4g" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0016.png" id="668_q4n42"] -[ext_resource type="Texture2D" uid="uid://befugw72quhs3" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0017.png" id="669_ri708"] [ext_resource type="Texture2D" uid="uid://b1eyy4drgng7y" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0018.png" id="670_3cjbo"] -[ext_resource type="Texture2D" uid="uid://c2chhywjnhr7c" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0019.png" id="671_32duw"] [ext_resource type="Texture2D" uid="uid://dy0axpixp5xha" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Harke/0020.png" id="672_oqfoc"] [ext_resource type="Texture2D" uid="uid://cnn0hi24p550h" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0001.png" id="673_r331b"] [ext_resource type="Texture2D" uid="uid://htjuv3qgm0l0" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0002.png" id="674_mpxqh"] -[ext_resource type="Texture2D" uid="uid://b1n0iypk4bsj" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0003.png" id="675_7rldl"] [ext_resource type="Texture2D" uid="uid://bdjxaa75ygo47" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0004.png" id="676_sotra"] -[ext_resource type="Texture2D" uid="uid://bqey3yhe127ax" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0005.png" id="677_ph4yb"] [ext_resource type="Texture2D" uid="uid://cc58qcvhj7y3t" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0006.png" id="678_ilgf3"] -[ext_resource type="Texture2D" uid="uid://bybxy65fyjfqi" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0007.png" id="679_cohpj"] [ext_resource type="Texture2D" uid="uid://dhins6sn4odie" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0008.png" id="680_y1eex"] -[ext_resource type="Texture2D" uid="uid://chobeonoi3n3n" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0009.png" id="681_w54y2"] [ext_resource type="Texture2D" uid="uid://dw8ic3rkrsyhe" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0010.png" id="682_mqity"] -[ext_resource type="Texture2D" uid="uid://cue8fxpseoqp1" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0011.png" id="683_kgkc3"] [ext_resource type="Texture2D" uid="uid://u3qy1lm62mr7" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0012.png" id="684_wmoa1"] -[ext_resource type="Texture2D" uid="uid://dbq03jwbdd6i6" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0013.png" id="685_r72u6"] [ext_resource type="Texture2D" uid="uid://3sblj0bhtpkx" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0014.png" id="686_jp80r"] -[ext_resource type="Texture2D" uid="uid://fgwwxscs0bco" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0015.png" id="687_7ldbi"] [ext_resource type="Texture2D" uid="uid://di7m1e4e3ipgx" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0016.png" id="688_x7pqr"] -[ext_resource type="Texture2D" uid="uid://min74btwxtww" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0017.png" id="689_qlvst"] [ext_resource type="Texture2D" uid="uid://bg2yjuuq3jfmh" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0018.png" id="690_5c5t0"] -[ext_resource type="Texture2D" uid="uid://cth0puhjpy3yi" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0019.png" id="691_43hn6"] [ext_resource type="Texture2D" uid="uid://dl3njtguv783c" path="res://art/animation/Vesna2D/Vesna Anims Tools/S01-Idle-Gießkanne/0020.png" id="692_5ip34"] [ext_resource type="Texture2D" uid="uid://d4k4gwtfk2j0a" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0001.png" id="693_1x2wo"] [ext_resource type="Texture2D" uid="uid://t8wtpnm0txbh" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0002.png" id="694_va07i"] @@ -708,111 +412,61 @@ [ext_resource type="Texture2D" uid="uid://dmqdkgtbf7ul8" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S03-PickUp/0014.png" id="706_5ha88"] [ext_resource type="Texture2D" uid="uid://usi0dter8hv4" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0001.png" id="707_766so"] [ext_resource type="Texture2D" uid="uid://oyfr7kknylll" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0002.png" id="708_yk13s"] -[ext_resource type="Texture2D" uid="uid://dkrdqolyxlhk0" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0003.png" id="709_yi4ii"] [ext_resource type="Texture2D" uid="uid://uj53oie7o2k" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0004.png" id="710_f70pr"] -[ext_resource type="Texture2D" uid="uid://cuxklf54ycxqn" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0005.png" id="711_japqf"] [ext_resource type="Texture2D" uid="uid://cyp6jcvn8d4ps" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0006.png" id="712_pe5na"] -[ext_resource type="Texture2D" uid="uid://dru4pttgrs6hp" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0007.png" id="713_eelxk"] [ext_resource type="Texture2D" uid="uid://b7r1kvjv4a7te" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0008.png" id="714_cslcr"] -[ext_resource type="Texture2D" uid="uid://ct11egi6oa2vs" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0009.png" id="715_sp0mr"] [ext_resource type="Texture2D" uid="uid://mhetoe2q2plb" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0010.png" id="716_r5qrg"] -[ext_resource type="Texture2D" uid="uid://b3p1ive32d5s2" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0011.png" id="717_kux6w"] [ext_resource type="Texture2D" uid="uid://cbpueiws6uiq" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0012.png" id="718_r28gn"] -[ext_resource type="Texture2D" uid="uid://cgvgtvha76jbr" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0013.png" id="719_tdrjd"] [ext_resource type="Texture2D" uid="uid://cqahoeou3vian" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0014.png" id="720_57f4q"] -[ext_resource type="Texture2D" uid="uid://bdvvlrgvkhb6c" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0015.png" id="721_pg0yo"] [ext_resource type="Texture2D" uid="uid://b2galfsx6og6h" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0016.png" id="722_1jjes"] -[ext_resource type="Texture2D" uid="uid://blcu54p61ofrw" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0017.png" id="723_85raq"] [ext_resource type="Texture2D" uid="uid://ckgdtlo7y51nv" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0018.png" id="724_g6g5u"] -[ext_resource type="Texture2D" uid="uid://clkklypt7jqdp" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0019.png" id="725_c6woj"] [ext_resource type="Texture2D" uid="uid://bn3gypn4l3w7u" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0020.png" id="726_0l6t0"] -[ext_resource type="Texture2D" uid="uid://p0sptnq656d7" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0021.png" id="727_tm5vf"] [ext_resource type="Texture2D" uid="uid://b11hwfc2wndsf" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0022.png" id="728_o8uff"] -[ext_resource type="Texture2D" uid="uid://b3ccxlfteb2bq" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0023.png" id="729_uhvkp"] [ext_resource type="Texture2D" uid="uid://ympx8ykivayj" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0024.png" id="730_wwtbo"] -[ext_resource type="Texture2D" uid="uid://cri0w2idseceh" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0025.png" id="731_eeefe"] [ext_resource type="Texture2D" uid="uid://bxi8mt5jvw02o" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0026.png" id="732_n5gfh"] -[ext_resource type="Texture2D" uid="uid://dn4kafwj7v8ff" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0027.png" id="733_uu8wk"] [ext_resource type="Texture2D" uid="uid://gh1i43hfsye4" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0028.png" id="734_8ajxp"] -[ext_resource type="Texture2D" uid="uid://bl10xwoaplrxo" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0029.png" id="735_ymjju"] [ext_resource type="Texture2D" uid="uid://dc8xd8w5s471v" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0030.png" id="736_xhy85"] -[ext_resource type="Texture2D" uid="uid://737sllr1wedy" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0031.png" id="737_smkc4"] [ext_resource type="Texture2D" uid="uid://lohy1gj3imxr" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0032.png" id="738_5a14m"] -[ext_resource type="Texture2D" uid="uid://dlu3gqttex1g4" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0033.png" id="739_6prg8"] [ext_resource type="Texture2D" uid="uid://chcqeiw2myv6o" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0034.png" id="740_05soa"] -[ext_resource type="Texture2D" uid="uid://ygvhk0pvhr1r" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0035.png" id="741_ae4be"] [ext_resource type="Texture2D" uid="uid://cs8tfg3k061qq" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0036.png" id="742_oupgc"] -[ext_resource type="Texture2D" uid="uid://diektyeufmk5c" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0037.png" id="743_k6jb1"] [ext_resource type="Texture2D" uid="uid://csswxbuvvdqew" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0038.png" id="744_0de8g"] -[ext_resource type="Texture2D" uid="uid://blij5bbab8msa" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0039.png" id="745_6gbkr"] [ext_resource type="Texture2D" uid="uid://bfasq3jh4csxo" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0040.png" id="746_xpcp8"] -[ext_resource type="Texture2D" uid="uid://v5ya0ti1jhra" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0041.png" id="747_mqma7"] [ext_resource type="Texture2D" uid="uid://tvvx0t57m5xr" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0042.png" id="748_8au1c"] -[ext_resource type="Texture2D" uid="uid://dph1iaub3peww" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0043.png" id="749_pqp20"] [ext_resource type="Texture2D" uid="uid://brkgk181kqdvo" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0044.png" id="750_pa1th"] -[ext_resource type="Texture2D" uid="uid://d11jp2d8sdhuq" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0045.png" id="751_j5fds"] [ext_resource type="Texture2D" uid="uid://cycj0x7r2xnth" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0046.png" id="752_a20ik"] -[ext_resource type="Texture2D" uid="uid://bptrqdkk7yj5i" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0047.png" id="753_kyl1b"] [ext_resource type="Texture2D" uid="uid://crjfprs7deaxr" path="res://art/animation/vesna/Side/S02-Walk/S01-Walk0048.png" id="754_kcgp3"] [ext_resource type="Texture2D" uid="uid://bonwjlkxqqj1e" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0001.png" id="755_mmec4"] [ext_resource type="Texture2D" uid="uid://brrk1wf4oxyb8" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0002.png" id="756_w17j5"] -[ext_resource type="Texture2D" uid="uid://maf8gm8c6cod" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0003.png" id="757_ms0qb"] [ext_resource type="Texture2D" uid="uid://b3emeo4nrwol7" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0004.png" id="758_bobpp"] -[ext_resource type="Texture2D" uid="uid://q4eo2lxfyolg" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0005.png" id="759_dy6pl"] [ext_resource type="Texture2D" uid="uid://bol57aw87v3hs" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0006.png" id="760_hjc06"] -[ext_resource type="Texture2D" uid="uid://drgb374ql1yol" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0007.png" id="761_yo551"] [ext_resource type="Texture2D" uid="uid://b50f2siaaq5d" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0008.png" id="762_cqmns"] -[ext_resource type="Texture2D" uid="uid://hww0hsnh4lcl" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0009.png" id="763_kqdld"] [ext_resource type="Texture2D" uid="uid://d14bn7lahvhoe" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0010.png" id="764_6ag32"] -[ext_resource type="Texture2D" uid="uid://0scr6nvjj2xd" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0011.png" id="765_5gc0j"] [ext_resource type="Texture2D" uid="uid://xsvgmlwhwit3" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0012.png" id="766_sdkoa"] -[ext_resource type="Texture2D" uid="uid://claigp8vjaofp" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0013.png" id="767_j4c88"] [ext_resource type="Texture2D" uid="uid://cn5nuxicl33nk" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0014.png" id="768_yxmsl"] -[ext_resource type="Texture2D" uid="uid://be6dswpqlp4tq" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0015.png" id="769_v5kb6"] [ext_resource type="Texture2D" uid="uid://dqqljcbbbrbfn" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0016.png" id="770_hc1bq"] -[ext_resource type="Texture2D" uid="uid://cnq82nutmhjni" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0017.png" id="771_emlcs"] [ext_resource type="Texture2D" uid="uid://b060vbaiysswo" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0018.png" id="772_kapjc"] -[ext_resource type="Texture2D" uid="uid://bufylv0kila1u" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0019.png" id="773_dm2lr"] [ext_resource type="Texture2D" uid="uid://byrbpximcdrxe" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Harke/0020.png" id="774_w1ahn"] [ext_resource type="Texture2D" uid="uid://ckea4q3eugd2v" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0001.png" id="775_nguuw"] [ext_resource type="Texture2D" uid="uid://cw6bcmuv6nl3e" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0002.png" id="776_6o0aq"] -[ext_resource type="Texture2D" uid="uid://c0xjy7uhk6jsy" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0003.png" id="777_gtunp"] [ext_resource type="Texture2D" uid="uid://0gfsovly6em2" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0004.png" id="778_vh3bl"] -[ext_resource type="Texture2D" uid="uid://dsl3ihhckmx5k" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0005.png" id="779_1bxhc"] [ext_resource type="Texture2D" uid="uid://cqinsjvbdcguw" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0006.png" id="780_48qrn"] -[ext_resource type="Texture2D" uid="uid://64igl0gglnlu" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0007.png" id="781_pjm01"] [ext_resource type="Texture2D" uid="uid://c711ile1sfj4g" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0008.png" id="782_wvq0m"] -[ext_resource type="Texture2D" uid="uid://w243620hhvnu" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0009.png" id="783_g30x4"] [ext_resource type="Texture2D" uid="uid://dgwjvjrj3q8rn" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0010.png" id="784_sxoog"] -[ext_resource type="Texture2D" uid="uid://dm6k336sfq5dn" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0011.png" id="785_0gwlh"] [ext_resource type="Texture2D" uid="uid://c7rrih2i1cnhx" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0012.png" id="786_5xl80"] -[ext_resource type="Texture2D" uid="uid://8a3fx82hmjbi" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0013.png" id="787_ausc1"] [ext_resource type="Texture2D" uid="uid://dfn8318ff4qqg" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0014.png" id="788_gihw5"] -[ext_resource type="Texture2D" uid="uid://dx1hpkwxgtuuv" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0015.png" id="789_7mbns"] [ext_resource type="Texture2D" uid="uid://dbuxdbx7lv2uk" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0016.png" id="790_7uqx2"] -[ext_resource type="Texture2D" uid="uid://cevti27siyiu1" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0017.png" id="791_m2fac"] [ext_resource type="Texture2D" uid="uid://cxcaqeilw6qyv" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0018.png" id="792_uxh10"] -[ext_resource type="Texture2D" uid="uid://tywawvrx32tv" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0019.png" id="793_jtwhk"] [ext_resource type="Texture2D" uid="uid://e0act1bcstyj" path="res://art/animation/Vesna2D/Vesna Anims Sequences/S02-Walk/0020.png" id="794_lp5f3"] [ext_resource type="Texture2D" uid="uid://cloe0etis2lcu" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0001.png" id="795_ok1oc"] [ext_resource type="Texture2D" uid="uid://b8y3irc1jst1y" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0002.png" id="796_cl6x5"] -[ext_resource type="Texture2D" uid="uid://5844t784r4uq" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0003.png" id="797_ngd12"] [ext_resource type="Texture2D" uid="uid://bhsey7eiobmp0" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0004.png" id="798_26msc"] -[ext_resource type="Texture2D" uid="uid://bb4cugban5plb" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0005.png" id="799_grxnc"] [ext_resource type="Texture2D" uid="uid://c3i6fxxq23qde" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0006.png" id="800_frlj0"] -[ext_resource type="Texture2D" uid="uid://dcacayir1wy2y" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0007.png" id="801_2e27j"] [ext_resource type="Texture2D" uid="uid://cdtmhexmtrtg3" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0008.png" id="802_r3gkv"] -[ext_resource type="Texture2D" uid="uid://bqew3u842mh0o" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0009.png" id="803_paxjf"] [ext_resource type="Texture2D" uid="uid://diu6y1mmyap71" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0010.png" id="804_g2mlb"] -[ext_resource type="Texture2D" uid="uid://bf05l5nb48yfu" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0011.png" id="805_jia7e"] [ext_resource type="Texture2D" uid="uid://cvceouc4wu44" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0012.png" id="806_k1kh0"] -[ext_resource type="Texture2D" uid="uid://d1qa333ensunj" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0013.png" id="807_awkuw"] [ext_resource type="Texture2D" uid="uid://dnxg2ulkcec8q" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0014.png" id="808_ud6ks"] -[ext_resource type="Texture2D" uid="uid://bucj3lo01yx7g" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0015.png" id="809_3g83n"] [ext_resource type="Texture2D" uid="uid://ds2y033vahyi5" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0016.png" id="810_224qh"] -[ext_resource type="Texture2D" uid="uid://bx58kyxlnupf3" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0017.png" id="811_phn7o"] [ext_resource type="Texture2D" uid="uid://b0v61all3tsny" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0018.png" id="812_sf8kv"] -[ext_resource type="Texture2D" uid="uid://0vevm6lhrmes" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0019.png" id="813_ekwc5"] [ext_resource type="Texture2D" uid="uid://cao7vqax8cblo" path="res://art/animation/Vesna2D/Vesna Anims Tools/S02-Walk-Gießkanne/0020.png" id="814_3uq4g"] [ext_resource type="Texture2D" uid="uid://3pj2q7wtuion" path="res://art/farm/farming/farmobjekte/hoe.png" id="815_1ia2b"] [ext_resource type="Texture2D" uid="uid://x8hr8287ff2n" path="res://art/farm/farming/farmobjekte/tools atlas.png" id="816_1a3c1"] @@ -833,57 +487,30 @@ animations = [{ "texture": ExtResource("4_dy5kt") }, { "duration": 1.0, -"texture": ExtResource("5_ooryh") -}, { -"duration": 1.0, "texture": ExtResource("6_3sina") }, { "duration": 1.0, -"texture": ExtResource("7_bjd5b") -}, { -"duration": 1.0, "texture": ExtResource("8_f7dmn") }, { "duration": 1.0, -"texture": ExtResource("9_51g6i") -}, { -"duration": 1.0, "texture": ExtResource("10_fftrp") }, { "duration": 1.0, -"texture": ExtResource("11_ct2ci") -}, { -"duration": 1.0, "texture": ExtResource("12_3b8my") }, { "duration": 1.0, -"texture": ExtResource("13_uyop1") -}, { -"duration": 1.0, "texture": ExtResource("14_dbxha") }, { "duration": 1.0, -"texture": ExtResource("15_myc1w") -}, { -"duration": 1.0, "texture": ExtResource("16_g5k82") }, { "duration": 1.0, -"texture": ExtResource("17_g8eyg") -}, { -"duration": 1.0, "texture": ExtResource("18_uluck") }, { "duration": 1.0, -"texture": ExtResource("19_jm67u") -}, { -"duration": 1.0, "texture": ExtResource("20_7auft") }, { "duration": 1.0, -"texture": ExtResource("21_idwqi") -}, { -"duration": 1.0, "texture": ExtResource("22_wfdgo") }], "loop": true, @@ -898,141 +525,72 @@ animations = [{ "texture": ExtResource("24_tb8a3") }, { "duration": 1.0, -"texture": ExtResource("25_3algh") -}, { -"duration": 1.0, "texture": ExtResource("26_hvbdn") }, { "duration": 1.0, -"texture": ExtResource("27_bkxju") -}, { -"duration": 1.0, "texture": ExtResource("28_7klc7") }, { "duration": 1.0, -"texture": ExtResource("29_g8yjr") -}, { -"duration": 1.0, "texture": ExtResource("30_4sjqa") }, { "duration": 1.0, -"texture": ExtResource("31_j5gdy") -}, { -"duration": 1.0, "texture": ExtResource("32_srg3p") }, { "duration": 1.0, -"texture": ExtResource("33_s0f6c") -}, { -"duration": 1.0, "texture": ExtResource("34_cnsul") }, { "duration": 1.0, -"texture": ExtResource("35_30y07") -}, { -"duration": 1.0, "texture": ExtResource("36_n7dk1") }, { "duration": 1.0, -"texture": ExtResource("37_aw564") -}, { -"duration": 1.0, "texture": ExtResource("38_y5m8n") }, { "duration": 1.0, -"texture": ExtResource("39_4rb1e") -}, { -"duration": 1.0, "texture": ExtResource("40_lkrss") }, { "duration": 1.0, -"texture": ExtResource("41_5yc38") -}, { -"duration": 1.0, "texture": ExtResource("42_oq7bk") }, { "duration": 1.0, -"texture": ExtResource("43_06tv4") -}, { -"duration": 1.0, "texture": ExtResource("44_oi8d4") }, { "duration": 1.0, -"texture": ExtResource("45_qmmd3") -}, { -"duration": 1.0, "texture": ExtResource("46_g8hfs") }, { "duration": 1.0, -"texture": ExtResource("47_b1kaj") -}, { -"duration": 1.0, "texture": ExtResource("48_trb4q") }, { "duration": 1.0, -"texture": ExtResource("49_ln0lw") -}, { -"duration": 1.0, "texture": ExtResource("50_m3e1x") }, { "duration": 1.0, -"texture": ExtResource("51_dnl6u") -}, { -"duration": 1.0, "texture": ExtResource("52_kgncu") }, { "duration": 1.0, -"texture": ExtResource("53_r7rcw") -}, { -"duration": 1.0, "texture": ExtResource("54_hvusu") }, { "duration": 1.0, -"texture": ExtResource("55_s7u3f") -}, { -"duration": 1.0, "texture": ExtResource("56_33shn") }, { "duration": 1.0, -"texture": ExtResource("57_vtw6e") -}, { -"duration": 1.0, "texture": ExtResource("58_tm4g7") }, { "duration": 1.0, -"texture": ExtResource("59_nwsu2") -}, { -"duration": 1.0, "texture": ExtResource("60_5iaia") }, { "duration": 1.0, -"texture": ExtResource("61_jtnjo") -}, { -"duration": 1.0, "texture": ExtResource("62_gqhbm") }, { "duration": 1.0, -"texture": ExtResource("63_ywdkx") -}, { -"duration": 1.0, "texture": ExtResource("64_tpynu") }, { "duration": 1.0, -"texture": ExtResource("65_i4fg5") -}, { -"duration": 1.0, "texture": ExtResource("66_73ci5") }, { "duration": 1.0, -"texture": ExtResource("67_plvxc") -}, { -"duration": 1.0, "texture": ExtResource("68_6xgay") }, { "duration": 1.0, -"texture": ExtResource("69_g5ryt") -}, { -"duration": 1.0, "texture": ExtResource("70_uh3u2") }], "loop": true, @@ -1047,57 +605,30 @@ animations = [{ "texture": ExtResource("72_krjt8") }, { "duration": 1.0, -"texture": ExtResource("73_fc507") -}, { -"duration": 1.0, "texture": ExtResource("74_8o5vf") }, { "duration": 1.0, -"texture": ExtResource("75_5g28e") -}, { -"duration": 1.0, "texture": ExtResource("76_5m4eb") }, { "duration": 1.0, -"texture": ExtResource("77_0e45w") -}, { -"duration": 1.0, "texture": ExtResource("78_ea0ih") }, { "duration": 1.0, -"texture": ExtResource("79_8guwf") -}, { -"duration": 1.0, "texture": ExtResource("80_nthv1") }, { "duration": 1.0, -"texture": ExtResource("81_ll850") -}, { -"duration": 1.0, "texture": ExtResource("82_srvcl") }, { "duration": 1.0, -"texture": ExtResource("83_8b7sp") -}, { -"duration": 1.0, "texture": ExtResource("84_gbgxl") }, { "duration": 1.0, -"texture": ExtResource("85_gso82") -}, { -"duration": 1.0, "texture": ExtResource("86_vdw06") }, { "duration": 1.0, -"texture": ExtResource("87_hqqwf") -}, { -"duration": 1.0, "texture": ExtResource("88_rplna") }, { "duration": 1.0, -"texture": ExtResource("89_c4fmc") -}, { -"duration": 1.0, "texture": ExtResource("90_ktgpd") }], "loop": true, @@ -1112,57 +643,30 @@ animations = [{ "texture": ExtResource("92_r247x") }, { "duration": 1.0, -"texture": ExtResource("93_ubpl1") -}, { -"duration": 1.0, "texture": ExtResource("94_gakvy") }, { "duration": 1.0, -"texture": ExtResource("95_pse5n") -}, { -"duration": 1.0, "texture": ExtResource("96_in860") }, { "duration": 1.0, -"texture": ExtResource("97_gsmph") -}, { -"duration": 1.0, "texture": ExtResource("98_qfbag") }, { "duration": 1.0, -"texture": ExtResource("99_uc1kl") -}, { -"duration": 1.0, "texture": ExtResource("100_24v4s") }, { "duration": 1.0, -"texture": ExtResource("101_5jfin") -}, { -"duration": 1.0, "texture": ExtResource("102_0swag") }, { "duration": 1.0, -"texture": ExtResource("103_kan7k") -}, { -"duration": 1.0, "texture": ExtResource("104_elbbc") }, { "duration": 1.0, -"texture": ExtResource("105_e08lw") -}, { -"duration": 1.0, "texture": ExtResource("106_q2no2") }, { "duration": 1.0, -"texture": ExtResource("107_7u8lk") -}, { -"duration": 1.0, "texture": ExtResource("108_m0omi") }, { "duration": 1.0, -"texture": ExtResource("109_glh2j") -}, { -"duration": 1.0, "texture": ExtResource("110_lcssq") }], "loop": true, @@ -1212,57 +716,30 @@ animations = [{ "texture": ExtResource("122_cxvrh") }, { "duration": 1.0, -"texture": ExtResource("123_54tjs") -}, { -"duration": 1.0, "texture": ExtResource("124_mn60e") }, { "duration": 1.0, -"texture": ExtResource("125_4uvde") -}, { -"duration": 1.0, "texture": ExtResource("126_hgnnd") }, { "duration": 1.0, -"texture": ExtResource("127_7uog1") -}, { -"duration": 1.0, "texture": ExtResource("128_jtga8") }, { "duration": 1.0, -"texture": ExtResource("129_lxme3") -}, { -"duration": 1.0, "texture": ExtResource("130_ygmj0") }, { "duration": 1.0, -"texture": ExtResource("131_hcgb3") -}, { -"duration": 1.0, "texture": ExtResource("132_uinys") }, { "duration": 1.0, -"texture": ExtResource("133_q5j2s") -}, { -"duration": 1.0, "texture": ExtResource("134_bu26w") }, { "duration": 1.0, -"texture": ExtResource("135_13e2b") -}, { -"duration": 1.0, "texture": ExtResource("136_vnx5q") }, { "duration": 1.0, -"texture": ExtResource("137_21peu") -}, { -"duration": 1.0, "texture": ExtResource("138_4hhqw") }, { "duration": 1.0, -"texture": ExtResource("139_trklr") -}, { -"duration": 1.0, "texture": ExtResource("140_ikvge") }], "loop": true, @@ -1277,141 +754,72 @@ animations = [{ "texture": ExtResource("142_1kv2c") }, { "duration": 1.0, -"texture": ExtResource("143_v0vcu") -}, { -"duration": 1.0, "texture": ExtResource("144_lcakx") }, { "duration": 1.0, -"texture": ExtResource("145_2yoii") -}, { -"duration": 1.0, "texture": ExtResource("146_jcr6r") }, { "duration": 1.0, -"texture": ExtResource("147_vwfko") -}, { -"duration": 1.0, "texture": ExtResource("148_060nq") }, { "duration": 1.0, -"texture": ExtResource("149_smj2x") -}, { -"duration": 1.0, "texture": ExtResource("150_8u7ah") }, { "duration": 1.0, -"texture": ExtResource("151_0dx2o") -}, { -"duration": 1.0, "texture": ExtResource("152_yw3l0") }, { "duration": 1.0, -"texture": ExtResource("153_nd5dk") -}, { -"duration": 1.0, "texture": ExtResource("154_6qloc") }, { "duration": 1.0, -"texture": ExtResource("155_13eiv") -}, { -"duration": 1.0, "texture": ExtResource("156_kglr5") }, { "duration": 1.0, -"texture": ExtResource("157_hgbgw") -}, { -"duration": 1.0, "texture": ExtResource("158_s71l2") }, { "duration": 1.0, -"texture": ExtResource("159_7lm3j") -}, { -"duration": 1.0, "texture": ExtResource("160_sjrvp") }, { "duration": 1.0, -"texture": ExtResource("161_t363w") -}, { -"duration": 1.0, "texture": ExtResource("162_dvpnv") }, { "duration": 1.0, -"texture": ExtResource("163_wftmg") -}, { -"duration": 1.0, "texture": ExtResource("164_6fxu6") }, { "duration": 1.0, -"texture": ExtResource("165_hkal4") -}, { -"duration": 1.0, "texture": ExtResource("166_nqquh") }, { "duration": 1.0, -"texture": ExtResource("167_ekhdj") -}, { -"duration": 1.0, "texture": ExtResource("168_wl1fv") }, { "duration": 1.0, -"texture": ExtResource("169_ii55e") -}, { -"duration": 1.0, "texture": ExtResource("170_dvtvo") }, { "duration": 1.0, -"texture": ExtResource("171_7c80y") -}, { -"duration": 1.0, "texture": ExtResource("172_o6pqr") }, { "duration": 1.0, -"texture": ExtResource("173_c5yps") -}, { -"duration": 1.0, "texture": ExtResource("174_kihv4") }, { "duration": 1.0, -"texture": ExtResource("175_5khq4") -}, { -"duration": 1.0, "texture": ExtResource("176_7eupn") }, { "duration": 1.0, -"texture": ExtResource("177_vfawh") -}, { -"duration": 1.0, "texture": ExtResource("178_f6f2d") }, { "duration": 1.0, -"texture": ExtResource("179_qph5u") -}, { -"duration": 1.0, "texture": ExtResource("180_lu7eo") }, { "duration": 1.0, -"texture": ExtResource("181_vh87k") -}, { -"duration": 1.0, "texture": ExtResource("182_pn5mg") }, { "duration": 1.0, -"texture": ExtResource("183_klu6v") -}, { -"duration": 1.0, "texture": ExtResource("184_ys15e") }, { "duration": 1.0, -"texture": ExtResource("185_afhyr") -}, { -"duration": 1.0, "texture": ExtResource("186_qtrjy") }, { "duration": 1.0, -"texture": ExtResource("187_i253v") -}, { -"duration": 1.0, "texture": ExtResource("188_bpice") }], "loop": true, @@ -1426,57 +834,30 @@ animations = [{ "texture": ExtResource("190_q1o7y") }, { "duration": 1.0, -"texture": ExtResource("191_dgrcv") -}, { -"duration": 1.0, "texture": ExtResource("192_cagdb") }, { "duration": 1.0, -"texture": ExtResource("193_7uqc6") -}, { -"duration": 1.0, "texture": ExtResource("194_j84th") }, { "duration": 1.0, -"texture": ExtResource("195_biaa4") -}, { -"duration": 1.0, "texture": ExtResource("196_byym0") }, { "duration": 1.0, -"texture": ExtResource("197_ruvn3") -}, { -"duration": 1.0, "texture": ExtResource("198_mqj3d") }, { "duration": 1.0, -"texture": ExtResource("199_6sg07") -}, { -"duration": 1.0, "texture": ExtResource("200_nquvr") }, { "duration": 1.0, -"texture": ExtResource("201_orc6w") -}, { -"duration": 1.0, "texture": ExtResource("202_jyw6b") }, { "duration": 1.0, -"texture": ExtResource("203_1tdqy") -}, { -"duration": 1.0, "texture": ExtResource("204_xpi67") }, { "duration": 1.0, -"texture": ExtResource("205_2stfx") -}, { -"duration": 1.0, "texture": ExtResource("206_bsgc5") }, { "duration": 1.0, -"texture": ExtResource("207_rfav7") -}, { -"duration": 1.0, "texture": ExtResource("208_ct716") }], "loop": true, @@ -1491,57 +872,30 @@ animations = [{ "texture": ExtResource("210_vkget") }, { "duration": 1.0, -"texture": ExtResource("211_4ejo6") -}, { -"duration": 1.0, "texture": ExtResource("212_qwtqh") }, { "duration": 1.0, -"texture": ExtResource("213_tom53") -}, { -"duration": 1.0, "texture": ExtResource("214_posuh") }, { "duration": 1.0, -"texture": ExtResource("215_8rehj") -}, { -"duration": 1.0, "texture": ExtResource("216_6ctoe") }, { "duration": 1.0, -"texture": ExtResource("217_mya32") -}, { -"duration": 1.0, "texture": ExtResource("218_qmjxl") }, { "duration": 1.0, -"texture": ExtResource("219_arja3") -}, { -"duration": 1.0, "texture": ExtResource("220_yiria") }, { "duration": 1.0, -"texture": ExtResource("221_v6rrd") -}, { -"duration": 1.0, "texture": ExtResource("222_vna73") }, { "duration": 1.0, -"texture": ExtResource("223_ovybi") -}, { -"duration": 1.0, "texture": ExtResource("224_mogb5") }, { "duration": 1.0, -"texture": ExtResource("225_ewhm7") -}, { -"duration": 1.0, "texture": ExtResource("226_swf68") }, { "duration": 1.0, -"texture": ExtResource("227_tvjrw") -}, { -"duration": 1.0, "texture": ExtResource("228_0vxgv") }], "loop": true, @@ -1626,57 +980,30 @@ animations = [{ "texture": ExtResource("250_oen1t") }, { "duration": 1.0, -"texture": ExtResource("251_0jqke") -}, { -"duration": 1.0, "texture": ExtResource("252_r0pcu") }, { "duration": 1.0, -"texture": ExtResource("253_vljsd") -}, { -"duration": 1.0, "texture": ExtResource("254_psw4s") }, { "duration": 1.0, -"texture": ExtResource("255_7s0f6") -}, { -"duration": 1.0, "texture": ExtResource("256_sp4ui") }, { "duration": 1.0, -"texture": ExtResource("257_afi7i") -}, { -"duration": 1.0, "texture": ExtResource("258_lb23i") }, { "duration": 1.0, -"texture": ExtResource("259_0bigc") -}, { -"duration": 1.0, "texture": ExtResource("260_je6v5") }, { "duration": 1.0, -"texture": ExtResource("261_4yvls") -}, { -"duration": 1.0, "texture": ExtResource("262_5b60r") }, { "duration": 1.0, -"texture": ExtResource("263_w4uhd") -}, { -"duration": 1.0, "texture": ExtResource("264_eip6u") }, { "duration": 1.0, -"texture": ExtResource("265_enj1o") -}, { -"duration": 1.0, "texture": ExtResource("266_0udiy") }, { "duration": 1.0, -"texture": ExtResource("267_d2pv8") -}, { -"duration": 1.0, "texture": ExtResource("268_6tcma") }], "loop": true, @@ -1691,57 +1018,30 @@ animations = [{ "texture": ExtResource("270_70su0") }, { "duration": 1.0, -"texture": ExtResource("271_eu3ff") -}, { -"duration": 1.0, "texture": ExtResource("272_pxgu8") }, { "duration": 1.0, -"texture": ExtResource("273_m2pd7") -}, { -"duration": 1.0, "texture": ExtResource("274_b2pqd") }, { "duration": 1.0, -"texture": ExtResource("275_hnmss") -}, { -"duration": 1.0, "texture": ExtResource("276_qpuf0") }, { "duration": 1.0, -"texture": ExtResource("277_l3idq") -}, { -"duration": 1.0, "texture": ExtResource("278_4j61t") }, { "duration": 1.0, -"texture": ExtResource("279_0u33n") -}, { -"duration": 1.0, "texture": ExtResource("280_5cfs0") }, { "duration": 1.0, -"texture": ExtResource("281_0fe6s") -}, { -"duration": 1.0, "texture": ExtResource("282_ooo1i") }, { "duration": 1.0, -"texture": ExtResource("283_l44m2") -}, { -"duration": 1.0, "texture": ExtResource("284_0qemg") }, { "duration": 1.0, -"texture": ExtResource("285_lgxh3") -}, { -"duration": 1.0, "texture": ExtResource("286_4plxa") }, { "duration": 1.0, -"texture": ExtResource("287_ocb1q") -}, { -"duration": 1.0, "texture": ExtResource("288_7n4ms") }], "loop": true, @@ -1756,57 +1056,30 @@ animations = [{ "texture": ExtResource("290_4svr2") }, { "duration": 1.0, -"texture": ExtResource("291_uq464") -}, { -"duration": 1.0, "texture": ExtResource("292_36rlr") }, { "duration": 1.0, -"texture": ExtResource("293_q1pcj") -}, { -"duration": 1.0, "texture": ExtResource("294_245qu") }, { "duration": 1.0, -"texture": ExtResource("295_6hjd7") -}, { -"duration": 1.0, "texture": ExtResource("296_6xx1k") }, { "duration": 1.0, -"texture": ExtResource("297_2ahco") -}, { -"duration": 1.0, "texture": ExtResource("298_50dpy") }, { "duration": 1.0, -"texture": ExtResource("299_34fky") -}, { -"duration": 1.0, "texture": ExtResource("300_iwb4e") }, { "duration": 1.0, -"texture": ExtResource("301_6nmxi") -}, { -"duration": 1.0, "texture": ExtResource("302_utrda") }, { "duration": 1.0, -"texture": ExtResource("303_w3qpx") -}, { -"duration": 1.0, "texture": ExtResource("304_1vyc7") }, { "duration": 1.0, -"texture": ExtResource("305_ljwfd") -}, { -"duration": 1.0, "texture": ExtResource("306_ckff6") }, { "duration": 1.0, -"texture": ExtResource("307_jw5ap") -}, { -"duration": 1.0, "texture": ExtResource("308_ve1ef") }], "loop": true, @@ -1821,57 +1094,30 @@ animations = [{ "texture": ExtResource("310_uunj5") }, { "duration": 1.0, -"texture": ExtResource("311_15hr6") -}, { -"duration": 1.0, "texture": ExtResource("312_ptmn2") }, { "duration": 1.0, -"texture": ExtResource("313_c7v0a") -}, { -"duration": 1.0, "texture": ExtResource("314_gqt4r") }, { "duration": 1.0, -"texture": ExtResource("315_l264e") -}, { -"duration": 1.0, "texture": ExtResource("316_es1q6") }, { "duration": 1.0, -"texture": ExtResource("317_8oer6") -}, { -"duration": 1.0, "texture": ExtResource("318_pa783") }, { "duration": 1.0, -"texture": ExtResource("319_o2c84") -}, { -"duration": 1.0, "texture": ExtResource("320_xpcbu") }, { "duration": 1.0, -"texture": ExtResource("321_qjopn") -}, { -"duration": 1.0, "texture": ExtResource("322_sjy8g") }, { "duration": 1.0, -"texture": ExtResource("323_ngntu") -}, { -"duration": 1.0, "texture": ExtResource("324_qblpa") }, { "duration": 1.0, -"texture": ExtResource("325_k6al3") -}, { -"duration": 1.0, "texture": ExtResource("326_hyut3") }, { "duration": 1.0, -"texture": ExtResource("327_0m744") -}, { -"duration": 1.0, "texture": ExtResource("328_sch8a") }], "loop": true, @@ -1886,57 +1132,30 @@ animations = [{ "texture": ExtResource("330_hsw7b") }, { "duration": 1.0, -"texture": ExtResource("331_gcahn") -}, { -"duration": 1.0, "texture": ExtResource("332_re6e1") }, { "duration": 1.0, -"texture": ExtResource("333_spiee") -}, { -"duration": 1.0, "texture": ExtResource("334_x3shw") }, { "duration": 1.0, -"texture": ExtResource("335_qh3js") -}, { -"duration": 1.0, "texture": ExtResource("336_mascw") }, { "duration": 1.0, -"texture": ExtResource("337_lwe0m") -}, { -"duration": 1.0, "texture": ExtResource("338_fdcf2") }, { "duration": 1.0, -"texture": ExtResource("339_npar6") -}, { -"duration": 1.0, "texture": ExtResource("340_67swc") }, { "duration": 1.0, -"texture": ExtResource("341_xvb8t") -}, { -"duration": 1.0, "texture": ExtResource("342_u85oh") }, { "duration": 1.0, -"texture": ExtResource("343_ci6ne") -}, { -"duration": 1.0, "texture": ExtResource("344_rfucn") }, { "duration": 1.0, -"texture": ExtResource("345_5l6yn") -}, { -"duration": 1.0, "texture": ExtResource("346_a532r") }, { "duration": 1.0, -"texture": ExtResource("347_21i80") -}, { -"duration": 1.0, "texture": ExtResource("348_ay7cy") }], "loop": true, @@ -1951,57 +1170,30 @@ animations = [{ "texture": ExtResource("350_0nscs") }, { "duration": 1.0, -"texture": ExtResource("351_084cq") -}, { -"duration": 1.0, "texture": ExtResource("352_nq8ef") }, { "duration": 1.0, -"texture": ExtResource("353_a3lgg") -}, { -"duration": 1.0, "texture": ExtResource("354_njctl") }, { "duration": 1.0, -"texture": ExtResource("355_jsh87") -}, { -"duration": 1.0, "texture": ExtResource("356_h2ttx") }, { "duration": 1.0, -"texture": ExtResource("357_s13a4") -}, { -"duration": 1.0, "texture": ExtResource("358_itni2") }, { "duration": 1.0, -"texture": ExtResource("359_lvae6") -}, { -"duration": 1.0, "texture": ExtResource("360_gpc8b") }, { "duration": 1.0, -"texture": ExtResource("361_wcsqp") -}, { -"duration": 1.0, "texture": ExtResource("362_g3tnl") }, { "duration": 1.0, -"texture": ExtResource("363_5pjs1") -}, { -"duration": 1.0, "texture": ExtResource("364_ry8vj") }, { "duration": 1.0, -"texture": ExtResource("365_n4wdc") -}, { -"duration": 1.0, "texture": ExtResource("366_ebc3m") }, { "duration": 1.0, -"texture": ExtResource("367_co6wt") -}, { -"duration": 1.0, "texture": ExtResource("368_k3vs2") }], "loop": true, @@ -2016,57 +1208,30 @@ animations = [{ "texture": ExtResource("350_0nscs") }, { "duration": 1.0, -"texture": ExtResource("351_084cq") -}, { -"duration": 1.0, "texture": ExtResource("352_nq8ef") }, { "duration": 1.0, -"texture": ExtResource("353_a3lgg") -}, { -"duration": 1.0, "texture": ExtResource("354_njctl") }, { "duration": 1.0, -"texture": ExtResource("355_jsh87") -}, { -"duration": 1.0, "texture": ExtResource("356_h2ttx") }, { "duration": 1.0, -"texture": ExtResource("357_s13a4") -}, { -"duration": 1.0, "texture": ExtResource("358_itni2") }, { "duration": 1.0, -"texture": ExtResource("359_lvae6") -}, { -"duration": 1.0, "texture": ExtResource("360_gpc8b") }, { "duration": 1.0, -"texture": ExtResource("361_wcsqp") -}, { -"duration": 1.0, "texture": ExtResource("362_g3tnl") }, { "duration": 1.0, -"texture": ExtResource("363_5pjs1") -}, { -"duration": 1.0, "texture": ExtResource("364_ry8vj") }, { "duration": 1.0, -"texture": ExtResource("365_n4wdc") -}, { -"duration": 1.0, "texture": ExtResource("366_ebc3m") }, { "duration": 1.0, -"texture": ExtResource("367_co6wt") -}, { -"duration": 1.0, "texture": ExtResource("368_k3vs2") }], "loop": true, @@ -2081,57 +1246,30 @@ animations = [{ "texture": ExtResource("370_itiyy") }, { "duration": 1.0, -"texture": ExtResource("371_5xcne") -}, { -"duration": 1.0, "texture": ExtResource("372_d1ikf") }, { "duration": 1.0, -"texture": ExtResource("373_jvfxt") -}, { -"duration": 1.0, "texture": ExtResource("374_gnhre") }, { "duration": 1.0, -"texture": ExtResource("375_cfi8a") -}, { -"duration": 1.0, "texture": ExtResource("376_x786h") }, { "duration": 1.0, -"texture": ExtResource("377_d0qpy") -}, { -"duration": 1.0, "texture": ExtResource("378_dddmw") }, { "duration": 1.0, -"texture": ExtResource("379_2hc63") -}, { -"duration": 1.0, "texture": ExtResource("380_feb73") }, { "duration": 1.0, -"texture": ExtResource("381_kknvl") -}, { -"duration": 1.0, "texture": ExtResource("382_xh53a") }, { "duration": 1.0, -"texture": ExtResource("383_4rhaa") -}, { -"duration": 1.0, "texture": ExtResource("384_w8ka8") }, { "duration": 1.0, -"texture": ExtResource("385_8e62m") -}, { -"duration": 1.0, "texture": ExtResource("386_53jhd") }, { "duration": 1.0, -"texture": ExtResource("387_0ai3x") -}, { -"duration": 1.0, "texture": ExtResource("388_koymh") }], "loop": true, @@ -2146,141 +1284,72 @@ animations = [{ "texture": ExtResource("390_tk8qh") }, { "duration": 1.0, -"texture": ExtResource("391_t0kq4") -}, { -"duration": 1.0, "texture": ExtResource("392_y35a5") }, { "duration": 1.0, -"texture": ExtResource("393_2cb1c") -}, { -"duration": 1.0, "texture": ExtResource("394_cok4e") }, { "duration": 1.0, -"texture": ExtResource("395_wnp4a") -}, { -"duration": 1.0, "texture": ExtResource("396_yoylm") }, { "duration": 1.0, -"texture": ExtResource("397_1asry") -}, { -"duration": 1.0, "texture": ExtResource("398_jj5fl") }, { "duration": 1.0, -"texture": ExtResource("399_5eewt") -}, { -"duration": 1.0, "texture": ExtResource("400_yu75q") }, { "duration": 1.0, -"texture": ExtResource("401_bllxk") -}, { -"duration": 1.0, "texture": ExtResource("402_q0e3h") }, { "duration": 1.0, -"texture": ExtResource("403_cx4n8") -}, { -"duration": 1.0, "texture": ExtResource("404_cvgn6") }, { "duration": 1.0, -"texture": ExtResource("405_fb3rg") -}, { -"duration": 1.0, "texture": ExtResource("406_ahbdu") }, { "duration": 1.0, -"texture": ExtResource("407_xpdqt") -}, { -"duration": 1.0, "texture": ExtResource("408_d82fx") }, { "duration": 1.0, -"texture": ExtResource("409_wus31") -}, { -"duration": 1.0, "texture": ExtResource("410_s7wqi") }, { "duration": 1.0, -"texture": ExtResource("411_yefb7") -}, { -"duration": 1.0, "texture": ExtResource("412_1mefy") }, { "duration": 1.0, -"texture": ExtResource("413_opxon") -}, { -"duration": 1.0, "texture": ExtResource("414_phpds") }, { "duration": 1.0, -"texture": ExtResource("415_egnqi") -}, { -"duration": 1.0, "texture": ExtResource("416_oup86") }, { "duration": 1.0, -"texture": ExtResource("417_454oj") -}, { -"duration": 1.0, "texture": ExtResource("418_dfvyj") }, { "duration": 1.0, -"texture": ExtResource("419_7jpwm") -}, { -"duration": 1.0, "texture": ExtResource("420_reknm") }, { "duration": 1.0, -"texture": ExtResource("421_m5538") -}, { -"duration": 1.0, "texture": ExtResource("422_5iyfg") }, { "duration": 1.0, -"texture": ExtResource("423_76mcj") -}, { -"duration": 1.0, "texture": ExtResource("424_42jwc") }, { "duration": 1.0, -"texture": ExtResource("425_47xdr") -}, { -"duration": 1.0, "texture": ExtResource("426_j7yl5") }, { "duration": 1.0, -"texture": ExtResource("427_7utu1") -}, { -"duration": 1.0, "texture": ExtResource("428_itvbl") }, { "duration": 1.0, -"texture": ExtResource("429_1q8fq") -}, { -"duration": 1.0, "texture": ExtResource("430_5qcny") }, { "duration": 1.0, -"texture": ExtResource("431_1fkuv") -}, { -"duration": 1.0, "texture": ExtResource("432_7gq0s") }, { "duration": 1.0, -"texture": ExtResource("433_u2g1t") -}, { -"duration": 1.0, "texture": ExtResource("434_j611n") }, { "duration": 1.0, -"texture": ExtResource("435_1iael") -}, { -"duration": 1.0, "texture": ExtResource("436_armfy") }], "loop": true, @@ -2295,39 +1364,21 @@ animations = [{ "texture": ExtResource("438_cqepc") }, { "duration": 1.0, -"texture": ExtResource("439_djotj") -}, { -"duration": 1.0, "texture": ExtResource("440_pej03") }, { "duration": 1.0, -"texture": ExtResource("441_8qhd5") -}, { -"duration": 1.0, "texture": ExtResource("442_r5lkt") }, { "duration": 1.0, -"texture": ExtResource("443_3lece") -}, { -"duration": 1.0, "texture": ExtResource("444_ny2p1") }, { "duration": 1.0, -"texture": ExtResource("445_k0f2x") -}, { -"duration": 1.0, "texture": ExtResource("446_vtwy4") }, { "duration": 1.0, -"texture": ExtResource("447_7kv3k") -}, { -"duration": 1.0, "texture": ExtResource("448_4hgl1") }, { "duration": 1.0, -"texture": ExtResource("449_jpjbe") -}, { -"duration": 1.0, "texture": ExtResource("450_0q8vj") }, { "duration": 1.0, @@ -2337,15 +1388,9 @@ animations = [{ "texture": ExtResource("452_fdymn") }, { "duration": 1.0, -"texture": ExtResource("453_t08dx") -}, { -"duration": 1.0, "texture": ExtResource("454_mdjx6") }, { "duration": 1.0, -"texture": ExtResource("455_7okl3") -}, { -"duration": 1.0, "texture": ExtResource("456_ruc3g") }], "loop": true, @@ -2360,57 +1405,30 @@ animations = [{ "texture": ExtResource("458_3ddjs") }, { "duration": 1.0, -"texture": ExtResource("459_x6it6") -}, { -"duration": 1.0, "texture": ExtResource("460_6b7gh") }, { "duration": 1.0, -"texture": ExtResource("461_cvvib") -}, { -"duration": 1.0, "texture": ExtResource("462_6yyoj") }, { "duration": 1.0, -"texture": ExtResource("463_pkshe") -}, { -"duration": 1.0, "texture": ExtResource("464_pbc3r") }, { "duration": 1.0, -"texture": ExtResource("465_lr12j") -}, { -"duration": 1.0, "texture": ExtResource("466_pw1ip") }, { "duration": 1.0, -"texture": ExtResource("467_no4vd") -}, { -"duration": 1.0, "texture": ExtResource("468_08021") }, { "duration": 1.0, -"texture": ExtResource("469_ory5o") -}, { -"duration": 1.0, "texture": ExtResource("470_bmmei") }, { "duration": 1.0, -"texture": ExtResource("471_fi56f") -}, { -"duration": 1.0, "texture": ExtResource("472_wdxsr") }, { "duration": 1.0, -"texture": ExtResource("473_0rglf") -}, { -"duration": 1.0, "texture": ExtResource("474_tu801") }, { "duration": 1.0, -"texture": ExtResource("475_ivtia") -}, { -"duration": 1.0, "texture": ExtResource("476_g4jjd") }], "loop": true, @@ -2425,57 +1443,30 @@ animations = [{ "texture": ExtResource("478_5myrm") }, { "duration": 1.0, -"texture": ExtResource("479_t7bl3") -}, { -"duration": 1.0, "texture": ExtResource("480_wnay3") }, { "duration": 1.0, -"texture": ExtResource("481_1q611") -}, { -"duration": 1.0, "texture": ExtResource("482_wfdif") }, { "duration": 1.0, -"texture": ExtResource("483_x4ny3") -}, { -"duration": 1.0, "texture": ExtResource("484_32thn") }, { "duration": 1.0, -"texture": ExtResource("485_2xd7q") -}, { -"duration": 1.0, "texture": ExtResource("486_kobao") }, { "duration": 1.0, -"texture": ExtResource("487_aqei0") -}, { -"duration": 1.0, "texture": ExtResource("488_ygjj5") }, { "duration": 1.0, -"texture": ExtResource("489_ebusu") -}, { -"duration": 1.0, "texture": ExtResource("490_6603x") }, { "duration": 1.0, -"texture": ExtResource("491_1b1vm") -}, { -"duration": 1.0, "texture": ExtResource("492_0tmn6") }, { "duration": 1.0, -"texture": ExtResource("493_laqyq") -}, { -"duration": 1.0, "texture": ExtResource("494_6j13p") }, { "duration": 1.0, -"texture": ExtResource("495_45oh6") -}, { -"duration": 1.0, "texture": ExtResource("496_svyx0") }], "loop": true, @@ -2490,141 +1481,72 @@ animations = [{ "texture": ExtResource("498_yjt3v") }, { "duration": 1.0, -"texture": ExtResource("499_rpb3x") -}, { -"duration": 1.0, "texture": ExtResource("500_vsiwk") }, { "duration": 1.0, -"texture": ExtResource("501_0xl7o") -}, { -"duration": 1.0, "texture": ExtResource("502_vkc8f") }, { "duration": 1.0, -"texture": ExtResource("503_q88c4") -}, { -"duration": 1.0, "texture": ExtResource("504_i8wsp") }, { "duration": 1.0, -"texture": ExtResource("505_jswdb") -}, { -"duration": 1.0, "texture": ExtResource("506_3gngl") }, { "duration": 1.0, -"texture": ExtResource("507_4jn6c") -}, { -"duration": 1.0, "texture": ExtResource("508_33ok2") }, { "duration": 1.0, -"texture": ExtResource("509_cdril") -}, { -"duration": 1.0, "texture": ExtResource("510_iik0a") }, { "duration": 1.0, -"texture": ExtResource("511_m7t7h") -}, { -"duration": 1.0, "texture": ExtResource("512_ognpj") }, { "duration": 1.0, -"texture": ExtResource("513_b17kc") -}, { -"duration": 1.0, "texture": ExtResource("514_1uw6m") }, { "duration": 1.0, -"texture": ExtResource("515_3n8w1") -}, { -"duration": 1.0, "texture": ExtResource("516_b3h5k") }, { "duration": 1.0, -"texture": ExtResource("517_s5w14") -}, { -"duration": 1.0, "texture": ExtResource("518_jgj7y") }, { "duration": 1.0, -"texture": ExtResource("519_0ww3y") -}, { -"duration": 1.0, "texture": ExtResource("520_g7ywp") }, { "duration": 1.0, -"texture": ExtResource("521_176d2") -}, { -"duration": 1.0, "texture": ExtResource("522_iutes") }, { "duration": 1.0, -"texture": ExtResource("523_mv43l") -}, { -"duration": 1.0, "texture": ExtResource("524_kqwdc") }, { "duration": 1.0, -"texture": ExtResource("525_pjbfp") -}, { -"duration": 1.0, "texture": ExtResource("526_s12im") }, { "duration": 1.0, -"texture": ExtResource("527_m3twh") -}, { -"duration": 1.0, "texture": ExtResource("528_l6jhg") }, { "duration": 1.0, -"texture": ExtResource("529_wfhlo") -}, { -"duration": 1.0, "texture": ExtResource("530_qjcs6") }, { "duration": 1.0, -"texture": ExtResource("531_hawsb") -}, { -"duration": 1.0, "texture": ExtResource("532_2ko7a") }, { "duration": 1.0, -"texture": ExtResource("533_rcmwo") -}, { -"duration": 1.0, "texture": ExtResource("534_tn6m1") }, { "duration": 1.0, -"texture": ExtResource("535_ktdxm") -}, { -"duration": 1.0, "texture": ExtResource("536_k760p") }, { "duration": 1.0, -"texture": ExtResource("537_ghb0e") -}, { -"duration": 1.0, "texture": ExtResource("538_ffkgb") }, { "duration": 1.0, -"texture": ExtResource("539_qkrg3") -}, { -"duration": 1.0, "texture": ExtResource("540_00apb") }, { "duration": 1.0, -"texture": ExtResource("541_ebo8g") -}, { -"duration": 1.0, "texture": ExtResource("542_562cu") }, { "duration": 1.0, -"texture": ExtResource("543_ah3ul") -}, { -"duration": 1.0, "texture": ExtResource("544_203a3") }], "loop": true, @@ -2639,57 +1561,30 @@ animations = [{ "texture": ExtResource("546_i84pd") }, { "duration": 1.0, -"texture": ExtResource("547_r28y4") -}, { -"duration": 1.0, "texture": ExtResource("548_v4uwm") }, { "duration": 1.0, -"texture": ExtResource("549_wlukx") -}, { -"duration": 1.0, "texture": ExtResource("550_y5333") }, { "duration": 1.0, -"texture": ExtResource("551_rjbr8") -}, { -"duration": 1.0, "texture": ExtResource("552_sbj83") }, { "duration": 1.0, -"texture": ExtResource("553_a8tcf") -}, { -"duration": 1.0, "texture": ExtResource("554_7pxht") }, { "duration": 1.0, -"texture": ExtResource("555_ern7x") -}, { -"duration": 1.0, "texture": ExtResource("556_67q52") }, { "duration": 1.0, -"texture": ExtResource("557_mynrt") -}, { -"duration": 1.0, "texture": ExtResource("558_q5tla") }, { "duration": 1.0, -"texture": ExtResource("559_y5a67") -}, { -"duration": 1.0, "texture": ExtResource("560_h0jaa") }, { "duration": 1.0, -"texture": ExtResource("561_7dos6") -}, { -"duration": 1.0, "texture": ExtResource("562_0v72r") }, { "duration": 1.0, -"texture": ExtResource("563_1el36") -}, { -"duration": 1.0, "texture": ExtResource("564_8r86j") }], "loop": true, @@ -2704,57 +1599,30 @@ animations = [{ "texture": ExtResource("566_ei2yw") }, { "duration": 1.0, -"texture": ExtResource("567_xlxen") -}, { -"duration": 1.0, "texture": ExtResource("568_0475c") }, { "duration": 1.0, -"texture": ExtResource("569_a6rtw") -}, { -"duration": 1.0, "texture": ExtResource("570_vwcij") }, { "duration": 1.0, -"texture": ExtResource("571_p5500") -}, { -"duration": 1.0, "texture": ExtResource("572_2r4hx") }, { "duration": 1.0, -"texture": ExtResource("573_26tt0") -}, { -"duration": 1.0, "texture": ExtResource("574_my0kq") }, { "duration": 1.0, -"texture": ExtResource("575_rxqlw") -}, { -"duration": 1.0, "texture": ExtResource("576_pi3ln") }, { "duration": 1.0, -"texture": ExtResource("577_gxxpd") -}, { -"duration": 1.0, "texture": ExtResource("578_x5qma") }, { "duration": 1.0, -"texture": ExtResource("579_1c3al") -}, { -"duration": 1.0, "texture": ExtResource("580_7f7yj") }, { "duration": 1.0, -"texture": ExtResource("581_ehwxa") -}, { -"duration": 1.0, "texture": ExtResource("582_4h62b") }, { "duration": 1.0, -"texture": ExtResource("583_1hmje") -}, { -"duration": 1.0, "texture": ExtResource("584_vv7re") }], "loop": true, @@ -2769,57 +1637,30 @@ animations = [{ "texture": ExtResource("586_pmq4n") }, { "duration": 1.0, -"texture": ExtResource("587_g53rd") -}, { -"duration": 1.0, "texture": ExtResource("588_afimt") }, { "duration": 1.0, -"texture": ExtResource("589_1qnwy") -}, { -"duration": 1.0, "texture": ExtResource("590_cf7hp") }, { "duration": 1.0, -"texture": ExtResource("591_5bi84") -}, { -"duration": 1.0, "texture": ExtResource("592_73i6g") }, { "duration": 1.0, -"texture": ExtResource("593_7u500") -}, { -"duration": 1.0, "texture": ExtResource("594_ex0sg") }, { "duration": 1.0, -"texture": ExtResource("595_cokyk") -}, { -"duration": 1.0, "texture": ExtResource("596_gwcp1") }, { "duration": 1.0, -"texture": ExtResource("597_h1qcq") -}, { -"duration": 1.0, "texture": ExtResource("598_6vr1t") }, { "duration": 1.0, -"texture": ExtResource("599_j3t5q") -}, { -"duration": 1.0, "texture": ExtResource("600_0mubi") }, { "duration": 1.0, -"texture": ExtResource("601_3px4h") -}, { -"duration": 1.0, "texture": ExtResource("602_rf6e2") }, { "duration": 1.0, -"texture": ExtResource("603_vrgxu") -}, { -"duration": 1.0, "texture": ExtResource("604_v3yvu") }], "loop": true, @@ -2834,141 +1675,72 @@ animations = [{ "texture": ExtResource("606_0gmsg") }, { "duration": 1.0, -"texture": ExtResource("607_w55e0") -}, { -"duration": 1.0, "texture": ExtResource("608_m7alr") }, { "duration": 1.0, -"texture": ExtResource("609_ex8wj") -}, { -"duration": 1.0, "texture": ExtResource("610_7eb8p") }, { "duration": 1.0, -"texture": ExtResource("611_g612e") -}, { -"duration": 1.0, "texture": ExtResource("612_kugcx") }, { "duration": 1.0, -"texture": ExtResource("613_5wcc4") -}, { -"duration": 1.0, "texture": ExtResource("614_dnd3n") }, { "duration": 1.0, -"texture": ExtResource("615_jh127") -}, { -"duration": 1.0, "texture": ExtResource("616_exnt1") }, { "duration": 1.0, -"texture": ExtResource("617_l11ns") -}, { -"duration": 1.0, "texture": ExtResource("618_sws0p") }, { "duration": 1.0, -"texture": ExtResource("619_mpliu") -}, { -"duration": 1.0, "texture": ExtResource("620_ikq1g") }, { "duration": 1.0, -"texture": ExtResource("621_2l6la") -}, { -"duration": 1.0, "texture": ExtResource("622_kum8w") }, { "duration": 1.0, -"texture": ExtResource("623_puki8") -}, { -"duration": 1.0, "texture": ExtResource("624_ax3c1") }, { "duration": 1.0, -"texture": ExtResource("625_k7myn") -}, { -"duration": 1.0, "texture": ExtResource("626_ehncs") }, { "duration": 1.0, -"texture": ExtResource("627_gw36k") -}, { -"duration": 1.0, "texture": ExtResource("628_tlvlq") }, { "duration": 1.0, -"texture": ExtResource("629_sh8q0") -}, { -"duration": 1.0, "texture": ExtResource("630_3p107") }, { "duration": 1.0, -"texture": ExtResource("631_s48mk") -}, { -"duration": 1.0, "texture": ExtResource("632_k2em2") }, { "duration": 1.0, -"texture": ExtResource("633_cgisl") -}, { -"duration": 1.0, "texture": ExtResource("634_8gbgf") }, { "duration": 1.0, -"texture": ExtResource("635_af50v") -}, { -"duration": 1.0, "texture": ExtResource("636_0o0q8") }, { "duration": 1.0, -"texture": ExtResource("637_gcqp8") -}, { -"duration": 1.0, "texture": ExtResource("638_x8puo") }, { "duration": 1.0, -"texture": ExtResource("639_2kr0c") -}, { -"duration": 1.0, "texture": ExtResource("640_gloiw") }, { "duration": 1.0, -"texture": ExtResource("641_gb3ia") -}, { -"duration": 1.0, "texture": ExtResource("642_co1v5") }, { "duration": 1.0, -"texture": ExtResource("643_u4032") -}, { -"duration": 1.0, "texture": ExtResource("644_ygw38") }, { "duration": 1.0, -"texture": ExtResource("645_dufr2") -}, { -"duration": 1.0, "texture": ExtResource("646_k778w") }, { "duration": 1.0, -"texture": ExtResource("647_8d5nc") -}, { -"duration": 1.0, "texture": ExtResource("648_ylj23") }, { "duration": 1.0, -"texture": ExtResource("649_y5gfu") -}, { -"duration": 1.0, "texture": ExtResource("650_2rjx7") }, { "duration": 1.0, -"texture": ExtResource("651_hi44u") -}, { -"duration": 1.0, "texture": ExtResource("652_dyko2") }], "loop": true, @@ -2983,57 +1755,30 @@ animations = [{ "texture": ExtResource("654_1th1q") }, { "duration": 1.0, -"texture": ExtResource("655_kelvf") -}, { -"duration": 1.0, "texture": ExtResource("656_c5w6d") }, { "duration": 1.0, -"texture": ExtResource("657_i3dtq") -}, { -"duration": 1.0, "texture": ExtResource("658_ipgfv") }, { "duration": 1.0, -"texture": ExtResource("659_544fe") -}, { -"duration": 1.0, "texture": ExtResource("660_mi1bi") }, { "duration": 1.0, -"texture": ExtResource("661_m1gnf") -}, { -"duration": 1.0, "texture": ExtResource("662_8pix2") }, { "duration": 1.0, -"texture": ExtResource("663_d8kbx") -}, { -"duration": 1.0, "texture": ExtResource("664_o457m") }, { "duration": 1.0, -"texture": ExtResource("665_aui43") -}, { -"duration": 1.0, "texture": ExtResource("666_dv0yi") }, { "duration": 1.0, -"texture": ExtResource("667_a81gx") -}, { -"duration": 1.0, "texture": ExtResource("668_q4n42") }, { "duration": 1.0, -"texture": ExtResource("669_ri708") -}, { -"duration": 1.0, "texture": ExtResource("670_3cjbo") }, { "duration": 1.0, -"texture": ExtResource("671_32duw") -}, { -"duration": 1.0, "texture": ExtResource("672_oqfoc") }], "loop": true, @@ -3048,57 +1793,30 @@ animations = [{ "texture": ExtResource("674_mpxqh") }, { "duration": 1.0, -"texture": ExtResource("675_7rldl") -}, { -"duration": 1.0, "texture": ExtResource("676_sotra") }, { "duration": 1.0, -"texture": ExtResource("677_ph4yb") -}, { -"duration": 1.0, "texture": ExtResource("678_ilgf3") }, { "duration": 1.0, -"texture": ExtResource("679_cohpj") -}, { -"duration": 1.0, "texture": ExtResource("680_y1eex") }, { "duration": 1.0, -"texture": ExtResource("681_w54y2") -}, { -"duration": 1.0, "texture": ExtResource("682_mqity") }, { "duration": 1.0, -"texture": ExtResource("683_kgkc3") -}, { -"duration": 1.0, "texture": ExtResource("684_wmoa1") }, { "duration": 1.0, -"texture": ExtResource("685_r72u6") -}, { -"duration": 1.0, "texture": ExtResource("686_jp80r") }, { "duration": 1.0, -"texture": ExtResource("687_7ldbi") -}, { -"duration": 1.0, "texture": ExtResource("688_x7pqr") }, { "duration": 1.0, -"texture": ExtResource("689_qlvst") -}, { -"duration": 1.0, "texture": ExtResource("690_5c5t0") }, { "duration": 1.0, -"texture": ExtResource("691_43hn6") -}, { -"duration": 1.0, "texture": ExtResource("692_5ip34") }], "loop": true, @@ -3160,141 +1878,72 @@ animations = [{ "texture": ExtResource("708_yk13s") }, { "duration": 1.0, -"texture": ExtResource("709_yi4ii") -}, { -"duration": 1.0, "texture": ExtResource("710_f70pr") }, { "duration": 1.0, -"texture": ExtResource("711_japqf") -}, { -"duration": 1.0, "texture": ExtResource("712_pe5na") }, { "duration": 1.0, -"texture": ExtResource("713_eelxk") -}, { -"duration": 1.0, "texture": ExtResource("714_cslcr") }, { "duration": 1.0, -"texture": ExtResource("715_sp0mr") -}, { -"duration": 1.0, "texture": ExtResource("716_r5qrg") }, { "duration": 1.0, -"texture": ExtResource("717_kux6w") -}, { -"duration": 1.0, "texture": ExtResource("718_r28gn") }, { "duration": 1.0, -"texture": ExtResource("719_tdrjd") -}, { -"duration": 1.0, "texture": ExtResource("720_57f4q") }, { "duration": 1.0, -"texture": ExtResource("721_pg0yo") -}, { -"duration": 1.0, "texture": ExtResource("722_1jjes") }, { "duration": 1.0, -"texture": ExtResource("723_85raq") -}, { -"duration": 1.0, "texture": ExtResource("724_g6g5u") }, { "duration": 1.0, -"texture": ExtResource("725_c6woj") -}, { -"duration": 1.0, "texture": ExtResource("726_0l6t0") }, { "duration": 1.0, -"texture": ExtResource("727_tm5vf") -}, { -"duration": 1.0, "texture": ExtResource("728_o8uff") }, { "duration": 1.0, -"texture": ExtResource("729_uhvkp") -}, { -"duration": 1.0, "texture": ExtResource("730_wwtbo") }, { "duration": 1.0, -"texture": ExtResource("731_eeefe") -}, { -"duration": 1.0, "texture": ExtResource("732_n5gfh") }, { "duration": 1.0, -"texture": ExtResource("733_uu8wk") -}, { -"duration": 1.0, "texture": ExtResource("734_8ajxp") }, { "duration": 1.0, -"texture": ExtResource("735_ymjju") -}, { -"duration": 1.0, "texture": ExtResource("736_xhy85") }, { "duration": 1.0, -"texture": ExtResource("737_smkc4") -}, { -"duration": 1.0, "texture": ExtResource("738_5a14m") }, { "duration": 1.0, -"texture": ExtResource("739_6prg8") -}, { -"duration": 1.0, "texture": ExtResource("740_05soa") }, { "duration": 1.0, -"texture": ExtResource("741_ae4be") -}, { -"duration": 1.0, "texture": ExtResource("742_oupgc") }, { "duration": 1.0, -"texture": ExtResource("743_k6jb1") -}, { -"duration": 1.0, "texture": ExtResource("744_0de8g") }, { "duration": 1.0, -"texture": ExtResource("745_6gbkr") -}, { -"duration": 1.0, "texture": ExtResource("746_xpcp8") }, { "duration": 1.0, -"texture": ExtResource("747_mqma7") -}, { -"duration": 1.0, "texture": ExtResource("748_8au1c") }, { "duration": 1.0, -"texture": ExtResource("749_pqp20") -}, { -"duration": 1.0, "texture": ExtResource("750_pa1th") }, { "duration": 1.0, -"texture": ExtResource("751_j5fds") -}, { -"duration": 1.0, "texture": ExtResource("752_a20ik") }, { "duration": 1.0, -"texture": ExtResource("753_kyl1b") -}, { -"duration": 1.0, "texture": ExtResource("754_kcgp3") }], "loop": true, @@ -3309,57 +1958,30 @@ animations = [{ "texture": ExtResource("756_w17j5") }, { "duration": 1.0, -"texture": ExtResource("757_ms0qb") -}, { -"duration": 1.0, "texture": ExtResource("758_bobpp") }, { "duration": 1.0, -"texture": ExtResource("759_dy6pl") -}, { -"duration": 1.0, "texture": ExtResource("760_hjc06") }, { "duration": 1.0, -"texture": ExtResource("761_yo551") -}, { -"duration": 1.0, "texture": ExtResource("762_cqmns") }, { "duration": 1.0, -"texture": ExtResource("763_kqdld") -}, { -"duration": 1.0, "texture": ExtResource("764_6ag32") }, { "duration": 1.0, -"texture": ExtResource("765_5gc0j") -}, { -"duration": 1.0, "texture": ExtResource("766_sdkoa") }, { "duration": 1.0, -"texture": ExtResource("767_j4c88") -}, { -"duration": 1.0, "texture": ExtResource("768_yxmsl") }, { "duration": 1.0, -"texture": ExtResource("769_v5kb6") -}, { -"duration": 1.0, "texture": ExtResource("770_hc1bq") }, { "duration": 1.0, -"texture": ExtResource("771_emlcs") -}, { -"duration": 1.0, "texture": ExtResource("772_kapjc") }, { "duration": 1.0, -"texture": ExtResource("773_dm2lr") -}, { -"duration": 1.0, "texture": ExtResource("774_w1ahn") }], "loop": true, @@ -3374,57 +1996,30 @@ animations = [{ "texture": ExtResource("776_6o0aq") }, { "duration": 1.0, -"texture": ExtResource("777_gtunp") -}, { -"duration": 1.0, "texture": ExtResource("778_vh3bl") }, { "duration": 1.0, -"texture": ExtResource("779_1bxhc") -}, { -"duration": 1.0, "texture": ExtResource("780_48qrn") }, { "duration": 1.0, -"texture": ExtResource("781_pjm01") -}, { -"duration": 1.0, "texture": ExtResource("782_wvq0m") }, { "duration": 1.0, -"texture": ExtResource("783_g30x4") -}, { -"duration": 1.0, "texture": ExtResource("784_sxoog") }, { "duration": 1.0, -"texture": ExtResource("785_0gwlh") -}, { -"duration": 1.0, "texture": ExtResource("786_5xl80") }, { "duration": 1.0, -"texture": ExtResource("787_ausc1") -}, { -"duration": 1.0, "texture": ExtResource("788_gihw5") }, { "duration": 1.0, -"texture": ExtResource("789_7mbns") -}, { -"duration": 1.0, "texture": ExtResource("790_7uqx2") }, { "duration": 1.0, -"texture": ExtResource("791_m2fac") -}, { -"duration": 1.0, "texture": ExtResource("792_uxh10") }, { "duration": 1.0, -"texture": ExtResource("793_jtwhk") -}, { -"duration": 1.0, "texture": ExtResource("794_lp5f3") }], "loop": true, @@ -3439,62 +2034,35 @@ animations = [{ "texture": ExtResource("796_cl6x5") }, { "duration": 1.0, -"texture": ExtResource("797_ngd12") -}, { -"duration": 1.0, "texture": ExtResource("798_26msc") }, { "duration": 1.0, -"texture": ExtResource("799_grxnc") -}, { -"duration": 1.0, "texture": ExtResource("800_frlj0") }, { "duration": 1.0, -"texture": ExtResource("801_2e27j") -}, { -"duration": 1.0, "texture": ExtResource("802_r3gkv") }, { "duration": 1.0, -"texture": ExtResource("803_paxjf") -}, { -"duration": 1.0, "texture": ExtResource("804_g2mlb") }, { "duration": 1.0, -"texture": ExtResource("805_jia7e") -}, { -"duration": 1.0, "texture": ExtResource("806_k1kh0") }, { "duration": 1.0, -"texture": ExtResource("807_awkuw") -}, { -"duration": 1.0, "texture": ExtResource("808_ud6ks") }, { "duration": 1.0, -"texture": ExtResource("809_3g83n") -}, { -"duration": 1.0, "texture": ExtResource("810_224qh") }, { "duration": 1.0, -"texture": ExtResource("811_phn7o") -}, { -"duration": 1.0, "texture": ExtResource("812_sf8kv") }, { "duration": 1.0, -"texture": ExtResource("813_ekwc5") -}, { -"duration": 1.0, "texture": ExtResource("814_3uq4g") }], "loop": true, "name": &"side walking wateringcan", -"speed": 15.0 +"speed": 11.0 }] [node name="Player2d" type="Node2D" node_paths=PackedStringArray("_farmingControls", "_player2d")] @@ -3503,13 +2071,14 @@ script = ExtResource("1_yd5ep") _farmingControls = NodePath("FarmingControls") _player2d = NodePath("CharacterBody2D") -[node name="CharacterBody2D" type="CharacterBody2D" parent="." node_paths=PackedStringArray("_sprite") groups=["PlantGrowing"]] +[node name="CharacterBody2D" type="CharacterBody2D" parent="." node_paths=PackedStringArray("_sprite", "_wateringParticles") groups=["PlantGrowing"]] position = Vector2(0, 374) collision_layer = 4 collision_mask = 3 script = ExtResource("2_1vqmv") _speed = 1500.0 _sprite = NodePath("visuals/Animated Sprites") +_wateringParticles = NodePath("../pouring water vfx") [node name="CollisionShape2D" type="CollisionShape2D" parent="CharacterBody2D"] z_index = 1 @@ -3524,8 +2093,7 @@ position = Vector2(0, -374) [node name="Animated Sprites" type="AnimatedSprite2D" parent="CharacterBody2D/visuals"] position = Vector2(0, 450) sprite_frames = SubResource("SpriteFrames_4yiyq") -animation = &"diagonal farming" -frame_progress = 0.503028 +animation = &"front walking backpack" offset = Vector2(0, -450) [node name="Hoe" type="Sprite2D" parent="CharacterBody2D/visuals"] @@ -3558,17 +2126,83 @@ region_rect = Rect2(-1, 1128, 417, 299) position = Vector2(26, -469) zoom = Vector2(0.3, 0.3) -[node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_camera")] +[node name="WateringCanUI" type="Node2D" parent="CharacterBody2D" node_paths=PackedStringArray("_stages")] +position = Vector2(0, -929) +scale = Vector2(2, 2) +script = ExtResource("467_j4m0f") +_stages = [NodePath("6"), NodePath("5"), NodePath("4"), NodePath("3"), NodePath("2"), NodePath("1")] + +[node name="1" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(1, 0) +scale = Vector2(1.8, 1.8) +texture = ExtResource("468_f6xmn") + +[node name="2" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(2, 2) +scale = Vector2(1.6, 1.6) +texture = ExtResource("469_nxglm") + +[node name="3" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(3, 5) +scale = Vector2(1.4, 1.4) +texture = ExtResource("470_8fyd7") + +[node name="4" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(3, 7) +scale = Vector2(1.2, 1.2) +texture = ExtResource("471_dnm27") + +[node name="5" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(2, 7) +scale = Vector2(1.1, 1.1) +texture = ExtResource("472_e04c3") + +[node name="6" type="Sprite2D" parent="CharacterBody2D/WateringCanUI"] +visible = false +position = Vector2(3, 12) +texture = ExtResource("473_g32y8") + +[node name="FarmingControls" type="Node2D" parent="." node_paths=PackedStringArray("_movingPlayer", "_camera", "_wateringParticles")] script = ExtResource("817_6nrw3") _fieldPrefab = ExtResource("818_16w6h") _movingPlayer = NodePath("../CharacterBody2D") _camera = NodePath("../CharacterBody2D/Camera2D") +_wateringParticles = NodePath("../pouring water vfx") +_wateringCanParticlesVerticalOffset = -100.0 -[node name="Node2D" type="Node2D" parent="."] +[node name="dialogic toggle" type="Node2D" parent="."] position = Vector2(0, 374) script = ExtResource("819_4na52") +[node name="pouring water vfx" type="CPUParticles2D" parent="."] +position = Vector2(-652, -599) +rotation = -0.333807 +emitting = false +amount = 20 +texture = ExtResource("473_g32y8") +lifetime = 0.5 +randomness = 1.0 +local_coords = true +draw_order = 1 +emission_shape = 2 +emission_sphere_radius = 128.0 +linear_accel_min = 44.07 +linear_accel_max = 78.81 +scale_amount_min = 0.4 +scale_amount_max = 0.8 +color = Color(0.400601, 0.62444, 0.791217, 1) +hue_variation_max = 0.4 + +[connection signal="FilledWateringCan" from="." to="CharacterBody2D/WateringCanUI" method="Refill"] +[connection signal="InventorySelectionChanged" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"] [connection signal="PickedUpTool" from="." to="CharacterBody2D" method="ActivateTool"] +[connection signal="PickedUpTool" from="." to="CharacterBody2D/WateringCanUI" method="IsWateringCanActive"] [connection signal="WateringField" from="FarmingControls" to="CharacterBody2D" method="PlayWateringAnimation"] -[connection signal="timelineEnded" from="Node2D" to="." method="EnableMovement"] -[connection signal="timelineStarted" from="Node2D" to="." method="DisableMovement"] +[connection signal="WateringField" from="FarmingControls" to="CharacterBody2D/WateringCanUI" method="Water"] +[connection signal="timelineEnded" from="dialogic toggle" to="." method="EnableMovement"] +[connection signal="timelineStarted" from="dialogic toggle" to="." method="DisableMovement"] diff --git a/prefabs/characters/Yeli.tscn b/prefabs/characters/Yeli.tscn index f164e7a..1bb8b72 100644 --- a/prefabs/characters/Yeli.tscn +++ b/prefabs/characters/Yeli.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=47 format=3 uid="uid://dfvgp1my5rydh"] +[gd_scene load_steps=48 format=3 uid="uid://dfvgp1my5rydh"] [ext_resource type="Texture2D" uid="uid://c34012j5ukiuf" path="res://art/animation/Yeli2D/F01-Yeli_Idle/0001.png" id="1_03m0b"] [ext_resource type="Script" uid="uid://d2486x6upmwqq" path="res://scripts/GdScript/dialogic_starter.gd" id="1_at1n1"] @@ -182,10 +182,13 @@ animations = [{ "speed": 15.0 }] +[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_aqu1t"] +radius = 202.0 +height = 404.0 + [node name="Yeli" type="Node2D"] z_index = 1 y_sort_enabled = true -position = Vector2(0, 322) script = ExtResource("1_at1n1") [node name="InteractionArea" parent="." instance=ExtResource("42_ahrat")] @@ -219,6 +222,12 @@ offset = Vector2(0, -450) [node name="DialogicToggle" type="Node2D" parent="."] script = ExtResource("44_aqu1t") +[node name="AnimatableBody2D" type="AnimatableBody2D" parent="."] +position = Vector2(0, -172) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="AnimatableBody2D"] +shape = SubResource("CapsuleShape2D_aqu1t") + [connection signal="Interacted" from="InteractionArea" to="TalkingControl" method="ToggleTalking"] [connection signal="Talking" from="TalkingControl" to="." method="open"] [connection signal="timelineEnded" from="DialogicToggle" to="TalkingControl" method="ToggleTalking"] diff --git a/prefabs/interactions/generic_item_on_ground_2d.tscn b/prefabs/interactions/generic_item_on_ground_2d.tscn index 249441c..2579b11 100644 --- a/prefabs/interactions/generic_item_on_ground_2d.tscn +++ b/prefabs/interactions/generic_item_on_ground_2d.tscn @@ -49,7 +49,6 @@ autowrap_mode = 3 shape = SubResource("CircleShape2D_tlhp6") [node name="Label" parent="InteractionArea2" index="1"] -visible = true z_index = 5 offset_left = -68.0 offset_top = -111.0 diff --git a/project.godot b/project.godot index 9f11baa..ec9601f 100644 --- a/project.godot +++ b/project.godot @@ -13,14 +13,20 @@ config_version=5 config/name="Babushka" run/main_scene="uid://bopv10dqm1knc" config/features=PackedStringArray("4.4", "C#", "Forward Plus") +run/max_fps=120 boot_splash/fullsize=false boot_splash/image="uid://utam4axkvutc" config/icon="uid://b2smanpdo1y5e" +[audio] + +buses/default_bus_layout="uid://b6dwkmkyb0axk" + [autoload] Dialogic="*res://addons/dialogic/Core/DialogicGameHandler.gd" InventoryManager="*res://scripts/CSharp/Common/Inventory/InventoryManager.cs" +Signal_Debugger="*res://addons/SignalVisualizer/Debugger/SignalDebugger.gd" [dialogic] @@ -93,7 +99,7 @@ movie_writer/movie_file="/home/kaddi/Documents/Repos/Godot/Babushka/_clips/clip. [editor_plugins] -enabled=PackedStringArray("res://addons/anthonyec.camera_preview/plugin.cfg", "res://addons/dialogic/plugin.cfg") +enabled=PackedStringArray("res://addons/SignalVisualizer/plugin.cfg", "res://addons/anthonyec.camera_preview/plugin.cfg", "res://addons/dialogic/plugin.cfg") [file_customization] @@ -182,6 +188,11 @@ item={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":71,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } +ui_inventory_close={ +"deadzone": 0.2, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} [internationalization] diff --git a/scenes/Babushka_scene_farm_outside_2d.tscn b/scenes/Babushka_scene_farm_outside_2d.tscn index 2588aea..bfeb3e0 100644 --- a/scenes/Babushka_scene_farm_outside_2d.tscn +++ b/scenes/Babushka_scene_farm_outside_2d.tscn @@ -1,8 +1,8 @@ -[gd_scene load_steps=69 format=3 uid="uid://gigb28qk8t12"] +[gd_scene load_steps=79 format=3 uid="uid://gigb28qk8t12"] [ext_resource type="PackedScene" uid="uid://c25udixd5m6l0" path="res://prefabs/characters/Player2D.tscn" id="1_7wfwe"] [ext_resource type="Texture2D" uid="uid://8sr11ex30n0m" path="res://art/mockups/Kenney_Backgrounds/Samples/uncolored_hills.png" id="2_7b2ri"] -[ext_resource type="Texture2D" uid="uid://c7f3t65jskd6v" path="res://art/mockups/house_prototype.png" id="2_lhtpe"] +[ext_resource type="PackedScene" uid="uid://bm21nqepnwaik" path="res://scenes/IndoorTest2.tscn" id="2_taxvr"] [ext_resource type="Texture2D" uid="uid://be1nofeo7an0" path="res://art/mockups/Kenney_Backgrounds/PNG/cloud2.png" id="3_r34wi"] [ext_resource type="Texture2D" uid="uid://o6vnf7n7qp8o" path="res://art/mockups/Kenney_Backgrounds/PNG/cloud6.png" id="4_xh22q"] [ext_resource type="Texture2D" uid="uid://cc0o84q5u437k" path="res://art/mockups/Kenney_Backgrounds/PNG/cloud7.png" id="5_k3wpj"] @@ -37,12 +37,19 @@ [ext_resource type="Resource" uid="uid://datee0flk1e84" path="res://resources/items/scythe.tres" id="29_wtdui"] [ext_resource type="PackedScene" uid="uid://cgjc4wurbgimy" path="res://prefabs/UI/Inventory/Inventory.tscn" id="32_2nee2"] [ext_resource type="Script" uid="uid://cssdu8viimwm6" path="res://scripts/CSharp/Common/SceneTransition.cs" id="34_e5b7x"] -[ext_resource type="PackedScene" uid="uid://bm21nqepnwaik" path="res://scenes/IndoorTest2.tscn" id="35_taxvr"] +[ext_resource type="Texture2D" uid="uid://65e44yde224q" path="res://art/farm/Babushka_house_01.png" id="36_e5b7x"] [ext_resource type="AudioStream" uid="uid://cfqg50am0swb7" path="res://audio/Music/Farming_90BPM_69Bars_Loop.wav" id="37_8ey8m"] [ext_resource type="AudioStream" uid="uid://dku1rq5cocisg" path="res://audio/Music/Farming_90BPM_69Bars.wav" id="37_di1ed"] +[ext_resource type="Shader" uid="uid://braevmqauoek7" path="res://shader/swaying_plant.gdshader" id="37_taxvr"] [ext_resource type="AudioStream" uid="uid://fsiypqhql67w" path="res://audio/sfx/Farming/SFX_GettingWater_01.wav" id="39_di1ed"] [ext_resource type="AudioStream" uid="uid://foyw26hq1qp5" path="res://audio/sfx/Farming/SFX_GettingWater_02.wav" id="40_ceriq"] [ext_resource type="Script" uid="uid://cfnrd5k1k0gxw" path="res://scripts/CSharp/Common/AudioPlayer.cs" id="40_w3jkj"] +[ext_resource type="Script" uid="uid://clxb3n668oud3" path="res://scripts/CSharp/Common/Audio/AudioDebugger.cs" id="42_1nkjm"] +[ext_resource type="AudioStream" uid="uid://vcftvrpi6c7k" path="res://audio/sfx/Farming/SFX_Harke_03_Solo.wav" id="42_wtw65"] +[ext_resource type="AudioStream" uid="uid://bxh5m04vdo0sr" path="res://audio/sfx/Farming/SFX_Harke_04_Solo.wav" id="43_1nkjm"] +[ext_resource type="AudioStream" uid="uid://dapsknn486aee" path="res://audio/sfx/Farming/SFX_WateringPlants_01.wav" id="45_lbk0f"] +[ext_resource type="AudioStream" uid="uid://dnyne8wov50so" path="res://audio/sfx/Farming/SFX_WateringPlants_02.wav" id="46_2rjny"] +[ext_resource type="AudioStream" uid="uid://c43a6x43jkikl" path="res://audio/sfx/Farming/SFX_GettingWater_Well_01_Reverb.wav" id="49_d77e7"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_wtdui"] shader = ExtResource("13_7p0hq") @@ -77,9 +84,13 @@ shader_parameter/noise = SubResource("NoiseTexture2D_d53cn") [sub_resource type="Gradient" id="Gradient_eryax"] offsets = PackedFloat32Array(0, 0.743902, 1) -colors = PackedColorArray(0.315758, 0.221537, 0.271709, 1, 0.443137, 0.4, 0.360784, 1, 0.686275, 0.556863, 0.47451, 1) +colors = PackedColorArray(0.22, 0.1078, 0.16764, 1, 0.443137, 0.4, 0.360784, 1, 0.6, 0.4853, 0.414, 1) [sub_resource type="FastNoiseLite" id="FastNoiseLite_wgikv"] +frequency = 0.0296 +fractal_octaves = 7 +fractal_gain = 0.795 +domain_warp_enabled = true [sub_resource type="NoiseTexture2D" id="NoiseTexture2D_e5alv"] seamless = true @@ -113,14 +124,14 @@ shader_parameter/hue_shift = 0.0 shader_parameter/saturation_mult = 1.0 shader_parameter/value_mult = 1.0 shader_parameter/brightness_add = 0.0 -shader_parameter/contrast_mult = 1.183 +shader_parameter/contrast_mult = 1.128 [sub_resource type="RectangleShape2D" id="RectangleShape2D_0sfl7"] -size = Vector2(728, 368) +size = Vector2(1041, 368) [sub_resource type="CircleShape2D" id="CircleShape2D_p6n74"] resource_local_to_scene = true -radius = 600.0 +radius = 371.058 [sub_resource type="CircleShape2D" id="CircleShape2D_2nee2"] resource_local_to_scene = true @@ -131,12 +142,18 @@ resource_local_to_scene = true radius = 300.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_lhtpe"] -shader = ExtResource("13_7p0hq") -shader_parameter/hue_shift = 0.0 -shader_parameter/saturation_mult = 1.0 -shader_parameter/value_mult = 1.068 -shader_parameter/brightness_add = 0.0 -shader_parameter/contrast_mult = 0.913 + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_bcdgk"] +shader = ExtResource("37_taxvr") +shader_parameter/speed = 1.0 +shader_parameter/minStrength = 0.05 +shader_parameter/maxStrength = 0.154 +shader_parameter/strengthScale = 100.0 +shader_parameter/interval = 3.5 +shader_parameter/detail = 2.095 +shader_parameter/distortion = 1.0 +shader_parameter/heightOffset = 0.0 +shader_parameter/offset = 1.0 [sub_resource type="RectangleShape2D" id="RectangleShape2D_2nee2"] size = Vector2(5905, 1176) @@ -147,18 +164,28 @@ size = Vector2(7340, 1192) [sub_resource type="AudioStreamPlaylist" id="AudioStreamPlaylist_ceriq"] loop = false -stream_count = 2 +stream_count = 1 stream_0 = ExtResource("37_di1ed") -stream_1 = ExtResource("37_8ey8m") [sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_ceriq"] streams_count = 2 +stream_0/stream = ExtResource("42_wtw65") +stream_1/stream = ExtResource("43_1nkjm") + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_p4qqi"] +streams_count = 2 +stream_0/stream = ExtResource("45_lbk0f") +stream_1/stream = ExtResource("46_2rjny") + +[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_618my"] +streams_count = 3 stream_0/stream = ExtResource("39_di1ed") stream_1/stream = ExtResource("40_ceriq") +stream_2/stream = ExtResource("49_d77e7") [node name="BabushkaSceneFarmOutside2d" type="Node2D"] script = ExtResource("34_e5b7x") -_sceneToLoad = ExtResource("35_taxvr") +_sceneToLoad = ExtResource("2_taxvr") [node name="ParallaxBackground" type="ParallaxBackground" parent="."] @@ -226,7 +253,7 @@ offset = Vector2(0, -100) [node name="background layer 3" type="ParallaxLayer" parent="ParallaxBackground"] position = Vector2(18, -713) motion_scale = Vector2(0.25, 0.25) -motion_mirroring = Vector2(7200, 0) +motion_mirroring = Vector2(5424, 0) [node name="Kenney assets" type="Node2D" parent="ParallaxBackground/background layer 3"] position = Vector2(0, -39) @@ -323,13 +350,13 @@ texture = ExtResource("12_6b2nr") [node name="JelenaMockupBg01" type="Sprite2D" parent="ParallaxBackground/background layer 3"] visible = false position = Vector2(3552, 1296) -scale = Vector2(1.7404, 1.77563) +scale = Vector2(3, 3.062) texture = ExtResource("11_vbdb2") [node name="background layer 4" type="ParallaxLayer" parent="ParallaxBackground"] position = Vector2(0, -82) motion_scale = Vector2(0.5, 0.5) -motion_mirroring = Vector2(10500, 0) +motion_mirroring = Vector2(10480, 0) [node name="Kenney Assets" type="Node2D" parent="ParallaxBackground/background layer 4"] visible = false @@ -447,13 +474,13 @@ texture = ExtResource("14_d53cn") [node name="JelenaMockupBg02" type="Sprite2D" parent="ParallaxBackground/background layer 4"] material = SubResource("ShaderMaterial_wtdui") position = Vector2(2668, 726) -scale = Vector2(1.3, 1.3) +scale = Vector2(2.75, 2.75) texture = ExtResource("13_0qu0h") [node name="JelenaMockupBg03" type="Sprite2D" parent="ParallaxBackground/background layer 4"] material = SubResource("ShaderMaterial_wtdui") -position = Vector2(7965, 728) -scale = Vector2(1.3, 1.3) +position = Vector2(7923, 727) +scale = Vector2(2.75, 2.75) texture = ExtResource("13_0qu0h") [node name="back back trees layer" type="ParallaxLayer" parent="ParallaxBackground"] @@ -579,7 +606,7 @@ position = Vector2(1791.5, 1448) texture = ExtResource("14_mrwmr") flip_h = true region_enabled = true -region_rect = Rect2(149, 15, 464, 478) +region_rect = Rect2(130, 0, 201, 278) [node name="bush3" type="Sprite2D" parent="ParallaxBackground/back back trees layer"] material = SubResource("ShaderMaterial_8ey8m") @@ -587,7 +614,7 @@ position = Vector2(1255.5, 1392) texture = ExtResource("14_mrwmr") flip_h = true region_enabled = true -region_rect = Rect2(-6, 996, 467, 429) +region_rect = Rect2(0, 604, 248, 228) [node name="bush4" type="Sprite2D" parent="ParallaxBackground/back back trees layer"] material = SubResource("ShaderMaterial_8ey8m") @@ -595,14 +622,14 @@ position = Vector2(5471.5, 1432) texture = ExtResource("14_mrwmr") flip_h = true region_enabled = true -region_rect = Rect2(2319, 1079, 353, 327) +region_rect = Rect2(1837, 651, 139, 180) [node name="bush5" type="Sprite2D" parent="ParallaxBackground/back back trees layer"] material = SubResource("ShaderMaterial_8ey8m") position = Vector2(5007.5, 1312) texture = ExtResource("14_mrwmr") region_enabled = true -region_rect = Rect2(2489, 707, 269, 224) +region_rect = Rect2(1368, 673, 186, 136) [node name="bush6" type="Sprite2D" parent="ParallaxBackground/back back trees layer"] material = SubResource("ShaderMaterial_8ey8m") @@ -611,7 +638,7 @@ scale = Vector2(0.575, 0.575) texture = ExtResource("14_mrwmr") flip_h = true region_enabled = true -region_rect = Rect2(605, 877, 597, 537) +region_rect = Rect2(358, 523, 345, 289) [node name="back tree bois layer 5" type="ParallaxLayer" parent="ParallaxBackground"] visible = false @@ -832,19 +859,21 @@ material = SubResource("ShaderMaterial_2vojv") position = Vector2(7237, 3307) texture = ExtResource("21_ualyd") offset = Vector2(0, -800) +region_enabled = true +region_rect = Rect2(0, 0, 1504, 1686) [node name="StaticBody2D" type="StaticBody2D" parent="YSorted/Brünnen"] collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="YSorted/Brünnen/StaticBody2D"] -position = Vector2(116, -224) +position = Vector2(145.5, -224) shape = SubResource("RectangleShape2D_0sfl7") [node name="InteractionArea" parent="YSorted/Brünnen" instance=ExtResource("27_klb81")] _id = 1 [node name="CollisionShape3D" parent="YSorted/Brünnen/InteractionArea/Area2D" index="0"] -position = Vector2(80, -368) +position = Vector2(146, -130) shape = SubResource("CircleShape2D_p6n74") [node name="HoeGenericPickup" parent="YSorted" instance=ExtResource("25_hukxv")] @@ -863,6 +892,9 @@ position = Vector2(8192, 3507) [node name="SpawnWithItem" parent="YSorted/CanGenericPickup" index="0"] _blueprint = ExtResource("28_ipqaa") +[node name="InteractionArea2" parent="YSorted/CanGenericPickup" index="3"] +position = Vector2(0, -159) + [node name="CollisionShape3D" parent="YSorted/CanGenericPickup/InteractionArea2/Area2D" index="0"] shape = SubResource("CircleShape2D_ipqaa") @@ -902,24 +934,60 @@ position = Vector2(-60, 122) position = Vector2(-8213, 84) [node name="House Mockup" type="Sprite2D" parent="YSorted/Farm visuals/Static"] +y_sort_enabled = true material = SubResource("ShaderMaterial_lhtpe") -position = Vector2(5280, 1600) -scale = Vector2(5, 5) -texture = ExtResource("2_lhtpe") +position = Vector2(5986, 1718.25) +scale = Vector2(4.5, 3.725) +texture = ExtResource("36_e5b7x") [node name="StaticBody2D" type="StaticBody2D" parent="YSorted/Farm visuals/Static/House Mockup"] collision_layer = 2 collision_mask = 6 [node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="YSorted/Farm visuals/Static/House Mockup/StaticBody2D"] -position = Vector2(-257.6, 236.8) -polygon = PackedVector2Array(232, -4.80005, 0, 0, 0, -96, -262.4, -97.6, -265.6, -260.8, -310.4, -260.8, -235.2, -321.6, -124.8, -323.2, -57.6, -424, 84.8, -436.8, 118.4, -452.8, 136, -436.8, 726.4, -452.8, 817.6, -299.2, 785.6, -291.2, 785.6, -108.8, 241.6, -94.4) -disabled = true +position = Vector2(-252.56, 231.32) +polygon = PackedVector2Array(247.227, 43.5123, 44.7822, 43.5123, -87.2178, 45.123, -104.329, -55.2797, -154.107, -73.5347, -160.107, -380.38, -175.44, -400.783, -63.44, -512.461, 97.8934, -541.991, 261.671, -599.172, 374.782, -526.421, 502.338, -526.421, 637.893, -396.488, 598.56, -360.783, 596.338, -58.2327, 528.782, -58.2327, 501.449, 45.9283) [node name="EnterHouseInteraction" parent="YSorted/Farm visuals/Static" instance=ExtResource("27_klb81")] -position = Vector2(7178, 1965) +position = Vector2(5839, 2349) scale = Vector2(2.425, 2.425) +[node name="bush" type="Sprite2D" parent="YSorted/Farm visuals/Static"] +material = SubResource("ShaderMaterial_bcdgk") +position = Vector2(4313, 2633) +scale = Vector2(2, 2) +texture = ExtResource("14_mrwmr") +offset = Vector2(0, -237) +region_enabled = true +region_rect = Rect2(130, 0, 201, 278) + +[node name="bush2" type="Sprite2D" parent="YSorted/Farm visuals/Static"] +material = SubResource("ShaderMaterial_bcdgk") +position = Vector2(4590, 2971) +scale = Vector2(2, 2) +texture = ExtResource("14_mrwmr") +offset = Vector2(0, -196) +region_enabled = true +region_rect = Rect2(1699, 76, 280, 230) + +[node name="bush4" type="Sprite2D" parent="YSorted/Farm visuals/Static"] +material = SubResource("ShaderMaterial_bcdgk") +position = Vector2(7300, 2912) +scale = Vector2(2, 2) +texture = ExtResource("14_mrwmr") +offset = Vector2(0, -172) +region_enabled = true +region_rect = Rect2(0, 604, 248, 228) + +[node name="bush3" type="Sprite2D" parent="YSorted/Farm visuals/Static"] +material = SubResource("ShaderMaterial_bcdgk") +position = Vector2(7053, 2891) +scale = Vector2(2, 2) +texture = ExtResource("14_mrwmr") +offset = Vector2(0, -50) +region_enabled = true +region_rect = Rect2(1464, 419, 144, 115) + [node name="FieldParent" type="Node2D" parent="YSorted/Farm visuals"] position = Vector2(53, 20) scale = Vector2(1, 0.993819) @@ -944,50 +1012,81 @@ follow_viewport_enabled = false [node name="Inventory" parent="CanvasLayer" index="1"] anchors_preset = 7 -anchor_left = 0.5 anchor_top = 1.0 -anchor_right = 0.5 -offset_left = -172.8 -offset_top = -194.4 -offset_right = 172.8 +anchor_bottom = 1.0 +offset_left = -116.0 +offset_top = -53.0 +offset_right = 231.82 +offset_bottom = 141.4 grow_vertical = 0 -size_flags_horizontal = 4 -size_flags_vertical = 8 -_inventoryOpenedOffset = -600.0 +size_flags_horizontal = 6 +size_flags_vertical = 10 + +[node name="SlotsMover" parent="CanvasLayer/Inventory/SlotsContainer" index="0"] +anchors_preset = 7 +anchor_left = 0.5 +anchor_right = 0.5 +offset_left = -450.0 +offset_top = -610.0 +offset_right = 450.0 +offset_bottom = 0.0 + +[node name="TextureRect2" parent="CanvasLayer/Inventory/SlotsContainer/SlotsMover/BackgroundContainer" index="1"] +offset_left = -360.339 +offset_top = 0.228533 +offset_right = -456.339 +offset_bottom = 30.2285 [node name="Audio" type="Node" parent="."] -[node name="Background Music" type="AudioStreamPlayer2D" parent="Audio"] +[node name="Background Music Ramp up" type="AudioStreamPlayer2D" parent="Audio"] position = Vector2(4002, 2030) stream = SubResource("AudioStreamPlaylist_ceriq") -volume_db = -15.0 autoplay = true max_distance = 1e+06 +bus = &"Music" +area_mask = 33 +playback_type = 1 +script = ExtResource("42_1nkjm") + +[node name="Background Music loop" type="AudioStreamPlayer2D" parent="Audio"] +position = Vector2(4002, 2030) +stream = ExtResource("37_8ey8m") +max_distance = 1e+06 +bus = &"Music" +area_mask = 33 +playback_type = 1 +script = ExtResource("42_1nkjm") [node name="SFX" type="Node" parent="Audio"] [node name="Farming SFX" type="AudioStreamPlayer2D" parent="Audio/SFX"] stream = SubResource("AudioStreamRandomizer_ceriq") max_distance = 2e+07 +playback_type = 2 script = ExtResource("40_w3jkj") [node name="Watering SFX" type="AudioStreamPlayer2D" parent="Audio/SFX"] -stream = SubResource("AudioStreamRandomizer_ceriq") +stream = SubResource("AudioStreamRandomizer_p4qqi") max_distance = 2e+07 +playback_type = 2 script = ExtResource("40_w3jkj") [node name="FillWater SFX2" type="AudioStreamPlayer2D" parent="Audio/SFX"] -stream = SubResource("AudioStreamRandomizer_ceriq") +stream = SubResource("AudioStreamRandomizer_618my") max_distance = 2e+07 +playback_type = 2 script = ExtResource("40_w3jkj") [connection signal="FilledWateringCan" from="YSorted/Vesna" to="Audio/SFX/FillWater SFX2" method="PlayOneShot"] [connection signal="WateringField" from="YSorted/Vesna/FarmingControls" to="Audio/SFX/Watering SFX" method="PlayOneShot"] [connection signal="InteractedTool" from="YSorted/Brünnen/InteractionArea" to="YSorted/Vesna" method="TryFillWateringCan"] +[connection signal="SuccessfulPickUp" from="YSorted/CanGenericPickup" to="YSorted/Vesna" method="HandlePickUp"] +[connection signal="SuccessfulPickUp" from="YSorted/RakeGenericPickup" to="YSorted/Vesna" method="HandlePickUp"] [connection signal="Interacted" from="YSorted/Farm visuals/Static/EnterHouseInteraction" to="." method="LoadScene"] [connection signal="FieldCreated" from="YSorted/Farm visuals/FieldParent" to="Audio/SFX/Farming SFX" method="PlayOneShot"] -[connection signal="mouse_entered" from="YSorted/Farm visuals/FieldParent/Area2D" to="YSorted/Farm visuals/FieldParent" method="MouseEnteredAllowedArea"] -[connection signal="mouse_exited" from="YSorted/Farm visuals/FieldParent/Area2D" to="YSorted/Farm visuals/FieldParent" method="MouseExitedAllowedArea"] +[connection signal="input_event" from="YSorted/Farm visuals/FieldParent/Area2D" to="YSorted/Vesna/FarmingControls" method="InputEventPressedOn"] +[connection signal="finished" from="Audio/Background Music Ramp up" to="Audio/Background Music loop" method="PlayFromOffset"] [editable path="YSorted/Vesna"] [editable path="YSorted/Brünnen/InteractionArea"] diff --git a/scenes/Babushka_scene_startMenu.tscn b/scenes/Babushka_scene_startMenu.tscn index 001ef84..0b5c964 100644 --- a/scenes/Babushka_scene_startMenu.tscn +++ b/scenes/Babushka_scene_startMenu.tscn @@ -19,13 +19,24 @@ grow_vertical = 2 texture = ExtResource("1_qerdf") expand_mode = 2 stretch_mode = 6 +metadata/_edit_use_anchors_ = true [node name="Start" type="Button" parent="CanvasLayer/TextureRect"] -offset_left = 571.0 -offset_top = 559.0 -offset_right = 617.0 -offset_bottom = 590.0 +custom_minimum_size = Vector2(100, 30) +layout_mode = 1 +anchors_preset = 7 +anchor_left = 0.5 +anchor_top = 1.0 +anchor_right = 0.5 +anchor_bottom = 1.0 +offset_left = -76.0 +offset_top = -98.0 +offset_right = 24.0 +offset_bottom = -67.0 +grow_horizontal = 2 +grow_vertical = 0 scale = Vector2(2, 2) text = "Start" +icon_alignment = 1 [connection signal="pressed" from="CanvasLayer/TextureRect/Start" to="." method="LoadScene"] diff --git a/scenes/IndoorTest2.tscn b/scenes/IndoorTest2.tscn index 6a97db4..f4f1641 100644 --- a/scenes/IndoorTest2.tscn +++ b/scenes/IndoorTest2.tscn @@ -20,14 +20,14 @@ [sub_resource type="RectangleShape2D" id="RectangleShape2D_a2ood"] resource_local_to_scene = true -size = Vector2(7680, 1336) +size = Vector2(3836, 1086) [sub_resource type="Animation" id="Animation_j5d18"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("Room assets/hand:scale") +tracks/0/path = NodePath("BackWall/Room assets/hand:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -51,7 +51,7 @@ tracks/1/keys = { tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = false -tracks/2/path = NodePath("Room assets/eyes:visible") +tracks/2/path = NodePath("BackWall/Room assets/eyes:visible") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { @@ -67,7 +67,7 @@ length = 4.0 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("Room assets/hand:scale") +tracks/0/path = NodePath("BackWall/Room assets/hand:scale") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { @@ -91,7 +91,7 @@ tracks/1/keys = { tracks/2/type = "value" tracks/2/imported = false tracks/2/enabled = true -tracks/2/path = NodePath("Room assets/eyes:visible") +tracks/2/path = NodePath("BackWall/Room assets/eyes:visible") tracks/2/interp = 1 tracks/2/loop_wrap = true tracks/2/keys = { @@ -115,16 +115,78 @@ radius = 300.0 y_sort_enabled = true script = ExtResource("1_aivb2") +[node name="Foreground" type="Node" parent="."] + +[node name="Table" type="Sprite2D" parent="Foreground"] +y_sort_enabled = true +position = Vector2(-1888, 1112) +texture = ExtResource("3_je1cl") +offset = Vector2(0, -200) +region_enabled = true +region_rect = Rect2(1012, 1743, 1470, 417) + +[node name="Chair" type="Sprite2D" parent="Foreground"] +y_sort_enabled = true +position = Vector2(-3032, 2096) +texture = ExtResource("4_hjjhl") +offset = Vector2(216, -1064) +region_enabled = true +region_rect = Rect2(1534, 1976, 379, 184) + +[node name="Chair2" type="Sprite2D" parent="Foreground"] +y_sort_enabled = true +position = Vector2(-1064, 2064) +texture = ExtResource("4_hjjhl") +offset = Vector2(184, -1056) +region_enabled = true +region_rect = Rect2(1534, 1976, 379, 184) + +[node name="Samowar" type="Sprite2D" parent="Foreground"] +z_index = 1 +y_sort_enabled = true +position = Vector2(-1904, 1192) +texture = ExtResource("13_j5d18") +offset = Vector2(0, -800) +region_enabled = true +region_rect = Rect2(2093, 49, 421, 630) + +[node name="FrontCollider" type="StaticBody2D" parent="Foreground"] +position = Vector2(-4344, 3056) +scale = Vector2(2, 2) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Foreground/FrontCollider"] +position = Vector2(950, -419) +shape = SubResource("RectangleShape2D_a2ood") + +[node name="SideColliderLeft" type="StaticBody2D" parent="."] +position = Vector2(-4344, 3056) +scale = Vector2(2, 2) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SideColliderLeft"] +position = Vector2(-2892, -1168) +shape = SubResource("RectangleShape2D_a2ood") + +[node name="SideColliderRight" type="StaticBody2D" parent="."] +position = Vector2(10992, 2856) +scale = Vector2(2, 2) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="SideColliderRight"] +position = Vector2(-2892, -1168) +shape = SubResource("RectangleShape2D_a2ood") + [node name="BackWall" type="Node" parent="."] [node name="Room01Walls2" type="Sprite2D" parent="BackWall"] z_index = -100 -position = Vector2(-1072, -264) +position = Vector2(4992, -487) +scale = Vector2(2, 2) texture = ExtResource("3_a2ood") offset = Vector2(-2768, 264) [node name="wall 1" type="Sprite2D" parent="BackWall"] z_index = -100 +position = Vector2(-4368, 40) +scale = Vector2(2, 2) texture = ExtResource("3_a2ood") flip_h = true region_rect = Rect2(111, 292, 3323, 2160) @@ -132,129 +194,124 @@ region_rect = Rect2(111, 292, 3323, 2160) [node name="StaticBody2D" type="StaticBody2D" parent="BackWall/wall 1"] [node name="CollisionShape2D" type="CollisionShape2D" parent="BackWall/wall 1/StaticBody2D"] -position = Vector2(-1912, -396) +position = Vector2(950, -419) shape = SubResource("RectangleShape2D_a2ood") [node name="Room01DorrR" type="Sprite2D" parent="BackWall"] z_index = -50 -position = Vector2(-744, 16) +position = Vector2(936, -216) texture = ExtResource("5_8o6or") +region_enabled = true +region_rect = Rect2(3161, 313, 679, 1050) [node name="Room01DioorL" type="Sprite2D" parent="BackWall"] z_index = -50 -position = Vector2(-3288, 8) +position = Vector2(-3296, 48) texture = ExtResource("8_wuntg") +region_enabled = true +region_rect = Rect2(0, 0, 3840, 2160) [node name="Room01Pechka" type="Sprite2D" parent="BackWall"] z_index = -80 -position = Vector2(-752, 0) +position = Vector2(-224, -392) texture = ExtResource("9_aivb2") +region_enabled = true +region_rect = Rect2(2236, 0, 724, 1392) [node name="Room01Window2" type="Sprite2D" parent="BackWall"] z_index = -50 -position = Vector2(-2952, 16) +position = Vector2(-3192, -344) texture = ExtResource("6_j5d18") +region_enabled = true +region_rect = Rect2(1020, 338, 607, 757) [node name="Room01Window3" type="Sprite2D" parent="BackWall"] z_index = -50 -position = Vector2(-944, -8) +position = Vector2(-1792, -336) texture = ExtResource("6_j5d18") +region_enabled = true +region_rect = Rect2(1020, 338, 607, 757) [node name="Room01PechkaDoor" type="Sprite2D" parent="BackWall"] z_index = -50 -position = Vector2(-710, 0) +position = Vector2(-248, -96) texture = ExtResource("10_835kg") +region_enabled = true +region_rect = Rect2(2360, 864, 356, 251) [node name="Room01Chugun" type="Sprite2D" parent="BackWall"] z_index = -40 -position = Vector2(-736, 8) +position = Vector2(16, -560) texture = ExtResource("11_atjbs") +region_enabled = true +region_rect = Rect2(2469, 459, 247, 131) [node name="Room01Shelf" type="Sprite2D" parent="BackWall"] z_index = -50 -position = Vector2(-832, 56) +position = Vector2(-880, -416) texture = ExtResource("8_8o6or") +region_enabled = true +region_rect = Rect2(1846, 471, 348, 490) -[node name="Player2d" parent="." instance=ExtResource("2_a2ood")] -position = Vector2(-1464, 136) - -[node name="CharacterBody2D" parent="Player2d" index="0"] -_speed = 500.0 - -[node name="Animated Sprites" parent="Player2d/CharacterBody2D/visuals" index="0"] -z_index = 50 - -[node name="Room01Table" type="Sprite2D" parent="."] +[node name="Bench" type="Sprite2D" parent="BackWall"] +z_index = -10 y_sort_enabled = true -position = Vector2(-2056, 888) -texture = ExtResource("3_je1cl") -offset = Vector2(192, -848) - -[node name="Room01Chair" type="Sprite2D" parent="."] -position = Vector2(-2792, 1096) -texture = ExtResource("4_hjjhl") -offset = Vector2(216, -1064) - -[node name="Room01Chair2" type="Sprite2D" parent="."] -position = Vector2(-1304, 1080) -texture = ExtResource("4_hjjhl") -offset = Vector2(184, -1056) - -[node name="Room01Bench" type="Sprite2D" parent="."] -position = Vector2(-3280, 24) +position = Vector2(-3240, 224) texture = ExtResource("7_ciwvv") flip_h = true +region_enabled = true +region_rect = Rect2(1156, 1185, 940, 189) -[node name="Room01Bench2" type="Sprite2D" parent="."] -position = Vector2(-784, 40) +[node name="Bench2" type="Sprite2D" parent="BackWall"] +z_index = -10 +position = Vector2(-1824, 224) texture = ExtResource("7_ciwvv") - -[node name="Room assets" type="Node" parent="."] - -[node name="Samowar" type="Sprite2D" parent="Room assets"] -y_sort_enabled = true -position = Vector2(-2000, 696) -texture = ExtResource("13_j5d18") -offset = Vector2(0, -296) region_enabled = true -region_rect = Rect2(2085, 40, 446, 654) +region_rect = Rect2(1156, 1185, 940, 189) -[node name="wood" type="Sprite2D" parent="Room assets"] +[node name="Room assets" type="Node" parent="BackWall"] + +[node name="wood" type="Sprite2D" parent="BackWall/Room assets"] +z_index = -10 y_sort_enabled = true -position = Vector2(-176, 560) +position = Vector2(-177, 554.5) texture = ExtResource("13_j5d18") offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2244, 763, 274, 91) -[node name="Domovoi" type="Sprite2D" parent="Room assets"] +[node name="Domovoi" type="Sprite2D" parent="BackWall/Room assets"] +z_index = -10 y_sort_enabled = true -position = Vector2(336, 480) +position = Vector2(335, 474.5) texture = ExtResource("13_j5d18") offset = Vector2(0, -296) region_enabled = true -region_rect = Rect2(3157, 688, 131, 221) +region_rect = Rect2(3157, 688, 118.519, 221) -[node name="vase" type="Sprite2D" parent="Room assets"] +[node name="vase" type="Sprite2D" parent="BackWall/Room assets"] +z_index = -10 y_sort_enabled = true -position = Vector2(-712, 72) +position = Vector2(-857, -37.5) texture = ExtResource("13_j5d18") offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2748, 432, 174, 191) -[node name="candle" type="Sprite2D" parent="Room assets"] +[node name="candle" type="Sprite2D" parent="BackWall/Room assets"] +z_index = -10 y_sort_enabled = true -position = Vector2(-272, -56) +position = Vector2(-425, -77.5) rotation = -0.0663225 texture = ExtResource("13_j5d18") offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2624, 435, 49, 76) -[node name="hand" type="Sprite2D" parent="Room assets"] +[node name="hand" type="Sprite2D" parent="BackWall/Room assets"] +z_index = -10 y_sort_enabled = true -position = Vector2(48.5969, 11.68) +position = Vector2(47.5969, 6.18) rotation = -0.0663225 scale = Vector2(1e-05, 1e-05) texture = ExtResource("13_j5d18") @@ -262,23 +319,24 @@ offset = Vector2(43.3898, 128.128) region_enabled = true region_rect = Rect2(3362, 139, 101, 269) -[node name="SpiritAnimation" type="AnimationPlayer" parent="Room assets/hand"] +[node name="SpiritAnimation" type="AnimationPlayer" parent="BackWall/Room assets/hand"] active = false -root_node = NodePath("../../..") +root_node = NodePath("../../../..") libraries = { &"": SubResource("AnimationLibrary_ciwvv") } playback_auto_capture = false -[node name="herbsline" type="Sprite2D" parent="Room assets"] +[node name="herbsline" type="Sprite2D" parent="BackWall/Room assets"] +z_index = -10 y_sort_enabled = true -position = Vector2(440, -168) +position = Vector2(287, -157.5) texture = ExtResource("13_j5d18") offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2964, 137, 321, 213) -[node name="herb 1" type="Sprite2D" parent="Room assets/herbsline"] +[node name="herb 1" type="Sprite2D" parent="BackWall/Room assets/herbsline"] y_sort_enabled = true position = Vector2(-72, 136) texture = ExtResource("13_j5d18") @@ -286,7 +344,7 @@ offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2600, 165, 127, 199) -[node name="herb 2" type="Sprite2D" parent="Room assets/herbsline"] +[node name="herb 2" type="Sprite2D" parent="BackWall/Room assets/herbsline"] y_sort_enabled = true position = Vector2(64, 80) texture = ExtResource("13_j5d18") @@ -294,31 +352,31 @@ offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2761, 161, 135, 199) -[node name="eyes" type="Sprite2D" parent="Room assets"] +[node name="eyes" type="Sprite2D" parent="BackWall/Room assets"] visible = false +z_index = -10 position = Vector2(32, -72) scale = Vector2(0.4, 0.4) texture = ExtResource("14_j5d18") region_enabled = true region_rect = Rect2(2647, 15, 286, 183) -[node name="offerings" type="Node2D" parent="Room assets"] -visible = false +[node name="offerings" type="Node2D" parent="BackWall/Room assets"] -[node name="apple" type="Sprite2D" parent="Room assets/offerings"] +[node name="apple" type="Sprite2D" parent="BackWall/Room assets/offerings"] position = Vector2(229.5, 331.5) texture = ExtResource("13_j5d18") region_enabled = true region_rect = Rect2(2822, 764, 93, 87) -[node name="bread" type="Sprite2D" parent="Room assets/offerings"] +[node name="bread" type="Sprite2D" parent="BackWall/Room assets/offerings"] z_index = -1 position = Vector2(157.5, 339.5) texture = ExtResource("13_j5d18") region_enabled = true region_rect = Rect2(2951, 783, 155, 78) -[node name="plate" type="Sprite2D" parent="Room assets/offerings"] +[node name="plate" type="Sprite2D" parent="BackWall/Room assets/offerings"] z_index = -20 position = Vector2(189.5, 659.5) texture = ExtResource("13_j5d18") @@ -326,21 +384,28 @@ offset = Vector2(0, -296) region_enabled = true region_rect = Rect2(2576, 802, 219, 64) +[node name="Vesna" parent="." instance=ExtResource("2_a2ood")] +position = Vector2(-1464, 136) + [node name="Yeli" parent="." instance=ExtResource("15_ciwvv")] position = Vector2(-2912, 432) [node name="CollisionShape3D" parent="Yeli/InteractionArea/Area2D" index="0"] +position = Vector2(-205.348, 131.907) shape = SubResource("CircleShape2D_wuntg") [node name="TalkingControl" parent="Yeli" index="1"] _timelinesToPlay = PackedStringArray("yeli_intro_05") +[node name="AnimatedSprite" parent="Yeli/TalkingControl" index="0"] +position = Vector2(-576, 368) + [node name="dialogic_toggle" type="Node2D" parent="Yeli"] script = ExtResource("17_835kg") metadata/_custom_type_script = "uid://cvkw4qd2hxksi" [connection signal="timelineEnded" from="Yeli/dialogic_toggle" to="." method="Quit"] -[editable path="Player2d"] +[editable path="Vesna"] [editable path="Yeli"] [editable path="Yeli/InteractionArea"] diff --git a/scripts/CSharp/Common/Audio/AudioDebugger.cs b/scripts/CSharp/Common/Audio/AudioDebugger.cs new file mode 100644 index 0000000..76e8bd7 --- /dev/null +++ b/scripts/CSharp/Common/Audio/AudioDebugger.cs @@ -0,0 +1,15 @@ +using Godot; +using System; + +/// +/// Takes the current contents of a AudioStreamPlayer and offers visualization and control. +/// +public partial class AudioDebugger : AudioStreamPlayer2D +{ + [Export] private float _offset_in_seconds_to_play = 0; + + public void PlayFromOffset() + { + Play(_offset_in_seconds_to_play); + } +} diff --git a/scripts/CSharp/Common/Audio/AudioDebugger.cs.uid b/scripts/CSharp/Common/Audio/AudioDebugger.cs.uid new file mode 100644 index 0000000..9a47557 --- /dev/null +++ b/scripts/CSharp/Common/Audio/AudioDebugger.cs.uid @@ -0,0 +1 @@ +uid://clxb3n668oud3 diff --git a/scripts/CSharp/Common/CharacterControls/Player2D.cs b/scripts/CSharp/Common/CharacterControls/Player2D.cs index bea8f96..0cb236e 100644 --- a/scripts/CSharp/Common/CharacterControls/Player2D.cs +++ b/scripts/CSharp/Common/CharacterControls/Player2D.cs @@ -10,6 +10,7 @@ public partial class Player2D : CharacterBody2D [Export] private float _speed = 100f; [Export] private AnimatedSprite2D _sprite; [Export] private SceneTree.GroupCallFlags _fieldFlags; + [Export] private CpuParticles2D _wateringParticles; // -1 means no tool. private int _toolID = -1; @@ -43,45 +44,55 @@ public partial class Player2D : CharacterBody2D if (!_canHandleInput) return; - - if (Input.IsActionPressed("move_right")) + + bool right = Input.IsActionPressed("move_right"); + bool left = Input.IsActionPressed("move_left"); + bool up = Input.IsActionPressed("move_up"); + bool down = Input.IsActionPressed("move_down"); + bool walkingAnimationPicked = false; + + if (up) { - Velocity = new Vector2(_speed, 0); + Velocity = new Vector2(0, -_speed); MoveAndSlide(); - _sprite.FlipH = false; - _sprite.Animation = "side walking" + _toolString; + _sprite.Animation = "back walking" + _toolString; anyActionPressed = true; - _lastDirection = Vector2.Right; + _lastDirection = Vector2.Up; + walkingAnimationPicked = true; } - if (Input.IsActionPressed("move_left")) + if (down && !walkingAnimationPicked) { - Velocity = new Vector2(-_speed, 0); + Velocity = new Vector2(0, _speed); MoveAndSlide(); - _sprite.FlipH = true; - _sprite.Animation = "side walking" + _toolString; + _sprite.Animation = "front walking" + _toolString; anyActionPressed = true; - _lastDirection = Vector2.Left; + _lastDirection = Vector2.Down; + walkingAnimationPicked = true; } - if (Input.IsActionPressed("move_up")) + if (right && !walkingAnimationPicked) { - Velocity = new Vector2(0, -_speed); + Velocity = new Vector2(_speed, 0); MoveAndSlide(); - _sprite.Animation = "back walking" + _toolString; + _sprite.FlipH = false; + _sprite.Animation = "side walking" + _toolString; anyActionPressed = true; - _lastDirection = Vector2.Up; + _lastDirection = Vector2.Right; + walkingAnimationPicked = true; } - if (Input.IsActionPressed("move_down")) + if (left && !walkingAnimationPicked) { - Velocity = new Vector2(0, _speed); + Velocity = new Vector2(-_speed, 0); MoveAndSlide(); - _sprite.Animation = "front walking" + _toolString; + _sprite.FlipH = true; + _sprite.Animation = "side walking" + _toolString; anyActionPressed = true; - _lastDirection = Vector2.Down; + _lastDirection = Vector2.Left; + walkingAnimationPicked = true; } - + if (Input.IsActionPressed("interact2")) { _sprite.Animation = "back interact"; @@ -89,12 +100,14 @@ public partial class Player2D : CharacterBody2D _lastDirection = Vector2.Up; } + /* if (Input.IsActionPressed("item")) { _sprite.Animation = "diagonal item"; anyActionPressed = true; _lastDirection = Vector2.Right; } + */ if (anyActionPressed) { @@ -144,6 +157,7 @@ public partial class Player2D : CharacterBody2D _sprite.Animation = "diagonal wateringcan"; _sprite.Play(); _canHandleInput = false; + _wateringParticles.Emitting = true; Task.Run(DelayedInputHandlerReset); } } @@ -151,6 +165,7 @@ public partial class Player2D : CharacterBody2D private async Task DelayedInputHandlerReset() { await Task.Delay(1000); + _wateringParticles.Emitting = false; _canHandleInput = true; } diff --git a/scripts/CSharp/Common/Farming/FarmingControls2D.cs b/scripts/CSharp/Common/Farming/FarmingControls2D.cs index 4a999d3..2ee80fa 100644 --- a/scripts/CSharp/Common/Farming/FarmingControls2D.cs +++ b/scripts/CSharp/Common/Farming/FarmingControls2D.cs @@ -9,13 +9,14 @@ public partial class FarmingControls2D : Node2D [Export] private PackedScene _fieldPrefab; [Export] private Node2D _movingPlayer; [Export] private Camera2D _camera; + [Export] private CpuParticles2D _wateringParticles; + [Export] private float _wateringCanParticlesVerticalOffset = 50f; public FieldService2D FieldService; private int _toolId = -1; private bool _wateringCanFilled = false; - private int _currentWateringCanStep = 0; - private int _wateringCanCapacity = 3; + [Signal] public delegate void WateringFieldEventHandler(); @@ -41,33 +42,80 @@ public partial class FarmingControls2D : Node2D } _toolId = activate ? toolId : -1; + + WateringCanState.SetActive(_toolId == WateringCanState.WATERING_CAN_ID); + return activate; } #endregion public override void _Input(InputEvent @event) + { + if (@event.IsActionPressed("click") + && _toolId == WateringCanState.WATERING_CAN_ID + && WateringCanState.GetFillState() > 0) + { + Vector2I adjustedPosition = GetAdjustedMousePosition(); + WaterTheField(adjustedPosition); + } + } + + private Vector2I GetAdjustedMousePosition() { Vector2 mousePosition = _camera.GetGlobalMousePosition(); Vector2I mousePositionInteger = (Vector2I) mousePosition; Vector2I adjustedPosition = AdjustValue(mousePositionInteger, new Vector2I(735, 651)); + return adjustedPosition; + } + + /// + /// Called by the allowed farming area collision area 2d. + /// + /// + /// + /// + public void InputEventPressedOn(Node node, InputEvent inputEvent, int shapeIndex) + { + if (!inputEvent.IsPressed()) + { + GD.Print("Input Event is not pressed." ); + return; + } - if (@event.IsActionPressed("click") && _toolId == 0) + if (!inputEvent.IsActionPressed("click")) + return; + + if (inputEvent is InputEventMouseButton inputEventMouseButton) { - MakeField(adjustedPosition); + GD.Print("Input Event is InputEventMouseButton." ); + if (!inputEventMouseButton.Pressed) + { + GD.Print("Input Event Mouse Button is not pressed." ); + return; + } + } + else + { + GD.Print("Other Input Event registered." ); + return; } - if (@event.IsActionPressed("click") && _toolId == 1 && _wateringCanFilled) + GD.Print("Current tool id: " + _toolId ); + if (_toolId == 0) { - WaterTheField(adjustedPosition); + GD.Print("Trying to create field." ); + Vector2I adjustedPosition = GetAdjustedMousePosition(); + MakeField(adjustedPosition); } } - public void FillWateringCan(bool fillUp) + #region WATERING + public void FillWateringCan() { - if (_toolId == 1 ) + if (_toolId == WateringCanState.WATERING_CAN_ID) { - _wateringCanFilled = fillUp; + WateringCanState.Fill(); } } @@ -78,29 +126,19 @@ public partial class FarmingControls2D : Node2D return; field.Water(); + _wateringParticles.GlobalPosition = new Vector2(field.GlobalPosition.X, field.GlobalPosition.Y + _wateringCanParticlesVerticalOffset); + WateringCanState.Water(); EmitSignal(SignalName.WateringField); - - if (_currentWateringCanStep < _wateringCanCapacity) - { - _currentWateringCanStep++; - } - else - { - _currentWateringCanStep = 0; - FillWateringCan(false); - } - } + #endregion + + #region FIELD CREATION private void MakeField(Vector2I fieldPosition) { if(FieldService == null || _fieldPrefab == null) return; - // only try to instantiate a field if you're in the allowed area - if (!FieldService.FieldAllowed()) - return; - // only instantiate a field if there isn't one already. if(FieldService.Get(fieldPosition) == null) { @@ -131,4 +169,6 @@ public partial class FarmingControls2D : Node2D { return input.Snapped(step); } + + #endregion } \ No newline at end of file diff --git a/scripts/CSharp/Common/Farming/FieldService2D.cs b/scripts/CSharp/Common/Farming/FieldService2D.cs index 43536c9..5b36976 100644 --- a/scripts/CSharp/Common/Farming/FieldService2D.cs +++ b/scripts/CSharp/Common/Farming/FieldService2D.cs @@ -7,27 +7,24 @@ namespace Babushka.scripts.CSharp.Common.Farming; public partial class FieldService2D : Node2D { [Export] private Dictionary fields = new Dictionary(); - - private bool _fieldAllowed = false; + + [Export] private Area2D _allowedArea; [Signal] public delegate void FieldCreatedEventHandler(); - - //Validate - - public void MouseEnteredAllowedArea() - { - _fieldAllowed = true; - } - - public void MouseExitedAllowedArea() - { - _fieldAllowed = false; - } - public bool FieldAllowed() + /* + public override void _PhysicsProcess(double delta) { - return _fieldAllowed; + var spaceState = GetWorld2D().DirectSpaceState; + // use global coordinates, not local to node + var query = PhysicsRayQueryParameters2D.Create(GetGlobalMousePosition(), new Vector3(0,0,-1), + CollisionMask, [GetRid()]); + var result = spaceState.IntersectRay(query); + if (result.Count > 0) + GD.Print("Hit at point: ", result["position"]); } + */ + //Create public bool TryAddEntry(Vector2I key, FieldBehaviour2D field) diff --git a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs index 118ede5..da3be73 100644 --- a/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs +++ b/scripts/CSharp/Common/Farming/VesnaBehaviour2D.cs @@ -15,6 +15,8 @@ public partial class VesnaBehaviour2D : Node [Signal] public delegate void PickedUpToolEventHandler(bool success, int toolId); [Signal] public delegate void FilledWateringCanEventHandler(); + + [Signal] public delegate void InventorySelectionChangedEventHandler(int toolId); private InventoryManager _inventoryManager; private InventoryInstance _inventoryInstance; @@ -26,28 +28,39 @@ public partial class VesnaBehaviour2D : Node _inventoryInstance = _inventoryManager.playerInventory; _inventoryManager.SlotIndexChanged += HandleInventorySelectedSlotIndexChanged; } + + /// + /// Called when picking up an item. + /// Makes sure that item animations are also updated when they are occupying a currently empty spot. + /// + public void HandlePickUp() + { + //Calls the same event handler as the inventory to ensure the currently selected item is updated in the animation. + HandleInventorySelectedSlotIndexChanged(0); + } - private void HandleInventorySelectedSlotIndexChanged(int newIndex) + private void HandleInventorySelectedSlotIndexChanged(int newIndex = 0) { InventorySlot currentSlot = InventoryManager.Instance.GetCurrentSelectedSlot(); ItemInstance? currentItem = currentSlot.itemInstance; if (currentItem == null) return; + + int toolId = -1; if (currentItem.blueprint == _hoe) { - ActivateTool(0); - return; + toolId = 0; } if (currentItem.blueprint == _wateringCan) { - ActivateTool(1); - return; + toolId = 1; } - ActivateTool(-1); + ActivateTool(toolId); + EmitSignal(SignalName.InventorySelectionChanged, toolId); } @@ -63,7 +76,7 @@ public partial class VesnaBehaviour2D : Node { if (toolId == 1) { - _farmingControls.FillWateringCan(true); + _farmingControls.FillWateringCan(); _player2d.PlayWateringCanFillupAnimation(); EmitSignal(SignalName.FilledWateringCan); } diff --git a/scripts/CSharp/Common/Farming/WateringCanState.cs b/scripts/CSharp/Common/Farming/WateringCanState.cs new file mode 100644 index 0000000..8e4e89c --- /dev/null +++ b/scripts/CSharp/Common/Farming/WateringCanState.cs @@ -0,0 +1,70 @@ +namespace Babushka.scripts.CSharp.Common.Farming; + +/// +/// Holds Information about the current state of the watering can. +/// Since there is only one watering can, we can track this in one central static class. +/// +public static class WateringCanState +{ + private static int _fillstate = 0; + + /// + /// How many fields can be watered with one filling of the watering can. + /// + public const int MAX_FILLSTATE = 6; + + /// + /// The Tool ID of the watering can. Used to identify it amongst other pickup items (and things that can be held by Vesna). + /// + public const int WATERING_CAN_ID = 1; + + /// + /// Whether or not the watering can is currently active, i.e. held in hand by Vesna. + /// Triggers animations and ui. + /// + public static bool Active = false; + + + /// + /// Resets the fillstate to the max amount. + /// + public static void Fill() + { + _fillstate = MAX_FILLSTATE; + } + + /// + /// Called when watering a field. Reduces the current fillstate. + /// + public static void Water() + { + if(_fillstate > 0) + _fillstate--; + } + + /// + /// Resets the watering can. Equivalent to "Empty" state. + /// + public static void Reset() + { + _fillstate = 0; + } + + /// + /// Returns the current fill state of the watering can. + /// + /// + public static int GetFillState() + { + return _fillstate; + } + + /// + /// Sets the Active state of the watering can, i.e. if it is currently in hand and if the ui should be active. + /// + /// + public static void SetActive(bool active) + { + Active = active; + } +} \ No newline at end of file diff --git a/scripts/CSharp/Common/Inventory/InventoryUi.cs b/scripts/CSharp/Common/Inventory/InventoryUi.cs index 2a64944..f38e8e2 100644 --- a/scripts/CSharp/Common/Inventory/InventoryUi.cs +++ b/scripts/CSharp/Common/Inventory/InventoryUi.cs @@ -4,29 +4,22 @@ namespace Babushka.scripts.CSharp.Common.Inventory; public partial class InventoryUi : Control { - private Control _slots; - private Control _slotsMover; - private InventoryInstance _playerInventory; - private Control _slotSelect; + [Export] private Control _slotsParent; + [Export] private Control _slotsMover; + [Export] private Control[] _headerSlots; + [Export] private Control _slotSelect; + private InventoryInstance _playerInventory; private int? _slotOnMouse; - private bool _inventoryExtended = false; private Tween? _inventoryExtensionTween; - - [Export] private float _inventoryClosedOffset = 0f; - - [Export] private float _inventoryOpenedOffset = 200f; public override void _Ready() { GD.Print("Ready inventory ui"); - _slots = GetNode("SlotsContainer/SlotsMover/Slots"); - _slotsMover = GetNode("SlotsContainer/SlotsMover"); _playerInventory = InventoryManager.Instance.playerInventory; - _slotSelect = GetNode("SlotsContainer/SlotSelectContainer/Selector"); //PopulateSlots(); SubscribeSlots(); SetSlotContent(); @@ -44,7 +37,7 @@ public partial class InventoryUi : Control for (var i = 0; i < _playerInventory.Slots.Count; i++) { var inventorySlot = _playerInventory.Slots[i]; - var uiSlot = _slots.GetChild(i) as SlotUi; + var uiSlot = _slotsParent.GetChild(i) as SlotUi; if (inventorySlot.itemInstance != null) { @@ -82,7 +75,7 @@ public partial class InventoryUi : Control private void SetSlotSelectPosition() { - _slotSelect.Position = new Vector2(InventoryManager.Instance.CurrentSelectedSlotIndex * 100, 0); + _slotSelect.GlobalPosition = _headerSlots[InventoryManager.Instance.CurrentSelectedSlotIndex].GlobalPosition; } private void PopulateSlots() @@ -93,7 +86,7 @@ public partial class InventoryUi : Control var slotInstance = slotPackedScene.Instantiate(); slotInstance.index = index; slotInstance.Clicked += SlotClicked; - _slots.AddChild(slotInstance); + _slotsParent.AddChild(slotInstance); } } @@ -101,7 +94,7 @@ public partial class InventoryUi : Control { for (var index = 0; index < _playerInventory.Slots.Count; index++) { - var slotInstance = _slots.GetChild(index); + var slotInstance = _slotsParent.GetChild(index); slotInstance.index = index; slotInstance.Clicked += SlotClicked; } @@ -111,7 +104,7 @@ public partial class InventoryUi : Control { for (var index = 0; index < _playerInventory.Slots.Count; index++) { - var slotInstance = _slots.GetChild(index) as SlotUi; + var slotInstance = _slotsParent.GetChild(index) as SlotUi; slotInstance!.Clicked -= SlotClicked; } } @@ -141,8 +134,16 @@ public partial class InventoryUi : Control { if (Input.IsActionJustPressed("ui_inventory_open_close")) { + // We adjust the offset value in accordance with the screen height to make sure that the inventory is always in the middle of the screen. + _inventoryOpenedOffset = (GetViewportRect().Size.Y / 2 + 400) * (-1); InputInventoryOpenClose(); } + + if (Input.IsActionJustPressed("ui_inventory_close")) + { + if(_inventoryExtended) + InputInventoryOpenClose(); + } if (Input.IsActionJustPressed("ui_inventory_disadvance")) { diff --git a/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs b/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs index 52842d8..bba4bb7 100644 --- a/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs +++ b/scripts/CSharp/Common/Inventory/ItemOnGround2D.cs @@ -11,6 +11,8 @@ public partial class ItemOnGround2D : Node [Export] public bool IsActive = true; private int pickUpCounter = 0; + + [Signal] public delegate void SuccessfulPickUpEventHandler(); private Label _itemLabel => GetNode