Compare commits
	
		
			No commits in common. "90454be4853bd0ee82727438aae9582d4f7fc671" and "51e1ebd03318475063ed876d356e96eb32684358" have entirely different histories. 
		
	
	
		
			90454be485
			...
			51e1ebd033
		
	
		
	| 
		 Before Width: | Height: | Size: 596 B  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://dlxiybkk75imp"
 | 
			
		||||
path="res://.godot/imported/tree-leaves-dark-0.png-c0a1d8978753948673d83a622b613796.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://Assets/Sprites/Props/tree-leaves-dark-0.png"
 | 
			
		||||
dest_files=["res://.godot/imported/tree-leaves-dark-0.png-c0a1d8978753948673d83a622b613796.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
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 775 B  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://022r5gtr5ut5"
 | 
			
		||||
path="res://.godot/imported/tree-leaves-dark-1.png-e500a7048d53ad3769f9fb33e7139e3a.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://Assets/Sprites/Props/tree-leaves-dark-1.png"
 | 
			
		||||
dest_files=["res://.godot/imported/tree-leaves-dark-1.png-e500a7048d53ad3769f9fb33e7139e3a.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
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 1.8 KiB  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://fb2cpwplhe7o"
 | 
			
		||||
path="res://.godot/imported/tree-leaves-dark-2.png-e3e4a859dde5c7535113533f8a9eb51d.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://Assets/Sprites/Props/tree-leaves-dark-2.png"
 | 
			
		||||
dest_files=["res://.godot/imported/tree-leaves-dark-2.png-e3e4a859dde5c7535113533f8a9eb51d.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
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 3.4 KiB  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://bth1v3dyuqwg6"
 | 
			
		||||
path="res://.godot/imported/arena-tileset-new.png-be9f2f14aeaee34d9c3f67ae1188e672.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://Assets/Sprites/arena-tileset-new.png"
 | 
			
		||||
dest_files=["res://.godot/imported/arena-tileset-new.png-be9f2f14aeaee34d9c3f67ae1188e672.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
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
using Godot;
 | 
			
		||||
 | 
			
		||||
namespace SupaLidlGame.BoundingBoxes;
 | 
			
		||||
 | 
			
		||||
public partial class CameraBounds : Node2D
 | 
			
		||||
{
 | 
			
		||||
    [Export]
 | 
			
		||||
    public Area2D Trigger { get; set; }
 | 
			
		||||
 | 
			
		||||
    //[Export]
 | 
			
		||||
    //public Rect2I Bounds { get; set; }
 | 
			
		||||
 | 
			
		||||
    [Export]
 | 
			
		||||
    public Marker2D TopLeft { get; set; }
 | 
			
		||||
 | 
			
		||||
    [Export]
 | 
			
		||||
    public Marker2D BottomRight { get; set; }
 | 
			
		||||
 | 
			
		||||
    public override void _Ready()
 | 
			
		||||
    {
 | 
			
		||||
        Trigger.BodyEntered += OnBodyEntered;
 | 
			
		||||
        Trigger.BodyExited += OnBodyExited;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void OnBodyEntered(Node2D body)
 | 
			
		||||
    {
 | 
			
		||||
        if (body is Characters.Player player)
 | 
			
		||||
        {
 | 
			
		||||
            var camera = player.Camera;
 | 
			
		||||
            var rect = new Rect2I();
 | 
			
		||||
            rect.Position = (Vector2I)TopLeft.GlobalPosition;
 | 
			
		||||
            rect.End = (Vector2I)BottomRight.GlobalPosition;
 | 
			
		||||
            camera.SetCameraBounds(rect);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void OnBodyExited(Node2D body)
 | 
			
		||||
    {
 | 
			
		||||
        if (body is Characters.Player player)
 | 
			
		||||
        {
 | 
			
		||||
            var camera = player.Camera;
 | 
			
		||||
            camera.LimitLeft = int.MinValue;
 | 
			
		||||
            camera.LimitTop = int.MinValue;
 | 
			
		||||
            camera.LimitRight = int.MaxValue;
 | 
			
		||||
            camera.LimitBottom = int.MaxValue;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
[gd_scene load_steps=3 format=3 uid="uid://malbos18dh7l"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://BoundingBoxes/CameraBounds.cs" id="1_vaknk"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_b2lli"]
 | 
			
		||||
size = Vector2(256, 272)
 | 
			
		||||
 | 
			
		||||
[node name="CameraBounds" type="Node2D" node_paths=PackedStringArray("Trigger", "TopLeft", "BottomRight")]
 | 
			
		||||
script = ExtResource("1_vaknk")
 | 
			
		||||
Trigger = NodePath("Area2D")
 | 
			
		||||
TopLeft = NodePath("TopLeft")
 | 
			
		||||
BottomRight = NodePath("BottomRight")
 | 
			
		||||
 | 
			
		||||
[node name="Area2D" type="Area2D" parent="."]
 | 
			
		||||
collision_layer = 0
 | 
			
		||||
collision_mask = 4
 | 
			
		||||
monitorable = false
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
 | 
			
		||||
shape = SubResource("RectangleShape2D_b2lli")
 | 
			
		||||
debug_color = Color(0.631373, 0.345098, 1, 0.419608)
 | 
			
		||||
 | 
			
		||||
[node name="TopLeft" type="Marker2D" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="BottomRight" type="Marker2D" parent="."]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,47 +0,0 @@
 | 
			
		|||
using Godot;
 | 
			
		||||
 | 
			
		||||
namespace SupaLidlGame.BoundingBoxes;
 | 
			
		||||
 | 
			
		||||
public partial class CameraTrigger : Area2D
 | 
			
		||||
{
 | 
			
		||||
    [Export]
 | 
			
		||||
    public Node Camera { get; set; }
 | 
			
		||||
 | 
			
		||||
    [Export]
 | 
			
		||||
    public int EnablePriority { get; set; } = 2;
 | 
			
		||||
 | 
			
		||||
    [Export]
 | 
			
		||||
    public int DisablePriority { get; set; } = 0;
 | 
			
		||||
 | 
			
		||||
    public override void _Ready()
 | 
			
		||||
    {
 | 
			
		||||
        Connect(SignalName.BodyEntered, new Callable(this, nameof(OnBodyEntered)));
 | 
			
		||||
        Connect(SignalName.BodyExited, new Callable(this, nameof(OnBodyExited)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override void _EnterTree()
 | 
			
		||||
    {
 | 
			
		||||
        if (!Camera.Get("tween_on_load").AsBool())
 | 
			
		||||
        {
 | 
			
		||||
            var tween = Camera.Get("tween_resource").AsGodotObject();
 | 
			
		||||
            double duration = tween.Get("duration").AsDouble();
 | 
			
		||||
 | 
			
		||||
            // HACK: manually set this field to interrupt tween when the
 | 
			
		||||
            // trigger enters the scene, which happens when the scene is loaded
 | 
			
		||||
            // from the cache
 | 
			
		||||
            Camera.SetDeferred("_has_tweened", true);
 | 
			
		||||
            GD.Print("set tween");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void OnBodyEntered(Node2D node)
 | 
			
		||||
    {
 | 
			
		||||
        Camera.Set("priority", EnablePriority);
 | 
			
		||||
        Camera.Set("follow_target", node);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void OnBodyExited(Node2D node)
 | 
			
		||||
    {
 | 
			
		||||
        Camera.Set("priority", DisablePriority);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +152,6 @@ Sprite = NodePath("Sprites/Node2D/Character")
 | 
			
		|||
Inventory = NodePath("Inventory")
 | 
			
		||||
StateMachine = NodePath("StateMachine")
 | 
			
		||||
Hurtbox = NodePath("Hurtbox")
 | 
			
		||||
Faction = 2
 | 
			
		||||
 | 
			
		||||
[node name="Stats" type="Node" parent="."]
 | 
			
		||||
script = ExtResource("9_bxrs2")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -364,11 +364,13 @@ curve = SubResource("Curve_30p4b")
 | 
			
		|||
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_qdhau"]
 | 
			
		||||
particle_flag_disable_z = true
 | 
			
		||||
spread = 180.0
 | 
			
		||||
gravity = Vector3(0, 0, 0)
 | 
			
		||||
initial_velocity_min = 32.0
 | 
			
		||||
initial_velocity_max = 32.0
 | 
			
		||||
angular_velocity_min = 90.0
 | 
			
		||||
angular_velocity_max = 90.0
 | 
			
		||||
gravity = Vector3(0, 0, 0)
 | 
			
		||||
orbit_velocity_min = 0.0
 | 
			
		||||
orbit_velocity_max = 0.0
 | 
			
		||||
linear_accel_min = -64.0
 | 
			
		||||
linear_accel_max = -32.0
 | 
			
		||||
tangential_accel_min = 8.0
 | 
			
		||||
| 
						 | 
				
			
			@ -403,7 +405,6 @@ Sprite = NodePath("Sprites/Node2D/Character")
 | 
			
		|||
Inventory = NodePath("Inventory")
 | 
			
		||||
StateMachine = NodePath("StateMachine")
 | 
			
		||||
Hurtbox = NodePath("Hurtbox")
 | 
			
		||||
Faction = 2
 | 
			
		||||
 | 
			
		||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")]
 | 
			
		||||
script = ExtResource("3_lj2a2")
 | 
			
		||||
| 
						 | 
				
			
			@ -440,6 +441,7 @@ MaxDistanceToTarget = 128.0
 | 
			
		|||
UseItemDistance = 128.0
 | 
			
		||||
PassiveState = NodePath("../Pursue")
 | 
			
		||||
PursueState = NodePath("../Pursue")
 | 
			
		||||
PursueOnLineOfSight = false
 | 
			
		||||
NPC = NodePath("../..")
 | 
			
		||||
 | 
			
		||||
[node name="Idle" type="Node" parent="ThinkerStateMachine" node_paths=PackedStringArray("PursueState", "NavigationAgent", "NPC")]
 | 
			
		||||
| 
						 | 
				
			
			@ -448,6 +450,7 @@ PursueState = NodePath("../Pursue")
 | 
			
		|||
MinTargetDistance = 32.0
 | 
			
		||||
PursueOnLineOfSight = true
 | 
			
		||||
MinLineOfSightDistance = 128.0
 | 
			
		||||
ShouldReturnToOriginalPosition = true
 | 
			
		||||
NavigationAgent = NodePath("../../NavigationAgent2D")
 | 
			
		||||
NPC = NodePath("../..")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -527,17 +530,15 @@ hframes = 6
 | 
			
		|||
position = Vector2(0, -4)
 | 
			
		||||
shape = SubResource("RectangleShape2D_bfqew")
 | 
			
		||||
 | 
			
		||||
[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
 | 
			
		||||
[node name="Inventory" type="Node2D" parent="."]
 | 
			
		||||
position = Vector2(0, -4)
 | 
			
		||||
script = ExtResource("17_sjq8t")
 | 
			
		||||
Hotbar = []
 | 
			
		||||
 | 
			
		||||
[node name="ProjectileSpawner" parent="Inventory" node_paths=PackedStringArray("StateMachine") instance=ExtResource("17_dmlbb")]
 | 
			
		||||
[node name="ProjectileSpawner" parent="Inventory" instance=ExtResource("17_dmlbb")]
 | 
			
		||||
Projectile = ExtResource("18_lwg36")
 | 
			
		||||
ShouldOverrideProjectileDamage = false
 | 
			
		||||
ShouldOverrideVelocity = false
 | 
			
		||||
ShouldRotate = false
 | 
			
		||||
StateMachine = NodePath("StateMachine")
 | 
			
		||||
UseTime = 2.0
 | 
			
		||||
 | 
			
		||||
[node name="Hurtbox" parent="." instance=ExtResource("18_ajs2x")]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -268,8 +268,8 @@ scale_curve = SubResource("CurveTexture_5uulw")
 | 
			
		|||
color = Color(1, 0, 0, 1)
 | 
			
		||||
color_ramp = SubResource("GradientTexture1D_iyaih")
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CircleShape2D" id="CircleShape2D_umi1b"]
 | 
			
		||||
radius = 4.0
 | 
			
		||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_bfqew"]
 | 
			
		||||
size = Vector2(8, 8)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_1gjgc"]
 | 
			
		||||
size = Vector2(12, 16)
 | 
			
		||||
| 
						 | 
				
			
			@ -290,7 +290,6 @@ Sprite = NodePath("Sprites/Node2D/Character")
 | 
			
		|||
Inventory = NodePath("Inventory")
 | 
			
		||||
StateMachine = NodePath("StateMachine")
 | 
			
		||||
Hurtbox = NodePath("Hurtbox")
 | 
			
		||||
Faction = 2
 | 
			
		||||
metadata/_edit_vertical_guides_ = []
 | 
			
		||||
 | 
			
		||||
[node name="Stats" type="Node" parent="."]
 | 
			
		||||
| 
						 | 
				
			
			@ -417,7 +416,7 @@ stream = ExtResource("15_w7mkq")
 | 
			
		|||
unique_name_in_owner = true
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
use_parent_material = true
 | 
			
		||||
position = Vector2(0, 4)
 | 
			
		||||
position = Vector2(-0.5, 4)
 | 
			
		||||
rotation = 6.28319
 | 
			
		||||
 | 
			
		||||
[node name="Node2D" type="Node2D" parent="Sprites"]
 | 
			
		||||
| 
						 | 
				
			
			@ -430,7 +429,7 @@ offset = Vector2(0, -12)
 | 
			
		|||
hframes = 7
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
			
		||||
shape = SubResource("CircleShape2D_umi1b")
 | 
			
		||||
shape = SubResource("RectangleShape2D_bfqew")
 | 
			
		||||
 | 
			
		||||
[node name="Inventory" type="Node2D" parent="." node_paths=PackedStringArray("Hotbar")]
 | 
			
		||||
script = ExtResource("17_5rur0")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -104,25 +104,27 @@ public partial class NPC : Character
 | 
			
		|||
    {
 | 
			
		||||
        float bestScore = float.MaxValue;
 | 
			
		||||
        Character bestChar = null;
 | 
			
		||||
 | 
			
		||||
        foreach (var character in World.Instance.CurrentMap.GetCharacters())
 | 
			
		||||
        // NOTE: this relies on all Characters being under the Entities node
 | 
			
		||||
        foreach (Node node in GetParent().GetChildren())
 | 
			
		||||
        {
 | 
			
		||||
            bool isFriendly = ((IFaction)character).AlignsWith(this);
 | 
			
		||||
            if (isFriendly || !character.IsAlive)
 | 
			
		||||
            if (node is Character character)
 | 
			
		||||
            {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
                bool isFriendly = character.Faction == Faction;
 | 
			
		||||
                if (isFriendly || character.Health <= 0)
 | 
			
		||||
                {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            float score = 0;
 | 
			
		||||
            score += GlobalPosition.DistanceSquaredTo(character.GlobalPosition);
 | 
			
		||||
                float score = 0;
 | 
			
		||||
                score -= Position.DistanceTo(character.Position);
 | 
			
		||||
 | 
			
		||||
            if (score < bestScore)
 | 
			
		||||
            {
 | 
			
		||||
                bestScore = score;
 | 
			
		||||
                bestChar = character;
 | 
			
		||||
                if (score < bestScore)
 | 
			
		||||
                {
 | 
			
		||||
                    bestScore = score;
 | 
			
		||||
                    bestChar = character;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return bestChar;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,9 +36,6 @@ public sealed partial class Player : Character
 | 
			
		|||
    [Export]
 | 
			
		||||
    public PlayerCamera Camera { get; set; }
 | 
			
		||||
 | 
			
		||||
    [Export]
 | 
			
		||||
    public GodotObject PCamera { get; set; }
 | 
			
		||||
 | 
			
		||||
    [Export]
 | 
			
		||||
    public Marker2D DirectionMarker { get; private set; }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -78,17 +75,6 @@ public sealed partial class Player : Character
 | 
			
		|||
        Inventory.SelectedIndex = 0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override void _EnterTree()
 | 
			
		||||
    {
 | 
			
		||||
        // HACK: instantly move camera to player when switching to a scene
 | 
			
		||||
        // with another PhantomCamera2D
 | 
			
		||||
        var tween = GetNode<GodotObject>("PCamera")
 | 
			
		||||
            .Get("tween_resource")
 | 
			
		||||
            .AsGodotObject();
 | 
			
		||||
        tween.Set("duration", 0);
 | 
			
		||||
        tween.SetDeferred("duration", 1);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public override void _Process(double delta)
 | 
			
		||||
    {
 | 
			
		||||
        base._Process(delta);
 | 
			
		||||
| 
						 | 
				
			
			@ -252,6 +238,7 @@ public sealed partial class Player : Character
 | 
			
		|||
        switch (inputMethod)
 | 
			
		||||
        {
 | 
			
		||||
            case State.Global.InputMethod.Joystick:
 | 
			
		||||
                GD.Print(joystick);
 | 
			
		||||
                if (joystick.IsZeroApprox())
 | 
			
		||||
                {
 | 
			
		||||
                    return Direction;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
[gd_scene load_steps=77 format=3 uid="uid://b2254pup8k161"]
 | 
			
		||||
[gd_scene load_steps=74 format=3 uid="uid://b2254pup8k161"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"]
 | 
			
		||||
[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"]
 | 
			
		||||
| 
						 | 
				
			
			@ -33,8 +33,6 @@
 | 
			
		|||
[ext_resource type="PackedScene" uid="uid://ce0ph4wk0ylra" path="res://UI/TargetTracer.tscn" id="22_hxi53"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://bd8l8kafb42dt" path="res://Assets/Sprites/Particles/circle.png" id="22_uefct"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://bcgm3r168qjn3" path="res://Assets/Sprites/Particles/cast-effect.png" id="24_njn4h"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="27_mndpv"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="28_6gq8l"]
 | 
			
		||||
[ext_resource type="Script" path="res://Items/PlayerInventory.cs" id="30_y2wmw"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cgg0sfm2qeiwn" path="res://Items/Weapons/Bow.tscn" id="31_mofvy"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="31_ql4as"]
 | 
			
		||||
| 
						 | 
				
			
			@ -46,12 +44,6 @@ shader_parameter/color = Vector4(1, 1, 1, 1)
 | 
			
		|||
shader_parameter/intensity = 0.0
 | 
			
		||||
shader_parameter/alpha_modulate = 1.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_535hq"]
 | 
			
		||||
script = ExtResource("28_6gq8l")
 | 
			
		||||
duration = 1.0
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Animation" id="Animation_imqdv"]
 | 
			
		||||
length = 0.001
 | 
			
		||||
tracks/0/type = "value"
 | 
			
		||||
| 
						 | 
				
			
			@ -602,14 +594,6 @@ StateMachine = NodePath("StateMachine")
 | 
			
		|||
Hurtbox = NodePath("Hurtbox")
 | 
			
		||||
Faction = 1
 | 
			
		||||
 | 
			
		||||
[node name="PCamera" type="Node2D" parent="."]
 | 
			
		||||
script = ExtResource("27_mndpv")
 | 
			
		||||
priority = 1
 | 
			
		||||
follow_mode = 2
 | 
			
		||||
zoom = Vector2(4, 4)
 | 
			
		||||
tween_resource = SubResource("Resource_535hq")
 | 
			
		||||
draw_limits = true
 | 
			
		||||
 | 
			
		||||
[node name="Stats" type="Node" parent="."]
 | 
			
		||||
script = ExtResource("4_06oya")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -781,7 +765,6 @@ stream = ExtResource("12_vvem5")
 | 
			
		|||
unique_name_in_owner = true
 | 
			
		||||
 | 
			
		||||
[node name="Camera2D" parent="." instance=ExtResource("4_ym125")]
 | 
			
		||||
enabled = false
 | 
			
		||||
zoom = Vector2(4, 4)
 | 
			
		||||
position_smoothing_speed = 8.0
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -174,7 +174,6 @@ Sprite = NodePath("Sprites/Sprite2D")
 | 
			
		|||
Inventory = NodePath("Inventory")
 | 
			
		||||
StateMachine = NodePath("StateMachine")
 | 
			
		||||
Hurtbox = NodePath("Hurtbox")
 | 
			
		||||
Faction = 4
 | 
			
		||||
 | 
			
		||||
[node name="StateMachine" type="Node" parent="." node_paths=PackedStringArray("InitialState", "Character")]
 | 
			
		||||
script = ExtResource("2_dhles")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,6 +91,11 @@ public class Parser
 | 
			
		|||
        }
 | 
			
		||||
        else if (token.Type == TokenType.Grouping)
 | 
			
		||||
        {
 | 
			
		||||
            if (token.Value == ")")
 | 
			
		||||
            {
 | 
			
		||||
                throw new InterpreterException("Unexpected )",
 | 
			
		||||
                    token.Line, token.Column);
 | 
			
		||||
            }
 | 
			
		||||
            if (prev is LiteralExpression l)
 | 
			
		||||
            {
 | 
			
		||||
                // this is a function call
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,10 +59,7 @@ public partial class DynamicDoor : StaticBody2D
 | 
			
		|||
            {
 | 
			
		||||
                // rebake navmesh so NPCs can correctly travel conditionally
 | 
			
		||||
                GD.Print("Dynamic door updated; rebaking navmeshes...");
 | 
			
		||||
                if (!navmesh.IsBaking())
 | 
			
		||||
                {
 | 
			
		||||
                    navmesh.BakeNavigationPolygon();
 | 
			
		||||
                }
 | 
			
		||||
                navmesh.BakeNavigationPolygon();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -59,7 +59,7 @@ public partial class UnwantedFrequency : Projectile, Utils.ITarget
 | 
			
		|||
        TrailPosition.Position = new Vector2(0, 4 * Mathf.Sin(radians));
 | 
			
		||||
        TrailPosition2.Position = -TrailPosition.Position;
 | 
			
		||||
 | 
			
		||||
        if (CharacterTarget is not null && IsInstanceValid(CharacterTarget))
 | 
			
		||||
        if (CharacterTarget is not null)
 | 
			
		||||
        {
 | 
			
		||||
            var pos = CharacterTarget.GlobalPosition;
 | 
			
		||||
            var desired = GlobalPosition.DirectionTo(pos);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -111,6 +111,8 @@ public partial class Inventory : Node2D, IItemCollection<ItemMetadata>
 | 
			
		|||
 | 
			
		||||
        EmitSignal(SignalName.EquippedItem, prevItem, _selectedItem);
 | 
			
		||||
 | 
			
		||||
        GD.Print($"Inventory: {index} is new selected index.");
 | 
			
		||||
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,13 @@
 | 
			
		|||
[gd_scene load_steps=3 format=3 uid="uid://hm3ek8vqt1d4"]
 | 
			
		||||
[gd_scene load_steps=4 format=3 uid="uid://hm3ek8vqt1d4"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://dwbrymm3ud5xu" path="res://Assets/Sprites/Props/bookshelf.png" id="1_cnrpk"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_wc4oe"]
 | 
			
		||||
size = Vector2(28, 8)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_tsfmt"]
 | 
			
		||||
source_geometry_group_name = &"navigation_polygon_source_group"
 | 
			
		||||
 | 
			
		||||
[node name="Bookshelf" type="StaticBody2D"]
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -45,3 +48,6 @@ frame = 1
 | 
			
		|||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
			
		||||
position = Vector2(0, -4)
 | 
			
		||||
shape = SubResource("RectangleShape2D_wc4oe")
 | 
			
		||||
 | 
			
		||||
[node name="NavigationRegion2D" type="NavigationRegion2D" parent="."]
 | 
			
		||||
navigation_polygon = SubResource("NavigationPolygon_tsfmt")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,8 +7,9 @@ Forsen-related game
 | 
			
		|||
## Building
 | 
			
		||||
 | 
			
		||||
> [!IMPORTANT]
 | 
			
		||||
> This is currently being developed with Godot 4.3 beta 1, which > includes
 | 
			
		||||
a fix for C# generics causing problems and resetting properties to > null.
 | 
			
		||||
> This is currently being developed with Godot 4.3 dev 3 snapshot, which
 | 
			
		||||
> includes a fix for C# generics causing problems and resetting properties to
 | 
			
		||||
> null.
 | 
			
		||||
 | 
			
		||||
Requires .NET version >=7.0.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,60 +12,43 @@ background_mode = 3
 | 
			
		|||
glow_enabled = true
 | 
			
		||||
glow_hdr_threshold = 1.4
 | 
			
		||||
 | 
			
		||||
[node name="TileMap" type="Node2D" node_paths=PackedStringArray("Entities", "Areas", "Spawners", "Markers")]
 | 
			
		||||
[node name="TileMap" type="TileMap" node_paths=PackedStringArray("Entities", "Areas", "Spawners", "Markers")]
 | 
			
		||||
process_mode = 1
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
texture_filter = 3
 | 
			
		||||
tile_set = SubResource("TileSet_18c7j")
 | 
			
		||||
format = 2
 | 
			
		||||
layer_0/name = "z-index 0"
 | 
			
		||||
layer_0/y_sort_enabled = true
 | 
			
		||||
layer_1/name = "z-index -1"
 | 
			
		||||
layer_1/y_sort_enabled = true
 | 
			
		||||
layer_1/z_index = -1
 | 
			
		||||
layer_1/tile_data = PackedInt32Array()
 | 
			
		||||
layer_2/name = "z-index -1 (under)"
 | 
			
		||||
layer_2/y_sort_enabled = true
 | 
			
		||||
layer_2/z_index = -1
 | 
			
		||||
layer_2/tile_data = PackedInt32Array()
 | 
			
		||||
layer_3/name = "z-index -2"
 | 
			
		||||
layer_3/y_sort_enabled = true
 | 
			
		||||
layer_3/z_index = -2
 | 
			
		||||
layer_3/tile_data = PackedInt32Array()
 | 
			
		||||
layer_4/name = "z-index -3"
 | 
			
		||||
layer_4/y_sort_enabled = true
 | 
			
		||||
layer_4/z_index = -3
 | 
			
		||||
layer_4/tile_data = PackedInt32Array()
 | 
			
		||||
layer_5/name = "Lower 1"
 | 
			
		||||
layer_5/z_index = -4
 | 
			
		||||
layer_5/tile_data = PackedInt32Array()
 | 
			
		||||
layer_6/name = "z-index 0 (walls)"
 | 
			
		||||
layer_6/y_sort_enabled = true
 | 
			
		||||
layer_6/y_sort_origin = -8
 | 
			
		||||
layer_6/tile_data = PackedInt32Array()
 | 
			
		||||
script = ExtResource("2_4m0a1")
 | 
			
		||||
Entities = NodePath("Entities")
 | 
			
		||||
Areas = NodePath("Areas")
 | 
			
		||||
Spawners = NodePath("Spawners")
 | 
			
		||||
Markers = NodePath("Markers")
 | 
			
		||||
 | 
			
		||||
[node name="Layers" type="Node2D" parent="."]
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
 | 
			
		||||
[node name="z-index 0" type="TileMapLayer" parent="Layers"]
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
texture_filter = 3
 | 
			
		||||
use_parent_material = true
 | 
			
		||||
tile_set = SubResource("TileSet_18c7j")
 | 
			
		||||
 | 
			
		||||
[node name="z-index -1" type="TileMapLayer" parent="Layers"]
 | 
			
		||||
z_index = -1
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
use_parent_material = true
 | 
			
		||||
tile_set = SubResource("TileSet_18c7j")
 | 
			
		||||
 | 
			
		||||
[node name="z-index -1 (under)" type="TileMapLayer" parent="Layers"]
 | 
			
		||||
z_index = -1
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
use_parent_material = true
 | 
			
		||||
tile_set = SubResource("TileSet_18c7j")
 | 
			
		||||
 | 
			
		||||
[node name="z-index -2" type="TileMapLayer" parent="Layers"]
 | 
			
		||||
z_index = -2
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
use_parent_material = true
 | 
			
		||||
tile_set = SubResource("TileSet_18c7j")
 | 
			
		||||
 | 
			
		||||
[node name="z-index -3" type="TileMapLayer" parent="Layers"]
 | 
			
		||||
z_index = -3
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
use_parent_material = true
 | 
			
		||||
tile_set = SubResource("TileSet_18c7j")
 | 
			
		||||
 | 
			
		||||
[node name="z-index -4" type="TileMapLayer" parent="Layers"]
 | 
			
		||||
z_index = -4
 | 
			
		||||
use_parent_material = true
 | 
			
		||||
tile_set = SubResource("TileSet_18c7j")
 | 
			
		||||
 | 
			
		||||
[node name="z-index 0 (walls)" type="TileMapLayer" parent="Layers"]
 | 
			
		||||
y_sort_enabled = true
 | 
			
		||||
use_parent_material = true
 | 
			
		||||
tile_set = SubResource("TileSet_18c7j")
 | 
			
		||||
y_sort_origin = -8
 | 
			
		||||
 | 
			
		||||
[node name="CanvasModulate" type="CanvasModulate" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Props" type="Node2D" parent="."]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,7 @@
 | 
			
		|||
[gd_scene load_steps=4 format=3 uid="uid://1pb3mpmrl7lc"]
 | 
			
		||||
[gd_scene load_steps=3 format=3 uid="uid://1pb3mpmrl7lc"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://Utils/World.cs" id="1_1k6ew"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://c271rdjhd1gfo" path="res://UI/Base.tscn" id="2_mm0qt"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="3_ge4f0"]
 | 
			
		||||
 | 
			
		||||
[node name="World" type="Node2D" node_paths=PackedStringArray("MusicPlayer")]
 | 
			
		||||
process_mode = 3
 | 
			
		||||
| 
						 | 
				
			
			@ -25,8 +24,3 @@ mouse_filter = 2
 | 
			
		|||
 | 
			
		||||
[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
 | 
			
		||||
bus = &"Music"
 | 
			
		||||
 | 
			
		||||
[node name="Camera2D" type="Camera2D" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
 | 
			
		||||
script = ExtResource("3_ge4f0")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,10 +1,9 @@
 | 
			
		|||
using Godot;
 | 
			
		||||
using SupaLidlGame.Extensions;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
 | 
			
		||||
namespace SupaLidlGame.Scenes;
 | 
			
		||||
 | 
			
		||||
public partial class Map : Node2D
 | 
			
		||||
public partial class Map : TileMap
 | 
			
		||||
{
 | 
			
		||||
    [Export]
 | 
			
		||||
    public Node2D Entities { get; set; }
 | 
			
		||||
| 
						 | 
				
			
			@ -72,17 +71,6 @@ public partial class Map : Node2D
 | 
			
		|||
        GetNode<Audio.AudioManager>("/root/AudioManager").PlayBackground(Music);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public IEnumerable<Characters.Character> GetCharacters()
 | 
			
		||||
    {
 | 
			
		||||
        foreach (var child in Entities.GetChildren())
 | 
			
		||||
        {
 | 
			
		||||
            if (child is Characters.Character c)
 | 
			
		||||
            {
 | 
			
		||||
                yield return c;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Node SpawnEntity(PackedScene scene)
 | 
			
		||||
    {
 | 
			
		||||
        var instance = scene.Instantiate();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,17 +1,25 @@
 | 
			
		|||
[gd_resource type="TileSet" load_steps=14 format=3 uid="uid://l61kbx31ug4p"]
 | 
			
		||||
[gd_resource type="TileSet" load_steps=12 format=3 uid="uid://l61kbx31ug4p"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://b0yiy7w8nxmas" path="res://Assets/Sprites/arena-tileset.png" id="1_kud44"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://j1ekk1ppenm4" path="res://Assets/Sprites/grass-tileset.png" id="2_lihbs"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://udgjrcaexuaq" path="res://Assets/Sprites/Props/arena-arches.png" id="3_hbylw"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://bth1v3dyuqwg6" path="res://Assets/Sprites/arena-tileset-new.png" id="4_n70qi"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_7s0wj"]
 | 
			
		||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_7lhug"]
 | 
			
		||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
 | 
			
		||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
 | 
			
		||||
source_geometry_group_name = &"navigation_polygon_source_group"
 | 
			
		||||
 | 
			
		||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_7vkqx"]
 | 
			
		||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_d0snv"]
 | 
			
		||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
 | 
			
		||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
 | 
			
		||||
source_geometry_group_name = &"navigation_polygon_source_group"
 | 
			
		||||
 | 
			
		||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_pxj45"]
 | 
			
		||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_m43r7"]
 | 
			
		||||
vertices = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
polygons = Array[PackedInt32Array]([PackedInt32Array(0, 1, 2, 3)])
 | 
			
		||||
outlines = Array[PackedVector2Array]([PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)])
 | 
			
		||||
source_geometry_group_name = &"navigation_polygon_source_group"
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CanvasTexture" id="CanvasTexture_3n6aa"]
 | 
			
		||||
| 
						 | 
				
			
			@ -22,6 +30,8 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
0:0/0 = 0
 | 
			
		||||
0:0/0/terrain_set = 0
 | 
			
		||||
0:0/0/terrain = 0
 | 
			
		||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:0/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
0:0/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
0:0/0/terrains_peering_bit/bottom_side = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -30,10 +40,12 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
0:0/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
0:0/0/terrains_peering_bit/top_side = 0
 | 
			
		||||
0:0/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
 | 
			
		||||
1:1/0 = 0
 | 
			
		||||
1:1/0/terrain_set = 0
 | 
			
		||||
1:1/0/terrain = 0
 | 
			
		||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:1/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
1:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
1:1/0/terrains_peering_bit/bottom_side = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -42,10 +54,12 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
1:1/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
1:1/0/terrains_peering_bit/top_side = 0
 | 
			
		||||
1:1/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
 | 
			
		||||
2:1/0 = 0
 | 
			
		||||
2:1/0/terrain_set = 0
 | 
			
		||||
2:1/0/terrain = 1
 | 
			
		||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
2:1/0/terrains_peering_bit/right_side = 1
 | 
			
		||||
2:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -57,14 +71,17 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
2:1/0/terrains_peering_bit/top_right_corner = 1
 | 
			
		||||
2:2/0 = 0
 | 
			
		||||
2:2/0/terrain_set = 0
 | 
			
		||||
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 8, 0, 8, 8, -8, 8)
 | 
			
		||||
2:2/0/terrains_peering_bit/bottom_right_corner = 1
 | 
			
		||||
2:2/0/terrains_peering_bit/bottom_side = 1
 | 
			
		||||
2:2/0/terrains_peering_bit/bottom_left_corner = 1
 | 
			
		||||
2:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
1:0/0 = 0
 | 
			
		||||
1:0/0/terrain_set = 0
 | 
			
		||||
1:0/0/terrain = 0
 | 
			
		||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:0/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
1:0/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
1:0/0/terrains_peering_bit/bottom_side = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -73,10 +90,12 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
1:0/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
1:0/0/terrains_peering_bit/top_side = 0
 | 
			
		||||
1:0/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
 | 
			
		||||
0:1/0 = 0
 | 
			
		||||
0:1/0/terrain_set = 0
 | 
			
		||||
0:1/0/terrain = 0
 | 
			
		||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:1/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
0:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
0:1/0/terrains_peering_bit/bottom_side = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -85,35 +104,59 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
0:1/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
0:1/0/terrains_peering_bit/top_side = 0
 | 
			
		||||
0:1/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7lhug")
 | 
			
		||||
0:2/0 = 0
 | 
			
		||||
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:3/0 = 0
 | 
			
		||||
0:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:3/0 = 0
 | 
			
		||||
1:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:2/0 = 0
 | 
			
		||||
1:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:0/0 = 0
 | 
			
		||||
2:0/0/terrain_set = 0
 | 
			
		||||
2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_m43r7")
 | 
			
		||||
3:0/0 = 0
 | 
			
		||||
3:0/0/terrain_set = 0
 | 
			
		||||
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_m43r7")
 | 
			
		||||
4:0/0 = 0
 | 
			
		||||
4:0/0/terrain_set = 0
 | 
			
		||||
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
4:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
5:0/0 = 0
 | 
			
		||||
5:0/0/terrain_set = 0
 | 
			
		||||
5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
6:0/0 = 0
 | 
			
		||||
6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:1/0 = 0
 | 
			
		||||
6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
5:1/0 = 0
 | 
			
		||||
5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
4:1/0 = 0
 | 
			
		||||
4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
3:1/0 = 0
 | 
			
		||||
3:1/0/terrain_set = 0
 | 
			
		||||
3:1/0/terrain = 1
 | 
			
		||||
3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
3:1/0/terrains_peering_bit/right_side = 1
 | 
			
		||||
3:1/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -125,53 +168,74 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
3:1/0/terrains_peering_bit/top_right_corner = 1
 | 
			
		||||
3:2/0 = 0
 | 
			
		||||
3:2/0/terrain_set = 0
 | 
			
		||||
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 0, -8, 0)
 | 
			
		||||
3:2/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
3:2/0/terrains_peering_bit/top_side = 0
 | 
			
		||||
3:2/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
3:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
3:3/0 = 0
 | 
			
		||||
3:3/0/terrain_set = 0
 | 
			
		||||
3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, -8, 8, -8, 8, 8, 0, 8)
 | 
			
		||||
3:3/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
3:3/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
3:3/0/terrains_peering_bit/top_right_corner = 1
 | 
			
		||||
2:3/0 = 0
 | 
			
		||||
2:3/0/terrain_set = 0
 | 
			
		||||
2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -8, 0, 8, -8, 8)
 | 
			
		||||
2:3/0/terrains_peering_bit/bottom_left_corner = 0
 | 
			
		||||
2:3/0/terrains_peering_bit/left_side = 0
 | 
			
		||||
2:3/0/terrains_peering_bit/top_left_corner = 1
 | 
			
		||||
4:3/0 = 0
 | 
			
		||||
4:3/0/terrain_set = 0
 | 
			
		||||
4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(8, -8, 8, 0, 0, 0, 0, -8)
 | 
			
		||||
4:3/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
4:2/0 = 0
 | 
			
		||||
4:2/0/terrain_set = 0
 | 
			
		||||
4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(0, 0, 8, 0, 8, 8, 0, 8)
 | 
			
		||||
4:2/0/terrains_peering_bit/bottom_right_corner = 1
 | 
			
		||||
4:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
5:2/0 = 0
 | 
			
		||||
5:2/0/terrain_set = 0
 | 
			
		||||
5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 0, 0, 0, 0, 8, -8, 8)
 | 
			
		||||
5:2/0/terrains_peering_bit/bottom_left_corner = 1
 | 
			
		||||
5:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
5:3/0 = 0
 | 
			
		||||
5:3/0/terrain_set = 0
 | 
			
		||||
5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 0, -8, 0, 0, -8, 0)
 | 
			
		||||
5:3/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
6:3/0 = 0
 | 
			
		||||
6:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:2/0 = 0
 | 
			
		||||
6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:2/0 = 0
 | 
			
		||||
7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:3/0 = 0
 | 
			
		||||
7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:0/size_in_atlas = Vector2i(1, 2)
 | 
			
		||||
7:0/0 = 0
 | 
			
		||||
7:0/0/texture_origin = Vector2i(0, 8)
 | 
			
		||||
7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -5, 8, -5, 8, 4, 4, 8, -4, 8, -8, 4)
 | 
			
		||||
0:4/0 = 0
 | 
			
		||||
0:4/0/terrain_set = 0
 | 
			
		||||
0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
0:4/0/terrains_peering_bit/bottom_left_corner = 0
 | 
			
		||||
0:4/0/terrains_peering_bit/left_side = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -180,6 +244,8 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
0:4/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
0:5/0 = 0
 | 
			
		||||
0:5/0/terrain_set = 0
 | 
			
		||||
0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
0:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
			
		||||
0:5/0/terrains_peering_bit/bottom_side = 1
 | 
			
		||||
| 
						 | 
				
			
			@ -188,6 +254,8 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
0:5/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
1:5/0 = 0
 | 
			
		||||
1:5/0/terrain_set = 0
 | 
			
		||||
1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
1:5/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
1:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
			
		||||
| 
						 | 
				
			
			@ -196,6 +264,8 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
1:5/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
1:4/0 = 0
 | 
			
		||||
1:4/0/terrain_set = 0
 | 
			
		||||
1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
1:4/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
1:4/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -205,61 +275,100 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
2:4/size_in_atlas = Vector2i(1, 3)
 | 
			
		||||
2:4/0 = 0
 | 
			
		||||
2:4/0/texture_origin = Vector2i(0, 16)
 | 
			
		||||
2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:4/size_in_atlas = Vector2i(2, 2)
 | 
			
		||||
3:4/0 = 0
 | 
			
		||||
3:4/0/texture_origin = Vector2i(8, 9)
 | 
			
		||||
3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:4/size_in_atlas = Vector2i(2, 2)
 | 
			
		||||
5:4/0 = 0
 | 
			
		||||
5:4/0/texture_origin = Vector2i(8, 9)
 | 
			
		||||
5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:4/size_in_atlas = Vector2i(1, 2)
 | 
			
		||||
7:4/0 = 0
 | 
			
		||||
7:4/0/texture_origin = Vector2i(0, 8)
 | 
			
		||||
7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:6/0 = 0
 | 
			
		||||
3:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
4:6/0 = 0
 | 
			
		||||
4:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
4:7/0 = 0
 | 
			
		||||
4:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
3:7/0 = 0
 | 
			
		||||
3:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
10:1/0 = 0
 | 
			
		||||
10:1/0/terrain_set = 1
 | 
			
		||||
10:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
10:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
10:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
10:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
 | 
			
		||||
11:1/0 = 0
 | 
			
		||||
11:1/0/terrain_set = 1
 | 
			
		||||
11:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
11:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
11:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
11:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
 | 
			
		||||
11:2/0 = 0
 | 
			
		||||
11:2/0/terrain_set = 1
 | 
			
		||||
11:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
11:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
11:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
11:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
 | 
			
		||||
10:2/0 = 0
 | 
			
		||||
10:2/0/terrain_set = 1
 | 
			
		||||
10:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
10:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
10:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
10:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_d0snv")
 | 
			
		||||
8:1/0 = 0
 | 
			
		||||
8:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
8:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
8:2/0 = 0
 | 
			
		||||
8:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
8:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
8:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
9:1/0 = 0
 | 
			
		||||
9:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
9:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
9:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
9:2/0 = 0
 | 
			
		||||
9:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7s0wj")
 | 
			
		||||
9:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
9:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
9:5/0 = 0
 | 
			
		||||
9:5/0/terrain_set = 1
 | 
			
		||||
9:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
9:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
9:5/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
10:5/0 = 0
 | 
			
		||||
10:5/0/terrain_set = 1
 | 
			
		||||
10:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
10:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
10:5/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
10:5/0/terrains_peering_bit/bottom_side = 0
 | 
			
		||||
10:5/0/terrains_peering_bit/bottom_left_corner = 0
 | 
			
		||||
11:5/0 = 0
 | 
			
		||||
11:5/0/terrain_set = 1
 | 
			
		||||
11:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
11:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
11:5/0/terrains_peering_bit/bottom_left_corner = 0
 | 
			
		||||
11:6/0 = 0
 | 
			
		||||
11:6/0/terrain_set = 1
 | 
			
		||||
11:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
11:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
11:6/0/terrains_peering_bit/bottom_left_corner = 0
 | 
			
		||||
11:6/0/terrains_peering_bit/left_side = 0
 | 
			
		||||
11:6/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
10:6/0 = 0
 | 
			
		||||
10:6/0/terrain_set = 1
 | 
			
		||||
10:6/0/terrain = 0
 | 
			
		||||
10:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
10:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
10:6/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
10:6/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
10:6/0/terrains_peering_bit/bottom_side = 0
 | 
			
		||||
| 
						 | 
				
			
			@ -270,37 +379,52 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
10:6/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
9:6/0 = 0
 | 
			
		||||
9:6/0/terrain_set = 1
 | 
			
		||||
9:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
9:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
9:6/0/terrains_peering_bit/right_side = 0
 | 
			
		||||
9:6/0/terrains_peering_bit/bottom_right_corner = 0
 | 
			
		||||
9:6/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
9:6/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_pxj45")
 | 
			
		||||
9:7/0 = 0
 | 
			
		||||
9:7/0/terrain_set = 1
 | 
			
		||||
9:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
9:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
9:7/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
10:7/0 = 0
 | 
			
		||||
10:7/0/terrain_set = 1
 | 
			
		||||
10:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
10:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
10:7/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
10:7/0/terrains_peering_bit/top_side = 0
 | 
			
		||||
10:7/0/terrains_peering_bit/top_right_corner = 0
 | 
			
		||||
11:7/0 = 0
 | 
			
		||||
11:7/0/terrain_set = 1
 | 
			
		||||
11:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
11:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
11:7/0/terrains_peering_bit/top_left_corner = 0
 | 
			
		||||
12:5/0 = 0
 | 
			
		||||
12:5/0/terrain_set = 1
 | 
			
		||||
12:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
12:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
12:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
			
		||||
13:5/0 = 0
 | 
			
		||||
13:5/0/terrain_set = 1
 | 
			
		||||
13:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
13:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
13:5/0/terrains_peering_bit/bottom_right_corner = 1
 | 
			
		||||
13:5/0/terrains_peering_bit/bottom_side = 1
 | 
			
		||||
13:5/0/terrains_peering_bit/bottom_left_corner = 1
 | 
			
		||||
14:6/0 = 0
 | 
			
		||||
14:6/0/terrain_set = 1
 | 
			
		||||
14:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
14:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
14:6/0/terrains_peering_bit/bottom_left_corner = 1
 | 
			
		||||
14:6/0/terrains_peering_bit/left_side = 1
 | 
			
		||||
14:6/0/terrains_peering_bit/top_left_corner = 1
 | 
			
		||||
13:6/0 = 0
 | 
			
		||||
13:6/0/terrain_set = 1
 | 
			
		||||
13:6/0/terrain = 1
 | 
			
		||||
13:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
13:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
13:6/0/terrains_peering_bit/right_side = 1
 | 
			
		||||
13:6/0/terrains_peering_bit/bottom_right_corner = 1
 | 
			
		||||
13:6/0/terrains_peering_bit/bottom_side = 1
 | 
			
		||||
| 
						 | 
				
			
			@ -311,43 +435,70 @@ texture = SubResource("CanvasTexture_3n6aa")
 | 
			
		|||
13:6/0/terrains_peering_bit/top_right_corner = 1
 | 
			
		||||
12:6/0 = 0
 | 
			
		||||
12:6/0/terrain_set = 1
 | 
			
		||||
12:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
12:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
12:6/0/terrains_peering_bit/right_side = 1
 | 
			
		||||
12:6/0/terrains_peering_bit/bottom_right_corner = 1
 | 
			
		||||
12:6/0/terrains_peering_bit/top_right_corner = 1
 | 
			
		||||
12:7/0 = 0
 | 
			
		||||
12:7/0/terrain_set = 1
 | 
			
		||||
12:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
12:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
12:7/0/terrains_peering_bit/top_right_corner = 1
 | 
			
		||||
13:7/0 = 0
 | 
			
		||||
13:7/0/terrain_set = 1
 | 
			
		||||
13:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
13:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
13:7/0/terrains_peering_bit/top_left_corner = 1
 | 
			
		||||
13:7/0/terrains_peering_bit/top_side = 1
 | 
			
		||||
13:7/0/terrains_peering_bit/top_right_corner = 1
 | 
			
		||||
14:7/0 = 0
 | 
			
		||||
14:7/0/terrain_set = 1
 | 
			
		||||
14:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
14:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
14:7/0/terrains_peering_bit/top_left_corner = 1
 | 
			
		||||
14:5/0 = 0
 | 
			
		||||
14:5/0/terrain_set = 1
 | 
			
		||||
14:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
14:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
14:5/0/terrains_peering_bit/bottom_left_corner = 1
 | 
			
		||||
5:7/0 = 0
 | 
			
		||||
5:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
5:6/0 = 0
 | 
			
		||||
5:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
6:6/0 = 0
 | 
			
		||||
6:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
6:7/0 = 0
 | 
			
		||||
6:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
7:7/0 = 0
 | 
			
		||||
7:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
7:7/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_7vkqx")
 | 
			
		||||
8:7/0 = 0
 | 
			
		||||
8:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
8:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
8:7/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
8:6/0 = 0
 | 
			
		||||
8:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
8:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
8:6/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
12:0/0 = 0
 | 
			
		||||
12:0/0/y_sort_origin = 8
 | 
			
		||||
12:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
12:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
12:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 2, 8, 2, 8, 8, -8, 8)
 | 
			
		||||
13:0/0 = 0
 | 
			
		||||
13:0/0/y_sort_origin = 8
 | 
			
		||||
13:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
13:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
13:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, 2, 8, 2, 8, 8, -8, 8)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="NavigationPolygon" id="NavigationPolygon_que0c"]
 | 
			
		||||
| 
						 | 
				
			
			@ -359,208 +510,213 @@ source_geometry_group_name = &"navigation_polygon_source_group"
 | 
			
		|||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_mdfpe"]
 | 
			
		||||
texture = ExtResource("2_lihbs")
 | 
			
		||||
0:0/0 = 0
 | 
			
		||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
1:0/0 = 0
 | 
			
		||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
2:0/0 = 0
 | 
			
		||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
3:0/0 = 0
 | 
			
		||||
3:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
4:0/0 = 0
 | 
			
		||||
4:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
5:0/0 = 0
 | 
			
		||||
5:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
6:0/0 = 0
 | 
			
		||||
6:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
7:0/0 = 0
 | 
			
		||||
7:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:0/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
7:1/0 = 0
 | 
			
		||||
7:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
7:2/0 = 0
 | 
			
		||||
7:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
7:3/0 = 0
 | 
			
		||||
7:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
7:4/0 = 0
 | 
			
		||||
7:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
7:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
7:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
6:4/0 = 0
 | 
			
		||||
6:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
5:4/0 = 0
 | 
			
		||||
5:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
4:4/0 = 0
 | 
			
		||||
4:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
3:4/0 = 0
 | 
			
		||||
3:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
2:4/0 = 0
 | 
			
		||||
2:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
1:4/0 = 0
 | 
			
		||||
1:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
0:4/0 = 0
 | 
			
		||||
0:4/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:4/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:4/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
0:3/0 = 0
 | 
			
		||||
0:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
1:2/0 = 0
 | 
			
		||||
1:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
1:1/0 = 0
 | 
			
		||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
0:1/0 = 0
 | 
			
		||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
0:2/0 = 0
 | 
			
		||||
0:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
2:3/0 = 0
 | 
			
		||||
2:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
3:3/0 = 0
 | 
			
		||||
3:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
1:3/0 = 0
 | 
			
		||||
1:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
2:2/0 = 0
 | 
			
		||||
2:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
3:1/0 = 0
 | 
			
		||||
3:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
4:1/0 = 0
 | 
			
		||||
4:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
2:1/0 = 0
 | 
			
		||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
4:2/0 = 0
 | 
			
		||||
4:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
5:2/0 = 0
 | 
			
		||||
5:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
3:2/0 = 0
 | 
			
		||||
3:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
3:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
3:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
6:3/0 = 0
 | 
			
		||||
6:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
5:3/0 = 0
 | 
			
		||||
5:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
4:3/0 = 0
 | 
			
		||||
4:3/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
4:3/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
4:3/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
6:2/0 = 0
 | 
			
		||||
6:2/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:2/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:2/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
6:1/0 = 0
 | 
			
		||||
6:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
6:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
6:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
5:1/0 = 0
 | 
			
		||||
5:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
5:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
5:1/0/navigation_layer_0/polygon = SubResource("NavigationPolygon_que0c")
 | 
			
		||||
0:5/0 = 0
 | 
			
		||||
0:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:5/0 = 0
 | 
			
		||||
1:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:6/0 = 0
 | 
			
		||||
0:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:7/0 = 0
 | 
			
		||||
0:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:7/0 = 0
 | 
			
		||||
1:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:6/0 = 0
 | 
			
		||||
1:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:6/0 = 0
 | 
			
		||||
2:6/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:6/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:5/0 = 0
 | 
			
		||||
2:5/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:5/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:7/0 = 0
 | 
			
		||||
2:7/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:7/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_u4tjf"]
 | 
			
		||||
texture = ExtResource("3_hbylw")
 | 
			
		||||
0:0/0 = 0
 | 
			
		||||
0:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:0/0 = 0
 | 
			
		||||
1:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:0/0 = 0
 | 
			
		||||
2:0/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:0/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
0:1/0 = 0
 | 
			
		||||
0:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
0:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
1:1/0 = 0
 | 
			
		||||
1:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
1:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
2:1/0 = 0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_45tin"]
 | 
			
		||||
texture = ExtResource("4_n70qi")
 | 
			
		||||
0:0/0 = 0
 | 
			
		||||
1:0/0 = 0
 | 
			
		||||
4:0/0 = 0
 | 
			
		||||
4:0/0/y_sort_origin = 8
 | 
			
		||||
5:0/0 = 0
 | 
			
		||||
5:0/0/y_sort_origin = 8
 | 
			
		||||
6:0/0 = 0
 | 
			
		||||
6:0/0/y_sort_origin = 8
 | 
			
		||||
8:0/0 = 0
 | 
			
		||||
9:0/0 = 0
 | 
			
		||||
10:0/0 = 0
 | 
			
		||||
11:0/0 = 0
 | 
			
		||||
12:0/0 = 0
 | 
			
		||||
13:0/0 = 0
 | 
			
		||||
0:1/0 = 0
 | 
			
		||||
1:1/0 = 0
 | 
			
		||||
4:1/0 = 0
 | 
			
		||||
4:1/0/y_sort_origin = 8
 | 
			
		||||
5:1/0 = 0
 | 
			
		||||
5:1/0/y_sort_origin = 8
 | 
			
		||||
6:1/0 = 0
 | 
			
		||||
6:1/0/y_sort_origin = 8
 | 
			
		||||
7:1/0 = 0
 | 
			
		||||
7:1/0/y_sort_origin = 8
 | 
			
		||||
8:1/0 = 0
 | 
			
		||||
8:1/0/y_sort_origin = 8
 | 
			
		||||
9:1/0 = 0
 | 
			
		||||
9:1/0/y_sort_origin = 8
 | 
			
		||||
10:1/0 = 0
 | 
			
		||||
11:1/0 = 0
 | 
			
		||||
2:2/0 = 0
 | 
			
		||||
2:2/0/y_sort_origin = 8
 | 
			
		||||
3:2/0 = 0
 | 
			
		||||
3:2/0/y_sort_origin = 8
 | 
			
		||||
4:2/0 = 0
 | 
			
		||||
4:2/0/y_sort_origin = 8
 | 
			
		||||
5:2/0 = 0
 | 
			
		||||
5:2/0/y_sort_origin = 8
 | 
			
		||||
6:2/0 = 0
 | 
			
		||||
6:2/0/y_sort_origin = 8
 | 
			
		||||
7:2/0 = 0
 | 
			
		||||
7:2/0/y_sort_origin = 8
 | 
			
		||||
8:2/0 = 0
 | 
			
		||||
8:2/0/y_sort_origin = 8
 | 
			
		||||
9:2/0 = 0
 | 
			
		||||
9:2/0/y_sort_origin = 8
 | 
			
		||||
10:2/0 = 0
 | 
			
		||||
11:2/0 = 0
 | 
			
		||||
0:3/0 = 0
 | 
			
		||||
0:3/0/y_sort_origin = 8
 | 
			
		||||
1:3/0 = 0
 | 
			
		||||
1:3/0/y_sort_origin = 8
 | 
			
		||||
2:3/0 = 0
 | 
			
		||||
2:3/0/y_sort_origin = 8
 | 
			
		||||
3:3/0 = 0
 | 
			
		||||
3:3/0/y_sort_origin = 8
 | 
			
		||||
4:3/0 = 0
 | 
			
		||||
4:3/0/y_sort_origin = 8
 | 
			
		||||
8:3/0 = 0
 | 
			
		||||
0:4/0 = 0
 | 
			
		||||
0:4/0/y_sort_origin = 8
 | 
			
		||||
2:4/0 = 0
 | 
			
		||||
2:4/0/y_sort_origin = 8
 | 
			
		||||
3:4/0 = 0
 | 
			
		||||
3:4/0/y_sort_origin = 8
 | 
			
		||||
4:4/0 = 0
 | 
			
		||||
4:4/0/y_sort_origin = 8
 | 
			
		||||
5:4/0 = 0
 | 
			
		||||
5:4/0/y_sort_origin = 8
 | 
			
		||||
6:4/0 = 0
 | 
			
		||||
6:4/0/y_sort_origin = 8
 | 
			
		||||
9:4/0 = 0
 | 
			
		||||
0:5/0 = 0
 | 
			
		||||
0:5/0/y_sort_origin = 8
 | 
			
		||||
1:5/0 = 0
 | 
			
		||||
1:5/0/y_sort_origin = 8
 | 
			
		||||
2:5/0 = 0
 | 
			
		||||
2:5/0/y_sort_origin = 8
 | 
			
		||||
3:5/0 = 0
 | 
			
		||||
4:5/0 = 0
 | 
			
		||||
5:3/0 = 0
 | 
			
		||||
5:3/0/y_sort_origin = 8
 | 
			
		||||
6:3/0 = 0
 | 
			
		||||
6:3/0/y_sort_origin = 8
 | 
			
		||||
0:6/0 = 0
 | 
			
		||||
0:7/0 = 0
 | 
			
		||||
1:7/0 = 0
 | 
			
		||||
2:7/0 = 0
 | 
			
		||||
1:6/0 = 0
 | 
			
		||||
2:6/0 = 0
 | 
			
		||||
2:1/0 = 0
 | 
			
		||||
2:0/0 = 0
 | 
			
		||||
3:0/0 = 0
 | 
			
		||||
3:1/0 = 0
 | 
			
		||||
13:5/size_in_atlas = Vector2i(1, 2)
 | 
			
		||||
13:5/0 = 0
 | 
			
		||||
13:5/0/texture_origin = Vector2i(0, 8)
 | 
			
		||||
13:5/0/y_sort_origin = 8
 | 
			
		||||
12:4/size_in_atlas = Vector2i(1, 3)
 | 
			
		||||
12:4/0 = 0
 | 
			
		||||
12:4/0/texture_origin = Vector2i(0, 16)
 | 
			
		||||
12:4/0/y_sort_origin = -2
 | 
			
		||||
2:1/0/physics_layer_0/linear_velocity = Vector2(0, 0)
 | 
			
		||||
2:1/0/physics_layer_0/angular_velocity = 0.0
 | 
			
		||||
 | 
			
		||||
[resource]
 | 
			
		||||
occlusion_layer_0/light_mask = 1
 | 
			
		||||
| 
						 | 
				
			
			@ -579,4 +735,3 @@ navigation_layer_0/layers = 1
 | 
			
		|||
sources/0 = SubResource("TileSetAtlasSource_fcd6d")
 | 
			
		||||
sources/1 = SubResource("TileSetAtlasSource_mdfpe")
 | 
			
		||||
sources/2 = SubResource("TileSetAtlasSource_u4tjf")
 | 
			
		||||
sources/3 = SubResource("TileSetAtlasSource_45tin")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,211 +0,0 @@
 | 
			
		|||
[gd_resource type="TileSet" load_steps=7 format=3 uid="uid://dkis3rb4n62cu"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://c70cn53osy56w" path="res://Assets/Sprites/dev-tileset.png" id="1_nk7yv"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://lnyd6osxcu0g" path="res://Assets/Sprites/Props/tree-autumn-cluster-tiles.png" id="2_j2hod"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://ccqfwgjkerta5" path="res://Assets/Sprites/grass-tileset-dark.png" id="3_dmva5"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_s1h2f"]
 | 
			
		||||
texture = ExtResource("1_nk7yv")
 | 
			
		||||
0:0/0 = 0
 | 
			
		||||
1:0/0 = 0
 | 
			
		||||
2:0/0 = 0
 | 
			
		||||
3:0/0 = 0
 | 
			
		||||
0:1/0 = 0
 | 
			
		||||
1:1/0 = 0
 | 
			
		||||
2:1/0 = 0
 | 
			
		||||
3:1/0 = 0
 | 
			
		||||
0:2/0 = 0
 | 
			
		||||
1:2/0 = 0
 | 
			
		||||
2:2/0 = 0
 | 
			
		||||
3:2/0 = 0
 | 
			
		||||
0:3/0 = 0
 | 
			
		||||
0:3/0/y_sort_origin = 8
 | 
			
		||||
1:3/0 = 0
 | 
			
		||||
1:3/0/y_sort_origin = 8
 | 
			
		||||
2:3/0 = 0
 | 
			
		||||
2:3/0/y_sort_origin = 8
 | 
			
		||||
0:4/0 = 0
 | 
			
		||||
0:4/0/y_sort_origin = 8
 | 
			
		||||
0:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 8, -8, 8, 8, 4, 8)
 | 
			
		||||
1:4/0 = 0
 | 
			
		||||
1:4/0/y_sort_origin = 8
 | 
			
		||||
1:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
2:4/0 = 0
 | 
			
		||||
2:4/0/y_sort_origin = 8
 | 
			
		||||
2:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
 | 
			
		||||
0:5/0 = 0
 | 
			
		||||
0:5/0/y_sort_origin = 8
 | 
			
		||||
0:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(3.5, -8, 8, -8, 8, -4, 4, -4)
 | 
			
		||||
1:5/0 = 0
 | 
			
		||||
1:5/0/y_sort_origin = 8
 | 
			
		||||
1:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, -4, -8, -4)
 | 
			
		||||
2:5/0 = 0
 | 
			
		||||
2:5/0/y_sort_origin = 8
 | 
			
		||||
2:5/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, -4, -8, -4)
 | 
			
		||||
3:5/0 = 0
 | 
			
		||||
3:5/0/y_sort_origin = 8
 | 
			
		||||
4:5/0 = 0
 | 
			
		||||
4:5/0/y_sort_origin = 8
 | 
			
		||||
5:5/0 = 0
 | 
			
		||||
5:5/0/y_sort_origin = 8
 | 
			
		||||
4:4/0 = 0
 | 
			
		||||
4:4/0/y_sort_origin = 8
 | 
			
		||||
4:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 4, 8, 8, 8, 8, -8)
 | 
			
		||||
3:4/0 = 0
 | 
			
		||||
3:4/0/y_sort_origin = 8
 | 
			
		||||
3:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
 | 
			
		||||
4:3/0 = 0
 | 
			
		||||
4:3/0/y_sort_origin = 8
 | 
			
		||||
3:3/0 = 0
 | 
			
		||||
3:3/0/y_sort_origin = 8
 | 
			
		||||
5:2/0 = 0
 | 
			
		||||
5:2/0/y_sort_origin = 8
 | 
			
		||||
4:1/0 = 0
 | 
			
		||||
4:1/0/y_sort_origin = 8
 | 
			
		||||
4:0/0 = 0
 | 
			
		||||
4:0/0/y_sort_origin = 8
 | 
			
		||||
5:0/0 = 0
 | 
			
		||||
5:0/0/y_sort_origin = 8
 | 
			
		||||
5:1/0 = 0
 | 
			
		||||
5:1/0/y_sort_origin = 8
 | 
			
		||||
4:2/0 = 0
 | 
			
		||||
4:2/0/y_sort_origin = 8
 | 
			
		||||
5:4/0 = 0
 | 
			
		||||
5:4/0/y_sort_origin = 8
 | 
			
		||||
5:4/0/physics_layer_0/polygon_0/points = PackedVector2Array(4, -8, 8, -8, 8, 8, 4, 8)
 | 
			
		||||
5:3/0 = 0
 | 
			
		||||
5:3/0/y_sort_origin = 8
 | 
			
		||||
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, -4, -8, -4, 8, -8, 8)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_tw0o1"]
 | 
			
		||||
texture = ExtResource("2_j2hod")
 | 
			
		||||
0:0/0 = 0
 | 
			
		||||
0:0/0/y_sort_origin = 8
 | 
			
		||||
0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
1:0/0 = 0
 | 
			
		||||
1:0/0/y_sort_origin = 8
 | 
			
		||||
1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
2:0/0 = 0
 | 
			
		||||
2:0/0/y_sort_origin = 8
 | 
			
		||||
2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
3:0/0 = 0
 | 
			
		||||
3:0/0/y_sort_origin = 8
 | 
			
		||||
3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
0:1/0 = 0
 | 
			
		||||
0:1/0/y_sort_origin = 8
 | 
			
		||||
0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
1:1/0 = 0
 | 
			
		||||
1:1/0/y_sort_origin = 8
 | 
			
		||||
1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
2:1/0 = 0
 | 
			
		||||
2:1/0/y_sort_origin = 8
 | 
			
		||||
2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
3:1/0 = 0
 | 
			
		||||
3:1/0/y_sort_origin = 8
 | 
			
		||||
3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
0:2/0 = 0
 | 
			
		||||
0:2/0/y_sort_origin = 8
 | 
			
		||||
0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
1:2/0 = 0
 | 
			
		||||
1:2/0/y_sort_origin = 8
 | 
			
		||||
1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
2:2/0 = 0
 | 
			
		||||
2:2/0/y_sort_origin = 8
 | 
			
		||||
2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
3:2/0 = 0
 | 
			
		||||
3:2/0/y_sort_origin = 8
 | 
			
		||||
3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
0:3/size_in_atlas = Vector2i(1, 2)
 | 
			
		||||
0:3/0 = 0
 | 
			
		||||
0:3/0/texture_origin = Vector2i(0, 8)
 | 
			
		||||
0:3/0/y_sort_origin = 8
 | 
			
		||||
0:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
 | 
			
		||||
1:3/size_in_atlas = Vector2i(1, 2)
 | 
			
		||||
1:3/0 = 0
 | 
			
		||||
1:3/0/texture_origin = Vector2i(0, 8)
 | 
			
		||||
1:3/0/y_sort_origin = 8
 | 
			
		||||
1:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
 | 
			
		||||
2:3/size_in_atlas = Vector2i(1, 2)
 | 
			
		||||
2:3/0 = 0
 | 
			
		||||
2:3/0/texture_origin = Vector2i(0, 8)
 | 
			
		||||
2:3/0/y_sort_origin = 8
 | 
			
		||||
2:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
 | 
			
		||||
3:3/size_in_atlas = Vector2i(1, 2)
 | 
			
		||||
3:3/0 = 0
 | 
			
		||||
3:3/0/texture_origin = Vector2i(0, 8)
 | 
			
		||||
3:3/0/y_sort_origin = 8
 | 
			
		||||
3:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -24, 8, -24, 8, 8, -8, 8)
 | 
			
		||||
4:0/0 = 0
 | 
			
		||||
4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
5:0/0 = 0
 | 
			
		||||
5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
5:1/0 = 0
 | 
			
		||||
5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
4:1/0 = 0
 | 
			
		||||
4:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
4:2/0 = 0
 | 
			
		||||
4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
5:2/0 = 0
 | 
			
		||||
5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
5:3/0 = 0
 | 
			
		||||
5:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
4:3/0 = 0
 | 
			
		||||
4:3/0/physics_layer_0/polygon_0/points = PackedVector2Array(-8, -8, 8, -8, 8, 8, -8, 8)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_w8vpx"]
 | 
			
		||||
texture = ExtResource("3_dmva5")
 | 
			
		||||
0:0/0 = 0
 | 
			
		||||
1:0/0 = 0
 | 
			
		||||
1:1/0 = 0
 | 
			
		||||
2:1/0 = 0
 | 
			
		||||
3:2/0 = 0
 | 
			
		||||
4:2/0 = 0
 | 
			
		||||
4:3/0 = 0
 | 
			
		||||
5:3/0 = 0
 | 
			
		||||
0:1/0 = 0
 | 
			
		||||
0:2/0 = 0
 | 
			
		||||
0:3/0 = 0
 | 
			
		||||
0:4/0 = 0
 | 
			
		||||
0:5/0 = 0
 | 
			
		||||
1:5/0 = 0
 | 
			
		||||
1:6/0 = 0
 | 
			
		||||
2:6/0 = 0
 | 
			
		||||
0:6/0 = 0
 | 
			
		||||
0:7/0 = 0
 | 
			
		||||
1:7/0 = 0
 | 
			
		||||
2:7/0 = 0
 | 
			
		||||
2:5/0 = 0
 | 
			
		||||
1:2/0 = 0
 | 
			
		||||
1:3/0 = 0
 | 
			
		||||
2:3/0 = 0
 | 
			
		||||
3:3/0 = 0
 | 
			
		||||
1:4/0 = 0
 | 
			
		||||
6:3/0 = 0
 | 
			
		||||
2:4/0 = 0
 | 
			
		||||
3:4/0 = 0
 | 
			
		||||
4:4/0 = 0
 | 
			
		||||
2:2/0 = 0
 | 
			
		||||
5:4/0 = 0
 | 
			
		||||
6:4/0 = 0
 | 
			
		||||
7:4/0 = 0
 | 
			
		||||
7:3/0 = 0
 | 
			
		||||
2:0/0 = 0
 | 
			
		||||
3:0/0 = 0
 | 
			
		||||
4:0/0 = 0
 | 
			
		||||
5:0/0 = 0
 | 
			
		||||
6:0/0 = 0
 | 
			
		||||
7:0/0 = 0
 | 
			
		||||
7:1/0 = 0
 | 
			
		||||
6:2/0 = 0
 | 
			
		||||
5:2/0 = 0
 | 
			
		||||
4:1/0 = 0
 | 
			
		||||
3:1/0 = 0
 | 
			
		||||
6:1/0 = 0
 | 
			
		||||
7:2/0 = 0
 | 
			
		||||
5:1/0 = 0
 | 
			
		||||
 | 
			
		||||
[resource]
 | 
			
		||||
physics_layer_0/collision_layer = 1
 | 
			
		||||
sources/0 = SubResource("TileSetAtlasSource_s1h2f")
 | 
			
		||||
sources/3 = SubResource("TileSetAtlasSource_w8vpx")
 | 
			
		||||
sources/1 = SubResource("TileSetAtlasSource_tw0o1")
 | 
			
		||||
| 
						 | 
				
			
			@ -54,14 +54,4 @@ public partial class MapState : Resource
 | 
			
		|||
        }
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Variant Get(string key)
 | 
			
		||||
    {
 | 
			
		||||
        return this[key];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void Set(string key, Variant value)
 | 
			
		||||
    {
 | 
			
		||||
        this[key] = value;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,15 +1,12 @@
 | 
			
		|||
<Project Sdk="Godot.NET.Sdk/4.3.0-beta.1">
 | 
			
		||||
<Project Sdk="Godot.NET.Sdk/4.3.0-dev.3">
 | 
			
		||||
  <PropertyGroup>
 | 
			
		||||
    <TargetFramework>net7.0</TargetFramework>
 | 
			
		||||
    <EnableDynamicLoading>true</EnableDynamicLoading>
 | 
			
		||||
    <PublishAOT>true</PublishAOT>
 | 
			
		||||
  </PropertyGroup>
 | 
			
		||||
  <ItemGroup>
 | 
			
		||||
    <TrimmerRootAssembly Include="GodotSharp" />
 | 
			
		||||
    <TrimmerRootAssembly Include="$(TargetName)" />
 | 
			
		||||
    <Content Remove="UnitTests/**/*" />
 | 
			
		||||
    <Compile Remove="UnitTests/**/*" />
 | 
			
		||||
    <None Remove="UnitTests/**/*" />
 | 
			
		||||
    <PackageReference Include="Firebelley.GodotUtilities" Version="4.0.4" />
 | 
			
		||||
  </ItemGroup>
 | 
			
		||||
</Project>
 | 
			
		||||
</Project>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
[gd_scene load_steps=15 format=3 uid="uid://cyggkyqosjk36"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="StyleBox" path="res://UI/Themes/Panel.tres" id="1_2ffty"]
 | 
			
		||||
[ext_resource type="StyleBox" uid="uid://bqhotx2ogucye" path="res://UI/Themes/Panel.tres" id="1_2ffty"]
 | 
			
		||||
[ext_resource type="Script" path="res://UI/Inventory/ShopMenu.cs" id="1_8c1y7"]
 | 
			
		||||
[ext_resource type="Shader" path="res://Shaders/WipeXY.gdshader" id="2_jqery"]
 | 
			
		||||
[ext_resource type="FontFile" uid="uid://cgwa8bjiyv534" path="res://Assets/Fonts/alagard.ttf" id="3_aj4jx"]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,11 +1,11 @@
 | 
			
		|||
[gd_resource type="Theme" load_steps=11 format=3 uid="uid://cksjbu3vrup5"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="FontFile" uid="uid://6bvgjbmqovau" path="res://Assets/Fonts/calamity/calamity.ttf" id="1_334fe"]
 | 
			
		||||
[ext_resource type="StyleBox" path="res://UI/Themes/InventorySlotButtonFocus.tres" id="2_3w5h1"]
 | 
			
		||||
[ext_resource type="StyleBox" uid="uid://nvb4etac7ee2" path="res://UI/Themes/InventorySlotButtonFocus.tres" id="2_3w5h1"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://b16461tjso0j7" path="res://Assets/Sprites/UI/hotbar-inactive.png" id="2_6sv27"]
 | 
			
		||||
[ext_resource type="StyleBox" path="res://UI/Themes/Panel.tres" id="2_jlgx8"]
 | 
			
		||||
[ext_resource type="StyleBox" path="res://UI/Themes/InventorySlotButtonNormal.tres" id="3_nuiio"]
 | 
			
		||||
[ext_resource type="StyleBox" path="res://UI/Themes/InventorySlotButtonPressed.tres" id="4_mllnb"]
 | 
			
		||||
[ext_resource type="StyleBox" uid="uid://bqhotx2ogucye" path="res://UI/Themes/Panel.tres" id="2_jlgx8"]
 | 
			
		||||
[ext_resource type="StyleBox" uid="uid://cfqp0ycwvwx7c" path="res://UI/Themes/InventorySlotButtonNormal.tres" id="3_nuiio"]
 | 
			
		||||
[ext_resource type="StyleBox" uid="uid://pqtn0115bqtp" path="res://UI/Themes/InventorySlotButtonPressed.tres" id="4_mllnb"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_wk5ww"]
 | 
			
		||||
content_margin_left = 4.0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,6 @@ public enum FactionName
 | 
			
		|||
{
 | 
			
		||||
    Player = 1,
 | 
			
		||||
    Doc = 2,
 | 
			
		||||
    Forest = 4,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
public interface IFaction
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -53,7 +53,7 @@ public partial class Spawner : Node2D
 | 
			
		|||
 | 
			
		||||
            var chr = Character.Instantiate<Characters.Character>();
 | 
			
		||||
            chr.GlobalPosition = randPos;
 | 
			
		||||
            World.Instance.CurrentMap.Entities.AddChild(chr);
 | 
			
		||||
            this.GetAncestor<Scenes.Map>().Entities.AddChild(chr);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
		 Before Width: | Height: | Size: 10 KiB  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://censw3w53gldn"
 | 
			
		||||
path="res://.godot/imported/PhantomCameraBtnPrimaryDefault.png-fcf3696b583a82b1078609a5bfd648f5.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://addons/phantom_camera/assets/PhantomCameraBtnPrimaryDefault.png"
 | 
			
		||||
dest_files=["res://.godot/imported/PhantomCameraBtnPrimaryDefault.png-fcf3696b583a82b1078609a5bfd648f5.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
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 9.7 KiB  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://pvr8mbvl1onm"
 | 
			
		||||
path="res://.godot/imported/PhantomCameraBtnPrimaryHover.png-3d2e4d225f6a86ce8a9c981ee7926a16.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://addons/phantom_camera/assets/PhantomCameraBtnPrimaryHover.png"
 | 
			
		||||
dest_files=["res://.godot/imported/PhantomCameraBtnPrimaryHover.png-3d2e4d225f6a86ce8a9c981ee7926a16.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
 | 
			
		||||
| 
						 | 
				
			
			@ -1,7 +0,0 @@
 | 
			
		|||
#####################
 | 
			
		||||
EXAMPLE ASSET CREDITS
 | 
			
		||||
#####################
 | 
			
		||||
 | 
			
		||||
# level_spritesheet
 | 
			
		||||
https://opengameart.org/content/a-platformer-in-the-forest
 | 
			
		||||
https://opengameart.org/users/buch
 | 
			
		||||
| 
						 | 
				
			
			@ -1,120 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=10 format=3 uid="uid://7kh0xydx0b1o"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/2D/player_character_body_2d.gd" id="1_jnc14"]
 | 
			
		||||
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_62b2n"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://ci76plsequlrq" path="res://addons/phantom_camera/examples/textures/2D/player_sprite.svg" id="2_yr8cm"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="4_rloon"]
 | 
			
		||||
[ext_resource type="Resource" uid="uid://cecrnq0wnkexh" path="res://addons/phantom_camera/examples/resources/tween/item_focus_phantom_camera_2d_tween.tres" id="5_4iyk1"]
 | 
			
		||||
[ext_resource type="Resource" uid="uid://cllveybboaqk5" path="res://addons/phantom_camera/examples/resources/tween/inventory_phantom_camera_2d_tween.tres" id="6_2h6fv"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_5hryl"]
 | 
			
		||||
bg_color = Color(0.85098, 0.894118, 0.937255, 1)
 | 
			
		||||
border_width_left = 2
 | 
			
		||||
border_width_top = 2
 | 
			
		||||
border_width_right = 2
 | 
			
		||||
border_width_bottom = 2
 | 
			
		||||
border_color = Color(0.113725, 0.113725, 0.113725, 1)
 | 
			
		||||
corner_radius_top_left = 7
 | 
			
		||||
corner_radius_top_right = 7
 | 
			
		||||
corner_radius_bottom_right = 7
 | 
			
		||||
corner_radius_bottom_left = 7
 | 
			
		||||
 | 
			
		||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_xj4ar"]
 | 
			
		||||
size = Vector2(64, 57)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_18i13"]
 | 
			
		||||
size = Vector2(64, 57)
 | 
			
		||||
 | 
			
		||||
[node name="CharacterBody2D" type="CharacterBody2D"]
 | 
			
		||||
script = ExtResource("1_jnc14")
 | 
			
		||||
 | 
			
		||||
[node name="DarkOverlay" type="ColorRect" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
visible = false
 | 
			
		||||
anchors_preset = 8
 | 
			
		||||
anchor_left = 0.5
 | 
			
		||||
anchor_top = 0.5
 | 
			
		||||
anchor_right = 0.5
 | 
			
		||||
anchor_bottom = 0.5
 | 
			
		||||
offset_left = -1000.0
 | 
			
		||||
offset_top = -1000.0
 | 
			
		||||
offset_right = 1000.0
 | 
			
		||||
offset_bottom = 1000.0
 | 
			
		||||
grow_horizontal = 2
 | 
			
		||||
grow_vertical = 2
 | 
			
		||||
color = Color(0, 0, 0, 0.615686)
 | 
			
		||||
 | 
			
		||||
[node name="PlayerVisuals" type="Node2D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerSprite" type="Sprite2D" parent="PlayerVisuals"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
scale = Vector2(0.5, 0.5)
 | 
			
		||||
texture = ExtResource("2_yr8cm")
 | 
			
		||||
 | 
			
		||||
[node name="InteractionPrompt" type="Panel" parent="PlayerVisuals"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
visible = false
 | 
			
		||||
anchors_preset = 7
 | 
			
		||||
anchor_left = 0.5
 | 
			
		||||
anchor_top = 1.0
 | 
			
		||||
anchor_right = 0.5
 | 
			
		||||
anchor_bottom = 1.0
 | 
			
		||||
offset_left = -16.0
 | 
			
		||||
offset_top = -66.0
 | 
			
		||||
offset_right = 16.0
 | 
			
		||||
offset_bottom = -34.0
 | 
			
		||||
grow_horizontal = 2
 | 
			
		||||
grow_vertical = 0
 | 
			
		||||
size_flags_vertical = 0
 | 
			
		||||
theme_override_styles/panel = SubResource("StyleBoxFlat_5hryl")
 | 
			
		||||
 | 
			
		||||
[node name="Label" type="Label" parent="PlayerVisuals/InteractionPrompt"]
 | 
			
		||||
layout_mode = 1
 | 
			
		||||
anchors_preset = 15
 | 
			
		||||
anchor_right = 1.0
 | 
			
		||||
anchor_bottom = 1.0
 | 
			
		||||
offset_top = -3.0
 | 
			
		||||
offset_bottom = 5.0
 | 
			
		||||
grow_horizontal = 2
 | 
			
		||||
grow_vertical = 2
 | 
			
		||||
theme_override_colors/font_color = Color(0, 0, 0, 1)
 | 
			
		||||
theme_override_fonts/font = ExtResource("2_62b2n")
 | 
			
		||||
theme_override_font_sizes/font_size = 26
 | 
			
		||||
text = "F"
 | 
			
		||||
horizontal_alignment = 1
 | 
			
		||||
vertical_alignment = 1
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
 | 
			
		||||
position = Vector2(0, -0.5)
 | 
			
		||||
shape = SubResource("RectangleShape2D_xj4ar")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerArea2D" type="Area2D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
collision_layer = 2
 | 
			
		||||
collision_mask = 2
 | 
			
		||||
priority = 20
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="PlayerArea2D"]
 | 
			
		||||
position = Vector2(0, -0.5)
 | 
			
		||||
shape = SubResource("RectangleShape2D_18i13")
 | 
			
		||||
 | 
			
		||||
[node name="ItemFocusPhantomCamera2D" type="Node2D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
position = Vector2(0, -122)
 | 
			
		||||
script = ExtResource("4_rloon")
 | 
			
		||||
zoom = Vector2(2, 2)
 | 
			
		||||
frame_preview = false
 | 
			
		||||
tween_resource = ExtResource("5_4iyk1")
 | 
			
		||||
follow_damping_value = Vector2(0, 0)
 | 
			
		||||
draw_limits = true
 | 
			
		||||
 | 
			
		||||
[node name="InventoryPhantomCamera2D" type="Node2D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
position = Vector2(-183, -5)
 | 
			
		||||
script = ExtResource("4_rloon")
 | 
			
		||||
zoom = Vector2(2.5, 2.5)
 | 
			
		||||
frame_preview = false
 | 
			
		||||
tween_resource = ExtResource("6_2h6fv")
 | 
			
		||||
follow_damping_value = Vector2(0, 0)
 | 
			
		||||
draw_limits = true
 | 
			
		||||
| 
						 | 
				
			
			@ -1,379 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=40 format=3 uid="uid://ci12ytew5vwty"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_wn7ww"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/npc.gd" id="2_2n1da"]
 | 
			
		||||
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_e7gxt"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="2_tvx5n"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_y3dy8"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="3_f5qrw"]
 | 
			
		||||
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="4_a27nb"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_m2vbn"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3d_trigger_area.gd" id="4_moad5"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="7_jitt8"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_jtk1d"]
 | 
			
		||||
script = ExtResource("4_m2vbn")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_o161n"]
 | 
			
		||||
script = ExtResource("4_m2vbn")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_7tjw4"]
 | 
			
		||||
size = Vector3(2, 0.5, 4)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hpllm"]
 | 
			
		||||
transparency = 1
 | 
			
		||||
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_65o6h"]
 | 
			
		||||
size = Vector3(2, 0.5, 4)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_tpc7d"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_g0eml"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v5iy7"]
 | 
			
		||||
albedo_color = Color(0.988235, 0.478431, 0.905882, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_tpvee"]
 | 
			
		||||
script = ExtResource("7_jitt8")
 | 
			
		||||
duration = 0.0
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_bxbnv"]
 | 
			
		||||
script = ExtResource("4_m2vbn")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_wcrbb"]
 | 
			
		||||
size = Vector3(6.8, 0.1, 5.4)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_7ih0k"]
 | 
			
		||||
script = ExtResource("7_jitt8")
 | 
			
		||||
duration = 0.0
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_4iyps"]
 | 
			
		||||
script = ExtResource("4_m2vbn")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_ctyr8"]
 | 
			
		||||
size = Vector3(7.4, 0.1, 3.6)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_x5y0u"]
 | 
			
		||||
script = ExtResource("7_jitt8")
 | 
			
		||||
duration = 0.0
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_pgiyx"]
 | 
			
		||||
script = ExtResource("4_m2vbn")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_ua072"]
 | 
			
		||||
size = Vector3(6.8, 0.1, 3.6)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_ugc3s"]
 | 
			
		||||
size = Vector3(1, 1, 2)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_68thd"]
 | 
			
		||||
albedo_color = Color(0.34902, 0.862745, 0.854902, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_wphly"]
 | 
			
		||||
size = Vector3(1, 0.5, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_gyp5s"]
 | 
			
		||||
size = Vector3(20, 40, 30)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_lfaqs"]
 | 
			
		||||
size = Vector3(20, 40, 30)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_n70lt"]
 | 
			
		||||
size = Vector3(14, 40, 6)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_jxmqm"]
 | 
			
		||||
size = Vector3(14, 40, 6)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_x0tgm"]
 | 
			
		||||
size = Vector3(8, 40, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_t67ef"]
 | 
			
		||||
size = Vector3(50, 40, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_rmslh"]
 | 
			
		||||
size = Vector3(0.5, 6, 13.5)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_242ij"]
 | 
			
		||||
size = Vector3(2, 3, 3)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_niuda"]
 | 
			
		||||
size = Vector3(8, 6, 0.5)
 | 
			
		||||
 | 
			
		||||
[node name="Root" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999858, 0, 0, 0, 0.94884, 0.315632, 0, -0.315637, 0.948825, -2.53871, 2, 9.76232)
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
script = ExtResource("1_wn7ww")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerGroup" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D" parent="PlayerGroup" instance=ExtResource("2_tvx5n")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.53871, 0.5, 7.26232)
 | 
			
		||||
 | 
			
		||||
[node name="MovementInstructionsLabel" type="Label3D" parent="PlayerGroup"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.5, 0, -0.5, 0.866025, -2.47682, -0.0708016, 7.93048)
 | 
			
		||||
modulate = Color(0.294118, 1, 0.631373, 1)
 | 
			
		||||
text = "[WASD] to move"
 | 
			
		||||
font = ExtResource("2_e7gxt")
 | 
			
		||||
font_size = 48
 | 
			
		||||
 | 
			
		||||
[node name="PlayerPhantomCamera3D" type="Node3D" parent="PlayerGroup" node_paths=PackedStringArray("follow_target")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999858, 0, 0, 0, 0.94884, 0.315632, 0, -0.315637, 0.948825, -2.53871, 2, 9.76232)
 | 
			
		||||
script = ExtResource("2_y3dy8")
 | 
			
		||||
priority = 10
 | 
			
		||||
follow_mode = 2
 | 
			
		||||
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
 | 
			
		||||
tween_resource = ExtResource("4_a27nb")
 | 
			
		||||
tween_on_load = false
 | 
			
		||||
camera_3d_resource = SubResource("Resource_jtk1d")
 | 
			
		||||
follow_offset = Vector3(0, 1.5, 2.5)
 | 
			
		||||
follow_damping = true
 | 
			
		||||
 | 
			
		||||
[node name="NPCGroup" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="NPCPhantomCamera3D" type="Node3D" parent="NPCGroup"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.616596, -0.109786, 0.779587, -2.23517e-08, 0.990229, 0.13945, -0.78728, -0.0859841, 0.610571, -2.98802, 1.50739, 1.19719)
 | 
			
		||||
script = ExtResource("2_y3dy8")
 | 
			
		||||
tween_resource = ExtResource("4_a27nb")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_o161n")
 | 
			
		||||
 | 
			
		||||
[node name="NPCDescriptionLabel" type="Label3D" parent="NPCGroup"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.866026, 0.5, 0, -0.5, 0.866025, -3.04693, 0.367287, 0.953757)
 | 
			
		||||
text = "Input Example"
 | 
			
		||||
font = ExtResource("2_e7gxt")
 | 
			
		||||
 | 
			
		||||
[node name="NPCDialogueExampleLabel" type="Label3D" parent="NPCGroup"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(1, 4.54671e-10, 1.65487e-10, 4.25644e-10, 0.939693, 0.34202, 0, -0.34202, 0.939693, -4.46738, 1.58641, -0.253679)
 | 
			
		||||
modulate = Color(1, 0.603922, 0.254902, 1)
 | 
			
		||||
text = "Press [ F ] to change camera"
 | 
			
		||||
font = ExtResource("2_e7gxt")
 | 
			
		||||
 | 
			
		||||
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="NPCGroup"]
 | 
			
		||||
transform = Transform3D(0.819152, 4.83851e-10, -0.573576, -3.92481e-09, 1, -6.3473e-09, 0.573576, 7.45058e-09, 0.819152, -3.46138, -0.4, 0.875321)
 | 
			
		||||
mesh = SubResource("BoxMesh_7tjw4")
 | 
			
		||||
skeleton = NodePath("../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_hpllm")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="NPCInteractionArea3D" type="Area3D" parent="NPCGroup/NPCInteractionZoneMesh"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
 | 
			
		||||
monitorable = false
 | 
			
		||||
 | 
			
		||||
[node name="NPCInterationCollisionShape3D" type="CollisionShape3D" parent="NPCGroup/NPCInteractionZoneMesh/NPCInteractionArea3D"]
 | 
			
		||||
shape = SubResource("BoxShape3D_65o6h")
 | 
			
		||||
 | 
			
		||||
[node name="NPC" type="StaticBody3D" parent="NPCGroup"]
 | 
			
		||||
transform = Transform3D(1, 4.83851e-10, 0, 4.25644e-10, 1, -7.45058e-09, 0, 7.45058e-09, 1, -4.56338, 0.5, -0.272679)
 | 
			
		||||
script = ExtResource("2_2n1da")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCollisionShape3D2" type="CollisionShape3D" parent="NPCGroup/NPC"]
 | 
			
		||||
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
 | 
			
		||||
shape = SubResource("CapsuleShape3D_tpc7d")
 | 
			
		||||
 | 
			
		||||
[node name="NPCMesh" type="MeshInstance3D" parent="NPCGroup/NPC"]
 | 
			
		||||
transform = Transform3D(1, -2.68591e-26, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0)
 | 
			
		||||
mesh = SubResource("CapsuleMesh_g0eml")
 | 
			
		||||
skeleton = NodePath("../../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_v5iy7")
 | 
			
		||||
 | 
			
		||||
[node name="MoveToLocation" type="Node3D" parent="NPCGroup"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.70084, 0.5, 0.962891)
 | 
			
		||||
 | 
			
		||||
[node name="FixedCameraTriggerZone" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="FixedCameraLabel" type="Label3D" parent="FixedCameraTriggerZone"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.939693, 0.280167, -0.196175, 1.49012e-08, 0.573577, 0.819152, 0.34202, -0.769751, 0.538986, -0.538716, -0.247626, 3.13456)
 | 
			
		||||
text = "Fixed Camera
 | 
			
		||||
Example"
 | 
			
		||||
font = ExtResource("2_e7gxt")
 | 
			
		||||
 | 
			
		||||
[node name="NorthRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
 | 
			
		||||
transform = Transform3D(0.38357, -0.555836, 0.737507, -0.105898, 0.766851, 0.633027, -0.917417, -0.320912, 0.235279, 6.89638, 4.73986, 0.115512)
 | 
			
		||||
script = ExtResource("2_y3dy8")
 | 
			
		||||
tween_resource = SubResource("Resource_tpvee")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_bxbnv")
 | 
			
		||||
 | 
			
		||||
[node name="NorthRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -0.45, -0.9)
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("4_moad5")
 | 
			
		||||
area_pcam = NodePath("../NorthRoomPhantomCamera3D")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/NorthRoomTrigger"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, -0.4)
 | 
			
		||||
shape = SubResource("BoxShape3D_wcrbb")
 | 
			
		||||
 | 
			
		||||
[node name="EntryRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
 | 
			
		||||
transform = Transform3D(0.258818, -0.482963, 0.836515, 1.3027e-15, 0.866025, 0.499999, -0.965924, -0.129409, 0.224143, 6.69741, 4.73364, 4.02374)
 | 
			
		||||
script = ExtResource("2_y3dy8")
 | 
			
		||||
tween_resource = SubResource("Resource_7ih0k")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_4iyps")
 | 
			
		||||
 | 
			
		||||
[node name="EntryRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3.00003, -0.454982, 3.00572)
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("4_moad5")
 | 
			
		||||
area_pcam = NodePath("../EntryRoomPhantomCamera3D")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/EntryRoomTrigger"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0, 0.2)
 | 
			
		||||
shape = SubResource("BoxShape3D_ctyr8")
 | 
			
		||||
 | 
			
		||||
[node name="SouthRoomPhantomCamera3D" type="Node3D" parent="FixedCameraTriggerZone"]
 | 
			
		||||
transform = Transform3D(-0.766043, -0.492403, 0.413175, 0, 0.642787, 0.766043, -0.642786, 0.586825, -0.492403, 6.89741, 4.73364, 5.62374)
 | 
			
		||||
script = ExtResource("2_y3dy8")
 | 
			
		||||
tween_resource = SubResource("Resource_x5y0u")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_pgiyx")
 | 
			
		||||
 | 
			
		||||
[node name="SouthRoomTrigger" type="Area3D" parent="FixedCameraTriggerZone" node_paths=PackedStringArray("area_pcam")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 3, -0.45, 6.7)
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("4_moad5")
 | 
			
		||||
area_pcam = NodePath("../SouthRoomPhantomCamera3D")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="FixedCameraTriggerZone/SouthRoomTrigger"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.6, 0, 0.1)
 | 
			
		||||
shape = SubResource("BoxShape3D_ua072")
 | 
			
		||||
 | 
			
		||||
[node name="CSGMesh3D" type="CSGMesh3D" parent="FixedCameraTriggerZone"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.14238, 1.82571, 2.88655)
 | 
			
		||||
mesh = SubResource("BoxMesh_ugc3s")
 | 
			
		||||
material = SubResource("StandardMaterial3D_68thd")
 | 
			
		||||
 | 
			
		||||
[node name="CSGMesh3D2" type="CSGMesh3D" parent="FixedCameraTriggerZone/CSGMesh3D"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00192642, -0.0120339, 0.00494432)
 | 
			
		||||
operation = 2
 | 
			
		||||
mesh = SubResource("BoxMesh_wphly")
 | 
			
		||||
material = SubResource("StandardMaterial3D_68thd")
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node3D" parent="Environment"]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment/Environment" instance=ExtResource("3_f5qrw")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="West Wall" type="StaticBody3D" parent="Environment/Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16, 0.5, 0)
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/West Wall"]
 | 
			
		||||
mesh = SubResource("BoxMesh_gyp5s")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/West Wall"]
 | 
			
		||||
shape = SubResource("BoxShape3D_lfaqs")
 | 
			
		||||
 | 
			
		||||
[node name="East Wall" type="StaticBody3D" parent="Environment/Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.999, 0.502, 0)
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/East Wall"]
 | 
			
		||||
mesh = SubResource("BoxMesh_gyp5s")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/East Wall"]
 | 
			
		||||
shape = SubResource("BoxShape3D_lfaqs")
 | 
			
		||||
 | 
			
		||||
[node name="North Wall" type="StaticBody3D" parent="Environment/Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.5, -6.90828)
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="MeshInstance3D2" type="MeshInstance3D" parent="Environment/Environment/North Wall"]
 | 
			
		||||
mesh = SubResource("BoxMesh_n70lt")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/North Wall"]
 | 
			
		||||
shape = SubResource("BoxShape3D_jxmqm")
 | 
			
		||||
 | 
			
		||||
[node name="South Wall" type="StaticBody3D" parent="Environment/Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.25, 0.5, 9.087)
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="MeshInstance3D3" type="MeshInstance3D" parent="Environment/Environment/South Wall"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0)
 | 
			
		||||
mesh = SubResource("BoxMesh_x0tgm")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Environment/Environment/South Wall"]
 | 
			
		||||
shape = SubResource("BoxShape3D_t67ef")
 | 
			
		||||
 | 
			
		||||
[node name="FixedCamOuterWall" type="CSGMesh3D" parent="Environment/Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.5, 2)
 | 
			
		||||
use_collision = true
 | 
			
		||||
mesh = SubResource("BoxMesh_rmslh")
 | 
			
		||||
 | 
			
		||||
[node name="FixedCamOuterDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamOuterWall"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 1)
 | 
			
		||||
operation = 2
 | 
			
		||||
mesh = SubResource("BoxMesh_242ij")
 | 
			
		||||
 | 
			
		||||
[node name="FixedCamNorthWall" type="CSGMesh3D" parent="Environment/Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, 1)
 | 
			
		||||
use_collision = true
 | 
			
		||||
mesh = SubResource("BoxMesh_niuda")
 | 
			
		||||
 | 
			
		||||
[node name="FixedCamNorthDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamNorthWall"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.5, 0)
 | 
			
		||||
operation = 2
 | 
			
		||||
mesh = SubResource("BoxMesh_242ij")
 | 
			
		||||
 | 
			
		||||
[node name="FixedCamSouthWall" type="CSGMesh3D" parent="Environment/Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 2.5, 5.1)
 | 
			
		||||
use_collision = true
 | 
			
		||||
mesh = SubResource("BoxMesh_niuda")
 | 
			
		||||
 | 
			
		||||
[node name="FixedCamSouthDoorway" type="CSGMesh3D" parent="Environment/Environment/FixedCamSouthWall"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -1.50541, 1.19209e-07)
 | 
			
		||||
operation = 2
 | 
			
		||||
mesh = SubResource("BoxMesh_242ij")
 | 
			
		||||
 | 
			
		||||
[editable path="PlayerGroup/PlayerCharacterBody3D"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,147 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=10 format=3 uid="uid://c4llb3gsbfv1a"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_7824u"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_g1bv4"]
 | 
			
		||||
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_420vh"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_oqbub"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_t4fso"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_c0upu"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_f2w3x"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_wg1pr"]
 | 
			
		||||
script = ExtResource("4_oqbub")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
 | 
			
		||||
albedo_texture = ExtResource("5_c0upu")
 | 
			
		||||
uv1_triplanar = true
 | 
			
		||||
uv1_world_triplanar = true
 | 
			
		||||
 | 
			
		||||
[node name="Root" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, 0.083587, 2.94168, 5.22787)
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
script = ExtResource("1_7824u")
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Player" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.99995, 0, 0, 0, 0.79324, 0.608671, 0, -0.608675, 0.793235, 0.083587, 2.94168, 5.22787)
 | 
			
		||||
script = ExtResource("2_g1bv4")
 | 
			
		||||
follow_mode = 5
 | 
			
		||||
follow_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
 | 
			
		||||
tween_resource = ExtResource("3_420vh")
 | 
			
		||||
tween_on_load = false
 | 
			
		||||
camera_3d_resource = SubResource("Resource_wg1pr")
 | 
			
		||||
follow_damping = true
 | 
			
		||||
follow_distance = 4.0
 | 
			
		||||
dead_zone_width = 0.384
 | 
			
		||||
dead_zone_height = 0.669
 | 
			
		||||
show_viewfinder_in_play = true
 | 
			
		||||
spring_length = 4.0
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D2" parent="Player" instance=ExtResource("5_f2w3x")]
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment" instance=ExtResource("4_t4fso")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.636134, 0.805455, -6.37532)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.71971
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -7.54597, -0.540694, -3.39517)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.53269
 | 
			
		||||
height = 2.5036
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.64877, -1.50101, 1.22863)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.57419
 | 
			
		||||
height = 3.47475
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.4732, 0.805455, -8.78984)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 0.956285
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.40027, -1.69814, 3.36997)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 3.34732
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.13768, -0.599204, -1.04651)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.65844
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.7976, -0.599204, -2.42244)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.14606
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.84078, -0.497663, 4.44352)
 | 
			
		||||
use_collision = true
 | 
			
		||||
inner_radius = 0.971543
 | 
			
		||||
outer_radius = 2.15226
 | 
			
		||||
sides = 32
 | 
			
		||||
ring_sides = 18
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(178.429, 14.0773, 1)
 | 
			
		||||
material = SubResource("StandardMaterial3D_auy8m")
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.88916, 0.760708, -6.1376)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(2.64182, 2.52142, 2.30997)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.83837, -0.241718, 7.14677)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(3.80964, 1.67049, 0.932048)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.34377, 0.138478, -4.36159)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(1.53893, 1.27695, 1.80814)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.9834, 0.138478, -1.89037)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.03502, 1.27695, 5.2198)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.38147, 0.0440434, 8.36617)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.57784, 1.08809, 3.11285)
 | 
			
		||||
 | 
			
		||||
[editable path="Player/PlayerCharacterBody3D2"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,199 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=14 format=3 uid="uid://dw2yflu7up2rr"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_pmeux"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_q1ygp"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_hpix1"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_8qqha"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_evdoo"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_vqgn5"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_wr3bq"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_ucp3e"]
 | 
			
		||||
script = ExtResource("3_hpix1")
 | 
			
		||||
duration = 1.0
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_ab013"]
 | 
			
		||||
script = ExtResource("4_evdoo")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
 | 
			
		||||
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
 | 
			
		||||
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
 | 
			
		||||
albedo_texture = ExtResource("5_wr3bq")
 | 
			
		||||
uv1_triplanar = true
 | 
			
		||||
uv1_world_triplanar = true
 | 
			
		||||
 | 
			
		||||
[node name="Node3D" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, -5.60519e-45, 6.39, 7)
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
script = ExtResource("1_pmeux")
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Player" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999954, 0, 0, 0, 0.638683, 0.769345, 0, -0.769298, 0.638723, -5.60519e-45, 6.39, 7)
 | 
			
		||||
script = ExtResource("2_q1ygp")
 | 
			
		||||
priority = 5
 | 
			
		||||
follow_mode = 1
 | 
			
		||||
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
 | 
			
		||||
tween_resource = SubResource("Resource_ucp3e")
 | 
			
		||||
tween_on_load = false
 | 
			
		||||
camera_3d_resource = SubResource("Resource_ab013")
 | 
			
		||||
follow_damping = true
 | 
			
		||||
follow_damping_value = Vector3(0.3, 0.3, 0.3)
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D" parent="Player" instance=ExtResource("5_vqgn5")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 6.39, 7)
 | 
			
		||||
enable_gravity = false
 | 
			
		||||
 | 
			
		||||
[node name="PlayerVisual" parent="Player/PlayerCharacterBody3D" index="2"]
 | 
			
		||||
visible = false
 | 
			
		||||
 | 
			
		||||
[node name="NPCs" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.04486, 0.519002, -1.52506)
 | 
			
		||||
mesh = SubResource("CapsuleMesh_2h36r")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.51494, 0.519, 4.06618)
 | 
			
		||||
mesh = SubResource("CapsuleMesh_2h36r")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment" instance=ExtResource("4_8qqha")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.62737, 0.805455, -6.37532)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.71971
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 24.9378, 0.31181, -5.46661)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.77591
 | 
			
		||||
height = 1.62362
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.58617, 0.31181, 6.6322)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.57419
 | 
			
		||||
height = 3.47475
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.774, 0.201103, 2.71259)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.41311
 | 
			
		||||
height = 1.40221
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 7.40488, 0.201101, 11.6804)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.21673
 | 
			
		||||
height = 7.88261
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.20971, 0.805455, -8.78984)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 0.956285
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9771, -1.69814, -6.51262)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 3.34732
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.555532, -0.599204, 8.81048)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.65844
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.0611, -0.599204, -2.42244)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.14606
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.21187, -1.90735e-06, 0.346393)
 | 
			
		||||
use_collision = true
 | 
			
		||||
inner_radius = 1.3
 | 
			
		||||
outer_radius = 2.0
 | 
			
		||||
sides = 32
 | 
			
		||||
ring_sides = 18
 | 
			
		||||
 | 
			
		||||
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 21.9283, -1.90735e-06, 7.89765)
 | 
			
		||||
use_collision = true
 | 
			
		||||
inner_radius = 0.971543
 | 
			
		||||
outer_radius = 2.15226
 | 
			
		||||
sides = 32
 | 
			
		||||
ring_sides = 18
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.49828, 6.53866, -12.6331)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(178.429, 14.0773, 1)
 | 
			
		||||
material = SubResource("StandardMaterial3D_auy8m")
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.15267, 0.760708, -6.1376)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(2.64182, 2.52142, 2.30997)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.3427, 0.335247, 8.22829)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(3.80964, 1.67049, 0.932048)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.08027, 0.138478, -4.36159)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(1.53893, 1.27695, 1.80814)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.7748, 0.138478, 5.20734)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.03502, 1.27695, 5.2198)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.1473, 1.78638, -1.60318)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.57784, 4.57276, 3.11285)
 | 
			
		||||
 | 
			
		||||
[editable path="Player/PlayerCharacterBody3D"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,171 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=13 format=3 uid="uid://dbfiy6svpcqap"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="1_r00ve"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_pi7mp"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="2_wnlkq"]
 | 
			
		||||
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_1eb12"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="3_a5igg"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="3_wr1tj"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_70gws"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_1iman"]
 | 
			
		||||
script = ExtResource("5_70gws")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
 | 
			
		||||
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
 | 
			
		||||
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
 | 
			
		||||
albedo_texture = ExtResource("3_a5igg")
 | 
			
		||||
uv1_triplanar = true
 | 
			
		||||
uv1_world_triplanar = true
 | 
			
		||||
 | 
			
		||||
[node name="Node3D" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -7.26116, 5.72974, 12.279)
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
script = ExtResource("3_wr1tj")
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Player" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D2" parent="Player" instance=ExtResource("2_wnlkq")]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_targets")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -7.26116, 5.72974, 12.279)
 | 
			
		||||
script = ExtResource("2_pi7mp")
 | 
			
		||||
priority = 5
 | 
			
		||||
follow_mode = 3
 | 
			
		||||
follow_targets = [NodePath("../PlayerCharacterBody3D2"), NodePath("../../NPCs/PlayerMeshInstance3D"), NodePath("../../NPCs/PlayerMeshInstance3D2")]
 | 
			
		||||
tween_resource = ExtResource("3_1eb12")
 | 
			
		||||
tween_on_load = false
 | 
			
		||||
camera_3d_resource = SubResource("Resource_1iman")
 | 
			
		||||
follow_damping = true
 | 
			
		||||
follow_distance = 5.0
 | 
			
		||||
auto_follow_distance = true
 | 
			
		||||
auto_follow_distance_min = 5.0
 | 
			
		||||
auto_follow_distance_max = 15.0
 | 
			
		||||
auto_follow_distance_divisor = 20.0
 | 
			
		||||
spring_length = 5.0
 | 
			
		||||
 | 
			
		||||
[node name="NPCs" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.6059, 0.519002, 0.128472)
 | 
			
		||||
mesh = SubResource("CapsuleMesh_2h36r")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.0461, 0.519, 0.249913)
 | 
			
		||||
mesh = SubResource("CapsuleMesh_2h36r")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment" instance=ExtResource("1_r00ve")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Wall" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(178.429, 14.0773, 1)
 | 
			
		||||
material = SubResource("StandardMaterial3D_auy8m")
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.6511, 0.805455, -6.37532)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.71971
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 12.9141, 0.31181, -5.46661)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.77591
 | 
			
		||||
height = 1.62362
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.6099, 0.31181, 6.6322)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.57419
 | 
			
		||||
height = 3.47475
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.81402, 0.805455, -8.78984)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 0.956285
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.95333, -1.69814, -6.51262)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 3.34732
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -11.4682, -0.599204, 8.81048)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.65844
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0848, -0.599204, -2.42244)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.14606
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.90455, -1.90735e-06, 7.89765)
 | 
			
		||||
use_collision = true
 | 
			
		||||
inner_radius = 0.971543
 | 
			
		||||
outer_radius = 2.15226
 | 
			
		||||
sides = 32
 | 
			
		||||
ring_sides = 18
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1764, 0.760708, -6.1376)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(2.64182, 2.52142, 2.30997)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.31901, 0.335247, 8.22829)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(3.80964, 1.67049, 0.932048)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.94346, 0.138478, -4.36159)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(1.53893, 1.27695, 1.80814)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.7985, 0.138478, 5.20734)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.03502, 1.27695, 5.2198)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 18.1236, 1.78638, -1.60318)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.57784, 4.57276, 3.11285)
 | 
			
		||||
 | 
			
		||||
[editable path="Player/PlayerCharacterBody3D2"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,221 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=24 format=3 uid="uid://dxx7ngi0emt8h"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_lm5n8"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="3_bd7x3"]
 | 
			
		||||
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="3_od2r4"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_dfdlo"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_hni7n"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="4_lfwkm"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/path_follow.gd" id="5_vdqkm"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="5_vms5c"]
 | 
			
		||||
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="6_obo83"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_ofv2c"]
 | 
			
		||||
script = ExtResource("4_hni7n")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_01tho"]
 | 
			
		||||
script = ExtResource("4_lfwkm")
 | 
			
		||||
duration = 1.2
 | 
			
		||||
transition = 3
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_syh5m"]
 | 
			
		||||
script = ExtResource("4_hni7n")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Curve3D" id="Curve3D_b33df"]
 | 
			
		||||
_data = {
 | 
			
		||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10),
 | 
			
		||||
"tilts": PackedFloat32Array(0, 0)
 | 
			
		||||
}
 | 
			
		||||
point_count = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_aovgi"]
 | 
			
		||||
size = Vector3(6, 0.1, 10)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_0hdeh"]
 | 
			
		||||
size = Vector3(6, 0.1, 10)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fsm1b"]
 | 
			
		||||
transparency = 1
 | 
			
		||||
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_xci4c"]
 | 
			
		||||
script = ExtResource("4_hni7n")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Curve3D" id="Curve3D_8uw2x"]
 | 
			
		||||
_data = {
 | 
			
		||||
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0),
 | 
			
		||||
"tilts": PackedFloat32Array(0, 0)
 | 
			
		||||
}
 | 
			
		||||
point_count = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_ctnqu"]
 | 
			
		||||
size = Vector3(12, 0.1, 4)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_f6dp8"]
 | 
			
		||||
size = Vector3(12, 0.1, 4)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gwnkj"]
 | 
			
		||||
transparency = 1
 | 
			
		||||
albedo_color = Color(0.568403, 0.988235, 0.762724, 0.0901961)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_7l3dh"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_as6ok"]
 | 
			
		||||
 | 
			
		||||
[node name="Root" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 0, 2.507, 1.5)
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
script = ExtResource("1_lm5n8")
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999807, -0.00216249, 0.00184445, 0, 0.648836, 0.760728, -0.00284214, -0.760718, 0.648839, 0, 2.507, 1.5)
 | 
			
		||||
script = ExtResource("3_bd7x3")
 | 
			
		||||
priority = 10
 | 
			
		||||
follow_mode = 2
 | 
			
		||||
follow_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
 | 
			
		||||
tween_resource = ExtResource("3_od2r4")
 | 
			
		||||
tween_on_load = false
 | 
			
		||||
camera_3d_resource = SubResource("Resource_ofv2c")
 | 
			
		||||
follow_offset = Vector3(0, 2, 1.5)
 | 
			
		||||
follow_damping = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("5_vms5c")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.507, 0)
 | 
			
		||||
 | 
			
		||||
[node name="Paths" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PathPhantomCamera3D" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
 | 
			
		||||
transform = Transform3D(-4.37114e-08, -1, -4.37114e-08, 0, -4.37114e-08, 1, -1, 4.37114e-08, 1.91069e-15, -0.31028, 7.9199, -1.60976)
 | 
			
		||||
script = ExtResource("3_bd7x3")
 | 
			
		||||
priority = 2
 | 
			
		||||
follow_mode = 4
 | 
			
		||||
follow_target = NodePath("../../PlayerCharacterBody3D2/PlayerVisual")
 | 
			
		||||
follow_path = NodePath("../FollowPath")
 | 
			
		||||
tween_resource = SubResource("Resource_01tho")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_syh5m")
 | 
			
		||||
follow_damping = true
 | 
			
		||||
 | 
			
		||||
[node name="FollowPath" type="Path3D" parent="Paths"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.31028, 7.9199, -1.60976)
 | 
			
		||||
curve = SubResource("Curve3D_b33df")
 | 
			
		||||
 | 
			
		||||
[node name="StraightPathFollowTrigger" type="Area3D" parent="Paths" node_paths=PackedStringArray("path_pcam")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0420399, -0.45, -6.73666)
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("5_vdqkm")
 | 
			
		||||
path_pcam = NodePath("../PathPhantomCamera3D")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Paths/StraightPathFollowTrigger"]
 | 
			
		||||
shape = SubResource("BoxShape3D_aovgi")
 | 
			
		||||
 | 
			
		||||
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Paths/StraightPathFollowTrigger/CollisionShape3D"]
 | 
			
		||||
mesh = SubResource("BoxMesh_0hdeh")
 | 
			
		||||
skeleton = NodePath("../../../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_fsm1b")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PathPhantomCamera3D2" type="Node3D" parent="Paths" node_paths=PackedStringArray("follow_target", "follow_path")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 7.9199, -13.4572)
 | 
			
		||||
visible = false
 | 
			
		||||
script = ExtResource("3_bd7x3")
 | 
			
		||||
priority = 2
 | 
			
		||||
follow_mode = 4
 | 
			
		||||
follow_target = NodePath("../../PlayerCharacterBody3D2/PlayerVisual")
 | 
			
		||||
follow_path = NodePath("../FollowPath2")
 | 
			
		||||
tween_resource = SubResource("Resource_01tho")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_xci4c")
 | 
			
		||||
follow_damping = true
 | 
			
		||||
follow_damping_value = Vector3(0.6, 0.1, 0.1)
 | 
			
		||||
 | 
			
		||||
[node name="FollowPath2" type="Path3D" parent="Paths"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.97141, 7.9199, -13.4572)
 | 
			
		||||
curve = SubResource("Curve3D_8uw2x")
 | 
			
		||||
 | 
			
		||||
[node name="StraightPathFollowTrigger2" type="Area3D" parent="Paths" node_paths=PackedStringArray("path_pcam")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0420399, 0, -13.7367)
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("5_vdqkm")
 | 
			
		||||
path_pcam = NodePath("../PathPhantomCamera3D2")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Paths/StraightPathFollowTrigger2"]
 | 
			
		||||
shape = SubResource("BoxShape3D_ctnqu")
 | 
			
		||||
 | 
			
		||||
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Paths/StraightPathFollowTrigger2/CollisionShape3D"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.45, 0)
 | 
			
		||||
mesh = SubResource("BoxMesh_f6dp8")
 | 
			
		||||
skeleton = NodePath("../../../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_gwnkj")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Floor3" parent="Environment" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(6, 0, 0, 0, 1, 0, 0, 0, 1, -0.44204, 0, 1.76334)
 | 
			
		||||
 | 
			
		||||
[node name="Floor2" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 14, -0.516667, 1, -6.5)
 | 
			
		||||
 | 
			
		||||
[node name="Floor5" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 14, 0.65, 1, -6.5)
 | 
			
		||||
 | 
			
		||||
[node name="Floor4" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(2, 0, 0, 0, 3, 0, 0, 0, 1, 0.0666667, 1, -18)
 | 
			
		||||
 | 
			
		||||
[node name="Floor6" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(0.333333, 0, 0, 0, 3, 0, 0, 0, 1, -0.766667, 1, -13)
 | 
			
		||||
mesh = SubResource("BoxMesh_7l3dh")
 | 
			
		||||
 | 
			
		||||
[node name="Floor8" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 6, -1.01667, 1, -15.5)
 | 
			
		||||
mesh = SubResource("BoxMesh_as6ok")
 | 
			
		||||
 | 
			
		||||
[node name="Floor9" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(0.166667, 0, 0, 0, 3, 0, 0, 0, 6, 1.15, 1, -15.5)
 | 
			
		||||
mesh = SubResource("BoxMesh_as6ok")
 | 
			
		||||
 | 
			
		||||
[node name="Floor7" parent="Environment/Floor3" instance=ExtResource("4_dfdlo")]
 | 
			
		||||
transform = Transform3D(0.333333, 0, 0, 0, 3, 0, 0, 0, 1, 0.9, 1, -13)
 | 
			
		||||
mesh = SubResource("BoxMesh_7l3dh")
 | 
			
		||||
 | 
			
		||||
[node name="NPCDescriptionLabel" type="Label3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(5.21541e-08, -1, -7.7486e-07, -1.10675e-15, 2.23517e-07, 0.999999, -0.999999, -7.45058e-08, -5.68829e-14, -3.47306, 2.59595, -5.51755)
 | 
			
		||||
text = "Camera follows player while confined to a Path3D"
 | 
			
		||||
font = ExtResource("6_obo83")
 | 
			
		||||
font_size = 64
 | 
			
		||||
 | 
			
		||||
[node name="MovementInstructionsLabel" type="Label3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.02174, -0.455369, 0.570585)
 | 
			
		||||
modulate = Color(0.294118, 1, 0.631373, 1)
 | 
			
		||||
text = "[WASD] to move"
 | 
			
		||||
font = ExtResource("6_obo83")
 | 
			
		||||
font_size = 48
 | 
			
		||||
 | 
			
		||||
[editable path="PlayerCharacterBody3D2"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,174 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=14 format=3 uid="uid://buglvjwpn85ny"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_3tok8"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_grjck"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_j3f4l"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="3_uymu2"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_4u2y6"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_sielv"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_1tybo"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_28vpp"]
 | 
			
		||||
script = ExtResource("3_j3f4l")
 | 
			
		||||
duration = 1.0
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_axopo"]
 | 
			
		||||
script = ExtResource("4_sielv")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_pda7a"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u74j7"]
 | 
			
		||||
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3xplc"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
 | 
			
		||||
albedo_texture = ExtResource("5_1tybo")
 | 
			
		||||
uv1_triplanar = true
 | 
			
		||||
uv1_world_triplanar = true
 | 
			
		||||
 | 
			
		||||
[node name="Node3D2" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.1946, 2.34415, 10.4086)
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
script = ExtResource("1_3tok8")
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Player" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerPhantomCamera3D" type="Node3D" parent="Player" node_paths=PackedStringArray("follow_target")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999954, 0, 0, 0, 0.906188, 0.422588, 0, -0.422562, 0.906243, -13.1946, 2.34415, 10.4086)
 | 
			
		||||
script = ExtResource("2_grjck")
 | 
			
		||||
priority = 10
 | 
			
		||||
follow_mode = 2
 | 
			
		||||
follow_target = NodePath("../PlayerCharacterBody3D2")
 | 
			
		||||
tween_resource = SubResource("Resource_28vpp")
 | 
			
		||||
tween_on_load = false
 | 
			
		||||
camera_3d_resource = SubResource("Resource_axopo")
 | 
			
		||||
follow_offset = Vector3(0, 2, 2)
 | 
			
		||||
follow_damping = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D2" type="CharacterBody3D" parent="Player"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999897, 0.0143636, 0, -0.0143636, 0.999897, 0, 0, 0, 1, -13.1946, 0.344147, 8.40857)
 | 
			
		||||
script = ExtResource("3_uymu2")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerModel" type="MeshInstance3D" parent="Player/PlayerCharacterBody3D2"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
mesh = SubResource("CapsuleMesh_pda7a")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_u74j7")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerArea3D" type="Area3D" parent="Player/PlayerCharacterBody3D2"]
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2/PlayerArea3D"]
 | 
			
		||||
shape = SubResource("CapsuleShape3D_3xplc")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="Player/PlayerCharacterBody3D2"]
 | 
			
		||||
shape = SubResource("CapsuleShape3D_3xplc")
 | 
			
		||||
 | 
			
		||||
[node name="NPCs" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment" instance=ExtResource("4_4u2y6")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.6511, 0.805455, -6.37532)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.71971
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.8332, -0.540694, -3.39517)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.53269
 | 
			
		||||
height = 2.5036
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -16.936, -1.50101, 1.22863)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.57419
 | 
			
		||||
height = 3.47475
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.81402, 0.805455, -8.78984)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 0.956285
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.6875, -1.69814, 3.36997)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 3.34732
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.14955, -0.599204, -1.04651)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.65844
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -26.0848, -0.599204, -2.42244)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.14606
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.44645, -0.497663, 4.44352)
 | 
			
		||||
use_collision = true
 | 
			
		||||
inner_radius = 0.971543
 | 
			
		||||
outer_radius = 2.15226
 | 
			
		||||
sides = 32
 | 
			
		||||
ring_sides = 18
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.52545, 6.53866, -12.6331)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(178.429, 14.0773, 1)
 | 
			
		||||
material = SubResource("StandardMaterial3D_auy8m")
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -21.1764, 0.760708, -6.1376)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(2.64182, 2.52142, 2.30997)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -18.1256, 0.335247, 7.14677)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(3.80964, 1.67049, 0.932048)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.94346, 0.138478, -4.36159)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(1.53893, 1.27695, 1.80814)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3.30382, 0.138478, -1.89037)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.03502, 1.27695, 5.2198)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.04727, 0.0440434, 8.36617)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.57784, 1.08809, 3.11285)
 | 
			
		||||
| 
						 | 
				
			
			@ -1,171 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=16 format=3 uid="uid://4i5csj0s34nb"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="2_47xf2"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_whx47"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_lii5s"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_jt2lp"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="5_oc4q1"]
 | 
			
		||||
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="7_kg7u1"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://mskcwn1a1v6d" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_third_person_3d.tscn" id="7_kut0u"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_8fhct"]
 | 
			
		||||
script = ExtResource("2_47xf2")
 | 
			
		||||
duration = 0.3
 | 
			
		||||
transition = 3
 | 
			
		||||
ease = 1
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_7m0fv"]
 | 
			
		||||
script = ExtResource("5_jt2lp")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_e7t18"]
 | 
			
		||||
script = ExtResource("2_47xf2")
 | 
			
		||||
duration = 0.4
 | 
			
		||||
transition = 2
 | 
			
		||||
ease = 1
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_jogxh"]
 | 
			
		||||
script = ExtResource("5_jt2lp")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 1.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_wsigl"]
 | 
			
		||||
size = Vector3(1, 10, 20)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_bj3re"]
 | 
			
		||||
size = Vector3(1, 7, 7)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_afrr1"]
 | 
			
		||||
script = ExtResource("2_47xf2")
 | 
			
		||||
duration = 0.6
 | 
			
		||||
transition = 3
 | 
			
		||||
ease = 1
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_y5dqe"]
 | 
			
		||||
script = ExtResource("5_jt2lp")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[node name="Root" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 3.01476)
 | 
			
		||||
script = ExtResource("2_whx47")
 | 
			
		||||
priority = 10
 | 
			
		||||
follow_mode = 6
 | 
			
		||||
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
 | 
			
		||||
tween_resource = SubResource("Resource_8fhct")
 | 
			
		||||
tween_on_load = null
 | 
			
		||||
camera_3d_resource = SubResource("Resource_7m0fv")
 | 
			
		||||
follow_damping = true
 | 
			
		||||
follow_distance = 3.5
 | 
			
		||||
spring_length = 3.5
 | 
			
		||||
 | 
			
		||||
[node name="PlayerAimPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.953716, -0.0104945, 0.300522, 0, 0.99939, 0.0348995, -0.300706, -0.0332842, 0.953135, 0.431374, 1.35923, 1.41338)
 | 
			
		||||
script = ExtResource("2_whx47")
 | 
			
		||||
follow_mode = 6
 | 
			
		||||
follow_target = NodePath("../PlayerCharacterBody3D/PlayerVisual")
 | 
			
		||||
tween_resource = SubResource("Resource_e7t18")
 | 
			
		||||
tween_on_load = null
 | 
			
		||||
camera_3d_resource = SubResource("Resource_jogxh")
 | 
			
		||||
follow_offset = Vector3(0, 0.8, 0)
 | 
			
		||||
follow_damping = true
 | 
			
		||||
follow_distance = 1.5
 | 
			
		||||
spring_length = 1.5
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D" parent="." instance=ExtResource("7_kut0u")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.866025, 0.499999, 0, -0.5, 0.866023, -0.0194088, 2.25688, 3.01476)
 | 
			
		||||
current = true
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
script = ExtResource("5_oc4q1")
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment" instance=ExtResource("4_lii5s")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Wall" parent="Environment" instance=ExtResource("4_lii5s")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 4.5, 0)
 | 
			
		||||
mesh = SubResource("BoxMesh_wsigl")
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Wall5" parent="Environment" instance=ExtResource("4_lii5s")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.133, 3, -6.5)
 | 
			
		||||
mesh = SubResource("BoxMesh_bj3re")
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Wall6" parent="Environment" instance=ExtResource("4_lii5s")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.5, 3, 0)
 | 
			
		||||
mesh = SubResource("BoxMesh_bj3re")
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Wall7" parent="Environment" instance=ExtResource("4_lii5s")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.5, 3, 0)
 | 
			
		||||
mesh = SubResource("BoxMesh_bj3re")
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Wall2" parent="Environment" instance=ExtResource("4_lii5s")]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 4.5, 0)
 | 
			
		||||
mesh = SubResource("BoxMesh_wsigl")
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Wall3" parent="Environment" instance=ExtResource("4_lii5s")]
 | 
			
		||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, 10.5)
 | 
			
		||||
mesh = SubResource("BoxMesh_wsigl")
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Wall4" parent="Environment" instance=ExtResource("4_lii5s")]
 | 
			
		||||
transform = Transform3D(-4.37114e-08, 0, -1, 0, 1, 0, 1, 0, -4.37114e-08, 0, 4.5, -9.5)
 | 
			
		||||
mesh = SubResource("BoxMesh_wsigl")
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CeilingPhantomCamera3D" type="Node3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(-4.37114e-08, -1, 2.98023e-08, 0, 2.98023e-08, 1, -1, 4.37114e-08, -1.3027e-15, -0.200665, 13.366, -0.162648)
 | 
			
		||||
script = ExtResource("2_whx47")
 | 
			
		||||
tween_resource = SubResource("Resource_afrr1")
 | 
			
		||||
tween_on_load = null
 | 
			
		||||
camera_3d_resource = SubResource("Resource_y5dqe")
 | 
			
		||||
 | 
			
		||||
[node name="MovementInstructionsLabel" type="Label3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 1.44357)
 | 
			
		||||
modulate = Color(0.294118, 1, 0.631373, 1)
 | 
			
		||||
text = "[WASD] to move"
 | 
			
		||||
font = ExtResource("7_kg7u1")
 | 
			
		||||
font_size = 48
 | 
			
		||||
 | 
			
		||||
[node name="MovementInstructionsLabel3" type="Label3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.0505604, -0.484909, 0.817134)
 | 
			
		||||
modulate = Color(0.294118, 1, 0.631373, 1)
 | 
			
		||||
text = "[Right Mouse Click] to \"aim\""
 | 
			
		||||
font = ExtResource("7_kg7u1")
 | 
			
		||||
font_size = 48
 | 
			
		||||
 | 
			
		||||
[node name="MovementInstructionsLabel2" type="Label3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0440154, -0.490478, -6.30248)
 | 
			
		||||
modulate = Color(0.294118, 1, 0.631373, 1)
 | 
			
		||||
text = "[Space] to toggle PCam"
 | 
			
		||||
font = ExtResource("7_kg7u1")
 | 
			
		||||
font_size = 48
 | 
			
		||||
 | 
			
		||||
[editable path="PlayerCharacterBody3D"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,193 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=14 format=3 uid="uid://bdhrdhbux7sjg"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="1_i2pjc"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="1_lldvu"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="2_8md3q"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="3_dqss1"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="4_2i811"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="4_m3qpq"]
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="5_u5qhp"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_pwcgo"]
 | 
			
		||||
script = ExtResource("3_dqss1")
 | 
			
		||||
duration = 1.0
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_ft2w3"]
 | 
			
		||||
script = ExtResource("4_m3qpq")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2h36r"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3olp"]
 | 
			
		||||
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cw102"]
 | 
			
		||||
albedo_color = Color(0.227451, 0.337255, 0.576471, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_auy8m"]
 | 
			
		||||
albedo_texture = ExtResource("5_u5qhp")
 | 
			
		||||
uv1_triplanar = true
 | 
			
		||||
uv1_world_triplanar = true
 | 
			
		||||
 | 
			
		||||
[node name="Node3D" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773413, -0.137901, 4.03222, 6.36446)
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
process_priority = 100
 | 
			
		||||
script = ExtResource("1_lldvu")
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("look_at_target", "look_at_targets")]
 | 
			
		||||
transform = Transform3D(0.998682, 0.0324725, -0.0397495, 0, 0.774433, 0.632656, 0.0513272, -0.631822, 0.773413, -0.137901, 4.03222, 6.36446)
 | 
			
		||||
script = ExtResource("2_8md3q")
 | 
			
		||||
priority = 10
 | 
			
		||||
look_at_mode = 2
 | 
			
		||||
look_at_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
 | 
			
		||||
look_at_targets = [null, NodePath("../NPCs/PlayerMeshInstance3D")]
 | 
			
		||||
tween_resource = SubResource("Resource_pwcgo")
 | 
			
		||||
tween_on_load = false
 | 
			
		||||
camera_3d_resource = SubResource("Resource_ft2w3")
 | 
			
		||||
look_at_damping = true
 | 
			
		||||
look_at_damping_value = 0.1
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("1_i2pjc")]
 | 
			
		||||
 | 
			
		||||
[node name="NPCs" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="NPCs"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.96028, 0.519002, -1.52506)
 | 
			
		||||
mesh = SubResource("CapsuleMesh_2h36r")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_w3olp")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerMeshInstance3D2" type="MeshInstance3D" parent="NPCs"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.59952, 0.519, 4.06618)
 | 
			
		||||
mesh = SubResource("CapsuleMesh_2h36r")
 | 
			
		||||
skeleton = NodePath("")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_cw102")
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment" instance=ExtResource("4_2i811")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.00548, 0.805455, -6.37532)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.71971
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D5" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 25.5597, 0.31181, -5.46661)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.77591
 | 
			
		||||
height = 1.62362
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D6" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.96428, 0.31181, 6.6322)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.57419
 | 
			
		||||
height = 3.47475
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.3959, 0.201103, 2.71259)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 1.41311
 | 
			
		||||
height = 1.40221
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D4" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.02677, 0.201101, 11.6804)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.21673
 | 
			
		||||
height = 7.88261
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 8.8316, 0.805455, -8.78984)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 0.956285
 | 
			
		||||
height = 2.61091
 | 
			
		||||
sides = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 15.5989, -1.69814, -6.51262)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 3.34732
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D2" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.17742, -0.599204, 8.81048)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.65844
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGSphere3D3" type="CSGSphere3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -13.4392, -0.599204, -2.42244)
 | 
			
		||||
use_collision = true
 | 
			
		||||
radius = 2.14606
 | 
			
		||||
rings = 32
 | 
			
		||||
 | 
			
		||||
[node name="CSGTorus3D" type="CSGTorus3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.58998, -1.90735e-06, 0.346393)
 | 
			
		||||
use_collision = true
 | 
			
		||||
inner_radius = 1.3
 | 
			
		||||
outer_radius = 2.0
 | 
			
		||||
sides = 32
 | 
			
		||||
ring_sides = 18
 | 
			
		||||
 | 
			
		||||
[node name="CSGTorus3D2" type="CSGTorus3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 22.5502, -1.90735e-06, 7.89765)
 | 
			
		||||
use_collision = true
 | 
			
		||||
inner_radius = 0.971543
 | 
			
		||||
outer_radius = 2.15226
 | 
			
		||||
sides = 32
 | 
			
		||||
ring_sides = 18
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 10.1202, 6.53866, -12.6331)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(178.429, 14.0773, 1)
 | 
			
		||||
material = SubResource("StandardMaterial3D_auy8m")
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -8.53078, 0.760708, -6.1376)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(2.64182, 2.52142, 2.30997)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 14.9646, 0.335247, 8.22829)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(3.80964, 1.67049, 0.932048)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 5.70216, 0.138478, -4.36159)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(1.53893, 1.27695, 1.80814)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D6" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.1529, 0.138478, 5.20734)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.03502, 1.27695, 5.2198)
 | 
			
		||||
 | 
			
		||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 30.7692, 1.78638, -1.60318)
 | 
			
		||||
use_collision = true
 | 
			
		||||
size = Vector3(4.57784, 4.57276, 3.11285)
 | 
			
		||||
 | 
			
		||||
[editable path="PlayerCharacterBody3D2"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,258 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=22 format=3 uid="uid://5xtssqdfilal"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://cixlwqycoox8h" path="res://addons/phantom_camera/examples/models/3d_cube_dark.tscn" id="1_ydeog"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="2_b2yrt"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd" id="3_m2w30"]
 | 
			
		||||
[ext_resource type="Resource" uid="uid://cptfoggk2ok67" path="res://addons/phantom_camera/examples/resources/tween/player_phantom_camera_3d_tween.tres" id="4_425ma"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/camera_3d_resource.gd" id="5_cn3g7"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/3d_trigger_area.gd" id="5_h0ouh"]
 | 
			
		||||
[ext_resource type="PackedScene" uid="uid://bulsh7s0ibmao" path="res://addons/phantom_camera/examples/example_scenes/3D/sub_scenes/playable_character_3d.tscn" id="6_gcjyn"]
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="6_wup4d"]
 | 
			
		||||
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="8_60rny"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_0dtvs"]
 | 
			
		||||
script = ExtResource("5_cn3g7")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxShape3D" id="BoxShape3D_j6fha"]
 | 
			
		||||
size = Vector3(5, 0.1, 4)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_xg4en"]
 | 
			
		||||
size = Vector3(5, 0.1, 4)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2dct5"]
 | 
			
		||||
transparency = 1
 | 
			
		||||
albedo_color = Color(0.988235, 0.478431, 0.905882, 0.0901961)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_v8ndi"]
 | 
			
		||||
script = ExtResource("6_wup4d")
 | 
			
		||||
duration = 0.6
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_kmep1"]
 | 
			
		||||
script = ExtResource("5_cn3g7")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_uxg44"]
 | 
			
		||||
script = ExtResource("6_wup4d")
 | 
			
		||||
duration = 0.3
 | 
			
		||||
transition = 1
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_eu3bc"]
 | 
			
		||||
script = ExtResource("5_cn3g7")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_0nci0"]
 | 
			
		||||
script = ExtResource("6_wup4d")
 | 
			
		||||
duration = 0.3
 | 
			
		||||
transition = 8
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_u0lff"]
 | 
			
		||||
script = ExtResource("5_cn3g7")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_50m5g"]
 | 
			
		||||
script = ExtResource("6_wup4d")
 | 
			
		||||
duration = 1.2
 | 
			
		||||
transition = 10
 | 
			
		||||
ease = 2
 | 
			
		||||
 | 
			
		||||
[sub_resource type="Resource" id="Resource_rexf8"]
 | 
			
		||||
script = ExtResource("5_cn3g7")
 | 
			
		||||
cull_mask = 1048575
 | 
			
		||||
h_offset = 0.0
 | 
			
		||||
v_offset = 0.0
 | 
			
		||||
fov = 75.0
 | 
			
		||||
 | 
			
		||||
[node name="Root" type="Node3D"]
 | 
			
		||||
 | 
			
		||||
[node name="Environment" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="Environment"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.707107, 0.707107, 0, -0.707107, 0.707107, 0, 8, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="Floor" parent="Environment" instance=ExtResource("1_ydeog")]
 | 
			
		||||
transform = Transform3D(1000, 0, 0, 0, 1, 0, 0, 0, 1000, 0, -1, 0)
 | 
			
		||||
metadata/_edit_lock_ = true
 | 
			
		||||
 | 
			
		||||
[node name="MainCamera3D" type="Camera3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, 0.083587, 2.507, 4.05493)
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCameraHost" type="Node" parent="MainCamera3D"]
 | 
			
		||||
script = ExtResource("2_b2yrt")
 | 
			
		||||
 | 
			
		||||
[node name="------------------" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="PlayerPhantomCamera3D" type="Node3D" parent="." node_paths=PackedStringArray("follow_target")]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(0.999889, 0, 0, 0, 0.707092, 0.707088, 0, -0.707092, 0.707088, 0.083587, 2.507, 4.05493)
 | 
			
		||||
script = ExtResource("3_m2w30")
 | 
			
		||||
priority = 3
 | 
			
		||||
follow_mode = 2
 | 
			
		||||
follow_target = NodePath("../PlayerCharacterBody3D2/PlayerVisual")
 | 
			
		||||
tween_resource = ExtResource("4_425ma")
 | 
			
		||||
tween_on_load = false
 | 
			
		||||
camera_3d_resource = SubResource("Resource_0dtvs")
 | 
			
		||||
follow_offset = Vector3(0, 2, 2)
 | 
			
		||||
follow_damping = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D2" parent="." instance=ExtResource("6_gcjyn")]
 | 
			
		||||
 | 
			
		||||
[node name="-------------------" type="Node" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="Tweening Example" type="Node3D" parent="."]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -1.97)
 | 
			
		||||
 | 
			
		||||
[node name="Linear" type="Node3D" parent="Tweening Example"]
 | 
			
		||||
 | 
			
		||||
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Linear" node_paths=PackedStringArray("area_pcam")]
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("5_h0ouh")
 | 
			
		||||
area_pcam = NodePath("../PhantomCamera3D")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Linear/EntryRoomTrigger"]
 | 
			
		||||
shape = SubResource("BoxShape3D_j6fha")
 | 
			
		||||
 | 
			
		||||
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Linear/EntryRoomTrigger"]
 | 
			
		||||
mesh = SubResource("BoxMesh_xg4en")
 | 
			
		||||
skeleton = NodePath("../../../../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Linear"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
 | 
			
		||||
script = ExtResource("3_m2w30")
 | 
			
		||||
tween_resource = SubResource("Resource_v8ndi")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_kmep1")
 | 
			
		||||
 | 
			
		||||
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Linear"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, -1.8, 0.5, 0)
 | 
			
		||||
text = "Transition Type:
 | 
			
		||||
Linear
 | 
			
		||||
 | 
			
		||||
Duration:
 | 
			
		||||
0.6s"
 | 
			
		||||
font = ExtResource("8_60rny")
 | 
			
		||||
font_size = 48
 | 
			
		||||
 | 
			
		||||
[node name="Sine" type="Node3D" parent="Tweening Example"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -7.4)
 | 
			
		||||
 | 
			
		||||
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Sine" node_paths=PackedStringArray("area_pcam")]
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("5_h0ouh")
 | 
			
		||||
area_pcam = NodePath("../PhantomCamera3D")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Sine/EntryRoomTrigger"]
 | 
			
		||||
shape = SubResource("BoxShape3D_j6fha")
 | 
			
		||||
 | 
			
		||||
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Sine/EntryRoomTrigger"]
 | 
			
		||||
mesh = SubResource("BoxMesh_xg4en")
 | 
			
		||||
skeleton = NodePath("../../../../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Sine"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
 | 
			
		||||
script = ExtResource("3_m2w30")
 | 
			
		||||
tween_resource = SubResource("Resource_uxg44")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_eu3bc")
 | 
			
		||||
 | 
			
		||||
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Sine"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, 1.7, 0.5, 0)
 | 
			
		||||
text = "Transition Type:
 | 
			
		||||
Sine
 | 
			
		||||
 | 
			
		||||
Duration:
 | 
			
		||||
0.3s"
 | 
			
		||||
font = ExtResource("8_60rny")
 | 
			
		||||
font_size = 72
 | 
			
		||||
 | 
			
		||||
[node name="Circ" type="Node3D" parent="Tweening Example"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -14.1)
 | 
			
		||||
 | 
			
		||||
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Circ" node_paths=PackedStringArray("area_pcam")]
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("5_h0ouh")
 | 
			
		||||
area_pcam = NodePath("../PhantomCamera3D")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Circ/EntryRoomTrigger"]
 | 
			
		||||
shape = SubResource("BoxShape3D_j6fha")
 | 
			
		||||
 | 
			
		||||
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Circ/EntryRoomTrigger"]
 | 
			
		||||
mesh = SubResource("BoxMesh_xg4en")
 | 
			
		||||
skeleton = NodePath("../../../../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Circ"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, 0, 4.8, 3.3)
 | 
			
		||||
script = ExtResource("3_m2w30")
 | 
			
		||||
tween_resource = SubResource("Resource_0nci0")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_u0lff")
 | 
			
		||||
 | 
			
		||||
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Circ"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, -1.8, 0.5, 0)
 | 
			
		||||
text = "Transition Type:
 | 
			
		||||
Circ
 | 
			
		||||
 | 
			
		||||
Duration:
 | 
			
		||||
0.3s"
 | 
			
		||||
font = ExtResource("8_60rny")
 | 
			
		||||
font_size = 72
 | 
			
		||||
 | 
			
		||||
[node name="Back" type="Node3D" parent="Tweening Example"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -21)
 | 
			
		||||
 | 
			
		||||
[node name="EntryRoomTrigger" type="Area3D" parent="Tweening Example/Back" node_paths=PackedStringArray("area_pcam")]
 | 
			
		||||
priority = 5
 | 
			
		||||
script = ExtResource("5_h0ouh")
 | 
			
		||||
area_pcam = NodePath("../PhantomCamera3D")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Tweening Example/Back/EntryRoomTrigger"]
 | 
			
		||||
shape = SubResource("BoxShape3D_j6fha")
 | 
			
		||||
 | 
			
		||||
[node name="NPCInteractionZoneMesh" type="MeshInstance3D" parent="Tweening Example/Back/EntryRoomTrigger"]
 | 
			
		||||
mesh = SubResource("BoxMesh_xg4en")
 | 
			
		||||
skeleton = NodePath("../../../../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_2dct5")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PhantomCamera3D" type="Node3D" parent="Tweening Example/Back"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.642788, 0.766044, 0, -0.766044, 0.642788, -0.8, 4.8, 3.3)
 | 
			
		||||
script = ExtResource("3_m2w30")
 | 
			
		||||
tween_resource = SubResource("Resource_50m5g")
 | 
			
		||||
camera_3d_resource = SubResource("Resource_rexf8")
 | 
			
		||||
 | 
			
		||||
[node name="TweenNameLabel" type="Label3D" parent="Tweening Example/Back"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 0.695913, 0.718126, 0, -0.718126, 0.695913, 1.7, 0.5, 0)
 | 
			
		||||
text = "Transition Type:
 | 
			
		||||
Back
 | 
			
		||||
 | 
			
		||||
Duration:
 | 
			
		||||
1.2s"
 | 
			
		||||
font = ExtResource("8_60rny")
 | 
			
		||||
font_size = 48
 | 
			
		||||
 | 
			
		||||
[editable path="PlayerCharacterBody3D2"]
 | 
			
		||||
| 
						 | 
				
			
			@ -1,31 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=5 format=3 uid="uid://bulsh7s0ibmao"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller.gd" id="1_6hh6c"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_8efyg"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_2cfaw"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r3ldp"]
 | 
			
		||||
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D2" type="CharacterBody3D"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.083587, 0.507, 2.05493)
 | 
			
		||||
script = ExtResource("1_6hh6c")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerArea3D" type="Area3D" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerArea3D"]
 | 
			
		||||
shape = SubResource("CapsuleShape3D_8efyg")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="."]
 | 
			
		||||
shape = SubResource("CapsuleShape3D_8efyg")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerVisual" type="Node3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerModel" type="MeshInstance3D" parent="PlayerVisual"]
 | 
			
		||||
mesh = SubResource("CapsuleMesh_2cfaw")
 | 
			
		||||
skeleton = NodePath("../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_r3ldp")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,43 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=6 format=3 uid="uid://mskcwn1a1v6d"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/examples/scripts/3D/player_controller_third_person.gd" id="1_0dnfe"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_s61dn"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="CapsuleMesh" id="CapsuleMesh_47f0o"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mv4do"]
 | 
			
		||||
albedo_color = Color(0.988235, 0.498039, 0.498039, 1)
 | 
			
		||||
 | 
			
		||||
[sub_resource type="PrismMesh" id="PrismMesh_wg1x3"]
 | 
			
		||||
size = Vector3(0.5, 0.5, 0.3)
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCharacterBody3D" type="CharacterBody3D"]
 | 
			
		||||
transform = Transform3D(0.999903, 0.0139622, 0, -0.0139622, 0.999903, 0, 0, 0, 1, -0.0194088, 0.506884, -0.0163251)
 | 
			
		||||
collision_layer = 2
 | 
			
		||||
script = ExtResource("1_0dnfe")
 | 
			
		||||
metadata/_edit_group_ = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerArea3D" type="Area3D" parent="."]
 | 
			
		||||
 | 
			
		||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="PlayerArea3D"]
 | 
			
		||||
shape = SubResource("CapsuleShape3D_s61dn")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerCollisionShape3D" type="CollisionShape3D" parent="."]
 | 
			
		||||
shape = SubResource("CapsuleShape3D_s61dn")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerVisual" type="Node3D" parent="."]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
 | 
			
		||||
[node name="PlayerMeshInstance3D" type="MeshInstance3D" parent="PlayerVisual"]
 | 
			
		||||
transform = Transform3D(1, 0, 0, 0, 1, 4.65661e-10, 0, 0, 1, 0, 0, 0)
 | 
			
		||||
mesh = SubResource("CapsuleMesh_47f0o")
 | 
			
		||||
skeleton = NodePath("../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_mv4do")
 | 
			
		||||
 | 
			
		||||
[node name="PlayerDirection" type="MeshInstance3D" parent="PlayerVisual"]
 | 
			
		||||
unique_name_in_owner = true
 | 
			
		||||
transform = Transform3D(1, 0, 0, -9.31323e-10, 1, 4.65661e-10, 2.98023e-08, 0, 1, -0.0156226, 1.08631, 0)
 | 
			
		||||
mesh = SubResource("PrismMesh_wg1x3")
 | 
			
		||||
skeleton = NodePath("../..")
 | 
			
		||||
surface_material_override/0 = SubResource("StandardMaterial3D_mv4do")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,15 +0,0 @@
 | 
			
		|||
[gd_scene load_steps=4 format=3 uid="uid://cixlwqycoox8h"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Texture2D" uid="uid://c7ja4woxol8yc" path="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png" id="1_836jx"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="BoxMesh" id="BoxMesh_d24c3"]
 | 
			
		||||
 | 
			
		||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aox6v"]
 | 
			
		||||
albedo_texture = ExtResource("1_836jx")
 | 
			
		||||
uv1_triplanar = true
 | 
			
		||||
uv1_world_triplanar = true
 | 
			
		||||
 | 
			
		||||
[node name="3DPrototypeCube" type="CSGMesh3D"]
 | 
			
		||||
use_collision = true
 | 
			
		||||
mesh = SubResource("BoxMesh_d24c3")
 | 
			
		||||
material = SubResource("StandardMaterial3D_aox6v")
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +0,0 @@
 | 
			
		|||
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://c1v786g5agaw5"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_ptlie"]
 | 
			
		||||
 | 
			
		||||
[resource]
 | 
			
		||||
script = ExtResource("1_ptlie")
 | 
			
		||||
duration = 0.0
 | 
			
		||||
transition = 0
 | 
			
		||||
ease = 2
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +0,0 @@
 | 
			
		|||
[gd_resource type="Resource" script_class="PhantomCameraTweenResource" load_steps=2 format=3 uid="uid://cllveybboaqk5"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_7yoy0"]
 | 
			
		||||
 | 
			
		||||
[resource]
 | 
			
		||||
script = ExtResource("1_7yoy0")
 | 
			
		||||
duration = 0.6
 | 
			
		||||
transition = 5
 | 
			
		||||
ease = 1
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +0,0 @@
 | 
			
		|||
[gd_resource type="Resource" script_class="PhantomCameraTweenResource" load_steps=2 format=3 uid="uid://cecrnq0wnkexh"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_sq5ls"]
 | 
			
		||||
 | 
			
		||||
[resource]
 | 
			
		||||
script = ExtResource("1_sq5ls")
 | 
			
		||||
duration = 0.6
 | 
			
		||||
transition = 8
 | 
			
		||||
ease = 1
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +0,0 @@
 | 
			
		|||
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://euybd2w0bax"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_by4ei"]
 | 
			
		||||
 | 
			
		||||
[resource]
 | 
			
		||||
script = ExtResource("1_by4ei")
 | 
			
		||||
duration = 0.6
 | 
			
		||||
transition = 3
 | 
			
		||||
ease = 1
 | 
			
		||||
| 
						 | 
				
			
			@ -1,9 +0,0 @@
 | 
			
		|||
[gd_resource type="Resource" script_class="PhantomCameraTween" load_steps=2 format=3 uid="uid://cptfoggk2ok67"]
 | 
			
		||||
 | 
			
		||||
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="1_q5tix"]
 | 
			
		||||
 | 
			
		||||
[resource]
 | 
			
		||||
script = ExtResource("1_q5tix")
 | 
			
		||||
duration = 0.6
 | 
			
		||||
transition = 3
 | 
			
		||||
ease = 2
 | 
			
		||||
| 
						 | 
				
			
			@ -1,36 +0,0 @@
 | 
			
		|||
extends Node2D
 | 
			
		||||
 | 
			
		||||
@onready var pcam_room_left: PhantomCamera2D = %RoomLeftPhantomCamera2D
 | 
			
		||||
@onready var pcam_room_centre: PhantomCamera2D = %RoomCentrePhantomCamera2D
 | 
			
		||||
@onready var pcam_room_right: PhantomCamera2D = %RoomRightPhantomCamera2D
 | 
			
		||||
 | 
			
		||||
@onready var player: Node2D = %CharacterBody2D/%PlayerVisuals
 | 
			
		||||
 | 
			
		||||
@onready var area_2d_room_left: Area2D = %RoomLeftArea2D
 | 
			
		||||
@onready var area_2d_room_centre: Area2D = %RoomCentreArea2D
 | 
			
		||||
@onready var area_2d_room_right: Area2D = %RoomRightArea2D
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _ready():
 | 
			
		||||
	pcam_room_left.set_follow_offset(Vector2(0, -80))
 | 
			
		||||
	pcam_room_right.set_follow_offset(Vector2(0, -80))
 | 
			
		||||
 | 
			
		||||
	area_2d_room_left.body_entered.connect(_on_body_entered.bind(pcam_room_left))
 | 
			
		||||
	area_2d_room_centre.body_entered.connect(_on_body_entered.bind(pcam_room_centre))
 | 
			
		||||
	area_2d_room_right.body_entered.connect(_on_body_entered.bind(pcam_room_right))
 | 
			
		||||
 | 
			
		||||
	area_2d_room_left.body_exited.connect(_on_body_exited.bind(pcam_room_left))
 | 
			
		||||
	area_2d_room_centre.body_exited.connect(_on_body_exited.bind(pcam_room_centre))
 | 
			
		||||
	area_2d_room_right.body_exited.connect(_on_body_exited.bind(pcam_room_right))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_body_entered(body: Node2D, pcam: PhantomCamera2D) -> void:
 | 
			
		||||
	if body == player.get_parent():
 | 
			
		||||
		pcam.set_follow_target(player)
 | 
			
		||||
		pcam.set_priority(20)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_body_exited(body: Node2D, pcam: PhantomCamera2D) -> void:
 | 
			
		||||
	if body == player.get_parent():
 | 
			
		||||
		pcam.set_priority(0)
 | 
			
		||||
		pcam.set_follow_target(null)
 | 
			
		||||
| 
						 | 
				
			
			@ -1,36 +0,0 @@
 | 
			
		|||
extends Node2D
 | 
			
		||||
 | 
			
		||||
@onready var pcam_room_left: PhantomCamera2D = %RoomLeftPhantomCamera2D
 | 
			
		||||
@onready var pcam_room_centre: PhantomCamera2D = %RoomCentrePhantomCamera2D
 | 
			
		||||
@onready var pcam_room_right: PhantomCamera2D = %RoomRightPhantomCamera2D
 | 
			
		||||
 | 
			
		||||
@onready var player: Node2D = %CharacterBody2D
 | 
			
		||||
 | 
			
		||||
@onready var area_2d_room_left: Area2D = %RoomLeftArea2D
 | 
			
		||||
@onready var area_2d_room_centre: Area2D = %RoomCentreArea2D
 | 
			
		||||
@onready var area_2d_room_right: Area2D = %RoomRightArea2D
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _ready():
 | 
			
		||||
	pcam_room_left.set_follow_offset(Vector2(0, -80))
 | 
			
		||||
	pcam_room_right.set_follow_offset(Vector2(0, -80))
 | 
			
		||||
 | 
			
		||||
	area_2d_room_left.body_entered.connect(_on_body_entered.bind(pcam_room_left))
 | 
			
		||||
	area_2d_room_centre.body_entered.connect(_on_body_entered.bind(pcam_room_centre))
 | 
			
		||||
	area_2d_room_right.body_entered.connect(_on_body_entered.bind(pcam_room_right))
 | 
			
		||||
 | 
			
		||||
	area_2d_room_left.body_exited.connect(_on_body_exited.bind(pcam_room_left))
 | 
			
		||||
	area_2d_room_centre.body_exited.connect(_on_body_exited.bind(pcam_room_centre))
 | 
			
		||||
	area_2d_room_right.body_exited.connect(_on_body_exited.bind(pcam_room_right))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_body_entered(body: Node2D, pcam: PhantomCamera2D) -> void:
 | 
			
		||||
	if body == player:
 | 
			
		||||
		pcam.set_follow_target(player)
 | 
			
		||||
		pcam.set_priority(20)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_body_exited(body: Node2D, pcam: PhantomCamera2D) -> void:
 | 
			
		||||
	if body == player:
 | 
			
		||||
		pcam.set_priority(0)
 | 
			
		||||
		pcam.set_follow_target(null)
 | 
			
		||||
| 
						 | 
				
			
			@ -1,16 +0,0 @@
 | 
			
		|||
extends Area2D
 | 
			
		||||
 | 
			
		||||
@export var area_pcam: PhantomCamera2D
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	connect("area_entered", _entered_area)
 | 
			
		||||
	connect("area_exited", _exited_area)
 | 
			
		||||
 | 
			
		||||
func _entered_area(area_2d: Area2D) -> void:
 | 
			
		||||
	if area_2d.get_parent() is CharacterBody2D:
 | 
			
		||||
		area_pcam.set_priority(20)
 | 
			
		||||
 | 
			
		||||
func _exited_area(area_2d: Area2D) -> void:
 | 
			
		||||
	if area_2d.get_parent() is CharacterBody2D:
 | 
			
		||||
		area_pcam.set_priority(0)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,190 +0,0 @@
 | 
			
		|||
extends CharacterBody2D
 | 
			
		||||
 | 
			
		||||
@onready var _player_area2d = %PlayerArea2D
 | 
			
		||||
@onready var _player_visuals: Node2D = %PlayerVisuals
 | 
			
		||||
@onready var _player_sprite: Sprite2D = %PlayerSprite
 | 
			
		||||
@onready var _interaction_prompt: Panel = %InteractionPrompt
 | 
			
		||||
@onready var _ui_sign: Control
 | 
			
		||||
@onready var _dark_overlay: ColorRect = %DarkOverlay
 | 
			
		||||
 | 
			
		||||
const KEY_STRINGNAME: StringName = "Key"
 | 
			
		||||
const ACTION_STRINGNAME: StringName = "Action"
 | 
			
		||||
const INPUT_MOVE_LEFT_STRINGNAME: StringName = "move_left"
 | 
			
		||||
const INPUT_MOVE_RIGHT_STRINGNAME: StringName = "move_right"
 | 
			
		||||
 | 
			
		||||
const SPEED = 350.0
 | 
			
		||||
const JUMP_VELOCITY = -750.0
 | 
			
		||||
 | 
			
		||||
# Get the gravity from the project settings to be synced with RigidBody nodes.
 | 
			
		||||
var gravity: int = 2400
 | 
			
		||||
var _is_interactive: bool
 | 
			
		||||
var _can_open_inventory: bool
 | 
			
		||||
var _movement_disabled: bool
 | 
			
		||||
var tween: Tween
 | 
			
		||||
var _interactive_UI: Control
 | 
			
		||||
var _active_pcam: PhantomCamera2D
 | 
			
		||||
 | 
			
		||||
var _physics_body_trans_last: Transform2D
 | 
			
		||||
var _physics_body_trans_current: Transform2D
 | 
			
		||||
 | 
			
		||||
enum InteractiveType {
 | 
			
		||||
    NONE = 0,
 | 
			
		||||
    ITEM = 1,
 | 
			
		||||
    INVENTORY = 2,
 | 
			
		||||
}
 | 
			
		||||
var _interactive_object: InteractiveType = InteractiveType.NONE
 | 
			
		||||
 | 
			
		||||
var InputMovementDic: Dictionary = {
 | 
			
		||||
    INPUT_MOVE_LEFT_STRINGNAME: {
 | 
			
		||||
        KEY_STRINGNAME: KEY_A,
 | 
			
		||||
        ACTION_STRINGNAME: INPUT_MOVE_LEFT_STRINGNAME
 | 
			
		||||
    },
 | 
			
		||||
    INPUT_MOVE_RIGHT_STRINGNAME: {
 | 
			
		||||
        KEY_STRINGNAME: KEY_D,
 | 
			
		||||
        ACTION_STRINGNAME: INPUT_MOVE_RIGHT_STRINGNAME
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
    _player_area2d.connect("body_shape_entered", _show_prompt)
 | 
			
		||||
    _player_area2d.connect("body_shape_exited", _hide_prompt)
 | 
			
		||||
 | 
			
		||||
    _ui_sign = owner.get_node("%UISign")
 | 
			
		||||
 | 
			
		||||
    for input in InputMovementDic:
 | 
			
		||||
        var key_val = InputMovementDic[input].get(KEY_STRINGNAME)
 | 
			
		||||
        var action_val = InputMovementDic[input].get(ACTION_STRINGNAME)
 | 
			
		||||
 | 
			
		||||
        var movement_input = InputEventKey.new()
 | 
			
		||||
        movement_input.physical_keycode = key_val
 | 
			
		||||
        InputMap.add_action(action_val)
 | 
			
		||||
        InputMap.action_add_event(action_val, movement_input)
 | 
			
		||||
 | 
			
		||||
    _player_visuals.top_level = true
 | 
			
		||||
 | 
			
		||||
    if Engine.get_version_info().major == 4 and \
 | 
			
		||||
        Engine.get_version_info().minor >= 3:
 | 
			
		||||
        printerr("Please run the other 2D example scenes, in the 2D-4.3 directory, for more up-to-date example setups.")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _unhandled_input(event: InputEvent) -> void:
 | 
			
		||||
    if _is_interactive:
 | 
			
		||||
        if Input.is_physical_key_pressed(KEY_F):
 | 
			
		||||
            if tween:
 | 
			
		||||
                tween.kill()
 | 
			
		||||
 | 
			
		||||
            if not _movement_disabled:
 | 
			
		||||
                tween = get_tree().create_tween()
 | 
			
		||||
 | 
			
		||||
                _movement_disabled = true
 | 
			
		||||
                _active_pcam.set_priority(10)
 | 
			
		||||
 | 
			
		||||
                _show_interactive_node(_interactive_UI)
 | 
			
		||||
                _interactive_node_logic()
 | 
			
		||||
 | 
			
		||||
            else:
 | 
			
		||||
                _hide_interactive_node(_interactive_UI)
 | 
			
		||||
                _interactive_node_logic()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if Input.is_physical_key_pressed(KEY_ESCAPE) and _movement_disabled:
 | 
			
		||||
            _hide_interactive_node(_interactive_UI)
 | 
			
		||||
            _interactive_node_logic()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _show_interactive_node(UI: Control) -> void:
 | 
			
		||||
    UI.modulate.a = 0
 | 
			
		||||
    UI.visible = true
 | 
			
		||||
    tween.tween_property(UI, "modulate", Color.WHITE, 1).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CIRC)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _hide_interactive_node(UI: Control) -> void:
 | 
			
		||||
    _movement_disabled = false
 | 
			
		||||
    _active_pcam.set_priority(0)
 | 
			
		||||
    UI.visible = false
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _interactive_node_logic() -> void:
 | 
			
		||||
    match _interactive_object:
 | 
			
		||||
        2:
 | 
			
		||||
            if _movement_disabled:
 | 
			
		||||
                _dark_overlay.set_visible(true)
 | 
			
		||||
            else:
 | 
			
		||||
                _dark_overlay.set_visible(false)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _physics_process(delta: float) -> void:
 | 
			
		||||
    _physics_body_trans_last = _physics_body_trans_current
 | 
			
		||||
    _physics_body_trans_current = global_transform
 | 
			
		||||
 | 
			
		||||
    if not is_on_floor():
 | 
			
		||||
        velocity.y += gravity * delta
 | 
			
		||||
 | 
			
		||||
    if Input.is_action_just_pressed("ui_accept") and is_on_floor():
 | 
			
		||||
        velocity.y = JUMP_VELOCITY
 | 
			
		||||
 | 
			
		||||
    if _movement_disabled: return
 | 
			
		||||
 | 
			
		||||
    var input_dir: = Input.get_axis(
 | 
			
		||||
        INPUT_MOVE_LEFT_STRINGNAME,
 | 
			
		||||
        INPUT_MOVE_RIGHT_STRINGNAME
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    if input_dir:
 | 
			
		||||
        velocity.x = input_dir * SPEED
 | 
			
		||||
        if input_dir > 0:
 | 
			
		||||
            _player_sprite.set_flip_h(false)
 | 
			
		||||
        elif input_dir < 0:
 | 
			
		||||
            _player_sprite.set_flip_h(true)
 | 
			
		||||
    else:
 | 
			
		||||
        velocity.x = move_toward(velocity.x, 0, SPEED)
 | 
			
		||||
 | 
			
		||||
    move_and_slide()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _process(delta) -> void:
 | 
			
		||||
    _player_visuals.global_position = _physics_body_trans_last.interpolate_with(
 | 
			
		||||
        _physics_body_trans_current,
 | 
			
		||||
        Engine.get_physics_interpolation_fraction()
 | 
			
		||||
    ).origin
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _show_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
 | 
			
		||||
    if body is TileMap:
 | 
			
		||||
        var tile_map: TileMap = body
 | 
			
		||||
 | 
			
		||||
        var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
 | 
			
		||||
        var cell_data: TileData = tile_map.get_cell_tile_data(1, tile_coords)
 | 
			
		||||
 | 
			
		||||
        if cell_data:
 | 
			
		||||
            var cell_data_type: StringName = cell_data.get_custom_data("Type")
 | 
			
		||||
#			var cell_global_pos: Vector2 = tile_map.to_global(tile_map.map_to_local(tile_coords))
 | 
			
		||||
            _is_interactive = true
 | 
			
		||||
            _interaction_prompt.set_visible(true)
 | 
			
		||||
 | 
			
		||||
            match cell_data_type:
 | 
			
		||||
                "Sign":
 | 
			
		||||
                    _interactive_UI = owner.get_node("%UISign")
 | 
			
		||||
                    _active_pcam = %ItemFocusPhantomCamera2D
 | 
			
		||||
                    _interactive_object = InteractiveType.ITEM
 | 
			
		||||
                "Inventory":
 | 
			
		||||
                    _interactive_UI = owner.get_node("%UIInventory")
 | 
			
		||||
                    _interactive_object = InteractiveType.INVENTORY
 | 
			
		||||
                    _active_pcam = %InventoryPhantomCamera2D
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _hide_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
 | 
			
		||||
    if body is TileMap:
 | 
			
		||||
        var tile_map: TileMap = body
 | 
			
		||||
 | 
			
		||||
        var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
 | 
			
		||||
        var cell_data: TileData = tile_map.get_cell_tile_data(1, tile_coords)
 | 
			
		||||
 | 
			
		||||
        if cell_data:
 | 
			
		||||
            _interaction_prompt.set_visible(false)
 | 
			
		||||
            _is_interactive = false
 | 
			
		||||
            _interactive_UI = null
 | 
			
		||||
            _interactive_object = InteractiveType.NONE
 | 
			
		||||
            _active_pcam = null
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,176 +0,0 @@
 | 
			
		|||
extends CharacterBody2D
 | 
			
		||||
 | 
			
		||||
@onready var _player_area2d = %PlayerArea2D
 | 
			
		||||
@onready var _player_visuals: Node2D = %PlayerVisuals
 | 
			
		||||
@onready var _player_sprite: Sprite2D = %PlayerSprite
 | 
			
		||||
@onready var _interaction_prompt: Panel = %InteractionPrompt
 | 
			
		||||
@onready var _ui_sign: Control
 | 
			
		||||
@onready var _dark_overlay: ColorRect = %DarkOverlay
 | 
			
		||||
 | 
			
		||||
const KEY_STRINGNAME: StringName = "Key"
 | 
			
		||||
const ACTION_STRINGNAME: StringName = "Action"
 | 
			
		||||
const INPUT_MOVE_LEFT_STRINGNAME: StringName = "move_left"
 | 
			
		||||
const INPUT_MOVE_RIGHT_STRINGNAME: StringName = "move_right"
 | 
			
		||||
 | 
			
		||||
const SPEED = 350.0
 | 
			
		||||
const JUMP_VELOCITY = -750.0
 | 
			
		||||
 | 
			
		||||
# Get the gravity from the project settings to be synced with RigidBody nodes.
 | 
			
		||||
var gravity: int = 2400
 | 
			
		||||
var _is_interactive: bool
 | 
			
		||||
var _can_open_inventory: bool
 | 
			
		||||
var _movement_disabled: bool
 | 
			
		||||
var tween: Tween
 | 
			
		||||
var _interactive_UI: Control
 | 
			
		||||
var _active_pcam: PhantomCamera2D
 | 
			
		||||
 | 
			
		||||
enum InteractiveType {
 | 
			
		||||
    NONE = 0,
 | 
			
		||||
    ITEM = 1,
 | 
			
		||||
    INVENTORY = 2,
 | 
			
		||||
}
 | 
			
		||||
var _interactive_object: InteractiveType = InteractiveType.NONE
 | 
			
		||||
 | 
			
		||||
var InputMovementDic: Dictionary = {
 | 
			
		||||
    INPUT_MOVE_LEFT_STRINGNAME: {
 | 
			
		||||
        KEY_STRINGNAME: KEY_A,
 | 
			
		||||
        ACTION_STRINGNAME: INPUT_MOVE_LEFT_STRINGNAME
 | 
			
		||||
    },
 | 
			
		||||
    INPUT_MOVE_RIGHT_STRINGNAME: {
 | 
			
		||||
        KEY_STRINGNAME: KEY_D,
 | 
			
		||||
        ACTION_STRINGNAME: INPUT_MOVE_RIGHT_STRINGNAME
 | 
			
		||||
    },
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
    _player_area2d.connect("body_shape_entered", _show_prompt)
 | 
			
		||||
    _player_area2d.connect("body_shape_exited", _hide_prompt)
 | 
			
		||||
 | 
			
		||||
    _ui_sign = owner.get_node("%UISign")
 | 
			
		||||
 | 
			
		||||
    for input in InputMovementDic:
 | 
			
		||||
        var key_val = InputMovementDic[input].get(KEY_STRINGNAME)
 | 
			
		||||
        var action_val = InputMovementDic[input].get(ACTION_STRINGNAME)
 | 
			
		||||
 | 
			
		||||
        var movement_input = InputEventKey.new()
 | 
			
		||||
        movement_input.physical_keycode = key_val
 | 
			
		||||
        InputMap.add_action(action_val)
 | 
			
		||||
        InputMap.action_add_event(action_val, movement_input)
 | 
			
		||||
 | 
			
		||||
    if Engine.get_version_info().major == 4 and \
 | 
			
		||||
        Engine.get_version_info().minor < 3:
 | 
			
		||||
            printerr("This scene is designed to only work properly in Godot 4.3 or later that supports 2D Physics Interpolation.")
 | 
			
		||||
            printerr("Please run the other 2D example scenes in the other directory.")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _unhandled_input(event: InputEvent) -> void:
 | 
			
		||||
    if _is_interactive:
 | 
			
		||||
        if Input.is_physical_key_pressed(KEY_F):
 | 
			
		||||
            if tween:
 | 
			
		||||
                tween.kill()
 | 
			
		||||
 | 
			
		||||
            if not _movement_disabled:
 | 
			
		||||
                tween = get_tree().create_tween()
 | 
			
		||||
 | 
			
		||||
                _movement_disabled = true
 | 
			
		||||
                _active_pcam.set_priority(10)
 | 
			
		||||
 | 
			
		||||
                _show_interactive_node(_interactive_UI)
 | 
			
		||||
                _interactive_node_logic()
 | 
			
		||||
 | 
			
		||||
            else:
 | 
			
		||||
                _hide_interactive_node(_interactive_UI)
 | 
			
		||||
                _interactive_node_logic()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if Input.is_physical_key_pressed(KEY_ESCAPE) and _movement_disabled:
 | 
			
		||||
            _hide_interactive_node(_interactive_UI)
 | 
			
		||||
            _interactive_node_logic()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _show_interactive_node(UI: Control) -> void:
 | 
			
		||||
    UI.modulate.a = 0
 | 
			
		||||
    UI.visible = true
 | 
			
		||||
    tween.tween_property(UI, "modulate", Color.WHITE, 1).set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CIRC)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _hide_interactive_node(UI: Control) -> void:
 | 
			
		||||
    _movement_disabled = false
 | 
			
		||||
    _active_pcam.set_priority(0)
 | 
			
		||||
    UI.visible = false
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _interactive_node_logic() -> void:
 | 
			
		||||
    match _interactive_object:
 | 
			
		||||
        2:
 | 
			
		||||
            if _movement_disabled:
 | 
			
		||||
                _dark_overlay.set_visible(true)
 | 
			
		||||
            else:
 | 
			
		||||
                _dark_overlay.set_visible(false)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _physics_process(delta: float) -> void:
 | 
			
		||||
    if not is_on_floor():
 | 
			
		||||
        velocity.y += gravity * delta
 | 
			
		||||
 | 
			
		||||
    if Input.is_action_just_pressed("ui_accept") and is_on_floor():
 | 
			
		||||
        velocity.y = JUMP_VELOCITY
 | 
			
		||||
 | 
			
		||||
    if _movement_disabled: return
 | 
			
		||||
 | 
			
		||||
    var input_dir: = Input.get_axis(
 | 
			
		||||
        INPUT_MOVE_LEFT_STRINGNAME,
 | 
			
		||||
        INPUT_MOVE_RIGHT_STRINGNAME
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
    if input_dir:
 | 
			
		||||
        velocity.x = input_dir * SPEED
 | 
			
		||||
        if input_dir > 0:
 | 
			
		||||
            _player_sprite.set_flip_h(false)
 | 
			
		||||
        elif input_dir < 0:
 | 
			
		||||
            _player_sprite.set_flip_h(true)
 | 
			
		||||
    else:
 | 
			
		||||
        velocity.x = move_toward(velocity.x, 0, SPEED)
 | 
			
		||||
 | 
			
		||||
    move_and_slide()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _show_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
 | 
			
		||||
    if body is TileMap:
 | 
			
		||||
        var tile_map: TileMap = body
 | 
			
		||||
 | 
			
		||||
        var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
 | 
			
		||||
        var cell_data: TileData = tile_map.get_cell_tile_data(1, tile_coords)
 | 
			
		||||
 | 
			
		||||
        if cell_data:
 | 
			
		||||
            var cell_data_type: StringName = cell_data.get_custom_data("Type")
 | 
			
		||||
#			var cell_global_pos: Vector2 = tile_map.to_global(tile_map.map_to_local(tile_coords))
 | 
			
		||||
            _is_interactive = true
 | 
			
		||||
            _interaction_prompt.set_visible(true)
 | 
			
		||||
 | 
			
		||||
            match cell_data_type:
 | 
			
		||||
                "Sign":
 | 
			
		||||
                    _interactive_UI = owner.get_node("%UISign")
 | 
			
		||||
                    _active_pcam = %ItemFocusPhantomCamera2D
 | 
			
		||||
                    _interactive_object = InteractiveType.ITEM
 | 
			
		||||
                "Inventory":
 | 
			
		||||
                    _interactive_UI = owner.get_node("%UIInventory")
 | 
			
		||||
                    _interactive_object = InteractiveType.INVENTORY
 | 
			
		||||
                    _active_pcam = %InventoryPhantomCamera2D
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _hide_prompt(body_rid: RID, body: Node2D, body_shape_index: int, local_shape: int) -> void:
 | 
			
		||||
    if body is TileMap:
 | 
			
		||||
        var tile_map: TileMap = body
 | 
			
		||||
 | 
			
		||||
        var tile_coords: Vector2i = tile_map.get_coords_for_body_rid(body_rid)
 | 
			
		||||
        var cell_data: TileData = tile_map.get_cell_tile_data(1, tile_coords)
 | 
			
		||||
 | 
			
		||||
        if cell_data:
 | 
			
		||||
            _interaction_prompt.set_visible(false)
 | 
			
		||||
            _is_interactive = false
 | 
			
		||||
            _interactive_UI = null
 | 
			
		||||
            _interactive_object = InteractiveType.NONE
 | 
			
		||||
            _active_pcam = null
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,26 +0,0 @@
 | 
			
		|||
extends Area3D
 | 
			
		||||
 | 
			
		||||
@export var area_pcam: PhantomCamera3D
 | 
			
		||||
 | 
			
		||||
var initial_camera_position: Vector3
 | 
			
		||||
var initial_camera_rotation: Vector3
 | 
			
		||||
 | 
			
		||||
var tween: Tween
 | 
			
		||||
var tween_duration: float = 0.9
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	connect("area_entered", _entered_area)
 | 
			
		||||
	connect("area_exited", _exited_area)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _entered_area(area_3D: Area3D) -> void:
 | 
			
		||||
	if area_3D.get_parent() is CharacterBody3D:
 | 
			
		||||
		area_pcam.set_priority(20)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _exited_area(area_3D: Area3D) -> void:
 | 
			
		||||
	if area_3D.get_parent() is CharacterBody3D:
 | 
			
		||||
		area_pcam.set_priority(0)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,71 +0,0 @@
 | 
			
		|||
extends Node3D
 | 
			
		||||
 | 
			
		||||
@onready var npc_pcam: PhantomCamera3D = %NPCPhantomCamera3D
 | 
			
		||||
@onready var dialogueArea: Area3D = %NPCInteractionArea3D
 | 
			
		||||
@onready var dialogueLabel3D: Label3D = %NPCDialogueExampleLabel
 | 
			
		||||
 | 
			
		||||
@onready var player: CharacterBody3D = %PlayerCharacterBody3D
 | 
			
		||||
 | 
			
		||||
@onready var move_to_location: Vector3 = %MoveToLocation.get_global_position()
 | 
			
		||||
 | 
			
		||||
var dialogue_label_initial_position: Vector3
 | 
			
		||||
var dialogue_label_initial_rotation: Vector3
 | 
			
		||||
 | 
			
		||||
var tween: Tween
 | 
			
		||||
var tween_duration: float = 0.9
 | 
			
		||||
var tween_transition: Tween.TransitionType = Tween.TRANS_QUAD
 | 
			
		||||
 | 
			
		||||
var interactable: bool
 | 
			
		||||
var is_interacting: bool
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	dialogueArea.connect("area_entered", _interactable)
 | 
			
		||||
	dialogueArea.connect("area_exited", _not_interactable)
 | 
			
		||||
 | 
			
		||||
	dialogueLabel3D.set_visible(false)
 | 
			
		||||
 | 
			
		||||
	dialogue_label_initial_position = dialogueLabel3D.get_global_position()
 | 
			
		||||
	dialogue_label_initial_rotation = dialogueLabel3D.get_global_rotation()
 | 
			
		||||
 | 
			
		||||
	npc_pcam.tween_completed.connect(_on_tween_started)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _on_tween_started() -> void:
 | 
			
		||||
	player.movement_enabled = false
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _interactable(area_3D: Area3D) -> void:
 | 
			
		||||
	if area_3D.get_parent() is CharacterBody3D:
 | 
			
		||||
		dialogueLabel3D.set_visible(true)
 | 
			
		||||
		interactable = true
 | 
			
		||||
 | 
			
		||||
		var tween: Tween = get_tree().create_tween().set_trans(tween_transition).set_ease(Tween.EASE_IN_OUT).set_loops()
 | 
			
		||||
		tween.tween_property(dialogueLabel3D, "global_position", dialogue_label_initial_position - Vector3(0, -0.2, 0), tween_duration)
 | 
			
		||||
		tween.tween_property(dialogueLabel3D, "position", dialogue_label_initial_position, tween_duration)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _not_interactable(area_3D: Area3D) -> void:
 | 
			
		||||
	if area_3D.get_parent() is CharacterBody3D:
 | 
			
		||||
		dialogueLabel3D.set_visible(false)
 | 
			
		||||
		interactable = false
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _input(event) -> void:
 | 
			
		||||
	if not interactable: return
 | 
			
		||||
 | 
			
		||||
	if event is InputEventKey and event.pressed:
 | 
			
		||||
		if event.keycode == KEY_F:
 | 
			
		||||
			var tween: Tween = get_tree().create_tween() \
 | 
			
		||||
				.set_parallel(true) \
 | 
			
		||||
				.set_trans(Tween.TRANS_QUART) \
 | 
			
		||||
				.set_ease(Tween.EASE_IN_OUT)
 | 
			
		||||
			if not is_interacting:
 | 
			
		||||
				npc_pcam.priority = 20
 | 
			
		||||
				tween.tween_property(player, "global_position", move_to_location, 0.6).set_trans(tween_transition)
 | 
			
		||||
				tween.tween_property(dialogueLabel3D, "rotation", Vector3(deg_to_rad(-20), deg_to_rad(53), 0), 0.6).set_trans(tween_transition)
 | 
			
		||||
			else:
 | 
			
		||||
				npc_pcam.priority = 0
 | 
			
		||||
				tween.tween_property(dialogueLabel3D, "rotation", dialogue_label_initial_rotation, 0.9)
 | 
			
		||||
				player.movement_enabled = true
 | 
			
		||||
			is_interacting = !is_interacting
 | 
			
		||||
| 
						 | 
				
			
			@ -1,18 +0,0 @@
 | 
			
		|||
extends Node
 | 
			
		||||
 | 
			
		||||
@export var path_pcam: PhantomCamera3D
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	connect("area_entered", _entered_area)
 | 
			
		||||
	connect("area_exited", _exited_area)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _entered_area(area_3D: Area3D) -> void:
 | 
			
		||||
	if area_3D.get_parent() is CharacterBody3D:
 | 
			
		||||
		path_pcam.set_priority(20)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _exited_area(area_3D: Area3D) -> void:
 | 
			
		||||
	if area_3D.get_parent() is CharacterBody3D:
 | 
			
		||||
		path_pcam.set_priority(0)
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1,103 +0,0 @@
 | 
			
		|||
extends CharacterBody3D
 | 
			
		||||
 | 
			
		||||
@export var SPEED: float = 5.0
 | 
			
		||||
@export var JUMP_VELOCITY: float = 4.5
 | 
			
		||||
@export var enable_gravity = true
 | 
			
		||||
 | 
			
		||||
@onready var _camera: Camera3D
 | 
			
		||||
 | 
			
		||||
@onready var _player_visual: Node3D = %PlayerVisual
 | 
			
		||||
 | 
			
		||||
# Get the gravity from the project settings to be synced with RigidBody nodes.
 | 
			
		||||
var gravity: float = 9.8
 | 
			
		||||
 | 
			
		||||
var movement_enabled: bool = true
 | 
			
		||||
 | 
			
		||||
var _physics_body_trans_last: Transform3D
 | 
			
		||||
var _physics_body_trans_current: Transform3D
 | 
			
		||||
 | 
			
		||||
const KEY_STRINGNAME: StringName = "Key"
 | 
			
		||||
const ACTION_STRINGNAME: StringName = "Action"
 | 
			
		||||
 | 
			
		||||
const INPUT_MOVE_UP_STRINGNAME: StringName = "move_up"
 | 
			
		||||
const INPUT_MOVE_DOWM_STRINGNAME: StringName = "move_down"
 | 
			
		||||
const INPUT_MOVE_LEFT_STRINGNAME: StringName = "move_left"
 | 
			
		||||
const INPUT_MOVE_RIGHT_STRINGNAME: StringName = "move_right"
 | 
			
		||||
 | 
			
		||||
var InputMovementDic: Dictionary = {
 | 
			
		||||
	INPUT_MOVE_UP_STRINGNAME: {
 | 
			
		||||
		KEY_STRINGNAME: KEY_W,
 | 
			
		||||
		ACTION_STRINGNAME: INPUT_MOVE_UP_STRINGNAME
 | 
			
		||||
	},
 | 
			
		||||
	INPUT_MOVE_DOWM_STRINGNAME: {
 | 
			
		||||
		KEY_STRINGNAME: KEY_S,
 | 
			
		||||
		ACTION_STRINGNAME: INPUT_MOVE_DOWM_STRINGNAME
 | 
			
		||||
	},
 | 
			
		||||
	INPUT_MOVE_LEFT_STRINGNAME: {
 | 
			
		||||
		KEY_STRINGNAME: KEY_A,
 | 
			
		||||
		ACTION_STRINGNAME: INPUT_MOVE_LEFT_STRINGNAME
 | 
			
		||||
	},
 | 
			
		||||
	INPUT_MOVE_RIGHT_STRINGNAME: {
 | 
			
		||||
		KEY_STRINGNAME: KEY_D,
 | 
			
		||||
		ACTION_STRINGNAME: INPUT_MOVE_RIGHT_STRINGNAME
 | 
			
		||||
	},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	for input in InputMovementDic:
 | 
			
		||||
		var key_val = InputMovementDic[input].get(KEY_STRINGNAME)
 | 
			
		||||
		var action_val = InputMovementDic[input].get(ACTION_STRINGNAME)
 | 
			
		||||
 | 
			
		||||
		_camera = owner.get_node("%MainCamera3D")
 | 
			
		||||
 | 
			
		||||
		var movement_input = InputEventKey.new()
 | 
			
		||||
		movement_input.physical_keycode = key_val
 | 
			
		||||
		InputMap.add_action(action_val)
 | 
			
		||||
		InputMap.action_add_event(action_val, movement_input)
 | 
			
		||||
 | 
			
		||||
		_player_visual.top_level = true
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _physics_process(delta: float) -> void:
 | 
			
		||||
	_physics_body_trans_last = _physics_body_trans_current
 | 
			
		||||
	_physics_body_trans_current = global_transform
 | 
			
		||||
 | 
			
		||||
	# Add the gravity.
 | 
			
		||||
	if enable_gravity and not is_on_floor():
 | 
			
		||||
		velocity.y -= gravity * delta
 | 
			
		||||
 | 
			
		||||
	if not movement_enabled: return
 | 
			
		||||
 | 
			
		||||
	# Get the input direction and handle the movement/deceleration.
 | 
			
		||||
	# As good practice, you should replace UI actions with custom gameplay actions.
 | 
			
		||||
	var input_dir: Vector2 = Input.get_vector(
 | 
			
		||||
		INPUT_MOVE_LEFT_STRINGNAME,
 | 
			
		||||
		INPUT_MOVE_RIGHT_STRINGNAME,
 | 
			
		||||
		INPUT_MOVE_UP_STRINGNAME,
 | 
			
		||||
		INPUT_MOVE_DOWM_STRINGNAME
 | 
			
		||||
	)
 | 
			
		||||
 | 
			
		||||
	var cam_dir: Vector3 = -_camera.global_transform.basis.z
 | 
			
		||||
 | 
			
		||||
	var direction: Vector3 = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
 | 
			
		||||
	if direction:
 | 
			
		||||
		var move_dir: Vector3 = Vector3.ZERO
 | 
			
		||||
		move_dir.x = direction.x
 | 
			
		||||
		move_dir.z = direction.z
 | 
			
		||||
 | 
			
		||||
		move_dir = move_dir.rotated(Vector3.UP, _camera.rotation.y).normalized()
 | 
			
		||||
		velocity.x = move_dir.x * SPEED
 | 
			
		||||
		velocity.z = move_dir.z * SPEED
 | 
			
		||||
	else:
 | 
			
		||||
		velocity.x = move_toward(velocity.x, 0, SPEED)
 | 
			
		||||
		velocity.z = move_toward(velocity.z, 0, SPEED)
 | 
			
		||||
 | 
			
		||||
	move_and_slide()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _process(_delta: float) -> void:
 | 
			
		||||
	_player_visual.global_transform = _physics_body_trans_last.interpolate_with(
 | 
			
		||||
		_physics_body_trans_current,
 | 
			
		||||
		Engine.get_physics_interpolation_fraction()
 | 
			
		||||
	)
 | 
			
		||||
| 
						 | 
				
			
			@ -1,88 +0,0 @@
 | 
			
		|||
extends "player_controller.gd"
 | 
			
		||||
 | 
			
		||||
@onready var _player_pcam: PhantomCamera3D
 | 
			
		||||
@onready var _aim_pcam: PhantomCamera3D
 | 
			
		||||
@onready var _player_direction: Node3D = %PlayerDirection
 | 
			
		||||
@onready var _ceiling_pcam: PhantomCamera3D
 | 
			
		||||
 | 
			
		||||
@export var mouse_sensitivity: float = 0.05
 | 
			
		||||
 | 
			
		||||
@export var min_pitch: float = -89.9
 | 
			
		||||
@export var max_pitch: float = 50
 | 
			
		||||
 | 
			
		||||
@export var min_yaw: float = 0
 | 
			
		||||
@export var max_yaw: float = 360
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _ready() -> void:
 | 
			
		||||
	super()
 | 
			
		||||
	
 | 
			
		||||
	_player_pcam = owner.get_node("%PlayerPhantomCamera3D")
 | 
			
		||||
	_aim_pcam = owner.get_node("%PlayerAimPhantomCamera3D")
 | 
			
		||||
	_ceiling_pcam = owner.get_node("%CeilingPhantomCamera3D")
 | 
			
		||||
	
 | 
			
		||||
	if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
 | 
			
		||||
		Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _physics_process(delta: float) -> void:
 | 
			
		||||
	super(delta)
 | 
			
		||||
 | 
			
		||||
	if velocity.length() > 0.2:
 | 
			
		||||
		var look_direction: Vector2 = Vector2(velocity.z, velocity.x)
 | 
			
		||||
		_player_direction.rotation.y = look_direction.angle()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _unhandled_input(event: InputEvent) -> void:
 | 
			
		||||
	if _player_pcam.get_follow_mode() == _player_pcam.FollowMode.THIRD_PERSON:
 | 
			
		||||
		var active_pcam: PhantomCamera3D
 | 
			
		||||
 | 
			
		||||
		if is_instance_valid(_aim_pcam):
 | 
			
		||||
			_set_pcam_rotation(_player_pcam, event)
 | 
			
		||||
			_set_pcam_rotation(_aim_pcam, event)
 | 
			
		||||
			if _player_pcam.get_priority() > _aim_pcam.get_priority():
 | 
			
		||||
				_toggle_aim_pcam(event)
 | 
			
		||||
			else:
 | 
			
		||||
				_toggle_aim_pcam(event)
 | 
			
		||||
 | 
			
		||||
		if event is InputEventKey and event.pressed:
 | 
			
		||||
			if event.keycode == KEY_SPACE:
 | 
			
		||||
				if _ceiling_pcam.get_priority() < 30 and _player_pcam.is_active():
 | 
			
		||||
					_ceiling_pcam.set_priority(30)
 | 
			
		||||
				else:
 | 
			
		||||
					_ceiling_pcam.set_priority(1)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _set_pcam_rotation(pcam: PhantomCamera3D, event: InputEvent) -> void:
 | 
			
		||||
	if event is InputEventMouseMotion:
 | 
			
		||||
		var pcam_rotation_degrees: Vector3
 | 
			
		||||
 | 
			
		||||
		# Assigns the current 3D rotation of the SpringArm3D node - so it starts off where it is in the editor
 | 
			
		||||
		pcam_rotation_degrees = pcam.get_third_person_rotation_degrees()
 | 
			
		||||
 | 
			
		||||
		# Change the X rotation
 | 
			
		||||
		pcam_rotation_degrees.x -= event.relative.y * mouse_sensitivity
 | 
			
		||||
 | 
			
		||||
		# Clamp the rotation in the X axis so it go over or under the target
 | 
			
		||||
		pcam_rotation_degrees.x = clampf(pcam_rotation_degrees.x, min_pitch, max_pitch)
 | 
			
		||||
 | 
			
		||||
		# Change the Y rotation value
 | 
			
		||||
		pcam_rotation_degrees.y -= event.relative.x * mouse_sensitivity
 | 
			
		||||
 | 
			
		||||
		# Sets the rotation to fully loop around its target, but witout going below or exceeding 0 and 360 degrees respectively
 | 
			
		||||
		pcam_rotation_degrees.y = wrapf(pcam_rotation_degrees.y, min_yaw, max_yaw)
 | 
			
		||||
 | 
			
		||||
		# Change the SpringArm3D node's rotation and rotate around its target
 | 
			
		||||
		pcam.set_third_person_rotation_degrees(pcam_rotation_degrees)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
func _toggle_aim_pcam(event: InputEvent) -> void:
 | 
			
		||||
	if event is InputEventMouseButton \
 | 
			
		||||
		and event.is_pressed() \
 | 
			
		||||
		and event.button_index == 2 \
 | 
			
		||||
		and (_player_pcam.is_active() or _aim_pcam.is_active()):
 | 
			
		||||
		if _player_pcam.get_priority() > _aim_pcam.get_priority():
 | 
			
		||||
			_aim_pcam.set_priority(30)
 | 
			
		||||
		else:
 | 
			
		||||
			_aim_pcam.set_priority(0)
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 67 KiB  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://b7cs6me43ufh3"
 | 
			
		||||
path="res://.godot/imported/inventory_container.png-12241277f279bfc4bf7d5dad6b3e8ff2.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://addons/phantom_camera/examples/textures/2D/inventory_container.png"
 | 
			
		||||
dest_files=["res://.godot/imported/inventory_container.png-12241277f279bfc4bf7d5dad6b3e8ff2.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
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 10 KiB  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://c77npili4pel4"
 | 
			
		||||
path="res://.godot/imported/level_spritesheet.png-26a44dd21a040a5480d5ccba54377d99.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://addons/phantom_camera/examples/textures/2D/level_spritesheet.png"
 | 
			
		||||
dest_files=["res://.godot/imported/level_spritesheet.png-26a44dd21a040a5480d5ccba54377d99.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
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 1.5 KiB  | 
| 
						 | 
				
			
			@ -1,34 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://cwep0on2tthn7"
 | 
			
		||||
path="res://.godot/imported/phantom_camera_2d_sprite.png-deab230b83ae03aeb308a08ff66b8dbc.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://addons/phantom_camera/examples/textures/2D/phantom_camera_2d_sprite.png"
 | 
			
		||||
dest_files=["res://.godot/imported/phantom_camera_2d_sprite.png-deab230b83ae03aeb308a08ff66b8dbc.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
 | 
			
		||||
| 
						 | 
				
			
			@ -1,4 +0,0 @@
 | 
			
		|||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
 | 
			
		||||
<path d="M12.5361 7.10309C13.6839 7.10309 14.6144 7.94367 14.6144 8.98059C14.6144 9.5197 14.3629 10.0057 13.9601 10.3482C14.1589 10.5805 14.1526 10.8503 14.1526 11.1362L16 10.0236V14.1959L14.1526 13.0833V13.3614C14.1526 13.8223 13.739 14.1959 13.2289 14.1959H9.07216C8.56201 14.1959 8.14845 13.8223 8.14845 13.3614V12.0029C7.34123 11.7452 6.76289 11.0497 6.76289 10.2323C6.76289 9.19534 7.69339 8.35476 8.84124 8.35476C9.49502 8.35476 10.0783 8.62747 10.4593 9.05381C10.4454 8.72765 10.5274 8.40055 10.6897 8.11774C11.0356 7.51496 11.7326 7.10309 12.5361 7.10309Z" fill="#8DA5F3"/>
 | 
			
		||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.8 1C7.45097 1 9.6 3.08749 9.6 5.66254V7.11532C9.38344 7.06886 9.16015 7.04201 8.93273 7.03632C9.02973 6.78223 9.08571 6.48275 9.08571 6.1621C9.08571 5.24244 8.62521 4.49691 8.05714 4.49691C7.48908 4.49691 7.02857 5.24244 7.02857 6.1621C7.02857 6.63483 7.15025 7.06155 7.34566 7.36466C6.25657 7.86676 5.4433 8.90657 5.4433 10.2323C5.4433 11.3311 6.01594 12.2448 6.82887 12.8078V13.3614C6.82887 13.4831 6.8386 13.6006 6.85714 13.7139V14.3216C6.85714 14.6894 6.55014 14.9876 6.17143 14.9876C5.79272 14.9876 5.48571 14.6894 5.48571 14.3216V13.6555C5.48571 13.2876 5.17871 12.9894 4.8 12.9894C4.42129 12.9894 4.11429 13.2876 4.11429 13.6555V14.3216C4.11429 14.6894 3.80728 14.9876 3.42857 14.9876C3.04986 14.9876 2.74286 14.6894 2.74286 14.3216V13.6555C2.74286 13.2876 2.43585 12.9894 2.05714 12.9894C1.67843 12.9894 1.37143 13.2876 1.37143 13.6555V14.3216C1.37143 14.6894 1.06442 14.9876 0.685714 14.9876C0.307005 14.9876 0 14.6894 0 14.3216V5.66254C0 3.08749 2.14903 1 4.8 1ZM4.62857 7.8273C5.19664 7.8273 5.65714 7.08176 5.65714 6.1621C5.65714 5.24244 5.19664 4.49691 4.62857 4.49691C4.06051 4.49691 3.6 5.24244 3.6 6.1621C3.6 7.08176 4.06051 7.8273 4.62857 7.8273Z" fill="#8DA5F3"/>
 | 
			
		||||
</svg>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 1.9 KiB  | 
| 
						 | 
				
			
			@ -1,37 +0,0 @@
 | 
			
		|||
[remap]
 | 
			
		||||
 | 
			
		||||
importer="texture"
 | 
			
		||||
type="CompressedTexture2D"
 | 
			
		||||
uid="uid://ci76plsequlrq"
 | 
			
		||||
path="res://.godot/imported/player_sprite.svg-8862ecb19e12152eb892607676f3831f.ctex"
 | 
			
		||||
metadata={
 | 
			
		||||
"vram_texture": false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
[deps]
 | 
			
		||||
 | 
			
		||||
source_file="res://addons/phantom_camera/examples/textures/2D/player_sprite.svg"
 | 
			
		||||
dest_files=["res://.godot/imported/player_sprite.svg-8862ecb19e12152eb892607676f3831f.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=8.0
 | 
			
		||||
editor/scale_with_editor_scale=false
 | 
			
		||||
editor/convert_colors_with_editor_theme=false
 | 
			
		||||