forked from cgvr/DeltaVR
Compare commits
54 Commits
dfdb47b94a
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 4e55b7e9ab | |||
| dea42068f7 | |||
| b021fd0110 | |||
| 7b45d623d1 | |||
| f42356dd7a | |||
| 50002adb61 | |||
| ee629e2593 | |||
| 4796869a29 | |||
| 398f22efdd | |||
| b40b075540 | |||
| cad4c2cbbc | |||
| 6a77893ed7 | |||
| 439094f74a | |||
| c78886e492 | |||
| 3edef118af | |||
| d6c2878491 | |||
| f101de5390 | |||
| 58d5f24069 | |||
| 2c8c146a5f | |||
| db60947749 | |||
| 717964affd | |||
| e0492595e1 | |||
| e56e3f3618 | |||
| fc083e7d81 | |||
| a6a6b036ca | |||
| b1fe32bdf2 | |||
| 6e9e5cb4d4 | |||
| f6b46784bf | |||
| fca8453a26 | |||
| 07e42ea60b | |||
| d85953e02f | |||
| d969d3b77c | |||
| 9fbd08eb25 | |||
| c19026c0ac | |||
| 7b740ea80d | |||
| 7a37566296 | |||
| 944b4f0827 | |||
| 69ff74911c | |||
| 68fe5357d2 | |||
| b583b00303 | |||
| a3b0a20357 | |||
| f1fc906ae5 | |||
| 96b21d0df9 | |||
| dc077d5ac6 | |||
| 08c9febd98 | |||
| c0e7f292a0 | |||
| 1bef5a6815 | |||
| ba4c7ed631 | |||
| 2188f16cff | |||
| 33b86e09ae | |||
| 22f6982c4c | |||
| 73fad024c0 | |||
| 5e6bb24c27 | |||
| 95e67b9870 |
3
.gitignore
vendored
3
.gitignore
vendored
@@ -104,6 +104,9 @@ NetrworkManagerUI.prefab.meta
|
||||
CustomNetworkManager.prefab
|
||||
CustomNetworkManager.prefab.meta
|
||||
|
||||
#FMOD Studio
|
||||
DeltaVRFMOD/.cache
|
||||
|
||||
|
||||
# Project-specific files
|
||||
config.json
|
||||
@@ -1,34 +1,24 @@
|
||||
### TODO
|
||||
* korralik teleportation minigame'idesse, kasutades TeleportProviderit, nagu button
|
||||
* quest marker peaks jätma nähtavad noolekesed enda liikumise teele
|
||||
* teha build kus archery range'is spawnitud objektid
|
||||
* Unity crash after stopping the game - most likely due to FMOD trying to do something with invalid audio instances
|
||||
* pidev krabamise heli, kui kahe käega korraga krabada: "(Un)requesting ownership of Cube"
|
||||
* FMOD ChannelControl errorid
|
||||
* keyboard numbrid ei tööta pärast minigame'i completemist?
|
||||
* speech-to-text:
|
||||
* vahepeal lakkab töötamast lih??? tundub et siis kui pikalt tühjust salvestab? ei, vahepeal läheb kohe alguses ka
|
||||
* sööta talle nulle kui on disabled, sest ikka kuidagi tuvastab eelnevat rääkimist
|
||||
* uurida miks buildis Whisper halvemini töötab
|
||||
* proovida suuremat Whisperi mudelit, äkki töötab mürases keskkonnas paremini
|
||||
* igal pool, kus mängija peab rääkima, peaks olema:
|
||||
* helilained räägitava heli amplituudi põhjal
|
||||
* "loading" dünaamiline ikoon kui mängija ootab protsessimise järel
|
||||
* shape detection:
|
||||
* raadio nupp võiks töötada recording mode'is, mitte streamina - kui lased lahti, siis hakkab processima
|
||||
* professor võiks öelda "good job, continue..." pärast esimest successi
|
||||
* kui kõik configurationid tehtud, siis midagi juhtub: uks avaneb, quest marker läheb ukse juurde, professor ütleb "thank you"
|
||||
* peab mängijale kuidagi selgitama, kuidas scale'ida prinditud objekte
|
||||
* prinditud objekti scale'imisele min ja max size limiit
|
||||
* shape scanner mitte lihtsalt ontriggerenter ja -exit, sest kui mitu objekti lähevad samal ajal sisse
|
||||
* shape scanneris prinditud objektid mõnikord ei kao ära kui config success
|
||||
* archery range:
|
||||
* mikrofon peaks lõpetama protsessimise ka siis kui mängija läheb ära mikri juurest
|
||||
* võiks jääda kordama viimast instruktsiooni, kui mängija ei progressi edasi
|
||||
* kui archery range läbi, võiks npc öelda "good job, try again..."
|
||||
* kui midagi laeb (wire aktiivne), siis particle'id võiks voolata mööda toru
|
||||
* highscore json tühjaks
|
||||
* cafe:
|
||||
* npc võiks olla keeratud sinu poole juba kaugelt
|
||||
* toit võiks tulla kandiku peal/sees
|
||||
* npc character:
|
||||
* klaas on näha temast eespool
|
||||
* voicelines: list listidest, mille hulgast saab valida
|
||||
* shape detection:
|
||||
* peab mängijale kuidagi selgitama, kuidas scale'ida prinditud objekte
|
||||
* prinditud objekti scale'imisele min ja max size limiit
|
||||
* 3d printerile soft particle'id, et ei oleks teravaid ääri seina sisse minnes
|
||||
* archery range:
|
||||
* archery targetite rework, et buildis ka töötaks
|
||||
* võiks jääda kordama viimast instruktsiooni, kui mängija ei progressi edasi
|
||||
* UFO möödalendamise animation/cutscene alguses kui ütleb "delta attacked by ufos" + panna juba alguses kapsli sisse ufo pöörlema
|
||||
* cafe:
|
||||
* võiks saada hinnata saadud tellimust
|
||||
* "order again" nupp
|
||||
|
||||
Can't/Won't Do:
|
||||
* glTF loading: vahetada ära shader Universal render pipeline Lit, mitte panna buildi kaasa glTf oma - **ei saa, objekt on siis ilma tekstuurita, lihtsalt hall**
|
||||
@@ -42,3 +32,8 @@ Can't/Won't Do:
|
||||
* Getting Whisper stream to work with FMOD instead of Unity default audio
|
||||
* TRELLIS: added functionality to specify texture baking optimisation total steps as an argument (`texture_opt_total_steps`), to replace the hardcoded 2500. But this is not tracked in Git (because modified this https://github.com/IgorAherne/trellis-stable-projectorz/releases/tag/latest)
|
||||
* Custom Shader Variant Collection to include glTF-pbrMetallicRoughness shader in build
|
||||
|
||||
Katse tähelepanekud:
|
||||
* peab väga proper english accenti tegema
|
||||
* mõne inimese puhul kuuleb "cat" asemel "cut"
|
||||
* kui helitugevus oli liiga suur siis cafe waiter kuulis kohviku taustaheli taldriku klirinat kui "piano music"
|
||||
|
||||
@@ -6,9 +6,17 @@ import numpy as np
|
||||
FRAME_DURATION = 0.02 # 20 ms windows
|
||||
GAIN = 1.0 # multiply RMS values (set to e.g. 30.0 if you want larger values)
|
||||
EXTENSION = ".txt" # output file extension
|
||||
OVERWRITE = False # set True to regenerate even if .txt exists
|
||||
|
||||
|
||||
def process_wav(filepath):
|
||||
# Compute output path first (so we can decide whether to skip)
|
||||
out_path = os.path.splitext(filepath)[0] + EXTENSION
|
||||
|
||||
if not OVERWRITE and os.path.exists(out_path):
|
||||
print(f"Skipping (already exists): {out_path}")
|
||||
return
|
||||
|
||||
print(f"Processing: {filepath}")
|
||||
|
||||
# Load audio
|
||||
@@ -29,7 +37,6 @@ def process_wav(filepath):
|
||||
rms = rms * GAIN
|
||||
|
||||
# Save to .txt
|
||||
out_path = os.path.splitext(filepath)[0] + EXTENSION
|
||||
np.savetxt(out_path, rms, fmt="%.8f")
|
||||
|
||||
print(f"Saved RMS → {out_path}")
|
||||
@@ -49,4 +56,4 @@ def process_folder(folder_path):
|
||||
# === Run script ===
|
||||
if __name__ == "__main__":
|
||||
folder = input("Enter folder path: ").strip()
|
||||
process_folder(folder)
|
||||
process_folder(folder)
|
||||
|
||||
@@ -0,0 +1,242 @@
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00036824
|
||||
0.03882600
|
||||
0.04177133
|
||||
0.02403286
|
||||
0.09960490
|
||||
0.10405141
|
||||
0.07374308
|
||||
0.07527987
|
||||
0.03196403
|
||||
0.01316589
|
||||
0.01331185
|
||||
0.03220127
|
||||
0.12253414
|
||||
0.14686617
|
||||
0.12083520
|
||||
0.10250615
|
||||
0.04661508
|
||||
0.01492038
|
||||
0.01040760
|
||||
0.01080491
|
||||
0.03343014
|
||||
0.03452057
|
||||
0.08047014
|
||||
0.13933837
|
||||
0.10572984
|
||||
0.09591001
|
||||
0.09608150
|
||||
0.08540177
|
||||
0.09933743
|
||||
0.10790430
|
||||
0.11058167
|
||||
0.13160037
|
||||
0.06650670
|
||||
0.03915674
|
||||
0.03693420
|
||||
0.04971446
|
||||
0.03620111
|
||||
0.06649657
|
||||
0.11552364
|
||||
0.10445996
|
||||
0.09714538
|
||||
0.08278799
|
||||
0.09152920
|
||||
0.08658629
|
||||
0.05098534
|
||||
0.02467363
|
||||
0.02987090
|
||||
0.02563231
|
||||
0.02510932
|
||||
0.02980772
|
||||
0.02069706
|
||||
0.01281166
|
||||
0.00566670
|
||||
0.00150570
|
||||
0.00020095
|
||||
0.00000742
|
||||
0.00000009
|
||||
0.00000012
|
||||
0.00000011
|
||||
0.00000010
|
||||
0.00000010
|
||||
0.00000009
|
||||
0.00000022
|
||||
0.00000005
|
||||
0.00001097
|
||||
0.04429267
|
||||
0.09924962
|
||||
0.09210955
|
||||
0.10632528
|
||||
0.10751414
|
||||
0.06163353
|
||||
0.05821634
|
||||
0.06596723
|
||||
0.04842441
|
||||
0.05856047
|
||||
0.10333158
|
||||
0.10103170
|
||||
0.08816345
|
||||
0.04771255
|
||||
0.04730519
|
||||
0.04158855
|
||||
0.05243348
|
||||
0.05098458
|
||||
0.03500115
|
||||
0.08092596
|
||||
0.09854711
|
||||
0.04113061
|
||||
0.01454402
|
||||
0.01907839
|
||||
0.03828202
|
||||
0.05046624
|
||||
0.04319734
|
||||
0.03666504
|
||||
0.04976141
|
||||
0.10466427
|
||||
0.13796268
|
||||
0.06061497
|
||||
0.07129071
|
||||
0.05450837
|
||||
0.05630979
|
||||
0.03684894
|
||||
0.01367352
|
||||
0.00608366
|
||||
0.06432867
|
||||
0.11517638
|
||||
0.05077915
|
||||
0.02521306
|
||||
0.09515605
|
||||
0.10619617
|
||||
0.08939873
|
||||
0.07993037
|
||||
0.04875693
|
||||
0.01546201
|
||||
0.00356502
|
||||
0.00079084
|
||||
0.02424777
|
||||
0.06102380
|
||||
0.11638185
|
||||
0.07587082
|
||||
0.02516444
|
||||
0.00761989
|
||||
0.00276396
|
||||
0.00242381
|
||||
0.11056973
|
||||
0.12456685
|
||||
0.11282478
|
||||
0.09799541
|
||||
0.08472683
|
||||
0.07964602
|
||||
0.05019686
|
||||
0.03458880
|
||||
0.06462081
|
||||
0.13280798
|
||||
0.10013983
|
||||
0.07293872
|
||||
0.04550291
|
||||
0.01720131
|
||||
0.00380182
|
||||
0.00101899
|
||||
0.02245994
|
||||
0.06382865
|
||||
0.10524299
|
||||
0.13267922
|
||||
0.10135622
|
||||
0.05452089
|
||||
0.03518274
|
||||
0.01694293
|
||||
0.00530868
|
||||
0.00184345
|
||||
0.02273818
|
||||
0.11510796
|
||||
0.11920995
|
||||
0.08493148
|
||||
0.08406932
|
||||
0.07499230
|
||||
0.04316685
|
||||
0.01455623
|
||||
0.00360244
|
||||
0.00098371
|
||||
0.00005477
|
||||
0.00000010
|
||||
0.00000002
|
||||
0.00000016
|
||||
0.00000019
|
||||
0.00000010
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00000004
|
||||
0.00000005
|
||||
0.00000004
|
||||
0.00000005
|
||||
0.00000005
|
||||
0.00000005
|
||||
0.00000005
|
||||
0.00000004
|
||||
0.00000004
|
||||
0.00000004
|
||||
0.00000004
|
||||
0.00000003
|
||||
0.00000003
|
||||
0.00000003
|
||||
0.00000003
|
||||
0.00000002
|
||||
0.00000003
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000000
|
||||
0.00000001
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00464831
|
||||
0.01679505
|
||||
0.01644613
|
||||
0.00761335
|
||||
0.04794521
|
||||
0.15165883
|
||||
0.14422260
|
||||
0.11421057
|
||||
0.10831729
|
||||
0.10226198
|
||||
0.09510653
|
||||
0.08230808
|
||||
0.06091324
|
||||
0.08704218
|
||||
0.11292138
|
||||
0.11823592
|
||||
0.07064166
|
||||
0.08501519
|
||||
0.10195074
|
||||
0.08617997
|
||||
0.09215603
|
||||
0.08520056
|
||||
0.07150462
|
||||
0.07387789
|
||||
0.07179367
|
||||
0.07710328
|
||||
0.09889054
|
||||
0.11394204
|
||||
0.12855592
|
||||
0.09594936
|
||||
0.05344614
|
||||
0.02629551
|
||||
0.00702043
|
||||
0.00639688
|
||||
0.00356133
|
||||
0.00343324
|
||||
0.00178488
|
||||
0.00017040
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d9e3dd6a9520c354e998bd0ad3a81f46
|
||||
guid: 38bc01876ee396a46b03ca91e612e687
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 42e58ab8243a8c3449d391cc548d895c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,257 @@
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.02866505
|
||||
0.03807113
|
||||
0.04488242
|
||||
0.10851473
|
||||
0.09911134
|
||||
0.08479626
|
||||
0.10611577
|
||||
0.12813284
|
||||
0.08128907
|
||||
0.07260925
|
||||
0.04148039
|
||||
0.01129543
|
||||
0.03132603
|
||||
0.04842420
|
||||
0.12944126
|
||||
0.12574370
|
||||
0.09939571
|
||||
0.08343700
|
||||
0.04287383
|
||||
0.01194310
|
||||
0.00638063
|
||||
0.00868709
|
||||
0.01998390
|
||||
0.03058048
|
||||
0.05329744
|
||||
0.13083695
|
||||
0.12668352
|
||||
0.10024661
|
||||
0.10386836
|
||||
0.08472306
|
||||
0.11218496
|
||||
0.14319295
|
||||
0.13648318
|
||||
0.13254981
|
||||
0.04781179
|
||||
0.03629516
|
||||
0.03413614
|
||||
0.03457404
|
||||
0.03213657
|
||||
0.05343652
|
||||
0.09439317
|
||||
0.12365869
|
||||
0.09173419
|
||||
0.09353486
|
||||
0.07192323
|
||||
0.03836626
|
||||
0.01338022
|
||||
0.00760281
|
||||
0.01999712
|
||||
0.02072252
|
||||
0.01272902
|
||||
0.00845736
|
||||
0.00641201
|
||||
0.00285632
|
||||
0.00061737
|
||||
0.00005392
|
||||
0.00000020
|
||||
0.00000018
|
||||
0.00000019
|
||||
0.00000017
|
||||
0.00000015
|
||||
0.00000016
|
||||
0.00000013
|
||||
0.00000011
|
||||
0.00000011
|
||||
0.00000008
|
||||
0.00000010
|
||||
0.00000006
|
||||
0.00000007
|
||||
0.00000003
|
||||
0.00782415
|
||||
0.01642422
|
||||
0.02543612
|
||||
0.05934152
|
||||
0.07718527
|
||||
0.11592234
|
||||
0.11971953
|
||||
0.06149256
|
||||
0.03805179
|
||||
0.05762681
|
||||
0.05818856
|
||||
0.04659332
|
||||
0.08668210
|
||||
0.10497145
|
||||
0.12429776
|
||||
0.11524499
|
||||
0.04751239
|
||||
0.02633372
|
||||
0.03824132
|
||||
0.04337949
|
||||
0.03293408
|
||||
0.03691372
|
||||
0.03303327
|
||||
0.07757192
|
||||
0.13191013
|
||||
0.09265970
|
||||
0.02088793
|
||||
0.02473713
|
||||
0.02916055
|
||||
0.03506608
|
||||
0.05408846
|
||||
0.03094980
|
||||
0.10444548
|
||||
0.15158002
|
||||
0.08798907
|
||||
0.04625344
|
||||
0.06151570
|
||||
0.05407208
|
||||
0.03231843
|
||||
0.01555239
|
||||
0.00728854
|
||||
0.04916612
|
||||
0.10232492
|
||||
0.07878979
|
||||
0.06246471
|
||||
0.05366619
|
||||
0.10158715
|
||||
0.11886908
|
||||
0.07526539
|
||||
0.02821623
|
||||
0.01340943
|
||||
0.00232617
|
||||
0.00036846
|
||||
0.03731488
|
||||
0.03152382
|
||||
0.03894958
|
||||
0.03209079
|
||||
0.00981623
|
||||
0.00146699
|
||||
0.00014517
|
||||
0.00534313
|
||||
0.06100523
|
||||
0.15190409
|
||||
0.10988420
|
||||
0.12650685
|
||||
0.11347217
|
||||
0.05970725
|
||||
0.04618064
|
||||
0.05150063
|
||||
0.03090077
|
||||
0.03317851
|
||||
0.08775605
|
||||
0.13566470
|
||||
0.10128807
|
||||
0.04527346
|
||||
0.01804154
|
||||
0.00596208
|
||||
0.00167694
|
||||
0.00009594
|
||||
0.00012192
|
||||
0.01358539
|
||||
0.07102436
|
||||
0.12123850
|
||||
0.12106773
|
||||
0.10533741
|
||||
0.13110749
|
||||
0.05361572
|
||||
0.02358464
|
||||
0.01034726
|
||||
0.00343355
|
||||
0.00162977
|
||||
0.03254148
|
||||
0.12353230
|
||||
0.12104879
|
||||
0.10228956
|
||||
0.07902068
|
||||
0.03294208
|
||||
0.01555405
|
||||
0.00885278
|
||||
0.00349990
|
||||
0.00085096
|
||||
0.00030811
|
||||
0.00001531
|
||||
0.00000017
|
||||
0.00000016
|
||||
0.00000014
|
||||
0.00000013
|
||||
0.00000013
|
||||
0.00000011
|
||||
0.00000029
|
||||
0.00000028
|
||||
0.00000010
|
||||
0.00000008
|
||||
0.00000007
|
||||
0.00000007
|
||||
0.00000005
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00000005
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000000
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00000001
|
||||
0.00000002
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000456
|
||||
0.01129090
|
||||
0.01738315
|
||||
0.02089866
|
||||
0.01380159
|
||||
0.13116765
|
||||
0.11541200
|
||||
0.10767516
|
||||
0.11273928
|
||||
0.10450145
|
||||
0.08044391
|
||||
0.08610874
|
||||
0.07811639
|
||||
0.08932848
|
||||
0.09916812
|
||||
0.08233824
|
||||
0.07835159
|
||||
0.08648565
|
||||
0.08551071
|
||||
0.11009068
|
||||
0.12401471
|
||||
0.09915505
|
||||
0.07595969
|
||||
0.06414745
|
||||
0.06739331
|
||||
0.06131895
|
||||
0.09213228
|
||||
0.09952611
|
||||
0.08556054
|
||||
0.09036897
|
||||
0.08143000
|
||||
0.04082204
|
||||
0.01703065
|
||||
0.00659234
|
||||
0.00967564
|
||||
0.00593357
|
||||
0.00343951
|
||||
0.00107827
|
||||
0.00010090
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5898d7a0def449d47856bcc1ca7a29d6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7cb93a4fb1b04374eaf023113b75af18
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,287 @@
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.01041133
|
||||
0.11050373
|
||||
0.11571781
|
||||
0.09685160
|
||||
0.06781394
|
||||
0.06115836
|
||||
0.02671054
|
||||
0.01714665
|
||||
0.01123293
|
||||
0.00581291
|
||||
0.00527384
|
||||
0.03901498
|
||||
0.11867370
|
||||
0.15407452
|
||||
0.09560385
|
||||
0.05615886
|
||||
0.04482845
|
||||
0.02856232
|
||||
0.08357130
|
||||
0.12180025
|
||||
0.11046895
|
||||
0.08895491
|
||||
0.08778770
|
||||
0.09132081
|
||||
0.04692575
|
||||
0.01269024
|
||||
0.00540550
|
||||
0.01323932
|
||||
0.03548777
|
||||
0.09886734
|
||||
0.10633425
|
||||
0.06211413
|
||||
0.04629371
|
||||
0.03601964
|
||||
0.03145342
|
||||
0.03699398
|
||||
0.02851260
|
||||
0.09810046
|
||||
0.12985127
|
||||
0.10250688
|
||||
0.07980689
|
||||
0.08739660
|
||||
0.04454322
|
||||
0.01042159
|
||||
0.02879480
|
||||
0.04266862
|
||||
0.01084313
|
||||
0.04596614
|
||||
0.13443977
|
||||
0.10879387
|
||||
0.04520948
|
||||
0.04018075
|
||||
0.02624859
|
||||
0.00865528
|
||||
0.00220818
|
||||
0.00292230
|
||||
0.00325043
|
||||
0.01547375
|
||||
0.10285073
|
||||
0.13288546
|
||||
0.06569756
|
||||
0.04191129
|
||||
0.00984927
|
||||
0.00487799
|
||||
0.00717907
|
||||
0.07125617
|
||||
0.14066201
|
||||
0.12093860
|
||||
0.12668209
|
||||
0.08771859
|
||||
0.08893538
|
||||
0.11586918
|
||||
0.09410246
|
||||
0.11251948
|
||||
0.06581375
|
||||
0.01573470
|
||||
0.00798749
|
||||
0.00473720
|
||||
0.00184862
|
||||
0.00599098
|
||||
0.01365598
|
||||
0.00891943
|
||||
0.00741468
|
||||
0.00870850
|
||||
0.12349596
|
||||
0.20865980
|
||||
0.11312929
|
||||
0.08664145
|
||||
0.12243897
|
||||
0.12067145
|
||||
0.08424711
|
||||
0.05526139
|
||||
0.04627320
|
||||
0.10428049
|
||||
0.08349684
|
||||
0.07010089
|
||||
0.02950357
|
||||
0.01629749
|
||||
0.01049282
|
||||
0.01468810
|
||||
0.02427274
|
||||
0.02904649
|
||||
0.02663092
|
||||
0.02238721
|
||||
0.01449317
|
||||
0.00891655
|
||||
0.00328868
|
||||
0.00101202
|
||||
0.00018072
|
||||
0.00000018
|
||||
0.00000022
|
||||
0.00001380
|
||||
0.00340936
|
||||
0.01070781
|
||||
0.02272540
|
||||
0.02303817
|
||||
0.01339627
|
||||
0.01482264
|
||||
0.02972042
|
||||
0.16883568
|
||||
0.13453023
|
||||
0.14972425
|
||||
0.08440456
|
||||
0.09065786
|
||||
0.05294919
|
||||
0.02135629
|
||||
0.00819955
|
||||
0.00474883
|
||||
0.00529746
|
||||
0.00265304
|
||||
0.00225529
|
||||
0.01425153
|
||||
0.08025608
|
||||
0.12780648
|
||||
0.10383718
|
||||
0.06637228
|
||||
0.06980769
|
||||
0.06826495
|
||||
0.05187644
|
||||
0.03362885
|
||||
0.01408524
|
||||
0.02797011
|
||||
0.04798624
|
||||
0.04473467
|
||||
0.06783500
|
||||
0.07362254
|
||||
0.03932714
|
||||
0.01432003
|
||||
0.00567656
|
||||
0.02164616
|
||||
0.02448191
|
||||
0.12810233
|
||||
0.14456984
|
||||
0.12034076
|
||||
0.12263951
|
||||
0.10216748
|
||||
0.08076008
|
||||
0.06284898
|
||||
0.04605800
|
||||
0.01751118
|
||||
0.04122978
|
||||
0.05452909
|
||||
0.06921396
|
||||
0.07712647
|
||||
0.05760632
|
||||
0.03222826
|
||||
0.02906787
|
||||
0.05488998
|
||||
0.05686560
|
||||
0.04881791
|
||||
0.06627714
|
||||
0.07501493
|
||||
0.06122237
|
||||
0.04391065
|
||||
0.04513443
|
||||
0.05685579
|
||||
0.06692855
|
||||
0.11950159
|
||||
0.09488340
|
||||
0.05996871
|
||||
0.12589936
|
||||
0.12426486
|
||||
0.08167235
|
||||
0.08727088
|
||||
0.09361180
|
||||
0.05560031
|
||||
0.02492296
|
||||
0.01225502
|
||||
0.02261247
|
||||
0.10637776
|
||||
0.10854032
|
||||
0.08564665
|
||||
0.06367619
|
||||
0.03858946
|
||||
0.01254055
|
||||
0.00857360
|
||||
0.00521010
|
||||
0.03276831
|
||||
0.05026552
|
||||
0.07917455
|
||||
0.12885508
|
||||
0.09776132
|
||||
0.04524392
|
||||
0.02057937
|
||||
0.00684326
|
||||
0.00172701
|
||||
0.00501310
|
||||
0.00338763
|
||||
0.00062568
|
||||
0.00007869
|
||||
0.00000011
|
||||
0.07221141
|
||||
0.13406493
|
||||
0.11343215
|
||||
0.06939244
|
||||
0.05757182
|
||||
0.05019560
|
||||
0.02351180
|
||||
0.00653620
|
||||
0.01007761
|
||||
0.03060259
|
||||
0.07896144
|
||||
0.11751062
|
||||
0.06696402
|
||||
0.03085680
|
||||
0.01771194
|
||||
0.05062816
|
||||
0.12535316
|
||||
0.09691679
|
||||
0.05669325
|
||||
0.03652356
|
||||
0.04995165
|
||||
0.10247808
|
||||
0.14754270
|
||||
0.10729573
|
||||
0.09490211
|
||||
0.08105871
|
||||
0.03237764
|
||||
0.01436423
|
||||
0.02403967
|
||||
0.06067147
|
||||
0.09486736
|
||||
0.11827907
|
||||
0.06557996
|
||||
0.01828207
|
||||
0.00410462
|
||||
0.00560886
|
||||
0.02666351
|
||||
0.10461742
|
||||
0.12328171
|
||||
0.11638515
|
||||
0.07130920
|
||||
0.06859463
|
||||
0.04690340
|
||||
0.02583032
|
||||
0.02004467
|
||||
0.04906425
|
||||
0.06766128
|
||||
0.10911208
|
||||
0.11592212
|
||||
0.09715220
|
||||
0.03466866
|
||||
0.01872768
|
||||
0.01205066
|
||||
0.03613232
|
||||
0.09832279
|
||||
0.14594945
|
||||
0.10550399
|
||||
0.13000724
|
||||
0.09247153
|
||||
0.04398929
|
||||
0.06428571
|
||||
0.04855256
|
||||
0.05265495
|
||||
0.02728924
|
||||
0.01480956
|
||||
0.01000638
|
||||
0.00291081
|
||||
0.00050468
|
||||
0.00004996
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7d61563367dd2174ebac733fc96d5a7c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/StreamingAssets/CharacterVoicelines/Alien/Madis_Different_Target-001.wav
LFS
Normal file
BIN
Assets/StreamingAssets/CharacterVoicelines/Alien/Madis_Different_Target-001.wav
LFS
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 264f1b0a1d60ee44fb83104376fe62d6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,292 @@
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00017371
|
||||
0.00397631
|
||||
0.00645893
|
||||
0.03636703
|
||||
0.11108588
|
||||
0.09490587
|
||||
0.05810735
|
||||
0.03614677
|
||||
0.01433622
|
||||
0.02562395
|
||||
0.03500152
|
||||
0.11138436
|
||||
0.11492082
|
||||
0.08813144
|
||||
0.11754254
|
||||
0.09585521
|
||||
0.05497217
|
||||
0.08569790
|
||||
0.10671677
|
||||
0.09063023
|
||||
0.10238150
|
||||
0.10540754
|
||||
0.07553490
|
||||
0.04124249
|
||||
0.01229520
|
||||
0.00533037
|
||||
0.00913266
|
||||
0.02397980
|
||||
0.10611945
|
||||
0.10192107
|
||||
0.07391837
|
||||
0.05137710
|
||||
0.05373237
|
||||
0.05023317
|
||||
0.03660126
|
||||
0.04064788
|
||||
0.03359168
|
||||
0.05470684
|
||||
0.14775619
|
||||
0.13745435
|
||||
0.10754745
|
||||
0.10044444
|
||||
0.08634765
|
||||
0.04968073
|
||||
0.02235863
|
||||
0.00676216
|
||||
0.01762132
|
||||
0.03200046
|
||||
0.01515087
|
||||
0.02490337
|
||||
0.03465642
|
||||
0.08731771
|
||||
0.05780291
|
||||
0.04214677
|
||||
0.03614981
|
||||
0.01129049
|
||||
0.00178883
|
||||
0.00043622
|
||||
0.00002077
|
||||
0.00790669
|
||||
0.03906181
|
||||
0.13493988
|
||||
0.12611340
|
||||
0.10359488
|
||||
0.05120334
|
||||
0.02121265
|
||||
0.00780912
|
||||
0.02118601
|
||||
0.08881138
|
||||
0.13246961
|
||||
0.13096575
|
||||
0.08698378
|
||||
0.07840307
|
||||
0.08006902
|
||||
0.08267396
|
||||
0.07665613
|
||||
0.06423858
|
||||
0.02234341
|
||||
0.00549498
|
||||
0.00242034
|
||||
0.00047552
|
||||
0.00005966
|
||||
0.03320520
|
||||
0.06114354
|
||||
0.05643975
|
||||
0.11037107
|
||||
0.13888292
|
||||
0.16179177
|
||||
0.10823945
|
||||
0.09318663
|
||||
0.08210272
|
||||
0.05253165
|
||||
0.04468418
|
||||
0.08318146
|
||||
0.09999528
|
||||
0.05302287
|
||||
0.02463017
|
||||
0.00933137
|
||||
0.00975701
|
||||
0.01784607
|
||||
0.02833371
|
||||
0.03651267
|
||||
0.04211179
|
||||
0.03161097
|
||||
0.02936525
|
||||
0.02278606
|
||||
0.01299867
|
||||
0.00431430
|
||||
0.00138863
|
||||
0.00027162
|
||||
0.00000123
|
||||
0.00000004
|
||||
0.00000005
|
||||
0.00000004
|
||||
0.00073564
|
||||
0.00535114
|
||||
0.01484067
|
||||
0.02635980
|
||||
0.02197363
|
||||
0.01175617
|
||||
0.01850840
|
||||
0.13574521
|
||||
0.13955091
|
||||
0.16727531
|
||||
0.10608624
|
||||
0.09235191
|
||||
0.08989335
|
||||
0.03222363
|
||||
0.01007234
|
||||
0.00426795
|
||||
0.00493753
|
||||
0.00278311
|
||||
0.00285112
|
||||
0.00889112
|
||||
0.02711722
|
||||
0.11798907
|
||||
0.12569274
|
||||
0.08584248
|
||||
0.06597847
|
||||
0.07110602
|
||||
0.05414321
|
||||
0.04401594
|
||||
0.01751132
|
||||
0.01334137
|
||||
0.03514252
|
||||
0.04998326
|
||||
0.05386503
|
||||
0.08303778
|
||||
0.05580477
|
||||
0.03294466
|
||||
0.01155389
|
||||
0.01592658
|
||||
0.01961545
|
||||
0.04122524
|
||||
0.14904048
|
||||
0.13972428
|
||||
0.12943657
|
||||
0.10712221
|
||||
0.08562635
|
||||
0.07122923
|
||||
0.05961891
|
||||
0.02759550
|
||||
0.01993110
|
||||
0.04310589
|
||||
0.07547285
|
||||
0.08173466
|
||||
0.06247975
|
||||
0.04214621
|
||||
0.03760689
|
||||
0.03115748
|
||||
0.05670190
|
||||
0.05714985
|
||||
0.06260712
|
||||
0.07415769
|
||||
0.07433423
|
||||
0.05062892
|
||||
0.04170515
|
||||
0.04818286
|
||||
0.05886082
|
||||
0.10128240
|
||||
0.10150870
|
||||
0.05131475
|
||||
0.11870202
|
||||
0.12748007
|
||||
0.09922212
|
||||
0.09134800
|
||||
0.11311474
|
||||
0.05401089
|
||||
0.04061917
|
||||
0.01249508
|
||||
0.00948702
|
||||
0.04186318
|
||||
0.11898167
|
||||
0.09532230
|
||||
0.09337173
|
||||
0.04848767
|
||||
0.02473678
|
||||
0.01069614
|
||||
0.00484177
|
||||
0.01662082
|
||||
0.04742326
|
||||
0.06200481
|
||||
0.12276933
|
||||
0.10882907
|
||||
0.08602326
|
||||
0.03015586
|
||||
0.00973329
|
||||
0.00328402
|
||||
0.00226518
|
||||
0.00784843
|
||||
0.00278660
|
||||
0.00034507
|
||||
0.00005544
|
||||
0.00514254
|
||||
0.11737227
|
||||
0.11911432
|
||||
0.06987587
|
||||
0.06208072
|
||||
0.05524339
|
||||
0.03672045
|
||||
0.01023218
|
||||
0.00268005
|
||||
0.02696391
|
||||
0.03711095
|
||||
0.11534176
|
||||
0.07793026
|
||||
0.06439523
|
||||
0.02477391
|
||||
0.02580977
|
||||
0.12326863
|
||||
0.10718736
|
||||
0.06945094
|
||||
0.04225161
|
||||
0.04650784
|
||||
0.05684860
|
||||
0.14646806
|
||||
0.12088709
|
||||
0.10804930
|
||||
0.09149216
|
||||
0.06569657
|
||||
0.01902741
|
||||
0.00708923
|
||||
0.03978205
|
||||
0.06555759
|
||||
0.13457091
|
||||
0.07263914
|
||||
0.03940162
|
||||
0.01395208
|
||||
0.00407308
|
||||
0.00785582
|
||||
0.07307136
|
||||
0.14730501
|
||||
0.12630911
|
||||
0.09076075
|
||||
0.05463418
|
||||
0.05033695
|
||||
0.03686942
|
||||
0.02131259
|
||||
0.03664210
|
||||
0.03732653
|
||||
0.07706883
|
||||
0.10262816
|
||||
0.11299729
|
||||
0.08176315
|
||||
0.03037785
|
||||
0.01326680
|
||||
0.01651880
|
||||
0.08489019
|
||||
0.12672557
|
||||
0.12814839
|
||||
0.13081826
|
||||
0.10027778
|
||||
0.06042381
|
||||
0.05928643
|
||||
0.04862963
|
||||
0.05942964
|
||||
0.03829884
|
||||
0.02554955
|
||||
0.01399406
|
||||
0.00600915
|
||||
0.00526958
|
||||
0.00088941
|
||||
0.00000848
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0a12bca9c495f844788cac4b3dc01528
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/StreamingAssets/CharacterVoicelines/Alien/Madis_Different_Target-002.wav
LFS
Normal file
BIN
Assets/StreamingAssets/CharacterVoicelines/Alien/Madis_Different_Target-002.wav
LFS
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8ff483912820c0c458c2960593f32d01
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,306 @@
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00000000
|
||||
0.00000000
|
||||
0.00008677
|
||||
0.02555647
|
||||
0.06356105
|
||||
0.06754274
|
||||
0.12535521
|
||||
0.11968394
|
||||
0.10654067
|
||||
0.08807448
|
||||
0.03094069
|
||||
0.01887335
|
||||
0.04522886
|
||||
0.10707195
|
||||
0.10807064
|
||||
0.11986617
|
||||
0.15139525
|
||||
0.12412844
|
||||
0.08856518
|
||||
0.09356070
|
||||
0.09514336
|
||||
0.07740945
|
||||
0.06272630
|
||||
0.05835729
|
||||
0.05653152
|
||||
0.04069148
|
||||
0.02248743
|
||||
0.00993187
|
||||
0.00186555
|
||||
0.00107107
|
||||
0.00120904
|
||||
0.00187453
|
||||
0.00111695
|
||||
0.00004033
|
||||
0.00000578
|
||||
0.00000037
|
||||
0.00000047
|
||||
0.00000041
|
||||
0.00000041
|
||||
0.00000036
|
||||
0.00000037
|
||||
0.00000030
|
||||
0.00000033
|
||||
0.00000027
|
||||
0.00000021
|
||||
0.00000026
|
||||
0.00000013
|
||||
0.00000017
|
||||
0.00000012
|
||||
0.00000011
|
||||
0.01054585
|
||||
0.05012132
|
||||
0.13717458
|
||||
0.13160563
|
||||
0.06083952
|
||||
0.03850145
|
||||
0.06312518
|
||||
0.08917529
|
||||
0.07733954
|
||||
0.03812576
|
||||
0.02091784
|
||||
0.02317895
|
||||
0.09112280
|
||||
0.10568590
|
||||
0.05461230
|
||||
0.01764572
|
||||
0.00752449
|
||||
0.00855657
|
||||
0.01883113
|
||||
0.11905217
|
||||
0.15466592
|
||||
0.14110537
|
||||
0.12407092
|
||||
0.09104393
|
||||
0.06492120
|
||||
0.05765026
|
||||
0.03929679
|
||||
0.01446094
|
||||
0.01584649
|
||||
0.01906035
|
||||
0.00225289
|
||||
0.03853673
|
||||
0.04068287
|
||||
0.12364593
|
||||
0.11614482
|
||||
0.09028992
|
||||
0.06433237
|
||||
0.02383663
|
||||
0.01381440
|
||||
0.00635609
|
||||
0.01836661
|
||||
0.02473579
|
||||
0.11016511
|
||||
0.10806321
|
||||
0.03348883
|
||||
0.01009692
|
||||
0.03878922
|
||||
0.07220570
|
||||
0.08639481
|
||||
0.07928380
|
||||
0.10606322
|
||||
0.10445405
|
||||
0.11997829
|
||||
0.09822565
|
||||
0.08011347
|
||||
0.04837793
|
||||
0.03226493
|
||||
0.03607234
|
||||
0.03278252
|
||||
0.03711180
|
||||
0.06834672
|
||||
0.07951122
|
||||
0.08939215
|
||||
0.08045211
|
||||
0.06378602
|
||||
0.03623512
|
||||
0.03542983
|
||||
0.13810526
|
||||
0.13145922
|
||||
0.08724828
|
||||
0.07982137
|
||||
0.07484215
|
||||
0.06310783
|
||||
0.03040927
|
||||
0.02398604
|
||||
0.01799416
|
||||
0.01170484
|
||||
0.00820995
|
||||
0.00466642
|
||||
0.00173959
|
||||
0.00026183
|
||||
0.00000286
|
||||
0.00000056
|
||||
0.00000045
|
||||
0.00000036
|
||||
0.00000037
|
||||
0.00000035
|
||||
0.00000034
|
||||
0.00000032
|
||||
0.00000030
|
||||
0.00000027
|
||||
0.00000027
|
||||
0.00000023
|
||||
0.00000022
|
||||
0.00000018
|
||||
0.00000018
|
||||
0.00000013
|
||||
0.00000013
|
||||
0.00000010
|
||||
0.00000010
|
||||
0.00000008
|
||||
0.00000004
|
||||
0.00000004
|
||||
0.00000003
|
||||
0.00000002
|
||||
0.00000003
|
||||
0.00000003
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00000004
|
||||
0.00000002
|
||||
0.01210695
|
||||
0.03104685
|
||||
0.09687874
|
||||
0.10992987
|
||||
0.06612710
|
||||
0.05232693
|
||||
0.07025713
|
||||
0.07789180
|
||||
0.05726887
|
||||
0.05102119
|
||||
0.05531616
|
||||
0.07071804
|
||||
0.07324490
|
||||
0.12500001
|
||||
0.13551877
|
||||
0.11463275
|
||||
0.09164570
|
||||
0.07969173
|
||||
0.08745047
|
||||
0.09294610
|
||||
0.08758718
|
||||
0.04984579
|
||||
0.01199116
|
||||
0.01887675
|
||||
0.01864040
|
||||
0.07235581
|
||||
0.10418790
|
||||
0.03615440
|
||||
0.00980441
|
||||
0.00221446
|
||||
0.03594533
|
||||
0.06812992
|
||||
0.11332203
|
||||
0.06093310
|
||||
0.05594898
|
||||
0.06496126
|
||||
0.08740044
|
||||
0.12233238
|
||||
0.09580570
|
||||
0.04772820
|
||||
0.02361993
|
||||
0.01078867
|
||||
0.03802064
|
||||
0.07909553
|
||||
0.08012012
|
||||
0.07333743
|
||||
0.05754400
|
||||
0.05097869
|
||||
0.07664723
|
||||
0.05694538
|
||||
0.04448567
|
||||
0.09419085
|
||||
0.06582000
|
||||
0.06082845
|
||||
0.03704552
|
||||
0.02209460
|
||||
0.00290526
|
||||
0.00198855
|
||||
0.00014714
|
||||
0.00000098
|
||||
0.00000014
|
||||
0.00000015
|
||||
0.00003012
|
||||
0.00101211
|
||||
0.00025446
|
||||
0.00000087
|
||||
0.00000012
|
||||
0.00000008
|
||||
0.00000007
|
||||
0.00000005
|
||||
0.00017385
|
||||
0.00057944
|
||||
0.00056784
|
||||
0.00059026
|
||||
0.00004644
|
||||
0.01499533
|
||||
0.03538585
|
||||
0.06983574
|
||||
0.06200712
|
||||
0.06784921
|
||||
0.06938390
|
||||
0.08049586
|
||||
0.07614776
|
||||
0.05881132
|
||||
0.11806823
|
||||
0.15041181
|
||||
0.12342727
|
||||
0.11753254
|
||||
0.10245495
|
||||
0.09522798
|
||||
0.09911717
|
||||
0.09732006
|
||||
0.07817753
|
||||
0.08756886
|
||||
0.05415813
|
||||
0.02474579
|
||||
0.02446261
|
||||
0.11357070
|
||||
0.11718469
|
||||
0.09938256
|
||||
0.08500034
|
||||
0.07520326
|
||||
0.07641556
|
||||
0.06648254
|
||||
0.06731120
|
||||
0.07971697
|
||||
0.08603772
|
||||
0.05109902
|
||||
0.09391770
|
||||
0.12228667
|
||||
0.05145732
|
||||
0.05202519
|
||||
0.06156273
|
||||
0.01560635
|
||||
0.00427968
|
||||
0.02421295
|
||||
0.03267565
|
||||
0.07683574
|
||||
0.02789398
|
||||
0.01183625
|
||||
0.01795142
|
||||
0.02549900
|
||||
0.04912534
|
||||
0.10022978
|
||||
0.09703911
|
||||
0.06528247
|
||||
0.05660536
|
||||
0.05310062
|
||||
0.02857801
|
||||
0.00309033
|
||||
0.00894551
|
||||
0.02781632
|
||||
0.00307855
|
||||
0.00136751
|
||||
0.01259168
|
||||
0.03591923
|
||||
0.02849875
|
||||
0.03123168
|
||||
0.01485326
|
||||
0.00356870
|
||||
0.00102485
|
||||
0.00086726
|
||||
0.00025258
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9e4ecb709f95cd241a9c5dc5558ab3b7
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5aa14328feee8ad47a37f50a3b07ae47
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,309 @@
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00000002
|
||||
0.00000004
|
||||
0.00001575
|
||||
0.00056058
|
||||
0.10512087
|
||||
0.06247878
|
||||
0.13907126
|
||||
0.10796085
|
||||
0.08928745
|
||||
0.04296236
|
||||
0.01589850
|
||||
0.03041418
|
||||
0.09944262
|
||||
0.09935775
|
||||
0.09998433
|
||||
0.11296503
|
||||
0.11884489
|
||||
0.10825495
|
||||
0.09847742
|
||||
0.08814481
|
||||
0.09157983
|
||||
0.09493581
|
||||
0.08478543
|
||||
0.06469711
|
||||
0.06443882
|
||||
0.04607481
|
||||
0.01910205
|
||||
0.00103388
|
||||
0.00010046
|
||||
0.00071292
|
||||
0.00033006
|
||||
0.00008951
|
||||
0.00007941
|
||||
0.00000031
|
||||
0.00011136
|
||||
0.00000019
|
||||
0.00000021
|
||||
0.00000018
|
||||
0.00000026
|
||||
0.00000008
|
||||
0.00000014
|
||||
0.00000015
|
||||
0.00000016
|
||||
0.00000012
|
||||
0.00000009
|
||||
0.00000007
|
||||
0.00000006
|
||||
0.00000005
|
||||
0.00000004
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00005185
|
||||
0.00000828
|
||||
0.02832398
|
||||
0.12830395
|
||||
0.16844831
|
||||
0.12687734
|
||||
0.06460033
|
||||
0.01894131
|
||||
0.03220102
|
||||
0.05880868
|
||||
0.06527510
|
||||
0.05140930
|
||||
0.03658038
|
||||
0.01398638
|
||||
0.02421561
|
||||
0.08997451
|
||||
0.08377688
|
||||
0.02418836
|
||||
0.00973439
|
||||
0.00599007
|
||||
0.00905722
|
||||
0.02651637
|
||||
0.10164079
|
||||
0.14320731
|
||||
0.12904300
|
||||
0.11029114
|
||||
0.07977970
|
||||
0.05571616
|
||||
0.06751201
|
||||
0.01764874
|
||||
0.00617195
|
||||
0.02489195
|
||||
0.01025172
|
||||
0.00284820
|
||||
0.04030944
|
||||
0.02575630
|
||||
0.11017919
|
||||
0.11959197
|
||||
0.06856420
|
||||
0.03276161
|
||||
0.01958396
|
||||
0.01616774
|
||||
0.02088996
|
||||
0.05009602
|
||||
0.07843453
|
||||
0.06901982
|
||||
0.02250954
|
||||
0.01337707
|
||||
0.02803325
|
||||
0.06195528
|
||||
0.07357799
|
||||
0.06418665
|
||||
0.09644670
|
||||
0.09922776
|
||||
0.11329394
|
||||
0.10822823
|
||||
0.09179486
|
||||
0.06035907
|
||||
0.05104551
|
||||
0.03396708
|
||||
0.05817677
|
||||
0.06630339
|
||||
0.04054824
|
||||
0.07112641
|
||||
0.05802667
|
||||
0.06763632
|
||||
0.06566662
|
||||
0.05350130
|
||||
0.03097204
|
||||
0.01398106
|
||||
0.03965144
|
||||
0.13338506
|
||||
0.14704359
|
||||
0.09780610
|
||||
0.06288150
|
||||
0.05591090
|
||||
0.05028389
|
||||
0.02308469
|
||||
0.02326990
|
||||
0.01427633
|
||||
0.01059657
|
||||
0.00597096
|
||||
0.00265677
|
||||
0.00096331
|
||||
0.00027705
|
||||
0.00081122
|
||||
0.00029532
|
||||
0.00003557
|
||||
0.00000033
|
||||
0.00000033
|
||||
0.00000032
|
||||
0.00000030
|
||||
0.00000028
|
||||
0.00000030
|
||||
0.00000022
|
||||
0.00000023
|
||||
0.00000021
|
||||
0.00000018
|
||||
0.00000015
|
||||
0.00000015
|
||||
0.00000014
|
||||
0.00000010
|
||||
0.00000007
|
||||
0.00000008
|
||||
0.00000004
|
||||
0.00000004
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00008707
|
||||
0.00058412
|
||||
0.00013537
|
||||
0.00000516
|
||||
0.02347101
|
||||
0.04357265
|
||||
0.11365347
|
||||
0.08669745
|
||||
0.05095782
|
||||
0.06836279
|
||||
0.07590245
|
||||
0.07837829
|
||||
0.06091340
|
||||
0.05027740
|
||||
0.07152368
|
||||
0.12868381
|
||||
0.13290957
|
||||
0.11694506
|
||||
0.10228214
|
||||
0.10048629
|
||||
0.08879036
|
||||
0.03953559
|
||||
0.01065895
|
||||
0.02042474
|
||||
0.02315973
|
||||
0.05589612
|
||||
0.10023368
|
||||
0.05182547
|
||||
0.00905302
|
||||
0.00198392
|
||||
0.02186030
|
||||
0.04189350
|
||||
0.14410524
|
||||
0.09991421
|
||||
0.04756368
|
||||
0.06668478
|
||||
0.09321541
|
||||
0.11032545
|
||||
0.10434034
|
||||
0.08342411
|
||||
0.03306899
|
||||
0.01367741
|
||||
0.06044695
|
||||
0.09034430
|
||||
0.06164889
|
||||
0.06296910
|
||||
0.05844286
|
||||
0.04815272
|
||||
0.05400948
|
||||
0.07309759
|
||||
0.08802762
|
||||
0.15068236
|
||||
0.11547473
|
||||
0.05514836
|
||||
0.03452749
|
||||
0.01822943
|
||||
0.00416943
|
||||
0.00182502
|
||||
0.00100153
|
||||
0.00051689
|
||||
0.00018493
|
||||
0.00159059
|
||||
0.00043061
|
||||
0.00000588
|
||||
0.00000041
|
||||
0.00000057
|
||||
0.00000034
|
||||
0.00000041
|
||||
0.00015376
|
||||
0.00000841
|
||||
0.00085780
|
||||
0.01958037
|
||||
0.03508846
|
||||
0.08052298
|
||||
0.05665231
|
||||
0.05217534
|
||||
0.07203114
|
||||
0.06636944
|
||||
0.06487500
|
||||
0.06899809
|
||||
0.05801162
|
||||
0.13297467
|
||||
0.10661902
|
||||
0.09435981
|
||||
0.09961571
|
||||
0.10622018
|
||||
0.11464507
|
||||
0.10977937
|
||||
0.09725338
|
||||
0.09613403
|
||||
0.07686792
|
||||
0.04782833
|
||||
0.04779501
|
||||
0.02959961
|
||||
0.04014716
|
||||
0.10748242
|
||||
0.09299997
|
||||
0.08187937
|
||||
0.08289372
|
||||
0.10451850
|
||||
0.09585603
|
||||
0.10306562
|
||||
0.09885249
|
||||
0.09429167
|
||||
0.08828995
|
||||
0.08491156
|
||||
0.05210634
|
||||
0.06902108
|
||||
0.06840731
|
||||
0.03392952
|
||||
0.05985209
|
||||
0.05023765
|
||||
0.01092744
|
||||
0.00683205
|
||||
0.02457151
|
||||
0.09223298
|
||||
0.04956920
|
||||
0.01651768
|
||||
0.00484253
|
||||
0.00325285
|
||||
0.01828707
|
||||
0.03094625
|
||||
0.08162503
|
||||
0.09403877
|
||||
0.07717906
|
||||
0.05836591
|
||||
0.07295292
|
||||
0.03507503
|
||||
0.00875005
|
||||
0.00378138
|
||||
0.01026982
|
||||
0.00332591
|
||||
0.00306266
|
||||
0.01591836
|
||||
0.03091518
|
||||
0.02433426
|
||||
0.02051376
|
||||
0.00947862
|
||||
0.00142537
|
||||
0.00069377
|
||||
0.00004064
|
||||
0.00000018
|
||||
0.00000003
|
||||
0.00000002
|
||||
0.00007110
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d0ebb29a4c0d68b4da17bc19e7384990
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 97f150ec0d3d48a4db1ea667fe05b072
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,293 @@
|
||||
0.00000006
|
||||
0.00000004
|
||||
0.00000000
|
||||
0.00000876
|
||||
0.00000012
|
||||
0.00004277
|
||||
0.05436340
|
||||
0.17665382
|
||||
0.12990713
|
||||
0.12583591
|
||||
0.13277286
|
||||
0.13517515
|
||||
0.12306246
|
||||
0.12600669
|
||||
0.12459808
|
||||
0.10394835
|
||||
0.09309749
|
||||
0.09333178
|
||||
0.07643553
|
||||
0.05511052
|
||||
0.04393115
|
||||
0.02941259
|
||||
0.03382056
|
||||
0.02038616
|
||||
0.01548435
|
||||
0.01363530
|
||||
0.01174366
|
||||
0.00893834
|
||||
0.00600578
|
||||
0.00371616
|
||||
0.00200703
|
||||
0.00146441
|
||||
0.00025279
|
||||
0.00000120
|
||||
0.00000023
|
||||
0.00000033
|
||||
0.00000023
|
||||
0.00000020
|
||||
0.00000020
|
||||
0.00000015
|
||||
0.00000013
|
||||
0.00000013
|
||||
0.00000010
|
||||
0.00000008
|
||||
0.00000008
|
||||
0.00011547
|
||||
0.03884210
|
||||
0.11290570
|
||||
0.14032798
|
||||
0.11392568
|
||||
0.10667438
|
||||
0.11704497
|
||||
0.08145794
|
||||
0.03876734
|
||||
0.01617737
|
||||
0.00410597
|
||||
0.03786850
|
||||
0.01552934
|
||||
0.08146030
|
||||
0.12936532
|
||||
0.10310936
|
||||
0.04261066
|
||||
0.01968959
|
||||
0.01155729
|
||||
0.01246085
|
||||
0.01643562
|
||||
0.02611092
|
||||
0.06975007
|
||||
0.06647281
|
||||
0.04812134
|
||||
0.06127471
|
||||
0.04931017
|
||||
0.05622455
|
||||
0.09936404
|
||||
0.13729018
|
||||
0.09841577
|
||||
0.05966850
|
||||
0.01680984
|
||||
0.00261750
|
||||
0.00143242
|
||||
0.01419471
|
||||
0.04943705
|
||||
0.04137772
|
||||
0.03587830
|
||||
0.03199233
|
||||
0.03906901
|
||||
0.03574416
|
||||
0.03229308
|
||||
0.03190199
|
||||
0.04779297
|
||||
0.04261694
|
||||
0.04245671
|
||||
0.04589238
|
||||
0.05662980
|
||||
0.05274693
|
||||
0.05354149
|
||||
0.04374932
|
||||
0.03250221
|
||||
0.01861564
|
||||
0.01963406
|
||||
0.00308434
|
||||
0.00011245
|
||||
0.00000138
|
||||
0.00004786
|
||||
0.00000296
|
||||
0.00000008
|
||||
0.00040744
|
||||
0.01232126
|
||||
0.00401640
|
||||
0.00080837
|
||||
0.00001568
|
||||
0.00000014
|
||||
0.00000001
|
||||
0.00000000
|
||||
0.00000001
|
||||
0.00000000
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00000001
|
||||
0.00137698
|
||||
0.00120946
|
||||
0.00037309
|
||||
0.00001546
|
||||
0.00019473
|
||||
0.05597774
|
||||
0.05349650
|
||||
0.07315911
|
||||
0.10007664
|
||||
0.12148964
|
||||
0.10390536
|
||||
0.11813873
|
||||
0.12236188
|
||||
0.07448173
|
||||
0.07163881
|
||||
0.03668909
|
||||
0.00482586
|
||||
0.00674204
|
||||
0.03587620
|
||||
0.16254307
|
||||
0.15529911
|
||||
0.04756048
|
||||
0.01177680
|
||||
0.00713155
|
||||
0.09382056
|
||||
0.10292054
|
||||
0.16375251
|
||||
0.13605520
|
||||
0.05452843
|
||||
0.09455058
|
||||
0.12224557
|
||||
0.13256259
|
||||
0.09879588
|
||||
0.06324653
|
||||
0.02657961
|
||||
0.01032267
|
||||
0.00230831
|
||||
0.02871299
|
||||
0.07454104
|
||||
0.13230723
|
||||
0.08707617
|
||||
0.04283587
|
||||
0.02152865
|
||||
0.08970764
|
||||
0.15705778
|
||||
0.13232288
|
||||
0.11249097
|
||||
0.12094339
|
||||
0.09471517
|
||||
0.08165064
|
||||
0.05688582
|
||||
0.06236089
|
||||
0.06496719
|
||||
0.07772935
|
||||
0.07066742
|
||||
0.06583010
|
||||
0.06023704
|
||||
0.05579713
|
||||
0.03196885
|
||||
0.02167577
|
||||
0.00885445
|
||||
0.00054829
|
||||
0.00120143
|
||||
0.05003724
|
||||
0.05701566
|
||||
0.05554289
|
||||
0.06652608
|
||||
0.06286423
|
||||
0.07321317
|
||||
0.10022882
|
||||
0.08733696
|
||||
0.05627337
|
||||
0.00893717
|
||||
0.05115506
|
||||
0.02904028
|
||||
0.03742857
|
||||
0.05691869
|
||||
0.04722928
|
||||
0.04761178
|
||||
0.11284457
|
||||
0.06448554
|
||||
0.01647628
|
||||
0.00811301
|
||||
0.00184246
|
||||
0.00095617
|
||||
0.03380137
|
||||
0.05253933
|
||||
0.09993897
|
||||
0.08770414
|
||||
0.06539877
|
||||
0.06725874
|
||||
0.05866503
|
||||
0.02927921
|
||||
0.00474572
|
||||
0.00449728
|
||||
0.00220470
|
||||
0.03732991
|
||||
0.16716687
|
||||
0.13160835
|
||||
0.11313587
|
||||
0.09361040
|
||||
0.08533838
|
||||
0.05350770
|
||||
0.01132886
|
||||
0.00188624
|
||||
0.00224469
|
||||
0.04322987
|
||||
0.14946128
|
||||
0.11786281
|
||||
0.09559109
|
||||
0.08745537
|
||||
0.06887340
|
||||
0.06453345
|
||||
0.14468354
|
||||
0.15365960
|
||||
0.08112232
|
||||
0.05636847
|
||||
0.05092329
|
||||
0.06082837
|
||||
0.05791784
|
||||
0.03492959
|
||||
0.01728887
|
||||
0.01145544
|
||||
0.03110087
|
||||
0.06301248
|
||||
0.08440568
|
||||
0.02886192
|
||||
0.02436969
|
||||
0.06101014
|
||||
0.06737709
|
||||
0.12571132
|
||||
0.13595617
|
||||
0.11148004
|
||||
0.02669337
|
||||
0.00637604
|
||||
0.00583108
|
||||
0.04190948
|
||||
0.12353806
|
||||
0.13185968
|
||||
0.10900982
|
||||
0.09392569
|
||||
0.07719076
|
||||
0.06124953
|
||||
0.04566133
|
||||
0.03477211
|
||||
0.02629414
|
||||
0.02993021
|
||||
0.03762943
|
||||
0.05084812
|
||||
0.03652138
|
||||
0.05007470
|
||||
0.11358684
|
||||
0.14574684
|
||||
0.11534683
|
||||
0.09708887
|
||||
0.06805480
|
||||
0.04739871
|
||||
0.04391212
|
||||
0.04065108
|
||||
0.02693054
|
||||
0.01430396
|
||||
0.00508704
|
||||
0.00183298
|
||||
0.00007207
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 62632355e21a84c4c84e476062ab8670
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/StreamingAssets/CharacterVoicelines/Professor/Madis_Worry-001.wav
LFS
Normal file
BIN
Assets/StreamingAssets/CharacterVoicelines/Professor/Madis_Worry-001.wav
LFS
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7a43d69a404558844883b6d1e9ccc6a6
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,268 @@
|
||||
0.00000005
|
||||
0.00000003
|
||||
0.00240253
|
||||
0.02907968
|
||||
0.10503523
|
||||
0.13422142
|
||||
0.12195620
|
||||
0.13128196
|
||||
0.13441545
|
||||
0.10902201
|
||||
0.11511548
|
||||
0.12498570
|
||||
0.10779791
|
||||
0.08748529
|
||||
0.09270831
|
||||
0.08885102
|
||||
0.07140992
|
||||
0.07817293
|
||||
0.05512253
|
||||
0.07312962
|
||||
0.05332483
|
||||
0.02952465
|
||||
0.00628433
|
||||
0.00322687
|
||||
0.01116481
|
||||
0.02963358
|
||||
0.09202230
|
||||
0.10785520
|
||||
0.09845226
|
||||
0.10343045
|
||||
0.09329684
|
||||
0.04513930
|
||||
0.02688077
|
||||
0.01212403
|
||||
0.04465980
|
||||
0.02088372
|
||||
0.02843172
|
||||
0.14170074
|
||||
0.14037681
|
||||
0.08236120
|
||||
0.02720438
|
||||
0.01238582
|
||||
0.01198153
|
||||
0.01171427
|
||||
0.04087922
|
||||
0.11383022
|
||||
0.10109381
|
||||
0.08515322
|
||||
0.04896748
|
||||
0.04567009
|
||||
0.02929136
|
||||
0.06172283
|
||||
0.11550593
|
||||
0.09598164
|
||||
0.07837296
|
||||
0.02478683
|
||||
0.00525718
|
||||
0.00181524
|
||||
0.00970324
|
||||
0.07209075
|
||||
0.09798092
|
||||
0.07967266
|
||||
0.06513842
|
||||
0.05123381
|
||||
0.05027419
|
||||
0.04282681
|
||||
0.04678136
|
||||
0.06629726
|
||||
0.04876049
|
||||
0.04369129
|
||||
0.03766395
|
||||
0.04394144
|
||||
0.04186778
|
||||
0.05153219
|
||||
0.04662358
|
||||
0.03369124
|
||||
0.02084255
|
||||
0.01368451
|
||||
0.00168093
|
||||
0.00043239
|
||||
0.00004149
|
||||
0.00041319
|
||||
0.00029644
|
||||
0.00001294
|
||||
0.00009876
|
||||
0.01724320
|
||||
0.00515795
|
||||
0.00088585
|
||||
0.00000051
|
||||
0.00000013
|
||||
0.00000001
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00000002
|
||||
0.00029903
|
||||
0.00017885
|
||||
0.00173300
|
||||
0.03660622
|
||||
0.08778569
|
||||
0.08299683
|
||||
0.08249202
|
||||
0.07836448
|
||||
0.07183830
|
||||
0.09798677
|
||||
0.10288965
|
||||
0.07641125
|
||||
0.07789677
|
||||
0.06810252
|
||||
0.00654751
|
||||
0.00414498
|
||||
0.01800906
|
||||
0.10378619
|
||||
0.10797114
|
||||
0.02479648
|
||||
0.00965088
|
||||
0.01219227
|
||||
0.07751130
|
||||
0.11227150
|
||||
0.14128794
|
||||
0.06956887
|
||||
0.05905581
|
||||
0.10559428
|
||||
0.11890519
|
||||
0.08814315
|
||||
0.05743459
|
||||
0.02042473
|
||||
0.00343255
|
||||
0.02520813
|
||||
0.04550547
|
||||
0.11568366
|
||||
0.09366174
|
||||
0.04345708
|
||||
0.03914818
|
||||
0.07486159
|
||||
0.13059510
|
||||
0.15400928
|
||||
0.13821089
|
||||
0.12171482
|
||||
0.10681405
|
||||
0.08661242
|
||||
0.06828332
|
||||
0.04075309
|
||||
0.05218672
|
||||
0.07257383
|
||||
0.07887270
|
||||
0.08816109
|
||||
0.09971622
|
||||
0.08168958
|
||||
0.05080761
|
||||
0.02718288
|
||||
0.00490109
|
||||
0.00417936
|
||||
0.01302431
|
||||
0.01342031
|
||||
0.01449505
|
||||
0.01702639
|
||||
0.01002846
|
||||
0.00135636
|
||||
0.00615288
|
||||
0.00988699
|
||||
0.05511121
|
||||
0.13424085
|
||||
0.13549428
|
||||
0.12707625
|
||||
0.10175641
|
||||
0.09349026
|
||||
0.08078031
|
||||
0.10017768
|
||||
0.09641082
|
||||
0.05651959
|
||||
0.02388979
|
||||
0.03372757
|
||||
0.02807933
|
||||
0.06420366
|
||||
0.05765516
|
||||
0.10705915
|
||||
0.12931576
|
||||
0.06605592
|
||||
0.01316365
|
||||
0.00862626
|
||||
0.00548033
|
||||
0.00231362
|
||||
0.05162323
|
||||
0.02771896
|
||||
0.04052469
|
||||
0.06053808
|
||||
0.04970683
|
||||
0.04813053
|
||||
0.03046989
|
||||
0.00504421
|
||||
0.00297387
|
||||
0.00175442
|
||||
0.03428232
|
||||
0.16087463
|
||||
0.14309265
|
||||
0.11838740
|
||||
0.07561675
|
||||
0.07153413
|
||||
0.06790428
|
||||
0.03115408
|
||||
0.00911597
|
||||
0.03592220
|
||||
0.12518162
|
||||
0.14040351
|
||||
0.13036409
|
||||
0.08447693
|
||||
0.08117232
|
||||
0.06552082
|
||||
0.09590764
|
||||
0.13285699
|
||||
0.12561189
|
||||
0.06799156
|
||||
0.04766290
|
||||
0.04445734
|
||||
0.03842782
|
||||
0.02435055
|
||||
0.01544531
|
||||
0.01147488
|
||||
0.01724531
|
||||
0.10274742
|
||||
0.08165291
|
||||
0.02878892
|
||||
0.04548312
|
||||
0.05494404
|
||||
0.07406324
|
||||
0.12911624
|
||||
0.12757473
|
||||
0.11833390
|
||||
0.03788988
|
||||
0.01097155
|
||||
0.00298281
|
||||
0.00275654
|
||||
0.02835943
|
||||
0.14801164
|
||||
0.12368125
|
||||
0.11705162
|
||||
0.08316845
|
||||
0.07073751
|
||||
0.07032350
|
||||
0.07200280
|
||||
0.05796322
|
||||
0.03717402
|
||||
0.02600084
|
||||
0.02813455
|
||||
0.03365216
|
||||
0.03137246
|
||||
0.02250615
|
||||
0.06806763
|
||||
0.12442078
|
||||
0.12454491
|
||||
0.12151590
|
||||
0.09865309
|
||||
0.07201285
|
||||
0.05476528
|
||||
0.04899836
|
||||
0.04472922
|
||||
0.04327874
|
||||
0.03483583
|
||||
0.02293462
|
||||
0.01217319
|
||||
0.00345893
|
||||
0.00050839
|
||||
0.00024330
|
||||
0.00011198
|
||||
0.00018678
|
||||
0.00008502
|
||||
0.00005998
|
||||
0.00000075
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6789c915ab4332b4f9a2a5e01a0b1d32
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/StreamingAssets/CharacterVoicelines/Professor/Madis_Worry-002.wav
LFS
Normal file
BIN
Assets/StreamingAssets/CharacterVoicelines/Professor/Madis_Worry-002.wav
LFS
Normal file
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7bb958a26428f774dae23140e390d603
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/StreamingAssets/Whisper/ggml-base.en.bin
Normal file
BIN
Assets/StreamingAssets/Whisper/ggml-base.en.bin
Normal file
Binary file not shown.
7
Assets/StreamingAssets/Whisper/ggml-base.en.bin.meta
Normal file
7
Assets/StreamingAssets/Whisper/ggml-base.en.bin.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4fef61b9ad4f7eb488ea2657f1cc700e
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/StreamingAssets/Whisper/ggml-tiny.bin
Normal file
BIN
Assets/StreamingAssets/Whisper/ggml-tiny.bin
Normal file
Binary file not shown.
7
Assets/StreamingAssets/Whisper/ggml-tiny.bin.meta
Normal file
7
Assets/StreamingAssets/Whisper/ggml-tiny.bin.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6f5a0c98d09a6dc4d9d570e23dc96ab9
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -85,7 +85,6 @@ public class ArcheryRange : NetworkBehaviour
|
||||
_presentPlayers.Remove(exitedPlayer); // Shifts others left automatically
|
||||
|
||||
if (exitedPlayer == _scoredPlayer) keyboardManager.DeActivate(); // If the player <20>refuses to enter their name.
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -145,6 +144,7 @@ public class ArcheryRange : NetworkBehaviour
|
||||
targetObject = Instantiate(modelDisplay.Model, randomPos, Quaternion.identity, null);
|
||||
InitializeArcheryTargetObject(targetObject);
|
||||
}
|
||||
targetObject.transform.rotation = targetStartPosition.rotation;
|
||||
|
||||
ArcheryTarget target = targetObject.GetComponent<ArcheryTarget>();
|
||||
target.endPosition = targetEndPosition.position;
|
||||
|
||||
@@ -8,6 +8,11 @@ public class KeyboardManager : NetworkBehaviour
|
||||
{
|
||||
public enum ShiftMode { Lowercase, NextUppercase, Uppercase }
|
||||
|
||||
public delegate void OnActivateDelegate();
|
||||
public event OnActivateDelegate OnActivate;
|
||||
public delegate void OnSubmitDelegate();
|
||||
public event OnSubmitDelegate OnSubmit;
|
||||
|
||||
[Header("UI References")]
|
||||
public TMP_Text nameTextField;
|
||||
public TMP_Text scoreTextField;
|
||||
@@ -57,6 +62,7 @@ public class KeyboardManager : NetworkBehaviour
|
||||
gameObject.transform.position = assignedTransform.position;
|
||||
gameObject.transform.rotation = assignedTransform.rotation;
|
||||
|
||||
OnActivate?.Invoke();
|
||||
}
|
||||
|
||||
public void DeActivate()
|
||||
@@ -64,7 +70,7 @@ public class KeyboardManager : NetworkBehaviour
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
private void addToInput(string newInput)
|
||||
private void AddToInput(string newInput)
|
||||
{
|
||||
|
||||
if (_input.Length < inputTextLimit)
|
||||
@@ -82,13 +88,13 @@ public class KeyboardManager : NetworkBehaviour
|
||||
switch (_shiftMode)
|
||||
{
|
||||
case ShiftMode.Lowercase:
|
||||
addToInput(letter.ToLower());
|
||||
AddToInput(letter.ToLower());
|
||||
break;
|
||||
case ShiftMode.Uppercase:
|
||||
addToInput(letter.ToUpper());
|
||||
AddToInput(letter.ToUpper());
|
||||
break;
|
||||
case ShiftMode.NextUppercase:
|
||||
addToInput(letter.ToUpper());
|
||||
AddToInput(letter.ToUpper());
|
||||
_shiftMode = ShiftMode.Lowercase;
|
||||
UpdateKeyLabels();
|
||||
break;
|
||||
@@ -124,6 +130,7 @@ public class KeyboardManager : NetworkBehaviour
|
||||
void OnEnterPressed()
|
||||
{
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.LetterEnter, enterButton.gameObject);
|
||||
OnSubmit?.Invoke();
|
||||
|
||||
if (_input.Length > 0)
|
||||
{
|
||||
@@ -136,7 +143,7 @@ public class KeyboardManager : NetworkBehaviour
|
||||
{
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.LetterEnter, spaceButton.gameObject);
|
||||
|
||||
addToInput(" ");
|
||||
AddToInput(" ");
|
||||
UpdateOutput();
|
||||
}
|
||||
|
||||
|
||||
@@ -10365,6 +10365,11 @@ PrefabInstance:
|
||||
propertyPath: leftHand
|
||||
value:
|
||||
objectReference: {fileID: 8597422041532106397}
|
||||
- target: {fileID: 3290095342561961842, guid: d90913a7f0b00844a8c4482b2afc2c66,
|
||||
type: 3}
|
||||
propertyPath: m_Enabled
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3290095342561961842, guid: d90913a7f0b00844a8c4482b2afc2c66,
|
||||
type: 3}
|
||||
propertyPath: rightHand
|
||||
@@ -10390,6 +10395,11 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: TutorialController
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6405559763661037305, guid: d90913a7f0b00844a8c4482b2afc2c66,
|
||||
type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
|
||||
@@ -168,20 +168,14 @@ public class TutorialAudioListener : MonoBehaviour
|
||||
|
||||
private EventReference GetGrabEvent(GrabSoundType type)
|
||||
{
|
||||
switch (type)
|
||||
return type switch
|
||||
{
|
||||
case GrabSoundType.Bow:
|
||||
return FMODEvents.Instance.BowGrab;
|
||||
|
||||
case GrabSoundType.Sprayer:
|
||||
return FMODEvents.Instance.SprayerGrab;
|
||||
|
||||
GrabSoundType.Bow => FMODEvents.Instance.BowGrab,
|
||||
GrabSoundType.Sprayer => FMODEvents.Instance.SprayerGrab,
|
||||
//Add more objects for grabbing here and do not forget to define them in FMODEvents.cs
|
||||
//Add the GrabAudioProfile.cs component to an object instance
|
||||
|
||||
default:
|
||||
return FMODEvents.Instance.DefaultGrab;
|
||||
}
|
||||
_ => FMODEvents.Instance.DefaultGrab,
|
||||
};
|
||||
}
|
||||
|
||||
private void HandleGrab(XRGrabInteractable grab)
|
||||
@@ -195,10 +189,6 @@ public class TutorialAudioListener : MonoBehaviour
|
||||
: GrabSoundType.Default;
|
||||
|
||||
EventReference grabEvent = GetGrabEvent(type);
|
||||
Debug.Log(grabEvent);
|
||||
AudioManager.Instance.PlayAttachedInstance(grabEvent, grab.gameObject);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace _PROJECT.NewHandPresence
|
||||
|
||||
private XRControllerHintController _leftHintController;
|
||||
private XRControllerHintController _rightHintController;
|
||||
private XRBaseInteractor lastInteractor = null;
|
||||
|
||||
private SmartHandPresence _leftSmartHandPresence;
|
||||
private SmartHandPresence _rightSmartHandPresence;
|
||||
@@ -244,18 +245,24 @@ namespace _PROJECT.NewHandPresence
|
||||
StopCoroutine(initializationInfoCoroutine);
|
||||
}
|
||||
|
||||
private void OnGripPerformed(SelectEnterEventArgs arg0)
|
||||
private void OnGripPerformed(SelectEnterEventArgs args)
|
||||
{
|
||||
var grab = arg0.interactableObject as XRGrabInteractable;
|
||||
|
||||
// Notify any listeners
|
||||
OnGrab?.Invoke(grab);
|
||||
var interactor = args.interactorObject as XRBaseInteractor;
|
||||
var interactable = args.interactableObject as XRGrabInteractable;
|
||||
|
||||
if (_state != TutorialState.Grip) return;
|
||||
Debug.Log("Grip performed");
|
||||
UpdateState(_state.Next());
|
||||
if (lastInteractor == interactor)
|
||||
return; // same hand grabbing again
|
||||
|
||||
lastInteractor = interactor;
|
||||
|
||||
|
||||
OnGrab?.Invoke(interactable as XRGrabInteractable);
|
||||
|
||||
if (_state == TutorialState.Grip)
|
||||
UpdateState(_state.Next());
|
||||
}
|
||||
|
||||
|
||||
private void OnTeleportPerformed(LocomotionSystem obj)
|
||||
{
|
||||
if (_state != TutorialState.Teleport) return;
|
||||
|
||||
@@ -84,7 +84,7 @@ namespace _PROJECT.Multiplayer.NewBow
|
||||
|
||||
public void SetLaunchDirection(Vector3 direction)
|
||||
{
|
||||
Debug.Log("Setting launch direction: " + direction);
|
||||
// Debug.Log("Setting launch direction: " + direction);
|
||||
if (direction != Vector3.zero)
|
||||
{
|
||||
_networkBehavior.SetLaunchDirection(direction);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -7,13 +7,14 @@ Material:
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Green
|
||||
m_Name: EmissiveGreen
|
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords: []
|
||||
m_ValidKeywords:
|
||||
- _EMISSION
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_LightmapFlags: 1
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
@@ -115,7 +116,7 @@ Material:
|
||||
m_Colors:
|
||||
- _BaseColor: {r: 0, g: 1, b: 0.0381248, a: 1}
|
||||
- _Color: {r: 0, g: 1, b: 0.0381248, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _EmissionColor: {r: 0.14076614, g: 1, b: 0, a: 1}
|
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
--- !u!114 &6221994712197478572
|
||||
@@ -20,15 +20,16 @@ Material:
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: Loading
|
||||
m_Name: EmissiveRed
|
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _EMISSION
|
||||
- _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A
|
||||
- _SPECULAR_SETUP
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 4
|
||||
m_LightmapFlags: 1
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: 2000
|
||||
@@ -130,6 +131,6 @@ Material:
|
||||
m_Colors:
|
||||
- _BaseColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _Color: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _EmissionColor: {r: 1, g: 0, b: 0, a: 1}
|
||||
- _SpecColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
BIN
Assets/_PROJECT/Models/ModelGeneration/ServingTray.fbx
LFS
Normal file
BIN
Assets/_PROJECT/Models/ModelGeneration/ServingTray.fbx
LFS
Normal file
Binary file not shown.
108
Assets/_PROJECT/Models/ModelGeneration/ServingTray.fbx.meta
Normal file
108
Assets/_PROJECT/Models/ModelGeneration/ServingTray.fbx.meta
Normal file
@@ -0,0 +1,108 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3d938fc5df676394d8a29eb15002c190
|
||||
ModelImporter:
|
||||
serializedVersion: 22200
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
materials:
|
||||
materialImportMode: 2
|
||||
materialName: 0
|
||||
materialSearch: 1
|
||||
materialLocation: 1
|
||||
animations:
|
||||
legacyGenerateAnimations: 4
|
||||
bakeSimulation: 0
|
||||
resampleCurves: 1
|
||||
optimizeGameObjects: 0
|
||||
removeConstantScaleCurves: 0
|
||||
motionNodeName:
|
||||
rigImportErrors:
|
||||
rigImportWarnings:
|
||||
animationImportErrors:
|
||||
animationImportWarnings:
|
||||
animationRetargetingWarnings:
|
||||
animationDoRetargetingWarnings: 0
|
||||
importAnimatedCustomProperties: 0
|
||||
importConstraints: 0
|
||||
animationCompression: 1
|
||||
animationRotationError: 0.5
|
||||
animationPositionError: 0.5
|
||||
animationScaleError: 0.5
|
||||
animationWrapMode: 0
|
||||
extraExposedTransformPaths: []
|
||||
extraUserProperties: []
|
||||
clipAnimations: []
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
sortHierarchyByName: 1
|
||||
importVisibility: 1
|
||||
importBlendShapes: 1
|
||||
importCameras: 1
|
||||
importLights: 1
|
||||
nodeNameCollisionStrategy: 1
|
||||
fileIdsGeneration: 2
|
||||
swapUVChannels: 0
|
||||
generateSecondaryUV: 0
|
||||
useFileUnits: 1
|
||||
keepQuads: 0
|
||||
weldVertices: 1
|
||||
bakeAxisConversion: 0
|
||||
preserveHierarchy: 0
|
||||
skinWeightsMode: 0
|
||||
maxBonesPerVertex: 4
|
||||
minBoneWeight: 0.001
|
||||
optimizeBones: 1
|
||||
meshOptimizationFlags: -1
|
||||
indexFormat: 0
|
||||
secondaryUVAngleDistortion: 8
|
||||
secondaryUVAreaDistortion: 15.000001
|
||||
secondaryUVHardAngle: 88
|
||||
secondaryUVMarginMethod: 1
|
||||
secondaryUVMinLightmapResolution: 40
|
||||
secondaryUVMinObjectScale: 1
|
||||
secondaryUVPackMargin: 4
|
||||
useFileScale: 1
|
||||
strictVertexDataChecks: 0
|
||||
tangentSpace:
|
||||
normalSmoothAngle: 60
|
||||
normalImportMode: 0
|
||||
tangentImportMode: 3
|
||||
normalCalculationMode: 4
|
||||
legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
|
||||
blendShapeNormalImportMode: 1
|
||||
normalSmoothingSource: 0
|
||||
referencedClips: []
|
||||
importAnimation: 1
|
||||
humanDescription:
|
||||
serializedVersion: 3
|
||||
human: []
|
||||
skeleton: []
|
||||
armTwist: 0.5
|
||||
foreArmTwist: 0.5
|
||||
upperLegTwist: 0.5
|
||||
legTwist: 0.5
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
skeletonHasParents: 1
|
||||
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||
autoGenerateAvatarMappingIfUnspecified: 1
|
||||
animationType: 2
|
||||
humanoidOversampling: 1
|
||||
avatarSetup: 0
|
||||
addHumanoidExtraRootOnlyWhenUsingAvatar: 1
|
||||
importBlendShapeDeformPercent: 1
|
||||
remapMaterialsIfMaterialImportModeIsNone: 0
|
||||
additionalBone: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -22,11 +22,11 @@ Material:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: card reader Variant
|
||||
m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3}
|
||||
m_Parent: {fileID: -3846018093981099296, guid: 248e38dcb931fa345a11dbf79e87036f,
|
||||
type: 3}
|
||||
m_Parent: {fileID: 2100000, guid: a3ce1b39b1e52c94398a08157fda1dff, type: 2}
|
||||
m_ModifiedSerializedProperties: 2
|
||||
m_ValidKeywords:
|
||||
- _EMISSION
|
||||
- _SPECULAR_SETUP
|
||||
m_InvalidKeywords: []
|
||||
m_LightmapFlags: 1
|
||||
m_EnableInstancingVariants: 0
|
||||
@@ -42,6 +42,6 @@ Material:
|
||||
m_Ints: []
|
||||
m_Floats: []
|
||||
m_Colors:
|
||||
- _Color: {r: 0.11653974, g: 0.90640265, b: 0, a: 1}
|
||||
- _EmissionColor: {r: 0, g: 0.9622642, b: 0.019420544, a: 0}
|
||||
- _Color: {r: 1, g: 0, b: 0.13618705, a: 1}
|
||||
- _EmissionColor: {r: 0.09420719, g: 0.9607843, b: 0, a: 0}
|
||||
m_BuildTextureStacks: []
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -93,6 +93,7 @@ GameObject:
|
||||
- component: {fileID: 7699707098595015193}
|
||||
- component: {fileID: 1413215456818694348}
|
||||
- component: {fileID: 483845010817450077}
|
||||
- component: {fileID: 8646891389811022226}
|
||||
m_Layer: 0
|
||||
m_Name: ArcheryRangeNPC
|
||||
m_TagString: Untagged
|
||||
@@ -267,7 +268,7 @@ MonoBehaviour:
|
||||
_initializeOrder: 0
|
||||
_defaultDespawnType: 0
|
||||
NetworkObserver: {fileID: 0}
|
||||
<PrefabId>k__BackingField: 18
|
||||
<PrefabId>k__BackingField: 6
|
||||
<SpawnableCollectionId>k__BackingField: 0
|
||||
_scenePathHash: 0
|
||||
<SceneId>k__BackingField: 0
|
||||
@@ -465,6 +466,27 @@ MonoBehaviour:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
--- !u!135 &8646891389811022226
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4663194936290788516}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 1
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7802421088258943189
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -195,6 +195,7 @@ GameObject:
|
||||
- component: {fileID: 7699707098595015193}
|
||||
- component: {fileID: 1413215456818694348}
|
||||
- component: {fileID: 483845010817450077}
|
||||
- component: {fileID: 8270600859684143550}
|
||||
m_Layer: 0
|
||||
m_Name: CafeWaiterNPC
|
||||
m_TagString: Untagged
|
||||
@@ -217,6 +218,7 @@ RectTransform:
|
||||
- {fileID: 6822286665445551211}
|
||||
- {fileID: 1530163177365118906}
|
||||
- {fileID: 9206972526079896025}
|
||||
- {fileID: 532878555782351644}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
@@ -320,10 +322,14 @@ MonoBehaviour:
|
||||
notepad: {fileID: 4428142794029565387}
|
||||
notepadText: {fileID: 1672365637701508529}
|
||||
pen: {fileID: 8182716950090654063}
|
||||
backRoom: {fileID: 0}
|
||||
plate: {fileID: 0}
|
||||
backRoomMovingTime: 5
|
||||
servingTray: {fileID: 532878555782351644}
|
||||
servingTrayTop: {fileID: 4054385274916025690}
|
||||
servingTrayFoodSpawnPoint: {fileID: 9197682265033829949}
|
||||
servingTrayPresentingPosition: {fileID: 0}
|
||||
servingTrayTopLiftAmount: 0.5
|
||||
spawnedFoodDiameter: 0.5
|
||||
backRoom: {fileID: 0}
|
||||
backRoomMovingTime: 5
|
||||
ignorePlayerCollisionLayer: 2
|
||||
--- !u!114 &7699707098595015193
|
||||
MonoBehaviour:
|
||||
@@ -564,6 +570,27 @@ MonoBehaviour:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
--- !u!135 &8270600859684143550
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4663194936290788516}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 1
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7802421088258943189
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -796,3 +823,119 @@ GameObject:
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 7727616090730660173}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &8665339237764214756
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 5657737279223690836}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1375442583061750018, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5165251572813796828, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_SortingLayer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8390068347103116866, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_Name
|
||||
value: ServingTray
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.x
|
||||
value: 0.7872121
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.y
|
||||
value: 0.7872121
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalScale.z
|
||||
value: 0.7872121
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0.0000016202
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0.11433
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0.30001
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: c43698824b8754f428a6677d8301a04c, type: 3}
|
||||
--- !u!4 &532878555782351644 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 9161537809656587512, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 8665339237764214756}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &4054385274916025690 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 4613209722915461822, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 8665339237764214756}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!4 &9197682265033829949 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 569075787185045977, guid: c43698824b8754f428a6677d8301a04c,
|
||||
type: 3}
|
||||
m_PrefabInstance: {fileID: 8665339237764214756}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
|
||||
@@ -93,6 +93,7 @@ GameObject:
|
||||
- component: {fileID: 1653195237934660084}
|
||||
- component: {fileID: 1413215456818694348}
|
||||
- component: {fileID: 483845010817450077}
|
||||
- component: {fileID: 1179918406964740421}
|
||||
m_Layer: 0
|
||||
m_Name: ShapeDetectionNPC
|
||||
m_TagString: Untagged
|
||||
@@ -233,10 +234,14 @@ MonoBehaviour:
|
||||
questMarker: {fileID: 0}
|
||||
radio: {fileID: 0}
|
||||
computerKeyboardKey: {fileID: 0}
|
||||
computerPrinter: {fileID: 0}
|
||||
printerInsertionHole: {fileID: 0}
|
||||
computerPrinter: {fileID: 0}
|
||||
shapeScanner: {fileID: 0}
|
||||
staticRadio: {fileID: 0}
|
||||
questMarkerPoint: {fileID: 0}
|
||||
radioAmount: 1
|
||||
movementPath: []
|
||||
moveSpeedPerSecond: 2
|
||||
--- !u!114 &1413215456818694348
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -459,6 +464,27 @@ MonoBehaviour:
|
||||
X: 0
|
||||
Y: 0
|
||||
Z: 0
|
||||
--- !u!135 &1179918406964740421
|
||||
SphereCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4663194936290788516}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 1
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Radius: 5
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &7802421088258943189
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -248,7 +248,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 90, y: 0, z: 360}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0.0000009536743, y: 0.014099985}
|
||||
m_AnchoredPosition: {x: 0.0000009536743, y: 0.0073}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!223 &6732376546868400302
|
||||
@@ -417,7 +417,7 @@ Transform:
|
||||
m_GameObject: {fileID: 8445441351388109183}
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.4, y: 0.02, z: 0.4}
|
||||
m_LocalScale: {x: 0.4, y: 0.012, z: 0.4}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 3870989277732630730}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
279
Assets/_PROJECT/Prefabs/ModelGeneration/ServingTray.prefab
Normal file
279
Assets/_PROJECT/Prefabs/ModelGeneration/ServingTray.prefab
Normal file
@@ -0,0 +1,279 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &33945096282833667
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4613209722915461822}
|
||||
- component: {fileID: 6192135053139835027}
|
||||
- component: {fileID: 1375442583061750018}
|
||||
- component: {fileID: 2161552460854040793}
|
||||
m_Layer: 0
|
||||
m_Name: Top
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4613209722915461822
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 33945096282833667}
|
||||
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.23551077, z: -0.00014617827}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 9161537809656587512}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &6192135053139835027
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 33945096282833667}
|
||||
m_Mesh: {fileID: 4493585093827132993, guid: 3d938fc5df676394d8a29eb15002c190, type: 3}
|
||||
--- !u!23 &1375442583061750018
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 33945096282833667}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 9101636318673992656, guid: 3d938fc5df676394d8a29eb15002c190, type: 3}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &2161552460854040793
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 33945096282833667}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: 4493585093827132993, guid: 3d938fc5df676394d8a29eb15002c190, type: 3}
|
||||
--- !u!1 &1579187116394808824
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 569075787185045977}
|
||||
m_Layer: 0
|
||||
m_Name: FoodSpawnPoint
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &569075787185045977
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1579187116394808824}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.1709, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 9161537809656587512}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &8296343995460317559
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5428513804157271965}
|
||||
- component: {fileID: 3650349036290197763}
|
||||
- component: {fileID: 5165251572813796828}
|
||||
- component: {fileID: 4954145746846201402}
|
||||
m_Layer: 0
|
||||
m_Name: Bottom
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5428513804157271965
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8296343995460317559}
|
||||
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: -0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 9161537809656587512}
|
||||
m_RootOrder: -1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &3650349036290197763
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8296343995460317559}
|
||||
m_Mesh: {fileID: -5495902117074765545, guid: 3d938fc5df676394d8a29eb15002c190, type: 3}
|
||||
--- !u!23 &5165251572813796828
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8296343995460317559}
|
||||
m_Enabled: 1
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 9101636318673992656, guid: 3d938fc5df676394d8a29eb15002c190, type: 3}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!64 &4954145746846201402
|
||||
MeshCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8296343995460317559}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 0
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 5
|
||||
m_Convex: 0
|
||||
m_CookingOptions: 30
|
||||
m_Mesh: {fileID: -5495902117074765545, guid: 3d938fc5df676394d8a29eb15002c190, type: 3}
|
||||
--- !u!1 &8390068347103116866
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 9161537809656587512}
|
||||
m_Layer: 0
|
||||
m_Name: ServingTray
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &9161537809656587512
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8390068347103116866}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0.131, z: 0.169}
|
||||
m_LocalScale: {x: 0.7446047, y: 0.7446047, z: 0.7446047}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 4613209722915461822}
|
||||
- {fileID: 5428513804157271965}
|
||||
- {fileID: 569075787185045977}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c43698824b8754f428a6677d8301a04c
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -29,7 +29,7 @@ Transform:
|
||||
m_GameObject: {fileID: 1659788510314838016}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.4, y: 0.35, z: 0.4}
|
||||
m_LocalScale: {x: 0.4, y: 0.38386, z: 0.4}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 4211436824399037528}
|
||||
@@ -149,7 +149,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4039766663692926199}
|
||||
m_LocalRotation: {x: -0, y: 0.000000014901158, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalPosition: {x: 0, y: -0.36, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -10,58 +10,72 @@ public class MicrophoneStand : MonoBehaviour
|
||||
|
||||
public FMODWhisperBridge fmodWhisperBridge;
|
||||
|
||||
public delegate void OnPlayerFinishedSpeakingDelegate();
|
||||
public event OnPlayerFinishedSpeakingDelegate OnPlayerFinishedSpeaking;
|
||||
public delegate void OnPlayerUsedMicrophoneDelegate();
|
||||
public event OnPlayerUsedMicrophoneDelegate OnPlayerUsedMicrophone;
|
||||
|
||||
[Header("Particle System Config")]
|
||||
public ParticleSystem particles;
|
||||
public float baseEmissionRate = 3;
|
||||
public float maxExtraEmissionRate = 50;
|
||||
|
||||
private ParticleSystem.EmissionModule particleEmission;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
microphoneOffStatus.SetActive(true);
|
||||
microphoneOnStatus.SetActive(false);
|
||||
|
||||
particleEmission = particles.emission;
|
||||
particleEmission.enabled = false;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
if (particleEmission.enabled)
|
||||
{
|
||||
particleEmission.rateOverTime = baseEmissionRate + fmodWhisperBridge.GetNormalizedVolume01() * maxExtraEmissionRate;
|
||||
}
|
||||
}
|
||||
|
||||
public void OnPlayerApproach()
|
||||
{
|
||||
fmodWhisperBridge.ActivateRecording();
|
||||
fmodWhisperBridge.OnWhisperSegmentUpdated += OnPlayerSpeechUpdated;
|
||||
fmodWhisperBridge.OnWhisperSegmentFinished += OnPlayerSpeechFinished;
|
||||
|
||||
microphoneOffStatus.SetActive(false);
|
||||
microphoneOnStatus.SetActive(true);
|
||||
particleEmission.enabled = true;
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
|
||||
fmodWhisperBridge.ActivateRecording();
|
||||
}
|
||||
|
||||
public void OnPlayerLeave()
|
||||
{
|
||||
fmodWhisperBridge.OnWhisperSegmentUpdated -= OnPlayerSpeechUpdated;
|
||||
fmodWhisperBridge.OnWhisperSegmentFinished -= OnPlayerSpeechFinished;
|
||||
fmodWhisperBridge.DeactivateRecording();
|
||||
|
||||
microphoneOffStatus.SetActive(true);
|
||||
microphoneOnStatus.SetActive(false);
|
||||
particleEmission.enabled = false;
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
|
||||
fmodWhisperBridge.DeactivateRecording();
|
||||
}
|
||||
|
||||
private void OnPlayerSpeechUpdated(string text)
|
||||
{
|
||||
outputText.text = text;
|
||||
OnPlayerFinishedSpeaking?.Invoke();
|
||||
OnPlayerUsedMicrophone?.Invoke();
|
||||
}
|
||||
|
||||
private void OnPlayerSpeechFinished(string playerText)
|
||||
private void OnPlayerSpeechFinished(string text)
|
||||
{
|
||||
OnPlayerFinishedSpeaking?.Invoke();
|
||||
outputText.text = text;
|
||||
OnPlayerUsedMicrophone?.Invoke();
|
||||
}
|
||||
|
||||
public string GetTextOutput()
|
||||
{
|
||||
return outputText.text;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ public class ModelDisplay : MonoBehaviour
|
||||
public float generatedObjectRotationSpeed = 10f;
|
||||
|
||||
private EventInstance printingSound;
|
||||
private ParticleSystem.EmissionModule particleEmission;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
@@ -23,6 +24,9 @@ public class ModelDisplay : MonoBehaviour
|
||||
printingSound.setParameterByName("3DPrinterPrintingJob", 1);
|
||||
printingSound.setParameterByName("Occlusion", 0);
|
||||
printingSound.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(displayPoint));
|
||||
|
||||
particleEmission = GetComponentInChildren<ParticleSystem>().emission;
|
||||
particleEmission.enabled = false;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
@@ -38,6 +42,7 @@ public class ModelDisplay : MonoBehaviour
|
||||
{
|
||||
printingSound.start();
|
||||
printingSound.setParameterByName("3DPrinterPrintingJob", 0);
|
||||
particleEmission.enabled = true;
|
||||
}
|
||||
|
||||
public void DisplayModel(GameObject modelObject)
|
||||
@@ -57,5 +62,6 @@ public class ModelDisplay : MonoBehaviour
|
||||
Model = modelObject;
|
||||
|
||||
printingSound.setParameterByName("3DPrinterPrintingJob", 1);
|
||||
particleEmission.enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,9 +4,9 @@ using System.Runtime.InteropServices;
|
||||
using UnityEngine;
|
||||
using FMOD;
|
||||
using FMODUnity;
|
||||
using Whisper; // WhisperManager, WhisperStream, WhisperResult
|
||||
using Whisper;
|
||||
using Whisper.Utils;
|
||||
using Debug = UnityEngine.Debug; // AudioChunk
|
||||
using Debug = UnityEngine.Debug;
|
||||
|
||||
/// <summary>
|
||||
/// FMOD mic is initialized once (Start) and runs continuously in a ring buffer.
|
||||
@@ -28,12 +28,6 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
public int channels = 1;
|
||||
[Range(1, 10)] public int bufferLengthSec = 5;
|
||||
|
||||
[Header("Loopback (monitor your voice)")]
|
||||
public bool playLoopback = true;
|
||||
[Tooltip("If true, loopback plays only while active; otherwise it’s always on.")]
|
||||
public bool loopbackOnlyWhenActive = true;
|
||||
[Range(0f, 2f)] public float loopbackVolume = 1.0f;
|
||||
|
||||
public delegate void OnWhisperSegmentUpdatedDelegate(string result);
|
||||
public event OnWhisperSegmentUpdatedDelegate OnWhisperSegmentUpdated;
|
||||
|
||||
@@ -44,7 +38,6 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
private FMOD.System _core;
|
||||
private Sound _recSound;
|
||||
private Channel _playChannel;
|
||||
private ChannelGroup _masterGroup;
|
||||
private uint _soundPcmLength; // in samples
|
||||
private int _nativeRate;
|
||||
private int _nativeChannels;
|
||||
@@ -54,7 +47,6 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
|
||||
// Whisper
|
||||
private WhisperStream _stream;
|
||||
private bool _streamStarted;
|
||||
|
||||
// temp conversion buffer
|
||||
private float[] _floatTmp = new float[0];
|
||||
@@ -64,6 +56,11 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
private bool isRecordingActivated = false;
|
||||
private bool _skipOneFeedFrame = false;
|
||||
|
||||
// --- Speech Volume Measurement ---
|
||||
private float currentVolumeRms = 0f; // Smoothed RMS for external access
|
||||
private float volumeSmoothing = 0.15f; // How fast the meter reacts (0.1–0.3 good)
|
||||
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
if (!whisper) whisper = FindObjectOfType<WhisperManager>();
|
||||
@@ -133,24 +130,6 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
_core.getRecordPosition(recordDriverId, out _lastRecordPos);
|
||||
Debug.Log("[FMOD→Whisper] Recording started.");
|
||||
|
||||
// Loopback channel (optional). Start once; pause when inactive if desired.
|
||||
_core.getMasterChannelGroup(out _masterGroup);
|
||||
if (playLoopback)
|
||||
{
|
||||
res = _core.playSound(_recSound, _masterGroup, false, out _playChannel);
|
||||
if (res == RESULT.OK && _playChannel.hasHandle())
|
||||
{
|
||||
_playChannel.setMode(MODE._2D);
|
||||
_playChannel.setVolume(loopbackVolume);
|
||||
if (loopbackOnlyWhenActive) _playChannel.setPaused(true); // keep muted until Activate
|
||||
Debug.Log("[FMOD→Whisper] Loopback playback ready.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning($"[FMOD→Whisper] playSound failed or channel invalid: {res}");
|
||||
}
|
||||
}
|
||||
|
||||
// No Whisper stream here. It will be created on ActivateRecording().
|
||||
await System.Threading.Tasks.Task.Yield();
|
||||
}
|
||||
@@ -174,6 +153,11 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
|
||||
int rate = (_nativeRate > 0) ? _nativeRate : desiredSampleRate;
|
||||
|
||||
if (_stream != null)
|
||||
{
|
||||
_stream.StopStream();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
_stream = await whisper.CreateStream(rate, _nativeChannels);
|
||||
@@ -182,7 +166,6 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
{
|
||||
Debug.LogError($"[FMOD→Whisper] CreateStream exception: {e}");
|
||||
_stream = null;
|
||||
_streamStarted = false;
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -203,16 +186,6 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
whisper.useVad = useVadInStream;
|
||||
|
||||
_stream.StartStream();
|
||||
_streamStarted = true;
|
||||
|
||||
|
||||
// --- NEW: Clear the ring buffer and reset read pointer ---
|
||||
// Pause loopback while we clear (optional, but avoids clicks)
|
||||
if (playLoopback && _playChannel.hasHandle())
|
||||
_playChannel.setPaused(true);
|
||||
|
||||
// Clear buffer bytes
|
||||
ClearRecordRingBuffer();
|
||||
|
||||
// Reset our read pointer to the current write head
|
||||
_core.getRecordPosition(recordDriverId, out _lastRecordPos);
|
||||
@@ -220,13 +193,8 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
// We’ll skip feeding for one frame to guarantee a clean start
|
||||
_skipOneFeedFrame = true;
|
||||
|
||||
// Unpause loopback if we want it active during recording
|
||||
if (playLoopback && _playChannel.hasHandle() && (!loopbackOnlyWhenActive || isRecordingActivated))
|
||||
_playChannel.setPaused(loopbackOnlyWhenActive ? false : _playChannel.getPaused(out var paused) == FMOD.RESULT.OK && paused ? false : false);
|
||||
|
||||
isRecordingActivated = true;
|
||||
Debug.Log("[FMOD→Whisper] Stream activated (buffer cleared; reading from current head).");
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -234,24 +202,32 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
/// </summary>
|
||||
public void DeactivateRecording()
|
||||
{
|
||||
if (!isRecordingActivated && !_streamStarted)
|
||||
if (!isRecordingActivated)
|
||||
return;
|
||||
|
||||
isRecordingActivated = false;
|
||||
}
|
||||
|
||||
// Pause loopback if it should only be active during recording
|
||||
if (playLoopback && loopbackOnlyWhenActive && _playChannel.hasHandle())
|
||||
_playChannel.setPaused(true);
|
||||
/// <summary>
|
||||
/// Returns current microphone level in dBFS (decibels relative to full-scale).
|
||||
/// 0 dBFS = digital clipping; normal speech is typically around -35 to -20 dBFS.
|
||||
/// </summary>
|
||||
public float GetCurrentVolumeDb()
|
||||
{
|
||||
// Guard from log(0)
|
||||
const float minRms = 1e-7f;
|
||||
float rms = Mathf.Clamp(currentVolumeRms, minRms, 1f);
|
||||
return 20f * Mathf.Log10(rms);
|
||||
}
|
||||
|
||||
// Tear down Whisper stream
|
||||
if (_streamStarted)
|
||||
{
|
||||
try { _stream.StopStream(); } catch { /* ignore */ }
|
||||
_streamStarted = false;
|
||||
}
|
||||
_stream = null;
|
||||
|
||||
Debug.Log("[FMOD→Whisper] Stream deactivated (Whisper stopped; FMOD still recording).");
|
||||
/// <summary>
|
||||
/// Returns a UI-friendly 0..1 loudness from the current dBFS value.
|
||||
/// Adjust the dB range to your content/environment if needed.
|
||||
/// </summary>
|
||||
public float GetNormalizedVolume01()
|
||||
{
|
||||
float db = GetCurrentVolumeDb(); // typically ~ -60 .. -15 during use
|
||||
return Mathf.Clamp01(Mathf.InverseLerp(-60f, -15f, db));
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@@ -261,8 +237,7 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
if (!_recSound.hasHandle()) return;
|
||||
|
||||
// Compute how many samples recorded since last frame.
|
||||
uint recPos;
|
||||
_core.getRecordPosition(recordDriverId, out recPos);
|
||||
_core.getRecordPosition(recordDriverId, out uint recPos);
|
||||
|
||||
uint deltaSamples = (recPos >= _lastRecordPos)
|
||||
? (recPos - _lastRecordPos)
|
||||
@@ -275,10 +250,6 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
return;
|
||||
}
|
||||
|
||||
// If not active, we *still* advance the ring (so we don't backlog data),
|
||||
// but we *don't* push chunks to Whisper.
|
||||
bool shouldFeed = isRecordingActivated && _streamStarted && _stream != null;
|
||||
|
||||
// Calculate byte range to lock (16-bit)
|
||||
uint bytesToRead = deltaSamples * (uint)_nativeChannels * 2; // 2 bytes per sample
|
||||
uint startBytes = _lastRecordPos * (uint)_nativeChannels * 2;
|
||||
@@ -295,11 +266,44 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
|
||||
try
|
||||
{
|
||||
if (shouldFeed && !_skipOneFeedFrame)
|
||||
float rmsAccumulator = 0f;
|
||||
int rmsSampleCount = 0;
|
||||
|
||||
// 1) Measure volume
|
||||
if (len1 > 0)
|
||||
{
|
||||
if (len1 > 0) CopyPcm16ToFloatAndFeed(p1, len1);
|
||||
if (len2 > 0) CopyPcm16ToFloatAndFeed(p2, len2);
|
||||
ComputeRmsFromPcm16(p1, len1, ref rmsAccumulator, ref rmsSampleCount);
|
||||
}
|
||||
if (len2 > 0)
|
||||
{
|
||||
ComputeRmsFromPcm16(p2, len2, ref rmsAccumulator, ref rmsSampleCount);
|
||||
}
|
||||
|
||||
if (rmsSampleCount > 0)
|
||||
{
|
||||
float rms = Mathf.Sqrt(rmsAccumulator / rmsSampleCount);
|
||||
|
||||
// Smooth the value
|
||||
currentVolumeRms = Mathf.Lerp(currentVolumeRms, rms, 1f - Mathf.Pow(1f - volumeSmoothing, Time.deltaTime * 60f));
|
||||
}
|
||||
|
||||
// 2) Feed audio to Whisper
|
||||
if (_stream != null)
|
||||
{
|
||||
if (isRecordingActivated && !_skipOneFeedFrame)
|
||||
{
|
||||
// Feed real mic
|
||||
if (len1 > 0) CopyPcm16ToFloatAndFeed(p1, len1);
|
||||
if (len2 > 0) CopyPcm16ToFloatAndFeed(p2, len2);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Feed same-size silence instead
|
||||
if (len1 > 0) FeedSilentChunk(len1);
|
||||
if (len2 > 0) FeedSilentChunk(len2);
|
||||
}
|
||||
}
|
||||
|
||||
// If skipping, we just discard this frame to ensure no stale data leaks.
|
||||
}
|
||||
finally
|
||||
@@ -310,12 +314,30 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
if (_skipOneFeedFrame) _skipOneFeedFrame = false;
|
||||
|
||||
_lastRecordPos = recPos;
|
||||
|
||||
}
|
||||
|
||||
private string PostProcessInput(string input)
|
||||
{
|
||||
return input.Replace("[silence]", "").Replace("[ Silence ]", "").Replace("BLANK_AUDIO", "").Replace("[", "").Replace("]", "").Trim();
|
||||
return input.Replace("[silence]", "").Replace("[ Silence ]", "").Replace("BLANK_AUDIO", "").Replace("[", "").Replace("]", "").Replace("END PLAYBACK", "").Trim();
|
||||
}
|
||||
|
||||
private void FeedSilentChunk(uint byteLen)
|
||||
{
|
||||
int samples = (int)(byteLen / 2);
|
||||
EnsureTmpCapacity(samples);
|
||||
|
||||
// fill existing _floatTmp with zeros (efficient)
|
||||
Array.Clear(_floatTmp, 0, samples);
|
||||
|
||||
var chunk = new AudioChunk
|
||||
{
|
||||
Data = _floatTmp.AsSpan(0, samples).ToArray(),
|
||||
Frequency = (_nativeRate > 0) ? _nativeRate : desiredSampleRate,
|
||||
Channels = _nativeChannels,
|
||||
IsVoiceDetected = false
|
||||
};
|
||||
|
||||
_stream.AddToStream(chunk);
|
||||
}
|
||||
|
||||
private void CopyPcm16ToFloatAndFeed(IntPtr src, uint byteLen)
|
||||
@@ -377,54 +399,30 @@ public class FMODWhisperBridge : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void ClearRecordRingBuffer()
|
||||
/// <summary>
|
||||
/// Computes RMS (root mean square) from a PCM16 block using only safe code.
|
||||
/// Uses the shared _shortOverlay buffer (no allocations).
|
||||
/// Accumulates results into accumulator + sampleCount.
|
||||
/// </summary>
|
||||
private void ComputeRmsFromPcm16(IntPtr src, uint byteLen, ref float accumulator, ref int sampleCount)
|
||||
{
|
||||
if (!_recSound.hasHandle() || _soundPcmLength == 0) return;
|
||||
// Number of PCM16 samples (2 bytes per sample)
|
||||
int samples = (int)(byteLen / 2);
|
||||
if (samples <= 0) return;
|
||||
|
||||
uint totalBytes = _soundPcmLength * (uint)_nativeChannels * 2; // PCM16
|
||||
IntPtr p1, p2;
|
||||
uint len1, len2;
|
||||
// Ensure overlay buffer exists & is large enough
|
||||
EnsureShortOverlay(samples, out short[] sBuf);
|
||||
|
||||
// Lock the whole buffer (start=0, length=totalBytes)
|
||||
var r = _recSound.@lock(0, totalBytes, out p1, out p2, out len1, out len2);
|
||||
if (r != FMOD.RESULT.OK)
|
||||
// Copy PCM16 into managed buffer (safe)
|
||||
Marshal.Copy(src, sBuf, 0, samples);
|
||||
|
||||
// Accumulate squared amplitude
|
||||
for (int i = 0; i < samples; i++)
|
||||
{
|
||||
Debug.LogWarning($"[FMOD→Whisper] Could not lock ring buffer to clear: {r}");
|
||||
return;
|
||||
float v = sBuf[i] / 32768f; // normalize to [-1..1]
|
||||
accumulator += v * v;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if (len1 > 0)
|
||||
{
|
||||
// zero p1
|
||||
// We’ll reuse a static zero array to avoid allocating huge buffers repeatedly
|
||||
ZeroMem(p1, (int)len1);
|
||||
}
|
||||
if (len2 > 0)
|
||||
{
|
||||
ZeroMem(p2, (int)len2);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
_recSound.unlock(p1, p2, len1, len2);
|
||||
}
|
||||
sampleCount += samples;
|
||||
}
|
||||
|
||||
// cheap zeroing helper (avoids allocating len-sized arrays each time)
|
||||
private static readonly byte[] _zeroChunk = new byte[16 * 1024]; // 16 KB
|
||||
private static void ZeroMem(IntPtr dst, int byteLen)
|
||||
{
|
||||
int offset = 0;
|
||||
while (byteLen > 0)
|
||||
{
|
||||
int n = Math.Min(_zeroChunk.Length, byteLen);
|
||||
Marshal.Copy(_zeroChunk, 0, dst + offset, n);
|
||||
offset += n;
|
||||
byteLen -= n;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ public class ModelGenerationUtils : MonoBehaviour
|
||||
{
|
||||
XROrigin xrOrigin = FindObjectOfType<XROrigin>(includeInactive: true);
|
||||
xrOrigin.transform.position = minigamePoints[0].position;
|
||||
xrOrigin.transform.rotation = minigamePoints[0].rotation;
|
||||
}
|
||||
|
||||
|
||||
@@ -43,12 +44,14 @@ public class ModelGenerationUtils : MonoBehaviour
|
||||
{
|
||||
XROrigin xrOrigin = FindObjectOfType<XROrigin>(includeInactive: true);
|
||||
xrOrigin.transform.position = minigamePoints[1].position;
|
||||
xrOrigin.transform.rotation = minigamePoints[1].rotation;
|
||||
}
|
||||
|
||||
if (Keyboard.current.digit3Key.wasPressedThisFrame)
|
||||
{
|
||||
XROrigin xrOrigin = FindObjectOfType<XROrigin>(includeInactive: true);
|
||||
xrOrigin.transform.position = minigamePoints[2].position;
|
||||
xrOrigin.transform.rotation = minigamePoints[2].rotation;
|
||||
}
|
||||
|
||||
if (Keyboard.current.digit0Key.wasPressedThisFrame)
|
||||
|
||||
@@ -15,6 +15,7 @@ public class ArcheryRangeNPC : NPCController
|
||||
public ModelDisplay modelDisplay;
|
||||
public float modelDisplaySize = 0.75f;
|
||||
public Transform startTargetQuestMarkerPoint;
|
||||
public KeyboardManager keyboardManager;
|
||||
|
||||
private Texture2D GeneratedTexture;
|
||||
|
||||
@@ -25,6 +26,8 @@ public class ArcheryRangeNPC : NPCController
|
||||
// 3 - player pressed the image generation button
|
||||
// 4 - player pressed the model generation button
|
||||
// 5 - model spawned into the game
|
||||
// 6 - round completed
|
||||
// 7 - name submitted
|
||||
private int state;
|
||||
|
||||
private void Awake()
|
||||
@@ -34,9 +37,11 @@ public class ArcheryRangeNPC : NPCController
|
||||
|
||||
private void Start()
|
||||
{
|
||||
microphoneStand.OnPlayerFinishedSpeaking += OnPlayerUsedMicrophone;
|
||||
microphoneStand.OnPlayerUsedMicrophone += OnPlayerUsedMicrophone;
|
||||
imageGenerationButton.OnButtonPressed += OnImageGenerationButtonPressed;
|
||||
modelGenerationButton.OnButtonPressed += OnModelGenerationButtonPressed;
|
||||
keyboardManager.OnActivate += OnRoundComplete;
|
||||
keyboardManager.OnSubmit += OnNameSubmitted;
|
||||
}
|
||||
|
||||
protected async override void OnPlayerApproach()
|
||||
@@ -62,8 +67,9 @@ public class ArcheryRangeNPC : NPCController
|
||||
|
||||
}
|
||||
|
||||
private void OnPlayerUsedMicrophone()
|
||||
private async void OnPlayerUsedMicrophone()
|
||||
{
|
||||
await Task.Delay(1500);
|
||||
if (state == 1)
|
||||
{
|
||||
SpeakVoiceLine(3);
|
||||
@@ -118,4 +124,23 @@ public class ArcheryRangeNPC : NPCController
|
||||
|
||||
modelGenerationButton.Deactivate();
|
||||
}
|
||||
|
||||
private void OnRoundComplete()
|
||||
{
|
||||
if (state == 5)
|
||||
{
|
||||
state = 6;
|
||||
SpeakVoiceLine(6);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void OnNameSubmitted()
|
||||
{
|
||||
if (state == 6)
|
||||
{
|
||||
state = 7;
|
||||
}
|
||||
SpeakVoiceLine(7);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,20 +6,28 @@ using UnityEngine.XR.Interaction.Toolkit;
|
||||
|
||||
public class CafeWaiterNPC : NPCController
|
||||
{
|
||||
[Header("Delta Cafe Minigame Config")]
|
||||
public FMODWhisperBridge fmodWhisperBridge;
|
||||
|
||||
public GameObject notepad;
|
||||
public TextMeshProUGUI notepadText;
|
||||
public PenWriter pen;
|
||||
|
||||
public Transform backRoom;
|
||||
public Transform plate;
|
||||
public float backRoomMovingTime = 5f;
|
||||
public Transform servingTray;
|
||||
public Transform servingTrayTop;
|
||||
public Transform servingTrayFoodSpawnPoint;
|
||||
public Transform servingTrayPresentingPosition;
|
||||
public float servingTrayTopLiftAmount = 0.5f;
|
||||
public float spawnedFoodDiameter = 0.5f;
|
||||
|
||||
public Transform backRoom;
|
||||
public float backRoomMovingTime = 5f;
|
||||
public int ignorePlayerCollisionLayer = 2;
|
||||
|
||||
private Vector3 notepadOriginalRotation;
|
||||
private Vector3 notepadFlippedRotation;
|
||||
private Vector3 servingTrayOriginalLocalPosition;
|
||||
private Vector3 servingTrayTopOriginalLocalPosition;
|
||||
private Vector3 startingPosition;
|
||||
|
||||
// states:
|
||||
@@ -35,15 +43,18 @@ public class CafeWaiterNPC : NPCController
|
||||
{
|
||||
state = 0;
|
||||
lastPlayerVoiceUpdateTime = Time.time;
|
||||
startingPosition = transform.position;
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
startingPosition = transform.position;
|
||||
notepadOriginalRotation = notepad.transform.localRotation.eulerAngles;
|
||||
notepadFlippedRotation = notepadOriginalRotation + new Vector3(0, 180, 0);
|
||||
servingTrayOriginalLocalPosition = servingTray.transform.localPosition;
|
||||
servingTrayTopOriginalLocalPosition = servingTrayTop.localPosition;
|
||||
notepad.SetActive(false);
|
||||
pen.gameObject.SetActive(false);
|
||||
servingTray.gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
protected override void OnPlayerApproach()
|
||||
@@ -71,10 +82,16 @@ public class CafeWaiterNPC : NPCController
|
||||
// If currently not bringing food and the player leaves, then go back to idle state
|
||||
if (state != 3)
|
||||
{
|
||||
notepad.transform.localRotation = Quaternion.Euler(notepadOriginalRotation);
|
||||
notepad.SetActive(false);
|
||||
pen.StopWriting();
|
||||
pen.gameObject.SetActive(false);
|
||||
notepad.transform.localRotation = Quaternion.Euler(notepadOriginalRotation);
|
||||
|
||||
servingTray.parent = transform;
|
||||
servingTray.localPosition = servingTrayOriginalLocalPosition;
|
||||
servingTrayTop.localPosition = servingTrayTopOriginalLocalPosition;
|
||||
servingTray.gameObject.SetActive(false);
|
||||
|
||||
state = 0;
|
||||
}
|
||||
}
|
||||
@@ -105,7 +122,7 @@ public class CafeWaiterNPC : NPCController
|
||||
} else if (state == 2)
|
||||
{
|
||||
fmodWhisperBridge.DeactivateRecording();
|
||||
bool positiveAnswer = playerText.ToLower().Contains("ye") || playerText.ToLower().Contains("correct") | playerText.ToLower().Contains("right");
|
||||
bool positiveAnswer = IsPlayerAnswerPositive(playerText);
|
||||
SpeakVoiceLine(positiveAnswer ? 2 : 3);
|
||||
// Flip notepad back
|
||||
notepad.transform.DOLocalRotate(notepadOriginalRotation, 0.5f).OnComplete(() =>
|
||||
@@ -142,7 +159,18 @@ public class CafeWaiterNPC : NPCController
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private bool IsPlayerAnswerPositive(string playerText)
|
||||
{
|
||||
string lower = playerText.ToLower();
|
||||
return lower.Contains("ye")
|
||||
|| lower.Contains("correct")
|
||||
|| lower.Contains("right")
|
||||
|| lower.Contains("sure")
|
||||
|| lower.Contains("of course")
|
||||
|| lower.Contains("okay")
|
||||
|| lower.Contains("yup")
|
||||
|| lower.Contains("affirmative");
|
||||
}
|
||||
|
||||
private async void BringFood()
|
||||
{
|
||||
@@ -157,20 +185,26 @@ public class CafeWaiterNPC : NPCController
|
||||
GameObject spawnedObject = await ModelGenerationUtils.Instance.SpawnModel(encodedModel, spawnedFoodDiameter);
|
||||
|
||||
// Come back
|
||||
servingTray.gameObject.SetActive(true);
|
||||
transform.DOMove(startingPosition, backRoomMovingTime).OnComplete(() =>
|
||||
{
|
||||
spawnedObject.transform.position = plate.position + new Vector3(0, 1f, 0);
|
||||
InitializeSpawnedObject(spawnedObject);
|
||||
servingTray.parent = null;
|
||||
servingTray.DOMove(servingTrayPresentingPosition.position, 1f).OnComplete(() =>
|
||||
{
|
||||
spawnedObject.transform.position = servingTrayFoodSpawnPoint.position;
|
||||
InitializeSpawnedObject(spawnedObject);
|
||||
servingTrayTop.DOLocalMove(servingTrayTop.localPosition + new Vector3(0, servingTrayTopLiftAmount, 0), 1f);
|
||||
|
||||
SpeakVoiceLine(4);
|
||||
|
||||
state = 4;
|
||||
SpeakVoiceLine(4);
|
||||
state = 4;
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
private void InitializeSpawnedObject(GameObject spawnedObject)
|
||||
{
|
||||
Rigidbody rigidbody = spawnedObject.AddComponent<Rigidbody>();
|
||||
rigidbody.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
|
||||
|
||||
//spawnedObject.AddComponent<NetworkObject>();
|
||||
//spawnedObject.AddComponent<NetworkTransform>();
|
||||
|
||||
@@ -26,25 +26,13 @@ public abstract class NPCController : MonoBehaviour
|
||||
|
||||
private float[] rmsCurve;
|
||||
private EventInstance currentVoicelineEvent;
|
||||
private bool isSpeaking;
|
||||
private float smoothed;
|
||||
|
||||
// If you change RMS window in Python, update this
|
||||
private const float FRAME_DURATION = 0.02f;
|
||||
private float sampleRate = 1f / FRAME_DURATION; // RMS samples per second (20ms windows)
|
||||
private readonly float sampleRate = 1f / FRAME_DURATION; // RMS samples per second (20ms windows)
|
||||
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Awake()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
@@ -65,7 +53,7 @@ public abstract class NPCController : MonoBehaviour
|
||||
}
|
||||
}
|
||||
|
||||
if (isSpeaking && rmsCurve != null && currentVoicelineEvent.isValid())
|
||||
if (rmsCurve != null && currentVoicelineEvent.isValid())
|
||||
{
|
||||
AnimateMouth();
|
||||
}
|
||||
@@ -105,30 +93,14 @@ public abstract class NPCController : MonoBehaviour
|
||||
mouth.localScale = s;
|
||||
}
|
||||
|
||||
|
||||
private void StopSpeaking()
|
||||
{
|
||||
isSpeaking = false;
|
||||
smoothed = inverted ? maxScaleY : minScaleY;
|
||||
|
||||
if (mouth != null)
|
||||
{
|
||||
var scale = mouth.localScale;
|
||||
scale.y = smoothed;
|
||||
mouth.localScale = scale;
|
||||
}
|
||||
|
||||
currentVoicelineEvent.release();
|
||||
}
|
||||
|
||||
public void PlayerApproach(Transform player) {
|
||||
playerTransform = player;
|
||||
public void PlayerApproach() {
|
||||
|
||||
OnPlayerApproach();
|
||||
}
|
||||
|
||||
public void PlayerLeave()
|
||||
{
|
||||
playerTransform = null;
|
||||
|
||||
OnPlayerLeave();
|
||||
}
|
||||
|
||||
@@ -136,6 +108,22 @@ public abstract class NPCController : MonoBehaviour
|
||||
|
||||
protected virtual void OnPlayerLeave() {}
|
||||
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (other.gameObject.tag == "Player Head")
|
||||
{
|
||||
playerTransform = other.transform;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
if (other.gameObject.tag == "Player Head")
|
||||
{
|
||||
playerTransform = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void SpeakVoiceLine(int voiceLineId, GameObject emitter = null, float radioAmount = 0f)
|
||||
{
|
||||
if (voiceLineId < 0 || voiceLineId >= voiceLineKeys.Length)
|
||||
@@ -152,21 +140,15 @@ public abstract class NPCController : MonoBehaviour
|
||||
|
||||
LoadCurve(key); // load RMS data
|
||||
|
||||
emitter = emitter ?? gameObject;
|
||||
emitter = emitter != null ? emitter : gameObject;
|
||||
currentVoicelineEvent = AudioManager.Instance.PlayDialogue(characterSpecificFolder + "/" + key, emitter, radioAmount);
|
||||
if (!currentVoicelineEvent.isValid())
|
||||
{
|
||||
Debug.LogError("Failed to start dialogue event.");
|
||||
return;
|
||||
}
|
||||
isSpeaking = true;
|
||||
|
||||
// Stop mouth on end
|
||||
float voicelineDuration = rmsCurve.Length * FRAME_DURATION;
|
||||
Invoke(nameof(StopSpeaking), voicelineDuration + 0.1f);
|
||||
}
|
||||
|
||||
|
||||
// ---------------------------
|
||||
// Load RMS Timeline (.txt)
|
||||
// ---------------------------
|
||||
|
||||
@@ -24,7 +24,7 @@ public class NPCTriggerArea : MonoBehaviour
|
||||
if (isEnter && other.gameObject.tag == "Player Head")
|
||||
{
|
||||
|
||||
npcController.PlayerApproach(other.transform);
|
||||
npcController.PlayerApproach();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using DG.Tweening;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -7,12 +7,15 @@ public class ShapeDetectionNPC : NPCController
|
||||
[Header("Shape Detection Minigame Config")]
|
||||
public QuestMarker questMarker;
|
||||
public RadioTransmitter radio;
|
||||
public Transform computerKeyboardKey;
|
||||
public ComputerPrinter computerPrinter;
|
||||
public PushableButton computerKeyboardKey;
|
||||
public Printer3DInputHole printerInsertionHole;
|
||||
public Texture2D GeneratedTexture { get; private set; }
|
||||
public ComputerPrinter computerPrinter;
|
||||
public ShapeScanner shapeScanner;
|
||||
public GameObject staticRadio;
|
||||
public Transform questMarkerPoint;
|
||||
public float radioAmount = 1f;
|
||||
public Transform[] movementPath;
|
||||
public float moveSpeedPerSecond = 2f;
|
||||
|
||||
|
||||
// states:
|
||||
@@ -22,6 +25,9 @@ public class ShapeDetectionNPC : NPCController
|
||||
// 3 - player spoke into the radio
|
||||
// 4 - player pressed enter on keyboard
|
||||
// 5 - player inserted picture into printer
|
||||
// 6 - player completed first shape scanner config
|
||||
// 7 - shape scanner completed
|
||||
// 8 - moving away
|
||||
private int state;
|
||||
private float lastPlayerApproachTime;
|
||||
|
||||
@@ -35,8 +41,10 @@ public class ShapeDetectionNPC : NPCController
|
||||
{
|
||||
radio.OnPlayerPickUp += OnPlayerPickedUpRadio;
|
||||
radio.OnPlayerFinishedSpeaking += OnPlayerSpokeIntoRadio;
|
||||
computerPrinter.OnImagePrinted += OnPlayerPrintedImage;
|
||||
printerInsertionHole.OnPlayerInsertedPrintable += OnPlayerInitiatedPrinting;
|
||||
computerPrinter.OnImagePrinted += OnPlayerPrintedImage;
|
||||
shapeScanner.OnConfigCompleted += OnPlayerCompletedFirstConfiguration;
|
||||
shapeScanner.OnAllCompleted += OnShapeScannerCompleted;
|
||||
}
|
||||
|
||||
protected async override void OnPlayerApproach()
|
||||
@@ -100,7 +108,8 @@ public class ShapeDetectionNPC : NPCController
|
||||
{
|
||||
SpeakVoiceLine(3, radio.gameObject, radioAmount);
|
||||
state = 3;
|
||||
questMarker.MoveTo(computerKeyboardKey);
|
||||
questMarker.MoveTo(computerKeyboardKey.transform);
|
||||
computerKeyboardKey.Deactivate();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,4 +132,48 @@ public class ShapeDetectionNPC : NPCController
|
||||
questMarker.MoveTo(shapeScanner.transform, true);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPlayerCompletedFirstConfiguration()
|
||||
{
|
||||
if (state == 5)
|
||||
{
|
||||
SpeakVoiceLine(6, radio.gameObject, radioAmount);
|
||||
state = 6;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnShapeScannerCompleted()
|
||||
{
|
||||
if (state == 6)
|
||||
{
|
||||
state = 7;
|
||||
questMarker.MoveTo(questMarkerPoint);
|
||||
}
|
||||
}
|
||||
|
||||
private void MoveToNextPoint(int pointIndex)
|
||||
{
|
||||
Transform nextPoint = movementPath[pointIndex];
|
||||
float moveDuration = (nextPoint.position - transform.position).magnitude / moveSpeedPerSecond;
|
||||
transform.DOMove(nextPoint.position, moveDuration).SetEase(Ease.Linear).OnComplete(() =>
|
||||
{
|
||||
if (pointIndex < movementPath.Length - 1)
|
||||
{
|
||||
MoveToNextPoint(pointIndex + 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public async void OnPlayerEnteredRoom()
|
||||
{
|
||||
if (state == 7)
|
||||
{
|
||||
state = 8;
|
||||
staticRadio.SetActive(false);
|
||||
questMarker.gameObject.SetActive(false);
|
||||
SpeakVoiceLine(7, gameObject, 0);
|
||||
await Task.Delay(6500);
|
||||
MoveToNextPoint(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,15 +12,21 @@ public class ReleasableButton : MonoBehaviour
|
||||
public float moveDuration = 0.25f;
|
||||
public float moveAmount = 0.05f;
|
||||
|
||||
private bool isLocked;
|
||||
private float upPositionY;
|
||||
private float downPositionY;
|
||||
private bool isButtonDown;
|
||||
|
||||
// button state:
|
||||
// 0 - up
|
||||
// 1 - down
|
||||
// 2 - moving
|
||||
private int buttonState;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
upPositionY = movableParts.localPosition.y;
|
||||
downPositionY = movableParts.localPosition.y - moveAmount;
|
||||
isButtonDown = false;
|
||||
buttonState = 0;
|
||||
}
|
||||
|
||||
// Start is called before the first frame update
|
||||
@@ -37,7 +43,8 @@ public class ReleasableButton : MonoBehaviour
|
||||
|
||||
private void OnTriggerEnter(Collider collider)
|
||||
{
|
||||
if (!isButtonDown && collider.gameObject.tag.EndsWith("Hand"))
|
||||
// if button is up, start moving down
|
||||
if (buttonState == 0 &&!isLocked && collider.gameObject.tag.EndsWith("Hand"))
|
||||
{
|
||||
Activate();
|
||||
OnButtonPressed?.Invoke();
|
||||
@@ -46,7 +53,8 @@ public class ReleasableButton : MonoBehaviour
|
||||
|
||||
private void OnTriggerExit(Collider collider)
|
||||
{
|
||||
if (isButtonDown && collider.gameObject.tag.EndsWith("Hand"))
|
||||
// if button is down, start moving up
|
||||
if (buttonState == 1 && !isLocked && collider.gameObject.tag.EndsWith("Hand"))
|
||||
{
|
||||
Deactivate();
|
||||
OnButtonReleased?.Invoke();
|
||||
@@ -55,15 +63,33 @@ public class ReleasableButton : MonoBehaviour
|
||||
|
||||
private void Activate()
|
||||
{
|
||||
movableParts.DOLocalMoveY(downPositionY, moveDuration);
|
||||
isButtonDown = true;
|
||||
buttonState = 2;
|
||||
movableParts.DOLocalMoveY(downPositionY, moveDuration).OnComplete(() =>
|
||||
{
|
||||
buttonState = 1;
|
||||
});
|
||||
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Click, gameObject);
|
||||
}
|
||||
|
||||
private void Deactivate()
|
||||
{
|
||||
movableParts.DOLocalMoveY(upPositionY, moveDuration);
|
||||
isButtonDown = false;
|
||||
buttonState = 2;
|
||||
movableParts.DOLocalMoveY(upPositionY, moveDuration).OnComplete(() =>
|
||||
{
|
||||
buttonState = 0;
|
||||
});
|
||||
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.Click, gameObject);
|
||||
}
|
||||
|
||||
public void Lock()
|
||||
{
|
||||
isLocked = true;
|
||||
}
|
||||
|
||||
public void Unlock()
|
||||
{
|
||||
isLocked = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class NPCFinalTriggerArea : MonoBehaviour
|
||||
{
|
||||
public ShapeDetectionNPC npc;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (other.gameObject.tag == "Player Head")
|
||||
{
|
||||
npc.OnPlayerEnteredRoom();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3a356edc14b3aeb48b95081f0d876053
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -11,7 +11,7 @@ public class Printer3D : MonoBehaviour
|
||||
|
||||
private bool isPrinting = false;
|
||||
private EventInstance printingSound;
|
||||
private GameObject GeneratedModel;
|
||||
private ParticleSystem.EmissionModule particleEmission;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
@@ -20,6 +20,9 @@ public class Printer3D : MonoBehaviour
|
||||
printingSound.setParameterByName("3DPrinterPrintingJob", 1);
|
||||
printingSound.setParameterByName("Occlusion", 0);
|
||||
printingSound.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(spawnPoint));
|
||||
|
||||
particleEmission = GetComponentInChildren<ParticleSystem>().emission;
|
||||
particleEmission.enabled = false;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
@@ -33,26 +36,22 @@ public class Printer3D : MonoBehaviour
|
||||
isPrinting = true;
|
||||
printingSound.start();
|
||||
printingSound.setParameterByName("3DPrinterPrintingJob", 0);
|
||||
particleEmission.enabled = true;
|
||||
|
||||
string encodedTexture = Convert.ToBase64String(texture.EncodeToJPG());
|
||||
byte[] encodedModel = await TrellisClient.Instance.GenerateModel(encodedTexture);
|
||||
|
||||
GameObject spawnedObject = await ModelGenerationUtils.Instance.SpawnModel(encodedModel, printedObjectSize);
|
||||
InitializeSpawnedObject(spawnedObject);
|
||||
if (GeneratedModel != null)
|
||||
{
|
||||
// Destroy previous generated object (first move out of ShapeScanner to trigger OnTriggerExit
|
||||
GeneratedModel.transform.position = Vector3.zero;
|
||||
}
|
||||
GeneratedModel = spawnedObject;
|
||||
|
||||
printingSound.setParameterByName("3DPrinterPrintingJob", 1);
|
||||
particleEmission.enabled = false;
|
||||
isPrinting = false;
|
||||
}
|
||||
|
||||
private void InitializeSpawnedObject(GameObject spawnedObject)
|
||||
{
|
||||
GameObject spawnedObjectParent = new GameObject("SpawnedModelParent");
|
||||
GameObject spawnedObjectParent = new("SpawnedModelParent");
|
||||
spawnedObjectParent.transform.parent = spawnPoint;
|
||||
spawnedObjectParent.transform.position = spawnPoint.transform.position;
|
||||
spawnedObjectParent.layer = ignorePlayerCollisionLayer;
|
||||
|
||||
@@ -40,7 +40,6 @@ public class Printer3DInputHole : MonoBehaviour
|
||||
{
|
||||
ReleaseFromPlayer(printable);
|
||||
InsertPrintable(printable);
|
||||
OnPlayerInsertedPrintable?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -82,6 +81,7 @@ public class Printer3DInputHole : MonoBehaviour
|
||||
{
|
||||
printer.PrintObject(printable.GetTexture());
|
||||
Destroy(printable.gameObject);
|
||||
OnPlayerInsertedPrintable?.Invoke();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
using System.Threading.Tasks;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.XR.Interaction.Toolkit;
|
||||
@@ -14,49 +15,88 @@ public class RadioTransmitter : XRGrabInteractable
|
||||
public ReleasableButton radioButton;
|
||||
public TextMeshProUGUI computerScreen;
|
||||
|
||||
[Header("Particle System Config")]
|
||||
public ParticleSystem particles;
|
||||
public float baseEmissionRate = 3;
|
||||
public float maxExtraEmissionRate = 50;
|
||||
|
||||
private bool isRecording;
|
||||
private ParticleSystem.EmissionModule particleEmission;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
radioButton.OnButtonPressed += OnRadioButtonPressed;
|
||||
radioButton.OnButtonReleased += OnRadioButtonReleased;
|
||||
radioButton.Lock();
|
||||
isRecording = false;
|
||||
|
||||
particleEmission = particles.emission;
|
||||
particleEmission.enabled = false;
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
if (particleEmission.enabled)
|
||||
{
|
||||
particles.transform.LookAt(computerScreen.transform.position);
|
||||
if (isRecording)
|
||||
{
|
||||
particleEmission.rateOverTime = baseEmissionRate + fmodWhisperBridge.GetNormalizedVolume01() * maxExtraEmissionRate;
|
||||
} else
|
||||
{
|
||||
particleEmission.rateOverTime = baseEmissionRate;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnSelectEntered(SelectEnterEventArgs args)
|
||||
protected async override void OnSelectEntered(SelectEnterEventArgs args)
|
||||
{
|
||||
base.OnSelectEntered(args);
|
||||
OnPlayerPickUp?.Invoke();
|
||||
|
||||
await Task.Delay(100);
|
||||
radioButton.Unlock();
|
||||
}
|
||||
|
||||
protected override void OnSelectExited(SelectExitEventArgs args)
|
||||
{
|
||||
base.OnSelectExited(args);
|
||||
radioButton.Lock();
|
||||
}
|
||||
|
||||
private void OnRadioButtonPressed()
|
||||
{
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
|
||||
fmodWhisperBridge.OnWhisperSegmentUpdated += OnPlayerSpeechUpdated;
|
||||
fmodWhisperBridge.OnWhisperSegmentFinished += OnPlayerSpeechFinished;
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
|
||||
fmodWhisperBridge.ActivateRecording();
|
||||
|
||||
isRecording = true;
|
||||
particleEmission.enabled = true;
|
||||
}
|
||||
|
||||
private void OnRadioButtonReleased()
|
||||
{
|
||||
fmodWhisperBridge.OnWhisperSegmentUpdated -= OnPlayerSpeechUpdated;
|
||||
fmodWhisperBridge.OnWhisperSegmentFinished -= OnPlayerSpeechFinished;
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
|
||||
fmodWhisperBridge.DeactivateRecording();
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
|
||||
|
||||
isRecording = false;
|
||||
}
|
||||
|
||||
private void OnPlayerSpeechUpdated(string text)
|
||||
{
|
||||
computerScreen.text = text;
|
||||
OnPlayerFinishedSpeaking?.Invoke();
|
||||
}
|
||||
|
||||
private void OnPlayerSpeechFinished(string playerText)
|
||||
{
|
||||
computerScreen.text = playerText;
|
||||
OnPlayerFinishedSpeaking?.Invoke();
|
||||
fmodWhisperBridge.OnWhisperSegmentUpdated -= OnPlayerSpeechUpdated;
|
||||
fmodWhisperBridge.OnWhisperSegmentFinished -= OnPlayerSpeechFinished;
|
||||
|
||||
particleEmission.enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.XR.Interaction.Toolkit;
|
||||
|
||||
|
||||
[Serializable]
|
||||
public class BoolRow
|
||||
{
|
||||
public List<bool> cells = new();
|
||||
|
||||
public BoolRow(List<bool> cells)
|
||||
{
|
||||
this.cells = cells;
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
@@ -17,93 +24,95 @@ public class ShapeScannerConfiguration
|
||||
public int columns = 6;
|
||||
public float requiredCorrectPercentage = 80.0f;
|
||||
public List<BoolRow> rows = new();
|
||||
public ShapeScannerConfiguration(int columns, float requiredCorrectPercentage, List<BoolRow> rows)
|
||||
{
|
||||
this.columns = columns;
|
||||
this.requiredCorrectPercentage = requiredCorrectPercentage;
|
||||
this.rows = rows;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class ShapeScanner : MonoBehaviour
|
||||
{
|
||||
public List<ShapeScannerConfiguration> configurations = new List<ShapeScannerConfiguration>();
|
||||
public delegate void OnConfigCompletedDelegate();
|
||||
public event OnConfigCompletedDelegate OnConfigCompleted;
|
||||
public delegate void OnAllCompletedDelegate();
|
||||
public event OnAllCompletedDelegate OnAllCompleted;
|
||||
|
||||
[Header("Static References")]
|
||||
public List<ShapeScannerConfiguration> configurations = new();
|
||||
public ShapeScannerRay rayPrefab;
|
||||
public Transform raySpawnCorner1;
|
||||
public Transform raySpawnCorner2;
|
||||
public Transform rayParent;
|
||||
public TextMeshProUGUI currentConfigurationDisplay;
|
||||
public TextMeshProUGUI correctPercentageDisplay;
|
||||
public ParticleSystem particles;
|
||||
public XRInteractionManager interactionManager;
|
||||
|
||||
[Header("Materials")]
|
||||
public Material requiredAndActive;
|
||||
public Material requiredAndPassive;
|
||||
public Material notRequiredAndActive;
|
||||
public Material notRequiredAndPassive;
|
||||
|
||||
private List<GameObject> existingRays;
|
||||
[Header("On Completion")]
|
||||
public LineRenderer lineRenderer;
|
||||
public Transform lineStart;
|
||||
public Transform lineEnd;
|
||||
public MeshRenderer activatableRenderer;
|
||||
public Material activatableActiveMaterial;
|
||||
public HingeJoint doorJoint;
|
||||
public Collider doorInvisibleWall;
|
||||
|
||||
private List<ShapeScannerRay> existingRays;
|
||||
private float raySpawnDistanceX;
|
||||
private float raySpawnDistanceZ;
|
||||
private int currentConfiguration;
|
||||
private int rayCount;
|
||||
private int correctRayStates;
|
||||
|
||||
private GameObject currentlyScannableObject;
|
||||
private int totalRayCount;
|
||||
private int correctRayCount;
|
||||
private bool isCompleted;
|
||||
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Start()
|
||||
{
|
||||
existingRays = new List<GameObject>();
|
||||
existingRays = new List<ShapeScannerRay>();
|
||||
raySpawnDistanceX = raySpawnCorner2.localPosition.x - raySpawnCorner1.localPosition.x;
|
||||
raySpawnDistanceZ = raySpawnCorner2.localPosition.z - raySpawnCorner1.localPosition.z;
|
||||
|
||||
lineRenderer.enabled = false;
|
||||
isCompleted = false;
|
||||
currentConfiguration = 0;
|
||||
InitializeConfiguration();
|
||||
InitializeConfiguration(configurations[0]);
|
||||
UpdateCurrentConfigurationDisplay(currentConfiguration);
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (other.tag == rayPrefab.scannableTag)
|
||||
if (lineRenderer.enabled)
|
||||
{
|
||||
currentlyScannableObject = other.gameObject;
|
||||
lineRenderer.SetPosition(0, lineStart.position);
|
||||
lineRenderer.SetPosition(1, lineEnd.position);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerExit(Collider other)
|
||||
private void InitializeConfiguration(ShapeScannerConfiguration configuration)
|
||||
{
|
||||
if (other.tag == rayPrefab.scannableTag)
|
||||
{
|
||||
currentlyScannableObject = null;
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeConfiguration()
|
||||
{
|
||||
// Delete all existing rays first
|
||||
foreach (GameObject ray in existingRays)
|
||||
{
|
||||
Destroy(ray);
|
||||
}
|
||||
if (currentlyScannableObject != null)
|
||||
{
|
||||
currentlyScannableObject.transform.position = Vector3.zero;
|
||||
Destroy(currentlyScannableObject);
|
||||
}
|
||||
|
||||
ShapeScannerConfiguration configuration = configurations[currentConfiguration];
|
||||
// Create rays
|
||||
int rayRowCount = configuration.rows.Count;
|
||||
for (int i = 0; i < rayRowCount; i++)
|
||||
{
|
||||
float rayPosX = raySpawnCorner1.localPosition.x + i * raySpawnDistanceX / (rayRowCount - 1);
|
||||
float rayPosZ = raySpawnCorner1.localPosition.z + i * raySpawnDistanceZ / (rayRowCount - 1);
|
||||
for (int j = 0; j < rayRowCount; j++)
|
||||
{
|
||||
// Local position
|
||||
float rayPosZ = raySpawnCorner1.localPosition.z + j * raySpawnDistanceZ / (rayRowCount - 1);
|
||||
float rayPosX = raySpawnCorner1.localPosition.x + j * raySpawnDistanceX / (rayRowCount - 1);
|
||||
Vector3 rayPos = new Vector3(rayPosX, 0, rayPosZ);
|
||||
ShapeScannerRay ray = Instantiate(rayPrefab, rayParent);
|
||||
ray.transform.localPosition = rayPos;
|
||||
existingRays.Add(ray.gameObject);
|
||||
existingRays.Add(ray);
|
||||
|
||||
bool rayCollisionRequired = configuration.rows[i].cells[j];
|
||||
if (rayCollisionRequired)
|
||||
@@ -117,41 +126,88 @@ public class ShapeScanner : MonoBehaviour
|
||||
}
|
||||
}
|
||||
// Count total rays and required collision rays
|
||||
rayCount = configuration.rows.SelectMany(row => row.cells).Count();
|
||||
correctRayStates = configuration.rows.SelectMany(row => row.cells).Count(cell => !cell);
|
||||
UpdateDisplay(calculateCorrectPercentage());
|
||||
totalRayCount = configuration.rows.SelectMany(row => row.cells).Count();
|
||||
correctRayCount = configuration.rows.SelectMany(row => row.cells).Count(cell => !cell);
|
||||
|
||||
float percentage = CalculateCorrectPercentage();
|
||||
UpdateDisplay(percentage);
|
||||
}
|
||||
|
||||
private float calculateCorrectPercentage()
|
||||
private void OnConfigurationComplete()
|
||||
{
|
||||
return Mathf.RoundToInt((float)correctRayStates / rayCount * 100);
|
||||
// Destroy colliding scannable objects
|
||||
HashSet<GameObject> allCollidingObjects = new();
|
||||
foreach (ShapeScannerRay ray in existingRays)
|
||||
{
|
||||
allCollidingObjects.UnionWith(ray.GetCollidingObjects());
|
||||
}
|
||||
foreach (GameObject collidingObject in allCollidingObjects)
|
||||
{
|
||||
// Release player holding it
|
||||
var grab = collidingObject.GetComponent<XRGrabInteractable>();
|
||||
if (grab != null && grab.isSelected)
|
||||
{
|
||||
grab.enabled = false;
|
||||
}
|
||||
collidingObject.transform.position = Vector3.zero;
|
||||
Destroy(collidingObject);
|
||||
}
|
||||
|
||||
// Destroy all existing rays
|
||||
foreach (ShapeScannerRay ray in existingRays)
|
||||
{
|
||||
Destroy(ray.gameObject);
|
||||
}
|
||||
existingRays.Clear();
|
||||
correctRayCount = 0;
|
||||
|
||||
// Play sound effect and emit particles
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.ShapeScannerSuccess, gameObject);
|
||||
if (!particles.isPlaying) particles.Play();
|
||||
particles.Emit(100);
|
||||
|
||||
OnConfigCompleted?.Invoke();
|
||||
}
|
||||
|
||||
public void IncrementCorrectRayCount()
|
||||
private float CalculateCorrectPercentage()
|
||||
{
|
||||
correctRayStates++;
|
||||
float correctPercentage = calculateCorrectPercentage();
|
||||
return (float) correctRayCount / totalRayCount * 100;
|
||||
}
|
||||
|
||||
public async void IncrementCorrectRayCount()
|
||||
{
|
||||
correctRayCount++;
|
||||
float correctPercentage = CalculateCorrectPercentage();
|
||||
UpdateDisplay(correctPercentage);
|
||||
if (isCompleted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (correctPercentage >= configurations[currentConfiguration].requiredCorrectPercentage)
|
||||
{
|
||||
OnConfigurationComplete();
|
||||
await Task.Delay(1000);
|
||||
|
||||
UpdateCurrentConfigurationDisplay(currentConfiguration + 1);
|
||||
if (currentConfiguration + 1 < configurations.Count)
|
||||
{
|
||||
currentConfiguration++;
|
||||
InitializeConfiguration();
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.ShapeScannerSuccess, gameObject);
|
||||
InitializeConfiguration(configurations[currentConfiguration]);
|
||||
} else
|
||||
{
|
||||
Debug.Log("Shape checker completed");
|
||||
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.ShapeScannerSuccess, gameObject);
|
||||
// Initialize configuration with no rays requiring collision
|
||||
List<BoolRow> rows = Enumerable.Repeat(new BoolRow(Enumerable.Repeat(false, 6).ToList()), 6).ToList();
|
||||
ShapeScannerConfiguration configuration = new ShapeScannerConfiguration(6, 100, rows);
|
||||
InitializeConfiguration(configuration);
|
||||
OnCompleteAll();
|
||||
}
|
||||
}
|
||||
UpdateDisplay(correctPercentage);
|
||||
}
|
||||
|
||||
public void DecrementCorrectRayCount()
|
||||
{
|
||||
correctRayStates--;
|
||||
UpdateDisplay(calculateCorrectPercentage());
|
||||
correctRayCount--;
|
||||
UpdateDisplay(CalculateCorrectPercentage());
|
||||
}
|
||||
|
||||
private void UpdateDisplay(float percentage)
|
||||
@@ -163,4 +219,26 @@ public class ShapeScanner : MonoBehaviour
|
||||
{
|
||||
currentConfigurationDisplay.text = confNumber.ToString() + " / " + configurations.Count;
|
||||
}
|
||||
|
||||
private void OnCompleteAll()
|
||||
{
|
||||
isCompleted = true;
|
||||
|
||||
// Change card reader color to green
|
||||
activatableRenderer.material = activatableActiveMaterial;
|
||||
|
||||
// Enable door to be opened
|
||||
JointLimits doorJointLimits = doorJoint.limits;
|
||||
doorJointLimits.min = -90f;
|
||||
doorJointLimits.max = 90f;
|
||||
doorJoint.limits = doorJointLimits;
|
||||
|
||||
// Disable invisible wall
|
||||
doorInvisibleWall.enabled = false;
|
||||
|
||||
// Create line renderer from shape scanner to door card reader
|
||||
lineRenderer.enabled = true;
|
||||
|
||||
OnAllCompleted?.Invoke();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,11 +10,13 @@ public class ShapeScannerRay : MonoBehaviour
|
||||
|
||||
private ShapeScanner _scanner;
|
||||
private MeshRenderer[] meshRenderers;
|
||||
private HashSet<GameObject> collidingObjects;
|
||||
private bool _collisionRequired;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
meshRenderers = GetComponentsInChildren<MeshRenderer>();
|
||||
collidingObjects = new HashSet<GameObject>();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
@@ -38,38 +40,55 @@ public class ShapeScannerRay : MonoBehaviour
|
||||
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (other.gameObject.tag == scannableTag)
|
||||
if (other.gameObject.CompareTag(scannableTag))
|
||||
{
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
GameObject parent = other.transform.parent.gameObject;
|
||||
collidingObjects.Add(parent);
|
||||
// Only activate when this was the first object that entered collision
|
||||
if (collidingObjects.Count == 1)
|
||||
{
|
||||
meshRenderer.material = _activeMaterial;
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
{
|
||||
meshRenderer.material = _activeMaterial;
|
||||
}
|
||||
if (_collisionRequired)
|
||||
{
|
||||
_scanner.IncrementCorrectRayCount();
|
||||
}
|
||||
else
|
||||
{
|
||||
_scanner.DecrementCorrectRayCount();
|
||||
}
|
||||
}
|
||||
if (_collisionRequired)
|
||||
{
|
||||
_scanner.IncrementCorrectRayCount();
|
||||
} else
|
||||
{
|
||||
_scanner.DecrementCorrectRayCount();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
if (other.gameObject.tag == "ShapeScannable")
|
||||
if (other.gameObject.CompareTag(scannableTag))
|
||||
{
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
GameObject parent = other.transform.parent.gameObject;
|
||||
collidingObjects.Remove(parent);
|
||||
if (collidingObjects.Count == 0)
|
||||
{
|
||||
meshRenderer.material = _passiveMaterial;
|
||||
}
|
||||
if (_collisionRequired)
|
||||
{
|
||||
_scanner.DecrementCorrectRayCount();
|
||||
} else
|
||||
{
|
||||
_scanner.IncrementCorrectRayCount();
|
||||
foreach (MeshRenderer meshRenderer in meshRenderers)
|
||||
{
|
||||
meshRenderer.material = _passiveMaterial;
|
||||
}
|
||||
if (_collisionRequired)
|
||||
{
|
||||
_scanner.DecrementCorrectRayCount();
|
||||
}
|
||||
else
|
||||
{
|
||||
_scanner.IncrementCorrectRayCount();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public HashSet<GameObject> GetCollidingObjects()
|
||||
{
|
||||
return collidingObjects;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ public class TwoHandScaleGrabInteractable : XRGrabInteractable
|
||||
|
||||
protected override void OnSelectExited(SelectExitEventArgs args)
|
||||
{
|
||||
Debug.Log("current local scale: " + transform.localScale);
|
||||
base.OnSelectExited(args);
|
||||
UpdateTwoHandState();
|
||||
}
|
||||
@@ -74,7 +73,6 @@ public class TwoHandScaleGrabInteractable : XRGrabInteractable
|
||||
return;
|
||||
|
||||
float ratio = current / initialHandsDistance;
|
||||
Debug.Log("distance ratio: " + ratio);
|
||||
|
||||
Vector3 desired = initialScale * ratio;
|
||||
float uniform = Mathf.Clamp(desired.x, minScale, maxScale);
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user