first commit
10
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Godot 4+ specific ignores
|
||||||
|
.godot/
|
||||||
|
|
||||||
|
# Export folders
|
||||||
|
Build/Windows/*
|
||||||
|
!Build/Windows/.gitkeep
|
||||||
|
Build/Mac/*
|
||||||
|
!Build/Mac/.gitkeep
|
||||||
|
Build/Linux/*
|
||||||
|
!Build/Linux/.gitkeep
|
||||||
9
Audio/ATTRIBUTION
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
day_bg.ogg is "Ambience-garden daytime" (https://freesound.org/people/Eelke/sounds/593637/) by Eelke Dekker (http://www.eelkedekker.nl/) licensed under CC BY-NC 4.0 (https://creativecommons.org/licenses/by-nc/4.0/)
|
||||||
|
night_bg.ogg is "Coronavirus Spring night.mp3" (https://freesound.org/people/Aldelri/sounds/511351/) by Aldelri (https://freesound.org/people/Aldelri/) licensed under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/)
|
||||||
|
daymusic.ogg is "Placeholder" (https://placeholder) by Placeholder (https://placeholder) licensed under Placeholder (https://placeholder)
|
||||||
|
nightmusic.ogg is "Placeholder" (https://placeholder) by Placeholder (https://placeholder) licensed under Placeholder (https://placeholder)
|
||||||
|
Prop Sounds/Placeholder/Bump1.wav is adapted from "Bumping into table ." (https://freesound.org/people/Edelhanie/sounds/594660/) by Edelhanie (https://freesound.org/people/Edelhanie/) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
Prop Sounds/Placeholder/Bump2.wav is adapted from "Bumping into table ." (https://freesound.org/people/Edelhanie/sounds/594660/) by Edelhanie (https://freesound.org/people/Edelhanie/) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
Prop Sounds/Placeholder/Bump3.wav is adapted from "Bumping into table ." (https://freesound.org/people/Edelhanie/sounds/594660/) by Edelhanie (https://freesound.org/people/Edelhanie/) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
Prop Sounds/Placeholder/Scrape.wav is adapted from "Scrape" (https://freesound.org/people/Caitlin_100/sounds/398405/) by Caitlin_100 (https://freesound.org/people/Caitlin_100/) licensed under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/)
|
||||||
|
foliage_rustling.wav is adapted from "Leaves Rustling" (https://freesound.org/people/ericnorcross81/sounds/570759/) by Eric Norcross (https://www.ericnorcross.com/) licensed under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/)
|
||||||
BIN
Audio/Prop Sounds/Placeholder/Bump1.wav
Normal file
24
Audio/Prop Sounds/Placeholder/Bump1.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://brle6bd58h4h2"
|
||||||
|
path="res://.godot/imported/Bump1.wav-da7355727f2527d5ece053b795f44520.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/Prop Sounds/Placeholder/Bump1.wav"
|
||||||
|
dest_files=["res://.godot/imported/Bump1.wav-da7355727f2527d5ece053b795f44520.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Audio/Prop Sounds/Placeholder/Bump2.wav
Normal file
24
Audio/Prop Sounds/Placeholder/Bump2.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bstv5aj6pm5xu"
|
||||||
|
path="res://.godot/imported/Bump2.wav-de438e5c4650994546b7e5f9b9a78692.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/Prop Sounds/Placeholder/Bump2.wav"
|
||||||
|
dest_files=["res://.godot/imported/Bump2.wav-de438e5c4650994546b7e5f9b9a78692.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Audio/Prop Sounds/Placeholder/Bump3.wav
Normal file
24
Audio/Prop Sounds/Placeholder/Bump3.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bn5hg5d1ypbxh"
|
||||||
|
path="res://.godot/imported/Bump3.wav-e281c4d4ae91e34190ec2a82a2deeec2.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/Prop Sounds/Placeholder/Bump3.wav"
|
||||||
|
dest_files=["res://.godot/imported/Bump3.wav-e281c4d4ae91e34190ec2a82a2deeec2.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Audio/Prop Sounds/Placeholder/Scrape.wav
Normal file
24
Audio/Prop Sounds/Placeholder/Scrape.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://qi7xfi47dn6t"
|
||||||
|
path="res://.godot/imported/Scrape.wav-a4138a92321c1ea69e90ec687bb653ef.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/Prop Sounds/Placeholder/Scrape.wav"
|
||||||
|
dest_files=["res://.godot/imported/Scrape.wav-a4138a92321c1ea69e90ec687bb653ef.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=2
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
15
Audio/ReferenceVolumes.md
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
Overall gameplay should apparantly be integrated -16 LKFS, how to measure?
|
||||||
|
Using Half Life 2's Black Mesa East level as reference for now 😅
|
||||||
|
|
||||||
|
Based off these reference values, futz the loudness values of everything else
|
||||||
|
If you're making an actual game, will probably have to include reference values for things like gunfire/swords clanging/magic effects, vehicle sounds, dialogue, UI sounds
|
||||||
|
|
||||||
|
Reference:
|
||||||
|
Footsteps: -28 dB normalized RMS
|
||||||
|
Ambient background audio: -48 dB normalized RMS
|
||||||
|
Physics prop impact: -24 dB normalized RMS
|
||||||
|
Physics prop scrape: -35 dB normalized RMS
|
||||||
|
|
||||||
|
Futzed:
|
||||||
|
Foliage rustling: -46 dB normalized RMS
|
||||||
|
Music: -24 dB normalized RMS, at least for this demo specifically due to the demo's low audio in general
|
||||||
BIN
Audio/day_bg.ogg
Normal file
19
Audio/day_bg.ogg.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://b6rc81y5wriln"
|
||||||
|
path="res://.godot/imported/day_bg.ogg-a1b58bd4479d53651a68f01d94005875.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/day_bg.ogg"
|
||||||
|
dest_files=["res://.godot/imported/day_bg.ogg-a1b58bd4479d53651a68f01d94005875.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=true
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
Audio/daymusic.ogg
Normal file
19
Audio/daymusic.ogg.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://ck4j2cl1itpcg"
|
||||||
|
path="res://.godot/imported/daymusic.ogg-3533cf067644563074e4112afa6c9d08.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/daymusic.ogg"
|
||||||
|
dest_files=["res://.godot/imported/daymusic.ogg-3533cf067644563074e4112afa6c9d08.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=true
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
Audio/foliage_rustling.wav
Normal file
24
Audio/foliage_rustling.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://wurbxhuocgd0"
|
||||||
|
path="res://.godot/imported/foliage_rustling.wav-7b9417cda54bf1efceac1c3ae0b959e1.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/foliage_rustling.wav"
|
||||||
|
dest_files=["res://.godot/imported/foliage_rustling.wav-7b9417cda54bf1efceac1c3ae0b959e1.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=2
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Audio/night_bg.ogg
Normal file
19
Audio/night_bg.ogg.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://cngxal8rdb5mj"
|
||||||
|
path="res://.godot/imported/night_bg.ogg-91f1b004df71a2022152860021af76ee.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/night_bg.ogg"
|
||||||
|
dest_files=["res://.godot/imported/night_bg.ogg-91f1b004df71a2022152860021af76ee.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=true
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
BIN
Audio/nightmusic.ogg
Normal file
19
Audio/nightmusic.ogg.import
Normal file
|
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="oggvorbisstr"
|
||||||
|
type="AudioStreamOggVorbis"
|
||||||
|
uid="uid://uie3maxhbtg1"
|
||||||
|
path="res://.godot/imported/nightmusic.ogg-535fd9a8abf13e85f79baf8fcaebdc7e.oggvorbisstr"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Audio/nightmusic.ogg"
|
||||||
|
dest_files=["res://.godot/imported/nightmusic.ogg-535fd9a8abf13e85f79baf8fcaebdc7e.oggvorbisstr"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=true
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
||||||
0
Build/Linux/.gitkeep
Normal file
0
Build/Mac/.gitkeep
Normal file
0
Build/Windows/.gitkeep
Normal file
2
Godot-Human-For-Scale/.gitattributes
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Normalize EOL for all files that Git considers text files.
|
||||||
|
* text=auto eol=lf
|
||||||
15
Godot-Human-For-Scale/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
# Godot 4+ specific ignores
|
||||||
|
.godot/
|
||||||
|
|
||||||
|
# Godot-specific ignores
|
||||||
|
.import/
|
||||||
|
export.cfg
|
||||||
|
export_presets.cfg
|
||||||
|
|
||||||
|
# Imported translations (automatically generated from CSV files)
|
||||||
|
*.translation
|
||||||
|
|
||||||
|
# Mono-specific ignores
|
||||||
|
.mono/
|
||||||
|
data_*/
|
||||||
|
mono_crash.*.json
|
||||||
7
Godot-Human-For-Scale/Assets/AnimationEventReciever.gd
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
extends Node3D
|
||||||
|
|
||||||
|
func _on_right_footstep():
|
||||||
|
$"../../"._on_right_footstep()
|
||||||
|
|
||||||
|
func _on_left_footstep():
|
||||||
|
$"../../"._on_left_footstep()
|
||||||
7
Godot-Human-For-Scale/Assets/Audio/ATTRIBUTION
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
Footstep1.wav is adapted from "Hard Female Footstep (1)" (https://freesound.org/people/OwlStorm/sounds/151232/) by Ashe Kirk (https://owlisharts.com.au/) licensed under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/)
|
||||||
|
Footstep2.wav is adapted from "Hard Female Footstep (2)" (https://freesound.org/people/OwlStorm/sounds/151238/) by Ashe Kirk (https://owlisharts.com.au/) licensed under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/)
|
||||||
|
Footstep3.wav is adapted from "Hard Female Footstep (3)" (https://freesound.org/people/OwlStorm/sounds/151237/) by Ashe Kirk (https://owlisharts.com.au/) licensed under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/)
|
||||||
|
Footstep4.wav is adapted from "Hard Female Footstep (4)" (https://freesound.org/people/OwlStorm/sounds/151222/) by Ashe Kirk (https://owlisharts.com.au/) licensed under CC0 1.0 (https://creativecommons.org/publicdomain/zero/1.0/)
|
||||||
|
Bump1.wav is adapted from "Bumping into table ." (https://freesound.org/people/Edelhanie/sounds/594660/) by Edelhanie (https://freesound.org/people/Edelhanie/) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
Bump2.wav is adapted from "Bumping into table ." (https://freesound.org/people/Edelhanie/sounds/594660/) by Edelhanie (https://freesound.org/people/Edelhanie/) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
Bump3.wav is adapted from "Bumping into table ." (https://freesound.org/people/Edelhanie/sounds/594660/) by Edelhanie (https://freesound.org/people/Edelhanie/) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
BIN
Godot-Human-For-Scale/Assets/Audio/Bump1.wav
Normal file
24
Godot-Human-For-Scale/Assets/Audio/Bump1.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://wlfxh2fk3uo4"
|
||||||
|
path="res://.godot/imported/Bump1.wav-86e21734930da5dd5f70e13ae6033892.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/Audio/Bump1.wav"
|
||||||
|
dest_files=["res://.godot/imported/Bump1.wav-86e21734930da5dd5f70e13ae6033892.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Godot-Human-For-Scale/Assets/Audio/Bump2.wav
Normal file
24
Godot-Human-For-Scale/Assets/Audio/Bump2.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://d3akgfcnosypu"
|
||||||
|
path="res://.godot/imported/Bump2.wav-db13fa83dc05253c3bef24ac7e96be20.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/Audio/Bump2.wav"
|
||||||
|
dest_files=["res://.godot/imported/Bump2.wav-db13fa83dc05253c3bef24ac7e96be20.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Godot-Human-For-Scale/Assets/Audio/Bump3.wav
Normal file
24
Godot-Human-For-Scale/Assets/Audio/Bump3.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://b64ceruixmwxb"
|
||||||
|
path="res://.godot/imported/Bump3.wav-de0db89a76cae7e5f43066cd856f62f0.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/Audio/Bump3.wav"
|
||||||
|
dest_files=["res://.godot/imported/Bump3.wav-de0db89a76cae7e5f43066cd856f62f0.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Godot-Human-For-Scale/Assets/Audio/Footstep1.wav
Normal file
24
Godot-Human-For-Scale/Assets/Audio/Footstep1.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://dsfef5dgmtub1"
|
||||||
|
path="res://.godot/imported/Footstep1.wav-d8c61782915b1c4234ab79f4f67e0201.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/Audio/Footstep1.wav"
|
||||||
|
dest_files=["res://.godot/imported/Footstep1.wav-d8c61782915b1c4234ab79f4f67e0201.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Godot-Human-For-Scale/Assets/Audio/Footstep2.wav
Normal file
24
Godot-Human-For-Scale/Assets/Audio/Footstep2.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cmwvrkhxcdfu0"
|
||||||
|
path="res://.godot/imported/Footstep2.wav-2c1691471c28d5a0eb1ff50090c8577c.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/Audio/Footstep2.wav"
|
||||||
|
dest_files=["res://.godot/imported/Footstep2.wav-2c1691471c28d5a0eb1ff50090c8577c.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Godot-Human-For-Scale/Assets/Audio/Footstep3.wav
Normal file
24
Godot-Human-For-Scale/Assets/Audio/Footstep3.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bs52hi1t1mgqk"
|
||||||
|
path="res://.godot/imported/Footstep3.wav-2d3212a8f55f6b6c9bf422c7aeac7e6c.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/Audio/Footstep3.wav"
|
||||||
|
dest_files=["res://.godot/imported/Footstep3.wav-2d3212a8f55f6b6c9bf422c7aeac7e6c.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
BIN
Godot-Human-For-Scale/Assets/Audio/Footstep4.wav
Normal file
24
Godot-Human-For-Scale/Assets/Audio/Footstep4.wav.import
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://s524bsmk11py"
|
||||||
|
path="res://.godot/imported/Footstep4.wav-0686a63e8d4a67f0a77bcb40009d3de2.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/Audio/Footstep4.wav"
|
||||||
|
dest_files=["res://.godot/imported/Footstep4.wav-0686a63e8d4a67f0a77bcb40009d3de2.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=true
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=1
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
||||||
6
Godot-Human-For-Scale/Assets/BumpAudio.tscn
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://c5r7pinh8okrp"]
|
||||||
|
|
||||||
|
[ext_resource type="AudioStream" uid="uid://wlfxh2fk3uo4" path="res://Godot-Human-For-Scale/Assets/Audio/Bump1.wav" id="1_dljov"]
|
||||||
|
|
||||||
|
[node name="BumpAudio" type="AudioStreamPlayer3D"]
|
||||||
|
stream = ExtResource("1_dljov")
|
||||||
737
Godot-Human-For-Scale/Assets/HumanController.gd
Normal file
|
|
@ -0,0 +1,737 @@
|
||||||
|
extends CharacterBody3D
|
||||||
|
|
||||||
|
@export_category("Extra Options")
|
||||||
|
@export var enable_physics_gun: bool = false
|
||||||
|
@export var enable_depth_of_field: bool = false
|
||||||
|
@export var disable_shadow_in_first_person: bool = false
|
||||||
|
@export var enable_audio: bool = false
|
||||||
|
@export var flashlight_intensity: float = 1.0
|
||||||
|
|
||||||
|
# --- Stuff you might be interested in tweaking ---
|
||||||
|
const LOOK_SENSITIVITY = 0.0025
|
||||||
|
const MOVE_MULT = 1.4
|
||||||
|
const RUN_MULT = 1.25
|
||||||
|
const FP_FOV = 75.0
|
||||||
|
const TP_FOV = 60.0
|
||||||
|
const ZOOM_MULT = 0.35
|
||||||
|
const DOF_AREA_SOFTNESS = 1.15
|
||||||
|
const DOF_AREA_SIZE_MULTIPLIER = 0.0
|
||||||
|
const DOF_MAX_RANGE = 1000.0
|
||||||
|
const FLASHLIGHT_ANGLE = 35.0
|
||||||
|
# WARNING: in Godot Jolt physics damping seems to have inconsistent behavior between different physics tick rates
|
||||||
|
const PHYSICS_GUN_DAMPING = 30.0
|
||||||
|
const PHYSICS_GUN_PULL_FORCE = 800.0
|
||||||
|
const PHYSICS_GUN_SHOOT_FORCE = 13.0
|
||||||
|
const PHYSICS_GUN_HOLD_DISTANCE = 2.5
|
||||||
|
const PHYSICS_GUN_PULL_RANGE = 15.0
|
||||||
|
# --- Stuff you might be interested in tweaking ---
|
||||||
|
|
||||||
|
const FP_CAMERA_HEIGHT = 1.655
|
||||||
|
const TP_CAMERA_HEIGHT = 1.544
|
||||||
|
const TP_CAMERA_OFFSET = 0.5
|
||||||
|
const TP_CAMERA_DISTANCE = 2.1
|
||||||
|
const FLASHLIGHT_DISTANCE_FROM_MODEL = 0.35
|
||||||
|
const TRANSITION_SPEED = 0.25
|
||||||
|
const LOOK_LIMIT_UPPER = 1.25
|
||||||
|
const LOOK_LIMIT_LOWER = -1.25
|
||||||
|
const ANIM_MOVE_SPEED = 3.0
|
||||||
|
const ANIM_RUN_SPEED = 5.5
|
||||||
|
const JUMP_LAND_TIMEOUT = 0.1
|
||||||
|
const NOCLIP_MULT = 4.0
|
||||||
|
const ROTATE_SPEED = 12.0
|
||||||
|
const STEP_HEIGHT = 0.25
|
||||||
|
const JUMP_FORCE = 15.0
|
||||||
|
const GRAVITY_FORCE = 50.0
|
||||||
|
# 285 seems to be enough to move a max of 200kg
|
||||||
|
const COLLIDE_FORCE = 200.0
|
||||||
|
const MAX_PUSHABLE_WEIGHT = 200.0
|
||||||
|
const PHYSICS_GUN_PULL_MARGIN = 2.0
|
||||||
|
const PHYSICS_GUN_PULL_WIDTH = 0.8
|
||||||
|
const TOGGLE_COOLDOWN = 0.25
|
||||||
|
const DOF_MOVE_SPEED = 30.0
|
||||||
|
const DOF_INTENSITY = 0.25
|
||||||
|
const BUMP_AUDIO_TIMEOUT = 0.15
|
||||||
|
const BUMP_AUDIO_FORCE_THRESHOLD = 400.0
|
||||||
|
const BUMP_AUDIO_VOLUME_DB = -20.0
|
||||||
|
const BUMP_AUDIO_ATTENUATION_THRESHOLD = 0.2
|
||||||
|
|
||||||
|
var move_direction = Vector3.ZERO
|
||||||
|
var move_direction_no_y = Vector3.ZERO
|
||||||
|
var camera_rotation = Quaternion.IDENTITY
|
||||||
|
var camera_rotation_no_y = Quaternion.IDENTITY
|
||||||
|
var is_off_floor_duration = 0.0
|
||||||
|
var is_on_floor_duration = 0.0
|
||||||
|
var has_landed_from_fall = false
|
||||||
|
var boot_sound_timeout = true
|
||||||
|
var noclip_on = false
|
||||||
|
var noclip_toggle_cooldown = 0.0
|
||||||
|
var flashlight_on = false
|
||||||
|
var flashlight_toggle_cooldown = 0.0
|
||||||
|
var cam_is_fp = false
|
||||||
|
var cam_toggle_cooldown = 0.0
|
||||||
|
var cam_is_zoomed = false
|
||||||
|
var cam_zoom_cooldown = 0.0
|
||||||
|
var dof_target_distance = 0.0
|
||||||
|
var dof_amount_to_apply = 0.0
|
||||||
|
var shoulder_is_swapped = false
|
||||||
|
var shoulder_cooldown = 0.0
|
||||||
|
var mousecapture_on = true
|
||||||
|
var mousecapture_toggle_cooldown = 0.0
|
||||||
|
var physics_gun_cooldown = 0.0
|
||||||
|
var is_cam_transitioning = false
|
||||||
|
var input_velocity = Vector3.ZERO
|
||||||
|
var orig_transform = Transform3D.IDENTITY
|
||||||
|
var rigidbody_collisions = []
|
||||||
|
var colliders_in_contact = []
|
||||||
|
var collider_bump_cooldowns = []
|
||||||
|
var physics_gun_has_grabbed = false
|
||||||
|
var physics_gun_object = null
|
||||||
|
var physics_gun_object_linear_damp = 0.0
|
||||||
|
var physics_gun_object_angular_damp = 0.0
|
||||||
|
var physics_gun_hit_point = Vector3.ZERO
|
||||||
|
|
||||||
|
var mouse_movement = Vector2.ZERO
|
||||||
|
var forward_isdown = false
|
||||||
|
var backward_isdown = false
|
||||||
|
var left_isdown = false
|
||||||
|
var right_isdown = false
|
||||||
|
var cam_toggle_isdown = false
|
||||||
|
var noclip_isdown = false
|
||||||
|
var flashlight_isdown = false
|
||||||
|
var sprint_isdown = false
|
||||||
|
var jump_isdown = false
|
||||||
|
var mousecapture_isdown = false
|
||||||
|
var zoom_isdown = false
|
||||||
|
var shoulder_isdown = false
|
||||||
|
var physics_gun_fire_isdown = false
|
||||||
|
|
||||||
|
@onready var model_root = $"ModelRoot"
|
||||||
|
@onready var anim_player = $"ModelRoot/HumanModel/AnimationPlayer"
|
||||||
|
@onready var player_mesh = $"ModelRoot/HumanModel/root/Skeleton3D/mannequiny"
|
||||||
|
@onready var collision_shape = $"CollisionShape"
|
||||||
|
@onready var camera_pivot = $"CameraPivot"
|
||||||
|
@onready var spring_arm = $"CameraPivot/SpringArm"
|
||||||
|
@onready var camera = $"CameraPivot/SpringArm/Camera"
|
||||||
|
@onready var focus_ray = $"CameraPivot/SpringArm/Camera/RayCast3D"
|
||||||
|
@onready var audio_listener = $"CameraPivot/SpringArm/Camera/AudioListener3D"
|
||||||
|
@onready var right_footstep = $"ModelRoot/HumanModel/root/Skeleton3D/RightFootLocation/FootstepPlayer"
|
||||||
|
@onready var left_footstep = $"ModelRoot/HumanModel/root/Skeleton3D/LeftFootLocation/FootstepPlayer"
|
||||||
|
@onready var jump_land_audio = $"ModelRoot/JumpLandPlayer"
|
||||||
|
@onready var physics_object_collector = $"CameraPivot/SpringArm/PhysicsGun/PhysicsObjectCollector"
|
||||||
|
@onready var physics_object_collector_collider = $"CameraPivot/SpringArm/PhysicsGun/PhysicsObjectCollector/CollisionShape3D"
|
||||||
|
@onready var physics_gun_raycast = $"CameraPivot/SpringArm/PhysicsGun/RayCast3D"
|
||||||
|
@onready var flashlight_pin = $"ModelRoot/HumanModel/root/Skeleton3D/FlashlightPin/FlashlightOffset"
|
||||||
|
@onready var flashlight = $"ModelRoot/HumanModel/root/Skeleton3D/FlashlightPin/FlashlightOffset/SpotLight3D"
|
||||||
|
|
||||||
|
@onready var bump_audio = load("res://Godot-Human-For-Scale/Assets/BumpAudio.tscn")
|
||||||
|
|
||||||
|
@onready var footstep_sounds = [
|
||||||
|
load("res://Godot-Human-For-Scale/Assets/Audio/Footstep1.wav"),
|
||||||
|
load("res://Godot-Human-For-Scale/Assets/Audio/Footstep2.wav"),
|
||||||
|
load("res://Godot-Human-For-Scale/Assets/Audio/Footstep3.wav"),
|
||||||
|
load("res://Godot-Human-For-Scale/Assets/Audio/Footstep4.wav")
|
||||||
|
]
|
||||||
|
|
||||||
|
@onready var bump_sounds = [
|
||||||
|
load("res://Godot-Human-For-Scale/Assets/Audio/Bump1.wav"),
|
||||||
|
load("res://Godot-Human-For-Scale/Assets/Audio/Bump2.wav"),
|
||||||
|
load("res://Godot-Human-For-Scale/Assets/Audio/Bump3.wav")
|
||||||
|
]
|
||||||
|
|
||||||
|
func _ready():
|
||||||
|
var y_rotation = Vector3(0.0, global_rotation.y, 0.0)
|
||||||
|
|
||||||
|
global_rotation = Vector3.ZERO
|
||||||
|
|
||||||
|
physics_object_collector_collider.shape.height = PHYSICS_GUN_PULL_RANGE
|
||||||
|
physics_object_collector_collider.shape.radius = PHYSICS_GUN_PULL_WIDTH
|
||||||
|
physics_object_collector_collider.position.z = -(PHYSICS_GUN_PULL_RANGE/2)
|
||||||
|
physics_gun_raycast.target_position.z = -PHYSICS_GUN_PULL_RANGE
|
||||||
|
|
||||||
|
camera_pivot.global_rotation = y_rotation
|
||||||
|
model_root.global_rotation = y_rotation
|
||||||
|
camera_rotation = Quaternion.from_euler(camera_pivot.global_rotation)
|
||||||
|
camera_rotation_no_y = Quaternion.from_euler(camera_pivot.global_rotation)
|
||||||
|
|
||||||
|
flashlight.light_energy = flashlight_intensity
|
||||||
|
flashlight.spot_angle = FLASHLIGHT_ANGLE
|
||||||
|
|
||||||
|
camera.make_current()
|
||||||
|
|
||||||
|
if enable_depth_of_field:
|
||||||
|
hijack_camera_attributes()
|
||||||
|
|
||||||
|
if enable_audio:
|
||||||
|
audio_listener.make_current()
|
||||||
|
|
||||||
|
await get_tree().create_timer(0.25).timeout
|
||||||
|
boot_sound_timeout = false
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
process_camera()
|
||||||
|
process_off_on_floor_time(delta)
|
||||||
|
process_movement()
|
||||||
|
process_animation(delta)
|
||||||
|
process_mousecapture(delta)
|
||||||
|
process_noclip(delta)
|
||||||
|
process_flashlight(delta)
|
||||||
|
process_cam_toggle(delta)
|
||||||
|
process_cam_zoom(delta)
|
||||||
|
process_shoulder_swap(delta)
|
||||||
|
process_physics_gun_fire(delta)
|
||||||
|
process_dof(delta)
|
||||||
|
|
||||||
|
var move_speed = ANIM_MOVE_SPEED * MOVE_MULT
|
||||||
|
if sprint_isdown:
|
||||||
|
move_speed = ANIM_RUN_SPEED * RUN_MULT
|
||||||
|
|
||||||
|
if noclip_on:
|
||||||
|
velocity = move_direction * (move_speed * NOCLIP_MULT)
|
||||||
|
else:
|
||||||
|
velocity.x = move_direction_no_y.x * move_speed
|
||||||
|
velocity.z = move_direction_no_y.z * move_speed
|
||||||
|
if !is_on_floor():
|
||||||
|
velocity.y -= GRAVITY_FORCE * delta
|
||||||
|
if jump_isdown and is_on_floor():
|
||||||
|
velocity.y = JUMP_FORCE
|
||||||
|
play_jump_land_sound()
|
||||||
|
|
||||||
|
if is_on_floor_duration >= JUMP_LAND_TIMEOUT and !has_landed_from_fall:
|
||||||
|
has_landed_from_fall = true
|
||||||
|
play_jump_land_sound()
|
||||||
|
if is_off_floor_duration >= JUMP_LAND_TIMEOUT and has_landed_from_fall:
|
||||||
|
has_landed_from_fall = false
|
||||||
|
|
||||||
|
input_velocity = velocity
|
||||||
|
orig_transform = global_transform
|
||||||
|
|
||||||
|
move_and_slide()
|
||||||
|
|
||||||
|
rigidbody_collisions = []
|
||||||
|
|
||||||
|
var has_stairstepped = stairstepping(orig_transform, delta)
|
||||||
|
|
||||||
|
# Rigidbody interactions don't play nice with stairstepping ☹️
|
||||||
|
if !has_stairstepped:
|
||||||
|
collate_rigidbody_interactions()
|
||||||
|
|
||||||
|
flashlight.global_position = flashlight_pin.global_position
|
||||||
|
var backwards = Basis(camera_rotation_no_y).z
|
||||||
|
var up = flashlight_pin.global_basis.y
|
||||||
|
var right = up.cross(backwards)
|
||||||
|
flashlight.global_basis = Basis(right, up, right.cross(up)).orthonormalized()
|
||||||
|
flashlight.position = flashlight.position + (-flashlight.basis.z * FLASHLIGHT_DISTANCE_FROM_MODEL)
|
||||||
|
flashlight.global_rotation = camera_pivot.global_rotation
|
||||||
|
|
||||||
|
func _physics_process(delta):
|
||||||
|
process_physics_gun(delta)
|
||||||
|
|
||||||
|
var collide_force = COLLIDE_FORCE * delta
|
||||||
|
var central_multiplier = input_velocity.length() * collide_force
|
||||||
|
|
||||||
|
var collider_indexes_still_in_contact = []
|
||||||
|
var colliders_still_in_contact = []
|
||||||
|
var non_expired_cooldowns = []
|
||||||
|
|
||||||
|
for collision in rigidbody_collisions:
|
||||||
|
if collision.get_collider() == null:
|
||||||
|
continue
|
||||||
|
var collider = collision.get_collider()
|
||||||
|
var weight = collider.mass
|
||||||
|
var direction = -collision.get_normal()
|
||||||
|
var mult_actual = lerp(0.0, central_multiplier, ease_out_circ(weight/MAX_PUSHABLE_WEIGHT))
|
||||||
|
|
||||||
|
collider.apply_central_impulse(direction * mult_actual)
|
||||||
|
collider_indexes_still_in_contact.append(colliders_in_contact.find(collider))
|
||||||
|
|
||||||
|
if !colliders_in_contact.has(collider):
|
||||||
|
colliders_in_contact.append(collider)
|
||||||
|
var volume_scale = mult_actual/(BUMP_AUDIO_FORCE_THRESHOLD * delta)
|
||||||
|
if volume_scale > BUMP_AUDIO_ATTENUATION_THRESHOLD:
|
||||||
|
var has_collider = false
|
||||||
|
for cooldown in collider_bump_cooldowns:
|
||||||
|
if cooldown["collider"] != null and cooldown["collider"] == collider:
|
||||||
|
has_collider = true
|
||||||
|
break
|
||||||
|
if !has_collider:
|
||||||
|
play_bump_audio(collision.get_position(), volume_scale)
|
||||||
|
var cooldown = {"collider": collider, "cooldown": BUMP_AUDIO_TIMEOUT}
|
||||||
|
collider_bump_cooldowns.append(cooldown)
|
||||||
|
|
||||||
|
for index in collider_indexes_still_in_contact:
|
||||||
|
colliders_still_in_contact.append(colliders_in_contact[index])
|
||||||
|
|
||||||
|
colliders_in_contact = colliders_still_in_contact
|
||||||
|
|
||||||
|
for cooldown in collider_bump_cooldowns:
|
||||||
|
cooldown["cooldown"] -= delta
|
||||||
|
|
||||||
|
for cooldown in collider_bump_cooldowns:
|
||||||
|
if cooldown["cooldown"] > 0.0:
|
||||||
|
non_expired_cooldowns.append(cooldown)
|
||||||
|
|
||||||
|
collider_bump_cooldowns = non_expired_cooldowns
|
||||||
|
|
||||||
|
func stairstepping(starting_transform, delta):
|
||||||
|
if (input_velocity.x == 0 and input_velocity.z == 0) or noclip_on or !is_on_floor() or !is_on_wall():
|
||||||
|
return false
|
||||||
|
|
||||||
|
var collision_out = KinematicCollision3D.new()
|
||||||
|
var begin_transform = starting_transform
|
||||||
|
var test_direction = Vector3.UP * STEP_HEIGHT
|
||||||
|
# Test to above current position
|
||||||
|
var can_not_step = test_move(begin_transform, test_direction)
|
||||||
|
|
||||||
|
if can_not_step:
|
||||||
|
return false
|
||||||
|
|
||||||
|
begin_transform.origin = begin_transform.origin + test_direction
|
||||||
|
test_direction = Vector3(input_velocity.x, 0, input_velocity.z) * delta
|
||||||
|
# Then, test towards player's direction running into wall
|
||||||
|
can_not_step = test_move(begin_transform, test_direction)
|
||||||
|
|
||||||
|
if can_not_step:
|
||||||
|
return false
|
||||||
|
|
||||||
|
begin_transform.origin = begin_transform.origin + test_direction
|
||||||
|
test_direction = Vector3.DOWN * STEP_HEIGHT
|
||||||
|
# Then, test downwards
|
||||||
|
can_not_step = test_move(begin_transform, test_direction, collision_out)
|
||||||
|
|
||||||
|
if can_not_step:
|
||||||
|
# If we hit something, teleport towards hit location
|
||||||
|
begin_transform.origin = begin_transform.origin + collision_out.get_travel()
|
||||||
|
else:
|
||||||
|
# If we hit nothing, teleport back to original height
|
||||||
|
begin_transform.origin = begin_transform.origin + test_direction
|
||||||
|
|
||||||
|
# Without the buffer the player can fail to make steps, especially at higher framerates
|
||||||
|
var step_landing_buffer = floor_snap_length - safe_margin
|
||||||
|
begin_transform.origin = begin_transform.origin + (Vector3.UP * step_landing_buffer)
|
||||||
|
global_transform = begin_transform
|
||||||
|
return true
|
||||||
|
|
||||||
|
func collate_rigidbody_interactions():
|
||||||
|
for index in get_slide_collision_count():
|
||||||
|
if get_slide_collision(index) == null:
|
||||||
|
continue
|
||||||
|
var collision = get_slide_collision(index)
|
||||||
|
if collision.get_collider() is RigidBody3D:
|
||||||
|
rigidbody_collisions.append(collision)
|
||||||
|
|
||||||
|
func _on_right_footstep():
|
||||||
|
if !enable_audio:
|
||||||
|
return
|
||||||
|
right_footstep.stream = footstep_sounds.pick_random()
|
||||||
|
right_footstep.play()
|
||||||
|
|
||||||
|
func _on_left_footstep():
|
||||||
|
if !enable_audio:
|
||||||
|
return
|
||||||
|
left_footstep.stream = footstep_sounds.pick_random()
|
||||||
|
left_footstep.play()
|
||||||
|
|
||||||
|
func play_jump_land_sound():
|
||||||
|
if !enable_audio or boot_sound_timeout:
|
||||||
|
return
|
||||||
|
if !left_footstep.playing or !right_footstep.playing:
|
||||||
|
jump_land_audio.stream = footstep_sounds.pick_random()
|
||||||
|
jump_land_audio.play()
|
||||||
|
|
||||||
|
func play_bump_audio(global_audio_position, volume_scale):
|
||||||
|
if !enable_audio:
|
||||||
|
return
|
||||||
|
var spawned_bump_audio = bump_audio.instantiate()
|
||||||
|
get_tree().root.get_child(0).add_child(spawned_bump_audio)
|
||||||
|
spawned_bump_audio.global_position = global_audio_position
|
||||||
|
spawned_bump_audio.stream = bump_sounds.pick_random()
|
||||||
|
volume_scale = clamp(volume_scale, 0.0, 1.0)
|
||||||
|
spawned_bump_audio.volume_db = lerp(-80.0, BUMP_AUDIO_VOLUME_DB, ease_out_circ(volume_scale))
|
||||||
|
spawned_bump_audio.play()
|
||||||
|
await get_tree().create_timer(0.5).timeout
|
||||||
|
spawned_bump_audio.queue_free()
|
||||||
|
|
||||||
|
func process_off_on_floor_time(delta):
|
||||||
|
if is_on_floor():
|
||||||
|
is_on_floor_duration += delta
|
||||||
|
is_off_floor_duration = 0.0
|
||||||
|
else:
|
||||||
|
is_on_floor_duration = 0.0
|
||||||
|
is_off_floor_duration += delta
|
||||||
|
is_on_floor_duration = clamp(is_on_floor_duration, 0.0, JUMP_LAND_TIMEOUT)
|
||||||
|
is_off_floor_duration = clamp(is_off_floor_duration, 0.0, JUMP_LAND_TIMEOUT)
|
||||||
|
|
||||||
|
func process_camera():
|
||||||
|
var camera_rotation_euler = camera_rotation.get_euler()
|
||||||
|
|
||||||
|
if mousecapture_on:
|
||||||
|
camera_rotation_euler += Vector3(mouse_movement.y, mouse_movement.x, 0.0) * LOOK_SENSITIVITY
|
||||||
|
camera_rotation_euler.x = clamp(camera_rotation_euler.x, LOOK_LIMIT_LOWER, LOOK_LIMIT_UPPER)
|
||||||
|
|
||||||
|
camera_rotation = Quaternion.from_euler(camera_rotation_euler)
|
||||||
|
camera_pivot.global_basis = Basis(camera_rotation)
|
||||||
|
camera_rotation_no_y = Basis(camera_pivot.global_basis.x, Vector3.UP, camera_pivot.global_basis.z).get_rotation_quaternion()
|
||||||
|
|
||||||
|
mouse_movement = Vector2.ZERO
|
||||||
|
|
||||||
|
func process_movement():
|
||||||
|
var input_direction = Vector3.ZERO
|
||||||
|
|
||||||
|
if forward_isdown:
|
||||||
|
input_direction.z -= 1.0
|
||||||
|
if backward_isdown:
|
||||||
|
input_direction.z += 1.0
|
||||||
|
if left_isdown:
|
||||||
|
input_direction.x -= 1.0
|
||||||
|
if right_isdown:
|
||||||
|
input_direction.x += 1.0
|
||||||
|
|
||||||
|
move_direction = camera_rotation * input_direction
|
||||||
|
move_direction_no_y = camera_rotation_no_y * input_direction
|
||||||
|
move_direction = move_direction.normalized()
|
||||||
|
move_direction_no_y = move_direction_no_y.normalized()
|
||||||
|
|
||||||
|
func process_animation(delta):
|
||||||
|
if is_off_floor_duration >= JUMP_LAND_TIMEOUT:
|
||||||
|
switch_anim("Fall")
|
||||||
|
elif move_direction != Vector3.ZERO:
|
||||||
|
if sprint_isdown:
|
||||||
|
switch_anim("Run", RUN_MULT)
|
||||||
|
else:
|
||||||
|
switch_anim("Jog", MOVE_MULT)
|
||||||
|
else:
|
||||||
|
switch_anim("Idle")
|
||||||
|
|
||||||
|
if move_direction != Vector3.ZERO:
|
||||||
|
model_root.global_basis = basis_rotate_toward(model_root.global_basis, Basis.looking_at(move_direction_no_y), ROTATE_SPEED * delta)
|
||||||
|
|
||||||
|
func process_mousecapture(delta):
|
||||||
|
if mousecapture_isdown and mousecapture_toggle_cooldown == 0.0:
|
||||||
|
mousecapture_on = !mousecapture_on
|
||||||
|
mousecapture_toggle_cooldown = TOGGLE_COOLDOWN
|
||||||
|
|
||||||
|
if mousecapture_on:
|
||||||
|
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
|
||||||
|
else:
|
||||||
|
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
|
||||||
|
|
||||||
|
mousecapture_toggle_cooldown -= delta
|
||||||
|
mousecapture_toggle_cooldown = clamp(mousecapture_toggle_cooldown, 0.0, TOGGLE_COOLDOWN)
|
||||||
|
|
||||||
|
func process_noclip(delta):
|
||||||
|
if noclip_isdown and noclip_toggle_cooldown == 0.0:
|
||||||
|
noclip_on = !noclip_on
|
||||||
|
collision_shape.disabled = !collision_shape.disabled
|
||||||
|
noclip_toggle_cooldown = TOGGLE_COOLDOWN
|
||||||
|
|
||||||
|
noclip_toggle_cooldown -= delta
|
||||||
|
noclip_toggle_cooldown = clamp(noclip_toggle_cooldown, 0.0, TOGGLE_COOLDOWN)
|
||||||
|
|
||||||
|
func process_flashlight(delta):
|
||||||
|
if flashlight_isdown and flashlight_toggle_cooldown == 0.0:
|
||||||
|
flashlight_on = !flashlight_on
|
||||||
|
flashlight.visible = flashlight_on
|
||||||
|
flashlight_toggle_cooldown = TOGGLE_COOLDOWN
|
||||||
|
|
||||||
|
flashlight_toggle_cooldown -= delta
|
||||||
|
flashlight_toggle_cooldown = clamp(flashlight_toggle_cooldown, 0.0, TOGGLE_COOLDOWN)
|
||||||
|
|
||||||
|
func process_cam_toggle(delta):
|
||||||
|
if cam_toggle_isdown and cam_toggle_cooldown == 0.0 and !is_cam_transitioning:
|
||||||
|
cam_is_fp = !cam_is_fp
|
||||||
|
cam_toggle_cooldown = TOGGLE_COOLDOWN
|
||||||
|
cam_transition()
|
||||||
|
|
||||||
|
cam_toggle_cooldown -= delta
|
||||||
|
cam_toggle_cooldown = clamp(cam_toggle_cooldown, 0.0, TOGGLE_COOLDOWN)
|
||||||
|
|
||||||
|
func process_cam_zoom(delta):
|
||||||
|
if !mousecapture_on:
|
||||||
|
return
|
||||||
|
|
||||||
|
if zoom_isdown and cam_zoom_cooldown == 0.0 and !is_cam_transitioning:
|
||||||
|
cam_is_zoomed = !cam_is_zoomed
|
||||||
|
cam_zoom_cooldown = TOGGLE_COOLDOWN
|
||||||
|
cam_transition()
|
||||||
|
|
||||||
|
cam_zoom_cooldown -= delta
|
||||||
|
cam_zoom_cooldown = clamp(cam_zoom_cooldown, 0.0, TOGGLE_COOLDOWN)
|
||||||
|
|
||||||
|
func process_shoulder_swap(delta):
|
||||||
|
if shoulder_isdown and !cam_is_fp and shoulder_cooldown == 0.0 and !is_cam_transitioning:
|
||||||
|
shoulder_is_swapped = !shoulder_is_swapped
|
||||||
|
shoulder_cooldown = TOGGLE_COOLDOWN
|
||||||
|
cam_transition()
|
||||||
|
|
||||||
|
shoulder_cooldown -= delta
|
||||||
|
shoulder_cooldown = clamp(shoulder_cooldown, 0.0, TOGGLE_COOLDOWN)
|
||||||
|
|
||||||
|
func process_physics_gun_fire(delta):
|
||||||
|
if !enable_physics_gun or !mousecapture_on:
|
||||||
|
return
|
||||||
|
|
||||||
|
if physics_gun_fire_isdown and physics_gun_cooldown == 0.0:
|
||||||
|
if physics_gun_has_grabbed:
|
||||||
|
fire_physics_gun()
|
||||||
|
else:
|
||||||
|
grab_physics_gun()
|
||||||
|
physics_gun_cooldown = TOGGLE_COOLDOWN
|
||||||
|
|
||||||
|
physics_gun_cooldown -= delta
|
||||||
|
physics_gun_cooldown = clamp(physics_gun_cooldown, 0.0, TOGGLE_COOLDOWN)
|
||||||
|
|
||||||
|
func grab_physics_gun():
|
||||||
|
var rigidbodies_detected = []
|
||||||
|
|
||||||
|
for node in physics_object_collector.get_overlapping_bodies():
|
||||||
|
if node is RigidBody3D:
|
||||||
|
rigidbodies_detected.append(node)
|
||||||
|
|
||||||
|
if physics_gun_raycast.is_colliding():
|
||||||
|
physics_gun_hit_point = physics_gun_raycast.get_collision_point()
|
||||||
|
else:
|
||||||
|
physics_gun_hit_point = spring_arm.global_position
|
||||||
|
|
||||||
|
rigidbodies_detected.sort_custom(rigidbody_distance_sort)
|
||||||
|
|
||||||
|
if rigidbodies_detected.size() == 0 or rigidbodies_detected[0] == null:
|
||||||
|
return
|
||||||
|
|
||||||
|
physics_gun_object = rigidbodies_detected[0]
|
||||||
|
|
||||||
|
physics_gun_object_linear_damp = physics_gun_object.linear_damp
|
||||||
|
physics_gun_object_angular_damp = physics_gun_object.angular_damp
|
||||||
|
physics_gun_object.linear_damp = PHYSICS_GUN_DAMPING
|
||||||
|
physics_gun_object.angular_damp = PHYSICS_GUN_DAMPING
|
||||||
|
|
||||||
|
physics_gun_has_grabbed = true
|
||||||
|
|
||||||
|
func rigidbody_distance_sort(rigidbody_a, rigidbody_b):
|
||||||
|
if physics_gun_hit_point.distance_to(rigidbody_a.global_position) < physics_gun_hit_point.distance_to(rigidbody_b.global_position):
|
||||||
|
return true
|
||||||
|
else:
|
||||||
|
return false
|
||||||
|
|
||||||
|
func fire_physics_gun():
|
||||||
|
physics_gun_has_grabbed = false
|
||||||
|
|
||||||
|
physics_gun_object.linear_damp = physics_gun_object_linear_damp
|
||||||
|
physics_gun_object.angular_damp = physics_gun_object_angular_damp
|
||||||
|
|
||||||
|
physics_gun_object.linear_velocity = Vector3.ZERO
|
||||||
|
physics_gun_object.angular_velocity = Vector3.ZERO
|
||||||
|
physics_gun_object.constant_force = Vector3.ZERO
|
||||||
|
|
||||||
|
physics_gun_object.apply_central_impulse(-camera_pivot.basis.z * (PHYSICS_GUN_SHOOT_FORCE * physics_gun_object.mass))
|
||||||
|
|
||||||
|
func process_physics_gun(delta):
|
||||||
|
if !enable_physics_gun or !physics_gun_has_grabbed:
|
||||||
|
return
|
||||||
|
|
||||||
|
if physics_gun_object == null:
|
||||||
|
physics_gun_has_grabbed = false
|
||||||
|
return
|
||||||
|
|
||||||
|
var physics_gun_hold_location = camera_pivot.global_position + (-camera_pivot.global_basis.z * PHYSICS_GUN_HOLD_DISTANCE)
|
||||||
|
|
||||||
|
var lerp_force = physics_gun_hold_location.distance_to(physics_gun_object.global_position) / PHYSICS_GUN_PULL_MARGIN
|
||||||
|
lerp_force = clamp(lerp_force, 0.0, 1.0)
|
||||||
|
|
||||||
|
var physics_gun_suck = physics_gun_object.global_position.direction_to(physics_gun_hold_location) * PHYSICS_GUN_PULL_FORCE
|
||||||
|
physics_gun_suck = physics_gun_suck * physics_gun_object.mass
|
||||||
|
physics_gun_suck = lerp(Vector3.ZERO, physics_gun_suck, lerp_force)
|
||||||
|
|
||||||
|
physics_gun_object.constant_force = physics_gun_suck
|
||||||
|
|
||||||
|
func cam_transition():
|
||||||
|
if is_cam_transitioning:
|
||||||
|
return
|
||||||
|
|
||||||
|
var fov
|
||||||
|
var offset
|
||||||
|
|
||||||
|
if cam_is_zoomed:
|
||||||
|
if cam_is_fp:
|
||||||
|
fov = FP_FOV * ZOOM_MULT
|
||||||
|
else:
|
||||||
|
fov = TP_FOV * ZOOM_MULT
|
||||||
|
else:
|
||||||
|
if cam_is_fp:
|
||||||
|
fov = FP_FOV
|
||||||
|
else:
|
||||||
|
fov = TP_FOV
|
||||||
|
|
||||||
|
if shoulder_is_swapped:
|
||||||
|
offset = -TP_CAMERA_OFFSET
|
||||||
|
else:
|
||||||
|
offset = TP_CAMERA_OFFSET
|
||||||
|
|
||||||
|
if cam_is_fp:
|
||||||
|
cam_transitioning(FP_CAMERA_HEIGHT, 0.0, 0.0, fov, false)
|
||||||
|
else:
|
||||||
|
cam_transitioning(TP_CAMERA_HEIGHT, offset, TP_CAMERA_DISTANCE, fov, true)
|
||||||
|
|
||||||
|
func cam_transitioning(height, offset, length, fov, mesh_visible):
|
||||||
|
is_cam_transitioning = true
|
||||||
|
|
||||||
|
var time = Time.get_ticks_msec()
|
||||||
|
var orig_height = camera_pivot.position.y
|
||||||
|
var orig_offset = spring_arm.position.x
|
||||||
|
var orig_length = spring_arm.spring_length
|
||||||
|
var orig_fov = camera.fov
|
||||||
|
|
||||||
|
if mesh_visible:
|
||||||
|
if disable_shadow_in_first_person:
|
||||||
|
player_mesh.visible = true
|
||||||
|
else:
|
||||||
|
player_mesh.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_ON
|
||||||
|
|
||||||
|
while is_cam_transitioning:
|
||||||
|
var current_time = Time.get_ticks_msec()
|
||||||
|
var lerp = (current_time - time)/(TRANSITION_SPEED * 1000.0)
|
||||||
|
|
||||||
|
if lerp >= 1.0:
|
||||||
|
camera_pivot.position.y = height
|
||||||
|
spring_arm.position.x = offset
|
||||||
|
spring_arm.spring_length = length
|
||||||
|
camera.fov = fov
|
||||||
|
if !mesh_visible:
|
||||||
|
if disable_shadow_in_first_person:
|
||||||
|
player_mesh.visible = false
|
||||||
|
else:
|
||||||
|
player_mesh.cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_SHADOWS_ONLY
|
||||||
|
is_cam_transitioning = false
|
||||||
|
break
|
||||||
|
|
||||||
|
camera_pivot.position.y = lerp(orig_height, height, ease_in_out_sine(lerp))
|
||||||
|
spring_arm.position.x = lerp(orig_offset, offset, ease_in_out_sine(lerp))
|
||||||
|
# Adjusting spring_length is jittery. Likely only updates on physics process.
|
||||||
|
spring_arm.spring_length = lerp(orig_length, length, lerp)
|
||||||
|
# So if you're noticing jitter when switching cams, ^ this lerp is responsible.
|
||||||
|
camera.fov = lerp(orig_fov, fov, ease_in_out_sine(lerp))
|
||||||
|
|
||||||
|
await get_tree().process_frame
|
||||||
|
|
||||||
|
func process_dof(delta):
|
||||||
|
if camera.attributes == null or !enable_depth_of_field:
|
||||||
|
return
|
||||||
|
|
||||||
|
var target_distance = DOF_MAX_RANGE
|
||||||
|
if focus_ray.is_colliding():
|
||||||
|
target_distance = camera.global_position.distance_to(focus_ray.get_collision_point())
|
||||||
|
var blur_amount = DOF_INTENSITY
|
||||||
|
if !cam_is_zoomed:
|
||||||
|
blur_amount = 0.0
|
||||||
|
var distance_multiplier = 0.75
|
||||||
|
var coming_back_bonus_multiplier = 3.4
|
||||||
|
if target_distance < dof_target_distance:
|
||||||
|
distance_multiplier = distance_multiplier * coming_back_bonus_multiplier
|
||||||
|
var distance_additional = abs(dof_target_distance - target_distance)
|
||||||
|
distance_additional = distance_additional * distance_multiplier
|
||||||
|
var adjusted_dof_move_speed = DOF_MOVE_SPEED + distance_additional
|
||||||
|
|
||||||
|
dof_target_distance = move_toward(dof_target_distance, target_distance, adjusted_dof_move_speed * delta)
|
||||||
|
dof_amount_to_apply = move_toward(dof_amount_to_apply, blur_amount, 0.45 * delta)
|
||||||
|
|
||||||
|
camera.attributes.dof_blur_near_distance = dof_target_distance - (dof_target_distance * DOF_AREA_SIZE_MULTIPLIER)
|
||||||
|
camera.attributes.dof_blur_near_transition = dof_target_distance * DOF_AREA_SOFTNESS
|
||||||
|
camera.attributes.dof_blur_far_distance = dof_target_distance + (dof_target_distance * DOF_AREA_SIZE_MULTIPLIER)
|
||||||
|
camera.attributes.dof_blur_far_transition = dof_target_distance * DOF_AREA_SOFTNESS
|
||||||
|
|
||||||
|
if dof_amount_to_apply < 0.001:
|
||||||
|
camera.attributes.dof_blur_far_enabled = false
|
||||||
|
camera.attributes.dof_blur_near_distance = 0.5
|
||||||
|
camera.attributes.dof_blur_near_transition = 0.25
|
||||||
|
camera.attributes.dof_blur_amount = 0.1
|
||||||
|
else:
|
||||||
|
camera.attributes.dof_blur_far_enabled = true
|
||||||
|
camera.attributes.dof_blur_amount = dof_amount_to_apply
|
||||||
|
|
||||||
|
func hijack_camera_attributes():
|
||||||
|
var cams_or_envs = []
|
||||||
|
cams_or_envs += get_tree().current_scene.find_children("*", "Camera3D", true)
|
||||||
|
cams_or_envs += get_tree().current_scene.find_children("*", "WorldEnvironment", true)
|
||||||
|
var hijacked_attributes = null
|
||||||
|
|
||||||
|
for node in cams_or_envs:
|
||||||
|
if node is Camera3D:
|
||||||
|
if node.attributes != null:
|
||||||
|
hijacked_attributes = node.attributes
|
||||||
|
break
|
||||||
|
if node is WorldEnvironment:
|
||||||
|
if node.camera_attributes != null:
|
||||||
|
hijacked_attributes = node.camera_attributes
|
||||||
|
break
|
||||||
|
|
||||||
|
camera.attributes = assert_practical_attributes(hijacked_attributes)
|
||||||
|
|
||||||
|
camera.attributes.dof_blur_near_enabled = true
|
||||||
|
focus_ray.target_position.z = -DOF_MAX_RANGE
|
||||||
|
|
||||||
|
func assert_practical_attributes(attributes):
|
||||||
|
var practical_attributes = CameraAttributesPractical.new()
|
||||||
|
|
||||||
|
if attributes != null:
|
||||||
|
if attributes is CameraAttributesPractical:
|
||||||
|
practical_attributes = attributes
|
||||||
|
else:
|
||||||
|
push_warning("CameraAttributesPhysical not supported. Making a CameraAttributesPractical duplicate for Godot-Human-For-Scale's camera.")
|
||||||
|
practical_attributes.auto_exposure_enabled = attributes.auto_exposure_enabled
|
||||||
|
practical_attributes.auto_exposure_scale = attributes.auto_exposure_scale
|
||||||
|
practical_attributes.auto_exposure_speed = attributes.auto_exposure_speed
|
||||||
|
practical_attributes.exposure_multiplier = attributes.exposure_multiplier
|
||||||
|
practical_attributes.exposure_sensitivity = attributes.exposure_sensitivity
|
||||||
|
|
||||||
|
return practical_attributes
|
||||||
|
|
||||||
|
func _unhandled_input(event):
|
||||||
|
if event is InputEventMouseMotion:
|
||||||
|
mouse_movement -= event.relative
|
||||||
|
|
||||||
|
if event is InputEventMouseButton:
|
||||||
|
match event.button_index:
|
||||||
|
MOUSE_BUTTON_LEFT:
|
||||||
|
physics_gun_fire_isdown = event.pressed
|
||||||
|
MOUSE_BUTTON_RIGHT:
|
||||||
|
zoom_isdown = event.pressed
|
||||||
|
|
||||||
|
if event is InputEventKey:
|
||||||
|
match event.keycode:
|
||||||
|
KEY_W:
|
||||||
|
forward_isdown = event.pressed
|
||||||
|
KEY_S:
|
||||||
|
backward_isdown = event.pressed
|
||||||
|
KEY_A:
|
||||||
|
left_isdown = event.pressed
|
||||||
|
KEY_D:
|
||||||
|
right_isdown = event.pressed
|
||||||
|
KEY_V:
|
||||||
|
cam_toggle_isdown = event.pressed
|
||||||
|
KEY_F:
|
||||||
|
flashlight_isdown = event.pressed
|
||||||
|
KEY_QUOTELEFT:
|
||||||
|
noclip_isdown = event.pressed
|
||||||
|
KEY_SHIFT:
|
||||||
|
sprint_isdown = event.pressed
|
||||||
|
KEY_SPACE:
|
||||||
|
jump_isdown = event.pressed
|
||||||
|
KEY_ESCAPE:
|
||||||
|
mousecapture_isdown = event.pressed
|
||||||
|
KEY_TAB:
|
||||||
|
shoulder_isdown = event.pressed
|
||||||
|
|
||||||
|
func switch_anim(anim, speed = 1.0):
|
||||||
|
if anim_player.current_animation != anim:
|
||||||
|
anim_player.play(anim, -1, speed)
|
||||||
|
|
||||||
|
func quat_rotate_toward(from: Quaternion, to: Quaternion, delta: float) -> Quaternion:
|
||||||
|
return from.slerp(to, clamp(delta / from.angle_to(to), 0.0, 1.0)).normalized()
|
||||||
|
|
||||||
|
func basis_rotate_toward(from: Basis, to: Basis, delta: float) -> Basis:
|
||||||
|
return Basis(quat_rotate_toward(from.get_rotation_quaternion(), to.get_rotation_quaternion(), delta)).orthonormalized()
|
||||||
|
|
||||||
|
func ease_in_out_sine(lerp: float) -> float:
|
||||||
|
return -(cos(PI * lerp) - 1.0) / 2.0
|
||||||
|
|
||||||
|
func ease_out_circ(lerp: float) -> float:
|
||||||
|
return sqrt(1.0 - pow(lerp - 1.0, 2.0))
|
||||||
116
Godot-Human-For-Scale/Assets/HumanModel.tscn
Normal file
|
|
@ -0,0 +1,116 @@
|
||||||
|
[gd_scene load_steps=9 format=3 uid="uid://73ou0sg30v8f"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://cuhiiv3vccg28" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/mannequiny-0.3.0.gltf" id="1_3duc2"]
|
||||||
|
[ext_resource type="Script" path="res://Godot-Human-For-Scale/Assets/AnimationEventReciever.gd" id="2_18j06"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://dsfef5dgmtub1" path="res://Godot-Human-For-Scale/Assets/Audio/Footstep1.wav" id="2_be2ba"]
|
||||||
|
[ext_resource type="Animation" uid="uid://cacaxk4m7r6l2" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Animations/Fall.res" id="4_e7ttl"]
|
||||||
|
[ext_resource type="Animation" uid="uid://dqxlpgixueq2i" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Animations/Idle.res" id="5_ajc8x"]
|
||||||
|
[ext_resource type="Animation" uid="uid://bg3x42c3k07nv" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Animations/Jog.res" id="6_mcv6c"]
|
||||||
|
[ext_resource type="Animation" uid="uid://da1wm70ulke5c" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Animations/Run.res" id="7_lqrri"]
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_brjo7"]
|
||||||
|
_data = {
|
||||||
|
"Fall": ExtResource("4_e7ttl"),
|
||||||
|
"Idle": ExtResource("5_ajc8x"),
|
||||||
|
"Jog": ExtResource("6_mcv6c"),
|
||||||
|
"Run": ExtResource("7_lqrri")
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="HumanModel" instance=ExtResource("1_3duc2")]
|
||||||
|
script = ExtResource("2_18j06")
|
||||||
|
|
||||||
|
[node name="root" parent="." index="0"]
|
||||||
|
transform = Transform3D(0.999967, 0.0077059, -0.00241611, -0.00763905, 0.999618, 0.0265542, 0.00261981, -0.0265349, 0.999644, -0.00898413, -0.00822556, 0.0141531)
|
||||||
|
|
||||||
|
[node name="Skeleton3D" parent="root" index="0"]
|
||||||
|
bones/1/rotation = Quaternion(0.623379, 0.170163, 0.75412, 0.117246)
|
||||||
|
bones/1/scale = Vector3(0.999998, 1.02948, 1)
|
||||||
|
bones/2/rotation = Quaternion(-0.0339712, -0.0766686, 0.258708, 0.962309)
|
||||||
|
bones/3/rotation = Quaternion(0.397912, 0.446693, -0.312425, 0.737917)
|
||||||
|
bones/3/scale = Vector3(0.999276, 0.988352, 0.984898)
|
||||||
|
bones/4/rotation = Quaternion(0.0445843, 0.944741, 0.324771, 6.96345e-05)
|
||||||
|
bones/4/scale = Vector3(1.00017, 0.98632, 1.01332)
|
||||||
|
bones/6/rotation = Quaternion(-0.690329, 0.159451, 0.701374, -0.0780745)
|
||||||
|
bones/6/scale = Vector3(0.999997, 1.01196, 0.999997)
|
||||||
|
bones/7/rotation = Quaternion(-0.0197414, 0.035997, -0.168215, 0.984895)
|
||||||
|
bones/8/rotation = Quaternion(0.342098, -0.453762, 0.278344, 0.774334)
|
||||||
|
bones/8/scale = Vector3(0.999917, 0.994349, 0.994111)
|
||||||
|
bones/9/rotation = Quaternion(-0.0447127, 0.946473, 0.319672, 0.000639243)
|
||||||
|
bones/9/scale = Vector3(1.00002, 0.994301, 1.00566)
|
||||||
|
bones/11/rotation = Quaternion(-0.114042, -0.0181651, -0.00332899, 0.993304)
|
||||||
|
bones/12/rotation = Quaternion(-0.052832, -0.0262887, -0.00159427, 0.998256)
|
||||||
|
bones/13/rotation = Quaternion(0.189847, 0.0136276, -0.0115613, 0.981651)
|
||||||
|
bones/14/rotation = Quaternion(-0.147989, -0.00124491, -0.0145878, 0.988881)
|
||||||
|
bones/16/rotation = Quaternion(-0.466666, 0.616072, -0.478841, -0.416402)
|
||||||
|
bones/17/rotation = Quaternion(0.506634, 0.586758, 0.387859, 0.498601)
|
||||||
|
bones/18/rotation = Quaternion(0.183408, -2.99254e-09, 0.145737, 0.972174)
|
||||||
|
bones/18/scale = Vector3(1, 0.999753, 1)
|
||||||
|
bones/19/rotation = Quaternion(-0.0720714, 0.450376, -0.124458, 0.881179)
|
||||||
|
bones/19/scale = Vector3(0.999999, 1.00024, 1)
|
||||||
|
bones/20/rotation = Quaternion(-0.0722769, -0.812991, 0.176529, 0.550144)
|
||||||
|
bones/21/rotation = Quaternion(0.00266666, -0.347864, 0.0252803, 0.9372)
|
||||||
|
bones/22/rotation = Quaternion(-0.00242808, 0.437221, -0.0326412, 0.898758)
|
||||||
|
bones/24/rotation = Quaternion(-0.24984, -0.0106175, -0.0327461, 0.967675)
|
||||||
|
bones/25/rotation = Quaternion(-0.192278, 0.00222989, -0.0241458, 0.981041)
|
||||||
|
bones/26/rotation = Quaternion(-0.0732215, 0.0165047, -0.0106947, 0.997122)
|
||||||
|
bones/28/rotation = Quaternion(-0.173602, -0.0121098, -0.0508073, 0.98343)
|
||||||
|
bones/29/rotation = Quaternion(-0.252216, 0.00484741, -0.0332366, 0.967088)
|
||||||
|
bones/30/rotation = Quaternion(-0.0464128, 0.0115742, -0.00695809, 0.998831)
|
||||||
|
bones/32/rotation = Quaternion(-0.0916006, -0.00785466, -0.0305605, 0.995296)
|
||||||
|
bones/33/rotation = Quaternion(-0.331406, 0.00311819, -0.0420273, 0.942547)
|
||||||
|
bones/34/rotation = Quaternion(-0.0693759, -0.00208656, -0.00901579, 0.997548)
|
||||||
|
bones/36/rotation = Quaternion(0.427543, 0.63573, -0.535348, 0.355608)
|
||||||
|
bones/37/rotation = Quaternion(-0.47353, 0.596702, 0.377069, -0.526816)
|
||||||
|
bones/38/rotation = Quaternion(0.197979, -1.54881e-07, -0.157316, 0.9675)
|
||||||
|
bones/38/scale = Vector3(1, 0.999931, 1)
|
||||||
|
bones/39/rotation = Quaternion(-0.158283, -0.376941, 0.0816361, 0.908954)
|
||||||
|
bones/39/scale = Vector3(0.999999, 1.00007, 1)
|
||||||
|
bones/40/rotation = Quaternion(0.0368374, 0.719893, -0.229686, 0.653943)
|
||||||
|
bones/41/rotation = Quaternion(-0.116325, 0.328737, -0.0801228, 0.933799)
|
||||||
|
bones/42/rotation = Quaternion(-0.0309248, -0.438234, 0.0121705, 0.898247)
|
||||||
|
bones/44/rotation = Quaternion(-0.284929, 0.00105015, 0.00155206, 0.958547)
|
||||||
|
bones/45/rotation = Quaternion(-0.150705, -0.00229084, 0.0188063, 0.988397)
|
||||||
|
bones/46/rotation = Quaternion(-0.0958382, -0.000542188, 0.0122974, 0.995321)
|
||||||
|
bones/48/rotation = Quaternion(-0.233364, 0.0028998, 0.00652633, 0.972363)
|
||||||
|
bones/49/rotation = Quaternion(-0.20706, -0.0049347, 0.0270706, 0.977941)
|
||||||
|
bones/50/rotation = Quaternion(-0.128683, 0.00229792, 0.0172236, 0.991534)
|
||||||
|
bones/52/rotation = Quaternion(-0.180132, 0.00343017, -0.00411695, 0.983628)
|
||||||
|
bones/53/rotation = Quaternion(-0.304913, -0.00323433, 0.0384061, 0.9516)
|
||||||
|
bones/54/rotation = Quaternion(-0.150196, 0.00207417, 0.0192268, 0.988467)
|
||||||
|
|
||||||
|
[node name="RightFootLocation" type="BoneAttachment3D" parent="root/Skeleton3D" index="1"]
|
||||||
|
transform = Transform3D(0.904752, -0.414882, 0.0687062, 0.00636296, -0.153731, -0.999411, 0.425688, 0.885467, -0.132885, -0.220493, 0.02089, 0.0610073)
|
||||||
|
bone_name = "ball.r"
|
||||||
|
bone_idx = 9
|
||||||
|
|
||||||
|
[node name="FootstepPlayer" type="AudioStreamPlayer3D" parent="root/Skeleton3D/RightFootLocation" index="0"]
|
||||||
|
stream = ExtResource("2_be2ba")
|
||||||
|
|
||||||
|
[node name="LeftFootLocation" type="BoneAttachment3D" parent="root/Skeleton3D" index="2"]
|
||||||
|
transform = Transform3D(0.946923, 0.306886, -0.0410573, 0.000469239, -0.138152, -1.01809, -0.319583, 0.91721, -0.115601, 0.164829, 0.0227495, 0.0514789)
|
||||||
|
bone_name = "ball.l"
|
||||||
|
bone_idx = 4
|
||||||
|
|
||||||
|
[node name="FootstepPlayer" type="AudioStreamPlayer3D" parent="root/Skeleton3D/LeftFootLocation" index="0"]
|
||||||
|
stream = ExtResource("2_be2ba")
|
||||||
|
|
||||||
|
[node name="FlashlightPin" type="BoneAttachment3D" parent="root/Skeleton3D" index="3"]
|
||||||
|
transform = Transform3D(0.996065, 0.0203704, -0.0862458, -0.00854877, 0.990771, 0.135279, 0.0882055, -0.13401, 0.987047, 0.00198892, 1.25404, 0.0330552)
|
||||||
|
bone_name = "spine_02"
|
||||||
|
bone_idx = 12
|
||||||
|
|
||||||
|
[node name="FlashlightOffset" type="Node3D" parent="root/Skeleton3D/FlashlightPin" index="0"]
|
||||||
|
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0.123, 0)
|
||||||
|
|
||||||
|
[node name="SpotLight3D" type="SpotLight3D" parent="root/Skeleton3D/FlashlightPin/FlashlightOffset" index="0"]
|
||||||
|
visible = false
|
||||||
|
shadow_enabled = true
|
||||||
|
shadow_blur = 2.0
|
||||||
|
spot_range = 100.0
|
||||||
|
spot_angle = 35.0
|
||||||
|
|
||||||
|
[node name="AnimationPlayer" parent="." index="1"]
|
||||||
|
libraries = {
|
||||||
|
"": SubResource("AnimationLibrary_brjo7")
|
||||||
|
}
|
||||||
|
playback_default_blend_time = 0.2
|
||||||
397
Godot-Human-For-Scale/Assets/godot-3d-mannequin/LICENSE
Normal file
|
|
@ -0,0 +1,397 @@
|
||||||
|
This work is adapted from "mannequiny" (https://github.com/gdquest-demos/godot-3d-mannequin/tree/master/godot/assets/3d/mannequiny) by GDQuest and contributors (https://www.gdquest.com/) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
|
||||||
|
Attribution 4.0 International
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||||
|
does not provide legal services or legal advice. Distribution of
|
||||||
|
Creative Commons public licenses does not create a lawyer-client or
|
||||||
|
other relationship. Creative Commons makes its licenses and related
|
||||||
|
information available on an "as-is" basis. Creative Commons gives no
|
||||||
|
warranties regarding its licenses, any material licensed under their
|
||||||
|
terms and conditions, or any related information. Creative Commons
|
||||||
|
disclaims all liability for damages resulting from their use to the
|
||||||
|
fullest extent possible.
|
||||||
|
|
||||||
|
Using Creative Commons Public Licenses
|
||||||
|
|
||||||
|
Creative Commons public licenses provide a standard set of terms and
|
||||||
|
conditions that creators and other rights holders may use to share
|
||||||
|
original works of authorship and other material subject to copyright
|
||||||
|
and certain other rights specified in the public license below. The
|
||||||
|
following considerations are for informational purposes only, are not
|
||||||
|
exhaustive, and do not form part of our licenses.
|
||||||
|
|
||||||
|
Considerations for licensors: Our public licenses are
|
||||||
|
intended for use by those authorized to give the public
|
||||||
|
permission to use material in ways otherwise restricted by
|
||||||
|
copyright and certain other rights. Our licenses are
|
||||||
|
irrevocable. Licensors should read and understand the terms
|
||||||
|
and conditions of the license they choose before applying it.
|
||||||
|
Licensors should also secure all rights necessary before
|
||||||
|
applying our licenses so that the public can reuse the
|
||||||
|
material as expected. Licensors should clearly mark any
|
||||||
|
material not subject to the license. This includes other CC-
|
||||||
|
licensed material, or material used under an exception or
|
||||||
|
limitation to copyright. More considerations for licensors:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
|
Considerations for the public: By using one of our public
|
||||||
|
licenses, a licensor grants the public permission to use the
|
||||||
|
licensed material under specified terms and conditions. If
|
||||||
|
the licensor's permission is not necessary for any reason--for
|
||||||
|
example, because of any applicable exception or limitation to
|
||||||
|
copyright--then that use is not regulated by the license. Our
|
||||||
|
licenses grant only permissions under copyright and certain
|
||||||
|
other rights that a licensor has authority to grant. Use of
|
||||||
|
the licensed material may still be restricted for other
|
||||||
|
reasons, including because others have copyright or other
|
||||||
|
rights in the material. A licensor may make special requests,
|
||||||
|
such as asking that all changes be marked or described.
|
||||||
|
Although not required by our licenses, you are encouraged to
|
||||||
|
respect those requests where reasonable. More_considerations
|
||||||
|
for the public:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensees
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons Attribution 4.0 International Public License
|
||||||
|
|
||||||
|
By exercising the Licensed Rights (defined below), You accept and agree
|
||||||
|
to be bound by the terms and conditions of this Creative Commons
|
||||||
|
Attribution 4.0 International Public License ("Public License"). To the
|
||||||
|
extent this Public License may be interpreted as a contract, You are
|
||||||
|
granted the Licensed Rights in consideration of Your acceptance of
|
||||||
|
these terms and conditions, and the Licensor grants You such rights in
|
||||||
|
consideration of benefits the Licensor receives from making the
|
||||||
|
Licensed Material available under these terms and conditions.
|
||||||
|
|
||||||
|
|
||||||
|
Section 1 -- Definitions.
|
||||||
|
|
||||||
|
a. Adapted Material means material subject to Copyright and Similar
|
||||||
|
Rights that is derived from or based upon the Licensed Material
|
||||||
|
and in which the Licensed Material is translated, altered,
|
||||||
|
arranged, transformed, or otherwise modified in a manner requiring
|
||||||
|
permission under the Copyright and Similar Rights held by the
|
||||||
|
Licensor. For purposes of this Public License, where the Licensed
|
||||||
|
Material is a musical work, performance, or sound recording,
|
||||||
|
Adapted Material is always produced where the Licensed Material is
|
||||||
|
synched in timed relation with a moving image.
|
||||||
|
|
||||||
|
b. Adapter's License means the license You apply to Your Copyright
|
||||||
|
and Similar Rights in Your contributions to Adapted Material in
|
||||||
|
accordance with the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
c. Copyright and Similar Rights means copyright and/or similar rights
|
||||||
|
closely related to copyright including, without limitation,
|
||||||
|
performance, broadcast, sound recording, and Sui Generis Database
|
||||||
|
Rights, without regard to how the rights are labeled or
|
||||||
|
categorized. For purposes of this Public License, the rights
|
||||||
|
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||||
|
Rights.
|
||||||
|
|
||||||
|
d. Effective Technological Measures means those measures that, in the
|
||||||
|
absence of proper authority, may not be circumvented under laws
|
||||||
|
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||||
|
Treaty adopted on December 20, 1996, and/or similar international
|
||||||
|
agreements.
|
||||||
|
|
||||||
|
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||||
|
any other exception or limitation to Copyright and Similar Rights
|
||||||
|
that applies to Your use of the Licensed Material.
|
||||||
|
|
||||||
|
f. Licensed Material means the artistic or literary work, database,
|
||||||
|
or other material to which the Licensor applied this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
g. Licensed Rights means the rights granted to You subject to the
|
||||||
|
terms and conditions of this Public License, which are limited to
|
||||||
|
all Copyright and Similar Rights that apply to Your use of the
|
||||||
|
Licensed Material and that the Licensor has authority to license.
|
||||||
|
|
||||||
|
h. Licensor means the individual(s) or entity(ies) granting rights
|
||||||
|
under this Public License.
|
||||||
|
|
||||||
|
i. Share means to provide material to the public by any means or
|
||||||
|
process that requires permission under the Licensed Rights, such
|
||||||
|
as reproduction, public display, public performance, distribution,
|
||||||
|
dissemination, communication, or importation, and to make material
|
||||||
|
available to the public including in ways that members of the
|
||||||
|
public may access the material from a place and at a time
|
||||||
|
individually chosen by them.
|
||||||
|
|
||||||
|
j. Sui Generis Database Rights means rights other than copyright
|
||||||
|
resulting from Directive 96/9/EC of the European Parliament and of
|
||||||
|
the Council of 11 March 1996 on the legal protection of databases,
|
||||||
|
as amended and/or succeeded, as well as other essentially
|
||||||
|
equivalent rights anywhere in the world.
|
||||||
|
|
||||||
|
k. You means the individual or entity exercising the Licensed Rights
|
||||||
|
under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
|
|
||||||
|
Section 2 -- Scope.
|
||||||
|
|
||||||
|
a. License grant.
|
||||||
|
|
||||||
|
1. Subject to the terms and conditions of this Public License,
|
||||||
|
the Licensor hereby grants You a worldwide, royalty-free,
|
||||||
|
non-sublicensable, non-exclusive, irrevocable license to
|
||||||
|
exercise the Licensed Rights in the Licensed Material to:
|
||||||
|
|
||||||
|
a. reproduce and Share the Licensed Material, in whole or
|
||||||
|
in part; and
|
||||||
|
|
||||||
|
b. produce, reproduce, and Share Adapted Material.
|
||||||
|
|
||||||
|
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||||
|
Exceptions and Limitations apply to Your use, this Public
|
||||||
|
License does not apply, and You do not need to comply with
|
||||||
|
its terms and conditions.
|
||||||
|
|
||||||
|
3. Term. The term of this Public License is specified in Section
|
||||||
|
6(a).
|
||||||
|
|
||||||
|
4. Media and formats; technical modifications allowed. The
|
||||||
|
Licensor authorizes You to exercise the Licensed Rights in
|
||||||
|
all media and formats whether now known or hereafter created,
|
||||||
|
and to make technical modifications necessary to do so. The
|
||||||
|
Licensor waives and/or agrees not to assert any right or
|
||||||
|
authority to forbid You from making technical modifications
|
||||||
|
necessary to exercise the Licensed Rights, including
|
||||||
|
technical modifications necessary to circumvent Effective
|
||||||
|
Technological Measures. For purposes of this Public License,
|
||||||
|
simply making modifications authorized by this Section 2(a)
|
||||||
|
(4) never produces Adapted Material.
|
||||||
|
|
||||||
|
5. Downstream recipients.
|
||||||
|
|
||||||
|
a. Offer from the Licensor -- Licensed Material. Every
|
||||||
|
recipient of the Licensed Material automatically
|
||||||
|
receives an offer from the Licensor to exercise the
|
||||||
|
Licensed Rights under the terms and conditions of this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
b. No downstream restrictions. You may not offer or impose
|
||||||
|
any additional or different terms or conditions on, or
|
||||||
|
apply any Effective Technological Measures to, the
|
||||||
|
Licensed Material if doing so restricts exercise of the
|
||||||
|
Licensed Rights by any recipient of the Licensed
|
||||||
|
Material.
|
||||||
|
|
||||||
|
6. No endorsement. Nothing in this Public License constitutes or
|
||||||
|
may be construed as permission to assert or imply that You
|
||||||
|
are, or that Your use of the Licensed Material is, connected
|
||||||
|
with, or sponsored, endorsed, or granted official status by,
|
||||||
|
the Licensor or others designated to receive attribution as
|
||||||
|
provided in Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
|
b. Other rights.
|
||||||
|
|
||||||
|
1. Moral rights, such as the right of integrity, are not
|
||||||
|
licensed under this Public License, nor are publicity,
|
||||||
|
privacy, and/or other similar personality rights; however, to
|
||||||
|
the extent possible, the Licensor waives and/or agrees not to
|
||||||
|
assert any such rights held by the Licensor to the limited
|
||||||
|
extent necessary to allow You to exercise the Licensed
|
||||||
|
Rights, but not otherwise.
|
||||||
|
|
||||||
|
2. Patent and trademark rights are not licensed under this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
3. To the extent possible, the Licensor waives any right to
|
||||||
|
collect royalties from You for the exercise of the Licensed
|
||||||
|
Rights, whether directly or through a collecting society
|
||||||
|
under any voluntary or waivable statutory or compulsory
|
||||||
|
licensing scheme. In all other cases the Licensor expressly
|
||||||
|
reserves any right to collect such royalties.
|
||||||
|
|
||||||
|
|
||||||
|
Section 3 -- License Conditions.
|
||||||
|
|
||||||
|
Your exercise of the Licensed Rights is expressly made subject to the
|
||||||
|
following conditions.
|
||||||
|
|
||||||
|
a. Attribution.
|
||||||
|
|
||||||
|
1. If You Share the Licensed Material (including in modified
|
||||||
|
form), You must:
|
||||||
|
|
||||||
|
a. retain the following if it is supplied by the Licensor
|
||||||
|
with the Licensed Material:
|
||||||
|
|
||||||
|
i. identification of the creator(s) of the Licensed
|
||||||
|
Material and any others designated to receive
|
||||||
|
attribution, in any reasonable manner requested by
|
||||||
|
the Licensor (including by pseudonym if
|
||||||
|
designated);
|
||||||
|
|
||||||
|
ii. a copyright notice;
|
||||||
|
|
||||||
|
iii. a notice that refers to this Public License;
|
||||||
|
|
||||||
|
iv. a notice that refers to the disclaimer of
|
||||||
|
warranties;
|
||||||
|
|
||||||
|
v. a URI or hyperlink to the Licensed Material to the
|
||||||
|
extent reasonably practicable;
|
||||||
|
|
||||||
|
b. indicate if You modified the Licensed Material and
|
||||||
|
retain an indication of any previous modifications; and
|
||||||
|
|
||||||
|
c. indicate the Licensed Material is licensed under this
|
||||||
|
Public License, and include the text of, or the URI or
|
||||||
|
hyperlink to, this Public License.
|
||||||
|
|
||||||
|
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||||
|
reasonable manner based on the medium, means, and context in
|
||||||
|
which You Share the Licensed Material. For example, it may be
|
||||||
|
reasonable to satisfy the conditions by providing a URI or
|
||||||
|
hyperlink to a resource that includes the required
|
||||||
|
information.
|
||||||
|
|
||||||
|
3. If requested by the Licensor, You must remove any of the
|
||||||
|
information required by Section 3(a)(1)(A) to the extent
|
||||||
|
reasonably practicable.
|
||||||
|
|
||||||
|
4. If You Share Adapted Material You produce, the Adapter's
|
||||||
|
License You apply must not prevent recipients of the Adapted
|
||||||
|
Material from complying with this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 4 -- Sui Generis Database Rights.
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that
|
||||||
|
apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||||
|
to extract, reuse, reproduce, and Share all or a substantial
|
||||||
|
portion of the contents of the database;
|
||||||
|
|
||||||
|
b. if You include all or a substantial portion of the database
|
||||||
|
contents in a database in which You have Sui Generis Database
|
||||||
|
Rights, then the database in which You have Sui Generis Database
|
||||||
|
Rights (but not its individual contents) is Adapted Material; and
|
||||||
|
|
||||||
|
c. You must comply with the conditions in Section 3(a) if You Share
|
||||||
|
all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not
|
||||||
|
replace Your obligations under this Public License where the Licensed
|
||||||
|
Rights include other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
|
||||||
|
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
|
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||||
|
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||||
|
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||||
|
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||||
|
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||||
|
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||||
|
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||||
|
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||||
|
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||||
|
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||||
|
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||||
|
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||||
|
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||||
|
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided
|
||||||
|
above shall be interpreted in a manner that, to the extent
|
||||||
|
possible, most closely approximates an absolute disclaimer and
|
||||||
|
waiver of all liability.
|
||||||
|
|
||||||
|
|
||||||
|
Section 6 -- Term and Termination.
|
||||||
|
|
||||||
|
a. This Public License applies for the term of the Copyright and
|
||||||
|
Similar Rights licensed here. However, if You fail to comply with
|
||||||
|
this Public License, then Your rights under this Public License
|
||||||
|
terminate automatically.
|
||||||
|
|
||||||
|
b. Where Your right to use the Licensed Material has terminated under
|
||||||
|
Section 6(a), it reinstates:
|
||||||
|
|
||||||
|
1. automatically as of the date the violation is cured, provided
|
||||||
|
it is cured within 30 days of Your discovery of the
|
||||||
|
violation; or
|
||||||
|
|
||||||
|
2. upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||||
|
right the Licensor may have to seek remedies for Your violations
|
||||||
|
of this Public License.
|
||||||
|
|
||||||
|
c. For the avoidance of doubt, the Licensor may also offer the
|
||||||
|
Licensed Material under separate terms or conditions or stop
|
||||||
|
distributing the Licensed Material at any time; however, doing so
|
||||||
|
will not terminate this Public License.
|
||||||
|
|
||||||
|
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 7 -- Other Terms and Conditions.
|
||||||
|
|
||||||
|
a. The Licensor shall not be bound by any additional or different
|
||||||
|
terms or conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the
|
||||||
|
Licensed Material not stated herein are separate from and
|
||||||
|
independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 8 -- Interpretation.
|
||||||
|
|
||||||
|
a. For the avoidance of doubt, this Public License does not, and
|
||||||
|
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||||
|
conditions on any use of the Licensed Material that could lawfully
|
||||||
|
be made without permission under this Public License.
|
||||||
|
|
||||||
|
b. To the extent possible, if any provision of this Public License is
|
||||||
|
deemed unenforceable, it shall be automatically reformed to the
|
||||||
|
minimum extent necessary to make it enforceable. If the provision
|
||||||
|
cannot be reformed, it shall be severed from this Public License
|
||||||
|
without affecting the enforceability of the remaining terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
c. No term or condition of this Public License will be waived and no
|
||||||
|
failure to comply consented to unless expressly agreed to by the
|
||||||
|
Licensor.
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted
|
||||||
|
as a limitation upon, or waiver of, any privileges and immunities
|
||||||
|
that apply to the Licensor or You, including from the legal
|
||||||
|
processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons is not a party to its public
|
||||||
|
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||||
|
its public licenses to material it publishes and in those instances
|
||||||
|
will be considered the “Licensor.” The text of the Creative Commons
|
||||||
|
public licenses is dedicated to the public domain under the CC0 Public
|
||||||
|
Domain Dedication. Except for the limited purpose of indicating that
|
||||||
|
material is shared under a Creative Commons public license or as
|
||||||
|
otherwise permitted by the Creative Commons policies published at
|
||||||
|
creativecommons.org/policies, Creative Commons does not authorize the
|
||||||
|
use of the trademark "Creative Commons" or any other trademark or logo
|
||||||
|
of Creative Commons without its prior written consent including,
|
||||||
|
without limitation, in connection with any unauthorized modifications
|
||||||
|
to any of its public licenses or any other arrangements,
|
||||||
|
understandings, or agreements concerning use of licensed material. For
|
||||||
|
the avoidance of doubt, this paragraph does not form part of the
|
||||||
|
public licenses.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at creativecommons.org.
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=6 format=3 uid="uid://c0vd4oxy8a5i7"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bl717yflwnnv6" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Piel_BaseColor.png" id="1_kfc31"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dh4o4pxl5ehfa" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Piel_Metallic.png" id="3_u688i"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c80pn5ll5tlg5" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Piel_Normal.png" id="4_0holo"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://druyne6ut1iry" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Piel_Roughness.png" id="5_4skoa"]
|
||||||
|
|
||||||
|
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_i86yv"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("1_kfc31")
|
||||||
|
metallic = 1.0
|
||||||
|
metallic_texture = ExtResource("3_u688i")
|
||||||
|
metallic_texture_channel = 4
|
||||||
|
roughness_texture = ExtResource("5_4skoa")
|
||||||
|
roughness_texture_channel = 4
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("4_0holo")
|
||||||
|
ao_texture = SubResource("CompressedTexture2D_i86yv")
|
||||||
|
ao_texture_channel = 4
|
||||||
|
subsurf_scatter_enabled = true
|
||||||
|
subsurf_scatter_strength = 0.6
|
||||||
|
subsurf_scatter_skin_mode = true
|
||||||
|
texture_filter = 5
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=6 format=3 uid="uid://drg8i6up007s3"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://5uvv7r3nbwba" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_BaseColor.png" id="1_4ihig"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://djpepasluiivs" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_Metallic.png" id="3_ocb8b"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cyrofl0huwrem" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_Normal.png" id="4_d5k5g"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://kb6tukwmrxoq" path="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_Roughness.png" id="5_ntbjw"]
|
||||||
|
|
||||||
|
[sub_resource type="CompressedTexture2D" id="CompressedTexture2D_wwljf"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_texture = ExtResource("1_4ihig")
|
||||||
|
metallic = 1.0
|
||||||
|
metallic_texture = ExtResource("3_ocb8b")
|
||||||
|
metallic_texture_channel = 4
|
||||||
|
roughness_texture = ExtResource("5_ntbjw")
|
||||||
|
roughness_texture_channel = 4
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("4_d5k5g")
|
||||||
|
ao_texture = SubResource("CompressedTexture2D_wwljf")
|
||||||
|
ao_texture_channel = 4
|
||||||
|
texture_filter = 5
|
||||||
|
After Width: | Height: | Size: 384 KiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://bl717yflwnnv6"
|
||||||
|
path.s3tc="res://.godot/imported/mannequiny-0.3.0_Piel_BaseColor.png-6c0bee974bbcaec1b3dc6cf50ee23e6f.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Piel_BaseColor.png"
|
||||||
|
dest_files=["res://.godot/imported/mannequiny-0.3.0_Piel_BaseColor.png-6c0bee974bbcaec1b3dc6cf50ee23e6f.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
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://dh4o4pxl5ehfa"
|
||||||
|
path.s3tc="res://.godot/imported/mannequiny-0.3.0_Piel_Metallic.png-44e3e5a598ca33320d41f381ec02cff1.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Piel_Metallic.png"
|
||||||
|
dest_files=["res://.godot/imported/mannequiny-0.3.0_Piel_Metallic.png-44e3e5a598ca33320d41f381ec02cff1.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
|
||||||
|
After Width: | Height: | Size: 366 KiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://c80pn5ll5tlg5"
|
||||||
|
path.s3tc="res://.godot/imported/mannequiny-0.3.0_Piel_Normal.png-fcf7f959d724e0520f54efb9f7356453.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Piel_Normal.png"
|
||||||
|
dest_files=["res://.godot/imported/mannequiny-0.3.0_Piel_Normal.png-fcf7f959d724e0520f54efb9f7356453.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=1
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 230 KiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://druyne6ut1iry"
|
||||||
|
path.s3tc="res://.godot/imported/mannequiny-0.3.0_Piel_Roughness.png-904763dd4fc5097ee1b46a9011ce4843.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Piel_Roughness.png"
|
||||||
|
dest_files=["res://.godot/imported/mannequiny-0.3.0_Piel_Roughness.png-904763dd4fc5097ee1b46a9011ce4843.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
|
||||||
|
After Width: | Height: | Size: 1.5 MiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://5uvv7r3nbwba"
|
||||||
|
path.s3tc="res://.godot/imported/mannequiny-0.3.0_Todo_BaseColor.png-87ac9a6b4222d6a5dacd58c9fba6be32.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_BaseColor.png"
|
||||||
|
dest_files=["res://.godot/imported/mannequiny-0.3.0_Todo_BaseColor.png-87ac9a6b4222d6a5dacd58c9fba6be32.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
|
||||||
|
After Width: | Height: | Size: 135 KiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://djpepasluiivs"
|
||||||
|
path.s3tc="res://.godot/imported/mannequiny-0.3.0_Todo_Metallic.png-2824097c1fba562587b0962ee0989cd6.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_Metallic.png"
|
||||||
|
dest_files=["res://.godot/imported/mannequiny-0.3.0_Todo_Metallic.png-2824097c1fba562587b0962ee0989cd6.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
|
||||||
|
After Width: | Height: | Size: 1.5 MiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://cyrofl0huwrem"
|
||||||
|
path.s3tc="res://.godot/imported/mannequiny-0.3.0_Todo_Normal.png-7551b4d6430b994589532902c3a2ed66.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_Normal.png"
|
||||||
|
dest_files=["res://.godot/imported/mannequiny-0.3.0_Todo_Normal.png-7551b4d6430b994589532902c3a2ed66.s3tc.ctex"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
compress/mode=2
|
||||||
|
compress/high_quality=false
|
||||||
|
compress/lossy_quality=0.7
|
||||||
|
compress/hdr_compression=1
|
||||||
|
compress/normal_map=1
|
||||||
|
compress/channel_pack=0
|
||||||
|
mipmaps/generate=true
|
||||||
|
mipmaps/limit=-1
|
||||||
|
roughness/mode=1
|
||||||
|
roughness/src_normal="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_Normal.png"
|
||||||
|
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
|
||||||
|
After Width: | Height: | Size: 493 KiB |
|
|
@ -0,0 +1,35 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="texture"
|
||||||
|
type="CompressedTexture2D"
|
||||||
|
uid="uid://kb6tukwmrxoq"
|
||||||
|
path.s3tc="res://.godot/imported/mannequiny-0.3.0_Todo_Roughness.png-61ece3333318b0922ca145653cca631b.s3tc.ctex"
|
||||||
|
metadata={
|
||||||
|
"imported_formats": ["s3tc_bptc"],
|
||||||
|
"vram_texture": true
|
||||||
|
}
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://Godot-Human-For-Scale/Assets/godot-3d-mannequin/Textures/mannequiny-0.3.0_Todo_Roughness.png"
|
||||||
|
dest_files=["res://.godot/imported/mannequiny-0.3.0_Todo_Roughness.png-61ece3333318b0922ca145653cca631b.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
|
||||||
3768
Godot-Human-For-Scale/Assets/godot-3d-mannequin/mannequiny-0.3.0.bin
Normal file
17499
Godot-Human-For-Scale/Assets/godot-3d-mannequin/mannequiny-0.3.0.gltf
Normal file
58
Godot-Human-For-Scale/Human-For-Scale.tscn
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
[gd_scene load_steps=7 format=3 uid="uid://b5i411e430syd"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://Godot-Human-For-Scale/Assets/HumanController.gd" id="1_jh7dy"]
|
||||||
|
[ext_resource type="PackedScene" uid="uid://73ou0sg30v8f" path="res://Godot-Human-For-Scale/Assets/HumanModel.tscn" id="2_ajgv1"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://dsfef5dgmtub1" path="res://Godot-Human-For-Scale/Assets/Audio/Footstep1.wav" id="3_4ysf2"]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_bca87"]
|
||||||
|
radius = 0.285
|
||||||
|
height = 1.778
|
||||||
|
|
||||||
|
[sub_resource type="SeparationRayShape3D" id="SeparationRayShape3D_xemv2"]
|
||||||
|
|
||||||
|
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_6jlvi"]
|
||||||
|
|
||||||
|
[node name="Human-For-Scale" type="CharacterBody3D"]
|
||||||
|
safe_margin = 0.01
|
||||||
|
script = ExtResource("1_jh7dy")
|
||||||
|
|
||||||
|
[node name="ModelRoot" type="Node3D" parent="."]
|
||||||
|
|
||||||
|
[node name="HumanModel" parent="ModelRoot" instance=ExtResource("2_ajgv1")]
|
||||||
|
transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0, 0)
|
||||||
|
|
||||||
|
[node name="JumpLandPlayer" type="AudioStreamPlayer3D" parent="ModelRoot"]
|
||||||
|
stream = ExtResource("3_4ysf2")
|
||||||
|
|
||||||
|
[node name="CollisionShape" type="CollisionShape3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.889, 0)
|
||||||
|
shape = SubResource("CapsuleShape3D_bca87")
|
||||||
|
|
||||||
|
[node name="CameraPivot" type="Node3D" parent="."]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.544, 0)
|
||||||
|
|
||||||
|
[node name="SpringArm" type="SpringArm3D" parent="CameraPivot"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0, 0)
|
||||||
|
shape = SubResource("SeparationRayShape3D_xemv2")
|
||||||
|
spring_length = 2.1
|
||||||
|
|
||||||
|
[node name="Camera" type="Camera3D" parent="CameraPivot/SpringArm"]
|
||||||
|
fov = 60.0
|
||||||
|
|
||||||
|
[node name="AudioListener3D" type="AudioListener3D" parent="CameraPivot/SpringArm/Camera"]
|
||||||
|
|
||||||
|
[node name="RayCast3D" type="RayCast3D" parent="CameraPivot/SpringArm/Camera"]
|
||||||
|
target_position = Vector3(0, 0, -1)
|
||||||
|
hit_back_faces = false
|
||||||
|
|
||||||
|
[node name="PhysicsGun" type="Node3D" parent="CameraPivot/SpringArm"]
|
||||||
|
|
||||||
|
[node name="PhysicsObjectCollector" type="Area3D" parent="CameraPivot/SpringArm/PhysicsGun"]
|
||||||
|
|
||||||
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="CameraPivot/SpringArm/PhysicsGun/PhysicsObjectCollector"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0, -1)
|
||||||
|
shape = SubResource("CapsuleShape3D_6jlvi")
|
||||||
|
|
||||||
|
[node name="RayCast3D" type="RayCast3D" parent="CameraPivot/SpringArm/PhysicsGun"]
|
||||||
|
target_position = Vector3(0, 0, -1)
|
||||||
|
hit_back_faces = false
|
||||||
21
Godot-Human-For-Scale/LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2022 John James Gutib
|
||||||
|
|
||||||
|
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.
|
||||||
51
Godot-Human-For-Scale/README.md
Normal file
|
|
@ -0,0 +1,51 @@
|
||||||
|
# Godot-Human-For-Scale
|
||||||
|
Simple controllable character that you can use to run around in your level to get a sense of scale. No input bindings or camera set up necessary, just drag and drop into your scene. The character is 5'10. (177.8 cm)
|
||||||
|
|
||||||
|
https://github.com/Jamsers/Godot-Human-For-Scale/assets/39361911/ea40c6ec-47b0-43da-a2c2-1e5539d293f6
|
||||||
|
|
||||||
|
## How to use
|
||||||
|
1. Clone or download the Github repository.
|
||||||
|
2. Move the repository folder (Godot-Human-For-Scale) to the root of your project.
|
||||||
|
***The Godot-Human-For-Scale folder has to be at the root of your project for Godot-Human-For-Scale to work.***
|
||||||
|
4. Drag and drop the player scene (Human-For-Scale.tscn) into the scene you want to walk around in.
|
||||||
|
5. Run your scene.
|
||||||
|
|
||||||
|
**Make sure your scene has colliders for the floor at least, or the player will just fall through the map!**
|
||||||
|
|
||||||
|
## Controls
|
||||||
|
- **ESCAPE** to capture/uncapture mouse
|
||||||
|
***Mouse is uncaptured on start!***
|
||||||
|
|
||||||
|
- **W-A-S-D** to move
|
||||||
|
**SHIFT** to sprint
|
||||||
|
**SPACE** to jump
|
||||||
|
**TILDE(~)** to noclip
|
||||||
|
|
||||||
|
- **V** to switch third person/first person
|
||||||
|
**RIGHT CLICK** to zoom/focus
|
||||||
|
**TAB** to switch third person camera shoulders
|
||||||
|
|
||||||
|
- **LEFT CLICK** to pick up/throw object with physics gun
|
||||||
|
**F** to turn flashlight on/off
|
||||||
|
|
||||||
|
## Controls not working?
|
||||||
|
|
||||||
|
*Mouse look not working?*
|
||||||
|
A Control node is likely capturing mouse input. Find that Control node, set its Mouse Filter to Pass/Ignore.
|
||||||
|
|
||||||
|
*Keyboard controls not working?*
|
||||||
|
A Control node is likely capturing keyboard input, most likely a button or text box. Find that Control node, set its Focus Mode to None.
|
||||||
|
|
||||||
|
## Extra Options
|
||||||
|
|
||||||
|
You can enable depth of field for the zoom functionality. No camera attributes setup necessary.
|
||||||
|
You can disable the character's shadow in first person view.
|
||||||
|
You can enable audio, which will enable the audio listener, footstep sounds, and physics interactions sounds.
|
||||||
|
You can enable the physics gun, which allows you pick up and throw RigidBodies.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
Uses the fantastic [mannequiny](https://github.com/GDQuest/godot-3d-mannequin/tree/master/godot/assets/3d/mannequiny) from GDQuest's [godot-3d-mannequin](https://github.com/GDQuest/godot-3d-mannequin).
|
||||||
|
Uses Creative Commons sounds, attributions are [here](https://github.com/Jamsers/Godot-Human-For-Scale/blob/main/Assets/Audio/ATTRIBUTION).
|
||||||
401
LICENSE
Normal file
|
|
@ -0,0 +1,401 @@
|
||||||
|
"Bistro-Demo-Tweaked" (https://github.com/Jamsers/Bistro-Demo-Tweaked) by John James Gutib (https://jamsers.github.io/)
|
||||||
|
|
||||||
|
"Bistro-Demo-Tweaked" adapted from "Lumberyard Bistro Reference Scene" (https://github.com/godotengine/godot/issues/74965) by Logan Preshaw (https://cara.app/wickedinsignia) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
|
||||||
|
"Lumberyard Bistro Reference Scene" adapted from "Amazon Lumberyard Bistro, Open Research Content Archive (ORCA)" (https://developer.nvidia.com/orca/amazon-lumberyard-bistro) by Amazon Lumberyard (https://aws.amazon.com/lumberyard/) licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
|
||||||
|
|
||||||
|
Attribution 4.0 International
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons Corporation ("Creative Commons") is not a law firm and
|
||||||
|
does not provide legal services or legal advice. Distribution of
|
||||||
|
Creative Commons public licenses does not create a lawyer-client or
|
||||||
|
other relationship. Creative Commons makes its licenses and related
|
||||||
|
information available on an "as-is" basis. Creative Commons gives no
|
||||||
|
warranties regarding its licenses, any material licensed under their
|
||||||
|
terms and conditions, or any related information. Creative Commons
|
||||||
|
disclaims all liability for damages resulting from their use to the
|
||||||
|
fullest extent possible.
|
||||||
|
|
||||||
|
Using Creative Commons Public Licenses
|
||||||
|
|
||||||
|
Creative Commons public licenses provide a standard set of terms and
|
||||||
|
conditions that creators and other rights holders may use to share
|
||||||
|
original works of authorship and other material subject to copyright
|
||||||
|
and certain other rights specified in the public license below. The
|
||||||
|
following considerations are for informational purposes only, are not
|
||||||
|
exhaustive, and do not form part of our licenses.
|
||||||
|
|
||||||
|
Considerations for licensors: Our public licenses are
|
||||||
|
intended for use by those authorized to give the public
|
||||||
|
permission to use material in ways otherwise restricted by
|
||||||
|
copyright and certain other rights. Our licenses are
|
||||||
|
irrevocable. Licensors should read and understand the terms
|
||||||
|
and conditions of the license they choose before applying it.
|
||||||
|
Licensors should also secure all rights necessary before
|
||||||
|
applying our licenses so that the public can reuse the
|
||||||
|
material as expected. Licensors should clearly mark any
|
||||||
|
material not subject to the license. This includes other CC-
|
||||||
|
licensed material, or material used under an exception or
|
||||||
|
limitation to copyright. More considerations for licensors:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensors
|
||||||
|
|
||||||
|
Considerations for the public: By using one of our public
|
||||||
|
licenses, a licensor grants the public permission to use the
|
||||||
|
licensed material under specified terms and conditions. If
|
||||||
|
the licensor's permission is not necessary for any reason--for
|
||||||
|
example, because of any applicable exception or limitation to
|
||||||
|
copyright--then that use is not regulated by the license. Our
|
||||||
|
licenses grant only permissions under copyright and certain
|
||||||
|
other rights that a licensor has authority to grant. Use of
|
||||||
|
the licensed material may still be restricted for other
|
||||||
|
reasons, including because others have copyright or other
|
||||||
|
rights in the material. A licensor may make special requests,
|
||||||
|
such as asking that all changes be marked or described.
|
||||||
|
Although not required by our licenses, you are encouraged to
|
||||||
|
respect those requests where reasonable. More_considerations
|
||||||
|
for the public:
|
||||||
|
wiki.creativecommons.org/Considerations_for_licensees
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons Attribution 4.0 International Public License
|
||||||
|
|
||||||
|
By exercising the Licensed Rights (defined below), You accept and agree
|
||||||
|
to be bound by the terms and conditions of this Creative Commons
|
||||||
|
Attribution 4.0 International Public License ("Public License"). To the
|
||||||
|
extent this Public License may be interpreted as a contract, You are
|
||||||
|
granted the Licensed Rights in consideration of Your acceptance of
|
||||||
|
these terms and conditions, and the Licensor grants You such rights in
|
||||||
|
consideration of benefits the Licensor receives from making the
|
||||||
|
Licensed Material available under these terms and conditions.
|
||||||
|
|
||||||
|
|
||||||
|
Section 1 -- Definitions.
|
||||||
|
|
||||||
|
a. Adapted Material means material subject to Copyright and Similar
|
||||||
|
Rights that is derived from or based upon the Licensed Material
|
||||||
|
and in which the Licensed Material is translated, altered,
|
||||||
|
arranged, transformed, or otherwise modified in a manner requiring
|
||||||
|
permission under the Copyright and Similar Rights held by the
|
||||||
|
Licensor. For purposes of this Public License, where the Licensed
|
||||||
|
Material is a musical work, performance, or sound recording,
|
||||||
|
Adapted Material is always produced where the Licensed Material is
|
||||||
|
synched in timed relation with a moving image.
|
||||||
|
|
||||||
|
b. Adapter's License means the license You apply to Your Copyright
|
||||||
|
and Similar Rights in Your contributions to Adapted Material in
|
||||||
|
accordance with the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
c. Copyright and Similar Rights means copyright and/or similar rights
|
||||||
|
closely related to copyright including, without limitation,
|
||||||
|
performance, broadcast, sound recording, and Sui Generis Database
|
||||||
|
Rights, without regard to how the rights are labeled or
|
||||||
|
categorized. For purposes of this Public License, the rights
|
||||||
|
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
||||||
|
Rights.
|
||||||
|
|
||||||
|
d. Effective Technological Measures means those measures that, in the
|
||||||
|
absence of proper authority, may not be circumvented under laws
|
||||||
|
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||||
|
Treaty adopted on December 20, 1996, and/or similar international
|
||||||
|
agreements.
|
||||||
|
|
||||||
|
e. Exceptions and Limitations means fair use, fair dealing, and/or
|
||||||
|
any other exception or limitation to Copyright and Similar Rights
|
||||||
|
that applies to Your use of the Licensed Material.
|
||||||
|
|
||||||
|
f. Licensed Material means the artistic or literary work, database,
|
||||||
|
or other material to which the Licensor applied this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
g. Licensed Rights means the rights granted to You subject to the
|
||||||
|
terms and conditions of this Public License, which are limited to
|
||||||
|
all Copyright and Similar Rights that apply to Your use of the
|
||||||
|
Licensed Material and that the Licensor has authority to license.
|
||||||
|
|
||||||
|
h. Licensor means the individual(s) or entity(ies) granting rights
|
||||||
|
under this Public License.
|
||||||
|
|
||||||
|
i. Share means to provide material to the public by any means or
|
||||||
|
process that requires permission under the Licensed Rights, such
|
||||||
|
as reproduction, public display, public performance, distribution,
|
||||||
|
dissemination, communication, or importation, and to make material
|
||||||
|
available to the public including in ways that members of the
|
||||||
|
public may access the material from a place and at a time
|
||||||
|
individually chosen by them.
|
||||||
|
|
||||||
|
j. Sui Generis Database Rights means rights other than copyright
|
||||||
|
resulting from Directive 96/9/EC of the European Parliament and of
|
||||||
|
the Council of 11 March 1996 on the legal protection of databases,
|
||||||
|
as amended and/or succeeded, as well as other essentially
|
||||||
|
equivalent rights anywhere in the world.
|
||||||
|
|
||||||
|
k. You means the individual or entity exercising the Licensed Rights
|
||||||
|
under this Public License. Your has a corresponding meaning.
|
||||||
|
|
||||||
|
|
||||||
|
Section 2 -- Scope.
|
||||||
|
|
||||||
|
a. License grant.
|
||||||
|
|
||||||
|
1. Subject to the terms and conditions of this Public License,
|
||||||
|
the Licensor hereby grants You a worldwide, royalty-free,
|
||||||
|
non-sublicensable, non-exclusive, irrevocable license to
|
||||||
|
exercise the Licensed Rights in the Licensed Material to:
|
||||||
|
|
||||||
|
a. reproduce and Share the Licensed Material, in whole or
|
||||||
|
in part; and
|
||||||
|
|
||||||
|
b. produce, reproduce, and Share Adapted Material.
|
||||||
|
|
||||||
|
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||||
|
Exceptions and Limitations apply to Your use, this Public
|
||||||
|
License does not apply, and You do not need to comply with
|
||||||
|
its terms and conditions.
|
||||||
|
|
||||||
|
3. Term. The term of this Public License is specified in Section
|
||||||
|
6(a).
|
||||||
|
|
||||||
|
4. Media and formats; technical modifications allowed. The
|
||||||
|
Licensor authorizes You to exercise the Licensed Rights in
|
||||||
|
all media and formats whether now known or hereafter created,
|
||||||
|
and to make technical modifications necessary to do so. The
|
||||||
|
Licensor waives and/or agrees not to assert any right or
|
||||||
|
authority to forbid You from making technical modifications
|
||||||
|
necessary to exercise the Licensed Rights, including
|
||||||
|
technical modifications necessary to circumvent Effective
|
||||||
|
Technological Measures. For purposes of this Public License,
|
||||||
|
simply making modifications authorized by this Section 2(a)
|
||||||
|
(4) never produces Adapted Material.
|
||||||
|
|
||||||
|
5. Downstream recipients.
|
||||||
|
|
||||||
|
a. Offer from the Licensor -- Licensed Material. Every
|
||||||
|
recipient of the Licensed Material automatically
|
||||||
|
receives an offer from the Licensor to exercise the
|
||||||
|
Licensed Rights under the terms and conditions of this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
b. No downstream restrictions. You may not offer or impose
|
||||||
|
any additional or different terms or conditions on, or
|
||||||
|
apply any Effective Technological Measures to, the
|
||||||
|
Licensed Material if doing so restricts exercise of the
|
||||||
|
Licensed Rights by any recipient of the Licensed
|
||||||
|
Material.
|
||||||
|
|
||||||
|
6. No endorsement. Nothing in this Public License constitutes or
|
||||||
|
may be construed as permission to assert or imply that You
|
||||||
|
are, or that Your use of the Licensed Material is, connected
|
||||||
|
with, or sponsored, endorsed, or granted official status by,
|
||||||
|
the Licensor or others designated to receive attribution as
|
||||||
|
provided in Section 3(a)(1)(A)(i).
|
||||||
|
|
||||||
|
b. Other rights.
|
||||||
|
|
||||||
|
1. Moral rights, such as the right of integrity, are not
|
||||||
|
licensed under this Public License, nor are publicity,
|
||||||
|
privacy, and/or other similar personality rights; however, to
|
||||||
|
the extent possible, the Licensor waives and/or agrees not to
|
||||||
|
assert any such rights held by the Licensor to the limited
|
||||||
|
extent necessary to allow You to exercise the Licensed
|
||||||
|
Rights, but not otherwise.
|
||||||
|
|
||||||
|
2. Patent and trademark rights are not licensed under this
|
||||||
|
Public License.
|
||||||
|
|
||||||
|
3. To the extent possible, the Licensor waives any right to
|
||||||
|
collect royalties from You for the exercise of the Licensed
|
||||||
|
Rights, whether directly or through a collecting society
|
||||||
|
under any voluntary or waivable statutory or compulsory
|
||||||
|
licensing scheme. In all other cases the Licensor expressly
|
||||||
|
reserves any right to collect such royalties.
|
||||||
|
|
||||||
|
|
||||||
|
Section 3 -- License Conditions.
|
||||||
|
|
||||||
|
Your exercise of the Licensed Rights is expressly made subject to the
|
||||||
|
following conditions.
|
||||||
|
|
||||||
|
a. Attribution.
|
||||||
|
|
||||||
|
1. If You Share the Licensed Material (including in modified
|
||||||
|
form), You must:
|
||||||
|
|
||||||
|
a. retain the following if it is supplied by the Licensor
|
||||||
|
with the Licensed Material:
|
||||||
|
|
||||||
|
i. identification of the creator(s) of the Licensed
|
||||||
|
Material and any others designated to receive
|
||||||
|
attribution, in any reasonable manner requested by
|
||||||
|
the Licensor (including by pseudonym if
|
||||||
|
designated);
|
||||||
|
|
||||||
|
ii. a copyright notice;
|
||||||
|
|
||||||
|
iii. a notice that refers to this Public License;
|
||||||
|
|
||||||
|
iv. a notice that refers to the disclaimer of
|
||||||
|
warranties;
|
||||||
|
|
||||||
|
v. a URI or hyperlink to the Licensed Material to the
|
||||||
|
extent reasonably practicable;
|
||||||
|
|
||||||
|
b. indicate if You modified the Licensed Material and
|
||||||
|
retain an indication of any previous modifications; and
|
||||||
|
|
||||||
|
c. indicate the Licensed Material is licensed under this
|
||||||
|
Public License, and include the text of, or the URI or
|
||||||
|
hyperlink to, this Public License.
|
||||||
|
|
||||||
|
2. You may satisfy the conditions in Section 3(a)(1) in any
|
||||||
|
reasonable manner based on the medium, means, and context in
|
||||||
|
which You Share the Licensed Material. For example, it may be
|
||||||
|
reasonable to satisfy the conditions by providing a URI or
|
||||||
|
hyperlink to a resource that includes the required
|
||||||
|
information.
|
||||||
|
|
||||||
|
3. If requested by the Licensor, You must remove any of the
|
||||||
|
information required by Section 3(a)(1)(A) to the extent
|
||||||
|
reasonably practicable.
|
||||||
|
|
||||||
|
4. If You Share Adapted Material You produce, the Adapter's
|
||||||
|
License You apply must not prevent recipients of the Adapted
|
||||||
|
Material from complying with this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 4 -- Sui Generis Database Rights.
|
||||||
|
|
||||||
|
Where the Licensed Rights include Sui Generis Database Rights that
|
||||||
|
apply to Your use of the Licensed Material:
|
||||||
|
|
||||||
|
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
||||||
|
to extract, reuse, reproduce, and Share all or a substantial
|
||||||
|
portion of the contents of the database;
|
||||||
|
|
||||||
|
b. if You include all or a substantial portion of the database
|
||||||
|
contents in a database in which You have Sui Generis Database
|
||||||
|
Rights, then the database in which You have Sui Generis Database
|
||||||
|
Rights (but not its individual contents) is Adapted Material; and
|
||||||
|
|
||||||
|
c. You must comply with the conditions in Section 3(a) if You Share
|
||||||
|
all or a substantial portion of the contents of the database.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 4 supplements and does not
|
||||||
|
replace Your obligations under this Public License where the Licensed
|
||||||
|
Rights include other Copyright and Similar Rights.
|
||||||
|
|
||||||
|
|
||||||
|
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
||||||
|
|
||||||
|
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
||||||
|
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
||||||
|
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
||||||
|
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
||||||
|
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
||||||
|
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
||||||
|
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
||||||
|
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
||||||
|
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
||||||
|
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
||||||
|
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
||||||
|
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
||||||
|
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
||||||
|
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
||||||
|
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
||||||
|
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
||||||
|
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
||||||
|
|
||||||
|
c. The disclaimer of warranties and limitation of liability provided
|
||||||
|
above shall be interpreted in a manner that, to the extent
|
||||||
|
possible, most closely approximates an absolute disclaimer and
|
||||||
|
waiver of all liability.
|
||||||
|
|
||||||
|
|
||||||
|
Section 6 -- Term and Termination.
|
||||||
|
|
||||||
|
a. This Public License applies for the term of the Copyright and
|
||||||
|
Similar Rights licensed here. However, if You fail to comply with
|
||||||
|
this Public License, then Your rights under this Public License
|
||||||
|
terminate automatically.
|
||||||
|
|
||||||
|
b. Where Your right to use the Licensed Material has terminated under
|
||||||
|
Section 6(a), it reinstates:
|
||||||
|
|
||||||
|
1. automatically as of the date the violation is cured, provided
|
||||||
|
it is cured within 30 days of Your discovery of the
|
||||||
|
violation; or
|
||||||
|
|
||||||
|
2. upon express reinstatement by the Licensor.
|
||||||
|
|
||||||
|
For the avoidance of doubt, this Section 6(b) does not affect any
|
||||||
|
right the Licensor may have to seek remedies for Your violations
|
||||||
|
of this Public License.
|
||||||
|
|
||||||
|
c. For the avoidance of doubt, the Licensor may also offer the
|
||||||
|
Licensed Material under separate terms or conditions or stop
|
||||||
|
distributing the Licensed Material at any time; however, doing so
|
||||||
|
will not terminate this Public License.
|
||||||
|
|
||||||
|
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
||||||
|
License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 7 -- Other Terms and Conditions.
|
||||||
|
|
||||||
|
a. The Licensor shall not be bound by any additional or different
|
||||||
|
terms or conditions communicated by You unless expressly agreed.
|
||||||
|
|
||||||
|
b. Any arrangements, understandings, or agreements regarding the
|
||||||
|
Licensed Material not stated herein are separate from and
|
||||||
|
independent of the terms and conditions of this Public License.
|
||||||
|
|
||||||
|
|
||||||
|
Section 8 -- Interpretation.
|
||||||
|
|
||||||
|
a. For the avoidance of doubt, this Public License does not, and
|
||||||
|
shall not be interpreted to, reduce, limit, restrict, or impose
|
||||||
|
conditions on any use of the Licensed Material that could lawfully
|
||||||
|
be made without permission under this Public License.
|
||||||
|
|
||||||
|
b. To the extent possible, if any provision of this Public License is
|
||||||
|
deemed unenforceable, it shall be automatically reformed to the
|
||||||
|
minimum extent necessary to make it enforceable. If the provision
|
||||||
|
cannot be reformed, it shall be severed from this Public License
|
||||||
|
without affecting the enforceability of the remaining terms and
|
||||||
|
conditions.
|
||||||
|
|
||||||
|
c. No term or condition of this Public License will be waived and no
|
||||||
|
failure to comply consented to unless expressly agreed to by the
|
||||||
|
Licensor.
|
||||||
|
|
||||||
|
d. Nothing in this Public License constitutes or may be interpreted
|
||||||
|
as a limitation upon, or waiver of, any privileges and immunities
|
||||||
|
that apply to the Licensor or You, including from the legal
|
||||||
|
processes of any jurisdiction or authority.
|
||||||
|
|
||||||
|
|
||||||
|
=======================================================================
|
||||||
|
|
||||||
|
Creative Commons is not a party to its public
|
||||||
|
licenses. Notwithstanding, Creative Commons may elect to apply one of
|
||||||
|
its public licenses to material it publishes and in those instances
|
||||||
|
will be considered the “Licensor.” The text of the Creative Commons
|
||||||
|
public licenses is dedicated to the public domain under the CC0 Public
|
||||||
|
Domain Dedication. Except for the limited purpose of indicating that
|
||||||
|
material is shared under a Creative Commons public license or as
|
||||||
|
otherwise permitted by the Creative Commons policies published at
|
||||||
|
creativecommons.org/policies, Creative Commons does not authorize the
|
||||||
|
use of the trademark "Creative Commons" or any other trademark or logo
|
||||||
|
of Creative Commons without its prior written consent including,
|
||||||
|
without limitation, in connection with any unauthorized modifications
|
||||||
|
to any of its public licenses or any other arrangements,
|
||||||
|
understandings, or agreements concerning use of licensed material. For
|
||||||
|
the avoidance of doubt, this paragraph does not form part of the
|
||||||
|
public licenses.
|
||||||
|
|
||||||
|
Creative Commons may be contacted at creativecommons.org.
|
||||||
3433
MainScene.tscn
Normal file
22
Materials/Blocker.tres
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://tynp4gabi3x5"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Stone/MASTER_Brick_Small_Red_BLENDSHADER_BaseColor.dds" id="1_w0304"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://ylgmwx2lq0e1" path="res://Textures/Stone/MASTER_Brick_Small_Red_BLENDSHADER_Normal.png" id="2_dp4hn"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
transparency = 3
|
||||||
|
alpha_hash_scale = 1.0
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
cull_mode = 2
|
||||||
|
albedo_color = Color(0.447059, 0.0862745, 0.145098, 1)
|
||||||
|
albedo_texture = ExtResource("1_w0304")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_dp4hn")
|
||||||
|
uv1_scale = Vector3(3, 3, 3)
|
||||||
|
texture_filter = 5
|
||||||
|
proximity_fade_enabled = true
|
||||||
|
proximity_fade_distance = 0.75
|
||||||
|
distance_fade_mode = 1
|
||||||
|
distance_fade_min_distance = 10.0
|
||||||
|
distance_fade_max_distance = 2.5
|
||||||
11
Materials/Fabric/Awning_Beams.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://ddafiav24hit3"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Fabric/MASTER_Awning_Beams_BaseColor.dds" id="1_gd760"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://5yo3ajghb3k0" path="res://Textures/Fabric/MASTER_Awning_Beams_Normal.png" id="2_2vec5"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_gd760")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_2vec5")
|
||||||
|
texture_filter = 5
|
||||||
13
Materials/Fabric/Awning_Fabric_Cyan.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://ds5kuc21yj4te"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Fabric/MASTER_Awning_Fabric_Cyan_BaseColor.dds" id="1_487g0"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cc1rsc5308uqx" path="res://Textures/Fabric/MASTER_Awning_Fabric_Cyan_Normal.png" id="2_mw3ix"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_487g0")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_mw3ix")
|
||||||
|
backlight_enabled = true
|
||||||
|
backlight = Color(0.360784, 0.360784, 0.360784, 1)
|
||||||
|
texture_filter = 5
|
||||||
13
Materials/Fabric/Awning_Fabric_Red.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://cji6cg06guols"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Fabric/MASTER_Awning_Fabric_Red_BaseColor.dds" id="1_cc8pd"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dhb1o5laerg5a" path="res://Textures/Fabric/MASTER_Awning_Fabric_Red_Normal.png" id="2_o0d0k"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_cc8pd")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_o0d0k")
|
||||||
|
backlight_enabled = true
|
||||||
|
backlight = Color(0.360784, 0.360784, 0.360784, 1)
|
||||||
|
texture_filter = 5
|
||||||
13
Materials/Fabric/Awning_Hotel_Fabric.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://dek2mtkuw23qu"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Fabric/Awnings_Hotel_Fabric_BaseColor.dds" id="1_xs8g3"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bdmi1e30goue5" path="res://Textures/Fabric/Awnings_Hotel_Fabric_Normal.png" id="2_6wwto"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_xs8g3")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_6wwto")
|
||||||
|
backlight_enabled = true
|
||||||
|
backlight = Color(0.360784, 0.360784, 0.360784, 1)
|
||||||
|
texture_filter = 5
|
||||||
14
Materials/Fabric/Curtains.tres
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://bkfpmtw5ajbr7"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Fabric/MASTER_Curtains_BaseColor.dds" id="1_7gkey"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dsrbhxl7i5jfy" path="res://Textures/Fabric/MASTER_Curtains_Normal.png" id="2_fm6qd"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.5
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
albedo_texture = ExtResource("1_7gkey")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_fm6qd")
|
||||||
|
texture_filter = 5
|
||||||
5
Materials/FogMaterial.tres
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
[gd_resource type="FogMaterial" format=3 uid="uid://elgkttuqw3r"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
density = 0.0225
|
||||||
|
height_falloff = 0.15
|
||||||
11
Materials/Glass/Frosted_Glass.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://cj6sl1aue82s6"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Glass/MASTER_Frosted_Glass_BaseColor.dds" id="1_qt81s"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://25tl6hs1atmw" path="res://Textures/Glass/MASTER_Frosted_Glass_Normal.tga" id="2_us48j"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_qt81s")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_us48j")
|
||||||
|
texture_filter = 5
|
||||||
13
Materials/Glass/Glass_Exterior.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=4 format=3 uid="uid://d7fadm2ekc5i"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Glass/MASTER_Glass_Exterior_BaseColor.dds" id="1_cp7od"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cj1ky7lwa6vp0" path="res://Textures/Glass/MASTER_Glass_Exterior_Normal.tga" id="2_ykuna"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://c45xaj0kncly7" path="res://Textures/Glass/MASTER_Glass_Exterior_Roughness.png" id="3_x3lwc"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_cp7od")
|
||||||
|
metallic = 0.77
|
||||||
|
roughness_texture = ExtResource("3_x3lwc")
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_ykuna")
|
||||||
|
texture_filter = 5
|
||||||
8
Materials/Glass/Windows_Glass.tres
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" format=3 uid="uid://cubayex8gukre"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
blend_mode = 1
|
||||||
|
albedo_color = Color(0.341176, 0.341176, 0.341176, 1)
|
||||||
|
metallic = 0.77
|
||||||
|
roughness = 0.18
|
||||||
|
texture_filter = 5
|
||||||
11
Materials/Ground/Pavement_Brick.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://yyjlkr1o1s61"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Ground/Pavement_Brick_BLENDSHADER_BaseColor.dds" id="1_xgpl8"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://dhlwtbgva34gu" path="res://Textures/Ground/Pavement_Brick_BLENDSHADER_Normal.png" id="2_sjf22"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_xgpl8")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_sjf22")
|
||||||
|
texture_filter = 5
|
||||||
11
Materials/Ground/Pavement_Cobblestone_02.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://cvyv4xmbk2x5b"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Ground/Pavement_Cobblestone_02_BaseColor.dds" id="1_r8sv1"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bywvicxrnpnib" path="res://Textures/Ground/Pavement_Cobblestone_02_Normal.png" id="2_2j4fy"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_r8sv1")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_2j4fy")
|
||||||
|
texture_filter = 5
|
||||||
11
Materials/Ground/Pavement_Cobblestone_Big.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://cyxqjuvathim8"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Ground/Pavement_Cobblestone_Big_BLENDSHADER_BaseColor.dds" id="1_ek84m"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b8ook6wosfa74" path="res://Textures/Ground/Pavement_Cobblestone_Big_BLENDSHADER_Normal.png" id="2_ii3na"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_ek84m")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_ii3na")
|
||||||
|
texture_filter = 5
|
||||||
11
Materials/Ground/Pavement_Cobblestone_Small.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://b1crws0o8dm3c"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Ground/Pavement_Cobblestone_Small_BLENDSHADER_BaseColor.dds" id="1_8l20n"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bbvcxyghfs51v" path="res://Textures/Ground/Pavement_Cobblestone_Small_BLENDSHADER_Normal.png" id="2_al12p"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_8l20n")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_al12p")
|
||||||
|
texture_filter = 5
|
||||||
11
Materials/Ground/Pavement_Cobblestone_Wet.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://cqvv0g76deyid"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Ground/Pavement_Cobblestone_Wet_BLENDSHADER_BaseColor.dds" id="1_35gvp"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://2jy0jtrcl1pf" path="res://Textures/Ground/Pavement_Cobblestone_Wet_BLENDSHADER_Normal.png" id="2_jimul"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_35gvp")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_jimul")
|
||||||
|
texture_filter = 5
|
||||||
11
Materials/Ground/Pavement_Curbstones.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://bmt2o3dfnoopb"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Ground/Pavement_Curbstones_BaseColor.dds" id="1_b3lol"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://r0x3c8mymops" path="res://Textures/Ground/Pavement_Curbstones_Normal.png" id="2_7n6ro"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_b3lol")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_7n6ro")
|
||||||
|
texture_filter = 5
|
||||||
11
Materials/Ground/Pavement_Manhole_Cover.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://dhtdy1tq3oauo"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Ground/Pavement_Manhole_Cover_BaseColor.dds" id="1_nubpi"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://b2klqww4lvapk" path="res://Textures/Ground/Pavement_Manhole_Cover_Normal.png" id="2_0kfyj"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_nubpi")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_0kfyj")
|
||||||
|
texture_filter = 5
|
||||||
12
Materials/Lights/Emissive_StreeLight.tres
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://dfcnpxsv3ak8d"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Lights/Emissive_StreetLight_Emissive.dds" id="2_pbdcv"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
blend_mode = 1
|
||||||
|
albedo_color = Color(0.341176, 0.341176, 0.341176, 1)
|
||||||
|
metallic = 0.77
|
||||||
|
roughness = 0.08
|
||||||
|
emission_energy_multiplier = 3.71
|
||||||
|
emission_texture = ExtResource("2_pbdcv")
|
||||||
|
texture_filter = 5
|
||||||
11
Materials/Lights/Focus.tres
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://dh86ldgjwcoyi"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Lights/MASTER_Focus_BaseColor.dds" id="1_lh8wj"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://cmxsphc1sqrvl" path="res://Textures/Lights/MASTER_Focus_Normal.png" id="2_tsidw"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_lh8wj")
|
||||||
|
roughness = 0.73
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_tsidw")
|
||||||
|
texture_filter = 5
|
||||||
16
Materials/Lights/HangingLight.tres
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=4 format=3 uid="uid://dsm0qamubvq5h"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Lights/LanternEmissive_BaseColor.dds" id="1_wl7x4"]
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Lights/LanternEmissive_Emissive.dds" id="2_spfdb"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://bch6y6p4wtimi" path="res://Textures/Lights/LanternEmissive_Normal.png" id="3_sy55k"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
transparency = 2
|
||||||
|
alpha_scissor_threshold = 0.5
|
||||||
|
alpha_antialiasing_mode = 0
|
||||||
|
albedo_texture = ExtResource("1_wl7x4")
|
||||||
|
roughness = 0.73
|
||||||
|
emission_texture = ExtResource("2_spfdb")
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("3_sy55k")
|
||||||
|
texture_filter = 5
|
||||||
10
Materials/Lights/HangingLight_Emissive.tres
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=2 format=3 uid="uid://uyoltu5ukmtw"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Lights/Emissive_StreetLight_Emissive.dds" id="1_ngst5"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_ngst5")
|
||||||
|
roughness = 0.73
|
||||||
|
emission_intensity = 7.5
|
||||||
|
emission_texture = ExtResource("1_ngst5")
|
||||||
|
texture_filter = 5
|
||||||
13
Materials/Lights/Spotlight_Glass_Emissive.tres
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://blcwr4ltx5kto"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Lights/Spotlight_Glass_Emissive_Emissive.dds" id="1_a8o0w"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://ovt3jxtq6vhn" path="res://Textures/Lights/Spotlight_Glass_Emissive_Normal.png" id="2_x24oj"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_a8o0w")
|
||||||
|
roughness = 0.73
|
||||||
|
emission = Color(1, 1, 1, 1)
|
||||||
|
emission_intensity = 45.0
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_x24oj")
|
||||||
|
texture_filter = 5
|
||||||
12
Materials/Lights/Spotlight_Glass_Warm.tres
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
[gd_resource type="StandardMaterial3D" load_steps=3 format=3 uid="uid://c20b24omxemih"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" path="res://Textures/Lights/Spotlight_Glass_Emissive_Emissive.dds" id="1_l7o67"]
|
||||||
|
[ext_resource type="Texture2D" uid="uid://ovt3jxtq6vhn" path="res://Textures/Lights/Spotlight_Glass_Emissive_Normal.png" id="2_fqg3s"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
albedo_texture = ExtResource("1_l7o67")
|
||||||
|
roughness = 0.73
|
||||||
|
emission = Color(1, 0.686275, 0.278431, 1)
|
||||||
|
normal_enabled = true
|
||||||
|
normal_texture = ExtResource("2_fqg3s")
|
||||||
|
texture_filter = 5
|
||||||