initial commit

This commit is contained in:
Brazly
2026-01-13 03:47:51 +00:00
commit b58b59eb96
43 changed files with 3202 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
# Godot 4+ specific ignores
.godot/
/android/

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -0,0 +1,35 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c0qenaw8wxlbv"
path.s3tc="res://.godot/imported/DustMote.png-ccf8f095a7e3eeb9e5d61dd7836e85d9.s3tc.ctex"
metadata={
"imported_formats": ["s3tc_bptc"],
"vram_texture": true
}
[deps]
source_file="res://Assets/MISC_Textures/DustMote.png"
dest_files=["res://.godot/imported/DustMote.png-ccf8f095a7e3eeb9e5d61dd7836e85d9.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

View File

@@ -0,0 +1,16 @@
extends OmniLight3D
@onready var light: OmniLight3D = get_node(".")
@onready var timer: Timer = get_node('Timer')
var randomRange: float = 0.0
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
light.light_energy = lerp(light.light_energy, randomRange, 0.3)
pass
func _on_timer_timeout() -> void:
randomRange = randf_range(1.5, 4)
timer.wait_time = randf_range(0.2, 0.5)
pass # Replace with function body.

View File

@@ -0,0 +1 @@
uid://bfsaxhnb0qpuk

View File

@@ -0,0 +1,2 @@
extends Node
@export var cameraSensitivity: float = 0.001

View File

@@ -0,0 +1 @@
uid://ctroo2h1bbcyv

View File

@@ -0,0 +1,40 @@
extends Camera3D
var rayRange = 2000
@onready var crosshair = %CrosshairCenter
@export var terminal: TerminalControls
func _physics_process(delta: float) -> void:
Get_Camera_Collision()
func Get_Camera_Collision():
var centre = get_viewport().get_size()/2
var rayOrigin = project_ray_origin(centre)
var rayEnd = rayOrigin + project_ray_normal(centre)*rayRange
var newIntersection = PhysicsRayQueryParameters3D.create(rayOrigin, rayEnd)
var intersection = get_world_3d().direct_space_state.intersect_ray(newIntersection)
var is_highlighted = not intersection.is_empty()
if crosshair and is_instance_valid(crosshair):
crosshair.set_highlight(is_highlighted)
func _input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed and crosshair.is_highlighted:
if event.is_echo(): return
if event.keycode == KEY_BACKSPACE:
terminal.InputDelChar()
if event.unicode > 31:
var character = char(event.unicode)
if terminal: # Check that you assigned the node in the Inspector
terminal.InputChar(character)
if event.keycode == KEY_ENTER:
terminal.EnterCommand()

View File

@@ -0,0 +1 @@
uid://55cgjgncpb53

View File

@@ -0,0 +1,44 @@
extends Node3D
@onready var camera: Camera3D = $Camera3D
@export var verticalLookLimit: float = deg_to_rad(50)
@export var psxScene: PackedScene
var psxInstance: Node = null
var togglePsxEffect: bool = false
#@export var horizontalLookRightLimit: float = deg_to_rad(290)
#@export var horizontalLookLeftLimit: float = deg_to_rad(-196)
var cameraPitch: float = 0.0
var cameraYaw: float = 0.0
func _ready() -> void:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
var currentRot = camera.rotation
cameraPitch = currentRot.x
cameraYaw = currentRot.y
camera.rotation.z = 0.0
func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion:
cameraPitch -= event.screen_relative.y * GlobalSettings.cameraSensitivity
cameraYaw -= event.screen_relative.x * GlobalSettings.cameraSensitivity
#cameraPitch = clamp(cameraPitch, -verticalLookLimit, verticalLookLimit)
#cameraYaw = clamp(cameraYaw, -horizontalLookLeftLimit, horizontalLookRightLimit)
cameraPitch = clamp(cameraPitch, -verticalLookLimit, verticalLookLimit)
camera.rotation = Vector3(cameraPitch, cameraYaw, 0)
if Input.is_action_just_released("PSX Theme toggle"):
togglePsxEffect = !togglePsxEffect
if togglePsxEffect:
psxInstance = psxScene.instantiate()
add_child(psxInstance)
else:
psxInstance.queue_free()
psxInstance = null

View File

@@ -0,0 +1 @@
uid://dmtpstry0o0a3

View File

@@ -0,0 +1,89 @@
shader_type canvas_item;
uniform sampler2D screen_texture : hint_screen_texture;
uniform float pixel_resolution : hint_range(64.0, 512.0) = 240.0;
uniform int color_steps : hint_range(2, 64) = 16;
uniform float noise_strength : hint_range(0.0, 1.0) = 0.1;
uniform bool enable_dither = true;
uniform float dither_strength : hint_range(0.0, 1.0) = 0.3;
uniform bool enable_glow = true;
uniform float glow_strength : hint_range(0.0, 1.0) = 0.4;
uniform float glow_spread : hint_range(0.001, 0.01) = 0.005;
uniform bool enable_vintage = true; // Toggle
uniform float vintage_strength : hint_range(0.0, 1.0) = 0.8;
float random(vec2 co) {
return fract(sin(dot(co.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
float bayer_dither(vec2 pos) {
int x = int(mod(pos.x, 4.0));
int y = int(mod(pos.y, 4.0));
int index = x + y * 4;
float bayer[16] = float[](
0.0, 8.0, 2.0, 10.0,
12.0, 4.0, 14.0, 6.0,
3.0, 11.0, 1.0, 9.0,
15.0, 7.0, 13.0, 5.0
);
return bayer[index] / 16.0;
}
vec3 get_glow(vec2 uv) {
vec3 col = vec3(0.0);
float total = 0.0;
for (int x = -1; x <= 1; x++) {
for (int y = -1; y <= 1; y++) {
vec2 offset = vec2(float(x), float(y)) * glow_spread;
col += texture(screen_texture, uv + offset).rgb;
total += 1.0;
}
}
return col / total;
}
vec3 apply_black_vintage_edges(vec3 color, vec2 uv) {
// Distance from screen center
float dist = distance(uv, vec2(0.5));
// Mask: only affects edges
float edge_mask = smoothstep(0.4, 0.8, dist);
// Blend edges to black
color = mix(color, vec3(0.0), edge_mask * vintage_strength);
return color;
}
void fragment() {
vec2 pixel_uv = floor(UV * pixel_resolution) / pixel_resolution;
vec3 color = texture(screen_texture, pixel_uv).rgb;
if (enable_glow) {
vec3 blurred = get_glow(UV);
color += blurred * glow_strength;
}
float steps = float(color_steps);
color = floor(color * steps + 0.5) / steps;
float noise = (random(UV + TIME) - 0.5) * noise_strength;
color += noise;
if (enable_dither) {
float threshold = bayer_dither(FRAGCOORD.xy);
color += (dither_strength * (threshold - 0.5));
}
// Black vintage only on edges
if (enable_vintage) {
color = apply_black_vintage_edges(color, UV);
}
COLOR.rgb = clamp(color, 0.0, 1.0);
}

View File

@@ -0,0 +1 @@
uid://uo56rpfskail

View File

@@ -0,0 +1,39 @@
extends CenterContainer
@export var dotRadius: float = 1
@export var dotColor: Color = Color.WHITE
var current_radius: float
var is_highlighted: bool = false
var tween: Tween
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
queue_redraw()
pass # Replace with function body.
# This function is called by the Camera script
func set_highlight(active: bool) -> void:
is_highlighted = active
_animate_radius()
queue_redraw()
func _animate_radius():
# Kill any existing tween so they don't fight each other
if tween and tween.is_running():
tween.kill()
tween = create_tween()
# Determine target based on state
var target = dotRadius * 3 if is_highlighted else dotRadius
# Transition from current_radius to target over 0.3 seconds
tween.tween_property(self, "current_radius", target, 0.1)\
.set_trans(Tween.TRANS_SINE)\
.set_ease(Tween.EASE_OUT)
func _draw():
draw_circle(Vector2(0,0),current_radius,dotColor)

View File

@@ -0,0 +1 @@
uid://chb1dyhl7cyg1

View File

@@ -0,0 +1,13 @@
extends Node
@onready var colorRect = $ColorRect
@onready var animationPlayer = $AnimationPlayer
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
colorRect.visible = true
animationPlayer.play("fade_in")
await get_tree().create_timer(5.0).timeout
queue_free()
pass # Replace with function body.

View File

@@ -0,0 +1 @@
uid://cs6mhxw52ldo1

View File

@@ -0,0 +1,15 @@
extends Control
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
pass # Replace with function body.
func _on_new_game_button_pressed() -> void:
get_tree().change_scene_to_file("res://Scenes/Levels/office.tscn")
print("changed")
pass # Replace with function body.

View File

@@ -0,0 +1 @@
uid://2sxp2yxkv5k2

View File

@@ -0,0 +1,39 @@
extends Control
var paused = false
var showMouse = false
func _ready() -> void:
self.visible = paused
func _input(_event: InputEvent) -> void:
if Input.is_action_just_pressed("Pause"):
print("paused")
_pause_and_unpause()
func _pause_and_unpause():
paused = !paused
showMouse = !showMouse
get_tree().paused = paused
self.visible = paused
$MarginContainer/VBoxContainer/CameraSensitivityLabel/HSlider.value = GlobalSettings.cameraSensitivity
if showMouse:
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
else:
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
func _on_resume_game_button_pressed() -> void:
_pause_and_unpause()
func _on_quit_game_button_pressed() -> void:
get_tree().quit()
func _on_h_slider_value_changed(value: float) -> void:
GlobalSettings.cameraSensitivity = value
print(GlobalSettings.cameraSensitivity)
pass # Replace with function body.

View File

@@ -0,0 +1 @@
uid://cnw8764a6hljr

View File

@@ -0,0 +1,168 @@
extends Node
class_name TerminalControls
@onready var historyContainer = $MarginContainer/ScrollContainer/VBoxContainer
@onready var caret = $MarginContainer/ScrollContainer/VBoxContainer/Label/Caret
@onready var blink_timer = $MarginContainer/ScrollContainer/VBoxContainer/Label/CaretTimer
@export var terminalLine: Label
var command: String
var directory: String = "~/"
var fileSystem: Dictionary = {
"documents": {
"special": {
"notes.txt": "test",
"secrets": {
"password.txt": 123
}
}
},
"bin": {
"sh": "binary data",
}
}
func _ready() -> void:
terminalLine.text = "user@work "+ directory + " "
UpdateCaretPos()
blink_timer.start()
# --- Caret Blinking Logic ---
func _on_caret_timer_timeout() -> void:
caret.visible = !caret.visible
func reset_blink() -> void:
caret.visible = true
blink_timer.start() # Resets the countdown
# --- Input Handling ---
func InputChar(input) -> void:
if input == null:
return
command = input
terminalLine.text += command
UpdateCaretPos()
reset_blink()
func InputDelChar() -> void:
if terminalLine.text.length() > ("user@work " + directory).length() + 1:
terminalLine.text = terminalLine.text.left(-1)
UpdateCaretPos()
reset_blink()
func EnterCommand() -> void:
var fullText = terminalLine.text
var userInput = fullText.trim_prefix("user@work " + directory).strip_edges()
if historyContainer.get_child_count() <22:
CreateHistoryEntry(fullText)
var parts = userInput.split(" ")
match parts[0]:
"ls":
var currentDirData
if parts.size() > 1:
currentDirData = GetDirAtPath(directory + parts[1])
else:
currentDirData = GetDirAtPath(directory)
if currentDirData is Dictionary:
var list = ""
for key in currentDirData.keys():
list += key + " "
CreateHistoryEntry(list)
else:
CreateHistoryEntry("error: Directory not found")
"cd":
if parts.size() > 1:
var targetPath = parts[1]
var newDir = ResolvePath(directory, targetPath)
if GetDirAtPath(newDir) != null:
directory = newDir
else:
CreateHistoryEntry("cd: no such directory: " + targetPath)
else:
directory = "~/"
"cat":
if parts.size() > 1:
RetrieveData(parts[1])
else:
CreateHistoryEntry("usage: cat [filename]")
"clear":
for child in historyContainer.get_children():
if child != terminalLine:
child.queue_free()
"":
pass
_:
CreateHistoryEntry("Command not found: " + userInput)
terminalLine.text = "user@work "+ directory + " "
# Handle UI scrolling correctly
var scrollBox = historyContainer.get_parent() as ScrollContainer
historyContainer.force_update_transform()
await get_tree().process_frame
scrollBox.scroll_vertical = int(scrollBox.get_v_scroll_bar().max_value)
UpdateCaretPos()
# --- History and FileSystem Helpers ---
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)
# Limit history to 15 entries + 1 active line
if historyContainer.get_child_count() > 22:
historyContainer.get_child(0).queue_free()
func ResolvePath(current: String, target: String) -> String:
if target.begins_with("~/"):
return target if target.ends_with("/") else target + "/"
if target == "..":
if current == "~/": return "~/"
var parts = current.trim_suffix("/").rsplit("/", true, 1)
return parts[0] + "/"
var joined = current + target
return joined if joined.ends_with("/") else joined + "/"
func GetDirAtPath(path: String):
if path == "~/": return fileSystem
var cleanPath = path.trim_prefix("~/").trim_suffix("/")
var folders = cleanPath.split("/")
var current = fileSystem
for folder in folders:
if current is Dictionary and current.has(folder) and current[folder] is Dictionary:
current = current[folder]
else:
return null
return current if current is Dictionary else null
func RetrieveData(filename: String):
var currentData = GetDirAtPath(directory)
if currentData == null:
CreateHistoryEntry("Error: Current directory invalid.")
return
if currentData.has(filename):
var content = currentData[filename]
if content is Dictionary:
CreateHistoryEntry("cat: " + filename + ": is a directory")
else:
CreateHistoryEntry(str(content))
else:
CreateHistoryEntry("cat: " + filename + ": no such file")
func UpdateCaretPos():
var last_char_index = terminalLine.text.length() - 1
var char_rect = terminalLine.get_character_bounds(max(0, last_char_index))
caret.position.x = char_rect.end.x + 1
caret.position.y = char_rect.position.y

View File

@@ -0,0 +1 @@
uid://ckagscjkf3iiu

21
LICENSE Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Zincles
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

21
LICENSE.md Normal file
View File

@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2023 Joshua Najera
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

64
README.md Normal file
View File

@@ -0,0 +1,64 @@
![GLTF2MeshLib](addons/gltf2meshlib/gltf2meshlib.svg)
# GLTF2MeshLib
This plugin allows you to import gltf/glb models as MeshLibrary, which saves a lot of time compared to manual importing.
![showcase](addons/gltf2meshlib/examples/imgs/showcase.png)
## Usage
you can simply drag and drop gltf/glb files into the editor, select "`GLTF To MeshLibrary`" in the import settings, and it will automatically import your gltf/glb as a MeshLibrary. This allows you to see instant changes after any modification of the gltf file.
In my case, I used models made with Blockbench, exported as gltf, and imported into Godot with this plugin, and it seems to work fine as I expected. I am using `Godot 4.3`.
If you encounter any problems, or if you have any suggestions, please let me know in the Issues.
## Requirements
Different from godot's default behavior, you need to make sure models you want to import are in the first level. things in sublevels would be imported as a part of the parent object.
here's an example:
![example](addons/gltf2meshlib/examples/imgs/structure_example.png)
## Options
| Option | Description | Default |
| -------------------------------- | ----------------------------------------------------------------------- | ------------ |
| generate_collision_shape_by_mesh | generate collision shape by its model, rather than "-col" tagged meshs. | false |
| generate_preview | whether to generate preview for MeshLibrary. | true |
| model_offset | You can adjust model offset via this parameter. | Vector3.ZERO |
| sort_by_name | Sort Items in MeshLibrary. Preventing unexpected order. | true |
### Flags
Now you can import Items with flags. Currently there're 2 kinds of flags available:
| Flag | Description |
| ----------------------- | -------------------------------------------------------------------------- |
| `--collision` or `-col` | whether to import this object as collision shape or not. false by default. |
| `--noimp` | whether to import this object or not. false by default. |
Here's an example:
![example_edit_label](addons/gltf2meshlib/examples/imgs/label_example.png)
You can configure collision by adding meshes that indicates the collision shape of the item, and add `--collision` flag to the item.
## Known Issues
- re-importing GLTF with opened scene in Editor with GridMap node which binds the imported gltf, would raise `"servers/rendering/renderer_rd/storage_rd/mesh_storage.cpp:632 - Parameter "mesh" is null."`.
- for some reason, the editor might raise annoying "Attempted to call reimport_files() recursively, this is not allowed." error while importing mesh as MeshLibrary.
Thankfully this issue seems not influencing the game, but it's still annoying.Do you got any solutions? I need you help on this :(
let me know more problems you encountered in issues.
## Contributors
please view the "contributors" page on the right side(if you are reading this via github).
## License
License under MIT License.

219
Scenes/Levels/office.tscn Normal file
View File

@@ -0,0 +1,219 @@
[gd_scene load_steps=22 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="PackedScene" uid="uid://b2mhoeubwtkuo" path="res://Scenes/UI/fade_in_transition.tscn" id="2_cx0fw"]
[ext_resource type="PackedScene" uid="uid://cbpsnsta7u3wl" path="res://Scenes/Special_Effects/PSX_style.tscn" id="2_gba58"]
[ext_resource type="Script" uid="uid://55cgjgncpb53" path="res://Assets/Scripts/Player Controls/interact.gd" id="2_vwrhx"]
[ext_resource type="PackedScene" uid="uid://b54u8nvjd4p6l" path="res://Scenes/UI/pause_menu.tscn" id="3_cx0fw"]
[ext_resource type="Script" uid="uid://chb1dyhl7cyg1" path="res://Assets/Scripts/UI/crosshair.gd" id="3_vwrhx"]
[ext_resource type="PackedScene" uid="uid://cmyf6lhbn1x6p" path="res://Scenes/Models/Interior/security_office_model.tscn" id="4_vwrhx"]
[ext_resource type="Script" uid="uid://bfsaxhnb0qpuk" path="res://Assets/Scripts/Misc/flickering_light.gd" id="5_nmbs0"]
[ext_resource type="Texture2D" uid="uid://c0qenaw8wxlbv" path="res://Assets/MISC_Textures/DustMote.png" id="6_ayt7b"]
[ext_resource type="PackedScene" uid="uid://c670wtpi4n22q" path="res://Scenes/UI/terminal.tscn" id="10_gba58"]
[sub_resource type="Environment" id="Environment_cumm5"]
background_mode = 1
background_color = Color(0.680932, 0.369129, 0.248985, 1)
background_energy_multiplier = 0.04
ssr_enabled = true
ssao_enabled = true
ssil_enabled = true
sdfgi_use_occlusion = true
glow_normalized = true
fog_light_energy = 15.32
volumetric_fog_density = 0.1974
adjustment_enabled = true
adjustment_brightness = 0.75
[sub_resource type="Gradient" id="Gradient_ayt7b"]
offsets = PackedFloat32Array(0, 0.0824053, 1)
colors = PackedColorArray(0, 0, 0, 1, 0.683742, 0.683742, 0.683742, 1, 1, 1, 1, 0.25098)
[sub_resource type="GradientTexture1D" id="GradientTexture1D_cx0fw"]
gradient = SubResource("Gradient_ayt7b")
[sub_resource type="Curve" id="Curve_vwrhx"]
_data = [Vector2(0, 1), 0.0, 0.471387, 0, 0, Vector2(0.99579, 0), 0.232991, 0.0, 0, 0]
point_count = 2
[sub_resource type="CurveTexture" id="CurveTexture_nmbs0"]
curve = SubResource("Curve_vwrhx")
[sub_resource type="ParticleProcessMaterial" id="ParticleProcessMaterial_cx0fw"]
emission_shape = 3
emission_box_extents = Vector3(1.49, 1.73, 2.42)
initial_velocity_min = 1.0
initial_velocity_max = 2.0
angular_velocity_min = 30.0
angular_velocity_max = 60.0
gravity = Vector3(0, 0, 0)
scale_curve = SubResource("CurveTexture_nmbs0")
color_ramp = SubResource("GradientTexture1D_cx0fw")
turbulence_enabled = true
turbulence_noise_scale = 1.85
collision_mode = 1
collision_friction = 1.0
collision_bounce = 0.0
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vwrhx"]
transparency = 1
vertex_color_use_as_albedo = true
albedo_texture = ExtResource("6_ayt7b")
billboard_mode = 3
billboard_keep_scale = true
particles_anim_h_frames = 1
particles_anim_v_frames = 1
particles_anim_loop = false
[sub_resource type="QuadMesh" id="QuadMesh_nmbs0"]
material = SubResource("StandardMaterial3D_vwrhx")
size = Vector2(0.01, 0.01)
[sub_resource type="PhysicsMaterial" id="PhysicsMaterial_vwrhx"]
[sub_resource type="BoxShape3D" id="BoxShape3D_nmbs0"]
size = Vector3(0.0644531, 0.530029, 0.4646)
[sub_resource type="ViewportTexture" id="ViewportTexture_vwrhx"]
viewport_path = NodePath("Interactables/PC/Sprite3D/SubViewport")
[node name="Node3D" type="Node3D"]
[node name="PlayerController" type="Node3D" parent="."]
process_mode = 1
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.370835, 0, 0)
script = ExtResource("1_48dl1")
psxScene = ExtResource("2_gba58")
[node name="Camera3D" type="Camera3D" parent="PlayerController" 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)
fov = 45.2
near = 0.001
script = ExtResource("2_vwrhx")
terminal = NodePath("../../Interactables/PC/Sprite3D/SubViewport")
[node name="CanvasLayer" type="CanvasLayer" parent="PlayerController/Camera3D"]
layer = 2
[node name="Control" type="Control" parent="PlayerController/Camera3D/CanvasLayer"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="CrosshairCenter" type="CenterContainer" parent="PlayerController/Camera3D/CanvasLayer/Control"]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("3_vwrhx")
[node name="PauseMenu" type="CanvasLayer" parent="."]
[node name="Transition" parent="PauseMenu" instance=ExtResource("2_cx0fw")]
process_priority = 5
layer = 5
[node name="CanvasLayer" type="CanvasLayer" parent="PauseMenu"]
layer = 5
[node name="PauseMenu" parent="PauseMenu/CanvasLayer" instance=ExtResource("3_cx0fw")]
process_mode = 3
z_index = 5
[node name="security office_UwU" parent="." instance=ExtResource("4_vwrhx")]
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="OmniLight3D" type="OmniLight3D" parent="Lighting"]
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_energy = 0.048
[node name="OmniLight3D2" type="OmniLight3D" parent="Lighting"]
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_energy = 0.048
[node name="WorldEnvironment" type="WorldEnvironment" parent="Lighting"]
environment = SubResource("Environment_cumm5")
[node name="SpotLight3D" type="SpotLight3D" parent="Lighting"]
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)
light_color = Color(1, 0.733333, 0.690196, 1)
light_energy = 0.543
shadow_enabled = true
[node name="OmniLight3D3" type="OmniLight3D" parent="Lighting"]
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_energy = 2.111
light_indirect_energy = 3.59
shadow_enabled = true
script = ExtResource("5_nmbs0")
[node name="Timer" type="Timer" parent="Lighting/OmniLight3D3"]
wait_time = 0.5
autostart = true
[node name="VFX" type="Node3D" parent="Lighting"]
[node name="GPUParticles3D" type="GPUParticles3D" parent="Lighting/VFX"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.72499, 0.354899)
amount = 800
lifetime = 20.0
randomness = 1.0
process_material = SubResource("ParticleProcessMaterial_cx0fw")
draw_pass_1 = SubResource("QuadMesh_nmbs0")
[node name="GPUParticlesCollisionHeightField3D" type="GPUParticlesCollisionHeightField3D" parent="Lighting/VFX"]
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)
[node name="GPUParticlesCollisionHeightField3D2" type="GPUParticlesCollisionHeightField3D" parent="Lighting/VFX"]
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)
[node name="GPUParticlesAttractorSphere3D" type="GPUParticlesAttractorSphere3D" parent="Lighting/VFX"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.447443, 1.25731, 0.393826)
strength = 3.0
radius = 0.409208
[node name="GPUParticlesAttractorSphere3D2" type="GPUParticlesAttractorSphere3D" parent="Lighting/VFX"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.569778, 3.12136, 0.370614)
strength = 3.0
radius = 1.01
[node name="Interactables" type="Node3D" parent="."]
[node name="PC" type="StaticBody3D" parent="Interactables"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.521656, 1.06554, 1.25256)
physics_material_override = SubResource("PhysicsMaterial_vwrhx")
[node name="CollisionShape3D" type="CollisionShape3D" parent="Interactables/PC"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0478516, 0.229821, 0.0582275)
shape = SubResource("BoxShape3D_nmbs0")
[node name="Sprite3D" type="Sprite3D" parent="Interactables/PC"]
transform = Transform3D(0.024902493, 0.0022058422, 0, -0.0022058422, 0.024902493, 0, 0, 0, 0.024999999, 0.053893626, 0.2870214, 0.041617036)
flip_h = true
axis = 0
texture = SubResource("ViewportTexture_vwrhx")
[node name="SubViewport" parent="Interactables/PC/Sprite3D" instance=ExtResource("10_gba58")]
[connection signal="timeout" from="Lighting/OmniLight3D3/Timer" to="Lighting/OmniLight3D3" method="_on_timer_timeout"]

View File

@@ -0,0 +1,5 @@
[gd_scene load_steps=2 format=3 uid="uid://cmyf6lhbn1x6p"]
[ext_resource type="PackedScene" uid="uid://djt7surq1h8bt" path="res://Assets/Model/Interior/Security_Office/security office.UwU.glb" id="1_o43w0"]
[node name="security office_UwU" instance=ExtResource("1_o43w0")]

View File

@@ -0,0 +1,26 @@
[gd_scene load_steps=3 format=3 uid="uid://cbpsnsta7u3wl"]
[ext_resource type="Shader" uid="uid://uo56rpfskail" path="res://Assets/Scripts/Shaders/psx.gdshader" id="1_54yrn"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vwrhx"]
shader = ExtResource("1_54yrn")
shader_parameter/pixel_resolution = 240.0
shader_parameter/color_steps = 16
shader_parameter/noise_strength = 0.1
shader_parameter/enable_dither = true
shader_parameter/dither_strength = 0.3
shader_parameter/enable_glow = true
shader_parameter/glow_strength = 0.4
shader_parameter/glow_spread = 0.005
shader_parameter/enable_vintage = true
shader_parameter/vintage_strength = 0.8
[node name="CanvasLayer" type="CanvasLayer"]
[node name="ColorRect" type="ColorRect" parent="."]
material = SubResource("ShaderMaterial_vwrhx")
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2

30
Scenes/UI/crosshair.tscn Normal file
View File

@@ -0,0 +1,30 @@
[gd_scene load_steps=2 format=3 uid="uid://bw5wwerqy6gi2"]
[ext_resource type="Script" uid="uid://chb1dyhl7cyg1" path="res://Assets/Scripts/UI/crosshair.gd" id="1_undt4"]
[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 = 4
size_flags_vertical = 4
mouse_filter = 1
[node name="CrosshairCenter" type="CenterContainer" parent="."]
unique_name_in_owner = true
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_undt4")

View File

@@ -0,0 +1,58 @@
[gd_scene load_steps=5 format=3 uid="uid://b2mhoeubwtkuo"]
[ext_resource type="Script" uid="uid://cs6mhxw52ldo1" path="res://Assets/Scripts/UI/fade_in.gd" id="1_k5wvs"]
[sub_resource type="Animation" id="Animation_vggx3"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ColorRect:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
[sub_resource type="Animation" id="Animation_llmbb"]
resource_name = "fade_in"
length = 3.0
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("ColorRect:modulate")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(-0.4, 3),
"transitions": PackedFloat32Array(2.2974, 1),
"update": 0,
"values": [Color(0, 0, 0, 1), Color(1, 1, 1, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_cumm5"]
_data = {
&"RESET": SubResource("Animation_vggx3"),
&"fade_in": SubResource("Animation_llmbb")
}
[node name="Transition" type="CanvasLayer"]
script = ExtResource("1_k5wvs")
[node name="ColorRect" type="ColorRect" parent="."]
z_index = 5
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
libraries = {
&"": SubResource("AnimationLibrary_cumm5")
}

35
Scenes/UI/main_menu.tscn Normal file
View File

@@ -0,0 +1,35 @@
[gd_scene load_steps=2 format=3 uid="uid://dq5ojxx2ytfwv"]
[ext_resource type="Script" uid="uid://2sxp2yxkv5k2" path="res://Assets/Scripts/UI/main_menu.gd" id="1_28flt"]
[node name="MainMenu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_28flt")
[node name="BoxContainer" type="BoxContainer" parent="."]
layout_mode = 1
anchors_preset = 13
anchor_left = 0.5
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -45.5
offset_right = 45.5
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="BoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="NewGameButton" type="Button" parent="BoxContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 125
text = "new Game"
[connection signal="pressed" from="BoxContainer/VBoxContainer/NewGameButton" to="." method="_on_new_game_button_pressed"]

57
Scenes/UI/pause_menu.tscn Normal file
View File

@@ -0,0 +1,57 @@
[gd_scene load_steps=2 format=3 uid="uid://b54u8nvjd4p6l"]
[ext_resource type="Script" uid="uid://cnw8764a6hljr" path="res://Assets/Scripts/UI/pause_menu.gd" id="1_emv3i"]
[node name="PauseMenu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_emv3i")
[node name="MarginContainer" type="MarginContainer" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -611.0
offset_top = -549.0
offset_right = 611.0
offset_bottom = 549.0
grow_horizontal = 2
grow_vertical = 2
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
[node name="QuitGameButton" type="Button" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 125
text = "Quit"
[node name="ResumeGameButton" type="Button" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 125
text = "Resume"
[node name="CameraSensitivityLabel" type="Label" parent="MarginContainer/VBoxContainer"]
layout_mode = 2
text = "Camera Sensitivity"
[node name="HSlider" type="HSlider" parent="MarginContainer/VBoxContainer/CameraSensitivityLabel"]
layout_mode = 2
offset_top = -20.0
offset_right = 492.0
offset_bottom = -4.0
max_value = 0.01
step = 0.0
[connection signal="pressed" from="MarginContainer/VBoxContainer/QuitGameButton" to="." method="_on_quit_game_button_pressed"]
[connection signal="pressed" from="MarginContainer/VBoxContainer/ResumeGameButton" to="." method="_on_resume_game_button_pressed"]
[connection signal="value_changed" from="MarginContainer/VBoxContainer/CameraSensitivityLabel/HSlider" to="." method="_on_h_slider_value_changed"]

44
Scenes/UI/terminal.tscn Normal file
View File

@@ -0,0 +1,44 @@
[gd_scene load_steps=3 format=3 uid="uid://c670wtpi4n22q"]
[ext_resource type="Script" uid="uid://ckagscjkf3iiu" path="res://Assets/Scripts/UI/terminal/terminal_controls.gd" id="1_7fm3u"]
[sub_resource type="LabelSettings" id="LabelSettings_nmbs0"]
font_size = 42
[node name="SubViewport" type="SubViewport" node_paths=PackedStringArray("terminalLine")]
transparent_bg = true
size = Vector2i(1830, 1680)
script = ExtResource("1_7fm3u")
terminalLine = NodePath("MarginContainer/ScrollContainer/VBoxContainer/Label")
[node name="MarginContainer" type="MarginContainer" parent="."]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer"]
layout_mode = 2
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/ScrollContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="MarginContainer/ScrollContainer/VBoxContainer"]
clip_contents = true
custom_minimum_size = Vector2(1800, 0)
layout_mode = 2
text = "a0ifjaojkfna"
label_settings = SubResource("LabelSettings_nmbs0")
autowrap_mode = 3
[node name="Caret" type="ColorRect" parent="MarginContainer/ScrollContainer/VBoxContainer/Label"]
layout_mode = 0
offset_right = 24.0
offset_bottom = 42.0
[node name="CaretTimer" type="Timer" parent="MarginContainer/ScrollContainer/VBoxContainer/Label"]
wait_time = 0.5
autostart = true
[connection signal="timeout" from="MarginContainer/ScrollContainer/VBoxContainer/Label/CaretTimer" to="." method="_on_caret_timer_timeout"]

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
uid://bwy4vfb71sqq5

179
addons/godot-vim/icon.svg Normal file
View File

@@ -0,0 +1,179 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="409.99237"
height="551.82874"
version="1.1"
id="svg3763"
sodipodi:docname="iconsvg.svg"
inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
<defs
id="defs3767" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="3840"
inkscape:window-height="2089"
id="namedview3765"
showgrid="false"
inkscape:zoom="0.88187112"
inkscape:cx="-391.82984"
inkscape:cy="385.67966"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="svg3763" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g3845"
transform="matrix(4.3859694,0,0,4.3859694,-75.706218,-87.385926)">
<g
id="g3823"
transform="matrix(0.10073078,0,0,0.10073078,12.425923,2.256365)"
style="stroke-width:9.92745972">
<path
id="path3807"
d="m 0,0 c 0,0 -0.325,1.994 -0.515,1.976 l -36.182,-3.491 c -2.879,-0.278 -5.115,-2.574 -5.317,-5.459 l -0.994,-14.247 -27.992,-1.997 -1.904,12.912 c -0.424,2.872 -2.932,5.037 -5.835,5.037 h -38.188 c -2.902,0 -5.41,-2.165 -5.834,-5.037 l -1.905,-12.912 -27.992,1.997 -0.994,14.247 c -0.202,2.886 -2.438,5.182 -5.317,5.46 l -36.2,3.49 c -0.187,0.018 -0.324,-1.978 -0.511,-1.978 l -0.049,-7.83 30.658,-4.944 1.004,-14.374 c 0.203,-2.91 2.551,-5.263 5.463,-5.472 l 38.551,-2.75 c 0.146,-0.01 0.29,-0.016 0.434,-0.016 2.897,0 5.401,2.166 5.825,5.038 l 1.959,13.286 h 28.005 l 1.959,-13.286 c 0.423,-2.871 2.93,-5.037 5.831,-5.037 0.142,0 0.284,0.005 0.423,0.015 l 38.556,2.75 c 2.911,0.209 5.26,2.562 5.463,5.472 l 1.003,14.374 30.645,4.966 z"
inkscape:connector-curvature="0"
style="fill:#ffffff"
transform="matrix(4.162611,0,0,-4.162611,919.24059,771.67186)" />
<path
id="path3809"
transform="matrix(4.162611,0,0,-4.162611,104.69892,525.90697)"
d="m 0,0 v -47.514 -6.035 -5.492 c 0.108,-0.001 0.216,-0.005 0.323,-0.015 l 36.196,-3.49 c 1.896,-0.183 3.382,-1.709 3.514,-3.609 l 1.116,-15.978 31.574,-2.253 2.175,14.747 c 0.282,1.912 1.922,3.329 3.856,3.329 h 38.188 c 1.933,0 3.573,-1.417 3.855,-3.329 l 2.175,-14.747 31.575,2.253 1.115,15.978 c 0.133,1.9 1.618,3.425 3.514,3.609 l 36.182,3.49 c 0.107,0.01 0.214,0.014 0.322,0.015 v 4.711 l 0.015,0.005 V 0 c 5.09692,6.4164715 9.92323,13.494208 13.621,19.449 -5.651,9.62 -12.575,18.217 -19.976,26.182 -6.864,-3.455 -13.531,-7.369 -19.828,-11.534 -3.151,3.132 -6.7,5.694 -10.186,8.372 -3.425,2.751 -7.285,4.768 -10.946,7.118 1.09,8.117 1.629,16.108 1.846,24.448 -9.446,4.754 -19.519,7.906 -29.708,10.17 -4.068,-6.837 -7.788,-14.241 -11.028,-21.479 -3.842,0.642 -7.702,0.88 -11.567,0.926 v 0.006 c -0.027,0 -0.052,-0.006 -0.075,-0.006 -0.024,0 -0.049,0.006 -0.073,0.006 V 63.652 C 93.903,63.606 90.046,63.368 86.203,62.726 82.965,69.964 79.247,77.368 75.173,84.205 64.989,81.941 54.915,78.789 45.47,74.035 45.686,65.695 46.225,57.704 47.318,49.587 43.65,47.237 39.795,45.22 36.369,42.469 32.888,39.791 29.333,37.229 26.181,34.097 19.884,38.262 13.219,42.176 6.353,45.631 -1.048,37.666 -7.968,29.069 -13.621,19.449 -9.1783421,12.475308 -4.4130298,5.4661124 0,0 Z"
inkscape:connector-curvature="0"
style="fill:#478cbf" />
<path
id="path3811"
d="m 0,0 -1.121,-16.063 c -0.135,-1.936 -1.675,-3.477 -3.611,-3.616 l -38.555,-2.751 c -0.094,-0.007 -0.188,-0.01 -0.281,-0.01 -1.916,0 -3.569,1.406 -3.852,3.33 l -2.211,14.994 H -81.09 l -2.211,-14.994 c -0.297,-2.018 -2.101,-3.469 -4.133,-3.32 l -38.555,2.751 c -1.936,0.139 -3.476,1.68 -3.611,3.616 L -130.721,0 -163.268,3.138 c 0.015,-3.498 0.06,-7.33 0.06,-8.093 0,-34.374 43.605,-50.896 97.781,-51.086 h 0.066 0.067 c 54.176,0.19 97.766,16.712 97.766,51.086 0,0.777 0.047,4.593 0.063,8.093 z"
inkscape:connector-curvature="0"
style="fill:#478cbf"
transform="matrix(4.162611,0,0,-4.162611,784.07144,817.24284)" />
<path
id="path3813"
transform="matrix(4.162611,0,0,-4.162611,389.21484,625.67104)"
d="m 0,0 c 0,-12.052 -9.765,-21.815 -21.813,-21.815 -12.042,0 -21.81,9.763 -21.81,21.815 0,12.044 9.768,21.802 21.81,21.802 C -9.765,21.802 0,12.044 0,0"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path3815"
transform="matrix(4.162611,0,0,-4.162611,367.36686,631.05679)"
d="m 0,0 c 0,-7.994 -6.479,-14.473 -14.479,-14.473 -7.996,0 -14.479,6.479 -14.479,14.473 0,7.994 6.483,14.479 14.479,14.479 C -6.479,14.479 0,7.994 0,0"
inkscape:connector-curvature="0"
style="fill:#414042" />
<path
id="path3817"
transform="matrix(4.162611,0,0,-4.162611,511.99336,724.73954)"
d="m 0,0 c -3.878,0 -7.021,2.858 -7.021,6.381 v 20.081 c 0,3.52 3.143,6.381 7.021,6.381 3.878,0 7.028,-2.861 7.028,-6.381 V 6.381 C 7.028,2.858 3.878,0 0,0"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path3819"
transform="matrix(4.162611,0,0,-4.162611,634.78706,625.67104)"
d="m 0,0 c 0,-12.052 9.765,-21.815 21.815,-21.815 12.041,0 21.808,9.763 21.808,21.815 0,12.044 -9.767,21.802 -21.808,21.802 C 9.765,21.802 0,12.044 0,0"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
id="path3821"
transform="matrix(4.162611,0,0,-4.162611,656.64056,631.05679)"
d="m 0,0 c 0,-7.994 6.477,-14.473 14.471,-14.473 8.002,0 14.479,6.479 14.479,14.473 0,7.994 -6.477,14.479 -14.479,14.479 C 6.477,14.479 0,7.994 0,0"
inkscape:connector-curvature="0"
style="fill:#414042" />
</g>
</g>
<g
id="layer1"
transform="matrix(0.7294074,0,0,0.7294074,-45.912295,80.565241)">
<g
id="g3699"
transform="matrix(1.532388,0,0,1.3939671,-54.912136,-41.792396)">
<path
id="path3650"
d="m 114.65715,353.09353 h 47.80701 l 2.91261,3.20613 v 9.83953 l -2.31001,3.09557 h -5.22261 v 48.86596 l 44.99482,-48.86596 h -7.43218 l -2.61131,-3.09557 v -10.39231 l 2.41044,-2.43224 h 48.40962 l 2.41043,2.65335 v 9.72897 L 136.55196,489.29907 h -12.45393 l -3.60484,-2.291 V 368.79254 h -6.03691 l -2.20956,-2.43224 v -10.39231 z"
style="fill:none;stroke:#000000;stroke-width:8.34521198;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path3640"
d="m 162.97227,358.09475 2.6987,-1.5635 -2.76971,-3.04884 h -48.22135 l -2.45013,2.69704 v 10.20187 l 2.71645,2.9902 1.29608,-2.9902 -1.70443,-1.87621 v -7.19212 l 1.27832,-1.2508 h 46.01979 z"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
d="m 197.06456,355.74729 -1.70266,1.87425 v 6.88137 l 1.49138,1.64168 h 7.87946 v 6.6488 l -52.12379,58.1565 v -64.72321 h 8.66244 l 1.77723,-1.95634 v -6.96346 l -1.64052,-1.39542 h -45.58657 l -1.49138,1.64168 v 7.11394 l 1.51624,1.66904 h 7.92918 v 119.18594 l 1.49138,1.64168 h 9.01043 L 243.50867,363.0938 v -5.47226 l -1.70266,-1.87425 z"
id="path3632"
style="fill:none;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path3646"
d="m 123.69629,366.13919 v 119.40096 l 1.40609,1.7689 -1.10266,2.31328 -3.1156,-3.41884 V 369.23476 Z"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path3644"
d="m 115.90579,366.13919 -0.80348,2.87446 h 5.82523 l 3.21391,-2.87446 z"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path3638"
d="m 195.92471,369.36762 1.27833,-2.89248 -1.84647,-1.87621 v -6.41037 l 2.13055,-2.34526 h 44.45738 l 1.70443,2.50161 2.41462,-1.87621 -2.48563,-2.73613 h -47.79524 l -2.37911,2.61887 v 10.28004 l 2.46788,2.56024 m -38.62501,49.36179 -4.64282,12.40054 52.41142,-57.84966 v -6.87942 z"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path3642"
d="m 162.86589,357.7369 2.31001,-1.65835 v 10.06064 l -2.66153,2.92974 h -5.1724 v 49.58456 l -4.72044,12.27178 v -64.78608 h 8.6374 l 1.60696,-1.43724 z"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
d="m 197.06456,355.74729 -1.70266,1.87425 v 6.88137 l 1.49138,1.64168 h 7.87946 v 6.6488 l -52.12379,58.1565 v -64.72321 h 8.66244 l 1.77723,-1.95634 v -6.96346 l -1.64052,-1.39542 h -45.58657 l -1.49138,1.64168 v 7.11394 l 1.51624,1.66904 h 7.92918 v 119.18594 l 1.49138,1.64168 h 9.01043 L 243.50867,363.0938 v -5.47226 l -1.70266,-1.87425 z"
id="path3622"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path3636"
d="m 243.64893,357.78205 2.426,-1.54181 v 9.67203 L 136.04072,489.68148 h -11.68216 l 1.11611,-2.44127 h 8.9483 L 243.5069,363.25432 Z"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<path
id="path3652"
d="m 204.79746,366.30501 -2.46065,2.8192 h -6.42784 l 1.50652,-2.8192 c 0.0502,0 7.38197,0 7.38197,0 z"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:0.41726059px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:connector-curvature="0" />
<g
transform="matrix(0.90138601,0,0,0.99222542,-92.530288,-192.23791)"
id="g3673">
<path
style="fill:#cccccc;fill-opacity:1;stroke:#000000;stroke-width:8;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
id="path3671"
d="m 399.78125,560 a 1.2330102,1.2330102 0 0 0 -0.5625,0.28125 l -5.3125,4.5625 A 1.2330102,1.2330102 0 0 0 393.5625,565.375 L 388.25,580.25 a 1.2330102,1.2330102 0 0 0 0.28125,1.28125 l 4.0625,4.0625 a 1.2330102,1.2330102 0 0 0 0.875,0.34375 H 409.875 a 1.2330102,1.2330102 0 0 0 0.875,-0.34375 l 4.28125,-4.3125 a 1.2330102,1.2330102 0 0 0 0.3125,-0.53125 l 4.5625,-15.65625 a 1.2330102,1.2330102 0 0 0 -0.3125,-1.21875 l -3.53125,-3.53125 A 1.2330102,1.2330102 0 0 0 415.1875,560 h -15.15625 a 1.2330102,1.2330102 0 0 0 -0.25,0 z m -30.0625,41.9375 a 1.2330102,1.2330102 0 0 0 -0.9375,0.90625 l -2.03125,8.0625 a 1.2330102,1.2330102 0 0 0 1.1875,1.53125 h 9.65625 l -23.9375,68.34375 a 1.2330102,1.2330102 0 0 0 1.15625,1.625 h 34.84375 a 1.2330102,1.2330102 0 0 0 1.1875,-0.84375 l 2.28125,-7.34375 a 1.2330102,1.2330102 0 0 0 -1.1875,-1.59375 h -7.875 L 407.75,603.5625 a 1.2330102,1.2330102 0 0 0 -1.15625,-1.625 h -36.625 a 1.2330102,1.2330102 0 0 0 -0.25,0 z m 110.875,0.25 a 1.2330102,1.2330102 0 0 0 -0.6875,0.40625 l -7.25,8.1875 H 461.125 l -7.6875,-7.96875 a 1.2330102,1.2330102 0 0 0 -0.875,-0.375 H 425.03125 A 1.2330102,1.2330102 0 0 0 423.875,603.25 l -2.53125,7.5625 a 1.2330102,1.2330102 0 0 0 1.15625,1.625 h 7.375 l -22.9375,67.59375 a 1.2330102,1.2330102 0 0 0 1.15625,1.625 h 29.3125 a 1.2330102,1.2330102 0 0 0 1.15625,-0.8125 l 2.25,-6.59375 a 1.2330102,1.2330102 0 0 0 -1.15625,-1.625 h -5.125 l 14.625,-46.03125 H 475.625 l -16.6875,53.46875 a 1.2330102,1.2330102 0 0 0 1.1875,1.59375 h 28.28125 a 1.2330102,1.2330102 0 0 0 1.125,-0.75 l 2.53125,-6.0625 a 1.2330102,1.2330102 0 0 0 -1.125,-1.6875 h -5.125 l 14.875,-46.8125 h 25.1875 l -16.9375,53.71875 a 1.2330102,1.2330102 0 0 0 1.1875,1.59375 h 31.0625 a 1.2330102,1.2330102 0 0 0 1.15625,-0.78125 l 2.53125,-6.59375 a 1.2330102,1.2330102 0 0 0 -1.15625,-1.65625 h -6.15625 l 18.71875,-60.78125 a 1.2330102,1.2330102 0 0 0 -0.1875,-1.125 l -5.8125,-7.8125 a 1.2330102,1.2330102 0 0 0 -1,-0.46875 H 527.0625 a 1.2330102,1.2330102 0 0 0 -0.90625,0.375 l -7,7.6875 h -12.25 l -7.25,-7.9375 a 1.2330102,1.2330102 0 0 0 -0.90625,-0.375 h -17.90625 a 1.2330102,1.2330102 0 0 0 -0.25,0 z"
inkscape:connector-curvature="0" />
<path
d="m 400.03125,561.21875 -5.3125,4.5625 -5.3125,14.875 4.0625,4.0625 H 409.875 l 4.28125,-4.3125 4.5625,-15.65625 -3.53125,-3.53125 z m -30.0625,41.9375 -2.03125,8.0625 h 11.375 l -24.5,69.96875 h 34.84375 l 2.28125,-7.34375 h -9.59375 l 24.25,-70.6875 z m 110.875,0.25 L 473.25,612 h -12.625 l -8.0625,-8.34375 h -27.53125 l -2.53125,7.5625 h 9.09375 l -23.5,69.21875 h 29.3125 l 2.25,-6.59375 h -6.8125 L 448.25,625.375 h 29.0625 l -17.1875,55.0625 h 28.28125 l 2.53125,-6.0625 h -6.8125 l 15.65625,-49.25 h 27.78125 l -17.4375,55.3125 h 31.0625 l 2.53125,-6.59375 H 535.875 l 19.21875,-62.375 -5.8125,-7.8125 H 527.0625 l -7.34375,8.0625 h -13.375 l -7.59375,-8.3125 z"
id="path3665"
style="fill:#478cbf;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
inkscape:connector-curvature="0" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,37 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c1ygdmat1ffr4"
path="res://.godot/imported/icon.svg-5744b51718b6a64145ec5798797f7631.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://addons/godot-vim/icon.svg"
dest_files=["res://.godot/imported/icon.svg-5744b51718b6a64145ec5798797f7631.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

View File

@@ -0,0 +1,7 @@
[plugin]
name="godot-vim"
description="VIM bindings for godot4"
author="Josh N"
version="0.3"
script="godot-vim.gd"

View File

@@ -0,0 +1,36 @@
[remap]
importer="scene"
importer_version=1
type="PackedScene"
uid="uid://of8gnedlll38"
valid=false
[deps]
source_file="res://addons/godot-vim/secoffice.glb"
[params]
nodes/root_type=""
nodes/root_name=""
nodes/apply_root_scale=true
nodes/root_scale=1.0
nodes/import_as_skeleton_bones=false
nodes/use_node_type_suffixes=true
meshes/ensure_tangents=true
meshes/generate_lods=true
meshes/create_shadow_meshes=true
meshes/light_baking=1
meshes/lightmap_texel_size=0.2
meshes/force_disable_compression=false
skins/use_named_skins=true
animation/import=true
animation/fps=30
animation/trimming=false
animation/remove_immutable_tracks=true
animation/import_rest_as_RESET=false
import_script/path=""
_subresources={}
gltf/naming_version=1
gltf/embedded_image_handling=1

7
default_env.tres Normal file
View File

@@ -0,0 +1,7 @@
[gd_resource type="Environment" load_steps=2 format=2]
[sub_resource type="Sky" id=1]
[resource]
background_mode = 2
background_sky = SubResource( 1 )

110
export_presets.cfg Normal file
View File

@@ -0,0 +1,110 @@
[preset.0]
name="Windows Desktop"
platform="Windows Desktop"
runnable=true
advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path="../f.exe"
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.0.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=0
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=true
binary_format/architecture="x86_64"
codesign/enable=false
codesign/timestamp=true
codesign/timestamp_server_url=""
codesign/digest_algorithm=1
codesign/description=""
codesign/custom_options=PackedStringArray()
application/modify_resources=true
application/icon=""
application/console_wrapper_icon=""
application/icon_interpolation=4
application/file_version=""
application/product_version=""
application/company_name=""
application/product_name=""
application/file_description=""
application/copyright=""
application/trademarks=""
application/export_angle=0
application/export_d3d12=0
application/d3d12_agility_sdk_multiarch=true
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="Expand-Archive -LiteralPath '{temp_dir}\\{archive_name}' -DestinationPath '{temp_dir}'
$action = New-ScheduledTaskAction -Execute '{temp_dir}\\{exe_name}' -Argument '{cmd_args}'
$trigger = New-ScheduledTaskTrigger -Once -At 00:00
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries
$task = New-ScheduledTask -Action $action -Trigger $trigger -Settings $settings
Register-ScheduledTask godot_remote_debug -InputObject $task -Force:$true
Start-ScheduledTask -TaskName godot_remote_debug
while (Get-ScheduledTask -TaskName godot_remote_debug | ? State -eq running) { Start-Sleep -Milliseconds 100 }
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue"
ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debug -ErrorAction:SilentlyContinue
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'"
[preset.1]
name="Linux"
platform="Linux"
runnable=true
advanced_options=false
dedicated_server=false
custom_features=""
export_filter="all_resources"
include_filter=""
exclude_filter=""
export_path=""
patches=PackedStringArray()
encryption_include_filters=""
encryption_exclude_filters=""
seed=0
encrypt_pck=false
encrypt_directory=false
script_export_mode=2
[preset.1.options]
custom_template/debug=""
custom_template/release=""
debug/export_console_wrapper=1
binary_format/embed_pck=false
texture_format/s3tc_bptc=true
texture_format/etc2_astc=false
shader_baker/enabled=false
binary_format/architecture="x86_64"
ssh_remote_deploy/enabled=false
ssh_remote_deploy/host="user@host_ip"
ssh_remote_deploy/port="22"
ssh_remote_deploy/extra_args_ssh=""
ssh_remote_deploy/extra_args_scp=""
ssh_remote_deploy/run_script="#!/usr/bin/env bash
export DISPLAY=:0
unzip -o -q \"{temp_dir}/{archive_name}\" -d \"{temp_dir}\"
\"{temp_dir}/{exe_name}\" {cmd_args}"
ssh_remote_deploy/cleanup_script="#!/usr/bin/env bash
kill $(pgrep -x -f \"{temp_dir}/{exe_name} {cmd_args}\")
rm -rf \"{temp_dir}\""

47
project.godot Normal file
View File

@@ -0,0 +1,47 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="FNaF Game Show Project"
run/main_scene="uid://dq5ojxx2ytfwv"
config/features=PackedStringArray("4.5", "Forward Plus")
config/icon="res://icon.svg"
[autoload]
GlobalSettings="*res://Assets/Scripts/Player Controls/global_settings.gd"
[display]
window/size/viewport_width=1920
window/size/viewport_height=1080
[editor_plugins]
enabled=PackedStringArray("res://addons/godot-vim/plugin.cfg")
[input]
Pause={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
"PSX Theme toggle"={
"deadzone": 0.2,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
Interact={
"deadzone": 0.2,
"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":0,"position":Vector2(0, 0),"global_position":Vector2(0, 0),"factor":1.0,"button_index":1,"canceled":false,"pressed":false,"double_click":false,"script":null)
]
}