Add PhantomCamera nodes
|
@ -36,6 +36,9 @@ public sealed partial class Player : Character
|
||||||
[Export]
|
[Export]
|
||||||
public PlayerCamera Camera { get; set; }
|
public PlayerCamera Camera { get; set; }
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public GodotObject PCamera { get; set; }
|
||||||
|
|
||||||
[Export]
|
[Export]
|
||||||
public Marker2D DirectionMarker { get; private set; }
|
public Marker2D DirectionMarker { get; private set; }
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
[gd_scene load_steps=74 format=3 uid="uid://b2254pup8k161"]
|
[gd_scene load_steps=77 format=3 uid="uid://b2254pup8k161"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"]
|
[ext_resource type="Script" path="res://Characters/Player.cs" id="1_flygr"]
|
||||||
[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"]
|
[ext_resource type="Shader" path="res://Shaders/Flash.gdshader" id="2_ngsgt"]
|
||||||
|
@ -33,6 +33,8 @@
|
||||||
[ext_resource type="PackedScene" uid="uid://ce0ph4wk0ylra" path="res://UI/TargetTracer.tscn" id="22_hxi53"]
|
[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://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="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="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://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"]
|
[ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="31_ql4as"]
|
||||||
|
@ -44,6 +46,12 @@ shader_parameter/color = Vector4(1, 1, 1, 1)
|
||||||
shader_parameter/intensity = 0.0
|
shader_parameter/intensity = 0.0
|
||||||
shader_parameter/alpha_modulate = 1.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"]
|
[sub_resource type="Animation" id="Animation_imqdv"]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
tracks/0/type = "value"
|
tracks/0/type = "value"
|
||||||
|
@ -594,6 +602,15 @@ StateMachine = NodePath("StateMachine")
|
||||||
Hurtbox = NodePath("Hurtbox")
|
Hurtbox = NodePath("Hurtbox")
|
||||||
Faction = 1
|
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")
|
||||||
|
tween_on_load = false
|
||||||
|
draw_limits = true
|
||||||
|
|
||||||
[node name="Stats" type="Node" parent="."]
|
[node name="Stats" type="Node" parent="."]
|
||||||
script = ExtResource("4_06oya")
|
script = ExtResource("4_06oya")
|
||||||
|
|
||||||
|
@ -765,6 +782,7 @@ stream = ExtResource("12_vvem5")
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
[node name="Camera2D" parent="." instance=ExtResource("4_ym125")]
|
[node name="Camera2D" parent="." instance=ExtResource("4_ym125")]
|
||||||
|
enabled = false
|
||||||
zoom = Vector2(4, 4)
|
zoom = Vector2(4, 4)
|
||||||
position_smoothing_speed = 8.0
|
position_smoothing_speed = 8.0
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
[gd_scene load_steps=3 format=3 uid="uid://1pb3mpmrl7lc"]
|
[gd_scene load_steps=4 format=3 uid="uid://1pb3mpmrl7lc"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://Utils/World.cs" id="1_1k6ew"]
|
[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="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")]
|
[node name="World" type="Node2D" node_paths=PackedStringArray("MusicPlayer")]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
|
@ -24,3 +25,8 @@ mouse_filter = 2
|
||||||
|
|
||||||
[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
|
[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
|
||||||
bus = &"Music"
|
bus = &"Music"
|
||||||
|
|
||||||
|
[node name="Camera2D" type="Camera2D" parent="."]
|
||||||
|
|
||||||
|
[node name="PhantomCameraHost" type="Node" parent="Camera2D"]
|
||||||
|
script = ExtResource("3_ge4f0")
|
||||||
|
|
After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[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
|
After Width: | Height: | Size: 9.7 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[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
|
|
@ -0,0 +1,7 @@
|
||||||
|
#####################
|
||||||
|
EXAMPLE ASSET CREDITS
|
||||||
|
#####################
|
||||||
|
|
||||||
|
# level_spritesheet
|
||||||
|
https://opengameart.org/content/a-platformer-in-the-forest
|
||||||
|
https://opengameart.org/users/buch
|
718
addons/phantom_camera/examples/example_scenes/2D-4.3/2d_limit_example_scene.tscn
vendored
100644
|
@ -0,0 +1,120 @@
|
||||||
|
[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
|
|
@ -0,0 +1,379 @@
|
||||||
|
[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"]
|
|
@ -0,0 +1,147 @@
|
||||||
|
[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"]
|
|
@ -0,0 +1,199 @@
|
||||||
|
[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"]
|
|
@ -0,0 +1,171 @@
|
||||||
|
[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"]
|
|
@ -0,0 +1,221 @@
|
||||||
|
[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"]
|
|
@ -0,0 +1,174 @@
|
||||||
|
[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)
|
|
@ -0,0 +1,171 @@
|
||||||
|
[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"]
|
|
@ -0,0 +1,193 @@
|
||||||
|
[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"]
|
|
@ -0,0 +1,258 @@
|
||||||
|
[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"]
|
|
@ -0,0 +1,31 @@
|
||||||
|
[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")
|
|
@ -0,0 +1,43 @@
|
||||||
|
[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")
|
|
@ -0,0 +1,15 @@
|
||||||
|
[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")
|
|
@ -0,0 +1,9 @@
|
||||||
|
[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
|
|
@ -0,0 +1,9 @@
|
||||||
|
[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
|
|
@ -0,0 +1,9 @@
|
||||||
|
[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
|
|
@ -0,0 +1,9 @@
|
||||||
|
[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
|
|
@ -0,0 +1,9 @@
|
||||||
|
[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
|
|
@ -0,0 +1,36 @@
|
||||||
|
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)
|
|
@ -0,0 +1,36 @@
|
||||||
|
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)
|
|
@ -0,0 +1,16 @@
|
||||||
|
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)
|
||||||
|
|
|
@ -0,0 +1,190 @@
|
||||||
|
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
|
||||||
|
|
|
@ -0,0 +1,176 @@
|
||||||
|
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
|
||||||
|
|
|
@ -0,0 +1,26 @@
|
||||||
|
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)
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
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
|
|
@ -0,0 +1,18 @@
|
||||||
|
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)
|
||||||
|
|
|
@ -0,0 +1,103 @@
|
||||||
|
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()
|
||||||
|
)
|
|
@ -0,0 +1,88 @@
|
||||||
|
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)
|
After Width: | Height: | Size: 67 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[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
|
After Width: | Height: | Size: 10 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[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
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[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
|
|
@ -0,0 +1,4 @@
|
||||||
|
<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>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,37 @@
|
||||||
|
[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
|
After Width: | Height: | Size: 172 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bloouh2jtndx1"
|
||||||
|
path="res://.godot/imported/sign_prompt.png-18d451127e1cd1a16367acd23cec47e5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/examples/textures/2D/sign_prompt.png"
|
||||||
|
dest_files=["res://.godot/imported/sign_prompt.png-18d451127e1cd1a16367acd23cec47e5.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
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c7ja4woxol8yc"
|
||||||
|
path.bptc="res://.godot/imported/checker_pattern_dark.png-70cedad2d3abf4ad6166d6614eefa7fb.bptc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/examples/textures/3D/checker_pattern_dark.png"
|
||||||
|
dest_files=["res://.godot/imported/checker_pattern_dark.png-70cedad2d3abf4ad6166d6614eefa7fb.bptc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=true
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
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=0
|
|
@ -0,0 +1,37 @@
|
||||||
|
[gd_scene load_steps=3 format=3 uid="uid://dg7rhrymsrrrm"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b7cs6me43ufh3" path="res://addons/phantom_camera/examples/textures/2D/inventory_container.png" id="1_pi2dp"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_0rdcn"]
|
||||||
|
|
||||||
|
[node name="Control" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 4
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_left = 28.0
|
||||||
|
offset_top = -255.0
|
||||||
|
offset_right = 908.0
|
||||||
|
offset_bottom = 183.0
|
||||||
|
grow_vertical = 2
|
||||||
|
texture = ExtResource("1_pi2dp")
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="TextureRect"]
|
||||||
|
layout_mode = 0
|
||||||
|
offset_left = 345.0
|
||||||
|
offset_top = 12.0
|
||||||
|
offset_right = 535.0
|
||||||
|
offset_bottom = 60.0
|
||||||
|
theme_override_colors/font_color = Color(0.356863, 0.105882, 0.133333, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("2_0rdcn")
|
||||||
|
theme_override_font_sizes/font_size = 32
|
||||||
|
text = "Inventory"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
uppercase = true
|
|
@ -0,0 +1,83 @@
|
||||||
|
[gd_scene load_steps=4 format=3 uid="uid://iq5xd1ob1res"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bloouh2jtndx1" path="res://addons/phantom_camera/examples/textures/2D/sign_prompt.png" id="1_tftrk"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="2_y5454"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_r4h3u"]
|
||||||
|
bg_color = Color(0.470588, 0.6, 0.45098, 1)
|
||||||
|
corner_radius_top_right = 47
|
||||||
|
corner_radius_bottom_left = 40
|
||||||
|
|
||||||
|
[node name="Control" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
|
||||||
|
[node name="TextureRect" type="TextureRect" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -273.568
|
||||||
|
offset_top = 47.0
|
||||||
|
offset_right = 273.568
|
||||||
|
offset_bottom = 413.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
texture = ExtResource("1_tftrk")
|
||||||
|
metadata/_edit_group_ = true
|
||||||
|
|
||||||
|
[node name="Label" type="Label" parent="TextureRect"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_left = 25.0
|
||||||
|
offset_top = 64.0
|
||||||
|
offset_right = -25.0
|
||||||
|
offset_bottom = -88.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_colors/font_color = Color(0.207843, 0.0470588, 0.0666667, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("2_y5454")
|
||||||
|
theme_override_font_sizes/font_size = 62
|
||||||
|
text = "Stay Awhile
|
||||||
|
and read"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
||||||
|
uppercase = true
|
||||||
|
|
||||||
|
[node name="Panel" type="Panel" parent="."]
|
||||||
|
visible = false
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 5
|
||||||
|
anchor_left = 0.5
|
||||||
|
anchor_right = 0.5
|
||||||
|
offset_left = -240.0
|
||||||
|
offset_right = 240.0
|
||||||
|
offset_bottom = 200.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
size_flags_horizontal = 3
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_r4h3u")
|
||||||
|
metadata/_edit_use_anchors_ = true
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="Panel"]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
alignment = 1
|
||||||
|
|
||||||
|
[node name="Label2" type="Label" parent="Panel/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
text = "Example Textsdadassa
|
||||||
|
"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
vertical_alignment = 1
|
|
@ -0,0 +1,33 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://c4mm3of2mc8o5"
|
||||||
|
path="res://.godot/imported/Nunito-Black.ttf-2a374efbc207a97a99b8c70bdc4b7cbb.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/fonts/Nunito-Black.ttf"
|
||||||
|
dest_files=["res://.godot/imported/Nunito-Black.ttf-2a374efbc207a97a99b8c70bdc4b7cbb.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
hinting=1
|
||||||
|
subpixel_positioning=1
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
|
@ -0,0 +1,33 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="font_data_dynamic"
|
||||||
|
type="FontFile"
|
||||||
|
uid="uid://dve7mgsjik4dg"
|
||||||
|
path="res://.godot/imported/Nunito-Regular.ttf-b6054d499efa1a10921004862b1e217a.fontdata"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/fonts/Nunito-Regular.ttf"
|
||||||
|
dest_files=["res://.godot/imported/Nunito-Regular.ttf-b6054d499efa1a10921004862b1e217a.fontdata"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
Rendering=null
|
||||||
|
antialiasing=1
|
||||||
|
generate_mipmaps=false
|
||||||
|
multichannel_signed_distance_field=false
|
||||||
|
msdf_pixel_range=8
|
||||||
|
msdf_size=48
|
||||||
|
allow_system_fallback=true
|
||||||
|
force_autohinter=false
|
||||||
|
hinting=1
|
||||||
|
subpixel_positioning=1
|
||||||
|
oversampling=0.0
|
||||||
|
Fallbacks=null
|
||||||
|
fallbacks=[]
|
||||||
|
Compress=null
|
||||||
|
compress=true
|
||||||
|
preload=[]
|
||||||
|
language_support={}
|
||||||
|
script_support={}
|
||||||
|
opentype_features={}
|
|
@ -0,0 +1,93 @@
|
||||||
|
extends EditorNode3DGizmoPlugin
|
||||||
|
class_name CustomPluginGizmo
|
||||||
|
|
||||||
|
var _gizmo_name
|
||||||
|
var gizmo_name: String: set = set_gizmo_name
|
||||||
|
|
||||||
|
var _gizmo_icon: Texture2D
|
||||||
|
var gizmo_icon: Texture2D: set = set_gizmo_icon
|
||||||
|
|
||||||
|
var _gizmo_spatial_script: Script
|
||||||
|
var gizmo_spatial_script: Script: set = set_gizmo_spatial_script
|
||||||
|
|
||||||
|
var _gizmo_scale: float = 0.035
|
||||||
|
|
||||||
|
|
||||||
|
func set_gizmo_name(name: String) -> void:
|
||||||
|
_gizmo_name = name
|
||||||
|
|
||||||
|
|
||||||
|
func set_gizmo_icon(icon: Texture2D) -> void:
|
||||||
|
_gizmo_icon = icon
|
||||||
|
|
||||||
|
|
||||||
|
func set_gizmo_spatial_script(script: Script) -> void:
|
||||||
|
_gizmo_spatial_script = script
|
||||||
|
|
||||||
|
|
||||||
|
func _get_gizmo_name() -> String:
|
||||||
|
return _gizmo_name
|
||||||
|
|
||||||
|
func _has_gizmo(spatial: Node3D):
|
||||||
|
return spatial.get_script() == _gizmo_spatial_script
|
||||||
|
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
create_icon_material(_gizmo_name, _gizmo_icon, false, Color.WHITE)
|
||||||
|
create_material("main", Color8(252, 127, 127, 255))
|
||||||
|
|
||||||
|
|
||||||
|
func _draw_frustum() -> PackedVector3Array:
|
||||||
|
var lines = PackedVector3Array()
|
||||||
|
|
||||||
|
var dis: float = 0.25
|
||||||
|
var width: float = dis * 1.25
|
||||||
|
var len: float = dis * 1.5
|
||||||
|
|
||||||
|
# Straight line
|
||||||
|
# lines.push_back(Vector3(0, 0, 0))
|
||||||
|
# lines.push_back(Vector3(0, 0, -len))
|
||||||
|
|
||||||
|
|
||||||
|
# Trapezoid
|
||||||
|
lines.push_back(Vector3(0, 0, 0))
|
||||||
|
lines.push_back(Vector3(-width, dis, -len))
|
||||||
|
|
||||||
|
lines.push_back(Vector3(0, 0, 0))
|
||||||
|
lines.push_back(Vector3(width, dis, -len))
|
||||||
|
|
||||||
|
lines.push_back(Vector3(0, 0, 0))
|
||||||
|
lines.push_back(Vector3(-width, -dis, -len))
|
||||||
|
|
||||||
|
lines.push_back(Vector3(0, 0, 0))
|
||||||
|
lines.push_back(Vector3(width, -dis, -len))
|
||||||
|
|
||||||
|
|
||||||
|
# Square
|
||||||
|
## Left
|
||||||
|
lines.push_back(Vector3(-width, dis, -len))
|
||||||
|
lines.push_back(Vector3(-width, -dis, -len))
|
||||||
|
|
||||||
|
## Bottom
|
||||||
|
lines.push_back(Vector3(-width, -dis, -len))
|
||||||
|
lines.push_back(Vector3(width, -dis, -len))
|
||||||
|
|
||||||
|
## Right
|
||||||
|
lines.push_back(Vector3(width, -dis, -len))
|
||||||
|
lines.push_back(Vector3(width, dis, -len))
|
||||||
|
|
||||||
|
## Top
|
||||||
|
lines.push_back(Vector3(width, dis, -len))
|
||||||
|
lines.push_back(Vector3(-width, dis, -len))
|
||||||
|
|
||||||
|
return lines
|
||||||
|
|
||||||
|
|
||||||
|
func _redraw(gizmo: EditorNode3DGizmo):
|
||||||
|
gizmo.clear()
|
||||||
|
|
||||||
|
var icon: Material = get_material(_gizmo_name, gizmo)
|
||||||
|
gizmo.add_unscaled_billboard(icon, _gizmo_scale)
|
||||||
|
|
||||||
|
var material = get_material("main", gizmo)
|
||||||
|
gizmo.add_lines(_draw_frustum(), material)
|
|
@ -0,0 +1,11 @@
|
||||||
|
extends CustomPluginGizmo
|
||||||
|
|
||||||
|
var _spatial_script: Script = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd")
|
||||||
|
var _icon: Texture2D = preload("res://addons/phantom_camera/icons/phantom_camera_gizmo.svg")
|
||||||
|
|
||||||
|
|
||||||
|
func _init() -> void:
|
||||||
|
set_gizmo_name("PhantomCamera")
|
||||||
|
set_gizmo_spatial_script(_spatial_script)
|
||||||
|
set_gizmo_icon(_icon)
|
||||||
|
super()
|
|
@ -0,0 +1,14 @@
|
||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M14.5474 30C14.5474 28.8954 15.4428 28 16.5474 28H47.453C48.5576 28 49.453 28.8954 49.453 30V34C49.453 35.1046 48.5576 36 47.453 36H16.5474C15.4428 36 14.5474 35.1046 14.5474 34V30Z" fill="url(#paint0_linear_1180_3884)"/>
|
||||||
|
<path opacity="0.4" fill-rule="evenodd" clip-rule="evenodd" d="M9 12C7.89543 12 7 12.8954 7 14V18C7 19.1046 7.89543 20 9 20H55C56.1046 20 57 19.1046 57 18V14C57 12.8954 56.1046 12 55 12H9ZM21.2639 44C20.1593 44 19.2639 44.8954 19.2639 46V50C19.2639 51.1046 20.1593 52 21.2639 52H42.7356C43.8402 52 44.7356 51.1046 44.7356 50V46C44.7356 44.8954 43.8402 44 42.7356 44H21.2639Z" fill="url(#paint1_linear_1180_3884)"/>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear_1180_3884" x1="31.5639" y1="28.5595" x2="31.7511" y2="36.0063" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#3AB99A"/>
|
||||||
|
<stop offset="1" stop-color="#1B9E7F"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear_1180_3884" x1="31.375" y1="14.7976" x2="34.6201" y2="51.77" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#3AB99A"/>
|
||||||
|
<stop offset="1" stop-color="#1B9E7F"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,37 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dy8eifa6aw2en"
|
||||||
|
path="res://.godot/imported/PriorityOverride.svg-e76e07f4bbd98169f119e17fe5f2f03f.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/misc/PriorityOverride.svg"
|
||||||
|
dest_files=["res://.godot/imported/PriorityOverride.svg-e76e07f4bbd98169f119e17fe5f2f03f.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" fill="none"><path fill="#8DA5F3" d="M100.289 56.825c9.182 0 16.626 6.724 16.626 15.02 0 4.313-2.012 8.2-5.234 10.94 1.59 1.859 1.54 4.017 1.54 6.305L128 80.19v33.377l-14.779-8.901v2.225c0 3.687-3.309 6.676-7.39 6.676H72.577c-4.08 0-7.39-2.989-7.39-6.676V96.023c-6.457-2.061-11.084-7.625-11.084-14.165 0-8.295 7.444-15.02 16.627-15.02 5.23 0 9.896 2.182 12.944 5.593-.11-2.61.546-5.227 1.844-7.49 2.767-4.821 8.343-8.116 14.771-8.116"/><path fill="#8DA5F3" fill-rule="evenodd" d="M38.4 8c21.208 0 38.4 16.7 38.4 37.3v11.623a29 29 0 0 0-5.338-.632c.776-2.033 1.224-4.429 1.224-6.994 0-7.357-3.684-13.322-8.229-13.322S56.23 41.94 56.23 49.297c0 3.782.973 7.195 2.536 9.62-8.712 4.017-15.219 12.336-15.219 22.941 0 8.79 4.581 16.1 11.085 20.604v4.429c0 .973.078 1.914.226 2.82v4.861c0 2.943-2.456 5.329-5.486 5.329s-5.485-2.386-5.485-5.329v-5.328c0-2.943-2.456-5.329-5.486-5.329s-5.486 2.386-5.486 5.329v5.328c0 2.943-2.456 5.329-5.485 5.329s-5.486-2.386-5.486-5.329v-5.328c0-2.943-2.456-5.329-5.486-5.329s-5.486 2.386-5.486 5.329v5.328c0 2.943-2.456 5.329-5.485 5.329S0 117.515 0 114.572V45.3C0 24.7 17.192 8 38.4 8m-1.371 54.618c4.544 0 8.228-5.964 8.228-13.321s-3.684-13.322-8.228-13.322c-4.545 0-8.229 5.965-8.229 13.322s3.684 13.321 8.229 13.321" clip-rule="evenodd"/></svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,38 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cmcvv0edbbpv4"
|
||||||
|
path="res://.godot/imported/phantom_camera_2d.svg-e5483cbc858fc5f95f7210b1649dff0d.ctex"
|
||||||
|
metadata={
|
||||||
|
"has_editor_variant": true,
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_2d.svg"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_2d.svg-e5483cbc858fc5f95f7210b1649dff0d.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=true
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" fill="none"><path fill="#FC7F7F" d="M100.289 56.825c9.182 0 16.626 6.724 16.626 15.02 0 4.313-2.012 8.2-5.234 10.94 1.59 1.859 1.54 4.017 1.54 6.305L128 80.19v33.377l-14.779-8.901v2.225c0 3.687-3.309 6.676-7.39 6.676H72.577c-4.08 0-7.39-2.989-7.39-6.676V96.023c-6.457-2.061-11.084-7.625-11.084-14.165 0-8.295 7.444-15.02 16.627-15.02 5.23 0 9.896 2.182 12.944 5.593-.11-2.61.546-5.227 1.844-7.49 2.767-4.821 8.343-8.116 14.771-8.116"/><path fill="#FC7F7F" fill-rule="evenodd" d="M38.4 8c21.208 0 38.4 16.7 38.4 37.3v11.623a29 29 0 0 0-5.338-.632c.776-2.033 1.224-4.429 1.224-6.994 0-7.357-3.684-13.322-8.229-13.322S56.23 41.94 56.23 49.297c0 3.782.973 7.195 2.536 9.62-8.712 4.017-15.219 12.336-15.219 22.941 0 8.79 4.581 16.1 11.085 20.604v4.429c0 .973.078 1.914.226 2.82v4.861c0 2.943-2.456 5.329-5.486 5.329s-5.485-2.386-5.485-5.329v-5.328c0-2.943-2.456-5.329-5.486-5.329s-5.486 2.386-5.486 5.329v5.328c0 2.943-2.456 5.329-5.485 5.329s-5.486-2.386-5.486-5.329v-5.328c0-2.943-2.456-5.329-5.486-5.329s-5.486 2.386-5.486 5.329v5.328c0 2.943-2.456 5.329-5.485 5.329S0 117.515 0 114.572V45.3C0 24.7 17.192 8 38.4 8m-1.371 54.618c4.544 0 8.228-5.964 8.228-13.321s-3.684-13.322-8.228-13.322c-4.545 0-8.229 5.965-8.229 13.322s3.684 13.321 8.229 13.321" clip-rule="evenodd"/></svg>
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -0,0 +1,38 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bf8bxgxx71qki"
|
||||||
|
path="res://.godot/imported/phantom_camera_3d.svg-41ed612e834470377fb56eebffa083fe.ctex"
|
||||||
|
metadata={
|
||||||
|
"has_editor_variant": true,
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_3d.svg"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_3d.svg-41ed612e834470377fb56eebffa083fe.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=true
|
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M52.3068 21.4737C52.3068 14.9335 46.4687 9.63159 39.2671 9.63159C34.226 9.63159 29.853 12.2294 27.6829 16.0314C26.6647 17.8152 26.1501 19.8783 26.237 21.9355C23.8466 19.2464 20.1871 17.5263 16.0852 17.5263C8.88357 17.5263 3.04547 22.8282 3.04547 29.3684C3.04547 34.5246 6.67403 38.911 11.7386 40.5367V49.1053C11.7386 52.012 14.3334 54.3684 17.5341 54.3684H43.6136C46.8144 54.3684 49.4091 52.012 49.4091 49.1053V47.3509L61 54.3684V28.0526L49.4091 35.0702C49.4091 35.0163 49.4091 34.9625 49.4092 34.9088C49.4103 33.1652 49.4114 31.5208 48.2014 30.0995C50.7287 27.9397 52.3068 24.874 52.3068 21.4737ZM42.9861 30.74L30.4059 24.9741C30.1414 24.8529 29.8371 24.8529 29.5726 24.9741L16.9924 30.74L16.9924 30.7401V45.3616L29.9893 51.3185L42.9861 45.3616V44.7218V44.7198V30.7401V30.74ZM18.617 33.4481L27.8231 37.2388V48.0686L18.617 43.7364V33.4481ZM20.2416 30.7402L29.9893 26.4079L39.7369 30.7402L29.9893 34.5309L20.2416 30.7402Z" fill="#F5F5F5"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
|
@ -0,0 +1,37 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dkpwb4k1bkbvn"
|
||||||
|
path="res://.godot/imported/phantom_camera_camera_3d_resource.svg-f8bf8d1a5b7442fd6933bfbed999d57d.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_camera_3d_resource.svg"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_camera_3d_resource.svg-f8bf8d1a5b7442fd6933bfbed999d57d.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" fill="none"><path fill="#E0E0E0" d="M95.753 57.722c8.034 0 14.548 5.884 14.548 13.142 0 3.774-1.761 7.176-4.58 9.573 1.391 1.626 1.347 3.515 1.347 5.517L120 78.166v29.205l-12.932-7.788v1.947c0 3.226-2.895 5.841-6.466 5.841H71.505c-3.57 0-6.466-2.615-6.466-5.841v-9.51c-5.65-1.804-9.699-6.672-9.699-12.394 0-7.259 6.514-13.143 14.549-13.143 4.576 0 8.659 1.91 11.326 4.894a12.2 12.2 0 0 1 1.613-6.553c2.421-4.22 7.3-7.102 12.925-7.102"/><path fill="#E0E0E0" fill-rule="evenodd" d="M41.6 15c18.557 0 33.6 14.612 33.6 32.638v10.17a25.3 25.3 0 0 0-4.67-.554c.678-1.778 1.07-3.875 1.07-6.12 0-6.437-3.224-11.656-7.2-11.656s-7.2 5.22-7.2 11.657c0 3.309.852 6.296 2.22 8.418-7.624 3.514-13.317 10.793-13.317 20.073 0 7.692 4.009 14.087 9.7 18.028v3.876q.001 1.277.197 2.467v4.254c0 2.575-2.149 4.662-4.8 4.662s-4.8-2.087-4.8-4.662v-4.663c0-2.575-2.149-4.662-4.8-4.662s-4.8 2.087-4.8 4.662v4.663c0 2.575-2.149 4.662-4.8 4.662s-4.8-2.087-4.8-4.662v-4.663c0-2.575-2.149-4.662-4.8-4.662s-4.8 2.087-4.8 4.662v4.663c0 2.575-2.149 4.662-4.8 4.662S8 110.826 8 108.251V47.638C8 29.612 23.043 15 41.6 15m-1.2 47.791c3.977 0 7.2-5.219 7.2-11.656s-3.224-11.657-7.2-11.657-7.2 5.22-7.2 11.657 3.224 11.656 7.2 11.656" clip-rule="evenodd"/><path stroke="#000" stroke-opacity=".3" d="m107.568 100.468 12.174 7.331.758.457V77.281l-.758.456-12.175 7.333c-.014-1.552-.139-3.142-1.162-4.57 2.709-2.46 4.396-5.865 4.396-9.636 0-7.581-6.786-13.642-15.048-13.642-5.793 0-10.843 2.97-13.359 7.353a12.75 12.75 0 0 0-1.669 5.584c-2.174-2.046-5.045-3.473-8.26-3.976a18 18 0 0 0-.77-.102 17 17 0 0 0-1.806-.098c-8.262 0-15.049 6.062-15.049 13.643 0 5.853 4.055 10.81 9.7 12.755v9.149c0 3.549 3.167 6.341 6.965 6.341h29.097c3.798 0 6.966-2.792 6.966-6.341zM75.095 58.296l.605.13V47.637C75.7 29.324 60.42 14.5 41.6 14.5S7.5 29.323 7.5 47.638v60.613c0 2.865 2.387 5.162 5.3 5.162s5.3-2.297 5.3-5.162v-4.663c0-2.285 1.911-4.162 4.3-4.162s4.3 1.877 4.3 4.162v4.663c0 2.865 2.387 5.162 5.3 5.162s5.3-2.297 5.3-5.162v-4.663c0-2.285 1.911-4.162 4.3-4.162s4.3 1.877 4.3 4.162v4.663c0 2.865 2.387 5.162 5.3 5.162s5.3-2.297 5.3-5.162v-4.295l-.007-.04a15 15 0 0 1-.19-2.386v-4.137l-.216-.15c-5.574-3.86-9.484-10.11-9.484-17.617 0-9.056 5.551-16.173 13.026-19.62l.523-.24-.312-.484c-1.308-2.028-2.14-4.917-2.14-8.147 0-3.142.787-5.961 2.034-7.98 1.252-2.026 2.915-3.177 4.666-3.177 1.75 0 3.414 1.15 4.666 3.177 1.246 2.019 2.034 4.838 2.034 7.98 0 2.188-.382 4.223-1.038 5.94l-.252.661.707.018c1.56.04 3.093.223 4.578.542ZM47.1 51.135c0 3.14-.788 5.96-2.034 7.98-1.252 2.026-2.915 3.176-4.666 3.176-1.75 0-3.414-1.15-4.666-3.177-1.247-2.018-2.034-4.838-2.034-7.98 0-3.14.787-5.96 2.034-7.979 1.252-2.026 2.915-3.177 4.666-3.177 1.75 0 3.414 1.15 4.666 3.177 1.246 2.019 2.034 4.838 2.034 7.98Z"/></svg>
|
After Width: | Height: | Size: 2.8 KiB |
|
@ -0,0 +1,38 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://e36npe2rbxyg"
|
||||||
|
path.s3tc="res://.godot/imported/phantom_camera_gizmo.svg-ba1aacb9b1c5f4ef401d3bd3697a542b.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_gizmo.svg"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_gizmo.svg-ba1aacb9b1c5f4ef401d3bd3697a542b.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
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=0
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
After Width: | Height: | Size: 25 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cjli3p2b8mfyh"
|
||||||
|
path="res://.godot/imported/phantom_camera_glow_logo.png-078f944973b55b32029ba02980211fe0.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_glow_logo.png"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_glow_logo.png-078f944973b55b32029ba02980211fe0.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 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" fill="none"><path fill="#fff" fill-rule="evenodd" d="M36 16c11.046 0 20 8.357 20 18.667v6.275C42.684 44.12 32 55.048 32 69.333v2.134a3 3 0 0 1-1.714.533c-1.578 0-2.857-1.194-2.857-2.667v-2.666c0-1.473-1.28-2.667-2.858-2.667s-2.857 1.194-2.857 2.667v2.666c0 1.473-1.279 2.667-2.857 2.667S16 70.806 16 69.333V34.667C16 24.357 24.954 16 36 16m-6.55 27.333c2.367 0 4.286-2.984 4.286-6.666S31.817 30 29.45 30s-4.285 2.985-4.285 6.667 1.918 6.666 4.285 6.666m18.572-6.666c0 3.682-1.919 6.666-4.286 6.666s-4.286-2.984-4.286-6.666S41.37 30 43.736 30c2.367 0 4.286 2.985 4.286 6.667M96 69.333v2.134a3 3 0 0 0 1.714.533c1.578 0 2.857-1.194 2.857-2.667v-2.666c0-1.473 1.28-2.667 2.858-2.667s2.857 1.194 2.857 2.667v2.666c0 1.473 1.279 2.667 2.857 2.667S112 70.806 112 69.333V34.667C112 24.357 103.046 16 92 16s-20 8.357-20 18.667v6.275c13.316 3.178 24 14.106 24 28.391m-10.55-26c2.367 0 4.286-2.984 4.286-6.666S87.817 30 85.45 30s-4.285 2.985-4.285 6.667 1.918 6.666 4.285 6.666m18.572-6.666c0 3.682-1.919 6.666-4.286 6.666s-4.286-2.984-4.286-6.666S97.37 30 99.736 30c2.367 0 4.286 2.985 4.286 6.667" clip-rule="evenodd"/><path fill="#fff" fill-rule="evenodd" d="M64 48c13.255 0 24 9.551 24 21.333v39.619c0 1.684-1.535 3.048-3.429 3.048s-3.428-1.364-3.428-3.048v-3.047c0-1.683-1.535-3.048-3.429-3.048s-3.428 1.365-3.428 3.048v3.047c0 1.684-1.535 3.048-3.429 3.048s-3.428-1.364-3.428-3.048v-3.047c0-1.683-1.535-3.048-3.429-3.048s-3.429 1.365-3.429 3.048v3.047c0 1.684-1.535 3.048-3.428 3.048s-3.429-1.364-3.429-3.048v-3.047c0-1.683-1.535-3.048-3.428-3.048s-3.429 1.365-3.429 3.048v3.047c0 1.684-1.535 3.048-3.428 3.048S40 110.636 40 108.952V69.333C40 57.551 50.745 48 64 48m-7.86 31.238c2.84 0 5.143-3.411 5.143-7.619S58.981 64 56.14 64s-5.142 3.411-5.142 7.619 2.302 7.62 5.142 7.62m22.286-7.619c0 4.208-2.302 7.62-5.143 7.62s-5.143-3.412-5.143-7.62S70.443 64 73.283 64s5.143 3.411 5.143 7.619" clip-rule="evenodd"/></svg>
|
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,38 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://5fatldiu7dd5"
|
||||||
|
path="res://.godot/imported/phantom_camera_host.svg-3150f8f2d82ca9ecab9a3a415da21c5b.ctex"
|
||||||
|
metadata={
|
||||||
|
"has_editor_variant": true,
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_host.svg"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_host.svg-3150f8f2d82ca9ecab9a3a415da21c5b.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=true
|
After Width: | Height: | Size: 69 KiB |
|
@ -0,0 +1,34 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cc0wmici0eic8"
|
||||||
|
path="res://.godot/imported/phantom_camera_logo.png-8b8d347b5e4800c86cd8095d030a3e5a.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_logo.png"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_logo.png-8b8d347b5e4800c86cd8095d030a3e5a.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 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="none"><path fill="#E0E0E0" d="M18.877 22.144q-.594 0-.954-.324a1.12 1.12 0 0 1-.378-.828q0-.504.414-1.026l2.664-3.24v1.422l-2.448-2.988q-.414-.54-.414-1.026.018-.504.378-.828t.954-.324q.576 0 .936.198.378.18.72.612l1.674 2.16h-1.116l1.674-2.16q.342-.432.72-.612.378-.198.936-.198.612 0 .954.324.36.324.36.828.018.504-.414 1.026l-2.448 2.988v-1.422l2.682 3.24q.432.504.414 1.008a1.18 1.18 0 0 1-.378.846q-.36.324-.972.324-.558 0-.936-.18-.378-.198-.72-.63l-1.872-2.394h1.098l-1.89 2.394q-.324.414-.702.612-.36.198-.936.198M53.916 39.198q-1.35 0-2.232-.414a2.77 2.77 0 0 1-1.296-1.242q-.432-.846-.432-2.106v-2.934h-.612q-.576 0-.9-.306-.306-.306-.306-.882t.306-.864q.324-.306.9-.306h.612v-1.116q0-.792.414-1.206t1.188-.414 1.188.414.414 1.206v1.116h1.476q.594 0 .9.306.324.288.324.864t-.324.882q-.306.306-.9.306H53.16v2.826q0 .666.306.99.324.306 1.008.306.252 0 .486-.054t.432-.054a.55.55 0 0 1 .468.18q.18.18.18.846 0 .54-.162.918-.162.36-.576.522-.252.09-.684.144a4.5 4.5 0 0 1-.702.072"/><path fill="#E0E0E0" fill-rule="evenodd" d="M9 12.5a3.5 3.5 0 0 1 3.5 3.5v27.436c7.342-.458 10.764-3.277 12.592-5.959 1.73-2.536 2.257-5.067 2.724-7.314.155-.741.303-1.451.485-2.12.576-2.113 1.756-6.171 5.713-9.589 3.963-3.422 10.191-5.776 19.986-5.776a3.5 3.5 0 1 1 0 7c-8.705 0-13.104 2.082-15.41 4.074-2.313 1.997-3.044 4.331-3.536 6.132-.055.203-.12.53-.204.956-.42 2.122-1.325 6.694-3.974 10.58a19 19 0 0 1-1.732 2.184H54a3.5 3.5 0 1 1 0 7H11a5.5 5.5 0 0 1-5.5-5.5V16A3.5 3.5 0 0 1 9 12.5" clip-rule="evenodd"/></svg>
|
After Width: | Height: | Size: 1.5 KiB |
|
@ -0,0 +1,38 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dphl04mdf3220"
|
||||||
|
path="res://.godot/imported/phantom_camera_tween.svg-16faced08ef4a5f3458264d894230dbd.ctex"
|
||||||
|
metadata={
|
||||||
|
"has_editor_variant": true,
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_tween.svg"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_tween.svg-16faced08ef4a5f3458264d894230dbd.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=true
|
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M4 7.68333L8 4M8 4L12 7.68333M8 4V13" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 231 B |
|
@ -0,0 +1,37 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://d4j4hrb7yusyq"
|
||||||
|
path="res://.godot/imported/phantom_camera_updater_panel_icon.svg-19823e6cbee8115f8b2554d0ee6e79db.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/phantom_camera_updater_panel_icon.svg"
|
||||||
|
dest_files=["res://.godot/imported/phantom_camera_updater_panel_icon.svg-19823e6cbee8115f8b2554d0ee6e79db.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M39.2002 10.4004C46.3578 10.4004 52.1602 15.615 52.1602 22.0474C52.1602 25.3918 50.5917 28.4069 48.0799 30.5311C49.3195 31.9721 49.2802 33.6462 49.2802 35.42L60.8002 28.518V54.4003L49.2802 47.4984V49.2239C49.2802 52.0828 46.7013 54.4003 43.5202 54.4003H17.6002C14.419 54.4003 11.8402 52.0828 11.8402 49.2239V40.7964C6.80656 39.1976 3.2002 34.8833 3.2002 29.8121C3.2002 23.3796 9.00258 18.1651 16.1602 18.1651C20.237 18.1651 23.8741 19.8569 26.2499 22.5017C26.1635 20.4783 26.6749 18.4492 27.6869 16.6948C29.8438 12.9554 34.19 10.4004 39.2002 10.4004Z" fill="#8DA5F3"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 681 B |
|
@ -0,0 +1,37 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://ccnsrg8hq74p2"
|
||||||
|
path="res://.godot/imported/Camera2DIcon.svg-300e6f57281180711c5ecf391104d4ba.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/viewfinder/Camera2DIcon.svg"
|
||||||
|
dest_files=["res://.godot/imported/Camera2DIcon.svg-300e6f57281180711c5ecf391104d4ba.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M39.2002 10.4004C46.3578 10.4004 52.1602 15.615 52.1602 22.0474C52.1602 25.3918 50.5917 28.4069 48.0799 30.5311C49.3195 31.9721 49.2802 33.6462 49.2802 35.42L60.8002 28.518V54.4003L49.2802 47.4984V49.2239C49.2802 52.0828 46.7013 54.4003 43.5202 54.4003H17.6002C14.419 54.4003 11.8402 52.0828 11.8402 49.2239V40.7964C6.80656 39.1976 3.2002 34.8833 3.2002 29.8121C3.2002 23.3796 9.00258 18.1651 16.1602 18.1651C20.237 18.1651 23.8741 19.8569 26.2499 22.5017C26.1635 20.4783 26.6749 18.4492 27.6869 16.6948C29.8438 12.9554 34.19 10.4004 39.2002 10.4004Z" fill="#FC7F7F"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 681 B |
|
@ -0,0 +1,37 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dkiefpjsrj37n"
|
||||||
|
path="res://.godot/imported/Camera3DIcon.svg-4805c46004db1c89cc9443dd740693f5.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/viewfinder/Camera3DIcon.svg"
|
||||||
|
dest_files=["res://.godot/imported/Camera3DIcon.svg-4805c46004db1c89cc9443dd740693f5.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
|
@ -0,0 +1,4 @@
|
||||||
|
<svg width="148" height="64" viewBox="0 0 148 64" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M43.1201 20.605V27.7013C43.1201 29.3783 45.0599 30.3107 46.3695 29.263L59.9304 18.4143C60.9313 17.6136 60.9313 16.0914 59.9304 15.2908L46.3695 4.44202C45.0599 3.3944 43.1201 4.32674 43.1201 6.00375V13.1L13.1 13.1L13.1 43.1201H6.00376C4.32674 43.1201 3.3944 45.0599 4.44202 46.3695L15.2908 59.9304C16.0914 60.9313 17.6136 60.9313 18.4143 59.9304L29.2631 46.3695C30.3107 45.0599 29.3783 43.1201 27.7013 43.1201H20.605V20.605L43.1201 20.605Z" fill="#F5F5F5"/>
|
||||||
|
<path d="M104.605 21.561H111.701C113.378 21.561 114.311 19.6211 113.263 18.3116L102.414 4.75061C101.614 3.7498 100.091 3.7498 99.2908 4.75061L88.442 18.3116C87.3944 19.6211 88.3267 21.561 90.0038 21.561H97.1V53.4576H127.12V58.6773C127.12 60.3543 129.06 61.2867 130.369 60.239L143.93 49.3903C144.931 48.5896 144.931 47.0674 143.93 46.2668L130.369 35.418C129.06 34.3704 127.12 35.3027 127.12 36.9797V45.9525H109.912L129.707 26.1573L134.148 30.598C135.334 31.7838 137.365 31.0714 137.55 29.4046L139.468 12.1443C139.609 10.8705 138.533 9.79417 137.259 9.9357L119.999 11.8535C118.332 12.0387 117.62 14.0697 118.805 15.2555L124.4 20.8504L104.605 40.6457V21.561Z" fill="#F5F5F5"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,37 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dk7omm0x44suj"
|
||||||
|
path="res://.godot/imported/SceneTypesIcon.svg-66e2255bd3398007bec03a5cbfa4d0aa.ctex"
|
||||||
|
metadata={
|
||||||
|
"vram_texture": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://addons/phantom_camera/icons/viewfinder/SceneTypesIcon.svg"
|
||||||
|
dest_files=["res://.godot/imported/SceneTypesIcon.svg-66e2255bd3398007bec03a5cbfa4d0aa.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=0
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=0
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=false
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=0
|
||||||
|
roughness/src_normal=""
|
||||||
|
process/fix_alpha_border=true
|
||||||
|
process/premult_alpha=false
|
||||||
|
process/normal_map_invert_y=false
|
||||||
|
process/hdr_as_srgb=false
|
||||||
|
process/hdr_clamp_exposure=false
|
||||||
|
process/size_limit=0
|
||||||
|
detect_3d/compress_to=1
|
||||||
|
svg/scale=1.0
|
||||||
|
editor/scale_with_editor_scale=false
|
||||||
|
editor/convert_colors_with_editor_theme=false
|
|
@ -0,0 +1,46 @@
|
||||||
|
@tool
|
||||||
|
extends EditorInspectorPlugin
|
||||||
|
|
||||||
|
#var _phantom_camera_script: Script = preload("res://addons/phantom_camera/scripts/phantom_camera.gd")
|
||||||
|
|
||||||
|
|
||||||
|
# TODO - Enable again once work is resumed for inspector based tasks
|
||||||
|
|
||||||
|
#func _can_handle(object) -> bool:
|
||||||
|
# return object is _phantom_camera_script
|
||||||
|
|
||||||
|
|
||||||
|
func _parse_category(object: Object, category: String) -> void:
|
||||||
|
|
||||||
|
var _margin_container: MarginContainer = MarginContainer.new()
|
||||||
|
var _margin_v: float = 20
|
||||||
|
_margin_container.add_theme_constant_override("margin_left", 10)
|
||||||
|
_margin_container.add_theme_constant_override("margin_top", _margin_v)
|
||||||
|
_margin_container.add_theme_constant_override("margin_right", 10)
|
||||||
|
_margin_container.add_theme_constant_override("margin_bottom", _margin_v)
|
||||||
|
add_custom_control(_margin_container)
|
||||||
|
|
||||||
|
var _vbox_container: VBoxContainer = VBoxContainer.new()
|
||||||
|
_margin_container.add_child(_vbox_container)
|
||||||
|
|
||||||
|
var align_with_view_button = Button.new()
|
||||||
|
align_with_view_button.connect("pressed", _align_camera_with_view.bind(object))
|
||||||
|
align_with_view_button.set_custom_minimum_size(Vector2(0, 60))
|
||||||
|
align_with_view_button.set_text("Align with view")
|
||||||
|
_vbox_container.add_child(align_with_view_button)
|
||||||
|
|
||||||
|
var preview_camera_button = Button.new()
|
||||||
|
preview_camera_button.connect("pressed", _preview_camera.bind(object))
|
||||||
|
preview_camera_button.set_custom_minimum_size(Vector2(0, 60))
|
||||||
|
preview_camera_button.set_text("Preview Camera")
|
||||||
|
_vbox_container.add_child(preview_camera_button)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _align_camera_with_view(object: Object) -> void:
|
||||||
|
print("Aligning camera with view")
|
||||||
|
print(object)
|
||||||
|
|
||||||
|
func _preview_camera(object: Object) -> void:
|
||||||
|
print("Previewing camera")
|
||||||
|
print(object)
|
|
@ -0,0 +1,11 @@
|
||||||
|
@tool
|
||||||
|
extends VBoxContainer
|
||||||
|
|
||||||
|
var editor_plugin: EditorPlugin
|
||||||
|
|
||||||
|
@onready var updater: Control = %UpdateButton
|
||||||
|
@onready var viewfinder: Control = %ViewfinderPanel
|
||||||
|
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
updater.editor_plugin = editor_plugin
|
|
@ -0,0 +1,23 @@
|
||||||
|
[gd_scene load_steps=4 format=3 uid="uid://cfdoaceoosi1w"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://addons/phantom_camera/panel/editor.gd" id="1_86hp7"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cuqkqsp3ikv5u" path="res://addons/phantom_camera/panel/updater/update_button.tscn" id="1_oowcd"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://dbkr3d716wtx0" path="res://addons/phantom_camera/panel/viewfinder/viewfinder_panel.tscn" id="2_xecnk"]
|
||||||
|
|
||||||
|
[node name="EditorPanel" type="VBoxContainer"]
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_86hp7")
|
||||||
|
|
||||||
|
[node name="UpdateButton" parent="." instance=ExtResource("1_oowcd")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
size_flags_horizontal = 8
|
||||||
|
size_flags_vertical = 1
|
||||||
|
|
||||||
|
[node name="ViewfinderPanel" parent="." instance=ExtResource("2_xecnk")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
|
@ -0,0 +1,253 @@
|
||||||
|
[gd_scene load_steps=15 format=3 uid="uid://b25fl4usw0nlp"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/panel/updater/download_update_panel.gd" id="1_sx5xq"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cc0wmici0eic8" path="res://addons/phantom_camera/icons/phantom_camera_logo.png" id="2_f3yo7"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="3_h8uk3"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://dve7mgsjik4dg" path="res://addons/phantom_camera/fonts/Nunito-Regular.ttf" id="4_gwh4i"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://censw3w53gldn" path="res://addons/phantom_camera/assets/PhantomCameraBtnPrimaryDefault.png" id="5_bonti"]
|
||||||
|
|
||||||
|
[sub_resource type="ImageTexture" id="ImageTexture_sjwi2"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_insma"]
|
||||||
|
bg_color = Color(0.0190018, 0.21903, 0.16997, 1)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.0980392, 0.572549, 0.458824, 1)
|
||||||
|
border_blend = true
|
||||||
|
corner_radius_bottom_right = 12
|
||||||
|
corner_radius_bottom_left = 12
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8m63d"]
|
||||||
|
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.105882, 0.619608, 0.498039, 1)
|
||||||
|
corner_radius_bottom_right = 12
|
||||||
|
corner_radius_bottom_left = 12
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_yn22d"]
|
||||||
|
bg_color = Color(0.0117647, 0.164706, 0.12549, 1)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.0980392, 0.572549, 0.458824, 1)
|
||||||
|
border_blend = true
|
||||||
|
corner_radius_bottom_right = 12
|
||||||
|
corner_radius_bottom_left = 12
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_djsbc"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_xtrn6"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_o12j0"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_buptb"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_g3tf0"]
|
||||||
|
|
||||||
|
[node name="DownloadUpdatePanel" type="Control"]
|
||||||
|
custom_minimum_size = Vector2(300, 350)
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
offset_bottom = -61.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
script = ExtResource("1_sx5xq")
|
||||||
|
|
||||||
|
[node name="DownloadHTTPRequest" type="HTTPRequest" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="Timer" type="Timer" parent="DownloadHTTPRequest"]
|
||||||
|
one_shot = true
|
||||||
|
|
||||||
|
[node name="VBox" type="VBoxContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_constants/separation = 2
|
||||||
|
|
||||||
|
[node name="VBoxContainer2" type="VBoxContainer" parent="VBox"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = -20
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="VBox/VBoxContainer2"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/margin_top = 12
|
||||||
|
|
||||||
|
[node name="Logo" type="TextureRect" parent="VBox/VBoxContainer2/MarginContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
clip_contents = true
|
||||||
|
custom_minimum_size = Vector2(300, 160)
|
||||||
|
layout_mode = 2
|
||||||
|
texture = ExtResource("2_f3yo7")
|
||||||
|
expand_mode = 3
|
||||||
|
stretch_mode = 5
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="VBox/VBoxContainer2"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/separation = -5
|
||||||
|
|
||||||
|
[node name="NameLabel" type="Label" parent="VBox/VBoxContainer2/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("3_h8uk3")
|
||||||
|
theme_override_font_sizes/font_size = 32
|
||||||
|
text = "Phantom Camera"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
[node name="DownloadVersionLabel" type="Label" parent="VBox/VBoxContainer2/VBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("4_gwh4i")
|
||||||
|
theme_override_font_sizes/font_size = 18
|
||||||
|
text = "v1.2.3 is available for download."
|
||||||
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
[node name="CurrentVersionLabel" type="Label" parent="VBox"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_fonts/font = ExtResource("4_gwh4i")
|
||||||
|
text = "Current version: 0.0.0"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
|
||||||
|
[node name="Center2" type="CenterContainer" parent="VBox"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="NotesButton" type="LinkButton" parent="VBox/Center2"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.917647, 0.631373, 0.368627, 1)
|
||||||
|
theme_override_colors/font_hover_color = Color(0.721569, 0.454902, 0.192157, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("3_h8uk3")
|
||||||
|
theme_override_font_sizes/font_size = 18
|
||||||
|
text = "Release Notes"
|
||||||
|
|
||||||
|
[node name="Center" type="CenterContainer" parent="VBox"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="VBox/Center"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="BreakingLabel" type="Label" parent="VBox/Center/VBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_colors/font_color = Color(0.72549, 0.227451, 0.34902, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("3_h8uk3")
|
||||||
|
theme_override_font_sizes/font_size = 18
|
||||||
|
text = "Potential Breaking Changes
|
||||||
|
in new release"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
uppercase = true
|
||||||
|
|
||||||
|
[node name="BreakingMarginContainer" type="MarginContainer" parent="VBox/Center/VBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="VBox/Center/VBoxContainer/BreakingMarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="RichTextLabel2" type="RichTextLabel" parent="VBox/Center/VBoxContainer/BreakingMarginContainer/VBoxContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_fonts/normal_font = ExtResource("4_gwh4i")
|
||||||
|
theme_override_fonts/bold_font = ExtResource("3_h8uk3")
|
||||||
|
theme_override_fonts/mono_font = ExtResource("3_h8uk3")
|
||||||
|
theme_override_font_sizes/normal_font_size = 18
|
||||||
|
theme_override_font_sizes/bold_font_size = 14
|
||||||
|
theme_override_font_sizes/mono_font_size = 12
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[center][b]I am prepared for any breaking
|
||||||
|
changes that may occur from this update[/b][/center]"
|
||||||
|
fit_content = true
|
||||||
|
|
||||||
|
[node name="BreakingOptionButton" type="OptionButton" parent="VBox/Center/VBoxContainer/BreakingMarginContainer/VBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
visible = false
|
||||||
|
layout_mode = 2
|
||||||
|
mouse_default_cursor_shape = 2
|
||||||
|
theme_override_fonts/font = ExtResource("3_h8uk3")
|
||||||
|
theme_override_font_sizes/font_size = 18
|
||||||
|
theme_override_icons/arrow = SubResource("ImageTexture_sjwi2")
|
||||||
|
theme_override_styles/normal = SubResource("StyleBoxFlat_insma")
|
||||||
|
theme_override_styles/hover = SubResource("StyleBoxFlat_8m63d")
|
||||||
|
theme_override_styles/pressed = SubResource("StyleBoxFlat_yn22d")
|
||||||
|
alignment = 1
|
||||||
|
item_count = 2
|
||||||
|
selected = 0
|
||||||
|
popup/item_0/text = "Confirm choice"
|
||||||
|
popup/item_0/id = 0
|
||||||
|
popup/item_1/text = "Yes, I am prepared"
|
||||||
|
popup/item_1/id = 1
|
||||||
|
|
||||||
|
[node name="DownloadButton" type="Button" parent="VBox/Center/VBoxContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
custom_minimum_size = Vector2(240, 90)
|
||||||
|
layout_mode = 2
|
||||||
|
mouse_default_cursor_shape = 2
|
||||||
|
theme_override_styles/normal = SubResource("StyleBoxEmpty_djsbc")
|
||||||
|
theme_override_styles/hover = SubResource("StyleBoxEmpty_xtrn6")
|
||||||
|
theme_override_styles/pressed = SubResource("StyleBoxEmpty_o12j0")
|
||||||
|
theme_override_styles/disabled = SubResource("StyleBoxEmpty_buptb")
|
||||||
|
theme_override_styles/focus = SubResource("StyleBoxEmpty_g3tf0")
|
||||||
|
|
||||||
|
[node name="DownloadButtonBG" type="NinePatchRect" parent="VBox/Center/VBoxContainer/DownloadButton"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
texture = ExtResource("5_bonti")
|
||||||
|
patch_margin_left = 38
|
||||||
|
patch_margin_top = 37
|
||||||
|
patch_margin_right = 38
|
||||||
|
patch_margin_bottom = 39
|
||||||
|
|
||||||
|
[node name="UpdateLabel" type="Label" parent="VBox/Center/VBoxContainer/DownloadButton"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 14
|
||||||
|
anchor_top = 0.5
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 0.5
|
||||||
|
offset_top = -14.5
|
||||||
|
offset_bottom = 14.5
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
theme_override_colors/font_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||||
|
theme_override_colors/font_shadow_color = Color(0, 0, 0, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("3_h8uk3")
|
||||||
|
theme_override_font_sizes/font_size = 20
|
||||||
|
text = "Update"
|
||||||
|
horizontal_alignment = 1
|
||||||
|
uppercase = true
|
||||||
|
|
||||||
|
[node name="MarginContainer" type="MarginContainer" parent="VBox"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_constants/margin_top = 10
|
||||||
|
|
||||||
|
[node name="RichTextLabel" type="RichTextLabel" parent="VBox/MarginContainer"]
|
||||||
|
layout_mode = 2
|
||||||
|
theme_override_fonts/normal_font = ExtResource("4_gwh4i")
|
||||||
|
theme_override_fonts/mono_font = ExtResource("3_h8uk3")
|
||||||
|
theme_override_font_sizes/normal_font_size = 12
|
||||||
|
theme_override_font_sizes/mono_font_size = 12
|
||||||
|
bbcode_enabled = true
|
||||||
|
text = "[center]The updater can be disabled within:
|
||||||
|
[code]Project Settings / Phantom Camera / Updater / Enable Updater[/code][/center]"
|
||||||
|
fit_content = true
|
||||||
|
|
||||||
|
[connection signal="pressed" from="VBox/Center2/NotesButton" to="." method="_on_notes_button_pressed"]
|
|
@ -0,0 +1,101 @@
|
||||||
|
[gd_scene load_steps=10 format=3 uid="uid://cuqkqsp3ikv5u"]
|
||||||
|
|
||||||
|
[ext_resource type="FontFile" uid="uid://c4mm3of2mc8o5" path="res://addons/phantom_camera/fonts/Nunito-Black.ttf" id="1_5e5k4"]
|
||||||
|
[ext_resource type="Script" path="res://addons/phantom_camera/scripts/panel/updater/update_button.gd" id="1_xtaw5"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://d4j4hrb7yusyq" path="res://addons/phantom_camera/icons/phantom_camera_updater_panel_icon.svg" id="2_c4d83"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://b25fl4usw0nlp" path="res://addons/phantom_camera/panel/updater/download_update_panel.tscn" id="2_vtgcx"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c7fd1"]
|
||||||
|
content_margin_left = 10.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 10.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.0980392, 0.415686, 0.341176, 1)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||||
|
corner_radius_top_left = 20
|
||||||
|
corner_radius_top_right = 20
|
||||||
|
corner_radius_bottom_right = 20
|
||||||
|
corner_radius_bottom_left = 20
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_y83dj"]
|
||||||
|
content_margin_left = 10.0
|
||||||
|
content_margin_top = 4.0
|
||||||
|
content_margin_right = 10.0
|
||||||
|
content_margin_bottom = 4.0
|
||||||
|
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||||
|
corner_radius_top_left = 20
|
||||||
|
corner_radius_top_right = 20
|
||||||
|
corner_radius_bottom_right = 20
|
||||||
|
corner_radius_bottom_left = 20
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_slf6e"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_lekqh"]
|
||||||
|
|
||||||
|
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_dr4n4"]
|
||||||
|
content_margin_bottom = 20.0
|
||||||
|
bg_color = Color(0.0784314, 0.109804, 0.129412, 1)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||||
|
|
||||||
|
[node name="UpdateButton" type="Button"]
|
||||||
|
visible = false
|
||||||
|
offset_left = 1.0
|
||||||
|
offset_right = 149.0
|
||||||
|
offset_bottom = 28.0
|
||||||
|
size_flags_vertical = 3
|
||||||
|
theme_override_colors/font_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||||
|
theme_override_colors/font_hover_color = Color(0.939288, 0.917743, 0.892615, 1)
|
||||||
|
theme_override_colors/icon_normal_color = Color(0.960784, 0.960784, 0.960784, 1)
|
||||||
|
theme_override_fonts/font = ExtResource("1_5e5k4")
|
||||||
|
theme_override_font_sizes/font_size = 14
|
||||||
|
theme_override_styles/normal = SubResource("StyleBoxFlat_c7fd1")
|
||||||
|
theme_override_styles/hover = SubResource("StyleBoxFlat_y83dj")
|
||||||
|
theme_override_styles/pressed = SubResource("StyleBoxEmpty_slf6e")
|
||||||
|
theme_override_styles/focus = SubResource("StyleBoxEmpty_lekqh")
|
||||||
|
text = "Update available"
|
||||||
|
icon = ExtResource("2_c4d83")
|
||||||
|
script = ExtResource("1_xtaw5")
|
||||||
|
|
||||||
|
[node name="HTTPRequest" type="HTTPRequest" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="DownloadDialog" type="AcceptDialog" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transparent_bg = true
|
||||||
|
title = "New Update"
|
||||||
|
initial_position = 2
|
||||||
|
size = Vector2i(450, 480)
|
||||||
|
transient = false
|
||||||
|
unresizable = true
|
||||||
|
borderless = true
|
||||||
|
keep_title_visible = false
|
||||||
|
content_scale_mode = 1
|
||||||
|
theme_override_constants/buttons_separation = 30
|
||||||
|
theme_override_styles/panel = SubResource("StyleBoxFlat_dr4n4")
|
||||||
|
ok_button_text = "Close"
|
||||||
|
|
||||||
|
[node name="DownloadUpdatePanel" parent="DownloadDialog" instance=ExtResource("2_vtgcx")]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
offset_left = 2.0
|
||||||
|
offset_top = 2.0
|
||||||
|
offset_right = -2.0
|
||||||
|
offset_bottom = -80.0
|
||||||
|
|
||||||
|
[node name="NeedsReloadDialog" type="ConfirmationDialog" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
[node name="UpdateFailedDialog" type="AcceptDialog" parent="."]
|
||||||
|
unique_name_in_owner = true
|
|
@ -0,0 +1,14 @@
|
||||||
|
[gd_resource type="StyleBoxFlat" format=3 uid="uid://dpa7yvxlq043a"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
bg_color = Color(0.227451, 0.72549, 0.603922, 0.2)
|
||||||
|
border_width_left = 2
|
||||||
|
border_width_top = 2
|
||||||
|
border_width_right = 2
|
||||||
|
border_width_bottom = 2
|
||||||
|
border_color = Color(0.227451, 0.72549, 0.603922, 1)
|
||||||
|
corner_detail = 1
|
||||||
|
expand_margin_left = 1.0
|
||||||
|
expand_margin_top = 1.0
|
||||||
|
expand_margin_right = 1.0
|
||||||
|
expand_margin_bottom = 1.0
|