initial commit
4
.editorconfig
Normal file
|
@ -0,0 +1,4 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
2
.gitattributes
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Normalize EOL for all files that Git considers text files.
|
||||
* text=auto eol=lf
|
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
# Godot 4+ specific ignores
|
||||
.godot/
|
||||
/android/
|
BIN
Buy.png
Normal file
After Width: | Height: | Size: 31 KiB |
35
Buy.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://ckgh0pj7hbif3"
|
||||
path.s3tc="res://.godot/imported/Buy.png-1be009895a002025002061496cbae911.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Buy.png"
|
||||
dest_files=["res://.godot/imported/Buy.png-1be009895a002025002061496cbae911.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
|
44
MainMenu.tscn
Normal file
|
@ -0,0 +1,44 @@
|
|||
[gd_scene load_steps=7 format=3 uid="uid://cxllykh18amy3"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://bnmenpey8nde2" path="res://Play1.png" id="1_eiy7p"]
|
||||
[ext_resource type="Texture2D" uid="uid://bosvyu7f3kxlg" path="res://Play2.png" id="2_h7a2f"]
|
||||
[ext_resource type="Script" uid="uid://cpf02igyl2jn3" path="res://play_button.gd" id="3_h7a2f"]
|
||||
[ext_resource type="VideoStream" uid="uid://cxiq6k74yeqdg" path="res://menu.ogv" id="4_qoqlk"]
|
||||
[ext_resource type="Texture2D" uid="uid://d1xcwdjibb6ql" path="res://logo.png" id="5_iwfq2"]
|
||||
|
||||
[sub_resource type="Theme" id="Theme_qoqlk"]
|
||||
|
||||
[node name="Control" type="Control"]
|
||||
layout_mode = 3
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
|
||||
[node name="VideoStreamPlayer" type="VideoStreamPlayer" parent="."]
|
||||
layout_mode = 0
|
||||
offset_top = 1.0
|
||||
offset_right = 480.0
|
||||
offset_bottom = 361.0
|
||||
stream = ExtResource("4_qoqlk")
|
||||
autoplay = true
|
||||
loop = true
|
||||
|
||||
[node name="TextureButton" type="TextureButton" parent="."]
|
||||
layout_mode = 0
|
||||
offset_left = 139.0
|
||||
offset_top = 284.0
|
||||
offset_right = 301.0
|
||||
offset_bottom = 346.0
|
||||
theme = SubResource("Theme_qoqlk")
|
||||
texture_normal = ExtResource("1_eiy7p")
|
||||
texture_hover = ExtResource("2_h7a2f")
|
||||
script = ExtResource("3_h7a2f")
|
||||
|
||||
[node name="Logo" type="Sprite2D" parent="."]
|
||||
modulate = Color(1, 1, 1, 0.858824)
|
||||
position = Vector2(220, 173.455)
|
||||
texture = ExtResource("5_iwfq2")
|
||||
|
||||
[connection signal="pressed" from="TextureButton" to="TextureButton" method="_on_pressed"]
|
BIN
Play1.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
34
Play1.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bnmenpey8nde2"
|
||||
path="res://.godot/imported/Play1.png-a7d03014620696bd754b319b7cb51198.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Play1.png"
|
||||
dest_files=["res://.godot/imported/Play1.png-a7d03014620696bd754b319b7cb51198.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
|
BIN
Play2.png
Normal file
After Width: | Height: | Size: 876 B |
35
Play2.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bosvyu7f3kxlg"
|
||||
path.s3tc="res://.godot/imported/Play2.png-27cfaffcf19fc04a6480c99801e5e6e0.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Play2.png"
|
||||
dest_files=["res://.godot/imported/Play2.png-27cfaffcf19fc04a6480c99801e5e6e0.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
|
BIN
Player/goblin-green-monster.gif
Normal file
After Width: | Height: | Size: 63 KiB |
74
Player/player.gd
Normal file
|
@ -0,0 +1,74 @@
|
|||
class_name Player extends CharacterBody3D
|
||||
|
||||
@export_range(1, 35, 1) var speed: float = 10 # m/s
|
||||
@export_range(10, 400, 1) var acceleration: float = 100 # m/s^2
|
||||
|
||||
@export_range(0.1, 3.0, 0.1) var jump_height: float = 1 # m
|
||||
@export_range(0.1, 3.0, 0.1, "or_greater") var camera_sens: float = 1
|
||||
|
||||
var jumping: bool = false
|
||||
var mouse_captured: bool = false
|
||||
|
||||
var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity")
|
||||
|
||||
var move_dir: Vector2 # Input direction for movement
|
||||
var look_dir: Vector2 # Input direction for look/aim
|
||||
|
||||
var walk_vel: Vector3 # Walking velocity
|
||||
var grav_vel: Vector3 # Gravity velocity
|
||||
var jump_vel: Vector3 # Jumping velocity
|
||||
|
||||
@onready var camera: Camera3D = $Camera
|
||||
|
||||
func _ready() -> void:
|
||||
capture_mouse()
|
||||
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event is InputEventMouseMotion:
|
||||
look_dir = event.relative * 0.001
|
||||
if mouse_captured: _rotate_camera()
|
||||
if Input.is_action_just_pressed(&"exit"): get_tree().quit()
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if Input.is_action_just_pressed(&"jump"): jumping = true
|
||||
if mouse_captured: _handle_joypad_camera_rotation(delta)
|
||||
velocity = _walk(delta) + _gravity(delta) + _jump(delta)
|
||||
move_and_slide()
|
||||
|
||||
func capture_mouse() -> void:
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
|
||||
mouse_captured = true
|
||||
|
||||
func release_mouse() -> void:
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
|
||||
mouse_captured = false
|
||||
|
||||
func _rotate_camera(sens_mod: float = 1.0) -> void:
|
||||
camera.rotation.y -= look_dir.x * camera_sens * sens_mod
|
||||
camera.rotation.x = clamp(camera.rotation.x - look_dir.y * camera_sens * sens_mod, -1.5, 1.5)
|
||||
|
||||
func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void:
|
||||
var joypad_dir: Vector2 = Input.get_vector(&"look_left", &"look_right", &"look_up", &"look_down")
|
||||
if joypad_dir.length() > 0:
|
||||
look_dir += joypad_dir * delta
|
||||
_rotate_camera(sens_mod)
|
||||
look_dir = Vector2.ZERO
|
||||
|
||||
func _walk(delta: float) -> Vector3:
|
||||
move_dir = Input.get_vector(&"move_left", &"move_right", &"move_forward", &"move_backwards")
|
||||
var _forward: Vector3 = camera.global_transform.basis * Vector3(move_dir.x, 0, move_dir.y)
|
||||
var walk_dir: Vector3 = Vector3(_forward.x, 0, _forward.z).normalized()
|
||||
walk_vel = walk_vel.move_toward(walk_dir * speed * move_dir.length(), acceleration * delta)
|
||||
return walk_vel
|
||||
|
||||
func _gravity(delta: float) -> Vector3:
|
||||
grav_vel = Vector3.ZERO if is_on_floor() else grav_vel.move_toward(Vector3(0, velocity.y - gravity, 0), gravity * delta)
|
||||
return grav_vel
|
||||
|
||||
func _jump(delta: float) -> Vector3:
|
||||
if jumping:
|
||||
if is_on_floor(): jump_vel = Vector3(0, sqrt(4 * jump_height * gravity), 0)
|
||||
jumping = false
|
||||
return jump_vel
|
||||
jump_vel = Vector3.ZERO if is_on_floor() or is_on_ceiling_only() else jump_vel.move_toward(Vector3.ZERO, gravity * delta)
|
||||
return jump_vel
|
1
Player/player.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://b0c02p6ckmpdq
|
63
Player/player.tscn
Normal file
|
@ -0,0 +1,63 @@
|
|||
[gd_scene load_steps=9 format=3 uid="uid://cdk6hwb4hi2wc"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b0c02p6ckmpdq" path="res://Player/player.gd" id="1_2f8j2"]
|
||||
[ext_resource type="Shader" uid="uid://c1ws5xtabtopc" path="res://psx_camera/psx_camera_shader.gdshader" id="2_4ntmi"]
|
||||
[ext_resource type="PackedScene" uid="uid://cp7wldb12tpm8" path="res://hand.obj" id="3_btcbx"]
|
||||
[ext_resource type="Texture2D" uid="uid://1osrvxkcjngu" path="res://handtexture.png" id="4_gwnis"]
|
||||
|
||||
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_3rsb5"]
|
||||
radius = 0.3
|
||||
height = 1.8
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_btcbx"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("2_4ntmi")
|
||||
shader_parameter/enable_fog = true
|
||||
shader_parameter/fog_color = Color(0.494245, 1.40181e-06, 2.40654e-07, 1)
|
||||
shader_parameter/noise_color = Color(0, 0, 0, 1)
|
||||
shader_parameter/fog_distance = 100.0
|
||||
shader_parameter/fog_fade_range = 50.0
|
||||
shader_parameter/enable_noise = true
|
||||
shader_parameter/noise_time_fac = 4.0
|
||||
shader_parameter/enable_color_limitation = true
|
||||
shader_parameter/color_levels = 32
|
||||
shader_parameter/enable_dithering = true
|
||||
shader_parameter/dither_strength = 0.3
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_gwnis"]
|
||||
material = SubResource("ShaderMaterial_btcbx")
|
||||
flip_faces = true
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_k53q1"]
|
||||
albedo_texture = ExtResource("4_gwnis")
|
||||
|
||||
[node name="Player" type="CharacterBody3D"]
|
||||
script = ExtResource("1_2f8j2")
|
||||
|
||||
[node name="CShape" type="CollisionShape3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.9, 0)
|
||||
shape = SubResource("CapsuleShape3D_3rsb5")
|
||||
debug_color = Color(0.141176, 0.427451, 0.92549, 0.784314)
|
||||
|
||||
[node name="Camera" type="Camera3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.7, 0)
|
||||
fov = 80.0
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Camera"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.800495)
|
||||
mesh = SubResource("QuadMesh_gwnis")
|
||||
|
||||
[node name="Hand" type="MeshInstance3D" parent="Camera"]
|
||||
transform = Transform3D(0.00214306, 0.0134455, 0.262051, 0.0219563, 0.286891, -0.0123296, -0.364886, 0.0173421, 0.000797189, 0.87108, -0.736241, -0.589995)
|
||||
skeleton = NodePath("../..")
|
||||
|
||||
[node name="hand" parent="Camera" instance=ExtResource("3_btcbx")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.599934, -1.7, -1.91879)
|
||||
visible = false
|
||||
|
||||
[node name="Cube" parent="Camera/hand" index="0"]
|
||||
transform = Transform3D(-0.103623, 0, 0.191626, 0, 0.289734, 0, -0.33763, 0, -0.0588126, 1.31232, 0.743218, 1.03127)
|
||||
surface_material_override/0 = SubResource("StandardMaterial3D_k53q1")
|
||||
|
||||
[editable path="Camera/hand"]
|
BIN
Player/test.fbx
Normal file
38
Player/test.fbx.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://b8ghcqrk5f230"
|
||||
path="res://.godot/imported/test.fbx-4751c59649d3f0f207823200ddb16c83.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://Player/test.fbx"
|
||||
dest_files=["res://.godot/imported/test.fbx-4751c59649d3f0f207823200ddb16c83.scn"]
|
||||
|
||||
[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=true
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
fbx/importer=0
|
||||
fbx/allow_geometry_helper_nodes=false
|
||||
fbx/embedded_image_handling=1
|
BIN
building1.fbx
Normal file
38
building1.fbx.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://duy7t4ji7vjo"
|
||||
path="res://.godot/imported/building1.fbx-54062ed3f346a448178d34d716bbea04.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://building1.fbx"
|
||||
dest_files=["res://.godot/imported/building1.fbx-54062ed3f346a448178d34d716bbea04.scn"]
|
||||
|
||||
[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=true
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
fbx/importer=0
|
||||
fbx/allow_geometry_helper_nodes=false
|
||||
fbx/embedded_image_handling=1
|
2
building2.mtl
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Blender 4.4.3 MTL File: 'None'
|
||||
# www.blender.org
|
1641
building2.obj
Normal file
35
building2.obj.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://d2hos7ra5ud7"
|
||||
path="res://.godot/imported/building2.obj-9cec53fa9ee3f1c6565417fb32d1db72.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://building2.obj"
|
||||
dest_files=["res://.godot/imported/building2.obj-9cec53fa9ee3f1c6565417fb32d1db72.scn"]
|
||||
|
||||
[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={}
|
BIN
buy_billboard.fbx
Normal file
38
buy_billboard.fbx.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://dy6ryxbbf66b2"
|
||||
path="res://.godot/imported/buy_billboard.fbx-645f97c33d73e21db603a657a9ca86b9.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://buy_billboard.fbx"
|
||||
dest_files=["res://.godot/imported/buy_billboard.fbx-645f97c33d73e21db603a657a9ca86b9.scn"]
|
||||
|
||||
[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=true
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
fbx/importer=0
|
||||
fbx/allow_geometry_helper_nodes=false
|
||||
fbx/embedded_image_handling=1
|
2
fishmanmenu.mtl
Normal file
|
@ -0,0 +1,2 @@
|
|||
# Blender 4.4.3 MTL File: 'None'
|
||||
# www.blender.org
|
7974
fishmanmenu.obj
Normal file
25
fishmanmenu.obj.import
Normal file
|
@ -0,0 +1,25 @@
|
|||
[remap]
|
||||
|
||||
importer="wavefront_obj"
|
||||
importer_version=1
|
||||
type="Mesh"
|
||||
uid="uid://c6phbg27cafjy"
|
||||
path="res://.godot/imported/fishmanmenu.obj-9443fdf6be53b12c1bfa454a4474f14b.mesh"
|
||||
|
||||
[deps]
|
||||
|
||||
files=["res://.godot/imported/fishmanmenu.obj-9443fdf6be53b12c1bfa454a4474f14b.mesh"]
|
||||
|
||||
source_file="res://fishmanmenu.obj"
|
||||
dest_files=["res://.godot/imported/fishmanmenu.obj-9443fdf6be53b12c1bfa454a4474f14b.mesh", "res://.godot/imported/fishmanmenu.obj-9443fdf6be53b12c1bfa454a4474f14b.mesh"]
|
||||
|
||||
[params]
|
||||
|
||||
generate_tangents=true
|
||||
generate_lods=true
|
||||
generate_shadow_mesh=true
|
||||
generate_lightmap_uv2=false
|
||||
generate_lightmap_uv2_texel_size=0.2
|
||||
scale_mesh=Vector3(1, 1, 1)
|
||||
offset_mesh=Vector3(0, 0, 0)
|
||||
force_disable_mesh_compression=false
|
BIN
goblin-green-monster.gif
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
hand.fbx
Normal file
38
hand.fbx.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://8ldn0ps0eb1b"
|
||||
path="res://.godot/imported/hand.fbx-6a220df74a1dd954bbda016ec18565d5.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://hand.fbx"
|
||||
dest_files=["res://.godot/imported/hand.fbx-6a220df74a1dd954bbda016ec18565d5.scn"]
|
||||
|
||||
[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=true
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
fbx/importer=0
|
||||
fbx/allow_geometry_helper_nodes=false
|
||||
fbx/embedded_image_handling=1
|
12
hand.mtl
Normal file
|
@ -0,0 +1,12 @@
|
|||
# Blender 4.4.3 MTL File: 'None'
|
||||
# www.blender.org
|
||||
|
||||
newmtl Material
|
||||
Ns 1000.000000
|
||||
Ka 0.718182 0.718182 0.718182
|
||||
Ks 0.500000 0.500000 0.500000
|
||||
Ke 0.000000 0.000000 0.000000
|
||||
Ni 3.050000
|
||||
d 1.000000
|
||||
illum 3
|
||||
map_Kd C:/Users/Lilith/Documents/handtexture.png
|
113
hand.obj
Normal file
|
@ -0,0 +1,113 @@
|
|||
# Blender 4.4.3
|
||||
# www.blender.org
|
||||
mtllib hand.mtl
|
||||
o Cube
|
||||
v 1.000000 0.406552 -0.418490
|
||||
v 1.000000 -0.406552 -0.418490
|
||||
v 1.000000 0.406552 0.418490
|
||||
v 1.000000 -0.406552 0.418490
|
||||
v -1.000000 0.406552 -0.418490
|
||||
v -1.000000 -0.406552 -0.418490
|
||||
v -1.000000 0.406552 0.418490
|
||||
v -1.000000 -0.406552 0.418490
|
||||
v 2.055061 0.406552 -0.418490
|
||||
v 2.055061 -0.406552 -0.418490
|
||||
v 2.055061 0.406552 0.418490
|
||||
v 2.055061 -0.406552 0.418490
|
||||
v 1.351887 0.437050 -0.139338
|
||||
v 1.351887 0.437050 0.139338
|
||||
v 1.703173 0.437050 -0.139338
|
||||
v 1.703173 0.437050 0.139338
|
||||
v 1.351887 0.676728 -0.139338
|
||||
v 1.351887 0.676728 0.139338
|
||||
v 1.703173 0.676728 -0.139338
|
||||
v 1.703173 0.676728 0.139338
|
||||
v 1.490812 0.956770 -0.099672
|
||||
v 1.490812 0.956770 0.100322
|
||||
v 1.842098 0.956770 -0.139338
|
||||
v 1.842098 0.956770 0.139338
|
||||
v 1.573551 1.218282 -0.098021
|
||||
v 1.573551 1.218282 0.101973
|
||||
v 1.853025 1.005454 -0.137037
|
||||
v 1.853025 1.005454 0.141639
|
||||
v 2.099970 0.406552 -0.418490
|
||||
v 2.099970 -0.406552 -0.418490
|
||||
v 2.099970 0.406552 0.418490
|
||||
v 2.099970 -0.406552 0.418490
|
||||
v 2.834164 0.324069 -0.083337
|
||||
v 2.834164 -0.324069 -0.083337
|
||||
v 2.834164 0.324069 0.083337
|
||||
v 2.834164 -0.324069 0.083337
|
||||
vn -0.0000 1.0000 -0.0000
|
||||
vn -0.0000 -0.0000 1.0000
|
||||
vn -1.0000 -0.0000 -0.0000
|
||||
vn -0.0000 -1.0000 -0.0000
|
||||
vn -0.0000 -0.0000 -1.0000
|
||||
vn 0.0863 0.9963 -0.0000
|
||||
vn -0.0000 0.9941 0.1086
|
||||
vn -0.0863 0.9963 -0.0000
|
||||
vn -0.0000 0.9941 -0.1086
|
||||
vn -0.0552 0.0966 0.9938
|
||||
vn 1.0000 -0.0000 -0.0000
|
||||
vn -0.1163 0.0225 0.9930
|
||||
vn -0.8958 0.4444 -0.0000
|
||||
vn -0.0561 0.0982 -0.9936
|
||||
vn 0.8958 -0.4444 -0.0000
|
||||
vn 0.6059 0.7956 -0.0000
|
||||
vn -0.9534 0.3016 -0.0000
|
||||
vn -0.1085 0.0454 -0.9931
|
||||
vn 0.9757 -0.2190 -0.0000
|
||||
vn 0.1116 0.9937 -0.0000
|
||||
vn 0.4153 -0.0000 -0.9097
|
||||
vn 0.1116 -0.9937 -0.0000
|
||||
vn 0.4153 -0.0000 0.9097
|
||||
vt 0.625000 0.500000
|
||||
vt 0.875000 0.500000
|
||||
vt 0.875000 0.750000
|
||||
vt 0.625000 0.750000
|
||||
vt 0.375000 0.750000
|
||||
vt 0.625000 1.000000
|
||||
vt 0.375000 1.000000
|
||||
vt 0.375000 0.000000
|
||||
vt 0.625000 0.000000
|
||||
vt 0.625000 0.250000
|
||||
vt 0.375000 0.250000
|
||||
vt 0.125000 0.500000
|
||||
vt 0.375000 0.500000
|
||||
vt 0.125000 0.750000
|
||||
s 0
|
||||
usemtl Material
|
||||
f 1/1/1 5/2/1 7/3/1 3/4/1
|
||||
f 4/5/2 3/4/2 7/6/2 8/7/2
|
||||
f 8/8/3 7/9/3 5/10/3 6/11/3
|
||||
f 6/12/4 2/13/4 4/5/4 8/14/4
|
||||
f 3/4/2 4/5/2 12/5/2 11/4/2
|
||||
f 6/11/5 5/10/5 1/1/5 2/13/5
|
||||
f 9/1/1 11/4/1 31/4/1 29/1/1
|
||||
f 2/13/5 1/1/5 9/1/5 10/13/5
|
||||
f 4/5/4 2/13/4 10/13/4 12/5/4
|
||||
f 11/4/6 9/1/6 15/1/6 16/4/6
|
||||
f 15/1/5 13/1/5 17/1/5 19/1/5
|
||||
f 3/4/7 11/4/7 16/4/7 14/4/7
|
||||
f 1/1/8 3/4/8 14/4/8 13/1/8
|
||||
f 9/1/9 1/1/9 13/1/9 15/1/9
|
||||
f 18/4/10 20/4/10 24/4/10 22/4/10
|
||||
f 16/4/11 15/1/11 19/1/11 20/4/11
|
||||
f 14/4/2 16/4/2 20/4/2 18/4/2
|
||||
f 13/1/3 14/4/3 18/4/3 17/1/3
|
||||
f 22/4/12 24/4/12 28/4/12 26/4/12
|
||||
f 17/1/13 18/4/13 22/4/13 21/1/13
|
||||
f 19/1/14 17/1/14 21/1/14 23/1/14
|
||||
f 20/4/15 19/1/15 23/1/15 24/4/15
|
||||
f 25/1/16 26/4/16 28/4/16 27/1/16
|
||||
f 21/1/17 22/4/17 26/4/17 25/1/17
|
||||
f 23/1/18 21/1/18 25/1/18 27/1/18
|
||||
f 24/4/19 23/1/19 27/1/19 28/4/19
|
||||
f 29/1/20 31/4/20 35/4/20 33/1/20
|
||||
f 10/13/5 9/1/5 29/1/5 30/13/5
|
||||
f 12/5/4 10/13/4 30/13/4 32/5/4
|
||||
f 11/4/2 12/5/2 32/5/2 31/4/2
|
||||
f 34/13/11 33/1/11 35/4/11 36/5/11
|
||||
f 30/13/21 29/1/21 33/1/21 34/13/21
|
||||
f 32/5/22 30/13/22 34/13/22 36/5/22
|
||||
f 31/4/23 32/5/23 36/5/23 35/4/23
|
35
hand.obj.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://cp7wldb12tpm8"
|
||||
path="res://.godot/imported/hand.obj-cf367f22625d8f5f1d67057962aaef20.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://hand.obj"
|
||||
dest_files=["res://.godot/imported/hand.obj-cf367f22625d8f5f1d67057962aaef20.scn"]
|
||||
|
||||
[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={}
|
BIN
handtexture.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
35
handtexture.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://1osrvxkcjngu"
|
||||
path.s3tc="res://.godot/imported/handtexture.png-7f7ba51794edf74a2feb9d66f0725fbf.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://handtexture.png"
|
||||
dest_files=["res://.godot/imported/handtexture.png-7f7ba51794edf74a2feb9d66f0725fbf.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
|
1
icon.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>
|
After Width: | Height: | Size: 994 B |
37
icon.svg.import
Normal file
|
@ -0,0 +1,37 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://bwu6l4hlh3x8r"
|
||||
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://icon.svg"
|
||||
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.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
|
BIN
image.png
Normal file
After Width: | Height: | Size: 627 KiB |
35
image.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://drm7sjwtp0i7d"
|
||||
path.s3tc="res://.godot/imported/image.png-2de165adb17dfebcee8a7cd6c9833936.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://image.png"
|
||||
dest_files=["res://.godot/imported/image.png-2de165adb17dfebcee8a7cd6c9833936.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
|
BIN
joeb.fbx
Normal file
38
joeb.fbx.import
Normal file
|
@ -0,0 +1,38 @@
|
|||
[remap]
|
||||
|
||||
importer="scene"
|
||||
importer_version=1
|
||||
type="PackedScene"
|
||||
uid="uid://bmrkrdqab7j0d"
|
||||
path="res://.godot/imported/joeb.fbx-04bcb3a9e82d030b03e324c35b2a25c5.scn"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://joeb.fbx"
|
||||
dest_files=["res://.godot/imported/joeb.fbx-04bcb3a9e82d030b03e324c35b2a25c5.scn"]
|
||||
|
||||
[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=true
|
||||
animation/remove_immutable_tracks=true
|
||||
animation/import_rest_as_RESET=false
|
||||
import_script/path=""
|
||||
_subresources={}
|
||||
fbx/importer=0
|
||||
fbx/allow_geometry_helper_nodes=false
|
||||
fbx/embedded_image_handling=1
|
BIN
logo.png
Normal file
After Width: | Height: | Size: 8 KiB |
34
logo.png.import
Normal file
|
@ -0,0 +1,34 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://d1xcwdjibb6ql"
|
||||
path="res://.godot/imported/logo.png-cca8726399059c8d4f806e28e356b14d.ctex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://logo.png"
|
||||
dest_files=["res://.godot/imported/logo.png-cca8726399059c8d4f806e28e356b14d.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
|
BIN
menu.ogv
Normal file
1
menu.ogv.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cxiq6k74yeqdg
|
107
node_3d.tscn
Normal file
6
play_button.gd
Normal file
|
@ -0,0 +1,6 @@
|
|||
extends TextureButton
|
||||
|
||||
|
||||
func _on_pressed() -> void:
|
||||
print("hellloooo :)")
|
||||
get_tree().change_scene_to_file("res://node_3d.tscn") # Replace with function body.
|
1
play_button.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://cpf02igyl2jn3
|
51
project.godot
Normal file
|
@ -0,0 +1,51 @@
|
|||
; 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="vivisu"
|
||||
run/main_scene="uid://cxllykh18amy3"
|
||||
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||
config/icon="res://icon.svg"
|
||||
|
||||
[display]
|
||||
|
||||
window/size/viewport_width=480
|
||||
window/size/viewport_height=360
|
||||
window/stretch/mode="viewport"
|
||||
window/vsync/vsync_mode=0
|
||||
|
||||
[input]
|
||||
|
||||
move_forward={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
move_backwards={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
move_right={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
move_left={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
jump={
|
||||
"deadzone": 0.2,
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
121
psx_camera/camera_example.tscn
Normal file
|
@ -0,0 +1,121 @@
|
|||
[gd_scene load_steps=15 format=3 uid="uid://cpw3h80y7gl2o"]
|
||||
|
||||
[ext_resource type="Texture2D" uid="uid://xhjx1xkwj7xt" path="res://Thumbnail.png" id="1_mesaj"]
|
||||
[ext_resource type="Shader" path="res://psx_camera/psx_camera_shader.gdshader" id="1_nv63b"]
|
||||
[ext_resource type="Script" path="res://psx_camera/fly_camera.gd" id="3_4w045"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_lialc"]
|
||||
|
||||
[sub_resource type="Sky" id="Sky_n7fr2"]
|
||||
sky_material = SubResource("ProceduralSkyMaterial_lialc")
|
||||
|
||||
[sub_resource type="Environment" id="Environment_nd8w7"]
|
||||
background_mode = 2
|
||||
sky = SubResource("Sky_n7fr2")
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ndpt6"]
|
||||
albedo_color = Color(0.423529, 0.423529, 0.423529, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ji24u"]
|
||||
albedo_color = Color(1, 0.341176, 0.227451, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_on2fo"]
|
||||
albedo_color = Color(0.439216, 0.905882, 0.411765, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_daf8o"]
|
||||
albedo_color = Color(0.129412, 0.337255, 0.6, 1)
|
||||
|
||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_r7yvx"]
|
||||
albedo_texture = ExtResource("1_mesaj")
|
||||
|
||||
[sub_resource type="PlaneMesh" id="PlaneMesh_7lkts"]
|
||||
size = Vector2(40, 40)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_2rap5"]
|
||||
render_priority = 0
|
||||
shader = ExtResource("1_nv63b")
|
||||
shader_parameter/enable_fog = true
|
||||
shader_parameter/fog_color = Color(0.729412, 0.729412, 0.729412, 1)
|
||||
shader_parameter/noise_color = null
|
||||
shader_parameter/fog_distance = 100.0
|
||||
shader_parameter/fog_fade_range = 50.0
|
||||
shader_parameter/enable_noise = false
|
||||
shader_parameter/noise_time_fac = 4.0
|
||||
shader_parameter/enable_color_limitation = true
|
||||
shader_parameter/color_levels = 32
|
||||
shader_parameter/enable_dithering = false
|
||||
shader_parameter/dither_strength = 0.3
|
||||
|
||||
[sub_resource type="QuadMesh" id="QuadMesh_afu2w"]
|
||||
material = SubResource("ShaderMaterial_2rap5")
|
||||
flip_faces = true
|
||||
size = Vector2(2, 2)
|
||||
|
||||
[node name="CameraExample" type="Node3D"]
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_nd8w7")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="WorldEnvironment"]
|
||||
transform = Transform3D(-0.5, -0.866025, 0, -0.433013, 0.25, 0.866025, -0.75, 0.433013, -0.5, 0, 0, 0)
|
||||
|
||||
[node name="Ground" type="CSGBox3D" parent="."]
|
||||
size = Vector3(100, 0.5, 100)
|
||||
material = SubResource("StandardMaterial3D_ndpt6")
|
||||
|
||||
[node name="CSGBox3D" type="CSGBox3D" parent="Ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -23.0747, 4.39386, -20.6396)
|
||||
size = Vector3(2, 10, 2)
|
||||
material = SubResource("StandardMaterial3D_ji24u")
|
||||
|
||||
[node name="CSGBox3D2" type="CSGBox3D" parent="Ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -24.1164, 2.76483, 1.43046)
|
||||
size = Vector3(2, 10, 2)
|
||||
material = SubResource("StandardMaterial3D_ji24u")
|
||||
|
||||
[node name="CSGBox3D3" type="CSGBox3D" parent="Ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -29.5345, 2.76483, -11.7604)
|
||||
size = Vector3(2, 10, 2)
|
||||
material = SubResource("StandardMaterial3D_ji24u")
|
||||
|
||||
[node name="CSGBox3D4" type="CSGBox3D" parent="Ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.7025, 2.76483, -17.091)
|
||||
size = Vector3(2, 10, 2)
|
||||
material = SubResource("StandardMaterial3D_ji24u")
|
||||
|
||||
[node name="CSGCylinder3D" type="CSGCylinder3D" parent="Ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5.94478, 2.21119, 0.607769)
|
||||
radius = 1.634
|
||||
height = 9.699
|
||||
material = SubResource("StandardMaterial3D_on2fo")
|
||||
|
||||
[node name="CSGCylinder3D2" type="CSGCylinder3D" parent="Ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -14.715, 4.30806, -17.2889)
|
||||
radius = 1.634
|
||||
height = 9.699
|
||||
material = SubResource("StandardMaterial3D_on2fo")
|
||||
|
||||
[node name="CSGCylinder3D3" type="CSGCylinder3D" parent="Ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -10.9614, 4.30806, 13.0696)
|
||||
radius = 1.634
|
||||
height = 9.699
|
||||
material = SubResource("StandardMaterial3D_on2fo")
|
||||
|
||||
[node name="CSGBox3D5" type="CSGBox3D" parent="Ground"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 16.0303, 2.07957, 4.96235)
|
||||
size = Vector3(4, 4, 4)
|
||||
material = SubResource("StandardMaterial3D_daf8o")
|
||||
|
||||
[node name="CSGBox3D6" type="MeshInstance3D" parent="Ground"]
|
||||
transform = Transform3D(-1, -8.74228e-08, -4.37114e-08, 4.37114e-08, 1.91069e-15, -1, 8.74228e-08, -1, 1.91069e-15, 40.0303, 19.6051, 33.7786)
|
||||
material_override = SubResource("StandardMaterial3D_r7yvx")
|
||||
mesh = SubResource("PlaneMesh_7lkts")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(0.565125, 0, 0.825005, 0, 1, 0, -0.825005, 0, 0.565125, 21.597, 19.8935, 18.5922)
|
||||
script = ExtResource("3_4w045")
|
||||
max_speed = 100.0
|
||||
|
||||
[node name="PSXMesh" type="MeshInstance3D" parent="Camera3D"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0763102, 0, -0.55748)
|
||||
mesh = SubResource("QuadMesh_afu2w")
|
47
psx_camera/fly_camera.gd
Normal file
|
@ -0,0 +1,47 @@
|
|||
extends Camera3D
|
||||
|
||||
@export_range(0, 10, 0.01) var sensitivity : float = 3
|
||||
@export_range(0, 1000, 0.1) var default_velocity : float = 5
|
||||
@export_range(0, 10, 0.01) var speed_scale : float = 1.17
|
||||
@export_range(1, 100, 0.1) var boost_speed_multiplier : float = 3.0
|
||||
@export var max_speed : float = 1000
|
||||
@export var min_speed : float = 0.2
|
||||
|
||||
@onready var _velocity = default_velocity
|
||||
|
||||
func _input(event):
|
||||
if not current:
|
||||
return
|
||||
|
||||
if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
|
||||
if event is InputEventMouseMotion:
|
||||
rotation.y -= event.relative.x / 1000 * sensitivity
|
||||
rotation.x -= event.relative.y / 1000 * sensitivity
|
||||
rotation.x = clamp(rotation.x, PI/-2, PI/2)
|
||||
|
||||
if event is InputEventMouseButton:
|
||||
match event.button_index:
|
||||
MOUSE_BUTTON_RIGHT:
|
||||
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED if event.pressed else Input.MOUSE_MODE_VISIBLE)
|
||||
MOUSE_BUTTON_WHEEL_UP: # increase fly velocity
|
||||
_velocity = clamp(_velocity * speed_scale, min_speed, max_speed)
|
||||
MOUSE_BUTTON_WHEEL_DOWN: # decrease fly velocity
|
||||
_velocity = clamp(_velocity / speed_scale, min_speed, max_speed)
|
||||
if event is InputEventKey:
|
||||
if event.pressed and event.keycode == KEY_ESCAPE:
|
||||
get_tree().quit()
|
||||
|
||||
func _process(delta):
|
||||
if not current:
|
||||
return
|
||||
|
||||
var direction = Vector3(
|
||||
float(Input.is_physical_key_pressed(KEY_D)) - float(Input.is_physical_key_pressed(KEY_A)),
|
||||
float(Input.is_physical_key_pressed(KEY_E)) - float(Input.is_physical_key_pressed(KEY_Q)),
|
||||
float(Input.is_physical_key_pressed(KEY_S)) - float(Input.is_physical_key_pressed(KEY_W))
|
||||
).normalized()
|
||||
|
||||
if Input.is_physical_key_pressed(KEY_SHIFT): # boost
|
||||
translate(direction * _velocity * delta * boost_speed_multiplier)
|
||||
else:
|
||||
translate(direction * _velocity * delta)
|
1
psx_camera/fly_camera.gd.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://drcrxbadq7j2s
|
80
psx_camera/psx_camera_shader.gdshader
Normal file
|
@ -0,0 +1,80 @@
|
|||
shader_type spatial;
|
||||
render_mode cull_disabled, unshaded;
|
||||
uniform sampler2D depth_texture : source_color, hint_depth_texture;
|
||||
uniform sampler2D screen_texture : source_color, hint_screen_texture, repeat_disable, filter_nearest;
|
||||
|
||||
uniform bool enable_fog = true;
|
||||
uniform vec3 fog_color : source_color;
|
||||
uniform vec3 noise_color : source_color;
|
||||
uniform float fog_distance : hint_range(1, 6000) = 100;
|
||||
uniform float fog_fade_range : hint_range(1, 6000) = 50;
|
||||
uniform bool enable_noise = true;
|
||||
uniform float noise_time_fac : hint_range(0.1, 10) = 4;
|
||||
uniform bool enable_color_limitation = true;
|
||||
uniform int color_levels : hint_range(2, 256) = 32;
|
||||
uniform bool enable_dithering = true;
|
||||
uniform float dither_strength : hint_range(0.0, 1.0) = 0.3;
|
||||
|
||||
float hashOld12(vec2 p){
|
||||
return fract(sin(dot(p, vec2(12.9898, 78.233))) * 43758.5453 + (TIME / noise_time_fac)) ;
|
||||
}
|
||||
|
||||
vec3 color_mix(vec3 a, vec3 b, float f ){
|
||||
f = clamp(abs(f), 0,1);
|
||||
float invf = 1.0 - f;
|
||||
return (a*f) + (b*invf);
|
||||
}
|
||||
|
||||
vec3 quantize_color(vec3 color, int levels) {
|
||||
float quantizer = float(levels - 1);
|
||||
return floor(color * quantizer + 0.5) / quantizer;
|
||||
}
|
||||
|
||||
float dither(vec2 position, float brightness) {
|
||||
int x = int(mod(position.x, 4.0));
|
||||
int y = int(mod(position.y, 4.0));
|
||||
int index = x + y * 4;
|
||||
float dithering[16] = float[](
|
||||
0.0, 0.5, 0.125, 0.625,
|
||||
0.75, 0.25, 0.875, 0.375,
|
||||
0.1875, 0.6875, 0.0625, 0.5625,
|
||||
0.9375, 0.4375, 1.0, 0.8125
|
||||
);
|
||||
float threshold = dithering[index];
|
||||
return brightness < threshold ? 0.0 : 1.0;
|
||||
}
|
||||
|
||||
void vertex() {
|
||||
POSITION = vec4(VERTEX.xy, 1.0, 1.0);
|
||||
}
|
||||
|
||||
void fragment(){
|
||||
vec3 screen_color = texture(screen_texture, SCREEN_UV).rgb;
|
||||
vec2 screen_coords = SCREEN_UV * 2.0 - 1.0;
|
||||
float depth = texture(depth_texture, SCREEN_UV).x;
|
||||
vec3 ndc = vec3(screen_coords, depth);
|
||||
|
||||
vec4 view = INV_PROJECTION_MATRIX * vec4(ndc, 1.0);
|
||||
view.xyz /= view.w;
|
||||
|
||||
float linear_depth = -view.z;
|
||||
float depth_mask_inv = clamp((linear_depth - (fog_distance - fog_fade_range)) / fog_fade_range, 0.0, 1.0);
|
||||
vec3 final_color = screen_color;
|
||||
|
||||
if (enable_noise){
|
||||
vec3 twocolornoise = color_mix(fog_color, noise_color, hashOld12(screen_coords));
|
||||
final_color = color_mix(twocolornoise, final_color, depth_mask_inv);
|
||||
}
|
||||
if (enable_fog){
|
||||
final_color = color_mix(fog_color, final_color, depth_mask_inv);
|
||||
}
|
||||
if (enable_color_limitation){
|
||||
final_color = quantize_color(final_color, color_levels);
|
||||
}
|
||||
if (enable_dithering){
|
||||
float brightness = dot(final_color, vec3(0.3, 0.59, 0.11));
|
||||
brightness += dither_strength * (dither(FRAGCOORD.xy, brightness) - 0.5);
|
||||
final_color *= (1.0 + dither_strength * (dither(FRAGCOORD.xy, brightness) - 0.5));
|
||||
}
|
||||
ALBEDO = final_color;
|
||||
}
|
1
psx_camera/psx_camera_shader.gdshader.uid
Normal file
|
@ -0,0 +1 @@
|
|||
uid://c1ws5xtabtopc
|
BIN
smileyface.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
35
smileyface.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://evvl4jklinky"
|
||||
path.s3tc="res://.godot/imported/smileyface.png-989fffe7f7b0c3b9d1ef51ca2d304bc2.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://smileyface.png"
|
||||
dest_files=["res://.godot/imported/smileyface.png-989fffe7f7b0c3b9d1ef51ca2d304bc2.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
|
BIN
spinning_logo.gif
Normal file
After Width: | Height: | Size: 67 KiB |
BIN
vote_chafee.png
Normal file
After Width: | Height: | Size: 10 KiB |
35
vote_chafee.png.import
Normal file
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="CompressedTexture2D"
|
||||
uid="uid://c64onof3uwdef"
|
||||
path.s3tc="res://.godot/imported/vote_chafee.png-07d8147f5dda02e91f83d558f7020a23.s3tc.ctex"
|
||||
metadata={
|
||||
"imported_formats": ["s3tc_bptc"],
|
||||
"vram_texture": true
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://vote_chafee.png"
|
||||
dest_files=["res://.godot/imported/vote_chafee.png-07d8147f5dda02e91f83d558f7020a23.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
|