Compare commits
9 Commits
2548d5128e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e597b86212 | ||
|
|
3684788237 | ||
|
|
1c9d43a5f7 | ||
|
|
a7737b10e0 | ||
|
|
a66f4c95cc | ||
|
|
6b6ca53fbf | ||
|
|
53254ab87b | ||
|
|
606e203b93 | ||
|
|
6f92ab851f |
@@ -29,16 +29,28 @@ func _input(event: InputEvent) -> void:
|
|||||||
|
|
||||||
match event.keycode:
|
match event.keycode:
|
||||||
KEY_PAGEUP:
|
KEY_PAGEUP:
|
||||||
terminal.ScrollUp()
|
terminal.call_deferred("ScrollUp")
|
||||||
|
|
||||||
KEY_PAGEDOWN:
|
KEY_PAGEDOWN:
|
||||||
terminal.ScrollDown()
|
terminal.call_deferred("ScrollDown")
|
||||||
|
|
||||||
KEY_BACKSPACE:
|
KEY_BACKSPACE:
|
||||||
terminal.InputDelChar()
|
terminal.InputDelChar()
|
||||||
|
|
||||||
KEY_ENTER:
|
KEY_ENTER:
|
||||||
terminal.EnterCommand()
|
terminal.EnterCommand()
|
||||||
|
|
||||||
|
KEY_UP:
|
||||||
|
terminal.NavigateHistory(1)
|
||||||
|
|
||||||
|
KEY_DOWN:
|
||||||
|
terminal.NavigateHistory(-1)
|
||||||
|
|
||||||
|
KEY_LEFT:
|
||||||
|
terminal.MoveCursorLeft()
|
||||||
|
|
||||||
|
KEY_RIGHT:
|
||||||
|
terminal.MoveCursorRight()
|
||||||
|
|
||||||
if event.unicode > 31:
|
if event.unicode > 31:
|
||||||
var character = char(event.unicode)
|
var character = char(event.unicode)
|
||||||
|
|||||||
@@ -4,8 +4,15 @@ class_name TerminalControls
|
|||||||
@onready var historyContainer = $MarginContainer/ScrollContainer/VBoxContainer
|
@onready var historyContainer = $MarginContainer/ScrollContainer/VBoxContainer
|
||||||
@onready var caret = $MarginContainer/ScrollContainer/VBoxContainer/Label/Caret
|
@onready var caret = $MarginContainer/ScrollContainer/VBoxContainer/Label/Caret
|
||||||
@onready var blink_timer = $MarginContainer/ScrollContainer/VBoxContainer/Label/CaretTimer
|
@onready var blink_timer = $MarginContainer/ScrollContainer/VBoxContainer/Label/CaretTimer
|
||||||
|
@onready var ruler: Label = $"caret-ruler"
|
||||||
|
@onready var scroll: ScrollContainer = $MarginContainer/ScrollContainer
|
||||||
@export var terminalLine: RichTextLabel
|
@export var terminalLine: RichTextLabel
|
||||||
|
|
||||||
|
var terminalHistory: Array[String] = []
|
||||||
|
var historyIndex: int = -1
|
||||||
|
|
||||||
|
var cursorIndexFromEnd: int = 0
|
||||||
|
|
||||||
var command: String
|
var command: String
|
||||||
var directory: String = "~/"
|
var directory: String = "~/"
|
||||||
var fileSystem: Dictionary = {
|
var fileSystem: Dictionary = {
|
||||||
@@ -32,7 +39,7 @@ func _ready() -> void:
|
|||||||
func _on_caret_timer_timeout() -> void:
|
func _on_caret_timer_timeout() -> void:
|
||||||
caret.visible = !caret.visible
|
caret.visible = !caret.visible
|
||||||
|
|
||||||
func reset_blink() -> void:
|
func ResetBlink() -> void:
|
||||||
caret.visible = true
|
caret.visible = true
|
||||||
blink_timer.start() # Resets the countdown
|
blink_timer.start() # Resets the countdown
|
||||||
|
|
||||||
@@ -40,18 +47,37 @@ func reset_blink() -> void:
|
|||||||
func InputChar(input) -> void:
|
func InputChar(input) -> void:
|
||||||
if input == null:
|
if input == null:
|
||||||
return
|
return
|
||||||
else:
|
|
||||||
command = input
|
var fullText = terminalLine.text
|
||||||
terminalLine.text += command
|
var insertPos = fullText.length() - cursorIndexFromEnd
|
||||||
UpdateCaretPos()
|
|
||||||
await get_tree().create_timer(.01).timeout
|
var before = fullText.left(insertPos)
|
||||||
reset_blink()
|
var after = fullText.right(cursorIndexFromEnd)
|
||||||
|
|
||||||
|
terminalLine.text = before + input + after
|
||||||
|
|
||||||
|
UpdateCaretPos()
|
||||||
|
|
||||||
|
await get_tree().physics_frame
|
||||||
|
ResetBlink()
|
||||||
|
|
||||||
func InputDelChar() -> void:
|
func InputDelChar() -> void:
|
||||||
if terminalLine.text.length() > ("user@work " + directory).length() + 1:
|
var minLength = ("user@work " + directory).length() + 1
|
||||||
terminalLine.text = terminalLine.text.left(-1)
|
if terminalLine.text.length() <= minLength:
|
||||||
|
return
|
||||||
|
|
||||||
|
var fullText = terminalLine.text
|
||||||
|
var deletePos = fullText.length() - cursorIndexFromEnd
|
||||||
|
|
||||||
|
if deletePos > minLength:
|
||||||
|
var before = fullText.left(deletePos - 1)
|
||||||
|
var after = fullText.right(cursorIndexFromEnd)
|
||||||
|
|
||||||
|
terminalLine.text = before + after
|
||||||
UpdateCaretPos()
|
UpdateCaretPos()
|
||||||
await get_tree().create_timer(.01).timeout
|
|
||||||
reset_blink()
|
await get_tree().physics_frame
|
||||||
|
ResetBlink()
|
||||||
|
|
||||||
func EnterCommand() -> void:
|
func EnterCommand() -> void:
|
||||||
var fullText = terminalLine.text
|
var fullText = terminalLine.text
|
||||||
@@ -60,6 +86,11 @@ func EnterCommand() -> void:
|
|||||||
|
|
||||||
if historyContainer.get_child_count() <24:
|
if historyContainer.get_child_count() <24:
|
||||||
CreateHistoryEntry(fullText)
|
CreateHistoryEntry(fullText)
|
||||||
|
|
||||||
|
if userInput != "":
|
||||||
|
terminalHistory.append(userInput)
|
||||||
|
historyIndex = terminalHistory.size()
|
||||||
|
cursorIndexFromEnd = 0
|
||||||
|
|
||||||
match parts[0]:
|
match parts[0]:
|
||||||
"ls", "list":
|
"ls", "list":
|
||||||
@@ -70,8 +101,13 @@ func EnterCommand() -> void:
|
|||||||
currentDirData = GetDirAtPath(directory)
|
currentDirData = GetDirAtPath(directory)
|
||||||
if currentDirData is Dictionary:
|
if currentDirData is Dictionary:
|
||||||
var list = ""
|
var list = ""
|
||||||
|
var file: String
|
||||||
for key in currentDirData.keys():
|
for key in currentDirData.keys():
|
||||||
list += key + " "
|
file = key
|
||||||
|
if file.ends_with(".txt"):
|
||||||
|
list += key + " "
|
||||||
|
else:
|
||||||
|
list += key + "/ "
|
||||||
CreateHistoryEntry(list)
|
CreateHistoryEntry(list)
|
||||||
else:
|
else:
|
||||||
CreateHistoryEntry("error: Directory not found")
|
CreateHistoryEntry("error: Directory not found")
|
||||||
@@ -108,39 +144,67 @@ func EnterCommand() -> void:
|
|||||||
UpdateCaretPos()
|
UpdateCaretPos()
|
||||||
GetBottomScroll()
|
GetBottomScroll()
|
||||||
|
|
||||||
|
|
||||||
|
func MoveCursorLeft():
|
||||||
|
var fullText = terminalLine.get_parsed_text()
|
||||||
|
var lastNewlinePos = fullText.rfind("\n")
|
||||||
|
|
||||||
|
# The prompt starts after the last newline (or at 0 if it's the first line)
|
||||||
|
var promptStartIndex = lastNewlinePos + 1 if lastNewlinePos != -1 else 0
|
||||||
|
var promptLength = ("user@work " + directory + " ").length()
|
||||||
|
|
||||||
|
# The absolute index we aren't allowed to go before
|
||||||
|
var minAllowedIndex = promptStartIndex + promptLength
|
||||||
|
|
||||||
|
# Calculate current target index
|
||||||
|
var currentTarget = fullText.length() - cursorIndexFromEnd
|
||||||
|
|
||||||
|
if currentTarget > minAllowedIndex:
|
||||||
|
cursorIndexFromEnd += 1
|
||||||
|
UpdateCaretPos()
|
||||||
|
ResetBlink()
|
||||||
|
|
||||||
|
func MoveCursorRight():
|
||||||
|
|
||||||
|
cursorIndexFromEnd = clampi(cursorIndexFromEnd - 1, 0, terminalLine.text.length())
|
||||||
|
|
||||||
|
UpdateCaretPos()
|
||||||
|
ResetBlink()
|
||||||
|
|
||||||
# --- History and FileSystem Helpers ---
|
# --- History and FileSystem Helpers ---
|
||||||
|
|
||||||
|
func NavigateHistory(direction: int):
|
||||||
|
if terminalHistory.is_empty():
|
||||||
|
return
|
||||||
|
|
||||||
|
historyIndex -= direction
|
||||||
|
|
||||||
|
if historyIndex >= terminalHistory.size():
|
||||||
|
historyIndex = terminalHistory.size()
|
||||||
|
terminalLine.text = "user@work "+ directory + " "
|
||||||
|
else:
|
||||||
|
historyIndex = clamp(historyIndex, 0, terminalHistory.size() - 1)
|
||||||
|
var historyCommand = terminalHistory[historyIndex]
|
||||||
|
terminalLine.text = "user@work "+ directory + " " + historyCommand
|
||||||
|
|
||||||
|
UpdateCaretPos()
|
||||||
|
|
||||||
func CreateHistoryEntry(content: String) -> void:
|
func CreateHistoryEntry(content: String) -> void:
|
||||||
# var label = Label.new()
|
|
||||||
# label.text = content
|
|
||||||
# label.label_settings = LabelSettings.new()
|
|
||||||
# label.label_settings.font_size = 42
|
|
||||||
# label.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
|
||||||
# label.custom_minimum_size = Vector2(1400, 0)
|
|
||||||
#
|
|
||||||
#if terminalLine.text.length() > 200:
|
|
||||||
#for child in historyContainer.get_children():
|
|
||||||
#if child != terminalLine:
|
|
||||||
#child.queue_free()
|
|
||||||
# historyContainer.add_child(label)
|
|
||||||
# historyContainer.move_child(label, historyContainer.get_child_count() - 2)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var rtl = RichTextLabel.new()
|
var rtl = RichTextLabel.new()
|
||||||
rtl.bbcode_enabled = true
|
rtl.bbcode_enabled = true
|
||||||
rtl.fit_content = true # Important for VBoxContainer
|
rtl.fit_content = true
|
||||||
rtl.text = content
|
rtl.text = content
|
||||||
rtl.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
rtl.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||||
rtl.custom_minimum_size = Vector2(1400, 0)
|
rtl.custom_minimum_size = Vector2(1400, 0)
|
||||||
rtl.add_theme_font_size_override("normal_font_size", 42)
|
rtl.add_theme_font_size_override("normal_font_size", 42)
|
||||||
|
|
||||||
# Optional: Set a theme or font override here
|
|
||||||
# rtl.add_theme_font_size_override("normal_font_size", 42)
|
|
||||||
|
|
||||||
historyContainer.add_child(rtl)
|
historyContainer.add_child(rtl)
|
||||||
# Moves the entry above the input line
|
|
||||||
historyContainer.move_child(rtl, historyContainer.get_child_count() - 2)
|
historyContainer.move_child(rtl, historyContainer.get_child_count() - 2)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func ResolvePath(current: String, target: String) -> String:
|
func ResolvePath(current: String, target: String) -> String:
|
||||||
if target.begins_with("~/"):
|
if target.begins_with("~/"):
|
||||||
return target if target.ends_with("/") else target + "/"
|
return target if target.ends_with("/") else target + "/"
|
||||||
@@ -202,60 +266,57 @@ func RetrieveData(inputPath: String):
|
|||||||
|
|
||||||
func Help(commandName: String = "default"):
|
func Help(commandName: String = "default"):
|
||||||
match commandName:
|
match commandName:
|
||||||
"default": CreateHistoryEntry("--- AVAILABLE COMMANDS ---
|
"default": CreateHistoryEntry("--- AVAILABLE COMMANDS --- \n
|
||||||
ls (or list) [folder] : List all files and directories/folders
|
ls (or list) [folder] ------------ : List all files and directories/folders
|
||||||
cd [folder] : Change directory (use '..' to go up a directory/folder)
|
cd [folder] ---------------------- : Change directory (use '..' to go up a directory/folder)
|
||||||
cat (or view) [file] : Read the contents of a file
|
cat (or view) [file] ------------- : Read the contents of a file
|
||||||
clear (or cls) : Clear the terminal screen
|
clear (or cls) ------------------- : Clear the terminal screen
|
||||||
help : Show this menu
|
help ----------------------------- : Show this menu
|
||||||
-------------------------")
|
\n
|
||||||
|
")
|
||||||
|
|
||||||
func ScrollUp():
|
func ScrollUp():
|
||||||
#var scroll: ScrollContainer = $MarginContainer/ScrollContainer
|
|
||||||
|
|
||||||
#await get_tree().create_timer(.0001).timeout
|
await get_tree().physics_frame
|
||||||
#scroll.set_deferred("scroll_vertical", scroll.get_v_scroll_bar().value - 10 )
|
scroll.set_deferred("scroll_vertical", scroll.get_v_scroll_bar().value - 100 )
|
||||||
#call_deferred("ScrollUp")
|
|
||||||
|
|
||||||
var scrolli: RichTextLabel = $MarginContainer/ScrollContainer/VBoxContainer/Label
|
|
||||||
|
|
||||||
var scroll = scrolli.get_v_scroll_bar()
|
|
||||||
|
|
||||||
var tween: = create_tween()
|
|
||||||
tween.tween_property(scroll, "value", scroll.value - (scroll.page - scroll.page * 0.1), 0.1)
|
|
||||||
get_tree().get_root().set_input_as_handled()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func ScrollDown():
|
func ScrollDown():
|
||||||
var scroll: ScrollContainer = $MarginContainer/ScrollContainer
|
|
||||||
|
|
||||||
await get_tree().create_timer(.0001).timeout
|
|
||||||
scroll.set_deferred("scroll_vertical", scroll.get_v_scroll_bar().value + 10 )
|
|
||||||
call_deferred("ScrollDown")
|
|
||||||
|
|
||||||
|
await get_tree().physics_frame
|
||||||
|
scroll.set_deferred("scroll_vertical", scroll.get_v_scroll_bar().value + 100 )
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
func GetBottomScroll():
|
func GetBottomScroll():
|
||||||
var scroll: ScrollContainer = $MarginContainer/ScrollContainer
|
|
||||||
var scrollMax: float = scroll.get_v_scroll_bar().max_value
|
var scrollMax: float = scroll.get_v_scroll_bar().max_value
|
||||||
|
|
||||||
await get_tree().create_timer(.01).timeout
|
await get_tree().create_timer(.01).timeout
|
||||||
scroll.set_deferred("scroll_vertical", scrollMax)
|
scroll.set_deferred("scroll_vertical", scrollMax)
|
||||||
#scroll.vertical_scroll_mode = ScrollContainer.SCROLL_MODE_SHOW_NEVER
|
|
||||||
call_deferred("GetBottomScroll")
|
|
||||||
|
|
||||||
func UpdateCaretPos():
|
func UpdateCaretPos():
|
||||||
|
await get_tree().physics_frame
|
||||||
|
var visibleText = terminalLine.get_parsed_text()
|
||||||
|
|
||||||
await get_tree().create_timer(.01).timeout
|
ruler.text = visibleText
|
||||||
var visible_text = terminalLine.get_parsed_text()
|
ruler.custom_minimum_size.x = terminalLine.size.x
|
||||||
var ruler: Label = $"caret-ruler"
|
ruler.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||||
|
|
||||||
ruler.autowrap_mode =TextServer.AUTOWRAP_WORD_SMART
|
var totalLen = visibleText.length()
|
||||||
ruler.text = visible_text
|
var targetIndex = clampi(totalLen - cursorIndexFromEnd, 0, totalLen)
|
||||||
|
|
||||||
var last_char_index = ruler.text.length() - 1
|
|
||||||
var char_rect = ruler.get_character_bounds(max(0, last_char_index))
|
|
||||||
caret.position.x = char_rect.end.x + 1
|
|
||||||
caret.position.y = terminalLine.get_content_height() - 50
|
|
||||||
|
|
||||||
|
if totalLen == 0:
|
||||||
|
caret.position = Vector2.ZERO
|
||||||
|
return
|
||||||
|
|
||||||
|
var lastCharBounds = ruler.get_character_bounds(max(0, totalLen - 1))
|
||||||
|
var targetCharBounds = ruler.get_character_bounds(targetIndex)
|
||||||
|
|
||||||
|
if cursorIndexFromEnd == 0:
|
||||||
|
caret.position.x = lastCharBounds.end.x
|
||||||
|
caret.position.y = lastCharBounds.position.y
|
||||||
|
else:
|
||||||
|
caret.position.x = targetCharBounds.position.x
|
||||||
|
caret.position.y = targetCharBounds.position.y
|
||||||
|
|
||||||
|
caret.position.x += 1
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[gd_scene load_steps=23 format=3 uid="uid://cqtabc6coc58l"]
|
[gd_scene format=3 uid="uid://cqtabc6coc58l"]
|
||||||
|
|
||||||
[ext_resource type="Script" uid="uid://dmtpstry0o0a3" path="res://Assets/Scripts/Player Controls/player_movement.gd" id="1_48dl1"]
|
[ext_resource type="Script" uid="uid://dmtpstry0o0a3" path="res://Assets/Scripts/Player Controls/player_movement.gd" id="1_48dl1"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cbpsnsta7u3wl" path="res://Scenes/Special_Effects/PSX_style.tscn" id="2_gba58"]
|
[ext_resource type="PackedScene" uid="uid://cbpsnsta7u3wl" path="res://Scenes/Special_Effects/PSX_style.tscn" id="2_gba58"]
|
||||||
@@ -14,7 +14,6 @@
|
|||||||
background_mode = 1
|
background_mode = 1
|
||||||
background_color = Color(0.680932, 0.369129, 0.248985, 1)
|
background_color = Color(0.680932, 0.369129, 0.248985, 1)
|
||||||
background_energy_multiplier = 0.04
|
background_energy_multiplier = 0.04
|
||||||
ssr_enabled = true
|
|
||||||
ssao_enabled = true
|
ssao_enabled = true
|
||||||
ssao_radius = 6.6
|
ssao_radius = 6.6
|
||||||
ssao_intensity = 5.34
|
ssao_intensity = 5.34
|
||||||
@@ -27,8 +26,14 @@ sdfgi_enabled = true
|
|||||||
sdfgi_use_occlusion = true
|
sdfgi_use_occlusion = true
|
||||||
glow_enabled = true
|
glow_enabled = true
|
||||||
glow_normalized = true
|
glow_normalized = true
|
||||||
fog_light_energy = 15.32
|
fog_enabled = true
|
||||||
|
fog_light_energy = 0.87
|
||||||
|
fog_sun_scatter = 1.95
|
||||||
|
fog_density = 0.015
|
||||||
|
fog_height = -22.02
|
||||||
|
fog_height_density = 0.0195
|
||||||
volumetric_fog_density = 0.1974
|
volumetric_fog_density = 0.1974
|
||||||
|
volumetric_fog_emission_energy = 13.8
|
||||||
adjustment_enabled = true
|
adjustment_enabled = true
|
||||||
adjustment_brightness = 0.75
|
adjustment_brightness = 0.75
|
||||||
|
|
||||||
@@ -51,13 +56,13 @@ emission_shape = 3
|
|||||||
emission_box_extents = Vector3(1.49, 1.73, 2.42)
|
emission_box_extents = Vector3(1.49, 1.73, 2.42)
|
||||||
initial_velocity_min = 1.0
|
initial_velocity_min = 1.0
|
||||||
initial_velocity_max = 2.0
|
initial_velocity_max = 2.0
|
||||||
angular_velocity_min = 30.0
|
angular_velocity_min = 49.99998
|
||||||
angular_velocity_max = 60.0
|
angular_velocity_max = 49.99998
|
||||||
gravity = Vector3(0, 0, 0)
|
gravity = Vector3(0, 0, 0)
|
||||||
scale_curve = SubResource("CurveTexture_nmbs0")
|
scale_curve = SubResource("CurveTexture_nmbs0")
|
||||||
color_ramp = SubResource("GradientTexture1D_cx0fw")
|
color_ramp = SubResource("GradientTexture1D_cx0fw")
|
||||||
turbulence_enabled = true
|
turbulence_enabled = true
|
||||||
turbulence_noise_scale = 1.85
|
turbulence_noise_scale = 0.375
|
||||||
collision_mode = 1
|
collision_mode = 1
|
||||||
collision_friction = 1.0
|
collision_friction = 1.0
|
||||||
collision_bounce = 0.0
|
collision_bounce = 0.0
|
||||||
@@ -91,25 +96,25 @@ font_color = Color(0, 0, 0, 1)
|
|||||||
[sub_resource type="Theme" id="Theme_nmbs0"]
|
[sub_resource type="Theme" id="Theme_nmbs0"]
|
||||||
default_font_size = 42
|
default_font_size = 42
|
||||||
|
|
||||||
[node name="Node3D" type="Node3D"]
|
[node name="Node3D" type="Node3D" unique_id=1638198756]
|
||||||
|
|
||||||
[node name="PlayerController" type="Node3D" parent="."]
|
[node name="PlayerController" type="Node3D" parent="." unique_id=1986808415]
|
||||||
process_mode = 1
|
process_mode = 1
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.370835, 0, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.370835, 0, 0)
|
||||||
script = ExtResource("1_48dl1")
|
script = ExtResource("1_48dl1")
|
||||||
psxScene = ExtResource("2_gba58")
|
psxScene = ExtResource("2_gba58")
|
||||||
|
|
||||||
[node name="Camera3D" type="Camera3D" parent="PlayerController" node_paths=PackedStringArray("terminal")]
|
[node name="Camera3D" type="Camera3D" parent="PlayerController" unique_id=160035236 node_paths=PackedStringArray("terminal")]
|
||||||
transform = Transform3D(0.0188834, 0, -0.999822, 0, 1, 0, 0.999822, 0, 0.0188834, -0.0640411, 1.42725, 1.30117)
|
transform = Transform3D(0.0188834, 0, -0.999822, 0, 1, 0, 0.999822, 0, 0.0188834, -0.0640411, 1.42725, 1.30117)
|
||||||
fov = 45.2
|
fov = 45.2
|
||||||
near = 0.001
|
near = 0.001
|
||||||
script = ExtResource("2_vwrhx")
|
script = ExtResource("2_vwrhx")
|
||||||
terminal = NodePath("../../Interactables/PC/Sprite3D/SubViewport")
|
terminal = NodePath("../../Interactables/PC/Sprite3D/SubViewport")
|
||||||
|
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="PlayerController/Camera3D"]
|
[node name="CanvasLayer" type="CanvasLayer" parent="PlayerController/Camera3D" unique_id=672407600]
|
||||||
layer = 2
|
layer = 2
|
||||||
|
|
||||||
[node name="Control" type="Control" parent="PlayerController/Camera3D/CanvasLayer"]
|
[node name="Control" type="Control" parent="PlayerController/Camera3D/CanvasLayer" unique_id=462631869]
|
||||||
layout_mode = 3
|
layout_mode = 3
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
@@ -119,7 +124,7 @@ grow_vertical = 2
|
|||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
size_flags_vertical = 4
|
size_flags_vertical = 4
|
||||||
|
|
||||||
[node name="CrosshairCenter" type="CenterContainer" parent="PlayerController/Camera3D/CanvasLayer/Control"]
|
[node name="CrosshairCenter" type="CenterContainer" parent="PlayerController/Camera3D/CanvasLayer/Control" unique_id=1304360326]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = 8
|
anchors_preset = 8
|
||||||
@@ -135,40 +140,40 @@ grow_horizontal = 2
|
|||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
script = ExtResource("3_vwrhx")
|
script = ExtResource("3_vwrhx")
|
||||||
|
|
||||||
[node name="PauseMenu" type="CanvasLayer" parent="."]
|
[node name="PauseMenu" type="CanvasLayer" parent="." unique_id=1877883325]
|
||||||
|
|
||||||
[node name="CanvasLayer" type="CanvasLayer" parent="PauseMenu"]
|
[node name="CanvasLayer" type="CanvasLayer" parent="PauseMenu" unique_id=1881425996]
|
||||||
layer = 5
|
layer = 5
|
||||||
|
|
||||||
[node name="PauseMenu" parent="PauseMenu/CanvasLayer" instance=ExtResource("3_cx0fw")]
|
[node name="PauseMenu" parent="PauseMenu/CanvasLayer" unique_id=854219268 instance=ExtResource("3_cx0fw")]
|
||||||
process_mode = 3
|
process_mode = 3
|
||||||
z_index = 5
|
z_index = 5
|
||||||
|
|
||||||
[node name="security office_UwU" parent="." instance=ExtResource("4_vwrhx")]
|
[node name="security office_UwU" parent="." unique_id=1463044162 instance=ExtResource("4_vwrhx")]
|
||||||
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -6.54)
|
transform = Transform3D(-1, 0, -8.74228e-08, 0, 1, 0, 8.74228e-08, 0, -1, 0, 0, -6.54)
|
||||||
|
|
||||||
[node name="Lighting" type="Node3D" parent="."]
|
[node name="Lighting" type="Node3D" parent="." unique_id=1400238474]
|
||||||
|
|
||||||
[node name="OmniLight3D" type="OmniLight3D" parent="Lighting"]
|
[node name="OmniLight3D" type="OmniLight3D" parent="Lighting" unique_id=1346598309]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.894977, 0.0786453, 0.971773)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.894977, 0.0786453, 0.971773)
|
||||||
light_color = Color(0.558852, 0.138576, 0.131343, 1)
|
light_color = Color(0.558852, 0.138576, 0.131343, 1)
|
||||||
light_energy = 0.048
|
light_energy = 0.048
|
||||||
|
|
||||||
[node name="OmniLight3D2" type="OmniLight3D" parent="Lighting"]
|
[node name="OmniLight3D2" type="OmniLight3D" parent="Lighting" unique_id=1151573255]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.982613, 0.0786453, 1.15155)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.982613, 0.0786453, 1.15155)
|
||||||
light_color = Color(0.558852, 0.138576, 0.131343, 1)
|
light_color = Color(0.558852, 0.138576, 0.131343, 1)
|
||||||
light_energy = 0.048
|
light_energy = 0.048
|
||||||
|
|
||||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="Lighting"]
|
[node name="WorldEnvironment" type="WorldEnvironment" parent="Lighting" unique_id=720032518]
|
||||||
environment = SubResource("Environment_cumm5")
|
environment = SubResource("Environment_cumm5")
|
||||||
|
|
||||||
[node name="SpotLight3D" type="SpotLight3D" parent="Lighting"]
|
[node name="SpotLight3D" type="SpotLight3D" parent="Lighting" unique_id=140986413]
|
||||||
transform = Transform3D(0.313684, -0.884661, -0.344931, -0.446955, -0.458073, 0.768376, -0.837755, -0.0868584, -0.539093, 0.388222, 1.32097, 0.177619)
|
transform = Transform3D(0.31368402, -0.8846609, -0.34493113, -0.44695503, -0.4580729, 0.7683752, -0.8377551, -0.08685833, -0.5390938, 0.388222, 1.2932032, 0.21602583)
|
||||||
light_color = Color(1, 0.733333, 0.690196, 1)
|
light_color = Color(1, 0.733333, 0.690196, 1)
|
||||||
light_energy = 0.543
|
light_energy = 0.543
|
||||||
shadow_enabled = true
|
shadow_enabled = true
|
||||||
|
|
||||||
[node name="OmniLight3D3" type="OmniLight3D" parent="Lighting"]
|
[node name="OmniLight3D3" type="OmniLight3D" parent="Lighting" unique_id=942914936]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.520964, 3.19324, 0.238268)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.520964, 3.19324, 0.238268)
|
||||||
light_color = Color(0.101961, 0.054902, 0.0431373, 1)
|
light_color = Color(0.101961, 0.054902, 0.0431373, 1)
|
||||||
light_energy = 2.111
|
light_energy = 2.111
|
||||||
@@ -176,62 +181,62 @@ light_indirect_energy = 3.59
|
|||||||
shadow_enabled = true
|
shadow_enabled = true
|
||||||
script = ExtResource("5_nmbs0")
|
script = ExtResource("5_nmbs0")
|
||||||
|
|
||||||
[node name="Timer" type="Timer" parent="Lighting/OmniLight3D3"]
|
[node name="Timer" type="Timer" parent="Lighting/OmniLight3D3" unique_id=1125547548]
|
||||||
wait_time = 0.5
|
wait_time = 0.5
|
||||||
autostart = true
|
autostart = true
|
||||||
|
|
||||||
[node name="VFX" type="Node3D" parent="Lighting"]
|
[node name="VFX" type="Node3D" parent="Lighting" unique_id=2114940519]
|
||||||
|
|
||||||
[node name="GPUParticles3D" type="GPUParticles3D" parent="Lighting/VFX"]
|
[node name="GPUParticles3D" type="GPUParticles3D" parent="Lighting/VFX" unique_id=538377545]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.72499, 0.354899)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1867385, 1.4605813, 0.354899)
|
||||||
amount = 800
|
amount = 800
|
||||||
lifetime = 20.0
|
lifetime = 20.0
|
||||||
randomness = 1.0
|
randomness = 1.0
|
||||||
|
visibility_aabb = AABB(-0.105, -0.43, -0.4, 0.56, 0.32, 0.935)
|
||||||
process_material = SubResource("ParticleProcessMaterial_cx0fw")
|
process_material = SubResource("ParticleProcessMaterial_cx0fw")
|
||||||
draw_pass_1 = SubResource("QuadMesh_nmbs0")
|
draw_pass_1 = SubResource("QuadMesh_nmbs0")
|
||||||
|
|
||||||
[node name="GPUParticlesCollisionHeightField3D" type="GPUParticlesCollisionHeightField3D" parent="Lighting/VFX"]
|
[node name="GPUParticlesCollisionHeightField3D" type="GPUParticlesCollisionHeightField3D" parent="Lighting/VFX" unique_id=1642546253]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0385742, -0.168518, 0.386719)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0385742, -0.168518, 0.386719)
|
||||||
size = Vector3(2.96582, 0.391724, 4.91016)
|
size = Vector3(2.96582, 0.391724, 4.91016)
|
||||||
|
|
||||||
[node name="GPUParticlesCollisionHeightField3D2" type="GPUParticlesCollisionHeightField3D" parent="Lighting/VFX"]
|
[node name="GPUParticlesCollisionHeightField3D2" type="GPUParticlesCollisionHeightField3D" parent="Lighting/VFX" unique_id=1170671609]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.794207, 0.898239, 1.10249)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.794207, 0.898239, 1.10249)
|
||||||
size = Vector3(1.29651, 0.0705109, 2.49951)
|
size = Vector3(1.29651, 0.0705109, 2.49951)
|
||||||
|
|
||||||
[node name="GPUParticlesAttractorSphere3D" type="GPUParticlesAttractorSphere3D" parent="Lighting/VFX"]
|
[node name="GPUParticlesAttractorSphere3D" type="GPUParticlesAttractorSphere3D" parent="Lighting/VFX" unique_id=77874923]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.447443, 1.25731, 0.393826)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.447443, 1.25731, 0.393826)
|
||||||
strength = 3.0
|
|
||||||
radius = 0.409208
|
radius = 0.409208
|
||||||
|
|
||||||
[node name="GPUParticlesAttractorSphere3D2" type="GPUParticlesAttractorSphere3D" parent="Lighting/VFX"]
|
[node name="GPUParticlesAttractorSphere3D2" type="GPUParticlesAttractorSphere3D" parent="Lighting/VFX" unique_id=1702502091]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.569778, 3.12136, 0.370614)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.569778, 3.12136, 0.370614)
|
||||||
strength = 3.0
|
strength = 3.0
|
||||||
radius = 1.01
|
radius = 1.01
|
||||||
|
|
||||||
[node name="Interactables" type="Node3D" parent="."]
|
[node name="Interactables" type="Node3D" parent="." unique_id=1770190637]
|
||||||
|
|
||||||
[node name="PC" type="StaticBody3D" parent="Interactables"]
|
[node name="PC" type="StaticBody3D" parent="Interactables" unique_id=1312421362]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.521656, 1.06554, 1.25256)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.521656, 1.06554, 1.25256)
|
||||||
physics_material_override = SubResource("PhysicsMaterial_vwrhx")
|
physics_material_override = SubResource("PhysicsMaterial_vwrhx")
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactables/PC"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactables/PC" unique_id=1917188444]
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0478516, 0.229821, 0.0582275)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0478516, 0.229821, 0.0582275)
|
||||||
shape = SubResource("BoxShape3D_nmbs0")
|
shape = SubResource("BoxShape3D_nmbs0")
|
||||||
|
|
||||||
[node name="Sprite3D" type="Sprite3D" parent="Interactables/PC"]
|
[node name="Sprite3D" type="Sprite3D" parent="Interactables/PC" unique_id=1343884150]
|
||||||
transform = Transform3D(0.024902493, 0.0022058422, 0, -0.0022058422, 0.024902493, 0, 0, 0, 0.024999999, 0.053893626, 0.32362998, 0.038876176)
|
transform = Transform3D(0.024902493, 0.0022058422, 0, -0.0022058422, 0.024902493, 0, 0, 0, 0.024999999, 0.053893626, 0.32362998, 0.038876176)
|
||||||
layers = 2
|
layers = 2
|
||||||
flip_h = true
|
flip_h = true
|
||||||
axis = 0
|
axis = 0
|
||||||
texture = SubResource("ViewportTexture_vwrhx")
|
texture = SubResource("ViewportTexture_vwrhx")
|
||||||
|
|
||||||
[node name="SubViewport" type="SubViewport" parent="Interactables/PC/Sprite3D" node_paths=PackedStringArray("terminalLine")]
|
[node name="SubViewport" type="SubViewport" parent="Interactables/PC/Sprite3D" unique_id=969845837 node_paths=PackedStringArray("terminalLine")]
|
||||||
transparent_bg = true
|
transparent_bg = true
|
||||||
size = Vector2i(1830, 1400)
|
size = Vector2i(1830, 1400)
|
||||||
script = ExtResource("10_gba58")
|
script = ExtResource("10_gba58")
|
||||||
terminalLine = NodePath("MarginContainer/ScrollContainer/VBoxContainer/Label")
|
terminalLine = NodePath("MarginContainer/ScrollContainer/VBoxContainer/Label")
|
||||||
|
|
||||||
[node name="caret-ruler" type="Label" parent="Interactables/PC/Sprite3D/SubViewport"]
|
[node name="caret-ruler" type="Label" parent="Interactables/PC/Sprite3D/SubViewport" unique_id=1978172905]
|
||||||
clip_contents = true
|
clip_contents = true
|
||||||
custom_minimum_size = Vector2(1800, 0)
|
custom_minimum_size = Vector2(1800, 0)
|
||||||
offset_right = 1800.0
|
offset_right = 1800.0
|
||||||
@@ -240,23 +245,23 @@ text = "a0ifjaojkfna"
|
|||||||
label_settings = SubResource("LabelSettings_nmbs0")
|
label_settings = SubResource("LabelSettings_nmbs0")
|
||||||
autowrap_mode = 3
|
autowrap_mode = 3
|
||||||
|
|
||||||
[node name="MarginContainer" type="MarginContainer" parent="Interactables/PC/Sprite3D/SubViewport"]
|
[node name="MarginContainer" type="MarginContainer" parent="Interactables/PC/Sprite3D/SubViewport" unique_id=1395914383]
|
||||||
anchors_preset = 15
|
anchors_preset = 15
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="ScrollContainer" type="ScrollContainer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer"]
|
[node name="ScrollContainer" type="ScrollContainer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer" unique_id=1077906655]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
scroll_horizontal_custom_step = 0.001
|
scroll_horizontal_custom_step = 0.001
|
||||||
scroll_vertical_custom_step = 0.001
|
scroll_vertical_custom_step = 0.001
|
||||||
|
|
||||||
[node name="VBoxContainer" type="VBoxContainer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer"]
|
[node name="VBoxContainer" type="VBoxContainer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer" unique_id=1160436627]
|
||||||
custom_minimum_size = Vector2(1800, 0)
|
custom_minimum_size = Vector2(1800, 0)
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
[node name="Label" type="RichTextLabel" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer"]
|
[node name="Label" type="RichTextLabel" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer" unique_id=1332732238]
|
||||||
clip_contents = false
|
clip_contents = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_vertical = 0
|
size_flags_vertical = 0
|
||||||
@@ -265,13 +270,13 @@ bbcode_enabled = true
|
|||||||
text = "afafafafafafa"
|
text = "afafafafafafa"
|
||||||
fit_content = true
|
fit_content = true
|
||||||
|
|
||||||
[node name="Caret" type="ColorRect" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer/Label"]
|
[node name="Caret" type="ColorRect" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer/Label" unique_id=568444873]
|
||||||
layout_mode = 0
|
layout_mode = 0
|
||||||
offset_top = -62.0
|
offset_top = -62.0
|
||||||
offset_right = 24.0
|
offset_right = 24.0
|
||||||
offset_bottom = -20.0
|
offset_bottom = -20.0
|
||||||
|
|
||||||
[node name="CaretTimer" type="Timer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer/Label"]
|
[node name="CaretTimer" type="Timer" parent="Interactables/PC/Sprite3D/SubViewport/MarginContainer/ScrollContainer/VBoxContainer/Label" unique_id=1438556533]
|
||||||
wait_time = 0.5
|
wait_time = 0.5
|
||||||
autostart = true
|
autostart = true
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[gd_scene load_steps=2 format=3 uid="uid://cmyf6lhbn1x6p"]
|
[gd_scene format=3 uid="uid://cmyf6lhbn1x6p"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://b56h0sioa3yax" path="res://Assets/Model/Interior/Security_Office/security office.UwU.glb" id="1_o43w0"]
|
[ext_resource type="PackedScene" uid="uid://b56h0sioa3yax" path="res://Assets/Model/Interior/Security_Office/security office.UwU.glb" id="1_o43w0"]
|
||||||
|
|
||||||
[node name="security office_UwU" instance=ExtResource("1_o43w0")]
|
[node name="security office_UwU" unique_id=696635579 instance=ExtResource("1_o43w0")]
|
||||||
|
|||||||
@@ -8,11 +8,16 @@
|
|||||||
|
|
||||||
config_version=5
|
config_version=5
|
||||||
|
|
||||||
|
[animation]
|
||||||
|
|
||||||
|
compatibility/default_parent_skeleton_in_mesh_instance_3d=true
|
||||||
|
|
||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="FNaF Game Show Project"
|
config/name="FNaF Game Show Project"
|
||||||
run/main_scene="uid://dq5ojxx2ytfwv"
|
run/main_scene="uid://dq5ojxx2ytfwv"
|
||||||
config/features=PackedStringArray("4.5", "Forward Plus")
|
config/features=PackedStringArray("4.6", "Forward Plus")
|
||||||
|
run/max_fps=60
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
[autoload]
|
[autoload]
|
||||||
|
|||||||
Reference in New Issue
Block a user