sonolus-next-rush-engine 1.0.5 → 1.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/extended/convert.js +29 -9
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/dist/extended/convert.js
CHANGED
|
@@ -87,7 +87,8 @@ const guideKindMapping = {
|
|
|
87
87
|
6: ConnectorKind.GUIDE_CYAN,
|
|
88
88
|
7: ConnectorKind.GUIDE_BLACK,
|
|
89
89
|
};
|
|
90
|
-
const
|
|
90
|
+
const LEGACY_HIDDEN_POP_NOTE_SPEED = 10;
|
|
91
|
+
const LEGACY_MIN_HIDDEN_POP_WINDOW = 1 / 30;
|
|
91
92
|
class ExtData {
|
|
92
93
|
constructor(entities) {
|
|
93
94
|
this.byArch = new Map();
|
|
@@ -156,6 +157,9 @@ function unlerp(a, b, x) {
|
|
|
156
157
|
function clamp01(x) {
|
|
157
158
|
return Math.min(1, Math.max(0, x));
|
|
158
159
|
}
|
|
160
|
+
function legacyNoteDuration(noteSpeed) {
|
|
161
|
+
return lerp(0.35, 4, unlerp(12, 1, noteSpeed) ** 1.31);
|
|
162
|
+
}
|
|
159
163
|
function applyEase(type, x) {
|
|
160
164
|
const t = clamp01(x);
|
|
161
165
|
switch (type) {
|
|
@@ -468,6 +472,12 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
468
472
|
return false;
|
|
469
473
|
return getNum(tailOriginal, '#BEAT') < getNum(headOriginal, '#BEAT') - 1e-6;
|
|
470
474
|
}
|
|
475
|
+
function getLegacyHiddenPopWindow(headOriginal, tailOriginal) {
|
|
476
|
+
const headTime = beatToTime(getNum(headOriginal, '#BEAT'));
|
|
477
|
+
const tailTime = beatToTime(getNum(tailOriginal, '#BEAT'));
|
|
478
|
+
const noteDuration = legacyNoteDuration(LEGACY_HIDDEN_POP_NOTE_SPEED);
|
|
479
|
+
return Math.max(LEGACY_MIN_HIDDEN_POP_WINDOW, noteDuration - (headTime - tailTime));
|
|
480
|
+
}
|
|
471
481
|
for (const { idx, e } of ext.connectors) {
|
|
472
482
|
const startRef = getField(e, 'start');
|
|
473
483
|
const headRef = getField(e, 'head');
|
|
@@ -508,13 +518,15 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
508
518
|
const ease = easeTypeMapping[getNum(e, 'ease')] ?? EaseType.LINEAR;
|
|
509
519
|
const tsg = headOriginal ? getTSG(getField(headOriginal, 'timeScaleGroup')) : undefined;
|
|
510
520
|
const reverseHiddenPopConnector = isReverseHiddenPopConnector(rawHeadOriginal, tailOriginal);
|
|
521
|
+
const hasActiveSlide = !reverseHiddenPopConnector;
|
|
511
522
|
const splitAnchors = headOriginal && tailOriginal && !reverseHiddenPopConnector
|
|
512
523
|
? getConnectorSplitAnchors(headOriginal, tailOriginal, tsg, kind, ease)
|
|
513
524
|
: [];
|
|
514
525
|
const segmentEase = splitAnchors.length > 0 ? EaseType.LINEAR : ease;
|
|
515
526
|
const segmentNotes = [head, ...splitAnchors, tail];
|
|
516
527
|
if (reverseHiddenPopConnector && rawHeadOriginal && tailOriginal) {
|
|
517
|
-
const
|
|
528
|
+
const popWindow = getLegacyHiddenPopWindow(rawHeadOriginal, tailOriginal);
|
|
529
|
+
const showTime = beatToTime(getNum(tailOriginal, '#BEAT')) - popWindow;
|
|
518
530
|
const showBeat = timeToBeat(showTime);
|
|
519
531
|
const gateTsg = createHideUntilTimescaleGroup(showBeat);
|
|
520
532
|
const segmentHead = createConnectorAnchor(getNum(rawHeadOriginal, '#BEAT'), getNum(rawHeadOriginal, 'lane'), getNum(rawHeadOriginal, 'size'), gateTsg, kind);
|
|
@@ -523,8 +535,10 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
523
535
|
connector.set('tail', tail);
|
|
524
536
|
connector.set('segmentHead', segmentHead);
|
|
525
537
|
connector.set('segmentTail', tail);
|
|
526
|
-
|
|
527
|
-
|
|
538
|
+
if (hasActiveSlide) {
|
|
539
|
+
connector.set('activeHead', activeHead);
|
|
540
|
+
connector.set('activeTail', activeTail);
|
|
541
|
+
}
|
|
528
542
|
finalEntities.push(connector);
|
|
529
543
|
}
|
|
530
544
|
else {
|
|
@@ -536,16 +550,20 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
536
550
|
connector.set('tail', segmentTail);
|
|
537
551
|
connector.set('segmentHead', segmentHead);
|
|
538
552
|
connector.set('segmentTail', segmentTail);
|
|
539
|
-
|
|
540
|
-
|
|
553
|
+
if (hasActiveSlide) {
|
|
554
|
+
connector.set('activeHead', activeHead);
|
|
555
|
+
connector.set('activeTail', activeTail);
|
|
556
|
+
}
|
|
541
557
|
finalEntities.push(connector);
|
|
542
558
|
}
|
|
543
559
|
}
|
|
544
560
|
const connectorLink = new EntityBuilder('Connector');
|
|
545
561
|
connectorLink.set('head', head);
|
|
546
562
|
connectorLink.set('tail', tail);
|
|
547
|
-
|
|
548
|
-
|
|
563
|
+
if (hasActiveSlide) {
|
|
564
|
+
connectorLink.set('activeHead', activeHead);
|
|
565
|
+
connectorLink.set('activeTail', activeTail);
|
|
566
|
+
}
|
|
549
567
|
for (const segmentHead of segmentNotes.slice(0, -1)) {
|
|
550
568
|
segmentHead.set('connectorEase', segmentEase);
|
|
551
569
|
segmentHead.set('segmentKind', kind);
|
|
@@ -553,7 +571,9 @@ export const extendedToLevelData = (data, offset = 0) => {
|
|
|
553
571
|
}
|
|
554
572
|
tail.set('segmentKind', kind);
|
|
555
573
|
tail.set('segmentAlpha', 1);
|
|
556
|
-
|
|
574
|
+
if (hasActiveSlide) {
|
|
575
|
+
activeHead.set('segmentKind', kind);
|
|
576
|
+
}
|
|
557
577
|
connectorsByIndex.set(idx, connectorLink);
|
|
558
578
|
if (e.name)
|
|
559
579
|
connectorsByName.set(e.name, connectorLink);
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { USC } from './usc/index.js';
|
|
|
7
7
|
export * from './usc/index.js';
|
|
8
8
|
export { type ExtendedEntityData, type ExtendedEntityDataField, extendedToLevelData, mmwsToUSC, susToUSC, ucmmwsToLevelData, uscToLevelData, };
|
|
9
9
|
export declare const convertToLevelData: (input: string | Uint8Array | USC | LevelData, offset?: number) => LevelData;
|
|
10
|
-
export declare const version = "1.0.
|
|
10
|
+
export declare const version = "1.0.7";
|
|
11
11
|
export declare const databaseEngineItem: {
|
|
12
12
|
readonly name: "next-rush";
|
|
13
13
|
readonly version: 13;
|
package/dist/index.js
CHANGED
|
@@ -65,7 +65,7 @@ export const convertToLevelData = (input, offset = 0) => {
|
|
|
65
65
|
}
|
|
66
66
|
return uscToLevelData(usc, offset, true, true);
|
|
67
67
|
};
|
|
68
|
-
export const version = '1.0.
|
|
68
|
+
export const version = '1.0.7';
|
|
69
69
|
export const databaseEngineItem = {
|
|
70
70
|
name: 'next-rush',
|
|
71
71
|
version: 13,
|