Add PhantomCamera nodes
|  | @ -36,6 +36,9 @@ public sealed partial class Player : Character | |||
|     [Export] | ||||
|     public PlayerCamera Camera { get; set; } | ||||
| 
 | ||||
|     [Export] | ||||
|     public GodotObject PCamera { get; set; } | ||||
| 
 | ||||
|     [Export] | ||||
|     public Marker2D DirectionMarker { get; private set; } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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="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="Texture2D" uid="uid://bd8l8kafb42dt" path="res://Assets/Sprites/Particles/circle.png" id="22_uefct"] | ||||
| [ext_resource type="Texture2D" uid="uid://bcgm3r168qjn3" path="res://Assets/Sprites/Particles/cast-effect.png" id="24_njn4h"] | ||||
| [ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_2d.gd" id="27_mndpv"] | ||||
| [ext_resource type="Script" path="res://addons/phantom_camera/scripts/resources/tween_resource.gd" id="28_6gq8l"] | ||||
| [ext_resource type="Script" path="res://Items/PlayerInventory.cs" id="30_y2wmw"] | ||||
| [ext_resource type="PackedScene" uid="uid://cgg0sfm2qeiwn" path="res://Items/Weapons/Bow.tscn" id="31_mofvy"] | ||||
| [ext_resource type="PackedScene" uid="uid://dvqap2uhcah63" path="res://Items/Weapons/Sword.tscn" id="31_ql4as"] | ||||
|  | @ -44,6 +46,12 @@ shader_parameter/color = Vector4(1, 1, 1, 1) | |||
| shader_parameter/intensity = 0.0 | ||||
| shader_parameter/alpha_modulate = 1.0 | ||||
| 
 | ||||
| [sub_resource type="Resource" id="Resource_535hq"] | ||||
| script = ExtResource("28_6gq8l") | ||||
| duration = 1.0 | ||||
| transition = 0 | ||||
| ease = 2 | ||||
| 
 | ||||
| [sub_resource type="Animation" id="Animation_imqdv"] | ||||
| length = 0.001 | ||||
| tracks/0/type = "value" | ||||
|  | @ -594,6 +602,15 @@ StateMachine = NodePath("StateMachine") | |||
| Hurtbox = NodePath("Hurtbox") | ||||
| Faction = 1 | ||||
| 
 | ||||
| [node name="PCamera" type="Node2D" parent="."] | ||||
| script = ExtResource("27_mndpv") | ||||
| priority = 1 | ||||
| follow_mode = 2 | ||||
| zoom = Vector2(4, 4) | ||||
| tween_resource = SubResource("Resource_535hq") | ||||
| tween_on_load = false | ||||
| draw_limits = true | ||||
| 
 | ||||
| [node name="Stats" type="Node" parent="."] | ||||
| script = ExtResource("4_06oya") | ||||
| 
 | ||||
|  | @ -765,6 +782,7 @@ stream = ExtResource("12_vvem5") | |||
| unique_name_in_owner = true | ||||
| 
 | ||||
| [node name="Camera2D" parent="." instance=ExtResource("4_ym125")] | ||||
| enabled = false | ||||
| zoom = Vector2(4, 4) | ||||
| position_smoothing_speed = 8.0 | ||||
| 
 | ||||
|  |  | |||
|  | @ -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="PackedScene" uid="uid://c271rdjhd1gfo" path="res://UI/Base.tscn" id="2_mm0qt"] | ||||
| [ext_resource type="Script" path="res://addons/phantom_camera/scripts/phantom_camera_host/phantom_camera_host.gd" id="3_ge4f0"] | ||||
| 
 | ||||
| [node name="World" type="Node2D" node_paths=PackedStringArray("MusicPlayer")] | ||||
| process_mode = 3 | ||||
|  | @ -24,3 +25,8 @@ mouse_filter = 2 | |||
| 
 | ||||
| [node name="MusicPlayer" type="AudioStreamPlayer" parent="."] | ||||
| bus = &"Music" | ||||
| 
 | ||||
| [node name="Camera2D" type="Camera2D" parent="."] | ||||
| 
 | ||||
| [node name="PhantomCameraHost" type="Node" parent="Camera2D"] | ||||
| script = ExtResource("3_ge4f0") | ||||
|  |  | |||
| 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 | ||||