generated from krampus/template-godot4
Compare commits
8 Commits
6e34f236ca
...
0b0cb0ddf1
Author | SHA1 | Date |
---|---|---|
Rob Kelly | 0b0cb0ddf1 | |
Rob Kelly | bf24a280d6 | |
Rob Kelly | c1b7d1b15f | |
Rob Kelly | cbed315048 | |
Rob Kelly | 074dbb06dc | |
Rob Kelly | 162f2237d4 | |
Rob Kelly | 486cb17604 | |
Rob Kelly | 4716dd92ac |
|
@ -0,0 +1,120 @@
|
||||||
|
GFOLF: Combat Golf Action
|
||||||
|
Asset credits
|
||||||
|
|
||||||
|
* Graphics
|
||||||
|
|
||||||
|
** Clear Sea Water
|
||||||
|
|
||||||
|
*** Retrieved from https://www.the3rdsequence.com/texturedb/texture/44/clear+sea+water/
|
||||||
|
|
||||||
|
*** Author: the3rdSequence
|
||||||
|
|
||||||
|
*** License: CC BY 4.0
|
||||||
|
|
||||||
|
* Fonts
|
||||||
|
|
||||||
|
** Dokdo
|
||||||
|
|
||||||
|
*** Retrieved from https://fonts.google.com/specimen/Dokdo
|
||||||
|
|
||||||
|
*** Author: FONTRIX
|
||||||
|
|
||||||
|
*** License: OFL 1.1
|
||||||
|
|
||||||
|
** Geo
|
||||||
|
|
||||||
|
*** Retrieved from https://fonts.google.com/specimen/Geo
|
||||||
|
|
||||||
|
*** Author: Ben Weiner
|
||||||
|
|
||||||
|
*** License: OFL 1.1
|
||||||
|
|
||||||
|
** Racing Sans One
|
||||||
|
|
||||||
|
*** Retrieved from https://fonts.google.com/specimen/Racing+Sans+One
|
||||||
|
|
||||||
|
*** Author: Impallari Type
|
||||||
|
|
||||||
|
*** License: OFL 1.1
|
||||||
|
|
||||||
|
* Sound
|
||||||
|
|
||||||
|
** drive1.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/zolopher/sounds/75203/
|
||||||
|
|
||||||
|
*** Author: zolopher
|
||||||
|
|
||||||
|
*** License: CC0
|
||||||
|
|
||||||
|
** drive2.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/zolopher/sounds/75214/
|
||||||
|
|
||||||
|
*** Author: zolopher
|
||||||
|
|
||||||
|
*** License: CC0
|
||||||
|
|
||||||
|
** drive3.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/zolopher/sounds/75204/
|
||||||
|
|
||||||
|
*** Author: zolopher
|
||||||
|
|
||||||
|
*** License: CC0
|
||||||
|
|
||||||
|
** drive4.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/13FPanska_Marval_Lukas/sounds/379328/
|
||||||
|
|
||||||
|
*** Author: 13FPanska_Marval_Lukas
|
||||||
|
|
||||||
|
*** License: CC0
|
||||||
|
|
||||||
|
** hole.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/inbeeld/sounds/21878/
|
||||||
|
|
||||||
|
*** Author: inbeeld
|
||||||
|
|
||||||
|
*** License: CC0
|
||||||
|
|
||||||
|
** putt1.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/lmbubec/sounds/119451/
|
||||||
|
|
||||||
|
*** Author: lmbubec
|
||||||
|
|
||||||
|
*** License: CC0
|
||||||
|
|
||||||
|
** grass1.wav - grass5.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/mmmtoop/sounds/674030/
|
||||||
|
|
||||||
|
*** Author: mmmtoop
|
||||||
|
|
||||||
|
*** License: CC0
|
||||||
|
|
||||||
|
** sand1.wav - sand3.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/Elements-Library/sounds/683785/
|
||||||
|
|
||||||
|
*** Author: Elements-Library
|
||||||
|
|
||||||
|
*** License: CC0
|
||||||
|
|
||||||
|
** explosion.mp3
|
||||||
|
|
||||||
|
*** Retrieved from https://pixabay.com/sound-effects/grenade-explosion-14-190266/
|
||||||
|
|
||||||
|
*** Author: DavidDumaisAudio
|
||||||
|
|
||||||
|
*** License: Pixabay
|
||||||
|
|
||||||
|
** ecofuture.wav
|
||||||
|
|
||||||
|
*** Retrieved from https://freesound.org/people/soneproject/sounds/346425/
|
||||||
|
|
||||||
|
*** Author: soneproject
|
||||||
|
|
||||||
|
*** License: CC BY 3.0
|
Binary file not shown.
Binary file not shown.
BIN
asset_dev/audio/674030__mmmtoop__230104-037_normalized_floor_mat_golf_ball_potential_kick_hit.wav (Stored with Git LFS)
Normal file
BIN
asset_dev/audio/674030__mmmtoop__230104-037_normalized_floor_mat_golf_ball_potential_kick_hit.wav (Stored with Git LFS)
Normal file
Binary file not shown.
BIN
asset_dev/audio/683785__elements-library__hard-impact-on-sand.wav (Stored with Git LFS)
Normal file
BIN
asset_dev/audio/683785__elements-library__hard-impact-on-sand.wav (Stored with Git LFS)
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -16,7 +16,7 @@ Rendering=null
|
||||||
antialiasing=1
|
antialiasing=1
|
||||||
generate_mipmaps=true
|
generate_mipmaps=true
|
||||||
disable_embedded_bitmaps=true
|
disable_embedded_bitmaps=true
|
||||||
multichannel_signed_distance_field=false
|
multichannel_signed_distance_field=true
|
||||||
msdf_pixel_range=8
|
msdf_pixel_range=8
|
||||||
msdf_size=48
|
msdf_size=48
|
||||||
allow_system_fallback=true
|
allow_system_fallback=true
|
||||||
|
|
|
@ -16,7 +16,7 @@ Rendering=null
|
||||||
antialiasing=1
|
antialiasing=1
|
||||||
generate_mipmaps=true
|
generate_mipmaps=true
|
||||||
disable_embedded_bitmaps=true
|
disable_embedded_bitmaps=true
|
||||||
multichannel_signed_distance_field=false
|
multichannel_signed_distance_field=true
|
||||||
msdf_pixel_range=8
|
msdf_pixel_range=8
|
||||||
msdf_size=48
|
msdf_size=48
|
||||||
allow_system_fallback=true
|
allow_system_fallback=true
|
||||||
|
|
|
@ -16,7 +16,7 @@ Rendering=null
|
||||||
antialiasing=1
|
antialiasing=1
|
||||||
generate_mipmaps=true
|
generate_mipmaps=true
|
||||||
disable_embedded_bitmaps=true
|
disable_embedded_bitmaps=true
|
||||||
multichannel_signed_distance_field=false
|
multichannel_signed_distance_field=true
|
||||||
msdf_pixel_range=8
|
msdf_pixel_range=8
|
||||||
msdf_size=48
|
msdf_size=48
|
||||||
allow_system_fallback=true
|
allow_system_fallback=true
|
||||||
|
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bp2iaowkqvtj8"
|
||||||
|
path="res://.godot/imported/concrete1.wav-fd53edddc2b6023804ce5ffb1713f99a.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/concrete1.wav"
|
||||||
|
dest_files=["res://.godot/imported/concrete1.wav-fd53edddc2b6023804ce5ffb1713f99a.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://4355dy0meqbm"
|
||||||
|
path="res://.godot/imported/concrete2.wav-ca6360ffedc83e3ef200990602e8177f.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/concrete2.wav"
|
||||||
|
dest_files=["res://.godot/imported/concrete2.wav-ca6360ffedc83e3ef200990602e8177f.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://orisjdcj3mes"
|
||||||
|
path="res://.godot/imported/concrete3.wav-fd28bbeb346240f5e96bc491f8e0a16f.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/concrete3.wav"
|
||||||
|
dest_files=["res://.godot/imported/concrete3.wav-fd28bbeb346240f5e96bc491f8e0a16f.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://o4whyv43rr1u"
|
||||||
|
path="res://.godot/imported/concrete4.wav-4a18f12d2767719d7c6842841fd8d85b.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/concrete4.wav"
|
||||||
|
dest_files=["res://.godot/imported/concrete4.wav-4a18f12d2767719d7c6842841fd8d85b.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://3csnnhxndt67"
|
||||||
|
path="res://.godot/imported/concrete5.wav-bfae0b04558dbd1d5e4feefb4d59d6b9.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/concrete5.wav"
|
||||||
|
dest_files=["res://.godot/imported/concrete5.wav-bfae0b04558dbd1d5e4feefb4d59d6b9.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://duayjxkje12ey"
|
||||||
|
path="res://.godot/imported/concrete6.wav-ba9216b4a836ae83a36866e8d77787dc.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/concrete6.wav"
|
||||||
|
dest_files=["res://.godot/imported/concrete6.wav-ba9216b4a836ae83a36866e8d77787dc.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bhhts1tkvv236"
|
||||||
|
path="res://.godot/imported/concrete7.wav-053d67f927d1311d4f9640a798e1807e.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/concrete7.wav"
|
||||||
|
dest_files=["res://.godot/imported/concrete7.wav-053d67f927d1311d4f9640a798e1807e.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cwpyh41qbh8js"
|
||||||
|
path="res://.godot/imported/grass1.wav-b4216b08493666f75784d0642045864f.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/grass1.wav"
|
||||||
|
dest_files=["res://.godot/imported/grass1.wav-b4216b08493666f75784d0642045864f.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cayyndwmxua5x"
|
||||||
|
path="res://.godot/imported/grass2.wav-430d8da851839bd8347aa77dc113d7ff.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/grass2.wav"
|
||||||
|
dest_files=["res://.godot/imported/grass2.wav-430d8da851839bd8347aa77dc113d7ff.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://b87bneqvovibi"
|
||||||
|
path="res://.godot/imported/grass3.wav-1d9817728f47ac5124105d7c1f50eeb0.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/grass3.wav"
|
||||||
|
dest_files=["res://.godot/imported/grass3.wav-1d9817728f47ac5124105d7c1f50eeb0.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://b0fup7btd0b1k"
|
||||||
|
path="res://.godot/imported/grass4.wav-29729dac6e9ca8db822b77925ab1a78e.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/grass4.wav"
|
||||||
|
dest_files=["res://.godot/imported/grass4.wav-29729dac6e9ca8db822b77925ab1a78e.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://c6d1rse1aveiy"
|
||||||
|
path="res://.godot/imported/grass5.wav-c1b5dcb7a89369922bcbafb0da9e769f.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/grass5.wav"
|
||||||
|
dest_files=["res://.godot/imported/grass5.wav-c1b5dcb7a89369922bcbafb0da9e769f.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bbbp6wrkuhkek"
|
||||||
|
path="res://.godot/imported/sand1.wav-adf26d7ca3003a8860fb46cc0758e7bd.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/sand1.wav"
|
||||||
|
dest_files=["res://.godot/imported/sand1.wav-adf26d7ca3003a8860fb46cc0758e7bd.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://b5xx5t050i4p"
|
||||||
|
path="res://.godot/imported/sand2.wav-8556fd9b18e6810c91fc69b1f24a839b.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/sand2.wav"
|
||||||
|
dest_files=["res://.godot/imported/sand2.wav-8556fd9b18e6810c91fc69b1f24a839b.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://c35jy105xr640"
|
||||||
|
path="res://.godot/imported/sand3.wav-708a3206418fb40e4b4f401186c037b1.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ball/sand3.wav"
|
||||||
|
dest_files=["res://.godot/imported/sand3.wav-708a3206418fb40e4b4f401186c037b1.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cllhgumv1fkju"
|
||||||
|
path="res://.godot/imported/drive1.wav-37a2ebf3422caee7737ed14d066e94ec.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/player/drive1.wav"
|
||||||
|
dest_files=["res://.godot/imported/drive1.wav-37a2ebf3422caee7737ed14d066e94ec.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://c8vouau0488fh"
|
||||||
|
path="res://.godot/imported/drive2.wav-40bb0e3487bcffb646233c3e9c9465a1.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/player/drive2.wav"
|
||||||
|
dest_files=["res://.godot/imported/drive2.wav-40bb0e3487bcffb646233c3e9c9465a1.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cskhg5l86yvkw"
|
||||||
|
path="res://.godot/imported/drive3.wav-cc637d549cbfcb948c40cc777dca0600.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/player/drive3.wav"
|
||||||
|
dest_files=["res://.godot/imported/drive3.wav-cc637d549cbfcb948c40cc777dca0600.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bkd8py2e7yfat"
|
||||||
|
path="res://.godot/imported/drive4.wav-b79415fd0bf467327ac8875e2a0a8c6a.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/player/drive4.wav"
|
||||||
|
dest_files=["res://.godot/imported/drive4.wav-b79415fd0bf467327ac8875e2a0a8c6a.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,19 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="mp3"
|
||||||
|
type="AudioStreamMP3"
|
||||||
|
uid="uid://cvsv02inxvsyw"
|
||||||
|
path="res://.godot/imported/explosion.mp3-7499f525d153013b4f2692e529312448.mp3str"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/player/explosion.mp3"
|
||||||
|
dest_files=["res://.godot/imported/explosion.mp3-7499f525d153013b4f2692e529312448.mp3str"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
loop=false
|
||||||
|
loop_offset=0
|
||||||
|
bpm=0
|
||||||
|
beat_count=0
|
||||||
|
bar_beats=4
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://b1pnbcsi0jrlf"
|
||||||
|
path="res://.godot/imported/hole.wav-084f4e3629b5927d5a661d5f59a9d3e7.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/player/hole.wav"
|
||||||
|
dest_files=["res://.godot/imported/hole.wav-084f4e3629b5927d5a661d5f59a9d3e7.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://j54ssyodqnn3"
|
||||||
|
path="res://.godot/imported/putt1.wav-f5b4cf94df3968330049619e9410ebd1.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/player/putt1.wav"
|
||||||
|
dest_files=["res://.godot/imported/putt1.wav-f5b4cf94df3968330049619e9410ebd1.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://bvl3vpj3bg04r"
|
||||||
|
path="res://.godot/imported/sparkle.wav-e0e2ee28a5f3eebbbd6eb43c0562e56d.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/player/sparkle.wav"
|
||||||
|
dest_files=["res://.godot/imported/sparkle.wav-e0e2ee28a5f3eebbbd6eb43c0562e56d.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://dxoo3qgkkhbpj"
|
||||||
|
path="res://.godot/imported/ecofuture1.wav-1ce9e72eda25c7270fd356e129c3353b.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ui/ecofuture1.wav"
|
||||||
|
dest_files=["res://.godot/imported/ecofuture1.wav-1ce9e72eda25c7270fd356e129c3353b.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://8uynlpios7u1"
|
||||||
|
path="res://.godot/imported/ecofuture2.wav-72a1f01a22cb0f38074ccdef6e2dc37f.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ui/ecofuture2.wav"
|
||||||
|
dest_files=["res://.godot/imported/ecofuture2.wav-72a1f01a22cb0f38074ccdef6e2dc37f.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://c8bxu5lusqevv"
|
||||||
|
path="res://.godot/imported/ecofuture3.wav-cfc8eb28b0ae99aa20757172461b6439.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ui/ecofuture3.wav"
|
||||||
|
dest_files=["res://.godot/imported/ecofuture3.wav-cfc8eb28b0ae99aa20757172461b6439.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
|
@ -0,0 +1,24 @@
|
||||||
|
[remap]
|
||||||
|
|
||||||
|
importer="wav"
|
||||||
|
type="AudioStreamWAV"
|
||||||
|
uid="uid://cuupx50lrp02p"
|
||||||
|
path="res://.godot/imported/ecofuture4.wav-5123fe535484e1633f20122f24129c06.sample"
|
||||||
|
|
||||||
|
[deps]
|
||||||
|
|
||||||
|
source_file="res://assets/sound/sfx/ui/ecofuture4.wav"
|
||||||
|
dest_files=["res://.godot/imported/ecofuture4.wav-5123fe535484e1633f20122f24129c06.sample"]
|
||||||
|
|
||||||
|
[params]
|
||||||
|
|
||||||
|
force/8_bit=false
|
||||||
|
force/mono=false
|
||||||
|
force/max_rate=false
|
||||||
|
force/max_rate_hz=44100
|
||||||
|
edit/trim=false
|
||||||
|
edit/normalize=false
|
||||||
|
edit/loop_mode=0
|
||||||
|
edit/loop_begin=0
|
||||||
|
edit/loop_end=-1
|
||||||
|
compress/mode=0
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,15 @@
|
||||||
|
[gd_resource type="AudioBusLayout" format=3 uid="uid://cwxndi28bii8d"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
bus/1/name = &"SFX"
|
||||||
|
bus/1/solo = false
|
||||||
|
bus/1/mute = false
|
||||||
|
bus/1/bypass_fx = false
|
||||||
|
bus/1/volume_db = 0.0
|
||||||
|
bus/1/send = &"Master"
|
||||||
|
bus/2/name = &"Music"
|
||||||
|
bus/2/solo = false
|
||||||
|
bus/2/mute = false
|
||||||
|
bus/2/bypass_fx = false
|
||||||
|
bus/2/volume_db = 0.0
|
||||||
|
bus/2/send = &"Master"
|
|
@ -1,17 +1,10 @@
|
||||||
[gd_scene load_steps=51 format=3 uid="uid://bm2o3mex10v11"]
|
[gd_scene load_steps=37 format=3 uid="uid://bm2o3mex10v11"]
|
||||||
|
|
||||||
[ext_resource type="Texture2D" path="res://assets/textures/grass_fairway/grass_fairway_albedo.dds" id="2_e4m27"]
|
[ext_resource type="Terrain3DAssets" uid="uid://cwl34gstabgrx" path="res://levels/debug_level/terrain_assets.res" id="1_5smdk"]
|
||||||
[ext_resource type="Texture2D" path="res://assets/textures/grass_rough/grass_rough_albedo.dds" id="4_p0awb"]
|
|
||||||
[ext_resource type="Texture2D" path="res://assets/textures/grass_rough/grass_rough_normal.dds" id="4_yhjhv"]
|
|
||||||
[ext_resource type="Texture2D" path="res://assets/textures/grass_fairway/grass_fairway_normal.dds" id="5_o361t"]
|
|
||||||
[ext_resource type="Shader" path="res://src/shaders/psx_water.gdshader" id="6_0efu4"]
|
[ext_resource type="Shader" path="res://src/shaders/psx_water.gdshader" id="6_0efu4"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c47ern0l2d50r" path="res://assets/vista_2.png" id="6_ectru"]
|
[ext_resource type="Texture2D" uid="uid://c47ern0l2d50r" path="res://assets/vista_2.png" id="6_ectru"]
|
||||||
[ext_resource type="Texture2D" path="res://assets/textures/sand_trap/sand_trap_albedo.dds" id="6_nlea7"]
|
|
||||||
[ext_resource type="Texture2D" path="res://assets/textures/sand_trap/sand_trap_normal.dds" id="7_f25dn"]
|
|
||||||
[ext_resource type="Texture2D" uid="uid://con5a36t6n6sq" path="res://assets/textures/clear_sea_water_2048x2048.png" id="7_t86h2"]
|
[ext_resource type="Texture2D" uid="uid://con5a36t6n6sq" path="res://assets/textures/clear_sea_water_2048x2048.png" id="7_t86h2"]
|
||||||
[ext_resource type="Texture2D" path="res://assets/textures/mountain_rock/mountain_rock_albedo.dds" id="8_ujbjy"]
|
|
||||||
[ext_resource type="Script" path="res://src/world/ball_zone/ball_zone.gd" id="9_jwlau"]
|
[ext_resource type="Script" path="res://src/world/ball_zone/ball_zone.gd" id="9_jwlau"]
|
||||||
[ext_resource type="Texture2D" path="res://assets/textures/mountain_rock/mountain_rock_normal.dds" id="9_rrguh"]
|
|
||||||
[ext_resource type="PackedScene" uid="uid://dagh38vap4t1d" path="res://src/props/scenery/city/concrete_building_1.tscn" id="10_lf15j"]
|
[ext_resource type="PackedScene" uid="uid://dagh38vap4t1d" path="res://src/props/scenery/city/concrete_building_1.tscn" id="10_lf15j"]
|
||||||
[ext_resource type="PackedScene" uid="uid://cjubxs7peir5k" path="res://src/props/scenery/city/kana_signboard.tscn" id="11_evxup"]
|
[ext_resource type="PackedScene" uid="uid://cjubxs7peir5k" path="res://src/props/scenery/city/kana_signboard.tscn" id="11_evxup"]
|
||||||
[ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"]
|
[ext_resource type="PackedScene" uid="uid://di7aql54lksn7" path="res://src/props/scenery/trees/palm_tree/palm_tree.tscn" id="12_sswxf"]
|
||||||
|
@ -34,7 +27,7 @@ noise = SubResource("FastNoiseLite_rpgb7")
|
||||||
|
|
||||||
[sub_resource type="Terrain3DMaterial" id="Terrain3DMaterial_woy2k"]
|
[sub_resource type="Terrain3DMaterial" id="Terrain3DMaterial_woy2k"]
|
||||||
_shader_parameters = {
|
_shader_parameters = {
|
||||||
"auto_base_texture": 3,
|
"auto_base_texture": 4,
|
||||||
"auto_height_reduction": 0.1,
|
"auto_height_reduction": 0.1,
|
||||||
"auto_overlay_texture": 0,
|
"auto_overlay_texture": 0,
|
||||||
"auto_slope": 0.41,
|
"auto_slope": 0.41,
|
||||||
|
@ -61,53 +54,6 @@ world_background = 2
|
||||||
texture_filtering = 1
|
texture_filtering = 1
|
||||||
auto_shader = true
|
auto_shader = true
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_l1sla"]
|
|
||||||
transparency = 4
|
|
||||||
cull_mode = 2
|
|
||||||
vertex_color_use_as_albedo = true
|
|
||||||
backlight_enabled = true
|
|
||||||
backlight = Color(0.5, 0.5, 0.5, 1)
|
|
||||||
distance_fade_mode = 1
|
|
||||||
distance_fade_min_distance = 960.0
|
|
||||||
distance_fade_max_distance = 480.0
|
|
||||||
|
|
||||||
[sub_resource type="Terrain3DMeshAsset" id="Terrain3DMeshAsset_iaq2t"]
|
|
||||||
height_offset = 0.5
|
|
||||||
density = 10.0
|
|
||||||
material_override = SubResource("StandardMaterial3D_l1sla")
|
|
||||||
generated_type = 1
|
|
||||||
|
|
||||||
[sub_resource type="Terrain3DTextureAsset" id="Terrain3DTextureAsset_kocfk"]
|
|
||||||
name = "Rough Grass"
|
|
||||||
albedo_texture = ExtResource("4_p0awb")
|
|
||||||
normal_texture = ExtResource("4_yhjhv")
|
|
||||||
uv_scale = 0.01
|
|
||||||
|
|
||||||
[sub_resource type="Terrain3DTextureAsset" id="Terrain3DTextureAsset_vmhlw"]
|
|
||||||
name = "Fairway Grass"
|
|
||||||
id = 1
|
|
||||||
albedo_texture = ExtResource("2_e4m27")
|
|
||||||
normal_texture = ExtResource("5_o361t")
|
|
||||||
uv_scale = 0.01
|
|
||||||
|
|
||||||
[sub_resource type="Terrain3DTextureAsset" id="Terrain3DTextureAsset_k6h8c"]
|
|
||||||
name = "sand_trap_albedo"
|
|
||||||
id = 2
|
|
||||||
albedo_texture = ExtResource("6_nlea7")
|
|
||||||
normal_texture = ExtResource("7_f25dn")
|
|
||||||
uv_scale = 0.01
|
|
||||||
|
|
||||||
[sub_resource type="Terrain3DTextureAsset" id="Terrain3DTextureAsset_13d2a"]
|
|
||||||
name = "mountain_rock_albedo"
|
|
||||||
id = 3
|
|
||||||
albedo_texture = ExtResource("8_ujbjy")
|
|
||||||
normal_texture = ExtResource("9_rrguh")
|
|
||||||
uv_scale = 0.02
|
|
||||||
|
|
||||||
[sub_resource type="Terrain3DAssets" id="Terrain3DAssets_eq5uw"]
|
|
||||||
mesh_list = Array[Terrain3DMeshAsset]([SubResource("Terrain3DMeshAsset_iaq2t")])
|
|
||||||
texture_list = Array[Terrain3DTextureAsset]([SubResource("Terrain3DTextureAsset_kocfk"), SubResource("Terrain3DTextureAsset_vmhlw"), SubResource("Terrain3DTextureAsset_k6h8c"), SubResource("Terrain3DTextureAsset_13d2a")])
|
|
||||||
|
|
||||||
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_h8tes"]
|
[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_h8tes"]
|
||||||
panorama = ExtResource("6_ectru")
|
panorama = ExtResource("6_ectru")
|
||||||
|
|
||||||
|
@ -243,7 +189,7 @@ point_count = 5
|
||||||
[node name="Terrain3D" type="Terrain3D" parent="."]
|
[node name="Terrain3D" type="Terrain3D" parent="."]
|
||||||
data_directory = "res://levels/debug_level/terrain_3d_data"
|
data_directory = "res://levels/debug_level/terrain_3d_data"
|
||||||
material = SubResource("Terrain3DMaterial_woy2k")
|
material = SubResource("Terrain3DMaterial_woy2k")
|
||||||
assets = SubResource("Terrain3DAssets_eq5uw")
|
assets = ExtResource("1_5smdk")
|
||||||
mesh_size = 64
|
mesh_size = 64
|
||||||
top_level = true
|
top_level = true
|
||||||
metadata/_edit_lock_ = true
|
metadata/_edit_lock_ = true
|
||||||
|
@ -260,6 +206,8 @@ shadow_blur = 4.0
|
||||||
[node name="Course" type="Node3D" parent="."]
|
[node name="Course" type="Node3D" parent="."]
|
||||||
|
|
||||||
[node name="Fairway" type="Area3D" parent="Course"]
|
[node name="Fairway" type="Area3D" parent="Course"]
|
||||||
|
gravity_point_center = Vector3(0, 1, 0)
|
||||||
|
gravity_direction = Vector3(0, 1, 0)
|
||||||
script = ExtResource("9_jwlau")
|
script = ExtResource("9_jwlau")
|
||||||
terrain_angular_damping = 2.0
|
terrain_angular_damping = 2.0
|
||||||
|
|
||||||
|
|
BIN
levels/debug_level/terrain_3d_data/terrain3d_00_00.res (Stored with Git LFS)
BIN
levels/debug_level/terrain_3d_data/terrain3d_00_00.res (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
|
@ -197,6 +197,12 @@ ball_previous={
|
||||||
|
|
||||||
3d_physics/layer_1="Collision Geometry"
|
3d_physics/layer_1="Collision Geometry"
|
||||||
3d_physics/layer_2="Layer 3"
|
3d_physics/layer_2="Layer 3"
|
||||||
|
3d_physics/layer_27="Glass Material"
|
||||||
|
3d_physics/layer_28="Metal Material"
|
||||||
|
3d_physics/layer_29="Rock Material"
|
||||||
|
3d_physics/layer_30="Wood Material"
|
||||||
|
3d_physics/layer_31="Sand Material"
|
||||||
|
3d_physics/layer_32="Grass Material"
|
||||||
|
|
||||||
[physics]
|
[physics]
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
class_name BallSFX extends Node3D
|
||||||
|
## Controller for ball sound effects.
|
||||||
|
|
||||||
|
const BASE_VOLUME := -36.0
|
||||||
|
const MAX_VOLUME := 3.0
|
||||||
|
const VELOCITY_ATTENUATION_SCALE := 400.0
|
||||||
|
|
||||||
|
@onready var parent: GameBall = $".."
|
||||||
|
|
||||||
|
@onready var grass_sfx_player: AudioStreamPlayer3D = %GrassSFXPlayer
|
||||||
|
@onready var concrete_sfx_player: AudioStreamPlayer3D = %ConcreteSFXPlayer
|
||||||
|
@onready var sand_sfx_player: AudioStreamPlayer3D = %SandSFXPlayer
|
||||||
|
|
||||||
|
|
||||||
|
func _force_attenuated_volume() -> float:
|
||||||
|
# Attenuate volume based on impact force
|
||||||
|
return lerpf(
|
||||||
|
BASE_VOLUME,
|
||||||
|
MAX_VOLUME,
|
||||||
|
clampf(parent.linear_velocity.length_squared() / VELOCITY_ATTENUATION_SCALE, 0, 1)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
func _play(player: AudioStreamPlayer3D) -> void:
|
||||||
|
player.volume_db = _force_attenuated_volume()
|
||||||
|
print("PLAYING: ", player, "... VOLUME: ", player.volume_db)
|
||||||
|
player.play()
|
||||||
|
|
||||||
|
|
||||||
|
func play_sfx(terrain: Terrain.Type) -> void:
|
||||||
|
match terrain:
|
||||||
|
Terrain.Type.ROUGH, Terrain.Type.GREEN, Terrain.Type.FAIRWAY:
|
||||||
|
_play(grass_sfx_player)
|
||||||
|
Terrain.Type.CONCRETE, Terrain.Type.ROCK:
|
||||||
|
_play(concrete_sfx_player)
|
||||||
|
Terrain.Type.SAND:
|
||||||
|
_play(sand_sfx_player)
|
|
@ -52,6 +52,8 @@ var _position_on_last_wake: Vector3
|
||||||
var _awake := false
|
var _awake := false
|
||||||
var _zones: Array[BallZone] = []
|
var _zones: Array[BallZone] = []
|
||||||
|
|
||||||
|
@onready var sfx: BallSFX = %SFX
|
||||||
|
|
||||||
@onready var normal_physics: PhysicsMaterial = preload(
|
@onready var normal_physics: PhysicsMaterial = preload(
|
||||||
"res://src/equipment/balls/physics_ball/normal_physics.tres"
|
"res://src/equipment/balls/physics_ball/normal_physics.tres"
|
||||||
)
|
)
|
||||||
|
@ -142,3 +144,14 @@ func _on_sleeping_state_changed() -> void:
|
||||||
if sleeping:
|
if sleeping:
|
||||||
# Trigger to reassign on wake
|
# Trigger to reassign on wake
|
||||||
_awake = false
|
_awake = false
|
||||||
|
|
||||||
|
|
||||||
|
func _on_collision(body: Node) -> void:
|
||||||
|
if body is Terrain3D:
|
||||||
|
sfx.play_sfx(Terrain.at_position(global_position, body as Terrain3D))
|
||||||
|
elif body is CSGShape3D:
|
||||||
|
sfx.play_sfx(Terrain.from_physical_layer((body as CSGShape3D).collision_layer))
|
||||||
|
elif body is CollisionObject3D:
|
||||||
|
sfx.play_sfx(Terrain.from_physical_layer((body as CollisionObject3D).collision_layer))
|
||||||
|
else:
|
||||||
|
print_debug("COLLIDER: ", body)
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
[gd_scene load_steps=9 format=3 uid="uid://dfttci386ohip"]
|
[gd_scene load_steps=19 format=3 uid="uid://dfttci386ohip"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://src/equipment/balls/physics_ball/game_ball.gd" id="1_iwh2u"]
|
[ext_resource type="Script" path="res://src/equipment/balls/physics_ball/game_ball.gd" id="1_iwh2u"]
|
||||||
[ext_resource type="PhysicsMaterial" uid="uid://3bih72l068ic" path="res://src/equipment/balls/physics_ball/normal_physics.tres" id="1_l23pw"]
|
[ext_resource type="PhysicsMaterial" uid="uid://3bih72l068ic" path="res://src/equipment/balls/physics_ball/normal_physics.tres" id="1_l23pw"]
|
||||||
[ext_resource type="Texture2D" uid="uid://ckhiq6rfjv63u" path="res://assets/textures/gfolfball/gfolfball.png" id="1_y3q5j"]
|
[ext_resource type="Texture2D" uid="uid://ckhiq6rfjv63u" path="res://assets/textures/gfolfball/gfolfball.png" id="1_y3q5j"]
|
||||||
[ext_resource type="Texture2D" uid="uid://btntjs7mbdigu" path="res://assets/textures/gfolfball/gfolfball_normal.png" id="2_mx7l6"]
|
[ext_resource type="Texture2D" uid="uid://btntjs7mbdigu" path="res://assets/textures/gfolfball/gfolfball_normal.png" id="2_mx7l6"]
|
||||||
|
[ext_resource type="Script" path="res://src/equipment/balls/physics_ball/ball_sfx.gd" id="5_bhshl"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cayyndwmxua5x" path="res://assets/sound/sfx/ball/grass2.wav" id="7_l22cv"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://orisjdcj3mes" path="res://assets/sound/sfx/ball/concrete3.wav" id="7_t2ak2"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://o4whyv43rr1u" path="res://assets/sound/sfx/ball/concrete4.wav" id="8_0anjl"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://3csnnhxndt67" path="res://assets/sound/sfx/ball/concrete5.wav" id="9_p0lmw"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://bbbp6wrkuhkek" path="res://assets/sound/sfx/ball/sand1.wav" id="10_b64mx"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://b5xx5t050i4p" path="res://assets/sound/sfx/ball/sand2.wav" id="11_ed8je"]
|
||||||
|
|
||||||
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xqofq"]
|
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xqofq"]
|
||||||
albedo_texture = ExtResource("1_y3q5j")
|
albedo_texture = ExtResource("1_y3q5j")
|
||||||
|
@ -66,6 +73,25 @@ func _draw() -> void:
|
||||||
draw_line(start, end, COLOR_MAGNUS, WIDTH)
|
draw_line(start, end, COLOR_MAGNUS, WIDTH)
|
||||||
"
|
"
|
||||||
|
|
||||||
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gc38m"]
|
||||||
|
playback_mode = 1
|
||||||
|
random_pitch = 1.1
|
||||||
|
streams_count = 1
|
||||||
|
stream_0/stream = ExtResource("7_l22cv")
|
||||||
|
|
||||||
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_tg0n0"]
|
||||||
|
random_pitch = 1.1
|
||||||
|
streams_count = 3
|
||||||
|
stream_0/stream = ExtResource("7_t2ak2")
|
||||||
|
stream_1/stream = ExtResource("8_0anjl")
|
||||||
|
stream_2/stream = ExtResource("9_p0lmw")
|
||||||
|
|
||||||
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_uu1f8"]
|
||||||
|
playback_mode = 1
|
||||||
|
streams_count = 2
|
||||||
|
stream_0/stream = ExtResource("10_b64mx")
|
||||||
|
stream_1/stream = ExtResource("11_ed8je")
|
||||||
|
|
||||||
[node name="PhysicsBall" type="RigidBody3D"]
|
[node name="PhysicsBall" type="RigidBody3D"]
|
||||||
mass = 0.05
|
mass = 0.05
|
||||||
physics_material_override = ExtResource("1_l23pw")
|
physics_material_override = ExtResource("1_l23pw")
|
||||||
|
@ -97,4 +123,28 @@ grow_vertical = 2
|
||||||
script = SubResource("GDScript_p4v7o")
|
script = SubResource("GDScript_p4v7o")
|
||||||
draw_reoriented_basis = false
|
draw_reoriented_basis = false
|
||||||
|
|
||||||
|
[node name="SFX" type="Node3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
script = ExtResource("5_bhshl")
|
||||||
|
|
||||||
|
[node name="GrassSFXPlayer" type="AudioStreamPlayer3D" parent="SFX"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = SubResource("AudioStreamRandomizer_gc38m")
|
||||||
|
unit_size = 40.0
|
||||||
|
bus = &"SFX"
|
||||||
|
|
||||||
|
[node name="ConcreteSFXPlayer" type="AudioStreamPlayer3D" parent="SFX"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = SubResource("AudioStreamRandomizer_tg0n0")
|
||||||
|
unit_size = 40.0
|
||||||
|
bus = &"SFX"
|
||||||
|
|
||||||
|
[node name="SandSFXPlayer" type="AudioStreamPlayer3D" parent="SFX"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = SubResource("AudioStreamRandomizer_uu1f8")
|
||||||
|
unit_size = 40.0
|
||||||
|
max_db = 0.0
|
||||||
|
bus = &"SFX"
|
||||||
|
|
||||||
|
[connection signal="body_entered" from="." to="." method="_on_collision"]
|
||||||
[connection signal="sleeping_state_changed" from="." to="." method="_on_sleeping_state_changed"]
|
[connection signal="sleeping_state_changed" from="." to="." method="_on_sleeping_state_changed"]
|
||||||
|
|
|
@ -184,10 +184,12 @@ stretch = true
|
||||||
script = ExtResource("3_rmm5i")
|
script = ExtResource("3_rmm5i")
|
||||||
|
|
||||||
[node name="Viewport" type="SubViewport" parent="RootControl/Rumbler/ViewportContainer"]
|
[node name="Viewport" type="SubViewport" parent="RootControl/Rumbler/ViewportContainer"]
|
||||||
|
unique_name_in_owner = true
|
||||||
handle_input_locally = false
|
handle_input_locally = false
|
||||||
msaa_3d = 3
|
msaa_3d = 3
|
||||||
screen_space_aa = 1
|
screen_space_aa = 1
|
||||||
use_taa = true
|
use_taa = true
|
||||||
|
audio_listener_enable_3d = true
|
||||||
size = Vector2i(1920, 1080)
|
size = Vector2i(1920, 1080)
|
||||||
render_target_update_mode = 4
|
render_target_update_mode = 4
|
||||||
|
|
||||||
|
|
|
@ -140,6 +140,7 @@ var _tracking_camera: OrbitalCamera
|
||||||
@onready var character: CharacterController = $PlayerPivot/GfolfGirl
|
@onready var character: CharacterController = $PlayerPivot/GfolfGirl
|
||||||
|
|
||||||
@onready var shot_animation: AnimationPlayer = %ShotAnimation
|
@onready var shot_animation: AnimationPlayer = %ShotAnimation
|
||||||
|
@onready var shot_sfx: ShotSFX = %ShotSFX
|
||||||
|
|
||||||
@onready var arrow: Node3D = %Arrow
|
@onready var arrow: Node3D = %Arrow
|
||||||
@onready var arrow_pivot: Node3D = %ArrowPivot
|
@onready var arrow_pivot: Node3D = %ArrowPivot
|
||||||
|
@ -161,6 +162,7 @@ var _tracking_camera: OrbitalCamera
|
||||||
@onready var ball_return_timer: Timer = %BallReturnTimer
|
@onready var ball_return_timer: Timer = %BallReturnTimer
|
||||||
|
|
||||||
@onready var explosion_animation: AnimationPlayer = %ExplosionAnimation
|
@onready var explosion_animation: AnimationPlayer = %ExplosionAnimation
|
||||||
|
@onready var player_label: Label3D = %PlayerLabel
|
||||||
|
|
||||||
@onready var camera_distance := zoom.position.z:
|
@onready var camera_distance := zoom.position.z:
|
||||||
set = _set_camera_distance
|
set = _set_camera_distance
|
||||||
|
@ -180,6 +182,12 @@ func _ready() -> void:
|
||||||
ball_type = initial_ball
|
ball_type = initial_ball
|
||||||
club = initial_club
|
club = initial_club
|
||||||
character.set_color(player.color)
|
character.set_color(player.color)
|
||||||
|
|
||||||
|
# Set up player 3D label
|
||||||
|
player_label.text = player.name
|
||||||
|
player_label.modulate = player.color
|
||||||
|
player_label.outline_modulate = ColorTools.get_bg_color(player.color)
|
||||||
|
|
||||||
_on_phase_change(phase)
|
_on_phase_change(phase)
|
||||||
|
|
||||||
|
|
||||||
|
@ -223,6 +231,10 @@ func is_active() -> bool:
|
||||||
return phase != Phase.FINISHED
|
return phase != Phase.FINISHED
|
||||||
|
|
||||||
|
|
||||||
|
func is_shot_good() -> bool:
|
||||||
|
return abs(shot_curve) <= NICE_THRESHOLD
|
||||||
|
|
||||||
|
|
||||||
func finish_downswing() -> void:
|
func finish_downswing() -> void:
|
||||||
phase = Phase.SHOT
|
phase = Phase.SHOT
|
||||||
|
|
||||||
|
@ -235,13 +247,14 @@ func take_shot() -> void:
|
||||||
# Impact screenshake & hitlag
|
# Impact screenshake & hitlag
|
||||||
if game:
|
if game:
|
||||||
if shot_power > BIG_POWER_THRESHOLD:
|
if shot_power > BIG_POWER_THRESHOLD:
|
||||||
game.viewport.hit_lag_big()
|
#game.viewport.hit_lag_big()
|
||||||
var shake_intensity: float = (
|
var shake_intensity: float = (
|
||||||
10.0 * (shot_power - BIG_POWER_THRESHOLD) / (1.0 - BIG_POWER_THRESHOLD)
|
10.0 * (shot_power - BIG_POWER_THRESHOLD) / (1.0 - BIG_POWER_THRESHOLD)
|
||||||
)
|
)
|
||||||
game.viewport.screen_shake(shake_intensity, 1.0)
|
game.viewport.screen_shake(shake_intensity, 1.0)
|
||||||
else:
|
else:
|
||||||
game.viewport.hit_lag_small()
|
pass
|
||||||
|
#game.viewport.hit_lag_small()
|
||||||
|
|
||||||
print_debug("WHACK!\nPower: ", shot_power, "\nCurve: ", shot_curve)
|
print_debug("WHACK!\nPower: ", shot_power, "\nCurve: ", shot_curve)
|
||||||
|
|
||||||
|
@ -263,6 +276,9 @@ func take_shot() -> void:
|
||||||
game_ball.freeze = false
|
game_ball.freeze = false
|
||||||
game_ball.apply_impulse(impulse, offset)
|
game_ball.apply_impulse(impulse, offset)
|
||||||
|
|
||||||
|
# Play SFX
|
||||||
|
shot_sfx.play_shot_sfx(club, is_shot_good(), shot_power)
|
||||||
|
|
||||||
# Use a ball if a limited type is selected
|
# Use a ball if a limited type is selected
|
||||||
if player.get_balls(ball_type) > 0:
|
if player.get_balls(ball_type) > 0:
|
||||||
player.mutate_balls(ball_type, -1)
|
player.mutate_balls(ball_type, -1)
|
||||||
|
@ -434,7 +450,7 @@ func _on_phase_change(new_phase: Phase) -> void:
|
||||||
if perfect_aim:
|
if perfect_aim:
|
||||||
shot_curve = 0.0
|
shot_curve = 0.0
|
||||||
|
|
||||||
if abs(shot_curve) <= NICE_THRESHOLD:
|
if is_shot_good():
|
||||||
hud.play_nice_animation()
|
hud.play_nice_animation()
|
||||||
|
|
||||||
if not driving_range:
|
if not driving_range:
|
||||||
|
|
|
@ -1,13 +1,38 @@
|
||||||
[gd_scene load_steps=22 format=3 uid="uid://cy7t2tc4y3b4"]
|
[gd_scene load_steps=34 format=3 uid="uid://cy7t2tc4y3b4"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://src/player/shot_setup/shot_setup.gd" id="1_r6ei4"]
|
[ext_resource type="Script" path="res://src/player/shot_setup/shot_setup.gd" id="1_r6ei4"]
|
||||||
[ext_resource type="Script" path="res://src/player/shot_setup/ball_point.gd" id="2_e6i3g"]
|
[ext_resource type="Script" path="res://src/player/shot_setup/ball_point.gd" id="2_e6i3g"]
|
||||||
[ext_resource type="PackedScene" uid="uid://c2k88ns0h5ie1" path="res://src/ui/3d/arrow/arrow.tscn" id="2_s70wl"]
|
[ext_resource type="PackedScene" uid="uid://c2k88ns0h5ie1" path="res://src/ui/3d/arrow/arrow.tscn" id="2_s70wl"]
|
||||||
|
[ext_resource type="Script" path="res://src/player/shot_setup/shot_sfx.gd" id="3_7vs2d"]
|
||||||
[ext_resource type="PackedScene" uid="uid://1s3gywmoi20e" path="res://src/characters/player_characters/gfolf_girl/gfolf_girl.tscn" id="3_e4aur"]
|
[ext_resource type="PackedScene" uid="uid://1s3gywmoi20e" path="res://src/characters/player_characters/gfolf_girl/gfolf_girl.tscn" id="3_e4aur"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cllhgumv1fkju" path="res://assets/sound/sfx/player/drive1.wav" id="3_em3cj"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://c8vouau0488fh" path="res://assets/sound/sfx/player/drive2.wav" id="4_4cajc"]
|
||||||
[ext_resource type="PackedScene" uid="uid://fht6j87o8ecr" path="res://src/ui/3d/projectile_arc/projectile_arc.tscn" id="4_ry2ho"]
|
[ext_resource type="PackedScene" uid="uid://fht6j87o8ecr" path="res://src/ui/3d/projectile_arc/projectile_arc.tscn" id="4_ry2ho"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cskhg5l86yvkw" path="res://assets/sound/sfx/player/drive3.wav" id="5_5lj1j"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://bkd8py2e7yfat" path="res://assets/sound/sfx/player/drive4.wav" id="6_1wnu3"]
|
||||||
[ext_resource type="PackedScene" uid="uid://dbdul15c4oblg" path="res://src/ui/3d/projected_target.tscn" id="6_mynqj"]
|
[ext_resource type="PackedScene" uid="uid://dbdul15c4oblg" path="res://src/ui/3d/projected_target.tscn" id="6_mynqj"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://j54ssyodqnn3" path="res://assets/sound/sfx/player/putt1.wav" id="7_niyj5"]
|
||||||
[ext_resource type="Script" path="res://src/player/shot_setup/hitbox.gd" id="7_uh8kn"]
|
[ext_resource type="Script" path="res://src/player/shot_setup/hitbox.gd" id="7_uh8kn"]
|
||||||
[ext_resource type="Texture2D" uid="uid://2yoipvd107t1" path="res://assets/sprites/dope_explosion/dope_explosion.tres" id="8_5ghmo"]
|
[ext_resource type="Texture2D" uid="uid://2yoipvd107t1" path="res://assets/sprites/dope_explosion/dope_explosion.tres" id="8_5ghmo"]
|
||||||
|
[ext_resource type="FontFile" uid="uid://dsa0oh7c0h4pu" path="res://assets/fonts/Racing_Sans_One/RacingSansOne-Regular.ttf" id="9_y5iv1"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://cvsv02inxvsyw" path="res://assets/sound/sfx/player/explosion.mp3" id="15_fn6g1"]
|
||||||
|
|
||||||
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_gh0gi"]
|
||||||
|
random_pitch = 1.1
|
||||||
|
streams_count = 1
|
||||||
|
stream_0/stream = ExtResource("3_em3cj")
|
||||||
|
|
||||||
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_7isox"]
|
||||||
|
random_pitch = 1.1
|
||||||
|
streams_count = 3
|
||||||
|
stream_0/stream = ExtResource("4_4cajc")
|
||||||
|
stream_1/stream = ExtResource("5_5lj1j")
|
||||||
|
stream_2/stream = ExtResource("6_1wnu3")
|
||||||
|
|
||||||
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_wnuop"]
|
||||||
|
random_pitch = 1.1
|
||||||
|
streams_count = 1
|
||||||
|
stream_0/stream = ExtResource("7_niyj5")
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_ug2a7"]
|
[sub_resource type="Animation" id="Animation_ug2a7"]
|
||||||
length = 0.001
|
length = 0.001
|
||||||
|
@ -218,6 +243,18 @@ tracks/1/keys = {
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [false]
|
"values": [false]
|
||||||
}
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = false
|
||||||
|
tracks/2/path = NodePath("ExplosionMesh/ExplosionSFXPlayer:playing")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_bv1ov"]
|
[sub_resource type="Animation" id="Animation_bv1ov"]
|
||||||
resource_name = "explode"
|
resource_name = "explode"
|
||||||
|
@ -246,6 +283,18 @@ tracks/1/keys = {
|
||||||
"update": 1,
|
"update": 1,
|
||||||
"values": [true, false]
|
"values": [true, false]
|
||||||
}
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath("ExplosionMesh/ExplosionSFXPlayer:playing")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_dg262"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_dg262"]
|
||||||
_data = {
|
_data = {
|
||||||
|
@ -253,6 +302,11 @@ _data = {
|
||||||
"explode": SubResource("Animation_bv1ov")
|
"explode": SubResource("Animation_bv1ov")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AudioStreamRandomizer" id="AudioStreamRandomizer_8natr"]
|
||||||
|
random_pitch = 1.1
|
||||||
|
streams_count = 1
|
||||||
|
stream_0/stream = ExtResource("15_fn6g1")
|
||||||
|
|
||||||
[node name="ShotSetup" type="Node3D"]
|
[node name="ShotSetup" type="Node3D"]
|
||||||
script = ExtResource("1_r6ei4")
|
script = ExtResource("1_r6ei4")
|
||||||
|
|
||||||
|
@ -261,6 +315,27 @@ unique_name_in_owner = true
|
||||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.08, 0)
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.08, 0)
|
||||||
script = ExtResource("2_e6i3g")
|
script = ExtResource("2_e6i3g")
|
||||||
|
|
||||||
|
[node name="ShotSFX" type="Node3D" parent="BallPoint"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
script = ExtResource("3_7vs2d")
|
||||||
|
|
||||||
|
[node name="GoodDriveSFXPlayer" type="AudioStreamPlayer3D" parent="BallPoint/ShotSFX"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = SubResource("AudioStreamRandomizer_gh0gi")
|
||||||
|
volume_db = -3.0
|
||||||
|
bus = &"SFX"
|
||||||
|
|
||||||
|
[node name="BadDriveSFXPlayer" type="AudioStreamPlayer3D" parent="BallPoint/ShotSFX"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = SubResource("AudioStreamRandomizer_7isox")
|
||||||
|
volume_db = -1.0
|
||||||
|
bus = &"SFX"
|
||||||
|
|
||||||
|
[node name="PuttSFXPlayer" type="AudioStreamPlayer3D" parent="BallPoint/ShotSFX"]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
stream = SubResource("AudioStreamRandomizer_wnuop")
|
||||||
|
bus = &"SFX"
|
||||||
|
|
||||||
[node name="PlayerPivot" type="Node3D" parent="."]
|
[node name="PlayerPivot" type="Node3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
||||||
|
@ -268,7 +343,7 @@ unique_name_in_owner = true
|
||||||
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.555968, 0, 0.0999683)
|
transform = Transform3D(-4.37114e-08, 0, 1, 0, 1, 0, -1, 0, -4.37114e-08, -0.555968, 0, 0.0999683)
|
||||||
|
|
||||||
[node name="DemoCamera" type="Camera3D" parent="PlayerPivot" groups=["DemoCamera"]]
|
[node name="DemoCamera" type="Camera3D" parent="PlayerPivot" groups=["DemoCamera"]]
|
||||||
transform = Transform3D(-0.124487, 0.584637, 0.801687, 0, 0.807972, -0.589221, -0.992221, -0.0733503, -0.100582, 0.395614, 0.0284514, -0.0394773)
|
transform = Transform3D(-0.311543, -0.0687373, 0.947743, 0, 0.99738, 0.0723374, -0.950232, 0.0225362, -0.310727, 0.845792, 0.706621, -0.383459)
|
||||||
|
|
||||||
[node name="Direction" type="Node3D" parent="."]
|
[node name="Direction" type="Node3D" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
@ -422,6 +497,32 @@ libraries = {
|
||||||
"": SubResource("AnimationLibrary_dg262")
|
"": SubResource("AnimationLibrary_dg262")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="ExplosionSFXPlayer" type="AudioStreamPlayer3D" parent="ExplosionMesh"]
|
||||||
|
stream = SubResource("AudioStreamRandomizer_8natr")
|
||||||
|
unit_size = 60.0
|
||||||
|
bus = &"SFX"
|
||||||
|
|
||||||
|
[node name="PlayerLabel" type="Label3D" parent="."]
|
||||||
|
unique_name_in_owner = true
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0)
|
||||||
|
visibility_range_begin = 50.0
|
||||||
|
visibility_range_begin_margin = 3.0
|
||||||
|
visibility_range_fade_mode = 1
|
||||||
|
pixel_size = 0.001
|
||||||
|
billboard = 1
|
||||||
|
no_depth_test = true
|
||||||
|
fixed_size = true
|
||||||
|
texture_filter = 5
|
||||||
|
render_priority = 4
|
||||||
|
outline_render_priority = 3
|
||||||
|
text = "Player Name"
|
||||||
|
font = ExtResource("9_y5iv1")
|
||||||
|
font_size = 36
|
||||||
|
outline_size = 10
|
||||||
|
line_spacing = -16.0
|
||||||
|
autowrap_mode = 2
|
||||||
|
width = 120.0
|
||||||
|
|
||||||
[connection signal="ball_changed" from="BallPoint" to="." method="_on_game_ball_changed"]
|
[connection signal="ball_changed" from="BallPoint" to="." method="_on_game_ball_changed"]
|
||||||
[connection signal="timeout" from="DownswingTimer" to="." method="finish_downswing"]
|
[connection signal="timeout" from="DownswingTimer" to="." method="finish_downswing"]
|
||||||
[connection signal="timeout" from="BallReturnTimer" to="." method="_on_ball_return_timer_timeout"]
|
[connection signal="timeout" from="BallReturnTimer" to="." method="_on_ball_return_timer_timeout"]
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
class_name ShotSFX extends Node3D
|
||||||
|
## SFX controller for golf shots
|
||||||
|
|
||||||
|
const BASE_VOLUME := -6.0
|
||||||
|
const MAX_VOLUME := -1.0
|
||||||
|
|
||||||
|
@onready var good_drive_sfx_player: AudioStreamPlayer3D = %GoodDriveSFXPlayer
|
||||||
|
@onready var bad_drive_sfx_player: AudioStreamPlayer3D = %BadDriveSFXPlayer
|
||||||
|
@onready var putt_sfx_player: AudioStreamPlayer3D = %PuttSFXPlayer
|
||||||
|
|
||||||
|
|
||||||
|
func _attenuate_volume(power: float) -> float:
|
||||||
|
return lerpf(BASE_VOLUME, MAX_VOLUME, power)
|
||||||
|
|
||||||
|
|
||||||
|
func play_shot_sfx(club: Club.Type, good: bool, power: float) -> void:
|
||||||
|
var player: AudioStreamPlayer3D
|
||||||
|
match club:
|
||||||
|
Club.Type.PUTTER:
|
||||||
|
player = putt_sfx_player
|
||||||
|
_:
|
||||||
|
# TODO more varied SFX maybe?
|
||||||
|
player = good_drive_sfx_player if good else bad_drive_sfx_player
|
||||||
|
|
||||||
|
player.volume_db = _attenuate_volume(power)
|
||||||
|
print_debug("Playing ", player)
|
||||||
|
player.play()
|
|
@ -8,6 +8,7 @@ data = PackedVector3Array(0, 0, -5.2392, -1.2315, 0, -2.5941, 1.2315, 0, -2.5941
|
||||||
[node name="Sailboat" instance=ExtResource("1_ivu5q")]
|
[node name="Sailboat" instance=ExtResource("1_ivu5q")]
|
||||||
|
|
||||||
[node name="StaticBody3D" type="StaticBody3D" parent="." index="1"]
|
[node name="StaticBody3D" type="StaticBody3D" parent="." index="1"]
|
||||||
|
collision_layer = 536870913
|
||||||
|
|
||||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" index="0"]
|
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D" index="0"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_mrf68")
|
shape = SubResource("ConcavePolygonShape3D_mrf68")
|
||||||
|
|
|
@ -45,6 +45,7 @@ bones/10/scale = Vector3(1, 1, 1)
|
||||||
bones/11/rotation = Quaternion(-0.13894, 0.0183908, 0.000355869, 0.99013)
|
bones/11/rotation = Quaternion(-0.13894, 0.0183908, 0.000355869, 0.99013)
|
||||||
|
|
||||||
[node name="StaticBody3D" type="StaticBody3D" parent="." index="2"]
|
[node name="StaticBody3D" type="StaticBody3D" parent="." index="2"]
|
||||||
|
collision_layer = 2147483649
|
||||||
|
|
||||||
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D" index="0"]
|
[node name="CollisionShape3D2" type="CollisionShape3D" parent="StaticBody3D" index="0"]
|
||||||
shape = SubResource("ConcavePolygonShape3D_bp5t6")
|
shape = SubResource("ConcavePolygonShape3D_bp5t6")
|
||||||
|
|
|
@ -15,8 +15,8 @@ grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
size_flags_horizontal = 4
|
size_flags_horizontal = 4
|
||||||
script = ExtResource("1_p0p8j")
|
script = ExtResource("1_p0p8j")
|
||||||
quantity = -1
|
text = "BALLTYPE"
|
||||||
unlimited = true
|
quantity = 18
|
||||||
|
|
||||||
[node name="BallLabel" type="Label" parent="."]
|
[node name="BallLabel" type="Label" parent="."]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
@ -35,34 +35,30 @@ grow_vertical = 2
|
||||||
theme_override_constants/outline_size = 10
|
theme_override_constants/outline_size = 10
|
||||||
theme_override_fonts/font = ExtResource("2_bu42i")
|
theme_override_fonts/font = ExtResource("2_bu42i")
|
||||||
theme_override_font_sizes/font_size = 25
|
theme_override_font_sizes/font_size = 25
|
||||||
|
text = "BALLTYPE"
|
||||||
horizontal_alignment = 2
|
horizontal_alignment = 2
|
||||||
|
|
||||||
[node name="QuantityContainer" type="HBoxContainer" parent="BallLabel"]
|
[node name="QuantityContainer" type="HBoxContainer" parent="BallLabel"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
visible = false
|
clip_contents = true
|
||||||
layout_mode = 1
|
layout_mode = 1
|
||||||
anchors_preset = -1
|
anchors_preset = -1
|
||||||
anchor_left = 1.0
|
anchor_left = 1.1
|
||||||
anchor_top = 0.8
|
anchor_top = 0.4
|
||||||
anchor_right = 1.0
|
anchor_right = 1.1
|
||||||
anchor_bottom = 0.8
|
anchor_bottom = 0.4
|
||||||
grow_horizontal = 2
|
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
theme_override_constants/separation = 0
|
theme_override_constants/separation = 0
|
||||||
|
|
||||||
[node name="Label" type="Label" parent="BallLabel/QuantityContainer"]
|
[node name="Label" type="Label" parent="BallLabel/QuantityContainer"]
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 8
|
|
||||||
size_flags_vertical = 8
|
|
||||||
theme_type_variation = &"QuantityLabel"
|
theme_type_variation = &"QuantityLabel"
|
||||||
theme_override_font_sizes/font_size = 22
|
theme_override_font_sizes/font_size = 40
|
||||||
text = "×"
|
text = "×"
|
||||||
|
|
||||||
[node name="QuantityLabel" type="Label" parent="BallLabel/QuantityContainer"]
|
[node name="QuantityLabel" type="Label" parent="BallLabel/QuantityContainer"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
size_flags_horizontal = 8
|
|
||||||
size_flags_vertical = 8
|
|
||||||
theme_type_variation = &"QuantityLabel"
|
theme_type_variation = &"QuantityLabel"
|
||||||
theme_override_font_sizes/font_size = 22
|
theme_override_font_sizes/font_size = 40
|
||||||
text = "-1"
|
text = "18"
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
[gd_scene load_steps=35 format=3 uid="uid://c4ifdiohng830"]
|
[gd_scene load_steps=36 format=3 uid="uid://c4ifdiohng830"]
|
||||||
|
|
||||||
[ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"]
|
[ext_resource type="Script" path="res://src/ui/shot_hud/shot_hud.gd" id="1_x5b4c"]
|
||||||
[ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"]
|
[ext_resource type="Shader" path="res://src/shaders/canvas_retro.gdshader" id="1_ybxxp"]
|
||||||
[ext_resource type="PackedScene" uid="uid://445qd7m4qe2j" path="res://src/ui/shot_hud/club_selector/club_selector.tscn" id="2_1hdub"]
|
[ext_resource type="PackedScene" uid="uid://445qd7m4qe2j" path="res://src/ui/shot_hud/club_selector/club_selector.tscn" id="2_1hdub"]
|
||||||
|
[ext_resource type="AudioStream" uid="uid://c8bxu5lusqevv" path="res://assets/sound/sfx/ui/ecofuture3.wav" id="2_5f3rs"]
|
||||||
[ext_resource type="Script" path="res://src/ui/decorations/rumbler.gd" id="3_6groq"]
|
[ext_resource type="Script" path="res://src/ui/decorations/rumbler.gd" id="3_6groq"]
|
||||||
[ext_resource type="Texture2D" uid="uid://b5812y3pmmgg5" path="res://assets/ui/gauge_patch.png" id="4_5kcpe"]
|
[ext_resource type="Texture2D" uid="uid://b5812y3pmmgg5" path="res://assets/ui/gauge_patch.png" id="4_5kcpe"]
|
||||||
[ext_resource type="Texture2D" uid="uid://76fjx2ukavqe" path="res://assets/ui/power_gauge_fill.png" id="5_3i1yq"]
|
[ext_resource type="Texture2D" uid="uid://76fjx2ukavqe" path="res://assets/ui/power_gauge_fill.png" id="5_3i1yq"]
|
||||||
|
@ -74,6 +75,18 @@ tracks/4/keys = {
|
||||||
"points": PackedFloat32Array(0.5, -0.25, 0, 0.25, 0),
|
"points": PackedFloat32Array(0.5, -0.25, 0, 0.25, 0),
|
||||||
"times": PackedFloat32Array(0)
|
"times": PackedFloat32Array(0)
|
||||||
}
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = false
|
||||||
|
tracks/5/path = NodePath("AudioStreamPlayer:playing")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="Animation" id="Animation_cwotn"]
|
[sub_resource type="Animation" id="Animation_cwotn"]
|
||||||
resource_name = "display"
|
resource_name = "display"
|
||||||
|
@ -137,6 +150,18 @@ tracks/4/keys = {
|
||||||
"points": PackedFloat32Array(0.5, -0.25, 0, 0.5, -0.055, 0.5, -0.4, 0.059, 0.233, -0.456, 1.25, -0.25, 0, 0.25, 0),
|
"points": PackedFloat32Array(0.5, -0.25, 0, 0.5, -0.055, 0.5, -0.4, 0.059, 0.233, -0.456, 1.25, -0.25, 0, 0.25, 0),
|
||||||
"times": PackedFloat32Array(0, 2, 2.4)
|
"times": PackedFloat32Array(0, 2, 2.4)
|
||||||
}
|
}
|
||||||
|
tracks/5/type = "value"
|
||||||
|
tracks/5/imported = false
|
||||||
|
tracks/5/enabled = true
|
||||||
|
tracks/5/path = NodePath("AudioStreamPlayer:playing")
|
||||||
|
tracks/5/interp = 1
|
||||||
|
tracks/5/loop_wrap = true
|
||||||
|
tracks/5/keys = {
|
||||||
|
"times": PackedFloat32Array(0.1),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 1,
|
||||||
|
"values": [true]
|
||||||
|
}
|
||||||
|
|
||||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2a0gn"]
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_2a0gn"]
|
||||||
_data = {
|
_data = {
|
||||||
|
@ -598,6 +623,11 @@ libraries = {
|
||||||
"": SubResource("AnimationLibrary_2a0gn")
|
"": SubResource("AnimationLibrary_2a0gn")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="WoahNiceFeedback"]
|
||||||
|
stream = ExtResource("2_5f3rs")
|
||||||
|
volume_db = -3.0
|
||||||
|
bus = &"SFX"
|
||||||
|
|
||||||
[node name="WastedFeedback" type="RichTextLabel" parent="."]
|
[node name="WastedFeedback" type="RichTextLabel" parent="."]
|
||||||
visible = false
|
visible = false
|
||||||
custom_minimum_size = Vector2(1400, 0)
|
custom_minimum_size = Vector2(1400, 0)
|
||||||
|
@ -727,6 +757,7 @@ unique_name_in_owner = true
|
||||||
libraries = {
|
libraries = {
|
||||||
"": SubResource("AnimationLibrary_dicse")
|
"": SubResource("AnimationLibrary_dicse")
|
||||||
}
|
}
|
||||||
|
speed_scale = 0.9
|
||||||
|
|
||||||
[node name="ClubSelector" parent="." instance=ExtResource("2_1hdub")]
|
[node name="ClubSelector" parent="." instance=ExtResource("2_1hdub")]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
class_name ColorTools
|
||||||
|
## Toolkit for working with colors
|
||||||
|
|
||||||
|
const DEFAULT_LUM_THRESHOLD := 0.179
|
||||||
|
|
||||||
|
|
||||||
|
## Selects an appropriate background color for the given foreground color.
|
||||||
|
##
|
||||||
|
## Options are white or black.
|
||||||
|
static func get_bg_color(fg_color: Color, threshold: float = DEFAULT_LUM_THRESHOLD) -> Color:
|
||||||
|
return Color.BLACK if fg_color.srgb_to_linear().get_luminance() > threshold else Color.WHITE
|
|
@ -0,0 +1,69 @@
|
||||||
|
class_name Terrain
|
||||||
|
## Tools for working with different terrain types.
|
||||||
|
## This provides a unified interface to Terrain3D and regular meshes.
|
||||||
|
|
||||||
|
## Basic terrain materials
|
||||||
|
enum Type {
|
||||||
|
NONE,
|
||||||
|
ROUGH,
|
||||||
|
FAIRWAY,
|
||||||
|
GREEN,
|
||||||
|
SAND,
|
||||||
|
CONCRETE,
|
||||||
|
ROCK,
|
||||||
|
WOOD,
|
||||||
|
METAL,
|
||||||
|
GLASS,
|
||||||
|
}
|
||||||
|
|
||||||
|
## We use the upper bits of collision layers to encode material data
|
||||||
|
const PHYSICAL_LAYERS := {
|
||||||
|
1 << 31: Type.ROUGH,
|
||||||
|
1 << 30: Type.SAND,
|
||||||
|
1 << 29: Type.WOOD,
|
||||||
|
1 << 28: Type.ROCK,
|
||||||
|
1 << 27: Type.METAL,
|
||||||
|
1 << 26: Type.GLASS,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
## Get the `Terrain.Type` value which corresponds to the given Terrain3D texture ID.
|
||||||
|
##
|
||||||
|
## Note that this relies on the ordering of textures in our Terrain3DAsset resource!
|
||||||
|
## If the order textures are defined in changes, this will break!
|
||||||
|
static func from_texture_id(tex_id: int) -> Type:
|
||||||
|
match tex_id:
|
||||||
|
0:
|
||||||
|
return Type.ROUGH
|
||||||
|
1:
|
||||||
|
return Type.FAIRWAY
|
||||||
|
2:
|
||||||
|
return Type.SAND
|
||||||
|
3:
|
||||||
|
return Type.GREEN
|
||||||
|
4:
|
||||||
|
return Type.ROCK
|
||||||
|
_:
|
||||||
|
return Type.NONE
|
||||||
|
|
||||||
|
|
||||||
|
## Get the `Terrain.Type` value encoded in the given collision layer setting.
|
||||||
|
##
|
||||||
|
## We use the upper bits in the collision layer to encode material data.
|
||||||
|
## Check the collision layer descriptions for more information.
|
||||||
|
static func from_physical_layer(collision_layer: int) -> Type:
|
||||||
|
for bit: int in PHYSICAL_LAYERS:
|
||||||
|
if collision_layer & bit:
|
||||||
|
return PHYSICAL_LAYERS[bit]
|
||||||
|
return Type.CONCRETE
|
||||||
|
|
||||||
|
|
||||||
|
## Get the `Terrain.Type` value at the given position in a Terrain3D node.
|
||||||
|
static func at_position(global_position: Vector3, terrain3d: Terrain3D) -> Type:
|
||||||
|
var blend := terrain3d.data.get_texture_id(global_position)
|
||||||
|
var id: int
|
||||||
|
if terrain3d.data.get_control_auto(global_position):
|
||||||
|
id = blend.x if blend.z > 0 else blend.y
|
||||||
|
else:
|
||||||
|
id = blend.x
|
||||||
|
return from_texture_id(id)
|
Loading…
Reference in New Issue