Compare commits
5 commits
1a77fe1df6
...
d520cd58b9
Author | SHA1 | Date | |
---|---|---|---|
|
d520cd58b9 | ||
|
9bfdaf3d0b | ||
|
209af3e7e7 | ||
|
79a577272a | ||
|
462bc799c3 |
12 changed files with 209 additions and 289 deletions
|
@ -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:
|
||||
|
|
148
core/Sticker.gd
148
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)
|
||||
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
[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"]
|
|
@ -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")):
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"]
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
[gd_scene load_steps=3 format=3 uid="uid://domcpxdf6lqpb"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://kbso0l2uk2n7" path="res://core/StickerArea.tscn" id="2_84v7t"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2wdar"]
|
||||
region = Rect2(384, 64, 288, 224)
|
||||
|
||||
[node name="FreeSticker1" type="Sprite2D"]
|
||||
scale = Vector2(3.80334, 3.95089)
|
||||
texture = SubResource("AtlasTexture_2wdar")
|
||||
centered = false
|
||||
offset = Vector2(-161.055, -179.785)
|
||||
metadata/tags = ["sticker"]
|
||||
|
||||
[node name="StickerDetection" parent="." instance=ExtResource("2_84v7t")]
|
||||
|
||||
[connection signal="property_list_changed" from="." to="." method="_on_property_list_changed"]
|
|
@ -1,93 +0,0 @@
|
|||
[gd_scene load_steps=5 format=3 uid="uid://6ww1g2enfdx3"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://cun14l52f477p" path="res://textures/atlas/Bushes_All_01_SPRT.png" id="1_ssqve"]
|
||||
|
||||
[sub_resource type="AtlasTexture" id="AtlasTexture_2wdar"]
|
||||
atlas = ExtResource("1_ssqve")
|
||||
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 StickerShape :Shape2D:
|
||||
set(new_shape):
|
||||
StickerShape = new_shape
|
||||
$Area2D/StickerShape2D.shape = StickerShape
|
||||
$Area2D/StickerShape2D.queue_redraw()
|
||||
@export var Position :Vector2:
|
||||
set(new_position):
|
||||
Position = new_position
|
||||
$Area2D/StickerShape2D.position = Position
|
||||
$Area2D/StickerShape2D.queue_redraw()
|
||||
@export var Rotation :float:
|
||||
set(new_rotation):
|
||||
Rotation = new_rotation
|
||||
$Area2D/StickerShape2D.rotation = Rotation
|
||||
$Area2D/StickerShape2D.queue_redraw()
|
||||
|
||||
@export_group(\"Collision Shape\")
|
||||
@export var CollisionShape :Shape2D:
|
||||
set(new_CollisionShape):
|
||||
CollisionShape = new_CollisionShape
|
||||
$StaticBody2D/CollisionShape2D.shape = CollisionShape
|
||||
$StaticBody2D/CollisionShape2D.queue_redraw()
|
||||
@export var CollisionPosition :Vector2:
|
||||
set(new_CollisionPosition):
|
||||
CollisionPosition = new_CollisionPosition
|
||||
$StaticBody2D/CollisionShape2D.position = CollisionPosition
|
||||
$StaticBody2D/CollisionShape2D.queue_redraw()
|
||||
@export var CollisionRotation :float:
|
||||
set(new_ColissionRotation):
|
||||
CollisionRotation = new_ColissionRotation
|
||||
$StaticBody2D/CollisionShape2D.rotation = CollisionRotation
|
||||
$StaticBody2D/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
|
||||
"
|
||||
|
||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_ep5ck"]
|
||||
size = Vector2(104.391, 20.3774)
|
||||
|
||||
[node name="SolidSticker1" type="Sprite2D"]
|
||||
scale = Vector2(3.80334, 3.95089)
|
||||
texture = SubResource("AtlasTexture_2wdar")
|
||||
centered = false
|
||||
offset = Vector2(-161.055, -179.785)
|
||||
script = SubResource("GDScript_uqtu8")
|
||||
metadata/tags = ["sticker"]
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="."]
|
||||
collision_layer = 2
|
||||
collision_mask = 0
|
||||
monitoring = false
|
||||
|
||||
[node name="StickerShape2D" type="CollisionShape2D" parent="Area2D"]
|
||||
position = Vector2(-4.46976, -71.6294)
|
||||
rotation = 1.5708
|
||||
|
||||
[node name="StaticBody2D" type="StaticBody2D" parent="."]
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="StaticBody2D"]
|
||||
position = Vector2(2.10341, -10.8836)
|
||||
shape = SubResource("RectangleShape2D_ep5ck")
|
||||
debug_color = Color(0.996033, 0, 0.194446, 0.42)
|
||||
|
||||
[connection signal="property_list_changed" from="." to="." method="_on_property_list_changed"]
|
|
@ -27,6 +27,11 @@ Cursor="*res://core/Cursor.tscn"
|
|||
window/size/viewport_width=1920
|
||||
window/size/viewport_height=1080
|
||||
window/size/initial_position_type=2
|
||||
window/size/initial_screen=2
|
||||
window/size/extend_to_title=true
|
||||
window/stretch/mode="canvas_items"
|
||||
window/size/viewport_width.editor=1152
|
||||
window/size/viewport_height.editor=648
|
||||
|
||||
[editor_plugins]
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[gd_resource type="AtlasTexture" load_steps=2 format=3 uid="uid://dnomlcslicb3k"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bwcex0o7obtg5" path="res://textures/atlas/Props_All_01_SPRT.png" id="1_a4h13"]
|
||||
[ext_resource type="Texture2D" uid="uid://bwcex0o7obtg5" path="res://textures/atlas/Props_All_01_SPRT.png" id="1_12s0p"]
|
||||
|
||||
[resource]
|
||||
atlas = ExtResource("1_a4h13")
|
||||
atlas = ExtResource("1_12s0p")
|
||||
region = Rect2(1824, 480, 192, 160)
|
||||
|
|
1
textures/stickers/icon_sticker2.svg
Normal file
1
textures/stickers/icon_sticker2.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="16" height="16"><style>.a{fill:#8da5f3}.b{fill:#515d88}</style><path fill-rule="evenodd" class="a" d="m44 4c2.1 0 4.2 0.4 6.1 1.2 2 0.8 3.7 2 5.2 3.5 1.5 1.5 2.7 3.2 3.5 5.2 0.8 1.9 1.2 4 1.2 6.1v9l-8.8 9.4c0.5-0.7 0.8-1.5 0.8-2.4v-8c0-1.1-0.4-2.1-1.2-2.8-0.7-0.8-1.7-1.2-2.8-1.2-1.1 0-2.1 0.4-2.8 1.2-0.8 0.7-1.2 1.7-1.2 2.8v8c0 1.1 0.4 2.1 1.2 2.8 0.7 0.8 1.7 1.2 2.8 1.2 1 0 1.9-0.4 2.6-1l-19.6 21h-11c-2.1 0-4.2-0.4-6.1-1.2-2-0.8-3.7-2-5.2-3.5-1.5-1.5-2.7-3.2-3.5-5.2-0.8-1.9-1.2-4-1.2-6.1v-24c0-2.1 0.4-4.2 1.2-6.1 0.8-2 2-3.7 3.5-5.2 1.5-1.5 3.2-2.7 5.2-3.5 1.9-0.8 4-1.2 6.1-1.2zm-32 32c0 1.1 0.4 2.1 1.2 2.8 0.7 0.8 1.7 1.2 2.8 1.2 1.1 0 2.1-0.4 2.8-1.2 0.8-0.7 1.2-1.7 1.2-2.8v-8c0-1.1-0.4-2.1-1.2-2.8-0.7-0.8-1.7-1.2-2.8-1.2-1.1 0-2.1 0.4-2.8 1.2-0.8 0.7-1.2 1.7-1.2 2.8zm38.6 3l0.6-0.6q-0.2 0.2-0.4 0.4-0.1 0.1-0.2 0.2zm-7.3 6.7c-0.8-0.7-1.8-1.2-2.8-1.2-1.1 0-2.1 0.4-2.8 1.2q-1.2 1.1-2.6 1.7-1.5 0.6-3.1 0.6-1.6 0-3.1-0.6-1.4-0.6-2.6-1.7c-0.7-0.8-1.7-1.2-2.8-1.2-1 0-2 0.5-2.8 1.2-0.7 0.7-1.1 1.7-1.1 2.8 0 1 0.4 2.1 1.1 2.8 1.5 1.5 3.2 2.7 5.2 3.5 1.9 0.8 4 1.2 6.1 1.2 2.1 0 12-9.6 11.3-10.3z"/><path class="b" d="m60.1 26.4c0 0-26.2-6.4-32.1 0.8-5.5 6.5-5.2 33.1-5.2 33.1l8.6-0.6 27.4-29z"/></svg>
|
After Width: | Height: | Size: 1.3 KiB |
37
textures/stickers/icon_sticker2.svg.import
Normal file
37
textures/stickers/icon_sticker2.svg.import
Normal file
|
@ -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
|
Loading…
Reference in a new issue