大活:Tracker和Interferometer
等待改进 Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
@@ -44,15 +44,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 00000000000000004000000000000000
|
||||
type: 5
|
||||
m_fileInfoHash: 26776.asset
|
||||
m_fileInfoHash: 26810.asset
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 26776
|
||||
m_assetChangeTS: 1760787584
|
||||
m_fileInfoReadTS: 1760787600
|
||||
m_fileWriteTS: 1760787584
|
||||
m_cachefileWriteTS: 1760787584
|
||||
m_fileSize: 26810
|
||||
m_assetChangeTS: 1762020007
|
||||
m_fileInfoReadTS: 1762020026
|
||||
m_fileWriteTS: 1762020007
|
||||
m_cachefileWriteTS: 1762020007
|
||||
refreshStamp: 2
|
||||
UseGUIDsList:
|
||||
- guid: cd62869af1bc6534d83427c72b66bb9f
|
||||
@@ -3589,15 +3589,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 30dde730c51f742719fcc5c36eb811e5
|
||||
type: 2
|
||||
m_fileInfoHash: 7248.cs
|
||||
m_fileInfoHash: 9023.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 7248
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1755160173
|
||||
m_cachefileWriteTS: 1755160173
|
||||
m_fileSize: 9023
|
||||
m_assetChangeTS: 1762017541
|
||||
m_fileInfoReadTS: 1762017563
|
||||
m_fileWriteTS: 1762016608
|
||||
m_cachefileWriteTS: 1762016608
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 30fdb7163494e28429d56613fe407bf4
|
||||
@@ -11637,10 +11637,10 @@ MonoBehaviour:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 3645
|
||||
m_assetChangeTS: 1760787709
|
||||
m_fileInfoReadTS: 1760787791
|
||||
m_fileWriteTS: 1760787708
|
||||
m_cachefileWriteTS: 1760787708
|
||||
m_assetChangeTS: 1760856139
|
||||
m_fileInfoReadTS: 1760856477
|
||||
m_fileWriteTS: 1760856139
|
||||
m_cachefileWriteTS: 1760856139
|
||||
refreshStamp: 2
|
||||
UseGUIDsList:
|
||||
- guid: bf2edee5c58d82540a51f03df9d42094
|
||||
@@ -15457,15 +15457,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 1119784540bef4e73b37c7cb9f597065
|
||||
type: 2
|
||||
m_fileInfoHash: 6877.cs
|
||||
m_fileInfoHash: 9315.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 6877
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1755160177
|
||||
m_cachefileWriteTS: 1755160177
|
||||
m_fileSize: 9315
|
||||
m_assetChangeTS: 1762023839
|
||||
m_fileInfoReadTS: 1762023856
|
||||
m_fileWriteTS: 1762023824
|
||||
m_cachefileWriteTS: 1762023824
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 1139f30c04130724d998e1bae48d15c6
|
||||
@@ -21573,15 +21573,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 81e2cda70e8084a3fb324d644db244fd
|
||||
type: 5
|
||||
m_fileInfoHash: 348808.asset
|
||||
m_fileInfoHash: 349253.asset
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 348808
|
||||
m_assetChangeTS: 1760787305
|
||||
m_fileInfoReadTS: 1760787320
|
||||
m_fileWriteTS: 1760787305
|
||||
m_cachefileWriteTS: 1760787305
|
||||
m_fileSize: 349253
|
||||
m_assetChangeTS: 1760856139
|
||||
m_fileInfoReadTS: 1760856476
|
||||
m_fileWriteTS: 1760856139
|
||||
m_cachefileWriteTS: 1760856139
|
||||
refreshStamp: 2
|
||||
UseGUIDsList:
|
||||
- guid: e6b16dc7c203450459bb86e24305f9ca
|
||||
@@ -22846,6 +22846,16 @@ MonoBehaviour:
|
||||
ids: d50000001c000000
|
||||
- guid: eea08375da243a441b88d1e6b0713006
|
||||
ids: 73000000
|
||||
- guid: 2fd6421f253b4ef1a19526541f9ffc0c
|
||||
ids: 1c000000
|
||||
- guid: 3ee40aa79cd242a5b53b0b0ca4f13f0f
|
||||
ids: 1c000000
|
||||
- guid: ee148e281f3c41c5b4ff5f8a5afe5a6c
|
||||
ids: 1c000000
|
||||
- guid: f87b5805002ec9649bcb1b96d8a16ba9
|
||||
ids: 1c000000
|
||||
- guid: 3028dc075ba8c584d9bc7d1e0255e038
|
||||
ids: 1c000000
|
||||
- guid: 8113366f9f7cec647878e3af2fb98922
|
||||
type: 9
|
||||
m_fileInfoHash: 19671.png
|
||||
@@ -23047,15 +23057,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 8136d0b00cb8049c98eb2b1d40ad0820
|
||||
type: 2
|
||||
m_fileInfoHash: 2669.cs
|
||||
m_fileInfoHash: 2799.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 2669
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1753541100
|
||||
m_cachefileWriteTS: 1753541100
|
||||
m_fileSize: 2799
|
||||
m_assetChangeTS: 1762010317
|
||||
m_fileInfoReadTS: 1762010340
|
||||
m_fileWriteTS: 1762008614
|
||||
m_cachefileWriteTS: 1762008614
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 8146dbbd8d7184f43bb0049a7ce3ade8
|
||||
@@ -28005,10 +28015,10 @@ MonoBehaviour:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 3642
|
||||
m_assetChangeTS: 1760787709
|
||||
m_fileInfoReadTS: 1760787791
|
||||
m_fileWriteTS: 1760787708
|
||||
m_cachefileWriteTS: 1760787708
|
||||
m_assetChangeTS: 1760856139
|
||||
m_fileInfoReadTS: 1760856476
|
||||
m_fileWriteTS: 1760856139
|
||||
m_cachefileWriteTS: 1760856139
|
||||
refreshStamp: 2
|
||||
UseGUIDsList:
|
||||
- guid: bf2edee5c58d82540a51f03df9d42094
|
||||
@@ -32852,15 +32862,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 42c83e2f698b543f98d2cfcfb1ac5228
|
||||
type: 2
|
||||
m_fileInfoHash: 9296.cs
|
||||
m_fileInfoHash: 10814.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 9296
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1755605184
|
||||
m_cachefileWriteTS: 1755605184
|
||||
m_fileSize: 10814
|
||||
m_assetChangeTS: 1762017541
|
||||
m_fileInfoReadTS: 1762017563
|
||||
m_fileWriteTS: 1762016942
|
||||
m_cachefileWriteTS: 1762016942
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 42f876c7bad484946a19cce672fc2ff4
|
||||
@@ -96173,15 +96183,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: e6daf69621681491bb09cc72e2ff4bdb
|
||||
type: 2
|
||||
m_fileInfoHash: 7204.cs
|
||||
m_fileInfoHash: 9627.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 7204
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1755160183
|
||||
m_cachefileWriteTS: 1755160183
|
||||
m_fileSize: 9627
|
||||
m_assetChangeTS: 1762021720
|
||||
m_fileInfoReadTS: 1762021736
|
||||
m_fileWriteTS: 1762021719
|
||||
m_cachefileWriteTS: 1762021719
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: e60bdd1e4f6314d2382f323172110798
|
||||
@@ -105750,15 +105760,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 97779e95563721b4e8d4a28bb0d46cb9
|
||||
type: 2
|
||||
m_fileInfoHash: 2311.cs
|
||||
m_fileInfoHash: 3266.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 2311
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1752387529
|
||||
m_cachefileWriteTS: 1752387529
|
||||
m_fileSize: 3266
|
||||
m_assetChangeTS: 1762023486
|
||||
m_fileInfoReadTS: 1762023502
|
||||
m_fileWriteTS: 1762023483
|
||||
m_cachefileWriteTS: 1762023483
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 970810a7c55d644b9ba0de7badcc79a8
|
||||
@@ -125722,15 +125732,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 09efd164733b64d539127e1d09f6ef5a
|
||||
type: 2
|
||||
m_fileInfoHash: 6253.cs
|
||||
m_fileInfoHash: 6269.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 6253
|
||||
m_assetChangeTS: 1756559786
|
||||
m_fileInfoReadTS: 1756559802
|
||||
m_fileWriteTS: 1756559784
|
||||
m_cachefileWriteTS: 1756559784
|
||||
m_fileSize: 6269
|
||||
m_assetChangeTS: 1762007022
|
||||
m_fileInfoReadTS: 1762007042
|
||||
m_fileWriteTS: 1762007016
|
||||
m_cachefileWriteTS: 1762007016
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 1900baa5498f6417b8a7037bb313eb83
|
||||
@@ -131131,15 +131141,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 79d811a12f27f43629797719fcbfc6ae
|
||||
type: 2
|
||||
m_fileInfoHash: 7015.cs
|
||||
m_fileInfoHash: 7172.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 7015
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1752741169
|
||||
m_cachefileWriteTS: 1752741169
|
||||
m_fileSize: 7172
|
||||
m_assetChangeTS: 1762007022
|
||||
m_fileInfoReadTS: 1762007042
|
||||
m_fileWriteTS: 1762007016
|
||||
m_cachefileWriteTS: 1762007016
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 79e8584360be43649ad60cb0f180e904
|
||||
@@ -137127,15 +137137,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: d9388465a0abc4ef2ab1be2c62476fca
|
||||
type: 2
|
||||
m_fileInfoHash: 5413.cs
|
||||
m_fileInfoHash: 6957.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 5413
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1753541100
|
||||
m_cachefileWriteTS: 1753541100
|
||||
m_fileSize: 6957
|
||||
m_assetChangeTS: 1762019317
|
||||
m_fileInfoReadTS: 1762019337
|
||||
m_fileWriteTS: 1762019316
|
||||
m_cachefileWriteTS: 1762019316
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: d948bd127b797e94fbf989672ffe1847
|
||||
@@ -148066,15 +148076,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: aaf1c7bed195b4399aa6d3b5b4265930
|
||||
type: 2
|
||||
m_fileInfoHash: 2125.cs
|
||||
m_fileInfoHash: 2339.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 2125
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714604
|
||||
m_fileWriteTS: 1754910644
|
||||
m_cachefileWriteTS: 1754910644
|
||||
m_fileSize: 2339
|
||||
m_assetChangeTS: 1762020762
|
||||
m_fileInfoReadTS: 1762020780
|
||||
m_fileWriteTS: 1762020761
|
||||
m_cachefileWriteTS: 1762020761
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: aa2238545a2849ecb0a6285b5a632a69
|
||||
@@ -152362,15 +152372,15 @@ MonoBehaviour:
|
||||
ids: 73000000
|
||||
- guid: eaac9d0bf222646fc89d03493f9fca69
|
||||
type: 2
|
||||
m_fileInfoHash: 22668.cs
|
||||
m_fileInfoHash: 22686.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 22668
|
||||
m_assetChangeTS: 1759652858
|
||||
m_fileInfoReadTS: 1759652866
|
||||
m_fileWriteTS: 1759651975
|
||||
m_cachefileWriteTS: 1759651975
|
||||
m_fileSize: 22686
|
||||
m_assetChangeTS: 1761996803
|
||||
m_fileInfoReadTS: 1761996815
|
||||
m_fileWriteTS: 1761996064
|
||||
m_cachefileWriteTS: 1761996064
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: ea6dbc5d03b50f148a26b55c617dcb22
|
||||
@@ -160356,10 +160366,10 @@ MonoBehaviour:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 3649
|
||||
m_assetChangeTS: 1760787709
|
||||
m_fileInfoReadTS: 1760787791
|
||||
m_fileWriteTS: 1760787708
|
||||
m_cachefileWriteTS: 1760787708
|
||||
m_assetChangeTS: 1760856139
|
||||
m_fileInfoReadTS: 1760856476
|
||||
m_fileWriteTS: 1760856139
|
||||
m_cachefileWriteTS: 1760856139
|
||||
refreshStamp: 2
|
||||
UseGUIDsList:
|
||||
- guid: bf2edee5c58d82540a51f03df9d42094
|
||||
@@ -173072,10 +173082,10 @@ MonoBehaviour:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 2814
|
||||
m_assetChangeTS: 1760787709
|
||||
m_fileInfoReadTS: 1760787791
|
||||
m_fileWriteTS: 1760787708
|
||||
m_cachefileWriteTS: 1760787708
|
||||
m_assetChangeTS: 1760856139
|
||||
m_fileInfoReadTS: 1760856476
|
||||
m_fileWriteTS: 1760856139
|
||||
m_cachefileWriteTS: 1760856139
|
||||
refreshStamp: 2
|
||||
UseGUIDsList:
|
||||
- guid: 06e8da9b2b26f09459e8a93e84b2e0c9
|
||||
@@ -182370,15 +182380,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 1d27859adda1341aaa0db8a117d5431c
|
||||
type: 2
|
||||
m_fileInfoHash: 8844.cs
|
||||
m_fileInfoHash: 8999.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 8844
|
||||
m_assetChangeTS: 1755714598
|
||||
m_fileInfoReadTS: 1755714603
|
||||
m_fileWriteTS: 1752396359
|
||||
m_cachefileWriteTS: 1752396359
|
||||
m_fileSize: 8999
|
||||
m_assetChangeTS: 1762020762
|
||||
m_fileInfoReadTS: 1762020780
|
||||
m_fileWriteTS: 1762020761
|
||||
m_cachefileWriteTS: 1762020761
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 1d575a145584c7549994d8a51c689ef8
|
||||
@@ -188366,15 +188376,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 8d2b6af5deaa046ff89ed3c74bb2ffdc
|
||||
type: 2
|
||||
m_fileInfoHash: 22854.cs
|
||||
m_fileInfoHash: 22870.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 22854
|
||||
m_assetChangeTS: 1759652858
|
||||
m_fileInfoReadTS: 1759652865
|
||||
m_fileWriteTS: 1759652675
|
||||
m_cachefileWriteTS: 1759652675
|
||||
m_fileSize: 22870
|
||||
m_assetChangeTS: 1762007022
|
||||
m_fileInfoReadTS: 1762007042
|
||||
m_fileWriteTS: 1762007016
|
||||
m_cachefileWriteTS: 1762007016
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 8d4bc6bfa28760b29f13174d6b6ea710
|
||||
@@ -196527,15 +196537,15 @@ MonoBehaviour:
|
||||
ids: 73000000
|
||||
- guid: 2e498d1c8094910479dc3e1b768306a4
|
||||
type: 5
|
||||
m_fileInfoHash: 9628.asset
|
||||
m_fileInfoHash: 569620.asset
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 9628
|
||||
m_assetChangeTS: 1760787709
|
||||
m_fileInfoReadTS: 1760787791
|
||||
m_fileWriteTS: 1760787708
|
||||
m_cachefileWriteTS: 1760787708
|
||||
m_fileSize: 569620
|
||||
m_assetChangeTS: 1762020007
|
||||
m_fileInfoReadTS: 1762020026
|
||||
m_fileWriteTS: 1762020007
|
||||
m_cachefileWriteTS: 1762020007
|
||||
refreshStamp: 2
|
||||
UseGUIDsList:
|
||||
- guid: fe393ace9b354375a9cb14cdbbc28be4
|
||||
@@ -222596,28 +222606,28 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 9251305e5ad58f14f9b08f20e97e249f
|
||||
type: 9
|
||||
m_fileInfoHash: 320.json
|
||||
m_fileInfoHash: 311.json
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 320
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1757811248
|
||||
m_fileWriteTS: 1757761360
|
||||
m_cachefileWriteTS: 1757761360
|
||||
m_fileSize: 311
|
||||
m_assetChangeTS: 1762007022
|
||||
m_fileInfoReadTS: 1762007042
|
||||
m_fileWriteTS: 1762007022
|
||||
m_cachefileWriteTS: 1762007022
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: a4f7d2c6cab636c47b06b244a10752c1
|
||||
type: 9
|
||||
m_fileInfoHash: 113151.json
|
||||
m_fileInfoHash: 28857.json
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 113151
|
||||
m_assetChangeTS: 1759652858
|
||||
m_fileInfoReadTS: 1759652868
|
||||
m_fileWriteTS: 1759651975
|
||||
m_cachefileWriteTS: 1759651975
|
||||
m_fileSize: 28857
|
||||
m_assetChangeTS: 1762023839
|
||||
m_fileInfoReadTS: 1762023856
|
||||
m_fileWriteTS: 1762023835
|
||||
m_cachefileWriteTS: 1762023835
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: f4ff864c59d959f4e98c0119f0259d6d
|
||||
@@ -222653,10 +222663,10 @@ MonoBehaviour:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 252
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1757811248
|
||||
m_fileWriteTS: 1757761360
|
||||
m_cachefileWriteTS: 1757761360
|
||||
m_assetChangeTS: 1762007022
|
||||
m_fileInfoReadTS: 1762007042
|
||||
m_fileWriteTS: 1762007022
|
||||
m_cachefileWriteTS: 1762007022
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 29f0302d9bc8ad540bcfe7b38cd8c6e7
|
||||
@@ -222692,62 +222702,36 @@ MonoBehaviour:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 448
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1757811248
|
||||
m_fileWriteTS: 1757761360
|
||||
m_cachefileWriteTS: 1757761360
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 6f99efda09a3e9a4f9deaff6736034b0
|
||||
type: 9
|
||||
m_fileInfoHash: 33860650.wav
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 33860650
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1757811248
|
||||
m_fileWriteTS: 1757761360
|
||||
m_cachefileWriteTS: 1757761360
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 8fb22b1768a50f049bbe1a932e358f8d
|
||||
type: 9
|
||||
m_fileInfoHash: 113151.json
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 113151
|
||||
m_assetChangeTS: 1759652858
|
||||
m_fileInfoReadTS: 1759652865
|
||||
m_fileWriteTS: 1759651975
|
||||
m_cachefileWriteTS: 1759651975
|
||||
m_assetChangeTS: 1762007022
|
||||
m_fileInfoReadTS: 1762007042
|
||||
m_fileWriteTS: 1762007022
|
||||
m_cachefileWriteTS: 1762007022
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 1f4f8092e8f9f4c428ae331e7f354862
|
||||
type: 9
|
||||
m_fileInfoHash: 112545.json
|
||||
m_fileInfoHash: 29202.json
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 112545
|
||||
m_assetChangeTS: 1759652858
|
||||
m_fileInfoReadTS: 1759652865
|
||||
m_fileWriteTS: 1759651975
|
||||
m_cachefileWriteTS: 1759651975
|
||||
m_fileSize: 29202
|
||||
m_assetChangeTS: 1762022969
|
||||
m_fileInfoReadTS: 1762022978
|
||||
m_fileWriteTS: 1762022562
|
||||
m_cachefileWriteTS: 1762022562
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: dcf79458996b9294e9622caeeeabacc4
|
||||
type: 9
|
||||
m_fileInfoHash: 113154.json
|
||||
m_fileInfoHash: 29202.json
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 113154
|
||||
m_assetChangeTS: 1759652858
|
||||
m_fileInfoReadTS: 1759652865
|
||||
m_fileWriteTS: 1759651975
|
||||
m_cachefileWriteTS: 1759651975
|
||||
m_fileSize: 29202
|
||||
m_assetChangeTS: 1762022969
|
||||
m_fileInfoReadTS: 1762022978
|
||||
m_fileWriteTS: 1762022262
|
||||
m_cachefileWriteTS: 1762022262
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 102e46de009e849cdba7cdbee965fb23
|
||||
@@ -226813,10 +226797,10 @@ MonoBehaviour:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 8454
|
||||
m_assetChangeTS: 1759309536
|
||||
m_fileInfoReadTS: 1759309555
|
||||
m_fileWriteTS: 1759309529
|
||||
m_cachefileWriteTS: 1759309529
|
||||
m_assetChangeTS: 1761991569
|
||||
m_fileInfoReadTS: 1761991593
|
||||
m_fileWriteTS: 1760856865
|
||||
m_cachefileWriteTS: 1760856865
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 72a537e19a9032a41bb95ae02311c661
|
||||
@@ -226899,15 +226883,15 @@ MonoBehaviour:
|
||||
UseGUIDsList: []
|
||||
- guid: 6fe401fc051728b49a4e682f518ffc54
|
||||
type: 2
|
||||
m_fileInfoHash: 2003.cs
|
||||
m_fileInfoHash: 1649.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 2003
|
||||
m_assetChangeTS: 1760855021
|
||||
m_fileInfoReadTS: 1760855044
|
||||
m_fileWriteTS: 1760855018
|
||||
m_cachefileWriteTS: 1760855018
|
||||
m_fileSize: 1649
|
||||
m_assetChangeTS: 1760855428
|
||||
m_fileInfoReadTS: 1760855448
|
||||
m_fileWriteTS: 1760855423
|
||||
m_cachefileWriteTS: 1760855423
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 883ef17754a31e741b58fa60ce21b740
|
||||
@@ -227560,45 +227544,6 @@ MonoBehaviour:
|
||||
m_cachefileWriteTS: 1759283056
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 07d349221d0c50c448b75f0f3f9c6260
|
||||
type: 9
|
||||
m_fileInfoHash: 542823.json
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 542823
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1760854837
|
||||
m_fileWriteTS: 1760854833
|
||||
m_cachefileWriteTS: 1760854833
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 46b458474db32b44e95aef1050b88adc
|
||||
type: 9
|
||||
m_fileInfoHash: 7778290.mp3
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 7778290
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1760854837
|
||||
m_fileWriteTS: 1760854833
|
||||
m_cachefileWriteTS: 1760854833
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 7f58bf294f7b1c44bb4efff5344adfc7
|
||||
type: 9
|
||||
m_fileInfoHash: 305.json
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 305
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1760854837
|
||||
m_fileWriteTS: 1760854833
|
||||
m_cachefileWriteTS: 1760854833
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 391e84f9d07baa741b2ebcf5413513d3
|
||||
type: 1
|
||||
m_fileInfoHash:
|
||||
@@ -227612,30 +227557,186 @@ MonoBehaviour:
|
||||
m_cachefileWriteTS: 0
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 98c115a2af755f94eaeba3d4a7d94b74
|
||||
type: 9
|
||||
m_fileInfoHash: 252.json
|
||||
- guid: c59ac55bda5746b429dea11680098277
|
||||
type: 1
|
||||
m_fileInfoHash:
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 252
|
||||
m_fileSize: 0
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1760854837
|
||||
m_fileWriteTS: 1760854833
|
||||
m_cachefileWriteTS: 1760854833
|
||||
m_fileInfoReadTS: 1761991621
|
||||
m_fileWriteTS: 0
|
||||
m_cachefileWriteTS: 0
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: a06baf8cae5347b438ae94261f0525f4
|
||||
type: 9
|
||||
m_fileInfoHash: 492.json
|
||||
- guid: 6d87960788a4be94e87ff13bb81625cd
|
||||
type: 2
|
||||
m_fileInfoHash: 9658.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 492
|
||||
m_fileSize: 9658
|
||||
m_assetChangeTS: 1762020242
|
||||
m_fileInfoReadTS: 1762020260
|
||||
m_fileWriteTS: 1762020239
|
||||
m_cachefileWriteTS: 1762020239
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 43c59b01d1d25b9448e5a5fecbc7e989
|
||||
type: 1
|
||||
m_fileInfoHash:
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 0
|
||||
m_assetChangeTS: 1761993841
|
||||
m_fileInfoReadTS: 1761993844
|
||||
m_fileWriteTS: 0
|
||||
m_cachefileWriteTS: 0
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: ef1be148d7f177a419f2de084f657248
|
||||
type: 2
|
||||
m_fileInfoHash: 6397.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 6397
|
||||
m_assetChangeTS: 1762020612
|
||||
m_fileInfoReadTS: 1762020628
|
||||
m_fileWriteTS: 1762020609
|
||||
m_cachefileWriteTS: 1762020609
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 40784921009324241a68ffc3b2ed7fcf
|
||||
type: 9
|
||||
m_fileInfoHash: 1812.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 1812
|
||||
m_assetChangeTS: 1762003549
|
||||
m_fileInfoReadTS: 1762003568
|
||||
m_fileWriteTS: 1762003534
|
||||
m_cachefileWriteTS: 1762003534
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 80b556a28f0729f428527c6f46378b95
|
||||
type: 9
|
||||
m_fileInfoHash: 288.bytes
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 288
|
||||
m_assetChangeTS: 1762021650
|
||||
m_fileInfoReadTS: 1762021665
|
||||
m_fileWriteTS: 1762020960
|
||||
m_cachefileWriteTS: 1762020960
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 99e8bcadcf29feb46b2d7edd529e16fe
|
||||
type: 1
|
||||
m_fileInfoHash:
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 0
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1760854837
|
||||
m_fileWriteTS: 1760854833
|
||||
m_cachefileWriteTS: 1760854833
|
||||
m_fileInfoReadTS: 1762001902
|
||||
m_fileWriteTS: 0
|
||||
m_cachefileWriteTS: 0
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 02925c6c6666052489200cc3fd84b49a
|
||||
type: 9
|
||||
m_fileInfoHash: 224.bytes
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 224
|
||||
m_assetChangeTS: 1762021650
|
||||
m_fileInfoReadTS: 1762021665
|
||||
m_fileWriteTS: 1762020960
|
||||
m_cachefileWriteTS: 1762020960
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 1db26db29f28f3f4996e492b8158e611
|
||||
type: 9
|
||||
m_fileInfoHash: 1136.bytes
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 1136
|
||||
m_assetChangeTS: 1762021650
|
||||
m_fileInfoReadTS: 1762021665
|
||||
m_fileWriteTS: 1762020960
|
||||
m_cachefileWriteTS: 1762020960
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 24782b8b45c659c4d9d02229b5b19372
|
||||
type: 9
|
||||
m_fileInfoHash: 192.bytes
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 192
|
||||
m_assetChangeTS: 1762021650
|
||||
m_fileInfoReadTS: 1762021665
|
||||
m_fileWriteTS: 1762020960
|
||||
m_cachefileWriteTS: 1762020960
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: d4ec2022c82788447a56cff9cfc8003b
|
||||
type: 9
|
||||
m_fileInfoHash: 24352760.wav
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 24352760
|
||||
m_assetChangeTS: 0
|
||||
m_fileInfoReadTS: 1762007042
|
||||
m_fileWriteTS: 1762007022
|
||||
m_cachefileWriteTS: 1762007022
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 8fb22b1768a50f049bbe1a932e358f8d
|
||||
type: 9
|
||||
m_fileInfoHash: 29365.json
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 29365
|
||||
m_assetChangeTS: 1762022969
|
||||
m_fileInfoReadTS: 1762022978
|
||||
m_fileWriteTS: 1762022862
|
||||
m_cachefileWriteTS: 1762022862
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: fa441a41a13cc794cb909abea76cd7a1
|
||||
type: 2
|
||||
m_fileInfoHash: 8784.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 8784
|
||||
m_assetChangeTS: 1762021720
|
||||
m_fileInfoReadTS: 1762021736
|
||||
m_fileWriteTS: 1762021719
|
||||
m_cachefileWriteTS: 1762021719
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
- guid: 771a58a2b0d89ca4d9440f8463a03ff2
|
||||
type: 2
|
||||
m_fileInfoHash: 8754.cs
|
||||
m_assetbundle:
|
||||
m_addressable:
|
||||
m_atlas:
|
||||
m_fileSize: 8754
|
||||
m_assetChangeTS: 1762023198
|
||||
m_fileInfoReadTS: 1762023216
|
||||
m_fileWriteTS: 1762023197
|
||||
m_cachefileWriteTS: 1762023197
|
||||
refreshStamp: 2
|
||||
UseGUIDsList: []
|
||||
setting:
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -19,22 +19,36 @@ namespace Ichni.Editor
|
||||
var displacementButton = inspector.GenerateButton(gameElement, animationSubcontainer, "Displacement", () =>
|
||||
{
|
||||
Displacement.GenerateElement("New Displacement", Guid.NewGuid(), new List<string>(), true, gameElement,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
new FlexibleFloat(true), new FlexibleFloat(true), new FlexibleFloat(true));
|
||||
}); //位移
|
||||
|
||||
var swirlButton = inspector.GenerateButton(gameElement, animationSubcontainer, "Swirl", () =>
|
||||
{
|
||||
Swirl.GenerateElement("New Swirl", Guid.NewGuid(), new List<string>(), true, gameElement,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
new FlexibleFloat(true), new FlexibleFloat(true), new FlexibleFloat(true));
|
||||
}); //旋转
|
||||
var scaleButton = inspector.GenerateButton(gameElement, animationSubcontainer, "Scale", () =>
|
||||
{
|
||||
Scale.GenerateElement("New Scale", Guid.NewGuid(), new List<string>(), true, gameElement,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
new FlexibleFloat(true), new FlexibleFloat(true), new FlexibleFloat(true));
|
||||
}); //缩放
|
||||
var LookAtButton = inspector.GenerateButton(gameElement, animationSubcontainer, "Look At",
|
||||
() => LookAt.GenerateElement("New Look At", Guid.NewGuid(),
|
||||
new List<string>(), true, gameElement, null, new FlexibleBool()));
|
||||
var displacementTrackerButton = inspector.GenerateButton(gameElement, animationSubcontainer, "Displacement Tracker", () =>
|
||||
{
|
||||
DisplacementTracker.GenerateElement("New Displacement Tracker", Guid.NewGuid(), new List<string>(), true, gameElement,
|
||||
null, 0f);
|
||||
});
|
||||
var swirlTrackerButton = inspector.GenerateButton(gameElement, animationSubcontainer, "Swirl Tracker", () =>
|
||||
{
|
||||
SwirlTracker.GenerateElement("New Swirl Tracker", Guid.NewGuid(), new List<string>(), true, gameElement,
|
||||
null, 0f);
|
||||
}); var ScaleTrackerButton = inspector.GenerateButton(gameElement, animationSubcontainer, "Scale Tracker", () =>
|
||||
{
|
||||
ScaleTracker.GenerateElement("New Scale Tracker", Guid.NewGuid(), new List<string>(), true, gameElement,
|
||||
null, 0f);
|
||||
});
|
||||
}
|
||||
public static void GenerateForLoading()
|
||||
{
|
||||
|
||||
@@ -12,7 +12,6 @@ namespace Ichni.RhythmGame
|
||||
public FlexibleReturnType animationReturnType;
|
||||
|
||||
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
|
||||
|
||||
public override void SetDefaultSubmodules()
|
||||
{
|
||||
timeDurationSubmodule = new TimeDurationSubmodule(this);
|
||||
@@ -47,6 +46,10 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
return Vector3.zero;
|
||||
}
|
||||
public virtual FlexibleReturnType getReturnType(float time)
|
||||
{
|
||||
return animationReturnType;
|
||||
}
|
||||
/// <summary>
|
||||
/// 施加时间偏移,即移动所有Flexible参数的时间
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c59ac55bda5746b429dea11680098277
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 43c59b01d1d25b9448e5a5fecbc7e989
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,64 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Net.NetworkInformation;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using UnityEngine;
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public enum InterferomType
|
||||
{
|
||||
Additive,
|
||||
Multiplicative,
|
||||
Override
|
||||
}
|
||||
|
||||
public abstract class InterferometerBase : GameElement, IHaveTimeDurationSubmodule, IBeChangeInExport
|
||||
{
|
||||
|
||||
public AnimationBase parentAnimationElement;
|
||||
|
||||
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
|
||||
public BaseElement_BM MatchingExportElement { get; set; }
|
||||
|
||||
public virtual void SaveExportBM()
|
||||
{
|
||||
MatchingExportElement = null;
|
||||
}
|
||||
|
||||
|
||||
public InterferomType InterferomType;
|
||||
|
||||
}
|
||||
|
||||
|
||||
public interface IBeChangeInExport
|
||||
{
|
||||
public BaseElement_BM MatchingExportElement { get; set; }
|
||||
void SaveExportBM();
|
||||
|
||||
}
|
||||
public interface IHaveInterferometer
|
||||
{
|
||||
public List<InterferometerBase> Interferometers { get; set; }
|
||||
|
||||
}
|
||||
public interface IHaveVector3Interferometer : IHaveInterferometer
|
||||
{
|
||||
public void ApplyVector3Interferometers(ref Vector3 value)
|
||||
{
|
||||
foreach (Vector3Interferometer interferometer in Interferometers.OfType<Vector3Interferometer>())
|
||||
{
|
||||
interferometer.InterferomValue(ref value);
|
||||
}
|
||||
}
|
||||
public void ApplyVector3InterferometersBM(FlexibleFloat_BM X, FlexibleFloat_BM Y, FlexibleFloat_BM Z)
|
||||
{
|
||||
foreach (Vector3Interferometer interferometer in Interferometers.OfType<Vector3Interferometer>())
|
||||
{
|
||||
interferometer.InterferomValueBM(X, Y, Z);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 98c115a2af755f94eaeba3d4a7d94b74
|
||||
guid: 40784921009324241a68ffc3b2ed7fcf
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
@@ -0,0 +1,147 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Beatmap;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using UnityEngine;
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public class Vector3Interferometer : InterferometerBase
|
||||
{
|
||||
public static Vector3Interferometer GenerateElement(string elementName, Guid id,
|
||||
List<string> tags, bool isFirstGenerated, AnimationBase parentAnimationElement,
|
||||
InterferomType interferomType, Vector3 interferomValue)
|
||||
{
|
||||
|
||||
Vector3Interferometer vector3Interferometer = Instantiate(EditorManager.instance.basePrefabs.emptyObject).AddComponent<Vector3Interferometer>();
|
||||
|
||||
vector3Interferometer.Initialize(elementName, id, tags, isFirstGenerated, parentAnimationElement);
|
||||
|
||||
vector3Interferometer.parentAnimationElement = parentAnimationElement;
|
||||
vector3Interferometer.InterferomType = interferomType;
|
||||
vector3Interferometer.InterferomValueVector3 = interferomValue;
|
||||
|
||||
if (isFirstGenerated) vector3Interferometer.timeDurationSubmodule = new TimeDurationSubmodule(vector3Interferometer, false, parentAnimationElement.timeDurationSubmodule.startTime, parentAnimationElement.timeDurationSubmodule.endTime);
|
||||
if (parentAnimationElement is IHaveVector3Interferometer haveVector3Interferometer)
|
||||
{
|
||||
haveVector3Interferometer.Interferometers.Add(vector3Interferometer);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError("Trying to add Vector3Interferometer to an AnimationBase that does not implement IHaveVector3Interferometer.");
|
||||
Destroy(vector3Interferometer.gameObject);
|
||||
return null;
|
||||
}
|
||||
return vector3Interferometer;
|
||||
}
|
||||
public Vector3 InterferomValueVector3;
|
||||
public virtual void InterferomValue(ref Vector3 value)
|
||||
{
|
||||
|
||||
switch (InterferomType)
|
||||
{
|
||||
case InterferomType.Additive:
|
||||
// Additive: add interferometer effect to the current value (placeholder)
|
||||
value += InterferomValueVector3;
|
||||
break;
|
||||
case InterferomType.Multiplicative:
|
||||
// Multiplicative: multiply current value by interferometer effect (placeholder)
|
||||
value = Vector3.Scale(value, InterferomValueVector3);
|
||||
break;
|
||||
case InterferomType.Override:
|
||||
// Override: replace current value with interferometer effect (placeholder)
|
||||
value = InterferomValueVector3;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
public void InterferomValueBM(FlexibleFloat_BM X, FlexibleFloat_BM Y, FlexibleFloat_BM Z)
|
||||
{
|
||||
void tmpoffset(FlexibleFloat_BM a, int point)
|
||||
{
|
||||
foreach (var anim in a.animatedFloatList)
|
||||
{
|
||||
switch (InterferomType)
|
||||
{
|
||||
case InterferomType.Additive:
|
||||
anim.endValue += InterferomValueVector3[point];
|
||||
anim.startValue += InterferomValueVector3[point];
|
||||
break;
|
||||
case InterferomType.Multiplicative:
|
||||
anim.endValue *= InterferomValueVector3[point];
|
||||
anim.startValue *= InterferomValueVector3[point];
|
||||
break;
|
||||
case InterferomType.Override:
|
||||
anim.endValue = InterferomValueVector3[point];
|
||||
anim.startValue = InterferomValueVector3[point];
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
tmpoffset(X, 0);
|
||||
tmpoffset(Y, 1);
|
||||
tmpoffset(Z, 2);
|
||||
}
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
base.SetUpInspector();
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
var container = inspector.GenerateContainer("Vector3 Interferometer");
|
||||
var subcontainer = container.GenerateSubcontainer(1);
|
||||
inspector.GenerateVector3InputField(this, subcontainer, "Interferom Value", nameof(InterferomValueVector3));
|
||||
inspector.GenerateDropdown(this, subcontainer, "Interferom Type", typeof(InterferomType), nameof(InterferomType));
|
||||
}
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new Vector3Interferometer_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM,
|
||||
InterferomType, InterferomValueVector3);
|
||||
}
|
||||
|
||||
private void OnDestroy()
|
||||
{
|
||||
((IHaveVector3Interferometer)parentElement)?.Interferometers.Remove(this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
{
|
||||
public class Vector3Interferometer_BM : AnimationBase_BM, ICanNotInExport
|
||||
{
|
||||
public Vector3 InterferomValueVector3;
|
||||
public InterferomType InterferomType;
|
||||
|
||||
public Vector3Interferometer_BM() { }
|
||||
|
||||
public Vector3Interferometer_BM(string elementName, Guid elementGuid, List<string> tags,
|
||||
GameElement_BM attachedElement, InterferomType interferomType, Vector3 interferomValue)
|
||||
: base(elementName, elementGuid, tags, attachedElement)
|
||||
{
|
||||
this.InterferomType = interferomType;
|
||||
this.InterferomValueVector3 = interferomValue;
|
||||
}
|
||||
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
matchedElement = Vector3Interferometer.GenerateElement(elementName, elementGuid, tags, false,
|
||||
GetElement(attachedElementGuid) as AnimationBase, InterferomType, InterferomValueVector3);
|
||||
}
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return Vector3Interferometer.GenerateElement(elementName, Guid.NewGuid(), tags, false,
|
||||
parent as AnimationBase, InterferomType, InterferomValueVector3);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
public interface ICanNotInExport { }
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef1be148d7f177a419f2de084f657248
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,212 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Beatmap;
|
||||
using Ichni;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using UnityEngine;
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public class DisplacementTracker : AnimationBase, IBeChangeInExport, IHaveVector3Interferometer, IHaveTimeDurationSubmodule, ICanBeTrackedDisplacement
|
||||
{
|
||||
private TransformSubmodule targetTransformSubmodule;
|
||||
public ICanBeTrackedDisplacement targetDisplacement;
|
||||
public Vector3 PreviewValue = Vector3.zero;
|
||||
public float TimeOffset;
|
||||
public BaseElement_BM MatchingExportElement { get; set; } = null;
|
||||
public List<InterferometerBase> Interferometers { get; set; } = new();
|
||||
public static DisplacementTracker GenerateElement(string elementName, System.Guid id,
|
||||
List<string> tags, bool isFirstGenerated, GameElement animatedObject, Displacement targetDisplacement, float timeOffset)
|
||||
{
|
||||
DisplacementTracker tracker = Instantiate(EditorManager.instance.basePrefabs.emptyObject).AddComponent<DisplacementTracker>();
|
||||
tracker.Initialize(elementName, id, tags, isFirstGenerated, animatedObject);
|
||||
tracker.animatedObject = animatedObject;
|
||||
tracker.targetDisplacement = targetDisplacement;
|
||||
tracker.TimeOffset = timeOffset;
|
||||
tracker.targetTransformSubmodule = (animatedObject as IHaveTransformSubmodule).transformSubmodule;
|
||||
return tracker;
|
||||
}
|
||||
protected override void UpdateAnimation(float songTime)
|
||||
{
|
||||
if (targetDisplacement == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var a = GetCurrentReturnTypes(songTime);
|
||||
var (x, y, z) = (a[0], a[1], a[2]);
|
||||
|
||||
if (x.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
y.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
z.Item1 is FlexibleReturnType.MiddleExecuting)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
else if (x.Item2 || y.Item2 || z.Item2)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!EditorManager.instance.musicPlayer.isPlaying && animationReturnType != FlexibleReturnType.MiddleInterval)
|
||||
{
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
animationReturnType = FlexibleReturnType.MiddleInterval;
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyValue(float time)
|
||||
{
|
||||
Vector3 currentPosition = targetDisplacement.getValue(time + TimeOffset);
|
||||
// 用接口强制调用默认实现
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentPosition);
|
||||
targetTransformSubmodule.positionOffset += currentPosition;
|
||||
targetTransformSubmodule.positionDirtyMark = true;
|
||||
PreviewValue = currentPosition;
|
||||
}
|
||||
public (FlexibleReturnType, bool)[] GetCurrentReturnTypes(float time)
|
||||
{
|
||||
return targetDisplacement.GetCurrentReturnTypes(time + TimeOffset);
|
||||
}
|
||||
public override Vector3 getValue(float time)
|
||||
{
|
||||
Vector3 currentPosition = targetDisplacement.getValue(time + TimeOffset);
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentPosition);
|
||||
return currentPosition;
|
||||
}
|
||||
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
base.SetUpInspector();
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Enable Control");
|
||||
var effectSettings = container.GenerateSubcontainer(2);
|
||||
var connectedGameElementInputField = inspector.GenerateInputField(effectSettings, "Try Get Displacement");
|
||||
var connectGameElementButton = inspector.GenerateButton(this, effectSettings, "Connect Displacement", () =>
|
||||
{
|
||||
ICanBeTrackedDisplacement targetElement = EditorManager.instance.beatmapContainer.gameElementList.OfType<ICanBeTrackedDisplacement>()
|
||||
.First(e => ((GameElement)e).elementName == connectedGameElementInputField.GetValue<string>());
|
||||
|
||||
if (targetElement == null)
|
||||
{
|
||||
LogWindow.Log("Game Element not found.", Color.yellow);
|
||||
}
|
||||
|
||||
targetDisplacement = targetElement;
|
||||
//targetTransformSubmodule = (targetElement as IHaveTransformSubmodule).transformSubmodule;
|
||||
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
string ShowConnection() => targetDisplacement == null ? "No Displacement Connected" : "Connected With: " + ((GameElement)targetDisplacement).elementName;
|
||||
var connectHintText = inspector.GenerateHintText(this, effectSettings, ShowConnection);
|
||||
var InputField = inspector.GenerateInputField(this, effectSettings, "Offset", nameof(TimeOffset));
|
||||
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new DisplacementTracker_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM,
|
||||
((GameElement)targetDisplacement).elementGuid, TimeOffset);
|
||||
}
|
||||
public bool MaybeDeadLoop = true;
|
||||
public void SaveExportBM()
|
||||
{
|
||||
SaveBM();
|
||||
MatchingExportElement = matchedBM;
|
||||
float finalTimeOffset = 0;
|
||||
Displacement displacement = GetOriginDisplacementWithOffset(ref finalTimeOffset);
|
||||
displacement.SaveBM();
|
||||
var x = ((Displacement_BM)displacement.matchedBM).positionX.DeepCopyBM();
|
||||
var y = ((Displacement_BM)displacement.matchedBM).positionY.DeepCopyBM();
|
||||
var z = ((Displacement_BM)displacement.matchedBM).positionZ.DeepCopyBM();
|
||||
x.ApplyTimeOffset(finalTimeOffset); y.ApplyTimeOffset(finalTimeOffset); z.ApplyTimeOffset(finalTimeOffset);
|
||||
|
||||
List<ICanBeTrackedDisplacement> ICanBeTrackedDisplacements = new List<ICanBeTrackedDisplacement> { this as ICanBeTrackedDisplacement };
|
||||
while (MaybeDeadLoop && ICanBeTrackedDisplacements[0] is not Displacement)
|
||||
{
|
||||
ICanBeTrackedDisplacement ao = (ICanBeTrackedDisplacements[0] as DisplacementTracker).targetDisplacement;
|
||||
ICanBeTrackedDisplacements.Insert(0, ao);
|
||||
}
|
||||
ICanBeTrackedDisplacements.ForEach(o =>
|
||||
{
|
||||
((IHaveVector3Interferometer)o).ApplyVector3InterferometersBM(x, y, z);
|
||||
});
|
||||
parentElement.SaveBM();
|
||||
Displacement_BM a = new Displacement_BM("Displacement", elementGuid, new List<string>(), parentElement.matchedBM as GameElement_BM,
|
||||
x, y, z);
|
||||
MatchingExportElement = a;
|
||||
|
||||
}
|
||||
|
||||
public Displacement GetOriginDisplacementWithOffset(ref float timeOffset)
|
||||
{
|
||||
timeOffset += TimeOffset;
|
||||
if (targetDisplacement is Displacement disp)
|
||||
{
|
||||
return disp;
|
||||
}
|
||||
else if (targetDisplacement is DisplacementTracker dispt)
|
||||
{
|
||||
return dispt.GetOriginDisplacementWithOffset(ref timeOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("WTF type of tracked displacement.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
public interface ICanBeTracked
|
||||
{
|
||||
Vector3 getValue(float time);
|
||||
(FlexibleReturnType, bool)[] GetCurrentReturnTypes(float time);
|
||||
}
|
||||
public interface ICanBeTrackedDisplacement : ICanBeTracked
|
||||
{
|
||||
Displacement GetOriginDisplacementWithOffset(ref float timeOffset);
|
||||
}
|
||||
}
|
||||
namespace Beatmap
|
||||
{
|
||||
public class DisplacementTracker_BM : AnimationBase_BM, ICanNotInExport
|
||||
{
|
||||
public Guid targetDisplacementGuid;
|
||||
public float timeOffset;
|
||||
|
||||
public DisplacementTracker_BM() { }
|
||||
|
||||
public DisplacementTracker_BM(string elementName, System.Guid elementGuid, List<string> tags,
|
||||
GameElement_BM attachedElement, Guid targetDisplacementGuid, float timeOffset)
|
||||
: base(elementName, elementGuid, tags, attachedElement)
|
||||
{
|
||||
this.targetDisplacementGuid = targetDisplacementGuid;
|
||||
this.timeOffset = timeOffset;
|
||||
}
|
||||
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
matchedElement = DisplacementTracker.GenerateElement(elementName, elementGuid, tags, false,
|
||||
GetElement(attachedElementGuid), GetElement(targetDisplacementGuid) as Displacement, timeOffset);
|
||||
matchedElement.matchedBM = this;
|
||||
}
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return DisplacementTracker.GenerateElement(elementName, System.Guid.NewGuid(), tags, false, parent,
|
||||
GetElement(targetDisplacementGuid) as Displacement, timeOffset);
|
||||
}
|
||||
public override void AfterExecute()
|
||||
{
|
||||
(matchedElement as DisplacementTracker).targetDisplacement = GetElement(targetDisplacementGuid) as ICanBeTrackedDisplacement;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6d87960788a4be94e87ff13bb81625cd
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,200 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Beatmap;
|
||||
using Ichni;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public class ScaleTracker : AnimationBase, IBeChangeInExport, IHaveVector3Interferometer, IHaveTimeDurationSubmodule, ICanBeTrackedScale
|
||||
{
|
||||
private TransformSubmodule targetTransformSubmodule;
|
||||
public ICanBeTrackedScale targetScale;
|
||||
public Vector3 PreviewValue = Vector3.zero;
|
||||
public float TimeOffset;
|
||||
public BaseElement_BM MatchingExportElement { get; set; } = null;
|
||||
public List<InterferometerBase> Interferometers { get; set; } = new();
|
||||
public static ScaleTracker GenerateElement(string elementName, Guid id,
|
||||
List<string> tags, bool isFirstGenerated, GameElement animatedObject, ICanBeTrackedScale targetScale, float timeOffset)
|
||||
{
|
||||
ScaleTracker tracker = Instantiate(EditorManager.instance.basePrefabs.emptyObject).AddComponent<ScaleTracker>();
|
||||
tracker.Initialize(elementName, id, tags, isFirstGenerated, animatedObject);
|
||||
tracker.animatedObject = animatedObject;
|
||||
tracker.targetScale = targetScale;
|
||||
tracker.TimeOffset = timeOffset;
|
||||
tracker.targetTransformSubmodule = (animatedObject as IHaveTransformSubmodule).transformSubmodule;
|
||||
return tracker;
|
||||
}
|
||||
protected override void UpdateAnimation(float songTime)
|
||||
{
|
||||
if (targetScale == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var a = GetCurrentReturnTypes(songTime);
|
||||
var (x, y, z) = (a[0], a[1], a[2]);
|
||||
|
||||
if (x.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
y.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
z.Item1 is FlexibleReturnType.MiddleExecuting)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
else if (x.Item2 || y.Item2 || z.Item2)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!EditorManager.instance.musicPlayer.isPlaying && animationReturnType != FlexibleReturnType.MiddleInterval)
|
||||
{
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
animationReturnType = FlexibleReturnType.MiddleInterval;
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyValue(float time)
|
||||
{
|
||||
Vector3 currentScale = targetScale.getValue(time + TimeOffset);
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentScale);
|
||||
targetTransformSubmodule.scaleOffset += currentScale;
|
||||
targetTransformSubmodule.scaleDirtyMark = true;
|
||||
PreviewValue = currentScale;
|
||||
}
|
||||
public (FlexibleReturnType, bool)[] GetCurrentReturnTypes(float time)
|
||||
{
|
||||
return targetScale.GetCurrentReturnTypes(time + TimeOffset);
|
||||
}
|
||||
public override Vector3 getValue(float time)
|
||||
{
|
||||
Vector3 currentScale = targetScale.getValue(time + TimeOffset);
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentScale);
|
||||
return currentScale;
|
||||
}
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
base.SetUpInspector();
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Enable Control");
|
||||
var effectSettings = container.GenerateSubcontainer(2);
|
||||
var connectedGameElementInputField = inspector.GenerateInputField(effectSettings, "Try Get Scale");
|
||||
var connectGameElementButton = inspector.GenerateButton(this, effectSettings, "Connect Scale", () =>
|
||||
{
|
||||
ICanBeTrackedScale targetElement = EditorManager.instance.beatmapContainer.gameElementList.OfType<ICanBeTrackedScale>()
|
||||
.First(e => ((GameElement)e).elementName == connectedGameElementInputField.GetValue<string>());
|
||||
|
||||
if (targetElement == null)
|
||||
{
|
||||
LogWindow.Log("Game Element not found.", Color.yellow);
|
||||
}
|
||||
|
||||
targetScale = targetElement;
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
string ShowConnection() => targetScale == null ? "No Scale Connected" : "Connected With: " + ((GameElement)targetScale).elementName;
|
||||
var connectHintText = inspector.GenerateHintText(this, effectSettings, ShowConnection);
|
||||
var InputField = inspector.GenerateInputField(this, effectSettings, "Offset", nameof(TimeOffset));
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new ScaleTracker_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM,
|
||||
((GameElement)targetScale).elementGuid, TimeOffset);
|
||||
}
|
||||
public bool MaybeDeadLoop = true;
|
||||
public void SaveExportBM()
|
||||
{
|
||||
SaveBM();
|
||||
MatchingExportElement = matchedBM;
|
||||
float finalTimeOffset = 0;
|
||||
Scale scale = GetOriginScaleWithOffset(ref finalTimeOffset);
|
||||
scale.SaveBM();
|
||||
var x = ((Scale_BM)scale.matchedBM).scaleX.DeepCopyBM();
|
||||
var y = ((Scale_BM)scale.matchedBM).scaleY.DeepCopyBM();
|
||||
var z = ((Scale_BM)scale.matchedBM).scaleZ.DeepCopyBM();
|
||||
x.ApplyTimeOffset(finalTimeOffset); y.ApplyTimeOffset(finalTimeOffset); z.ApplyTimeOffset(finalTimeOffset);
|
||||
|
||||
List<ICanBeTrackedScale> ICanBeTrackedScales = new List<ICanBeTrackedScale> { this as ICanBeTrackedScale };
|
||||
while (MaybeDeadLoop && ICanBeTrackedScales[0] is not Scale)
|
||||
{
|
||||
ICanBeTrackedScale ao = (ICanBeTrackedScales[0] as ScaleTracker).targetScale;
|
||||
ICanBeTrackedScales.Insert(0, ao);
|
||||
}
|
||||
ICanBeTrackedScales.ForEach(o =>
|
||||
{
|
||||
((IHaveVector3Interferometer)o).ApplyVector3InterferometersBM(x, y, z);
|
||||
});
|
||||
parentElement.SaveBM();
|
||||
Scale_BM a = new Scale_BM("Scale", elementGuid, new List<string>(), parentElement.matchedBM as GameElement_BM,
|
||||
x, y, z);
|
||||
MatchingExportElement = a;
|
||||
}
|
||||
|
||||
public Scale GetOriginScaleWithOffset(ref float timeOffset)
|
||||
{
|
||||
timeOffset += TimeOffset;
|
||||
if (targetScale is Scale scale)
|
||||
{
|
||||
return scale;
|
||||
}
|
||||
else if (targetScale is ScaleTracker scaleTracker)
|
||||
{
|
||||
return scaleTracker.GetOriginScaleWithOffset(ref timeOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("WTF type of tracked scale.");
|
||||
}
|
||||
}
|
||||
}
|
||||
public interface ICanBeTrackedScale : ICanBeTracked
|
||||
{
|
||||
Scale GetOriginScaleWithOffset(ref float timeOffset);
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
{
|
||||
public class ScaleTracker_BM : AnimationBase_BM, ICanNotInExport
|
||||
{
|
||||
public Guid targetScaleGuid;
|
||||
public float timeOffset;
|
||||
|
||||
public ScaleTracker_BM() { }
|
||||
|
||||
public ScaleTracker_BM(string elementName, Guid elementGuid, List<string> tags,
|
||||
GameElement_BM attachedElement, Guid targetScaleGuid, float timeOffset)
|
||||
: base(elementName, elementGuid, tags, attachedElement)
|
||||
{
|
||||
this.targetScaleGuid = targetScaleGuid;
|
||||
this.timeOffset = timeOffset;
|
||||
}
|
||||
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
matchedElement = ScaleTracker.GenerateElement(elementName, elementGuid, tags, false,
|
||||
GetElement(attachedElementGuid), GetElement(targetScaleGuid) as ICanBeTrackedScale, timeOffset);
|
||||
matchedElement.matchedBM = this;
|
||||
}
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return ScaleTracker.GenerateElement(elementName, Guid.NewGuid(), tags, false, parent,
|
||||
GetElement(targetScaleGuid) as ICanBeTrackedScale, timeOffset);
|
||||
}
|
||||
public override void AfterExecute()
|
||||
{
|
||||
(matchedElement as ScaleTracker).targetScale = GetElement(targetScaleGuid) as ICanBeTrackedScale;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 771a58a2b0d89ca4d9440f8463a03ff2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,200 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Beatmap;
|
||||
using Ichni;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public class SwirlTracker : AnimationBase, IBeChangeInExport, IHaveVector3Interferometer, IHaveTimeDurationSubmodule, ICanBeTrackedSwirl
|
||||
{
|
||||
private TransformSubmodule targetTransformSubmodule;
|
||||
public ICanBeTrackedSwirl targetSwirl;
|
||||
public Vector3 PreviewValue = Vector3.zero;
|
||||
public float TimeOffset;
|
||||
public BaseElement_BM MatchingExportElement { get; set; } = null;
|
||||
public List<InterferometerBase> Interferometers { get; set; } = new();
|
||||
public static SwirlTracker GenerateElement(string elementName, Guid id,
|
||||
List<string> tags, bool isFirstGenerated, GameElement animatedObject, Swirl targetSwirl, float timeOffset)
|
||||
{
|
||||
SwirlTracker tracker = Instantiate(EditorManager.instance.basePrefabs.emptyObject).AddComponent<SwirlTracker>();
|
||||
tracker.Initialize(elementName, id, tags, isFirstGenerated, animatedObject);
|
||||
tracker.animatedObject = animatedObject;
|
||||
tracker.targetSwirl = targetSwirl;
|
||||
tracker.TimeOffset = timeOffset;
|
||||
tracker.targetTransformSubmodule = (animatedObject as IHaveTransformSubmodule).transformSubmodule;
|
||||
return tracker;
|
||||
}
|
||||
protected override void UpdateAnimation(float songTime)
|
||||
{
|
||||
if (targetSwirl == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var a = GetCurrentReturnTypes(songTime);
|
||||
var (x, y, z) = (a[0], a[1], a[2]);
|
||||
|
||||
if (x.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
y.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
z.Item1 is FlexibleReturnType.MiddleExecuting)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
else if (x.Item2 || y.Item2 || z.Item2)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!EditorManager.instance.musicPlayer.isPlaying && animationReturnType != FlexibleReturnType.MiddleInterval)
|
||||
{
|
||||
ApplyValue(songTime);
|
||||
}
|
||||
animationReturnType = FlexibleReturnType.MiddleInterval;
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyValue(float time)
|
||||
{
|
||||
Vector3 currentEulerAngles = targetSwirl.getValue(time + TimeOffset);
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentEulerAngles);
|
||||
targetTransformSubmodule.eulerAnglesOffset += currentEulerAngles;
|
||||
targetTransformSubmodule.eulerAnglesDirtyMark = true;
|
||||
PreviewValue = currentEulerAngles;
|
||||
}
|
||||
public (FlexibleReturnType, bool)[] GetCurrentReturnTypes(float time)
|
||||
{
|
||||
return targetSwirl.GetCurrentReturnTypes(time + TimeOffset);
|
||||
}
|
||||
public override Vector3 getValue(float time)
|
||||
{
|
||||
Vector3 currentEulerAngles = targetSwirl.getValue(time + TimeOffset);
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentEulerAngles);
|
||||
return currentEulerAngles;
|
||||
}
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
base.SetUpInspector();
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
|
||||
var container = inspector.GenerateContainer("Enable Control");
|
||||
var effectSettings = container.GenerateSubcontainer(2);
|
||||
var connectedGameElementInputField = inspector.GenerateInputField(effectSettings, "Try Get Swirl");
|
||||
var connectGameElementButton = inspector.GenerateButton(this, effectSettings, "Connect Swirl", () =>
|
||||
{
|
||||
ICanBeTrackedSwirl targetElement = EditorManager.instance.beatmapContainer.gameElementList.OfType<ICanBeTrackedSwirl>()
|
||||
.First(e => ((GameElement)e).elementName == connectedGameElementInputField.GetValue<string>());
|
||||
|
||||
if (targetElement == null)
|
||||
{
|
||||
LogWindow.Log("Game Element not found.", Color.yellow);
|
||||
}
|
||||
|
||||
targetSwirl = targetElement;
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
string ShowConnection() => targetSwirl == null ? "No Swirl Connected" : "Connected With: " + ((GameElement)targetSwirl).elementName;
|
||||
var connectHintText = inspector.GenerateHintText(this, effectSettings, ShowConnection);
|
||||
var InputField = inspector.GenerateInputField(this, effectSettings, "Offset", nameof(TimeOffset));
|
||||
}
|
||||
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new SwirlTracker_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM,
|
||||
((GameElement)targetSwirl).elementGuid, TimeOffset);
|
||||
}
|
||||
public bool MaybeDeadLoop = true;
|
||||
public void SaveExportBM()
|
||||
{
|
||||
SaveBM();
|
||||
MatchingExportElement = matchedBM;
|
||||
float finalTimeOffset = 0;
|
||||
Swirl swirl = GetOriginSwirlWithOffset(ref finalTimeOffset);
|
||||
swirl.SaveBM();
|
||||
var x = ((Swirl_BM)swirl.matchedBM).eulerAngleX.DeepCopyBM();
|
||||
var y = ((Swirl_BM)swirl.matchedBM).eulerAngleY.DeepCopyBM();
|
||||
var z = ((Swirl_BM)swirl.matchedBM).eulerAngleZ.DeepCopyBM();
|
||||
x.ApplyTimeOffset(finalTimeOffset); y.ApplyTimeOffset(finalTimeOffset); z.ApplyTimeOffset(finalTimeOffset);
|
||||
|
||||
List<ICanBeTrackedSwirl> ICanBeTrackedSwirls = new List<ICanBeTrackedSwirl> { this as ICanBeTrackedSwirl };
|
||||
while (MaybeDeadLoop && ICanBeTrackedSwirls[0] is not Swirl)
|
||||
{
|
||||
ICanBeTrackedSwirl ao = (ICanBeTrackedSwirls[0] as SwirlTracker).targetSwirl;
|
||||
ICanBeTrackedSwirls.Insert(0, ao);
|
||||
}
|
||||
ICanBeTrackedSwirls.ForEach(o =>
|
||||
{
|
||||
((IHaveVector3Interferometer)o).ApplyVector3InterferometersBM(x, y, z);
|
||||
});
|
||||
parentElement.SaveBM();
|
||||
Swirl_BM a = new Swirl_BM("Swirl", elementGuid, new List<string>(), parentElement.matchedBM as GameElement_BM,
|
||||
x, y, z);
|
||||
MatchingExportElement = a;
|
||||
}
|
||||
|
||||
public Swirl GetOriginSwirlWithOffset(ref float timeOffset)
|
||||
{
|
||||
timeOffset += TimeOffset;
|
||||
if (targetSwirl is Swirl swirl)
|
||||
{
|
||||
return swirl;
|
||||
}
|
||||
else if (targetSwirl is SwirlTracker swirlTracker)
|
||||
{
|
||||
return swirlTracker.GetOriginSwirlWithOffset(ref timeOffset);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new Exception("WTF type of tracked swirl.");
|
||||
}
|
||||
}
|
||||
}
|
||||
public interface ICanBeTrackedSwirl : ICanBeTracked
|
||||
{
|
||||
Swirl GetOriginSwirlWithOffset(ref float timeOffset);
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
{
|
||||
public class SwirlTracker_BM : AnimationBase_BM, ICanNotInExport
|
||||
{
|
||||
public Guid targetSwirlGuid;
|
||||
public float timeOffset;
|
||||
|
||||
public SwirlTracker_BM() { }
|
||||
|
||||
public SwirlTracker_BM(string elementName, Guid elementGuid, List<string> tags,
|
||||
GameElement_BM attachedElement, Guid targetSwirlGuid, float timeOffset)
|
||||
: base(elementName, elementGuid, tags, attachedElement)
|
||||
{
|
||||
this.targetSwirlGuid = targetSwirlGuid;
|
||||
this.timeOffset = timeOffset;
|
||||
}
|
||||
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
matchedElement = SwirlTracker.GenerateElement(elementName, elementGuid, tags, false,
|
||||
GetElement(attachedElementGuid), GetElement(targetSwirlGuid) as Swirl, timeOffset);
|
||||
matchedElement.matchedBM = this;
|
||||
}
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return SwirlTracker.GenerateElement(elementName, Guid.NewGuid(), tags, false, parent,
|
||||
GetElement(targetSwirlGuid) as Swirl, timeOffset);
|
||||
}
|
||||
public override void AfterExecute()
|
||||
{
|
||||
(matchedElement as SwirlTracker).targetSwirl = GetElement(targetSwirlGuid) as ICanBeTrackedSwirl;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: fa441a41a13cc794cb909abea76cd7a1
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -12,11 +12,13 @@ using UnityEngine;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public partial class Displacement : AnimationBase
|
||||
public partial class Displacement : AnimationBase, IHaveVector3Interferometer, ICanBeTrackedDisplacement
|
||||
{
|
||||
private TransformSubmodule targetTransformSubmodule;
|
||||
public FlexibleFloat positionX, positionY, positionZ;
|
||||
public List<InterferometerBase> Interferometers { get; set; } = new List<InterferometerBase>();
|
||||
|
||||
public Vector3 PreviewValue = Vector3.zero;
|
||||
public static Displacement GenerateElement(string elementName, Guid id,
|
||||
List<string> tags, bool isFirstGenerated, GameElement animatedObject,
|
||||
FlexibleFloat positionX, FlexibleFloat positionY, FlexibleFloat positionZ)
|
||||
@@ -33,7 +35,6 @@ namespace Ichni.RhythmGame
|
||||
displacement.animationReturnType = FlexibleReturnType.Before;
|
||||
|
||||
displacement.targetTransformSubmodule = (animatedObject as IHaveTransformSubmodule).transformSubmodule;
|
||||
|
||||
//displacement.timeDurationSubmodule.SetDuration(positionX, positionY, positionZ);
|
||||
|
||||
return displacement;
|
||||
@@ -50,36 +51,43 @@ namespace Ichni.RhythmGame
|
||||
positionZ.returnType is FlexibleReturnType.MiddleExecuting)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
Vector3 currentPosition = new Vector3(positionX.value, positionY.value, positionZ.value);
|
||||
targetTransformSubmodule.positionOffset += currentPosition;
|
||||
targetTransformSubmodule.positionDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
else if (positionX.isSwitchingReturnType || positionY.isSwitchingReturnType || positionZ.isSwitchingReturnType)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
Vector3 currentPosition = new Vector3(positionX.value, positionY.value, positionZ.value);
|
||||
targetTransformSubmodule.positionOffset += currentPosition;
|
||||
targetTransformSubmodule.positionDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!EditorManager.instance.musicPlayer.isPlaying && animationReturnType != FlexibleReturnType.MiddleInterval)
|
||||
{
|
||||
Vector3 currentPosition = new Vector3(positionX.value, positionY.value, positionZ.value);
|
||||
targetTransformSubmodule.positionOffset += currentPosition;
|
||||
targetTransformSubmodule.positionDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
|
||||
animationReturnType = FlexibleReturnType.MiddleInterval;
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyValue()
|
||||
{
|
||||
Vector3 currentPosition = new Vector3(positionX.value, positionY.value, positionZ.value);
|
||||
// 用接口强制调用默认实现
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentPosition);
|
||||
targetTransformSubmodule.positionOffset += currentPosition;
|
||||
targetTransformSubmodule.positionDirtyMark = true;
|
||||
PreviewValue = currentPosition;
|
||||
}
|
||||
|
||||
public override Vector3 getValue(float time)
|
||||
{
|
||||
float x = positionX.GetValue(time);
|
||||
float y = positionY.GetValue(time);
|
||||
float z = positionZ.GetValue(time);
|
||||
return new Vector3(x, y, z);
|
||||
Vector3 currentPosition = new Vector3(x, y, z);
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentPosition);
|
||||
return currentPosition;
|
||||
}
|
||||
|
||||
public override void ApplyTimeOffset(float offset)
|
||||
{
|
||||
base.ApplyTimeOffset(offset);
|
||||
@@ -87,6 +95,21 @@ namespace Ichni.RhythmGame
|
||||
positionY.animations.ForEach(anim => anim.ApplyTimeOffset(offset));
|
||||
positionZ.animations.ForEach(anim => anim.ApplyTimeOffset(offset));
|
||||
}
|
||||
|
||||
public (FlexibleReturnType, bool)[] GetCurrentReturnTypes(float time)
|
||||
{
|
||||
(FlexibleReturnType, bool) x = positionX.getReturnType(time);
|
||||
(FlexibleReturnType, bool) y = positionY.getReturnType(time);
|
||||
(FlexibleReturnType, bool) z = positionZ.getReturnType(time);
|
||||
return new (FlexibleReturnType, bool)[] { x, y, z };
|
||||
}
|
||||
|
||||
public Displacement GetOriginDisplacementWithOffset(ref float timeOffset)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
public BaseElement_BM MatchingExportElement { get; set; }
|
||||
}
|
||||
|
||||
public partial class Displacement
|
||||
@@ -120,6 +143,24 @@ namespace Ichni.RhythmGame
|
||||
inspector.GenerateGraphicalFlexibleFloatWindow(this, "Displacement",
|
||||
new FlexibleFloat[] { positionX, positionY, positionZ }, new string[] { "PosX", "PosY", "PosZ" });
|
||||
});
|
||||
var subcontainer2 = container.GenerateSubcontainer(1);
|
||||
var valuetext = inspector.GenerateParameterText(this, subcontainer2, "value:", nameof(PreviewValue), true);
|
||||
|
||||
var interferometerButton = inspector.GenerateButton(this, subcontainer2, "Interferometer", () =>
|
||||
{
|
||||
Vector3Interferometer.GenerateElement("New Vector3 Interferometer", Guid.NewGuid(), new List<string>(), true,
|
||||
this, InterferomType.Additive, Vector3.zero);
|
||||
});
|
||||
}
|
||||
|
||||
public void SaveExportBM()
|
||||
{
|
||||
SaveBM();
|
||||
MatchingExportElement = matchedBM;
|
||||
((IHaveVector3Interferometer)this).ApplyVector3InterferometersBM(
|
||||
(MatchingExportElement as Beatmap.Displacement_BM).positionX,
|
||||
(MatchingExportElement as Beatmap.Displacement_BM).positionY,
|
||||
(MatchingExportElement as Beatmap.Displacement_BM).positionZ);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,11 +7,18 @@ using UnityEngine;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public partial class Scale : AnimationBase
|
||||
|
||||
|
||||
public partial class Scale : AnimationBase, IHaveVector3Interferometer, IBeChangeInExport, ICanBeTrackedScale
|
||||
{
|
||||
public TransformSubmodule targetTransformSubmodule;
|
||||
public FlexibleFloat scaleX, scaleY, scaleZ;
|
||||
|
||||
public List<InterferometerBase> Interferometers { get; set; } = new List<InterferometerBase>();
|
||||
public BaseElement_BM MatchingExportElement { get; set; }
|
||||
|
||||
public Vector3 PreviewValue = Vector3.zero;
|
||||
|
||||
public static Scale GenerateElement(string elementName, Guid id,
|
||||
List<string> tags, bool isFirstGenerated, GameElement animatedObject,
|
||||
FlexibleFloat scaleX, FlexibleFloat scaleY, FlexibleFloat scaleZ)
|
||||
@@ -50,29 +57,33 @@ namespace Ichni.RhythmGame
|
||||
scaleZ.returnType is FlexibleReturnType.MiddleExecuting)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
Vector3 currentScale = new Vector3(scaleX.value, scaleY.value, scaleZ.value);
|
||||
targetTransformSubmodule.scaleOffset += currentScale;
|
||||
targetTransformSubmodule.scaleDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
else if (scaleX.isSwitchingReturnType || scaleY.isSwitchingReturnType || scaleZ.isSwitchingReturnType)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
Vector3 currentScale = new Vector3(scaleX.value, scaleY.value, scaleZ.value);
|
||||
targetTransformSubmodule.scaleOffset += currentScale;
|
||||
targetTransformSubmodule.scaleDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!EditorManager.instance.musicPlayer.isPlaying && animationReturnType != FlexibleReturnType.MiddleInterval)
|
||||
{
|
||||
Vector3 currentScale = new Vector3(scaleX.value, scaleY.value, scaleZ.value);
|
||||
targetTransformSubmodule.scaleOffset += currentScale;
|
||||
targetTransformSubmodule.scaleDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
|
||||
animationReturnType = FlexibleReturnType.MiddleInterval;
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyValue()
|
||||
{
|
||||
Vector3 currentScale = new Vector3(scaleX.value, scaleY.value, scaleZ.value);
|
||||
// 用接口强制调用默认实现
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentScale);
|
||||
targetTransformSubmodule.scaleOffset += currentScale;
|
||||
targetTransformSubmodule.scaleDirtyMark = true;
|
||||
PreviewValue = currentScale;
|
||||
}
|
||||
public override Vector3 getValue(float time)
|
||||
{
|
||||
float x = scaleX.GetValue(time);
|
||||
@@ -80,6 +91,26 @@ namespace Ichni.RhythmGame
|
||||
float z = scaleZ.GetValue(time);
|
||||
return new Vector3(x, y, z);
|
||||
}
|
||||
public override FlexibleReturnType getReturnType(float time)
|
||||
{
|
||||
(FlexibleReturnType, bool) x = scaleX.getReturnType(time);
|
||||
(FlexibleReturnType, bool) y = scaleY.getReturnType(time);
|
||||
(FlexibleReturnType, bool) z = scaleZ.getReturnType(time);
|
||||
if (x.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
y.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
z.Item1 is FlexibleReturnType.MiddleExecuting)
|
||||
{
|
||||
return FlexibleReturnType.MiddleExecuting;
|
||||
}
|
||||
else if (x.Item2 || x.Item2 || x.Item2)
|
||||
{
|
||||
return FlexibleReturnType.MiddleExecuting;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FlexibleReturnType.MiddleInterval;
|
||||
}
|
||||
}
|
||||
public override void ApplyTimeOffset(float offset)
|
||||
{
|
||||
base.ApplyTimeOffset(offset);
|
||||
@@ -87,6 +118,18 @@ namespace Ichni.RhythmGame
|
||||
scaleY.animations.ForEach(anim => anim.ApplyTimeOffset(offset));
|
||||
scaleZ.animations.ForEach(anim => anim.ApplyTimeOffset(offset));
|
||||
}
|
||||
|
||||
public (FlexibleReturnType, bool)[] GetCurrentReturnTypes(float time)
|
||||
{
|
||||
(FlexibleReturnType, bool) x = scaleX.getReturnType(time);
|
||||
(FlexibleReturnType, bool) y = scaleY.getReturnType(time);
|
||||
(FlexibleReturnType, bool) z = scaleZ.getReturnType(time);
|
||||
return new (FlexibleReturnType, bool)[] { x, y, z };
|
||||
}
|
||||
public Scale GetOriginScaleWithOffset(ref float timeOffset)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public partial class Scale
|
||||
@@ -96,6 +139,15 @@ namespace Ichni.RhythmGame
|
||||
matchedBM = new Scale_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM,
|
||||
scaleX.ConvertToBM(), scaleY.ConvertToBM(), scaleZ.ConvertToBM());
|
||||
}
|
||||
public void SaveExportBM()
|
||||
{
|
||||
SaveBM();
|
||||
MatchingExportElement = matchedBM;
|
||||
((IHaveVector3Interferometer)this).ApplyVector3InterferometersBM(
|
||||
(MatchingExportElement as Scale_BM).scaleX,
|
||||
(MatchingExportElement as Scale_BM).scaleY,
|
||||
(MatchingExportElement as Scale_BM).scaleZ);
|
||||
}
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
@@ -121,6 +173,14 @@ namespace Ichni.RhythmGame
|
||||
new FlexibleFloat[] { scaleX, scaleY, scaleZ },
|
||||
new string[] { "ScaleX", "ScaleY", "ScaleZ" });
|
||||
});
|
||||
var subcontainer2 = container.GenerateSubcontainer(1);
|
||||
var valuetext = inspector.GenerateParameterText(this, subcontainer2, "value:", nameof(PreviewValue), true);
|
||||
|
||||
var interferometerButton = inspector.GenerateButton(this, subcontainer2, "Interferometer", () =>
|
||||
{
|
||||
Vector3Interferometer.GenerateElement("New Vector3 Interferometer", Guid.NewGuid(), new List<string>(), true,
|
||||
this, InterferomType.Additive, Vector3.zero);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,10 +8,15 @@ using UnityEngine;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public partial class Swirl : AnimationBase
|
||||
|
||||
|
||||
public partial class Swirl : AnimationBase, IHaveVector3Interferometer, IBeChangeInExport, ICanBeTrackedSwirl
|
||||
{
|
||||
private TransformSubmodule targetTransformSubmodule;
|
||||
public FlexibleFloat eulerAngleX, eulerAngleY, eulerAngleZ;
|
||||
public List<InterferometerBase> Interferometers { get; set; } = new List<InterferometerBase>();
|
||||
public Vector3 PreviewValue = Vector3.zero;
|
||||
public BaseElement_BM MatchingExportElement { get; set; }
|
||||
|
||||
public static Swirl GenerateElement(string elementName, Guid id,
|
||||
List<string> tags, bool isFirstGenerated, GameElement animatedObject,
|
||||
@@ -49,29 +54,33 @@ namespace Ichni.RhythmGame
|
||||
eulerAngleZ.returnType is FlexibleReturnType.MiddleExecuting)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
Vector3 currentEulerAngles = new Vector3(eulerAngleX.value, eulerAngleY.value, eulerAngleZ.value);
|
||||
targetTransformSubmodule.eulerAnglesOffset += currentEulerAngles;
|
||||
targetTransformSubmodule.eulerAnglesDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
else if (eulerAngleX.isSwitchingReturnType || eulerAngleY.isSwitchingReturnType || eulerAngleZ.isSwitchingReturnType)
|
||||
{
|
||||
animationReturnType = FlexibleReturnType.MiddleExecuting;
|
||||
Vector3 currentEulerAngles = new Vector3(eulerAngleX.value, eulerAngleY.value, eulerAngleZ.value);
|
||||
targetTransformSubmodule.eulerAnglesOffset += currentEulerAngles;
|
||||
targetTransformSubmodule.eulerAnglesDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!EditorManager.instance.musicPlayer.isPlaying && animationReturnType != FlexibleReturnType.MiddleInterval)
|
||||
{
|
||||
Vector3 currentRotation = new Vector3(eulerAngleX.value, eulerAngleY.value, eulerAngleZ.value);
|
||||
targetTransformSubmodule.eulerAnglesOffset += currentRotation;
|
||||
targetTransformSubmodule.eulerAnglesDirtyMark = true;
|
||||
ApplyValue();
|
||||
}
|
||||
|
||||
animationReturnType = FlexibleReturnType.MiddleInterval;
|
||||
}
|
||||
}
|
||||
|
||||
private void ApplyValue()
|
||||
{
|
||||
Vector3 currentEulerAngles = new Vector3(eulerAngleX.value, eulerAngleY.value, eulerAngleZ.value);
|
||||
// 用接口强制调用默认实现
|
||||
((IHaveVector3Interferometer)this).ApplyVector3Interferometers(ref currentEulerAngles);
|
||||
targetTransformSubmodule.eulerAnglesOffset += currentEulerAngles;
|
||||
targetTransformSubmodule.eulerAnglesDirtyMark = true;
|
||||
PreviewValue = currentEulerAngles;
|
||||
}
|
||||
|
||||
public override Vector3 getValue(float time)
|
||||
{
|
||||
float x = eulerAngleX.GetValue(time);
|
||||
@@ -79,6 +88,26 @@ namespace Ichni.RhythmGame
|
||||
float z = eulerAngleZ.GetValue(time);
|
||||
return new Vector3(x, y, z);
|
||||
}
|
||||
public override FlexibleReturnType getReturnType(float time)
|
||||
{
|
||||
(FlexibleReturnType, bool) x = eulerAngleX.getReturnType(time);
|
||||
(FlexibleReturnType, bool) y = eulerAngleY.getReturnType(time);
|
||||
(FlexibleReturnType, bool) z = eulerAngleZ.getReturnType(time);
|
||||
if (x.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
y.Item1 is FlexibleReturnType.MiddleExecuting ||
|
||||
z.Item1 is FlexibleReturnType.MiddleExecuting)
|
||||
{
|
||||
return FlexibleReturnType.MiddleExecuting;
|
||||
}
|
||||
else if (x.Item2 || x.Item2 || x.Item2)
|
||||
{
|
||||
return FlexibleReturnType.MiddleExecuting;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FlexibleReturnType.MiddleInterval;
|
||||
}
|
||||
}
|
||||
public override void ApplyTimeOffset(float offset)
|
||||
{
|
||||
base.ApplyTimeOffset(offset);
|
||||
@@ -86,6 +115,19 @@ namespace Ichni.RhythmGame
|
||||
eulerAngleY.animations.ForEach(anim => anim.ApplyTimeOffset(offset));
|
||||
eulerAngleZ.animations.ForEach(anim => anim.ApplyTimeOffset(offset));
|
||||
}
|
||||
|
||||
public (FlexibleReturnType, bool)[] GetCurrentReturnTypes(float time)
|
||||
{
|
||||
(FlexibleReturnType, bool) x = eulerAngleX.getReturnType(time);
|
||||
(FlexibleReturnType, bool) y = eulerAngleY.getReturnType(time);
|
||||
(FlexibleReturnType, bool) z = eulerAngleZ.getReturnType(time);
|
||||
return new (FlexibleReturnType, bool)[] { x, y, z };
|
||||
}
|
||||
|
||||
public Swirl GetOriginSwirlWithOffset(ref float timeOffset)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public partial class Swirl
|
||||
@@ -96,6 +138,16 @@ namespace Ichni.RhythmGame
|
||||
eulerAngleX.ConvertToBM(), eulerAngleY.ConvertToBM(), eulerAngleZ.ConvertToBM());
|
||||
}
|
||||
|
||||
public void SaveExportBM()
|
||||
{
|
||||
SaveBM();
|
||||
MatchingExportElement = matchedBM;
|
||||
((IHaveVector3Interferometer)this).ApplyVector3InterferometersBM(
|
||||
(MatchingExportElement as Swirl_BM).eulerAngleX,
|
||||
(MatchingExportElement as Swirl_BM).eulerAngleY,
|
||||
(MatchingExportElement as Swirl_BM).eulerAngleZ);
|
||||
}
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
base.SetUpInspector();
|
||||
@@ -121,6 +173,14 @@ namespace Ichni.RhythmGame
|
||||
new FlexibleFloat[] { eulerAngleX, eulerAngleY, eulerAngleZ },
|
||||
new string[] { "EulerX", "EulerY", "EulerZ" });
|
||||
});
|
||||
|
||||
var subcontainer2 = container.GenerateSubcontainer(1);
|
||||
var valuetext = inspector.GenerateParameterText(this, subcontainer2, "value:", nameof(PreviewValue), true);
|
||||
var interferometerButton = inspector.GenerateButton(this, subcontainer2, "Interferometer", () =>
|
||||
{
|
||||
Vector3Interferometer.GenerateElement("New Vector3 Interferometer", Guid.NewGuid(), new List<string>(), true,
|
||||
this, InterferomType.Additive, Vector3.zero);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,11 +53,16 @@ namespace Ichni.RhythmGame
|
||||
public FlexibleReturnType lastReturnType;
|
||||
public FlexibleReturnType returnType;
|
||||
|
||||
public FlexibleFloat()
|
||||
public FlexibleFloat(bool withFirstAnimation = false)
|
||||
{
|
||||
animations = new List<AnimatedFloat>();
|
||||
if (withFirstAnimation)
|
||||
{
|
||||
animations.Add(new AnimatedFloat(0f, 1f, 0f, 0f, AnimationCurveType.Linear));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public FlexibleFloat(List<AnimatedFloat> anim)
|
||||
{
|
||||
animations = anim;
|
||||
@@ -198,9 +203,18 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
UpdateFlexibleFloat(songtime);
|
||||
float a = value;
|
||||
UpdateFlexibleFloat(EditorManager.instance.songInformation.songTime);
|
||||
return a;
|
||||
}
|
||||
public (FlexibleReturnType, bool) getReturnType(float Songtime)
|
||||
{
|
||||
UpdateFlexibleFloat(Songtime);
|
||||
return (returnType, isSwitchingReturnType);
|
||||
}
|
||||
public (FlexibleReturnType, bool, float) GetReturnTypeAndValue(float songtime)
|
||||
{
|
||||
UpdateFlexibleFloat(songtime);
|
||||
return (returnType, isSwitchingReturnType, value);
|
||||
}
|
||||
/// <summary>
|
||||
/// 转换为Beatmap存档类型
|
||||
/// </summary>
|
||||
@@ -216,6 +230,14 @@ namespace Ichni.RhythmGame
|
||||
|
||||
return flexibleFloat_BM;
|
||||
}
|
||||
public void ApplyTimeOffset(float OffsetTime)
|
||||
{
|
||||
animations.ForEach(i =>
|
||||
{
|
||||
i.ApplyTimeOffset(OffsetTime);
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
@@ -259,6 +281,26 @@ namespace Ichni.RhythmGame
|
||||
|
||||
return flexibleFloat;
|
||||
}
|
||||
public FlexibleFloat_BM DeepCopyBM()
|
||||
{
|
||||
FlexibleFloat_BM copy = new FlexibleFloat_BM();
|
||||
foreach (AnimatedFloat animatedFloat in animatedFloatList)
|
||||
{
|
||||
copy.animatedFloatList.Add(new AnimatedFloat(
|
||||
animatedFloat.startTime, animatedFloat.endTime,
|
||||
animatedFloat.startValue, animatedFloat.endValue,
|
||||
animatedFloat.animationCurveType));
|
||||
}
|
||||
return copy;
|
||||
}
|
||||
public void ApplyTimeOffset(float OffsetTime)
|
||||
{
|
||||
animatedFloatList.ForEach(i =>
|
||||
{
|
||||
i.ApplyTimeOffset(OffsetTime);
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Beatmap;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
@@ -9,7 +10,7 @@ using UnityEngine.Events;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
public class BeatmapContainer : IBaseElement
|
||||
public class BeatmapContainer : IBaseElement, IBeChangeInExport
|
||||
{
|
||||
public List<GameElement> gameElementList;
|
||||
|
||||
@@ -17,6 +18,7 @@ namespace Ichni.RhythmGame
|
||||
public List<UnityAction> lowPriorityActions;
|
||||
|
||||
public BaseElement_BM matchedBM { get; set; }
|
||||
public BaseElement_BM MatchingExportElement { get; set; }
|
||||
|
||||
public BeatmapContainer()
|
||||
{
|
||||
@@ -72,6 +74,15 @@ namespace Ichni.RhythmGame
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void SaveExportBM()
|
||||
{
|
||||
MatchingExportElement = new BeatmapContainer_BM(gameElementList, true);
|
||||
if (((BeatmapContainer_BM)MatchingExportElement).elementList.Any(i => i is ICanNotInExport))
|
||||
{
|
||||
Debug.LogError("Export Error!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
@@ -86,7 +97,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
}
|
||||
|
||||
public BeatmapContainer_BM(List<GameElement> gameElementList)
|
||||
public BeatmapContainer_BM(List<GameElement> gameElementList, bool forExport = false)
|
||||
{
|
||||
elementList = new List<BaseElement_BM>();
|
||||
|
||||
@@ -95,18 +106,39 @@ namespace Ichni.RhythmGame
|
||||
e.SaveBM();
|
||||
e.submoduleList.RemoveAll(s => s == null);
|
||||
e.submoduleList.ForEach(s => s.SaveBM());
|
||||
if (forExport && e is IBeChangeInExport changeInExport)
|
||||
{
|
||||
changeInExport.SaveExportBM();
|
||||
}
|
||||
});
|
||||
|
||||
foreach (var gameElement in gameElementList)
|
||||
{
|
||||
if (gameElement.matchedBM != null)
|
||||
{
|
||||
elementList.Add(gameElement.matchedBM);
|
||||
}
|
||||
if (forExport && gameElement is IBeChangeInExport changeInExport)
|
||||
{
|
||||
if (changeInExport.MatchingExportElement != null)
|
||||
{
|
||||
elementList.Add(changeInExport.MatchingExportElement);
|
||||
List<BaseElement_BM> submodules = gameElement.submoduleList.ConvertAll(s => s.matchedBM);
|
||||
submodules.RemoveAll(s => s == null);
|
||||
submodules.ForEach(e => { e.attachedElementGuid = ((GameElement_BM)changeInExport.MatchingExportElement).elementGuid; });
|
||||
elementList.AddRange(submodules);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
elementList.Add(gameElement.matchedBM);
|
||||
List<BaseElement_BM> submodules = gameElement.submoduleList.ConvertAll(s => s.matchedBM);
|
||||
submodules.RemoveAll(s => s == null);
|
||||
elementList.AddRange(submodules);
|
||||
}
|
||||
|
||||
List<BaseElement_BM> submodules = gameElement.submoduleList.ConvertAll(s => s.matchedBM);
|
||||
submodules.RemoveAll(s => s == null);
|
||||
elementList.AddRange(submodules);
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -74,7 +74,10 @@ namespace Ichni.RhythmGame
|
||||
var generateAnimation = container.GenerateSubcontainer(3);
|
||||
var fovAnimationButton = inspector.GenerateButton(this, generateAnimation, "Field of View",
|
||||
() => CameraFieldOfView.GenerateElement("New Field of View", Guid.NewGuid(),
|
||||
new List<string>(), true, this, new FlexibleFloat()));
|
||||
new List<string>(), true, this, new FlexibleFloat(new List<AnimatedFloat>
|
||||
{
|
||||
new AnimatedFloat(0f, 1f, 60f, 60f, AnimationCurveType.Linear)
|
||||
})));
|
||||
var extensionButton = inspector.GenerateButton(this, generateAnimation, "Extension",
|
||||
() => GameCameraExtension.GenerateElement("New Extension", Guid.NewGuid(),
|
||||
new List<string>(), true, this, 1000f));
|
||||
|
||||
@@ -130,7 +130,7 @@ namespace Ichni.RhythmGame
|
||||
StandardInspectionElement.GenerateForTransform(this, container);
|
||||
var generateBaseColorChangeButton = inspector.GenerateButton(this, generateAnimation, "Base Color Change",
|
||||
() => BaseColorChange.GenerateElement("New Base Color Change", Guid.NewGuid(), new List<string>(), true,
|
||||
this, new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat()));
|
||||
this, new FlexibleFloat(true), new FlexibleFloat(true), new FlexibleFloat(true), new FlexibleFloat(true)));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -189,7 +189,7 @@ namespace Ichni.RhythmGame
|
||||
|
||||
StandardInspectionElement.GenerateForTransform(this, generateContainer); //关于有Transform的元素
|
||||
inspector.GenerateButton(this, particleSubcontainer, "Track Global Color Change",
|
||||
() => { TrackGlobalColorChange.GenerateElement("New Track Global Color Change", Guid.NewGuid(), new List<string>(), true, this, new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat()); }); //变量容器
|
||||
() => { TrackGlobalColorChange.GenerateElement("New Track Global Color Change", Guid.NewGuid(), new List<string>(), true, this, new FlexibleFloat(true), new FlexibleFloat(true), new FlexibleFloat(true), new FlexibleFloat(true)); }); //变量容器
|
||||
|
||||
// var animationSubcontainer = generateContainer.GenerateSubcontainer(3);
|
||||
// var displacementButton = inspector.GenerateButton(this, animationSubcontainer, "Displacement", () =>
|
||||
|
||||
@@ -94,8 +94,8 @@ namespace Ichni
|
||||
|
||||
private void ExportBeatMap(string exportPath)
|
||||
{
|
||||
EditorManager.instance.beatmapContainer.SaveBM();
|
||||
ES3.Save("Beatmap", EditorManager.instance.beatmapContainer.matchedBM as BeatmapContainer_BM,
|
||||
EditorManager.instance.beatmapContainer.SaveExportBM();
|
||||
ES3.Save("Beatmap", EditorManager.instance.beatmapContainer.MatchingExportElement as BeatmapContainer_BM,
|
||||
exportPath, ProjectManager.ExportSettings);
|
||||
}
|
||||
|
||||
|
||||
@@ -56,10 +56,15 @@ namespace Ichni
|
||||
{
|
||||
AssetBundle.UnloadAllAssetBundles(true);
|
||||
loadedThemeBundleList.Clear();
|
||||
|
||||
|
||||
LogWindow = StartMenuManager.instance.startPage.logText;
|
||||
if (InformationTransistor.instance.isRecovery)
|
||||
{
|
||||
LogWindow.text += "Recovery Mode.\n";
|
||||
LogWindow.color = Color.red;
|
||||
}
|
||||
LogWindow.text += "Loading ThemeBundles, Please wait...\n";
|
||||
|
||||
|
||||
waitingBundleAmount = new IntReactiveProperty(list.Count);
|
||||
Debug.Log("Waiting for " + list.Count + " AssetBundles to load.");
|
||||
LogWindow.text += "Waiting for " + list.Count + " AssetBundles to load.\n";
|
||||
@@ -120,7 +125,7 @@ namespace Ichni
|
||||
AssetBundle bundle = AssetBundle.LoadFromFile(uri);
|
||||
Object[] ob = bundle.LoadAllAssets<Object>();
|
||||
loadedThemeBundleList.Add(new ThemeBundle(themeBundleName));
|
||||
|
||||
|
||||
for (int i = 0; i < ob.Length; i++)
|
||||
{
|
||||
if (ob[i].GetType() == typeof(GameObject))
|
||||
|
||||
@@ -4,6 +4,7 @@ using Ichni.RhythmGame.Beatmap;
|
||||
using TMPro;
|
||||
using UniRx;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.SceneManagement;
|
||||
using UnityEngine.UI;
|
||||
|
||||
@@ -33,6 +34,10 @@ namespace Ichni.StartMenu
|
||||
InformationTransistor.instance.isLoadedProject = true;
|
||||
InformationTransistor.instance.loadedProjectName = projectName;
|
||||
InformationTransistor.instance.isRecovery = isRecovery;
|
||||
if (Keyboard.current.sKey.isPressed && Keyboard.current.lKey.isPressed)
|
||||
{
|
||||
InformationTransistor.instance.isRecovery = true;
|
||||
}
|
||||
|
||||
string projectPath = Application.streamingAssetsPath + "/Projects/" + projectName;
|
||||
InformationTransistor.instance.projectInfo_BM = ES3.Load<ProjectInformation_BM>("ProjectInformation", projectPath + "/ProjectInfo.json");
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
8
Assets/StreamingAssets/Export/1.meta
Normal file
8
Assets/StreamingAssets/Export/1.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 99e8bcadcf29feb46b2d7edd529e16fe
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/StreamingAssets/Export/1/Beatmap.bytes
Normal file
BIN
Assets/StreamingAssets/Export/1/Beatmap.bytes
Normal file
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6f99efda09a3e9a4f9deaff6736034b0
|
||||
guid: 1db26db29f28f3f4996e492b8158e611
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
BIN
Assets/StreamingAssets/Export/1/CommandScripts.bytes
Normal file
BIN
Assets/StreamingAssets/Export/1/CommandScripts.bytes
Normal file
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a06baf8cae5347b438ae94261f0525f4
|
||||
guid: 24782b8b45c659c4d9d02229b5b19372
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
BIN
Assets/StreamingAssets/Export/1/ProjectInfo.bytes
Normal file
BIN
Assets/StreamingAssets/Export/1/ProjectInfo.bytes
Normal file
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 07d349221d0c50c448b75f0f3f9c6260
|
||||
guid: 80b556a28f0729f428527c6f46378b95
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
1
Assets/StreamingAssets/Export/1/SongInfo.bytes
Normal file
1
Assets/StreamingAssets/Export/1/SongInfo.bytes
Normal file
@@ -0,0 +1 @@
|
||||
о╒HЪzЩмЮWяз4▌ ≥B"5}[Y┐О>T~WZЙхы╣ШеKз> ┌kд4+И8Г╨LH`шk-⌡-l·┼р╒e\^┴╤Дбb╒JfН┴╟▄yдP┬Qд║eнs@═■FYY/T,mSэ
|
||||
7
Assets/StreamingAssets/Export/1/SongInfo.bytes.meta
Normal file
7
Assets/StreamingAssets/Export/1/SongInfo.bytes.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 02925c6c6666052489200cc3fd84b49a
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,8 +5,8 @@
|
||||
"projectName" : "1",
|
||||
"creatorName" : "1",
|
||||
"editorVersion" : "0.1.0",
|
||||
"createTime" : "2025\/9\/13 18:58:54",
|
||||
"lastSaveTime" : "2025\/9\/13 18:58:54",
|
||||
"createTime" : "2025\/11\/1 22:15:17",
|
||||
"lastSaveTime" : "2025\/11\/1 22:15:17",
|
||||
"selectedThemeBundleList" : [
|
||||
"basic"
|
||||
],
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
"SongInformation" : {
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.SongInformation_BM,Assembly-CSharp",
|
||||
"value" : {
|
||||
"songName" : "OERA - register@fantobia.wav",
|
||||
"bpm" : 120,
|
||||
"songName" : "Your Shadow (1).wav",
|
||||
"bpm" : 100,
|
||||
"delay" : 0,
|
||||
"offset" : 0,
|
||||
"attachedElementGuid" : {
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d4ec2022c82788447a56cff9cfc8003b
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,13 +0,0 @@
|
||||
{
|
||||
"CommandScripts" : {
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.CommandScripts_BM,Assembly-CSharp",
|
||||
"value" : {
|
||||
"commandList" : [
|
||||
|
||||
],
|
||||
"attachedElementGuid" : {
|
||||
"value" : "00000000-0000-0000-0000-000000000000"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,18 +0,0 @@
|
||||
{
|
||||
"ProjectInformation" : {
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.ProjectInformation_BM,Assembly-CSharp",
|
||||
"value" : {
|
||||
"projectName" : "Solitudes SP",
|
||||
"creatorName" : "TRADER",
|
||||
"editorVersion" : "0.1.0",
|
||||
"createTime" : "2025\/10\/18 20:34:07",
|
||||
"lastSaveTime" : "2025\/10\/18 20:34:07",
|
||||
"selectedThemeBundleList" : [
|
||||
"basic","departure_to_multiverse"
|
||||
],
|
||||
"attachedElementGuid" : {
|
||||
"value" : "00000000-0000-0000-0000-000000000000"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 46b458474db32b44e95aef1050b88adc
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,14 +0,0 @@
|
||||
{
|
||||
"SongInformation" : {
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.SongInformation_BM,Assembly-CSharp",
|
||||
"value" : {
|
||||
"songName" : "Solitudes.mp3",
|
||||
"bpm" : 200,
|
||||
"delay" : 0,
|
||||
"offset" : 0,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "00000000-0000-0000-0000-000000000000"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7f58bf294f7b1c44bb4efff5344adfc7
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user