Compare commits
7 commits
b8794fdc8b
...
25994d0b98
Author | SHA1 | Date | |
---|---|---|---|
|
25994d0b98 | ||
|
f54aa28f8e | ||
|
4e658d2ff1 | ||
|
de2678f43d | ||
|
750f138ee2 | ||
|
ecdc0da046 | ||
|
e8a647c49f |
28 changed files with 252 additions and 150 deletions
|
@ -1,14 +1,14 @@
|
||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
var spaceState
|
var spaceState:World2D
|
||||||
var query : PhysicsPointQueryParameters2D
|
var query : PhysicsPointQueryParameters2D
|
||||||
var CastResult : Array
|
var CastResult : Array
|
||||||
|
|
||||||
var hoveredObjects : Array
|
var hoveredObjects : Array
|
||||||
var hoveredObject
|
var hoveredObject:CollisionObject2D
|
||||||
var hoveredSticker
|
var hoveredSticker:Area2D
|
||||||
var grabbedSticker
|
var grabbedSticker:Area2D
|
||||||
var grabbedStickerOffset
|
var grabbedStickerOffset:Vector2
|
||||||
|
|
||||||
enum CURSOR_STATE {DEFAULT, CLICK, GRAB, GRABBED}
|
enum CURSOR_STATE {DEFAULT, CLICK, GRAB, GRABBED}
|
||||||
var currentCursorState:CURSOR_STATE = CURSOR_STATE.DEFAULT
|
var currentCursorState:CURSOR_STATE = CURSOR_STATE.DEFAULT
|
||||||
|
@ -30,21 +30,13 @@ func _process(_delta):
|
||||||
pointcast()
|
pointcast()
|
||||||
cursor_look()
|
cursor_look()
|
||||||
if (grabbedSticker != null):
|
if (grabbedSticker != null):
|
||||||
grabbedSticker.position = grabbedStickerOffset+get_global_mouse_position()
|
grabbedSticker.get_parent().position = grabbedStickerOffset+get_global_mouse_position()
|
||||||
|
|
||||||
|
|
||||||
func isSticker(selectedObject:Node):
|
|
||||||
var _isSticker:bool = false
|
|
||||||
var _tags = Global.getTags(selectedObject)
|
|
||||||
if (_tags.size() > 0):
|
|
||||||
if (_tags.find("sticker") != -1):
|
|
||||||
_isSticker = true
|
|
||||||
|
|
||||||
return _isSticker
|
|
||||||
|
|
||||||
func pointcast():
|
func pointcast():
|
||||||
resetCast()
|
resetCast()
|
||||||
query.collide_with_areas = true
|
query.collide_with_areas = true
|
||||||
|
query.collide_with_bodies = false
|
||||||
query.position = get_global_mouse_position()
|
query.position = get_global_mouse_position()
|
||||||
CastResult = spaceState.direct_space_state.intersect_point(query)
|
CastResult = spaceState.direct_space_state.intersect_point(query)
|
||||||
# CastResult is not reliable. Objects are added randomly in the array
|
# CastResult is not reliable. Objects are added randomly in the array
|
||||||
|
@ -54,7 +46,7 @@ func pointcast():
|
||||||
#region Fill HoveredObjects
|
#region Fill HoveredObjects
|
||||||
for _object in CastResult:
|
for _object in CastResult:
|
||||||
if(_object.collider.input_pickable == true):
|
if(_object.collider.input_pickable == true):
|
||||||
hoveredObjects.append(_object.collider.get_parent())
|
hoveredObjects.append(_object.collider) #Get the object that have the collision
|
||||||
#endregion
|
#endregion
|
||||||
if (hoveredObjects.size() > 0):
|
if (hoveredObjects.size() > 0):
|
||||||
if (hoveredObjects.size() >= 2):
|
if (hoveredObjects.size() >= 2):
|
||||||
|
@ -67,7 +59,7 @@ func pointcast():
|
||||||
if (hoveredObject and hoveredObject.has_method("on_hover")):
|
if (hoveredObject and hoveredObject.has_method("on_hover")):
|
||||||
hoveredObject.on_hover()
|
hoveredObject.on_hover()
|
||||||
print("Current hovered object :", hoveredObject)
|
print("Current hovered object :", hoveredObject)
|
||||||
if (isSticker(hoveredObject)):
|
if (Global.isSticker(hoveredObject)):
|
||||||
hoveredSticker = hoveredObject
|
hoveredSticker = hoveredObject
|
||||||
print("Current hovered sticker :", hoveredSticker)
|
print("Current hovered sticker :", hoveredSticker)
|
||||||
else:
|
else:
|
||||||
|
@ -81,7 +73,7 @@ func resetCast(bFull = false):
|
||||||
CastResult.clear()
|
CastResult.clear()
|
||||||
hoveredObjects.clear()
|
hoveredObjects.clear()
|
||||||
if bFull:
|
if bFull:
|
||||||
if (hoveredObject != null and hoveredObject.has_method("on_unhover")):
|
if (hoveredObject != null and hoveredObject.has_method("on_unhover") and (hoveredObject != grabbedSticker)):
|
||||||
hoveredObject.on_unhover()
|
hoveredObject.on_unhover()
|
||||||
hoveredObject = null
|
hoveredObject = null
|
||||||
hoveredSticker = null
|
hoveredSticker = null
|
||||||
|
@ -98,7 +90,7 @@ func sortByPosY(objects: Array, ascending_order: bool = true):
|
||||||
|
|
||||||
func comparePosY(a, b):
|
func comparePosY(a, b):
|
||||||
#print("Compare ",a," at ",a.position.y, " and ",b," at ",b.position.y )
|
#print("Compare ",a," at ",a.position.y, " and ",b," at ",b.position.y )
|
||||||
return a.position.y < b.position.y
|
return a.get_parent().position.y < b.get_parent().position.y #Sticker are always at 0, so we need parent position
|
||||||
|
|
||||||
|
|
||||||
func _input(rawInputEvent:InputEvent):
|
func _input(rawInputEvent:InputEvent):
|
||||||
|
@ -115,8 +107,8 @@ func grab_start():
|
||||||
grabbedSticker = hoveredSticker
|
grabbedSticker = hoveredSticker
|
||||||
|
|
||||||
print("Grabbed ", grabbedSticker)
|
print("Grabbed ", grabbedSticker)
|
||||||
grabbedStickerOffset = grabbedSticker.position - get_global_mouse_position()
|
grabbedStickerOffset = grabbedSticker.get_parent().position - get_global_mouse_position()
|
||||||
print("offset =", grabbedStickerOffset, " Stickpos:",grabbedSticker.position,"-",get_global_mouse_position() )
|
print("offset =", grabbedStickerOffset, " Stickpos:",grabbedSticker.get_parent().position,"-",get_global_mouse_position() )
|
||||||
if (grabbedSticker.has_method("on_grab")):
|
if (grabbedSticker.has_method("on_grab")):
|
||||||
grabbedSticker.on_grab(grabbedStickerOffset)
|
grabbedSticker.on_grab(grabbedStickerOffset)
|
||||||
|
|
||||||
|
@ -126,7 +118,6 @@ func grab_end():
|
||||||
print("stopg grabbin at ",query.position )
|
print("stopg grabbin at ",query.position )
|
||||||
DebugDraw.points.append(query.position)
|
DebugDraw.points.append(query.position)
|
||||||
DebugDraw.drawPoints()
|
DebugDraw.drawPoints()
|
||||||
#TODO: Drop the sticker or maybe he will auto-drop ?
|
|
||||||
|
|
||||||
grabbedSticker = null
|
grabbedSticker = null
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ animations = [{
|
||||||
|
|
||||||
[node name="Cursor" type="Node2D"]
|
[node name="Cursor" type="Node2D"]
|
||||||
top_level = true
|
top_level = true
|
||||||
|
z_index = 100
|
||||||
script = ExtResource("1_b5uuj")
|
script = ExtResource("1_b5uuj")
|
||||||
|
|
||||||
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."]
|
||||||
|
@ -60,7 +61,7 @@ centered = false
|
||||||
offset = Vector2(-80, -190)
|
offset = Vector2(-80, -190)
|
||||||
|
|
||||||
[node name="GrabTimer" type="Timer" parent="."]
|
[node name="GrabTimer" type="Timer" parent="."]
|
||||||
wait_time = 0.5
|
wait_time = 0.3
|
||||||
one_shot = true
|
one_shot = true
|
||||||
|
|
||||||
[connection signal="animation_changed" from="AnimatedSprite2D" to="." method="_on_animated_sprite_2d_animation_changed"]
|
[connection signal="animation_changed" from="AnimatedSprite2D" to="." method="_on_animated_sprite_2d_animation_changed"]
|
||||||
|
|
|
@ -3,8 +3,7 @@ extends Sprite2D
|
||||||
@export_group("Travel settings")
|
@export_group("Travel settings")
|
||||||
@export_file("*.tscn") var NextScene:String
|
@export_file("*.tscn") var NextScene:String
|
||||||
@export_enum("LEFT","RIGHT","UP","DOWN") var Travel :int
|
@export_enum("LEFT","RIGHT","UP","DOWN") var Travel :int
|
||||||
@export var Spawn_Position:Vector2 = Vector2(0,0
|
@export var Spawn_Position:Vector2 = Vector2(0,0) #TODO: Extrapoler la position suivante en fonction de l'enum Travel
|
||||||
)
|
|
||||||
var NextSceneLoaded
|
var NextSceneLoaded
|
||||||
|
|
||||||
func _on_area_2d_area_entered(area):
|
func _on_area_2d_area_entered(area):
|
||||||
|
|
107
core/Sticker.gd
107
core/Sticker.gd
|
@ -1,23 +1,106 @@
|
||||||
extends Node
|
@tool
|
||||||
|
extends Area2D
|
||||||
|
|
||||||
|
#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 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
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready():
|
func _ready():
|
||||||
pass # Replace with function body.
|
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
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
func on_released():
|
||||||
func _process(delta):
|
print(self," released")
|
||||||
pass
|
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
|
||||||
|
|
||||||
|
|
||||||
func _on_area_2d_mouse_entered():
|
func on_click():
|
||||||
pass # Replace with function body.
|
print(self," clicked")
|
||||||
|
|
||||||
|
func on_hover():
|
||||||
|
if (StickerSprite != null):
|
||||||
|
$StickerSprite.texture = StickerSprite
|
||||||
|
else:
|
||||||
|
$StickerSprite.texture = WorldSprite
|
||||||
|
$StickerSprite.material = OutlineMat
|
||||||
|
queue_redraw()
|
||||||
|
|
||||||
|
func on_unhover():
|
||||||
|
$StickerSprite.texture = WorldSprite
|
||||||
|
$StickerSprite.material = null
|
||||||
|
queue_redraw()
|
||||||
|
|
||||||
|
func on_grab(_offset:Vector2=Vector2(0.0,0.0)):
|
||||||
|
get_parent().top_level = true
|
||||||
|
get_parent().reparent(get_tree().root)
|
||||||
|
for _childNode in get_parent().get_children():
|
||||||
|
_childNode.set_deferred("disabled",true)
|
||||||
|
if(_childNode != self):
|
||||||
|
_childNode.visible = false
|
||||||
|
|
||||||
|
|
||||||
func _on_area_2d_mouse_exited():
|
#func _on_tree_entered():
|
||||||
pass # Replace with function body.
|
#if(ParentSprite != null):
|
||||||
|
#var StickerTag:Array
|
||||||
|
#StickerTag.append("sticker")
|
||||||
|
#Global.add_tags(ParentSprite,StickerTag)
|
||||||
|
|
||||||
|
|
||||||
func _on_tree_entered():
|
#func _on_tree_exited():
|
||||||
pass # Replace with function body.
|
#if(ParentSprite != null):
|
||||||
|
#var StickerTag:Array
|
||||||
|
#StickerTag.append("sticker")
|
||||||
|
#Global.remove_tags(ParentSprite,StickerTag)
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
[gd_scene load_steps=2 format=3 uid="uid://kbso0l2uk2n7"]
|
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_4kxk0"]
|
|
||||||
script/source = "extends Area2D
|
|
||||||
|
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
|
||||||
func _ready():
|
|
||||||
pass # Replace with function body.
|
|
||||||
|
|
||||||
|
|
||||||
# Called every frame. 'delta' is the elapsed time since the previous frame.
|
|
||||||
func _process(delta):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
func _on_mouse_entered():
|
|
||||||
pass # Replace with function body.
|
|
||||||
|
|
||||||
|
|
||||||
func _on_mouse_exited():
|
|
||||||
pass # Replace with function body.
|
|
||||||
"
|
|
||||||
|
|
||||||
[node name="StickerDetection" type="Area2D"]
|
|
||||||
monitoring = false
|
|
||||||
script = SubResource("GDScript_4kxk0")
|
|
||||||
|
|
||||||
[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"]
|
|
||||||
[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"]
|
|
19
core/StickerArea.tscn
Normal file
19
core/StickerArea.tscn
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://kbso0l2uk2n7"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://core/Sticker.gd" id="1_7yoct"]
|
||||||
|
|
||||||
|
[node name="Sticker" type="Area2D"]
|
||||||
|
collision_layer = 2
|
||||||
|
collision_mask = 255
|
||||||
|
monitoring = false
|
||||||
|
script = ExtResource("1_7yoct")
|
||||||
|
metadata/tags = PackedStringArray("sticker")
|
||||||
|
|
||||||
|
[node name="StickerDetectionShape" type="CollisionShape2D" parent="."]
|
||||||
|
|
||||||
|
[node name="StickerSprite" type="Sprite2D" parent="."]
|
||||||
|
|
||||||
|
[connection signal="mouse_entered" from="." to="." method="_on_mouse_entered"]
|
||||||
|
[connection signal="mouse_exited" from="." to="." method="_on_mouse_exited"]
|
||||||
|
[connection signal="tree_entered" from="." to="." method="_on_tree_entered"]
|
||||||
|
[connection signal="tree_exited" from="." to="." method="_on_tree_exited"]
|
|
@ -4,7 +4,7 @@
|
||||||
resource_name = "bridge"
|
resource_name = "bridge"
|
||||||
script/source = "extends Area2D
|
script/source = "extends Area2D
|
||||||
|
|
||||||
var wallObject : Array
|
var wallObjects : Array
|
||||||
|
|
||||||
# Called when the node enters the scene tree for the first time.
|
# Called when the node enters the scene tree for the first time.
|
||||||
func _ready():
|
func _ready():
|
||||||
|
@ -18,16 +18,18 @@ func _process(_delta):
|
||||||
|
|
||||||
func _on_body_entered(object):
|
func _on_body_entered(object):
|
||||||
print(\"Entered %d\",object)
|
print(\"Entered %d\",object)
|
||||||
if (object.has_meta(\"Type\") and object.get_meta(\"Type\") == \"Player\" ):
|
if (object.has_meta(\"Type\") and object.get_meta(\"Type\") == \"Player\" and wallObjects != null ):
|
||||||
for _object in wallObject:
|
for _object in wallObjects:
|
||||||
|
if (_object != null):
|
||||||
_object.process_mode = Node.PROCESS_MODE_DISABLED
|
_object.process_mode = Node.PROCESS_MODE_DISABLED
|
||||||
else:
|
else:
|
||||||
wallObject.append(object)
|
wallObjects.append(object)
|
||||||
|
|
||||||
|
|
||||||
func _on_body_exited(object):
|
func _on_body_exited(object):
|
||||||
if (object.has_meta(\"Type\") and object.get_meta(\"Type\") == \"Player\" ):
|
if (object.has_meta(\"Type\") and object.get_meta(\"Type\") == \"Player\" and wallObjects != null ):
|
||||||
for _object in wallObject:
|
for _object in wallObjects:
|
||||||
|
if (_object != null):
|
||||||
_object.process_mode = Node.PROCESS_MODE_INHERIT
|
_object.process_mode = Node.PROCESS_MODE_INHERIT
|
||||||
"
|
"
|
||||||
|
|
||||||
|
|
|
@ -10,8 +10,8 @@ func _ready():
|
||||||
func _process(_delta):
|
func _process(_delta):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
func getTags(selectedObject:Node):
|
func get_tags(selectedObject:Node):
|
||||||
var _tags: Array
|
var _tags: PackedStringArray
|
||||||
if (selectedObject.has_meta("tags")):
|
if (selectedObject.has_meta("tags")):
|
||||||
_tags = selectedObject.get_meta("tags")
|
_tags = selectedObject.get_meta("tags")
|
||||||
return _tags
|
return _tags
|
||||||
|
@ -19,3 +19,27 @@ func getTags(selectedObject:Node):
|
||||||
printerr("no tags inside %",selectedObject)
|
printerr("no tags inside %",selectedObject)
|
||||||
return _tags
|
return _tags
|
||||||
|
|
||||||
|
func add_tags(selectedObject:Node,tags:PackedStringArray):
|
||||||
|
var _all_tags:PackedStringArray
|
||||||
|
if (selectedObject.has_meta("tags")):
|
||||||
|
_all_tags = selectedObject.get_meta("tags")
|
||||||
|
_all_tags.append_array(tags)
|
||||||
|
selectedObject.set_meta("tags",_all_tags)
|
||||||
|
|
||||||
|
func remove_tags(selectedObject:Node,tags:PackedStringArray):
|
||||||
|
if (selectedObject.has_meta("tags")):
|
||||||
|
var _all_tags:PackedStringArray
|
||||||
|
_all_tags = selectedObject.get_meta("tags")
|
||||||
|
for _tag:String in tags:
|
||||||
|
if(_all_tags.find(_tag) !=-1):
|
||||||
|
_all_tags.remove_at(_all_tags.find(_tag))
|
||||||
|
selectedObject.set_meta("tags",_all_tags)
|
||||||
|
|
||||||
|
func isSticker(selectedObject:Node):
|
||||||
|
var _isSticker:bool = false
|
||||||
|
var _tags = get_tags(selectedObject)
|
||||||
|
if (_tags.size() > 0):
|
||||||
|
if (_tags.find("sticker") != -1):
|
||||||
|
_isSticker = true
|
||||||
|
|
||||||
|
return _isSticker
|
||||||
|
|
|
@ -26,6 +26,7 @@ func changeSkin(NewSkin:CanvasTexture,_NewHat:CanvasTexture = null):
|
||||||
Sprite.texture = CurrentHat
|
Sprite.texture = CurrentHat
|
||||||
|
|
||||||
func get_input():
|
func get_input():
|
||||||
|
#TODO: Need to freeze the player while he is traveling
|
||||||
var directionX = Input.get_axis("move_left", "move_right")
|
var directionX = Input.get_axis("move_left", "move_right")
|
||||||
var directionY = Input.get_axis("move_up", "move_down")
|
var directionY = Input.get_axis("move_up", "move_down")
|
||||||
var mouseDirectionX = Input.get_axis("mouse_left", "mouse_right")
|
var mouseDirectionX = Input.get_axis("mouse_left", "mouse_right")
|
||||||
|
|
|
@ -5,7 +5,8 @@ platform="Windows Desktop"
|
||||||
runnable=true
|
runnable=true
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="resources"
|
||||||
|
export_files=PackedStringArray("res://animations/player/idle.res", "res://animations/player/Walk.res", "res://core/Background.tscn", "res://core/bridgeNode.tscn", "res://core/Cursor.gd", "res://core/Cursor.tscn", "res://core/debugDraw.tscn", "res://core/Door.gd", "res://core/Door.tscn", "res://core/global.gd", "res://core/player.gd", "res://core/player.tscn", "res://core/sceneInstance.gd", "res://core/Sticker.gd", "res://core/Sticker.tscn", "res://maps/gym.tscn", "res://maps/mainMenu.tscn", "res://maps/map1.tres", "res://maps/map1.tscn", "res://maps/map2.tres", "res://maps/map2.tscn", "res://maps/mapManager.tscn", "res://prefab/free_sticker.tscn", "res://prefab/prefab_woddenbridge.tscn", "res://prefab/solid_sticker.tscn", "res://shaders/shaderMaterial_Outline.tres", "res://shaders/shaders_glitch.gdshader", "res://shaders/shader_color_replacer.gdshader", "res://shaders/shader_outline2.gdshader", "res://shaders/shader_outline3.gdshader", "res://shaders/shader_outline.gdshader", "res://textures/atlas/Atlas_Buildings_01.png", "res://textures/atlas/Atlas_Builds_01.png", "res://textures/atlas/Atlas_Builds_02.png", "res://textures/atlas/Atlas_New_items.png", "res://textures/atlas/Bushes_All_01_SPRT.png", "res://textures/atlas/DioramaEntrance_All_01_SPRT.png", "res://textures/atlas/Floors_01_SPRT.png", "res://textures/atlas/Floors_02_SPRT.png", "res://textures/atlas/Floors_03_SPRT.png", "res://textures/atlas/Floors_04_SPRT.png", "res://textures/atlas/Floors_05_SPRT.png", "res://textures/atlas/Floors_06_SPRT.png", "res://textures/atlas/Floors_07_SPRT.png", "res://textures/atlas/Floors_08_SPRT.png", "res://textures/atlas/Floors_09_SPRT.png", "res://textures/atlas/Floors_10_SPRT.png", "res://textures/atlas/Floors_11_SPRT.png", "res://textures/atlas/Floors_12_SPRT.png", "res://textures/atlas/Floors_13_SPRT.png", "res://textures/atlas/Floors_14_SPRT.png", "res://textures/atlas/Floors_15_SPRT.png", "res://textures/atlas/Floors_MountBack_SPRT.png", "res://textures/atlas/GroundExtensions_All_01_SPRT.png", "res://textures/atlas/LogsAndWood_All_01_SPRT.png", "res://textures/atlas/Plants_All_01_SPRT.png", "res://textures/atlas/Props_All_01_SPRT.png", "res://textures/atlas/Rocks_All_01_SPRT.png", "res://textures/atlas/SPRT_Hand.png", "res://textures/pattern/Pattern_Desert.png", "res://textures/pattern/Pattern_Forest.png", "res://textures/pattern/Pattern_Mountains.png", "res://textures/pattern/Pattern_swamp.png", "res://textures/player/archer.png", "res://textures/player/currentCloth.tres", "res://textures/player/currentHat.tres", "res://textures/player/hat-layout.jpg", "res://textures/player/hermandad-beige.png", "res://textures/player/hermandad-black.png", "res://textures/player/hermandad-brown.png", "res://textures/player/player-layout.jpg", "res://textures/player/playerSkin_ref.png", "res://textures/player/witch.png", "res://textures/2d_lights_and_shadows_neutral_point_light.webp", "res://textures/cursor_click.tres", "res://textures/cursor_default.tres", "res://textures/cursor_grab.tres", "res://textures/cursor_grab_01.tres", "res://textures/cursor_grab_02.tres", "res://textures/cursor_grab_03.tres", "res://icon.svg")
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="builds/stickerClone.exe"
|
export_path="builds/stickerClone.exe"
|
||||||
|
@ -68,7 +69,8 @@ platform="Linux/X11"
|
||||||
runnable=true
|
runnable=true
|
||||||
dedicated_server=false
|
dedicated_server=false
|
||||||
custom_features=""
|
custom_features=""
|
||||||
export_filter="all_resources"
|
export_filter="resources"
|
||||||
|
export_files=PackedStringArray("res://animations/player/idle.res", "res://animations/player/Walk.res", "res://core/Background.tscn", "res://core/bridgeNode.tscn", "res://core/Cursor.gd", "res://core/Cursor.tscn", "res://core/debugDraw.tscn", "res://core/Door.gd", "res://core/Door.tscn", "res://core/global.gd", "res://core/player.gd", "res://core/player.tscn", "res://core/sceneInstance.gd", "res://core/Sticker.gd", "res://core/Sticker.tscn", "res://maps/gym.tscn", "res://maps/mainMenu.tscn", "res://maps/map1.tres", "res://maps/map1.tscn", "res://maps/map2.tres", "res://maps/map2.tscn", "res://maps/mapManager.tscn", "res://prefab/free_sticker.tscn", "res://prefab/prefab_woddenbridge.tscn", "res://prefab/solid_sticker.tscn", "res://shaders/shaderMaterial_Outline.tres", "res://shaders/shaders_glitch.gdshader", "res://shaders/shader_color_replacer.gdshader", "res://shaders/shader_outline2.gdshader", "res://shaders/shader_outline3.gdshader", "res://shaders/shader_outline.gdshader", "res://textures/atlas/Atlas_Buildings_01.png", "res://textures/atlas/Atlas_Builds_01.png", "res://textures/atlas/Atlas_Builds_02.png", "res://textures/atlas/Atlas_New_items.png", "res://textures/atlas/Bushes_All_01_SPRT.png", "res://textures/atlas/DioramaEntrance_All_01_SPRT.png", "res://textures/atlas/Floors_01_SPRT.png", "res://textures/atlas/Floors_02_SPRT.png", "res://textures/atlas/Floors_03_SPRT.png", "res://textures/atlas/Floors_04_SPRT.png", "res://textures/atlas/Floors_05_SPRT.png", "res://textures/atlas/Floors_06_SPRT.png", "res://textures/atlas/Floors_07_SPRT.png", "res://textures/atlas/Floors_08_SPRT.png", "res://textures/atlas/Floors_09_SPRT.png", "res://textures/atlas/Floors_10_SPRT.png", "res://textures/atlas/Floors_11_SPRT.png", "res://textures/atlas/Floors_12_SPRT.png", "res://textures/atlas/Floors_13_SPRT.png", "res://textures/atlas/Floors_14_SPRT.png", "res://textures/atlas/Floors_15_SPRT.png", "res://textures/atlas/Floors_MountBack_SPRT.png", "res://textures/atlas/GroundExtensions_All_01_SPRT.png", "res://textures/atlas/LogsAndWood_All_01_SPRT.png", "res://textures/atlas/Plants_All_01_SPRT.png", "res://textures/atlas/Props_All_01_SPRT.png", "res://textures/atlas/Rocks_All_01_SPRT.png", "res://textures/atlas/SPRT_Hand.png", "res://textures/pattern/Pattern_Desert.png", "res://textures/pattern/Pattern_Forest.png", "res://textures/pattern/Pattern_Mountains.png", "res://textures/pattern/Pattern_swamp.png", "res://textures/player/archer.png", "res://textures/player/currentCloth.tres", "res://textures/player/currentHat.tres", "res://textures/player/hat-layout.jpg", "res://textures/player/hermandad-beige.png", "res://textures/player/hermandad-black.png", "res://textures/player/hermandad-brown.png", "res://textures/player/player-layout.jpg", "res://textures/player/playerSkin_ref.png", "res://textures/player/witch.png", "res://textures/2d_lights_and_shadows_neutral_point_light.webp", "res://textures/cursor_click.tres", "res://textures/cursor_default.tres", "res://textures/cursor_grab.tres", "res://textures/cursor_grab_01.tres", "res://textures/cursor_grab_02.tres", "res://textures/cursor_grab_03.tres", "res://icon.svg")
|
||||||
include_filter=""
|
include_filter=""
|
||||||
exclude_filter=""
|
exclude_filter=""
|
||||||
export_path="builds/StickerClone.x86_64"
|
export_path="builds/StickerClone.x86_64"
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://domcpxdf6lqpb" path="res://prefab/free_sticker.tscn" id="4_2tdya"]
|
[ext_resource type="PackedScene" uid="uid://domcpxdf6lqpb" path="res://prefab/free_sticker.tscn" id="4_2tdya"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cxharyv0ajr37" path="res://textures/atlas/DioramaEntrance_All_01_SPRT.png" id="4_lgnnp"]
|
[ext_resource type="Texture2D" uid="uid://cxharyv0ajr37" path="res://textures/atlas/DioramaEntrance_All_01_SPRT.png" id="4_lgnnp"]
|
||||||
[ext_resource type="PackedScene" uid="uid://do65rgg0p2plt" path="res://core/Door.tscn" id="4_yvr3q"]
|
[ext_resource type="PackedScene" uid="uid://do65rgg0p2plt" path="res://core/Door.tscn" id="4_yvr3q"]
|
||||||
[ext_resource type="Texture2D" uid="uid://dggavne4ueche" path="res://extracted/Texture2D/Tree_Field_01_SPRT.png" id="5_lwnej"]
|
[ext_resource type="Texture2D" uid="uid://dggavne4ueche" path="res://textures/sprites/Tree_Field_01_SPRT.png" id="5_lwnej"]
|
||||||
[ext_resource type="PackedScene" uid="uid://6ww1g2enfdx3" path="res://prefab/solid_sticker.tscn" id="6_k22qa"]
|
[ext_resource type="PackedScene" uid="uid://6ww1g2enfdx3" path="res://prefab/solid_sticker.tscn" id="6_k22qa"]
|
||||||
[ext_resource type="Texture2D" uid="uid://chuv25pm2vqen" path="res://textures/atlas/Rocks_All_01_SPRT.png" id="7_pykf8"]
|
[ext_resource type="Texture2D" uid="uid://chuv25pm2vqen" path="res://textures/atlas/Rocks_All_01_SPRT.png" id="7_pykf8"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b366mcexlko72" path="res://textures/atlas/LogsAndWood_All_01_SPRT.png" id="8_ugxkt"]
|
[ext_resource type="Texture2D" uid="uid://b366mcexlko72" path="res://textures/atlas/LogsAndWood_All_01_SPRT.png" id="8_ugxkt"]
|
||||||
|
|
|
@ -1,68 +1,17 @@
|
||||||
[gd_scene load_steps=4 format=3 uid="uid://domcpxdf6lqpb"]
|
[gd_scene load_steps=3 format=3 uid="uid://domcpxdf6lqpb"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://cun14l52f477p" path="res://textures/atlas/Bushes_All_01_SPRT.png" id="1_1wk1p"]
|
[ext_resource type="PackedScene" uid="uid://kbso0l2uk2n7" path="res://core/StickerArea.tscn" id="2_84v7t"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2wdar"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_2wdar"]
|
||||||
atlas = ExtResource("1_1wk1p")
|
|
||||||
region = Rect2(384, 64, 288, 224)
|
region = Rect2(384, 64, 288, 224)
|
||||||
|
|
||||||
[sub_resource type="GDScript" id="GDScript_uqtu8"]
|
|
||||||
script/source = "@tool
|
|
||||||
extends Sprite2D
|
|
||||||
|
|
||||||
var OutlineMat:ShaderMaterial = preload(\"res://shaders/shaderMaterial_Outline.tres\")
|
|
||||||
|
|
||||||
@export_group(\"Sticker Detection Shape\")
|
|
||||||
@export var Shape :Shape2D:
|
|
||||||
set(new_shape):
|
|
||||||
Shape = new_shape
|
|
||||||
$Area2D/CollisionShape2D.shape = Shape
|
|
||||||
$Area2D/CollisionShape2D.queue_redraw()
|
|
||||||
@export var Position :Vector2:
|
|
||||||
set(new_position):
|
|
||||||
Position = new_position
|
|
||||||
$Area2D/CollisionShape2D.position = Position
|
|
||||||
$Area2D/CollisionShape2D.queue_redraw()
|
|
||||||
@export var Rotation :float:
|
|
||||||
set(new_rotation):
|
|
||||||
Rotation = new_rotation
|
|
||||||
$Area2D/CollisionShape2D.rotation = Rotation
|
|
||||||
$Area2D/CollisionShape2D.queue_redraw()
|
|
||||||
|
|
||||||
|
|
||||||
func on_released():
|
|
||||||
print(self,\" released\")
|
|
||||||
|
|
||||||
func on_click():
|
|
||||||
print(self,\" clicked\")
|
|
||||||
|
|
||||||
func on_hover():
|
|
||||||
material = OutlineMat
|
|
||||||
queue_redraw()
|
|
||||||
|
|
||||||
func on_unhover():
|
|
||||||
material = null
|
|
||||||
queue_redraw()
|
|
||||||
|
|
||||||
func on_grab(_offset:Vector2=Vector2(0.0,0.0)):
|
|
||||||
pass
|
|
||||||
"
|
|
||||||
|
|
||||||
[node name="FreeSticker1" type="Sprite2D"]
|
[node name="FreeSticker1" type="Sprite2D"]
|
||||||
scale = Vector2(3.80334, 3.95089)
|
scale = Vector2(3.80334, 3.95089)
|
||||||
texture = SubResource("AtlasTexture_2wdar")
|
texture = SubResource("AtlasTexture_2wdar")
|
||||||
centered = false
|
centered = false
|
||||||
offset = Vector2(-161.055, -179.785)
|
offset = Vector2(-161.055, -179.785)
|
||||||
script = SubResource("GDScript_uqtu8")
|
|
||||||
metadata/tags = ["sticker"]
|
metadata/tags = ["sticker"]
|
||||||
|
|
||||||
[node name="Area2D" type="Area2D" parent="."]
|
[node name="StickerDetection" parent="." instance=ExtResource("2_84v7t")]
|
||||||
collision_layer = 2
|
|
||||||
collision_mask = 0
|
|
||||||
monitoring = false
|
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
|
|
||||||
position = Vector2(-4.46976, -71.6294)
|
|
||||||
rotation = 1.5708
|
|
||||||
|
|
||||||
[connection signal="property_list_changed" from="." to="." method="_on_property_list_changed"]
|
[connection signal="property_list_changed" from="." to="." method="_on_property_list_changed"]
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
[gd_scene load_steps=4 format=3 uid="uid://bddcriwo55x8k"]
|
[gd_scene load_steps=3 format=3 uid="uid://bddcriwo55x8k"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" uid="uid://b366mcexlko72" path="res://textures/atlas/LogsAndWood_All_01_SPRT.png" id="1_lvitw"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://clqvgh6qmglue" path="res://core/bridgeNode.tscn" id="2_te8ug"]
|
[ext_resource type="PackedScene" uid="uid://clqvgh6qmglue" path="res://core/bridgeNode.tscn" id="2_te8ug"]
|
||||||
|
|
||||||
[sub_resource type="AtlasTexture" id="AtlasTexture_nkyhf"]
|
[sub_resource type="AtlasTexture" id="AtlasTexture_nkyhf"]
|
||||||
atlas = ExtResource("1_lvitw")
|
|
||||||
region = Rect2(72, 1392, 216, 272)
|
region = Rect2(72, 1392, 216, 272)
|
||||||
|
|
||||||
[node name="WoodenBridge" type="Sprite2D"]
|
[node name="WoodenBridge" type="Sprite2D"]
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://ciyh3rnoo4uk"
|
uid="uid://ciyh3rnoo4uk"
|
||||||
path="res://.godot/imported/SimpleParticles_All_01_SPRT.png-6334fcb848493621387efb6556c81e19.ctex"
|
path="res://.godot/imported/SimpleParticles_All_01_SPRT.png-7694919abde183df9e6646702e07bee1.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://extracted/Texture2D/SimpleParticles_All_01_SPRT.png"
|
source_file="res://textures/atlas/SimpleParticles_All_01_SPRT.png"
|
||||||
dest_files=["res://.godot/imported/SimpleParticles_All_01_SPRT.png-6334fcb848493621387efb6556c81e19.ctex"]
|
dest_files=["res://.godot/imported/SimpleParticles_All_01_SPRT.png-7694919abde183df9e6646702e07bee1.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://xx3dwpwk467v"
|
uid="uid://xx3dwpwk467v"
|
||||||
path="res://.godot/imported/FireStickers.png-259d039f52ae610545db7b1f9c72e648.ctex"
|
path="res://.godot/imported/FireStickers.png-b1f6454cf2d8ec7c882729598eb9bead.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://extracted/Texture2D/FireStickers.png"
|
source_file="res://textures/sprites/FireStickers.png"
|
||||||
dest_files=["res://.godot/imported/FireStickers.png-259d039f52ae610545db7b1f9c72e648.ctex"]
|
dest_files=["res://.godot/imported/FireStickers.png-b1f6454cf2d8ec7c882729598eb9bead.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
|
@ -3,15 +3,15 @@
|
||||||
importer="texture"
|
importer="texture"
|
||||||
type="CompressedTexture2D"
|
type="CompressedTexture2D"
|
||||||
uid="uid://dggavne4ueche"
|
uid="uid://dggavne4ueche"
|
||||||
path="res://.godot/imported/Tree_Field_01_SPRT.png-cf2a7d71334800fb9c2ea7c429535d5c.ctex"
|
path="res://.godot/imported/Tree_Field_01_SPRT.png-2a31f32b148af262ecdd14c661e63993.ctex"
|
||||||
metadata={
|
metadata={
|
||||||
"vram_texture": false
|
"vram_texture": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
|
|
||||||
source_file="res://extracted/Texture2D/Tree_Field_01_SPRT.png"
|
source_file="res://textures/sprites/Tree_Field_01_SPRT.png"
|
||||||
dest_files=["res://.godot/imported/Tree_Field_01_SPRT.png-cf2a7d71334800fb9c2ea7c429535d5c.ctex"]
|
dest_files=["res://.godot/imported/Tree_Field_01_SPRT.png-2a31f32b148af262ecdd14c661e63993.ctex"]
|
||||||
|
|
||||||
[params]
|
[params]
|
||||||
|
|
7
textures/sprites/floor_door_grass_down1.tres
Normal file
7
textures/sprites/floor_door_grass_down1.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://dkeu83h43pw1o"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cxharyv0ajr37" path="res://textures/atlas/DioramaEntrance_All_01_SPRT.png" id="1_mxci2"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_mxci2")
|
||||||
|
region = Rect2(7, 98, 220, 114)
|
7
textures/sprites/floor_door_grass_right1.tres
Normal file
7
textures/sprites/floor_door_grass_right1.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://bm2nsrfle5nsd"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cxharyv0ajr37" path="res://textures/atlas/DioramaEntrance_All_01_SPRT.png" id="1_8pcct"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_8pcct")
|
||||||
|
region = Rect2(252, 16, 108, 256)
|
7
textures/sprites/floor_door_grass_up1.tres
Normal file
7
textures/sprites/floor_door_grass_up1.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://b2nhenx3l2uww"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cxharyv0ajr37" path="res://textures/atlas/DioramaEntrance_All_01_SPRT.png" id="1_bsuil"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_bsuil")
|
||||||
|
region = Rect2(0, 16, 228, 80)
|
7
textures/sprites/plants_bush1.tres
Normal file
7
textures/sprites/plants_bush1.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://ddajgcwn5ip4c"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cun14l52f477p" path="res://textures/atlas/Bushes_All_01_SPRT.png" id="1_o3c46"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_o3c46")
|
||||||
|
region = Rect2(384, 64, 320, 224)
|
7
textures/sprites/props_log1.tres
Normal file
7
textures/sprites/props_log1.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://1qfjbuyf5aq5"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b366mcexlko72" path="res://textures/atlas/LogsAndWood_All_01_SPRT.png" id="1_0edjn"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_0edjn")
|
||||||
|
region = Rect2(544, 32, 160, 192)
|
7
textures/sprites/props_wood_bridge1.tres
Normal file
7
textures/sprites/props_wood_bridge1.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://bfnbnuclg8ab0"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b366mcexlko72" path="res://textures/atlas/LogsAndWood_All_01_SPRT.png" id="1_686v7"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_686v7")
|
||||||
|
region = Rect2(72, 1392, 216, 272)
|
7
textures/sprites/props_woodbarrer.tres
Normal file
7
textures/sprites/props_woodbarrer.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://51ntd0qmjw5j"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b366mcexlko72" path="res://textures/atlas/LogsAndWood_All_01_SPRT.png" id="1_tl1y6"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_tl1y6")
|
||||||
|
region = Rect2(1356, 1216, 192, 80)
|
7
textures/sprites/rocks_rock1.tres
Normal file
7
textures/sprites/rocks_rock1.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://c6acjgu8jnrkl"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://chuv25pm2vqen" path="res://textures/atlas/Rocks_All_01_SPRT.png" id="1_epk7g"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_epk7g")
|
||||||
|
region = Rect2(1440, 1376, 256, 256)
|
7
textures/sprites/rocks_rock2.tres
Normal file
7
textures/sprites/rocks_rock2.tres
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://cup0xru4j84wj"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://chuv25pm2vqen" path="res://textures/atlas/Rocks_All_01_SPRT.png" id="1_jaqtq"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
atlas = ExtResource("1_jaqtq")
|
||||||
|
region = Rect2(288, 256, 192, 160)
|
Loading…
Reference in a new issue