diff --git a/core/Cursor.gd b/core/Cursor.gd index 2584762..5a23098 100644 --- a/core/Cursor.gd +++ b/core/Cursor.gd @@ -4,10 +4,10 @@ var spaceState:World2D var query : PhysicsPointQueryParameters2D var CastResult : Array -var hoveredObjects : Array -var hoveredObject:CollisionObject2D -var hoveredSticker:Area2D -var grabbedSticker:Area2D +var hoveredColliders : Array +var hoveredCollider:CollisionObject2D +var hoveredStickerNode:Sticker +var grabbedStickerNode:Sticker var grabbedStickerOffset:Vector2 enum CURSOR_STATE {DEFAULT, CLICK, GRAB, GRABBED} @@ -29,8 +29,8 @@ func _process(_delta): #endregion pointcast() cursor_look() - if (grabbedSticker != null): - grabbedSticker.get_parent().position = grabbedStickerOffset+get_global_mouse_position() + if (grabbedStickerNode != null): + grabbedStickerNode.get_parent().position = grabbedStickerOffset+get_global_mouse_position() func pointcast(): @@ -41,29 +41,29 @@ func pointcast(): CastResult = spaceState.direct_space_state.intersect_point(query) # CastResult is not reliable. Objects are added randomly in the array # so we need to filter/sort the trace result - if ( CastResult.size() > 0 and (grabbedSticker == null)): + if ( CastResult.size() > 0 and (grabbedStickerNode == null)): - #region Fill HoveredObjects + #region Fill hoveredColliders for _object in CastResult: if(_object.collider.input_pickable == true): - hoveredObjects.append(_object.collider) #Get the object that have the collision + hoveredColliders.append(_object.collider) #Get the object that have the collision #endregion - if (hoveredObjects.size() > 0): - if (hoveredObjects.size() >= 2): - sortByPosY(hoveredObjects,false) - if (hoveredObjects[0] != hoveredObject): + if (hoveredColliders.size() > 0): + if (hoveredColliders.size() >= 2): + sortByPosY(hoveredColliders,false) + if (hoveredColliders[0] != hoveredCollider): $GrabTimer.stop() - if (hoveredObject and hoveredObject.has_method("on_unhover")): - hoveredObject.on_unhover() - hoveredObject = hoveredObjects[0] - if (hoveredObject and hoveredObject.has_method("on_hover")): - hoveredObject.on_hover() - print("Current hovered object :", hoveredObject) - if (Global.isSticker(hoveredObject)): - hoveredSticker = hoveredObject - print("Current hovered sticker :", hoveredSticker) + if (hoveredCollider and hoveredCollider.has_method("on_unhover")): + hoveredCollider.on_unhover() + hoveredCollider = hoveredColliders[0] + if (hoveredCollider and hoveredCollider.has_method("on_hover")): + hoveredCollider.on_hover() + print("Current hovered object :", hoveredCollider) + if (Global.isSticker(hoveredCollider)): + hoveredStickerNode = hoveredCollider + print("Current hovered sticker :", hoveredStickerNode) else: - hoveredSticker = null + hoveredStickerNode = null else: resetCast(true) else: @@ -71,13 +71,14 @@ func pointcast(): func resetCast(bFull = false): CastResult.clear() - hoveredObjects.clear() + hoveredColliders.clear() if bFull: - if (hoveredObject != null and hoveredObject.has_method("on_unhover") and (hoveredObject != grabbedSticker)): - hoveredObject.on_unhover() - hoveredObject = null - hoveredSticker = null + if (hoveredCollider != null and hoveredCollider.has_method("on_unhover") and (hoveredCollider != grabbedStickerNode)): + hoveredCollider.on_unhover() + hoveredCollider = null + hoveredStickerNode = null +## Sort objects by parent's Y position func sortByPosY(objects: Array, ascending_order: bool = true): var _tempArray :Array _tempArray = objects @@ -99,36 +100,37 @@ func _input(rawInputEvent:InputEvent): $GrabTimer.start() if (rawInputEvent.is_action_released("select")): $GrabTimer.stop() - if (grabbedSticker != null): + if (grabbedStickerNode != null): grab_end() func grab_start(): - if (hoveredSticker and grabbedSticker == null): - grabbedSticker = hoveredSticker + if (hoveredStickerNode and grabbedStickerNode == null): + grabbedStickerNode = hoveredStickerNode - print("Grabbed ", grabbedSticker) - grabbedStickerOffset = grabbedSticker.get_parent().position - get_global_mouse_position() - print("offset =", grabbedStickerOffset, " Stickpos:",grabbedSticker.get_parent().position,"-",get_global_mouse_position() ) - if (grabbedSticker.has_method("on_grab")): - grabbedSticker.on_grab(grabbedStickerOffset) + print("Grabbed ", grabbedStickerNode) + grabbedStickerOffset = grabbedStickerNode.get_parent().position - get_global_mouse_position() + print("offset =", grabbedStickerOffset, " Stickpos:",grabbedStickerNode.get_parent().position,"-",get_global_mouse_position() ) + if (grabbedStickerNode.has_method("on_grab")): + grabbedStickerNode.on_grab(grabbedStickerOffset) func grab_end(): - grabbedSticker.on_released() + if (grabbedStickerNode.has_method("on_released")): + grabbedStickerNode.on_released() print("stopg grabbin at ",query.position ) DebugDraw.points.append(query.position) DebugDraw.drawPoints() - grabbedSticker = null + grabbedStickerNode = null func cursorClick(): - if (hoveredObject and hoveredObject.has_method("on_click")): - hoveredObject.on_click() + if (hoveredCollider and hoveredCollider.has_method("on_click")): + hoveredCollider.on_click() func cursor_look(): - if (grabbedSticker ): + if (grabbedStickerNode ): currentCursorState = CURSOR_STATE.GRABBED - elif (hoveredSticker): + elif (hoveredStickerNode): if ($GrabTimer and !($GrabTimer.is_stopped())): currentCursorState = CURSOR_STATE.GRABBED else: diff --git a/core/Sticker.gd b/core/Sticker.gd index 5af9d00..b870887 100644 --- a/core/Sticker.gd +++ b/core/Sticker.gd @@ -1,106 +1,92 @@ @tool -extends Area2D +@icon("res://textures/stickers/icon_sticker2.svg") +class_name Sticker extends Area2D +## Handle all the sticker-relative gameplay. +## +## Sticker node expect to be a child of a Node2D, who serve as a root for +## all the fonctionnalities. You need to assign nodes for the stickerdetection +## and for the sprites. -#TODO: I need to remake stickers by exporting node directly instead of customizing all the thing in export tab. - -@export_group("Sticker Detection Shape") -@export var Shape :Shape2D: - set(new_shape): - Shape = new_shape - $StickerDetectionShape.shape = Shape - $StickerDetectionShape.queue_redraw() -@export var Position :Vector2: - set(new_position): - Position = new_position - $StickerDetectionShape.position = Position - $StickerDetectionShape.queue_redraw() -@export var Rotation :float: - set(new_rotation): - Rotation = new_rotation - $StickerDetectionShape.rotation = Rotation - $StickerDetectionShape.queue_redraw() - -@export_group("Sticker Sprites") -@export var WorldSprite:Texture2D: - set(new_texture): - WorldSprite = new_texture - $StickerSprite.texture = WorldSprite - $StickerSprite.queue_redraw() -@export var StickerSprite:Texture2D -@export var Offset:Vector2: - set(new_offset): - Offset = new_offset - $StickerSprite.offset = Offset - $StickerSprite.queue_redraw() -@export var FlipH:bool: - set(flip): - FlipH = flip - $StickerSprite.flip_h = FlipH - $StickerSprite.queue_redraw() +@export_group("Nodes") +## The look of the object. If it's multiple sprites, they should be under one main sprite +@export var WorldSprite:Sprite2D +## Optional - The look of the object when grabbed. If empty, OutlineMat will be applied to WorldSprite +@export var StickerSprite:Sprite2D +@export_group("Material") @export var OutlineMat:ShaderMaterial = preload("res://shaders/shaderMaterial_Outline.tres") -@export var PreviewSticker:bool: - set(set_preview): - PreviewSticker = set_preview - if (PreviewSticker): - $StickerSprite.texture = StickerSprite - else: - $StickerSprite.texture = WorldSprite - $StickerSprite.queue_redraw() @export var Foiled:bool #TODO: Foil material and logic +var meta:PackedStringArray = ["sticker"] + +func _init(): + collision_layer = 2 + collision_mask = 0 + set_meta("tags",meta) + monitoring = false + +func _enter_tree(): + set_meta("tags",meta) + if (get_parent() is Sprite2D and WorldSprite == null): + WorldSprite = get_parent() + + func _ready(): - if (position != Vector2(0,0)): - position == Vector2(0,0) - printerr(self," should not have transform, resetting") if (get_parent() == get_tree().root): printerr("stickers should always have a parent") breakpoint - - -func on_released(): + + + +func _process(delta): + pass + +## When the sticker is released +func on_released(CastResult:Array=[]): print(self," released") + #TODO: Need a traceresult to know if it should stay in the stickerstate or be released in the world get_parent().top_level = false get_parent().reparent(MapManager.current_scene.get_child(0)) - for _childNode in get_parent().get_children(): - _childNode.set_deferred("disabled",false) - if(_childNode != self): - _childNode.visible = true + disable_ChildNodes_collisions(false) + update_ChildNodes_visibilty(true) func on_click(): print(self," clicked") +func redraw(): + if (StickerSprite != null): + StickerSprite.queue_redraw() + if (WorldSprite != null): + WorldSprite.queue_redraw() + func on_hover(): if (StickerSprite != null): - $StickerSprite.texture = StickerSprite - else: - $StickerSprite.texture = WorldSprite - $StickerSprite.material = OutlineMat - queue_redraw() + WorldSprite.visible = false + StickerSprite.visible = true + elif (WorldSprite != null): + WorldSprite.material = OutlineMat + redraw() + func on_unhover(): - $StickerSprite.texture = WorldSprite - $StickerSprite.material = null - queue_redraw() - + if (StickerSprite != null): + StickerSprite.visible = false + if (WorldSprite != null): + WorldSprite.material = null + WorldSprite.visible = true + redraw() + func on_grab(_offset:Vector2=Vector2(0.0,0.0)): get_parent().top_level = true get_parent().reparent(get_tree().root) + update_ChildNodes_visibilty(false) + +func update_ChildNodes_visibilty(_visible:bool=true): for _childNode in get_parent().get_children(): - _childNode.set_deferred("disabled",true) - if(_childNode != self): - _childNode.visible = false - - -#func _on_tree_entered(): - #if(ParentSprite != null): - #var StickerTag:Array - #StickerTag.append("sticker") - #Global.add_tags(ParentSprite,StickerTag) - - -#func _on_tree_exited(): - #if(ParentSprite != null): - #var StickerTag:Array - #StickerTag.append("sticker") - #Global.remove_tags(ParentSprite,StickerTag) + if(_childNode != WorldSprite): + _childNode.visible = _visible + +func disable_ChildNodes_collisions(_disable:bool=true): + for _childNode in get_parent().get_children(): + _childNode.set_deferred("disabled",_disable) + diff --git a/core/global.gd b/core/global.gd index ed72a6d..4542741 100644 --- a/core/global.gd +++ b/core/global.gd @@ -1,3 +1,4 @@ +@tool extends Node @@ -19,6 +20,17 @@ func get_tags(selectedObject:Node): printerr("no tags inside %",selectedObject) return _tags +## Add tag on selected object by adding metadata +func add_tag(selectedObject:Node,tag:String): + var _all_tags:PackedStringArray + if (selectedObject.has_meta("tags")): + _all_tags = selectedObject.get_meta("tags") + if (_all_tags.find(tag) == -1): + _all_tags.append(tag) + else: + _all_tags.append(tag) + selectedObject.set_meta("tags",_all_tags) + func add_tags(selectedObject:Node,tags:PackedStringArray): var _all_tags:PackedStringArray if (selectedObject.has_meta("tags")): diff --git a/maps/map1.tres b/maps/map1.tres index e6ef048..ac72f10 100644 --- a/maps/map1.tres +++ b/maps/map1.tres @@ -1,8 +1,9 @@ [gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://cacwy4tka88k1"] -[ext_resource type="Texture2D" uid="uid://bk87x1lpjog5j" path="res://textures/atlas/Floors_05_SPRT.png" id="1_vellv"] +[ext_resource type="Texture2D" uid="uid://bk87x1lpjog5j" path="res://textures/atlas/Floors_05_SPRT.png" id="1_gaubw"] [resource] -atlas = ExtResource("1_vellv") +resource_name = "map1" +atlas = ExtResource("1_gaubw") region = Rect2(0, 0, 1024, 992) filter_clip = true diff --git a/maps/map1.tscn b/maps/map1.tscn index 4d609e0..a038b55 100644 --- a/maps/map1.tscn +++ b/maps/map1.tscn @@ -1,28 +1,21 @@ -[gd_scene load_steps=30 format=3 uid="uid://wlqsvbqpcbh"] +[gd_scene load_steps=27 format=3 uid="uid://wlqsvbqpcbh"] [ext_resource type="Texture2D" uid="uid://cacwy4tka88k1" path="res://maps/map1.tres" id="1_pt5vq"] -[ext_resource type="Texture2D" uid="uid://cxharyv0ajr37" path="res://textures/atlas/DioramaEntrance_All_01_SPRT.png" id="2_n7y5f"] -[ext_resource type="Texture2D" uid="uid://c5bd2ta3esnib" path="res://extracted/4010-A Tiny Sticker Tale review pic 1.jpg" id="3_yh2wy"] [ext_resource type="PackedScene" uid="uid://do65rgg0p2plt" path="res://core/Door.tscn" id="4_lwk0u"] +[ext_resource type="Texture2D" uid="uid://ddajgcwn5ip4c" path="res://textures/sprites/plants_bush1.tres" id="4_m2p3o"] [ext_resource type="PackedScene" uid="uid://bddcriwo55x8k" path="res://prefab/prefab_woddenbridge.tscn" id="4_okpsn"] -[ext_resource type="Texture2D" uid="uid://cun14l52f477p" path="res://textures/atlas/Bushes_All_01_SPRT.png" id="5_xmosd"] -[ext_resource type="Texture2D" uid="uid://dggavne4ueche" path="res://textures/sprites/Tree_Field_01_SPRT.png" id="7_gygvy"] -[ext_resource type="Texture2D" uid="uid://chuv25pm2vqen" path="res://textures/atlas/Rocks_All_01_SPRT.png" id="8_itp05"] +[ext_resource type="Texture2D" uid="uid://ciyh3rnoo4uk" path="res://textures/atlas/SimpleParticles_All_01_SPRT.png" id="6_0dctx"] +[ext_resource type="Texture2D" uid="uid://dcgjlblm2rpy4" path="res://textures/2d_lights_and_shadows_neutral_point_light.webp" id="7_4swoj"] +[ext_resource type="Script" path="res://core/sticker.gd" id="8_c6p5e"] [ext_resource type="Texture2D" uid="uid://dnomlcslicb3k" path="res://textures/sprites/props_fire1.tres" id="10_2ugv3"] -[ext_resource type="Texture2D" uid="uid://b366mcexlko72" path="res://textures/atlas/LogsAndWood_All_01_SPRT.png" id="10_jr64r"] -[ext_resource type="Texture2D" uid="uid://ciyh3rnoo4uk" path="res://textures/atlas/SimpleParticles_All_01_SPRT.png" id="12_ro7fd"] -[ext_resource type="Texture2D" uid="uid://dcgjlblm2rpy4" path="res://textures/2d_lights_and_shadows_neutral_point_light.webp" id="13_sm1ou"] [sub_resource type="AtlasTexture" id="AtlasTexture_gnudx"] -atlas = ExtResource("2_n7y5f") region = Rect2(252, 16, 108, 256) [sub_resource type="AtlasTexture" id="AtlasTexture_ex6vq"] -atlas = ExtResource("2_n7y5f") region = Rect2(0, 16, 228, 80) [sub_resource type="AtlasTexture" id="AtlasTexture_2wdar"] -atlas = ExtResource("5_xmosd") region = Rect2(384, 64, 288, 224) [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_lfx7b"] @@ -34,7 +27,6 @@ radius = 70.0 height = 512.0 [sub_resource type="AtlasTexture" id="AtlasTexture_rn40i"] -atlas = ExtResource("5_xmosd") region = Rect2(736, 96, 224, 160) [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_b3366"] @@ -42,28 +34,24 @@ radius = 65.0 height = 184.05 [sub_resource type="AtlasTexture" id="AtlasTexture_vun1v"] -atlas = ExtResource("8_itp05") region = Rect2(288, 256, 192, 160) [sub_resource type="RectangleShape2D" id="RectangleShape2D_4cdlc"] size = Vector2(133.06, 62.73) [sub_resource type="AtlasTexture" id="AtlasTexture_wpoj4"] -atlas = ExtResource("8_itp05") region = Rect2(1440, 1376, 256, 256) [sub_resource type="RectangleShape2D" id="RectangleShape2D_hk5e3"] size = Vector2(201.89, 146.45) [sub_resource type="AtlasTexture" id="AtlasTexture_w86nr"] -atlas = ExtResource("10_jr64r") region = Rect2(544, 32, 160, 192) [sub_resource type="RectangleShape2D" id="RectangleShape2D_tss3y"] size = Vector2(127.875, 25.5) [sub_resource type="AtlasTexture" id="AtlasTexture_4j533"] -atlas = ExtResource("10_jr64r") region = Rect2(1356, 1216, 192, 80) [sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_jw3i8"] @@ -77,12 +65,15 @@ angle_max = 12.5 gravity = Vector3(0, -20, 0) [sub_resource type="AtlasTexture" id="AtlasTexture_c24s7"] -atlas = ExtResource("12_ro7fd") +atlas = ExtResource("6_0dctx") region = Rect2(0, 0, 128, 160) [sub_resource type="CircleShape2D" id="CircleShape2D_5wedp"] radius = 42.25 +[sub_resource type="CircleShape2D" id="CircleShape2D_wkggp"] +radius = 72.88 + [node name="Map1" type="Node2D"] z_as_relative = false y_sort_enabled = true @@ -138,7 +129,6 @@ visible = false top_level = true position = Vector2(78, -148) scale = Vector2(6.15, 6.15) -texture = ExtResource("3_yh2wy") [node name="Bush1" type="Sprite2D" parent="."] position = Vector2(-2161, 1140) @@ -161,7 +151,6 @@ shape = SubResource("CapsuleShape2D_lfx7b") [node name="Tree1" type="Sprite2D" parent="."] position = Vector2(1592, 606) scale = Vector2(3.80334, 3.95089) -texture = ExtResource("7_gygvy") centered = false offset = Vector2(-251.145, -512) metadata/tags = ["sticker"] @@ -179,7 +168,6 @@ shape = SubResource("CapsuleShape2D_dqo8w") [node name="Tree2" type="Sprite2D" parent="."] position = Vector2(-2399, -55) scale = Vector2(3.80334, 3.95089) -texture = ExtResource("7_gygvy") centered = false offset = Vector2(-251.145, -512) metadata/tags = ["sticker"] @@ -197,7 +185,6 @@ shape = SubResource("CapsuleShape2D_dqo8w") [node name="Tree3" type="Sprite2D" parent="."] position = Vector2(-763, -2021) scale = Vector2(3.80334, 3.95089) -texture = ExtResource("7_gygvy") centered = false offset = Vector2(-251.145, -512) metadata/tags = ["sticker"] @@ -215,7 +202,6 @@ shape = SubResource("CapsuleShape2D_dqo8w") [node name="Tree4" type="Sprite2D" parent="."] position = Vector2(2365, -2258) scale = Vector2(3.80334, 3.95089) -texture = ExtResource("7_gygvy") centered = false offset = Vector2(-251.145, -512) metadata/tags = ["sticker"] @@ -233,17 +219,20 @@ shape = SubResource("CapsuleShape2D_dqo8w") [node name="Bush6" type="Sprite2D" parent="."] position = Vector2(-1556, 293) scale = Vector2(3.80334, 3.95089) -texture = SubResource("AtlasTexture_2wdar") +texture = ExtResource("4_m2p3o") centered = false offset = Vector2(-161.055, -179.785) metadata/tags = ["sticker"] -[node name="Area2D" type="Area2D" parent="Bush6"] +[node name="Sticker" type="Area2D" parent="Bush6" node_paths=PackedStringArray("WorldSprite")] collision_layer = 2 collision_mask = 0 monitoring = false +script = ExtResource("8_c6p5e") +WorldSprite = NodePath("..") +metadata/tags = PackedStringArray("sticker") -[node name="CollisionShape2D" type="CollisionShape2D" parent="Bush6/Area2D"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Bush6/Sticker"] position = Vector2(-4.46976, -71.6294) rotation = 1.6 shape = SubResource("CapsuleShape2D_lfx7b") @@ -256,12 +245,15 @@ centered = false offset = Vector2(-161.055, -179.785) metadata/tags = ["sticker"] -[node name="Area2D" type="Area2D" parent="Bush7"] +[node name="Sticker" type="Area2D" parent="Bush7" node_paths=PackedStringArray("WorldSprite")] collision_layer = 2 collision_mask = 0 monitoring = false +script = ExtResource("8_c6p5e") +WorldSprite = NodePath("..") +metadata/tags = PackedStringArray("sticker") -[node name="CollisionShape2D" type="CollisionShape2D" parent="Bush7/Area2D"] +[node name="CollisionShape2D" type="CollisionShape2D" parent="Bush7/Sticker"] position = Vector2(-4.46976, -71.6294) rotation = 1.6 shape = SubResource("CapsuleShape2D_lfx7b") @@ -416,13 +408,13 @@ shape = SubResource("RectangleShape2D_tss3y") debug_color = Color(0.999472, 0.00663362, 0.0810784, 0.42) [node name="FirePit" type="Sprite2D" parent="."] -z_index = -1 -position = Vector2(-294, -641) +position = Vector2(-315, -588) scale = Vector2(4, 4) texture = ExtResource("10_2ugv3") +offset = Vector2(0, -26.64) [node name="GPUParticles2D" type="GPUParticles2D" parent="FirePit"] -position = Vector2(-1.5, -18.25) +position = Vector2(1.25, -45.75) scale = Vector2(0.5, 0.5) amount = 4 process_material = SubResource("ParticleProcessMaterial_jw3i8") @@ -433,20 +425,33 @@ visibility_rect = Rect2(-160, -160, 320, 320) local_coords = true [node name="StaticBody2D" type="StaticBody2D" parent="FirePit"] +position = Vector2(5.25, -32) [node name="CollisionShape2D" type="CollisionShape2D" parent="FirePit/StaticBody2D"] shape = SubResource("CircleShape2D_5wedp") debug_color = Color(0.937527, 0.247798, 0.087146, 0.42) [node name="PointLight2D" type="PointLight2D" parent="FirePit"] -position = Vector2(4.75, -2) +position = Vector2(8.25, -43) scale = Vector2(0.7, 0.7) color = Color(1, 0.54902, 0.270588, 1) energy = 1.2 shadow_enabled = true -texture = ExtResource("13_sm1ou") +texture = ExtResource("7_4swoj") texture_scale = 1.9 +[node name="Sticker" type="Area2D" parent="FirePit" node_paths=PackedStringArray("WorldSprite")] +position = Vector2(2.75, -32) +collision_layer = 2 +collision_mask = 0 +monitoring = false +script = ExtResource("8_c6p5e") +WorldSprite = NodePath("..") +metadata/tags = PackedStringArray("sticker") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="FirePit/Sticker"] +shape = SubResource("CircleShape2D_wkggp") + [connection signal="property_list_changed" from="Bush1" to="Bush1" method="_on_property_list_changed"] [connection signal="property_list_changed" from="Tree1" to="Tree1" method="_on_property_list_changed"] [connection signal="property_list_changed" from="Tree2" to="Tree2" method="_on_property_list_changed"] diff --git a/textures/stickers/icon_sticker2.svg b/textures/stickers/icon_sticker2.svg new file mode 100644 index 0000000..c3b9010 --- /dev/null +++ b/textures/stickers/icon_sticker2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/textures/stickers/icon_sticker2.svg.import b/textures/stickers/icon_sticker2.svg.import new file mode 100644 index 0000000..e112097 --- /dev/null +++ b/textures/stickers/icon_sticker2.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bc22tbocdun87" +path="res://.godot/imported/icon_sticker2.svg-a942a9bf0ad4999d3046be6cf284193c.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://textures/stickers/icon_sticker2.svg" +dest_files=["res://.godot/imported/icon_sticker2.svg-a942a9bf0ad4999d3046be6cf284193c.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