diff --git a/Assets/Resources/Credits.txt b/Assets/Resources/Credits.txt
index 056a42ab..c3f9f689 100644
--- a/Assets/Resources/Credits.txt
+++ b/Assets/Resources/Credits.txt
@@ -60,6 +60,7 @@
-vincells
-Yumiko90
-fu_majime
+-bluriskayo
Music
-Jellirby (Opening)
@@ -80,6 +81,12 @@
-JoyShockLibrary Jibb Smart, fork by RHeavenStudio
-Jukebox RHeavenStudio
+-BurstLinq
+-Dependencies Hunter
+-DOTween
+-Graphy
+-NaughtyBezierCurves
+-Newtonsoft.Json
-SoftMaskForUGUI
-UniTask
-Unity-UI-Rounded-Corners
diff --git a/Assets/Scenes/Editor.unity b/Assets/Scenes/Editor.unity
index 54f89d6d..8720eb29 100644
--- a/Assets/Scenes/Editor.unity
+++ b/Assets/Scenes/Editor.unity
@@ -4170,6 +4170,71 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
TooltipText: Metronome [M]
+--- !u!1 &143407410
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 143407411}
+ - component: {fileID: 143407412}
+ m_Layer: 5
+ m_Name: SwingDivision
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &143407411
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 143407410}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 738950517}
+ - {fileID: 1300133179}
+ m_Father: {fileID: 980212093}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 809.5935, y: -113}
+ m_SizeDelta: {x: 1595.187, y: 40}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &143407412
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 143407410}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 16
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 3
+ m_Spacing: 42
+ m_ChildForceExpandWidth: 0
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 0
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
--- !u!1 &151246936
GameObject:
m_ObjectHideFlags: 0
@@ -7100,8 +7165,8 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
- m_AnchoredPosition: {x: 826.5, y: -25}
- m_SizeDelta: {x: 1629, y: 40}
+ m_AnchoredPosition: {x: 656.00006, y: -25}
+ m_SizeDelta: {x: 1288.0001, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &278632245
MonoBehaviour:
@@ -7222,6 +7287,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: fd86589935fb46c4db0d3d23d52743a9, type: 3}
m_Name:
m_EditorClassIdentifier:
+ conductor: {fileID: 0}
--- !u!4 &282924609
Transform:
m_ObjectHideFlags: 0
@@ -10301,6 +10367,82 @@ MonoBehaviour:
volumeTXT: {fileID: 746356640}
volumeLine: {fileID: 1126835990}
volumeDialog: {fileID: 864592614}
+--- !u!1 &406795636
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 406795637}
+ - component: {fileID: 406795639}
+ - component: {fileID: 406795638}
+ m_Layer: 5
+ m_Name: Checkmark
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &406795637
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 406795636}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 913463862}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &406795638
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 406795636}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10901, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 1
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &406795639
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 406795636}
+ m_CullTransparentMesh: 1
--- !u!1 &407289014
GameObject:
m_ObjectHideFlags: 0
@@ -11241,7 +11383,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
- m_AnchoredPosition: {x: 1236, y: -25}
+ m_AnchoredPosition: {x: 1182.0001, y: -25}
m_SizeDelta: {x: 360, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &456251927
@@ -15630,7 +15772,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
- m_AnchoredPosition: {x: 1523, y: -25}
+ m_AnchoredPosition: {x: 1182.0001, y: -25}
m_SizeDelta: {x: 360, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &579899330
@@ -16199,6 +16341,143 @@ MonoBehaviour:
m_EditorClassIdentifier:
m_Padding: {x: 0, y: 0, z: 0, w: 0}
m_Softness: {x: 0, y: 0}
+--- !u!1 &590691359
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 590691360}
+ - component: {fileID: 590691362}
+ - component: {fileID: 590691361}
+ m_Layer: 5
+ m_Name: SliderStart
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &590691360
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 590691359}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 923757708}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 25, y: -20}
+ m_SizeDelta: {x: 50, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &590691361
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 590691359}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: 0%
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 4810e200fa0cb24438bac52343d7674b, type: 2}
+ m_sharedMaterial: {fileID: 8580487687356851718, guid: 4810e200fa0cb24438bac52343d7674b, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 26
+ m_fontSizeBase: 26
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 4
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_TextWrappingMode: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &590691362
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 590691359}
+ m_CullTransparentMesh: 1
--- !u!1 &597773738
GameObject:
m_ObjectHideFlags: 0
@@ -19460,6 +19739,197 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 704039019}
m_CullTransparentMesh: 1
+--- !u!1 &704808990
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 704808991}
+ - component: {fileID: 704808994}
+ - component: {fileID: 704808993}
+ - component: {fileID: 704808992}
+ m_Layer: 5
+ m_Name: ManualInput
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &704808991
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 704808990}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 981306209}
+ m_Father: {fileID: 923757708}
+ m_RootOrder: 3
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 436, y: -20}
+ m_SizeDelta: {x: 64, y: 30}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &704808992
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 704808990}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 2da0c512f12947e489f739169773d7ca, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 704808993}
+ m_TextViewport: {fileID: 981306209}
+ m_TextComponent: {fileID: 1429233489}
+ m_Placeholder: {fileID: 0}
+ m_VerticalScrollbar: {fileID: 0}
+ m_VerticalScrollbarEventHandler: {fileID: 0}
+ m_LayoutGroup: {fileID: 0}
+ m_ScrollSensitivity: 1
+ m_ContentType: 3
+ m_InputType: 0
+ m_AsteriskChar: 42
+ m_KeyboardType: 2
+ m_LineType: 0
+ m_HideMobileInput: 0
+ m_HideSoftKeyboard: 0
+ m_CharacterValidation: 3
+ m_RegexValue:
+ m_GlobalPointSize: 14
+ m_CharacterLimit: 0
+ m_OnEndEdit:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 788904139}
+ m_TargetAssemblyTypeName: TempoDialog, Assembly-CSharp
+ m_MethodName: SetSwing
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_OnSubmit:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnSelect:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnDeselect:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTextSelection:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnEndTextSelection:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_OnTouchScreenKeyboardStatusChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_CustomCaretColor: 0
+ m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412}
+ m_Text: 100
+ m_CaretBlinkRate: 0.85
+ m_CaretWidth: 1
+ m_ReadOnly: 0
+ m_RichText: 1
+ m_GlobalFontAsset: {fileID: 11400000, guid: 8597c35f18a008c428fc5870aec75766, type: 2}
+ m_OnFocusSelectAll: 1
+ m_ResetOnDeActivation: 1
+ m_KeepTextSelectionVisible: 0
+ m_RestoreOriginalTextOnEscape: 1
+ m_isRichTextEditingAllowed: 0
+ m_LineLimit: 0
+ isAlert: 0
+ m_InputValidator: {fileID: 0}
+ m_ShouldActivateOnSelect: 1
+--- !u!114 &704808993
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 704808990}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10911, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &704808994
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 704808990}
+ m_CullTransparentMesh: 1
--- !u!1 &708484803
GameObject:
m_ObjectHideFlags: 0
@@ -19948,6 +20418,219 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 738028139}
m_CullTransparentMesh: 1
+--- !u!1 &738634698
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 738634699}
+ - component: {fileID: 738634701}
+ - component: {fileID: 738634700}
+ m_Layer: 5
+ m_Name: Handle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &738634699
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738634698}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 2062943138}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &738634700
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738634698}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10913, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 0
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &738634701
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738634698}
+ m_CullTransparentMesh: 1
+--- !u!1 &738950516
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 738950517}
+ - component: {fileID: 738950519}
+ - component: {fileID: 738950518}
+ m_Layer: 5
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &738950517
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738950516}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 143407411}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 0, y: 5}
+ m_SizeDelta: {x: 249.18692, y: 50}
+ m_Pivot: {x: 0, y: 1}
+--- !u!114 &738950518
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738950516}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: 16th Note Swing?
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 4810e200fa0cb24438bac52343d7674b, type: 2}
+ m_sharedMaterial: {fileID: 8580487687356851718, guid: 4810e200fa0cb24438bac52343d7674b, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 26
+ m_fontSizeBase: 26
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: -97.7
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_TextWrappingMode: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &738950519
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 738950516}
+ m_CullTransparentMesh: 1
--- !u!1 &743531235
GameObject:
m_ObjectHideFlags: 0
@@ -21797,6 +22480,9 @@ MonoBehaviour:
dialog: {fileID: 788904138}
deleteButton: {fileID: 1876126829}
tempoInput: {fileID: 467708510}
+ swingInput: {fileID: 704808992}
+ swingSlider: {fileID: 907963053}
+ swingDivisionToggle: {fileID: 1950592168}
--- !u!224 &788904140 stripped
RectTransform:
m_CorrespondingSourceObject: {fileID: 3263607626584268237, guid: 5edde5c03f192d242bc2fa6277914e6e, type: 3}
@@ -24473,6 +25159,109 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 891587360}
m_CullTransparentMesh: 1
+--- !u!1 &907963051
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 907963052}
+ - component: {fileID: 907963053}
+ m_Layer: 5
+ m_Name: Slider
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &907963052
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 907963051}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 2092926359}
+ - {fileID: 1711155737}
+ - {fileID: 2062943138}
+ m_Father: {fileID: 923757708}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 178, y: -20}
+ m_SizeDelta: {x: 256, y: 20}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &907963053
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 907963051}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 738634700}
+ m_FillRect: {fileID: 1149904538}
+ m_HandleRect: {fileID: 738634699}
+ m_Direction: 0
+ m_MinValue: 0
+ m_MaxValue: 1
+ m_WholeNumbers: 0
+ m_Value: 0
+ m_OnValueChanged:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 788904139}
+ m_TargetAssemblyTypeName: TempoDialog, Assembly-CSharp
+ m_MethodName: SwingSliderUpdate
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
--- !u!1 &908855313
GameObject:
m_ObjectHideFlags: 0
@@ -24668,6 +25457,83 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
+--- !u!1 &913463861
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 913463862}
+ - component: {fileID: 913463864}
+ - component: {fileID: 913463863}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &913463862
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 913463861}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 406795637}
+ m_Father: {fileID: 1950592167}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &913463863
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 913463861}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &913463864
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 913463861}
+ m_CullTransparentMesh: 1
--- !u!1 &918768360
GameObject:
m_ObjectHideFlags: 0
@@ -25184,6 +26050,219 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 921541685}
m_CullTransparentMesh: 1
+--- !u!1 &923757707
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 923757708}
+ - component: {fileID: 923757710}
+ - component: {fileID: 923757709}
+ m_Layer: 5
+ m_Name: Holder
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &923757708
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923757707}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 590691360}
+ - {fileID: 907963052}
+ - {fileID: 2073774546}
+ - {fileID: 704808991}
+ m_Father: {fileID: 1922212788}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 935.187, y: -20}
+ m_SizeDelta: {x: 1288.0001, y: 40}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &923757709
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923757707}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 3
+ m_Spacing: 0
+ m_ChildForceExpandWidth: 0
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 0
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!222 &923757710
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 923757707}
+ m_CullTransparentMesh: 1
+--- !u!1 &924634313
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 924634314}
+ - component: {fileID: 924634316}
+ - component: {fileID: 924634315}
+ m_Layer: 5
+ m_Name: Text (TMP)
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &924634314
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 924634313}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1922212788}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 0, y: 5}
+ m_SizeDelta: {x: 249.18692, y: 50}
+ m_Pivot: {x: 0, y: 1}
+--- !u!114 &924634315
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 924634313}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: Swing
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 4810e200fa0cb24438bac52343d7674b, type: 2}
+ m_sharedMaterial: {fileID: 8580487687356851718, guid: 4810e200fa0cb24438bac52343d7674b, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 26
+ m_fontSizeBase: 26
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: -97.7
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_TextWrappingMode: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &924634316
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 924634313}
+ m_CullTransparentMesh: 1
--- !u!1 &928918819
GameObject:
m_ObjectHideFlags: 0
@@ -26436,6 +27515,8 @@ RectTransform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 278632244}
+ - {fileID: 1922212788}
+ - {fileID: 143407411}
m_Father: {fileID: 788904137}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -26478,6 +27559,58 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 980212092}
m_CullTransparentMesh: 1
+--- !u!1 &981306208
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 981306209}
+ - component: {fileID: 981306210}
+ m_Layer: 5
+ m_Name: Text Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &981306209
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 981306208}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1429233488}
+ m_Father: {fileID: 704808991}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: -0.5}
+ m_SizeDelta: {x: -20, y: -13}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &981306210
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 981306208}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 3312d7739989d2b4e91e6319e9a96d76, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding: {x: -8, y: -5, z: -8, w: -5}
+ m_Softness: {x: 0, y: 0}
--- !u!1 &983551348
GameObject:
m_ObjectHideFlags: 0
@@ -30288,6 +31421,82 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1149103344}
m_CullTransparentMesh: 1
+--- !u!1 &1149904537
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1149904538}
+ - component: {fileID: 1149904540}
+ - component: {fileID: 1149904539}
+ m_Layer: 5
+ m_Name: Fill
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1149904538
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1149904537}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 1711155737}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 10, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1149904539
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1149904537}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &1149904540
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1149904537}
+ m_CullTransparentMesh: 1
--- !u!1 &1150057310
GameObject:
m_ObjectHideFlags: 0
@@ -30368,7 +31577,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
- m_AnchoredPosition: {x: 0, y: 121.101654}
+ m_AnchoredPosition: {x: 0, y: 136.2041}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 1}
--- !u!222 &1154875945
@@ -32091,7 +33300,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
- m_AnchoredPosition: {x: 0, y: -8.0000305}
+ m_AnchoredPosition: {x: 0, y: -8}
m_SizeDelta: {x: 0, y: -63.99999}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1244621693
@@ -33678,6 +34887,79 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
TooltipText: Starting Tempo (BPM)
+--- !u!1 &1300133178
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1300133179}
+ - component: {fileID: 1300133181}
+ - component: {fileID: 1300133180}
+ m_Layer: 5
+ m_Name: Holder
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1300133179
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1300133178}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 1
+ m_Children:
+ - {fileID: 1950592167}
+ m_Father: {fileID: 143407411}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 935.187, y: -20}
+ m_SizeDelta: {x: 1288.0001, y: 40}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1300133180
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1300133178}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 3
+ m_Spacing: 0
+ m_ChildForceExpandWidth: 0
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 0
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!222 &1300133181
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1300133178}
+ m_CullTransparentMesh: 1
--- !u!1 &1310571273
GameObject:
m_ObjectHideFlags: 0
@@ -36087,6 +37369,143 @@ MonoBehaviour:
tempoLayer: {fileID: 1511927534}
musicLayer: {fileID: 954835807}
sectionLayer: {fileID: 1647324175}
+--- !u!1 &1429233487
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1429233488}
+ - component: {fileID: 1429233490}
+ - component: {fileID: 1429233489}
+ m_Layer: 5
+ m_Name: Text
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1429233488
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1429233487}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 981306209}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1429233489
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1429233487}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: "100\u200B"
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 8597c35f18a008c428fc5870aec75766, type: 2}
+ m_sharedMaterial: {fileID: -6562250930271150993, guid: 8597c35f18a008c428fc5870aec75766, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4281479730
+ m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 14
+ m_fontSizeBase: 14
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 2
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_TextWrappingMode: 3
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 0
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 1
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &1429233490
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1429233487}
+ m_CullTransparentMesh: 1
--- !u!1 &1436105793
GameObject:
m_ObjectHideFlags: 0
@@ -39828,8 +41247,8 @@ MonoBehaviour:
m_TargetGraphic: {fileID: 1220118245}
m_HandleRect: {fileID: 1220118244}
m_Direction: 2
- m_Value: 1.0000005
- m_Size: 0.60513115
+ m_Value: 1.0000006
+ m_Size: 0.73026246
m_NumberOfSteps: 0
m_OnValueChanged:
m_PersistentCalls:
@@ -41656,6 +43075,43 @@ MonoBehaviour:
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
+--- !u!1 &1711155736
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1711155737}
+ m_Layer: 5
+ m_Name: Fill Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1711155737
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1711155736}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 1149904538}
+ m_Father: {fileID: 907963052}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: -5, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1711526065
GameObject:
m_ObjectHideFlags: 0
@@ -44682,7 +46138,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
- m_AnchoredPosition: {x: 1523, y: -25}
+ m_AnchoredPosition: {x: 1182.0001, y: -25}
m_SizeDelta: {x: 360, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &1876126829
@@ -46199,6 +47655,71 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1922199512}
m_CullTransparentMesh: 1
+--- !u!1 &1922212787
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1922212788}
+ - component: {fileID: 1922212789}
+ m_Layer: 5
+ m_Name: Swing
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1922212788
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1922212787}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 924634314}
+ - {fileID: 923757708}
+ m_Father: {fileID: 980212093}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 809.5935, y: -69}
+ m_SizeDelta: {x: 1595.187, y: 40}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1922212789
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1922212787}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 16
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 3
+ m_Spacing: 42
+ m_ChildForceExpandWidth: 0
+ m_ChildForceExpandHeight: 1
+ m_ChildControlWidth: 0
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
--- !u!1 &1926088904
GameObject:
m_ObjectHideFlags: 0
@@ -46672,6 +48193,104 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1950471846}
m_CullTransparentMesh: 1
+--- !u!1 &1950592166
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1950592167}
+ - component: {fileID: 1950592168}
+ m_Layer: 5
+ m_Name: Toggle
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1950592167
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1950592166}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 913463862}
+ m_Father: {fileID: 1300133179}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 16, y: -20}
+ m_SizeDelta: {x: 32, y: 32}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1950592168
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1950592166}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Navigation:
+ m_Mode: 3
+ m_WrapAround: 0
+ m_SelectOnUp: {fileID: 0}
+ m_SelectOnDown: {fileID: 0}
+ m_SelectOnLeft: {fileID: 0}
+ m_SelectOnRight: {fileID: 0}
+ m_Transition: 1
+ m_Colors:
+ m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
+ m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
+ m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
+ m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
+ m_ColorMultiplier: 1
+ m_FadeDuration: 0.1
+ m_SpriteState:
+ m_HighlightedSprite: {fileID: 0}
+ m_PressedSprite: {fileID: 0}
+ m_SelectedSprite: {fileID: 0}
+ m_DisabledSprite: {fileID: 0}
+ m_AnimationTriggers:
+ m_NormalTrigger: Normal
+ m_HighlightedTrigger: Highlighted
+ m_PressedTrigger: Pressed
+ m_SelectedTrigger: Selected
+ m_DisabledTrigger: Disabled
+ m_Interactable: 1
+ m_TargetGraphic: {fileID: 913463863}
+ toggleTransition: 1
+ graphic: {fileID: 406795638}
+ m_Group: {fileID: 0}
+ onValueChanged:
+ m_PersistentCalls:
+ m_Calls:
+ - m_Target: {fileID: 788904139}
+ m_TargetAssemblyTypeName: TempoDialog, Assembly-CSharp
+ m_MethodName: SwingDivisionToggle
+ m_Mode: 1
+ m_Arguments:
+ m_ObjectArgument: {fileID: 0}
+ m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
+ m_IntArgument: 0
+ m_FloatArgument: 0
+ m_StringArgument:
+ m_BoolArgument: 0
+ m_CallState: 2
+ m_IsOn: 0
--- !u!1 &1951710748
GameObject:
m_ObjectHideFlags: 0
@@ -49695,6 +51314,43 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2057361809}
m_CullTransparentMesh: 1
+--- !u!1 &2062943137
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2062943138}
+ m_Layer: 5
+ m_Name: Handle Slide Area
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2062943138
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2062943137}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 738634699}
+ m_Father: {fileID: 907963052}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: -20, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &2066632679
GameObject:
m_ObjectHideFlags: 0
@@ -49821,6 +51477,143 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2067576960}
m_CullTransparentMesh: 1
+--- !u!1 &2073774545
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2073774546}
+ - component: {fileID: 2073774548}
+ - component: {fileID: 2073774547}
+ m_Layer: 5
+ m_Name: SliderEnd
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2073774546
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2073774545}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 923757708}
+ m_RootOrder: 2
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 1}
+ m_AnchorMax: {x: 0, y: 1}
+ m_AnchoredPosition: {x: 355, y: -20}
+ m_SizeDelta: {x: 98, y: 50}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2073774547
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2073774545}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_text: 100%
+ m_isRightToLeft: 0
+ m_fontAsset: {fileID: 11400000, guid: 4810e200fa0cb24438bac52343d7674b, type: 2}
+ m_sharedMaterial: {fileID: 8580487687356851718, guid: 4810e200fa0cb24438bac52343d7674b, type: 2}
+ m_fontSharedMaterials: []
+ m_fontMaterial: {fileID: 0}
+ m_fontMaterials: []
+ m_fontColor32:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontColor: {r: 1, g: 1, b: 1, a: 1}
+ m_enableVertexGradient: 0
+ m_colorMode: 3
+ m_fontColorGradient:
+ topLeft: {r: 1, g: 1, b: 1, a: 1}
+ topRight: {r: 1, g: 1, b: 1, a: 1}
+ bottomLeft: {r: 1, g: 1, b: 1, a: 1}
+ bottomRight: {r: 1, g: 1, b: 1, a: 1}
+ m_fontColorGradientPreset: {fileID: 0}
+ m_spriteAsset: {fileID: 0}
+ m_tintAllSprites: 0
+ m_StyleSheet: {fileID: 0}
+ m_TextStyleHashCode: -1183493901
+ m_overrideHtmlColors: 0
+ m_faceColor:
+ serializedVersion: 2
+ rgba: 4294967295
+ m_fontSize: 26
+ m_fontSizeBase: 26
+ m_fontWeight: 400
+ m_enableAutoSizing: 0
+ m_fontSizeMin: 18
+ m_fontSizeMax: 72
+ m_fontStyle: 0
+ m_HorizontalAlignment: 1
+ m_VerticalAlignment: 512
+ m_textAlignment: 65535
+ m_characterSpacing: 0
+ m_wordSpacing: 0
+ m_lineSpacing: 0
+ m_lineSpacingMax: 0
+ m_paragraphSpacing: 0
+ m_charWidthMaxAdj: 0
+ m_TextWrappingMode: 1
+ m_wordWrappingRatios: 0.4
+ m_overflowMode: 0
+ m_linkedTextComponent: {fileID: 0}
+ parentLinkedComponent: {fileID: 0}
+ m_enableKerning: 1
+ m_ActiveFontFeatures: 6e72656b
+ m_enableExtraPadding: 0
+ checkPaddingRequired: 0
+ m_isRichText: 1
+ m_EmojiFallbackSupport: 1
+ m_parseCtrlCharacters: 1
+ m_isOrthographic: 1
+ m_isCullingEnabled: 0
+ m_horizontalMapping: 0
+ m_verticalMapping: 0
+ m_uvLineOffset: 0
+ m_geometrySortingOrder: 0
+ m_IsTextObjectScaleStatic: 0
+ m_VertexBufferAutoSizeReduction: 0
+ m_useMaxVisibleDescender: 1
+ m_pageToDisplay: 1
+ m_margin: {x: 0, y: 0, z: 0, w: 0}
+ m_isUsingLegacyAnimationComponent: 0
+ m_isVolumetricText: 0
+ m_hasFontAssetChanged: 0
+ m_baseMaterial: {fileID: 0}
+ m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
+--- !u!222 &2073774548
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2073774545}
+ m_CullTransparentMesh: 1
--- !u!1 &2080479825
GameObject:
m_ObjectHideFlags: 0
@@ -50278,6 +52071,82 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2090385544}
m_CullTransparentMesh: 1
+--- !u!1 &2092926358
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2092926359}
+ - component: {fileID: 2092926361}
+ - component: {fileID: 2092926360}
+ m_Layer: 5
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2092926359
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2092926358}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 907963052}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0.25}
+ m_AnchorMax: {x: 1, y: 0.75}
+ m_AnchoredPosition: {x: 0, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &2092926360
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2092926358}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_RaycastTarget: 1
+ m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
+ m_Maskable: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
+ m_Type: 1
+ m_PreserveAspect: 0
+ m_FillCenter: 1
+ m_FillMethod: 4
+ m_FillAmount: 1
+ m_FillClockwise: 1
+ m_FillOrigin: 0
+ m_UseSpriteMesh: 0
+ m_PixelsPerUnitMultiplier: 1
+--- !u!222 &2092926361
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2092926358}
+ m_CullTransparentMesh: 1
--- !u!1 &2094676608
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/Conductor.cs b/Assets/Scripts/Conductor.cs
index ecf10bd0..0546fc4f 100644
--- a/Assets/Scripts/Conductor.cs
+++ b/Assets/Scripts/Conductor.cs
@@ -5,7 +5,6 @@ using UnityEngine;
using Jukebox;
using HeavenStudio.Util;
-using System.Data.Common;
namespace HeavenStudio
{
@@ -20,13 +19,15 @@ namespace HeavenStudio
public List addedPitchChanges = new List();
+ public GameManager gameManager;
+
// Song beats per minute
// This is determined by the song you're trying to sync up to
- public float songBpm;
+ public float songBpm { get; private set; }
// The number of seconds for each song beat
public float secPerBeat => (float)secPerBeatAsDouble;
- public double secPerBeatAsDouble;
+ public double secPerBeatAsDouble { get; private set; }
// The number of seconds for each song beat, inversely scaled to song pitch (higer pitch = shorter time)
public float pitchedSecPerBeat => (float)pitchedSecPerBeatAsDouble;
@@ -38,9 +39,11 @@ namespace HeavenStudio
public double songPositionAsDouble => songPos;
// Current song position, in beats
- public double songPosBeat; // for Conductor use only
- public float songPositionInBeats => (float)songPosBeat;
- public double songPositionInBeatsAsDouble => songPosBeat;
+ public double songPosBeat { get; private set; }
+ public float songPositionInBeats => (float)songPositionInBeatsAsDouble;
+ public double songPositionInBeatsAsDouble { get; private set; }
+ public float unswungSongPositionInBeats => (float)songPosBeat;
+ public double unswungSongPositionInBeatsAsDouble => songPosBeat;
// Current time of the song
private double time;
@@ -79,7 +82,7 @@ namespace HeavenStudio
// Metronome tick sound enabled
public bool metronome = false;
- Util.Sound metronomeSound;
+ Util.MultiSound metronomeSound;
private int _metronomeTally = 0;
// pitch values
@@ -93,12 +96,14 @@ namespace HeavenStudio
private float timelineVolume = 1f;
private float minigameVolume = 1f;
- public void SetTimelinePitch(float pitch)
+ const bool doPitchResync = true;
+
+ public void SetTimelinePitch(float pitch, bool resync = false)
{
- if (isPaused) return;
+ if (isPaused || deferTimeKeeping) return;
if (pitch != 0 && pitch != timelinePitch)
{
- Debug.Log("added pitch change " + pitch * minigamePitch + " at" + absTime);
+ // Debug.Log("added pitch change " + pitch * minigamePitch + " at " + absTime);
addedPitchChanges.Add(new AddedPitchChange { time = absTime, pitch = pitch * minigamePitch });
}
@@ -106,15 +111,22 @@ namespace HeavenStudio
if (musicSource != null && musicSource.clip != null)
{
musicSource.pitch = SongPitch;
+ if (doPitchResync && isPlaying && resync && !deferTimeKeeping)
+ {
+ time = MapTimeToPitchChanges(absTime + absTimeAdjust);
+ songPos = startPos + time;
+ songPosBeat = GetBeatFromSongPos(songPos);
+ SeekMusicToTime(songPos, firstBeatOffset);
+ }
}
}
- public void SetMinigamePitch(float pitch)
+ public void SetMinigamePitch(float pitch, bool resync = false)
{
- if (isPaused || !isPlaying) return;
+ if (isPaused || deferTimeKeeping || !isPlaying) return;
if (pitch != 0 && pitch != minigamePitch)
{
- Debug.Log("added pitch change " + pitch * timelinePitch + " at" + absTime);
+ // Debug.Log("added pitch change " + pitch * timelinePitch + " at " + absTime);
addedPitchChanges.Add(new AddedPitchChange { time = absTime, pitch = pitch * timelinePitch });
}
@@ -122,6 +134,13 @@ namespace HeavenStudio
if (musicSource != null && musicSource.clip != null)
{
musicSource.pitch = SongPitch;
+ if (doPitchResync && isPlaying && resync && !deferTimeKeeping)
+ {
+ time = MapTimeToPitchChanges(absTime + absTimeAdjust);
+ songPos = startPos + time;
+ songPosBeat = GetBeatFromSongPos(songPos);
+ SeekMusicToTime(songPos, firstBeatOffset);
+ }
}
}
@@ -141,12 +160,10 @@ namespace HeavenStudio
public void SetBeat(double beat)
{
- var chart = GameManager.instance.Beatmap;
+ var chart = gameManager.Beatmap;
double offset = chart.data.offset;
startPos = GetSongPosFromBeat(beat);
- double dspTime = AudioSettings.dspTime;
-
time = startPos;
firstBeatOffset = offset;
@@ -154,13 +171,15 @@ namespace HeavenStudio
songPosBeat = GetBeatFromSongPos(time);
- GameManager.instance.SetCurrentEventToClosest(beat);
+ gameManager.SetCurrentEventToClosest(beat);
}
public void PlaySetup(double beat)
{
deferTimeKeeping = true;
songPosBeat = beat;
+ absTime = 0;
+ startTime = DateTime.Now;
}
public void Play(double beat)
@@ -183,7 +202,7 @@ namespace HeavenStudio
SetMinigameVolume(1f);
}
- RiqBeatmap chart = GameManager.instance.Beatmap;
+ RiqBeatmap chart = gameManager.Beatmap;
double offset = chart.data.offset;
double dspTime = AudioSettings.dspTime;
dspStart = dspTime;
@@ -215,6 +234,7 @@ namespace HeavenStudio
_metronomeTally = 0;
startTime = DateTime.Now;
+ absTime = 0;
absTimeAdjust = 0;
deferTimeKeeping = musicSource.clip != null;
@@ -232,7 +252,8 @@ namespace HeavenStudio
{
deferTimeKeeping = false;
// Debug.Log($"dsptime: {dsp}, deferred timekeeping for {DateTime.Now - startTime} seconds (delta dsp {dsp - dspStart})");
- startTime += TimeSpan.FromSeconds(dsp - dspStart);
+ startTime = DateTime.Now;
+ absTime = 0;
absTimeAdjust = 0;
dspStart = dsp;
}
@@ -243,8 +264,8 @@ namespace HeavenStudio
if (!isPlaying) return;
isPlaying = false;
isPaused = true;
- deferTimeKeeping = false;
SetMinigamePitch(1f);
+ deferTimeKeeping = false;
musicSource.Stop();
Util.SoundByte.PauseOneShots();
@@ -265,8 +286,8 @@ namespace HeavenStudio
isPlaying = false;
isPaused = false;
- deferTimeKeeping = false;
SetMinigamePitch(1f);
+ deferTimeKeeping = false;
musicSource.Stop();
}
@@ -391,6 +412,7 @@ namespace HeavenStudio
songPos = startPos + time;
songPosBeat = GetBeatFromSongPos(songPos);
+ songPositionInBeatsAsDouble = GetSwungBeat(songPosBeat);
}
}
@@ -422,7 +444,14 @@ namespace HeavenStudio
{
if (songPositionInBeatsAsDouble >= Math.Ceiling(startBeat) + _metronomeTally)
{
- if (metronome) metronomeSound = Util.SoundByte.PlayOneShot("metronome", Math.Ceiling(startBeat) + _metronomeTally);
+ // if (metronome) metronomeSound = Util.SoundByte.PlayOneShot("metronome", Math.Ceiling(startBeat) + _metronomeTally);
+ if (metronome)
+ {
+ metronomeSound = Util.MultiSound.Play(new List {
+ new Util.MultiSound.Sound("metronome", Math.Ceiling(startBeat) + _metronomeTally),
+ new Util.MultiSound.Sound("metronome", Math.Ceiling(startBeat) + _metronomeTally + 0.5, 1.5f, 0.5f)
+ }, false, true);
+ }
_metronomeTally++;
}
}
@@ -430,7 +459,7 @@ namespace HeavenStudio
{
if (metronomeSound != null)
{
- metronomeSound.Stop();
+ // metronomeSound.StopAll();
metronomeSound = null;
}
}
@@ -451,9 +480,9 @@ namespace HeavenStudio
return result;
}
- public float GetLoopPositionFromBeat(float beatOffset, float length, bool beatClamp = true)
+ public float GetLoopPositionFromBeat(float beatOffset, float length, bool beatClamp = true, bool ignoreSwing = true)
{
- float beat = songPositionInBeats;
+ float beat = ignoreSwing ? unswungSongPositionInBeats : songPositionInBeats;
if (beatClamp)
{
beat = Mathf.Max(beat, 0);
@@ -461,9 +490,9 @@ namespace HeavenStudio
return Mathf.Repeat((beat / length) + beatOffset, 1);
}
- public float GetPositionFromBeat(double startBeat, double length, bool beatClamp = true)
+ public float GetPositionFromBeat(double startBeat, double length, bool beatClamp = true, bool ignoreSwing = true)
{
- float beat = songPositionInBeats;
+ float beat = ignoreSwing ? unswungSongPositionInBeats : songPositionInBeats;
if (beatClamp)
{
beat = Mathf.Max(beat, 0);
@@ -474,71 +503,113 @@ namespace HeavenStudio
private List GetSortedTempoChanges()
{
- GameManager.instance.SortEventsList();
- return GameManager.instance.Beatmap.TempoChanges;
+ gameManager.SortEventsList();
+ return gameManager.Beatmap.TempoChanges;
}
- public float GetBpmAtBeat(double beat, out float swingRatio)
+ public float GetBpmAtBeat(double beat, out float swingRatio, out float swingDivision)
{
swingRatio = 0.5f;
- var chart = GameManager.instance.Beatmap;
+ swingDivision = 1f;
+ var chart = gameManager.Beatmap;
if (chart.TempoChanges.Count == 0)
return 120f;
- float bpm = chart.TempoChanges[0]["tempo"];
- swingRatio = chart.TempoChanges[0]["swing"] + 0.5f;
+ RiqEntity tempo = null;
foreach (RiqEntity t in chart.TempoChanges)
{
if (t.beat > beat)
{
break;
}
- bpm = t["tempo"];
- swingRatio = t["swing"] + 0.5f;
+ tempo = t;
}
-
- return bpm;
+ tempo ??= chart.TempoChanges[0];
+ swingRatio = tempo["swing"] + 0.5f;
+ swingDivision = tempo["swingDivision"] ?? 1f;
+ return tempo["tempo"];
}
public float GetBpmAtBeat(double beat)
{
- return GetBpmAtBeat(beat, out _);
+ return GetBpmAtBeat(beat, out _, out _);
}
- public float GetSwingRatioAtBeat(double beat)
+ public float GetSwingRatioAtBeat(double beat, out float swingDivision)
{
float swingRatio;
- GetBpmAtBeat(beat, out swingRatio);
+ GetBpmAtBeat(beat, out swingRatio, out swingDivision);
return swingRatio;
}
- public double GetSwungBeat(double beat, float ratio)
+ public double GetSwungBeat(double beat)
{
- return beat + GetSwingOffset(beat, ratio);
+ float ratio = GetSwingRatioAtBeat(beat, out float division);
+ int floor = (int)Math.Floor(beat / division);
+
+ return (floor * division) + GetSwingOffset(beat, ratio, division);
}
- public double GetSwingOffset(double beatFrac, float ratio)
+ public double GetSwungBeat(double beat, float ratio, float division)
{
- beatFrac %= 1;
- if (beatFrac <= 0.5)
+ int floor = (int)Math.Floor(beat / division);
+ return (floor * division) + GetSwingOffset(beat, ratio, division);
+ }
+
+ public double GetSwingOffset(double beatFrac, float ratio, float division)
+ {
+ beatFrac %= division;
+ if (beatFrac <= ratio)
{
return 0.5 / ratio * beatFrac;
}
else
{
- return 0.5 + (0.5 / (1f - ratio) * (beatFrac - ratio));
+ return 0.5 + 0.5 / (1 - ratio) * (beatFrac - ratio);
}
}
- public double GetSongPosFromBeat(double beat)
+ public double GetUnSwungBeat(double beat)
{
- var chart = GameManager.instance.Beatmap;
+ float ratio = GetSwingRatioAtBeat(beat, out float division);
+ int floor = (int)Math.Floor(beat / division);
+
+ return (floor * division) + GetUnSwingOffset(beat, ratio, division);
+ }
+
+ public double GetUnSwungBeat(double beat, float ratio, float division)
+ {
+ int floor = (int)Math.Floor(beat / division);
+ return (floor * division) + GetUnSwingOffset(beat, ratio, division);
+ }
+
+ public double GetUnSwingOffset(double beatFrac, float ratio, float division)
+ {
+ beatFrac %= division;
+ if (beatFrac <= ratio)
+ {
+ return 2 * ratio * beatFrac;
+ }
+ else
+ {
+ return 2 * (beatFrac - 0.5f) * (1f - ratio) + ratio;
+ }
+ }
+
+ public double GetSongPosFromBeat(double beat, bool ignoreSwing = false)
+ {
+ var chart = gameManager.Beatmap;
float bpm = 120f;
double counter = 0f;
double lastTempoChangeBeat = 0f;
+ if (!ignoreSwing)
+ {
+ beat = GetUnSwungBeat(beat);
+ }
+
foreach (RiqEntity t in chart.TempoChanges)
{
if (t.beat > beat)
@@ -572,7 +643,7 @@ namespace HeavenStudio
double counterSeconds = 0;
float lastBpm = 120f;
- foreach (RiqEntity t in GameManager.instance.Beatmap.TempoChanges)
+ foreach (RiqEntity t in gameManager.Beatmap.TempoChanges)
{
double beatToNext = t.beat - lastTempoChangeBeat;
double secToNext = BeatsToSecs(beatToNext, lastBpm);
diff --git a/Assets/Scripts/EventCaller.cs b/Assets/Scripts/EventCaller.cs
index 65426e95..b4fd4ace 100644
--- a/Assets/Scripts/EventCaller.cs
+++ b/Assets/Scripts/EventCaller.cs
@@ -1,5 +1,6 @@
using System;
using System.Linq;
+using BurstLinq;
using System.Collections.Generic;
using UnityEngine;
using Jukebox;
diff --git a/Assets/Scripts/GameCamera.cs b/Assets/Scripts/GameCamera.cs
index e3b4cc63..efb4d2de 100644
--- a/Assets/Scripts/GameCamera.cs
+++ b/Assets/Scripts/GameCamera.cs
@@ -4,6 +4,7 @@ using UnityEngine;
using HeavenStudio.Util;
using System.Linq;
+using BurstLinq;
using Jukebox;
using Jukebox.Legacy;
diff --git a/Assets/Scripts/GameInitializer.cs b/Assets/Scripts/GameInitializer.cs
index 18eff4d8..217024e6 100644
--- a/Assets/Scripts/GameInitializer.cs
+++ b/Assets/Scripts/GameInitializer.cs
@@ -86,11 +86,13 @@ namespace HeavenStudio
GameObject Conductor = new GameObject();
Conductor.name = "Conductor";
AudioSource source = Conductor.AddComponent();
- Conductor.AddComponent();
- Conductor.GetComponent().musicSource = source;
+ Conductor cond = Conductor.AddComponent();
+ cond.musicSource = source;
source.priority = 255;
source.outputAudioMixerGroup = Settings.GetMusicMixer();
- // Conductor.AddComponent();
+ cond.gameManager = gameManager;
+
+ gameManager.conductor = cond;
GlobalGameManager.GameRenderTexture = gameRenderTexture;
GlobalGameManager.OverlayRenderTexture = overlayRenderTexture;
diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs
index 9f3b37a2..79ca0a63 100644
--- a/Assets/Scripts/GameManager.cs
+++ b/Assets/Scripts/GameManager.cs
@@ -2,6 +2,8 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using BurstLinq;
+
using UnityEngine;
using UnityEngine.Pool;
@@ -87,6 +89,7 @@ namespace HeavenStudio
public static GameManager instance { get; private set; }
private EventCaller eventCaller;
+ public Conductor conductor;
// average input accuracy (msec)
List inputOffsetSamples = new List();
@@ -173,9 +176,9 @@ namespace HeavenStudio
}
SortEventsList();
- Conductor.instance.SetBpm(Beatmap.TempoChanges[0]["tempo"]);
- Conductor.instance.SetVolume(Beatmap.VolumeChanges[0]["volume"]);
- Conductor.instance.firstBeatOffset = Beatmap.data.offset;
+ conductor.SetBpm(Beatmap.TempoChanges[0]["tempo"]);
+ conductor.SetVolume(Beatmap.VolumeChanges[0]["volume"]);
+ conductor.firstBeatOffset = Beatmap.data.offset;
if (!preLoaded)
{
@@ -233,14 +236,17 @@ namespace HeavenStudio
public void NewRemix()
{
- Debug.Log("Creating new remix");
AudioLoadDone = false;
Beatmap = new("1", "HeavenStudio");
Beatmap.data.properties = new(Minigames.propertiesModel);
- Beatmap.AddNewTempoChange(0, 120f);
+
+ RiqEntity t = Beatmap.AddNewTempoChange(0, 120f);
+ t.CreateProperty("swingDivision", 1f);
+
Beatmap.AddNewVolumeChange(0, 100f);
+
Beatmap.data.offset = 0f;
- Conductor.instance.musicSource.clip = null;
+ conductor.musicSource.clip = null;
RiqFileHandler.WriteRiq(Beatmap);
AudioLoadDone = true;
}
@@ -263,7 +269,7 @@ namespace HeavenStudio
catch (System.IO.FileNotFoundException f)
{
Debug.LogWarning("chart has no music: " + f.Message);
- Conductor.instance.musicSource.clip = null;
+ conductor.musicSource.clip = null;
AudioLoadDone = true;
yield break;
}
@@ -277,7 +283,7 @@ namespace HeavenStudio
}
yield return current;
}
- Conductor.instance.musicSource.clip = RiqFileHandler.StreamedAudioClip;
+ conductor.musicSource.clip = RiqFileHandler.StreamedAudioClip;
AudioLoadDone = true;
}
@@ -299,9 +305,9 @@ namespace HeavenStudio
if (!editor)
StartCoroutine(LoadMusic());
SortEventsList();
- Conductor.instance.SetBpm(Beatmap.TempoChanges[0]["tempo"]);
- Conductor.instance.SetVolume(Beatmap.VolumeChanges[0]["volume"]);
- Conductor.instance.firstBeatOffset = Beatmap.data.offset;
+ conductor.SetBpm(Beatmap.TempoChanges[0]["tempo"]);
+ conductor.SetVolume(Beatmap.VolumeChanges[0]["volume"]);
+ conductor.firstBeatOffset = Beatmap.data.offset;
if (!playMode)
{
Stop(0);
@@ -444,7 +450,7 @@ namespace HeavenStudio
var inf = GetGameInfo(gameName);
if (inf != null && inf.usesAssetBundle && inf.AssetsLoaded && !inf.SequencesPreloaded)
{
- Debug.Log($"Preparing game {gameName}");
+ // Debug.Log($"Preparing game {gameName}");
PreloadGameSequences(gameName);
}
eventCaller.CallPreEvent(entity);
@@ -459,32 +465,31 @@ namespace HeavenStudio
{
if (BeatmapEntities() < 1)
return;
- if (!Conductor.instance.isPlaying)
+ if (conductor.WaitingForDsp || !conductor.isPlaying)
return;
- Conductor cond = Conductor.instance;
- double clampedBeat = Math.Max(cond.songPositionInBeatsAsDouble, 0);
+ double clampedBeat = Math.Max(conductor.songPositionInBeatsAsDouble, 0);
if (currentTempoEvent < Beatmap.TempoChanges.Count && currentTempoEvent >= 0)
{
- if (cond.songPositionInBeatsAsDouble >= tempoBeats[currentTempoEvent])
+ if (conductor.songPositionInBeatsAsDouble >= tempoBeats[currentTempoEvent])
{
- cond.SetBpm(Beatmap.TempoChanges[currentTempoEvent]["tempo"]);
+ conductor.SetBpm(Beatmap.TempoChanges[currentTempoEvent]["tempo"]);
currentTempoEvent++;
}
}
if (currentVolumeEvent < Beatmap.VolumeChanges.Count && currentVolumeEvent >= 0)
{
- if (cond.songPositionInBeatsAsDouble >= volumeBeats[currentVolumeEvent])
+ if (conductor.songPositionInBeatsAsDouble >= volumeBeats[currentVolumeEvent])
{
- cond.SetVolume(Beatmap.VolumeChanges[currentVolumeEvent]["volume"]);
+ conductor.SetVolume(Beatmap.VolumeChanges[currentVolumeEvent]["volume"]);
currentVolumeEvent++;
}
}
if (currentSectionEvent < Beatmap.SectionMarkers.Count && currentSectionEvent >= 0)
{
- if (cond.songPositionInBeatsAsDouble >= sectionBeats[currentSectionEvent])
+ if (conductor.songPositionInBeatsAsDouble >= sectionBeats[currentSectionEvent])
{
RiqEntity marker = Beatmap.SectionMarkers[currentSectionEvent];
if (!string.IsNullOrEmpty(marker["sectionName"]))
@@ -526,7 +531,7 @@ namespace HeavenStudio
}
}
- if (cond.songPositionInBeatsAsDouble >= Math.Ceiling(_playStartBeat) + _pulseTally)
+ if (conductor.songPositionInBeatsAsDouble >= Math.Ceiling(_playStartBeat) + _pulseTally)
{
if (minigame != null) minigame.OnBeatPulse(Math.Ceiling(_playStartBeat) + _pulseTally);
onBeatPulse?.Invoke(Math.Ceiling(_playStartBeat) + _pulseTally);
@@ -543,7 +548,7 @@ namespace HeavenStudio
List entitiesInRange = ListPool.Get();
List fxEntities = ListPool.Get();
// allows for multiple events on the same beat to be executed on the same frame, so no more 1-frame delay
- while (currentEvent < eventBeats.Count && clampedBeat >= eventBeats[currentEvent] && Conductor.instance.isPlaying)
+ while (currentEvent < eventBeats.Count && clampedBeat >= eventBeats[currentEvent] && this.conductor.isPlaying)
{
fxEntities.Clear();
entitiesInRange.Clear();
@@ -599,9 +604,9 @@ namespace HeavenStudio
}
else
{
- double currectSectionStart = cond.GetSongPosFromBeat(currentSection.beat);
+ double currectSectionStart = conductor.GetSongPosFromBeat(currentSection.beat);
- SectionProgress = (cond.songPosition - currectSectionStart) / (cond.GetSongPosFromBeat(nextSectionBeat) - currectSectionStart);
+ SectionProgress = (conductor.songPosition - currectSectionStart) / (conductor.GetSongPosFromBeat(nextSectionBeat) - currectSectionStart);
}
}
@@ -609,10 +614,10 @@ namespace HeavenStudio
{
OverlaysManager.instance.TogleOverlaysVisibility(Editor.Editor.instance == null || Editor.Editor.instance.fullscreen || ((PersistentDataManager.gameSettings.overlaysInEditor) && (!Editor.Editor.instance.fullscreen)) || HeavenStudio.Editor.GameSettings.InPreview);
- if (!Conductor.instance.isPlaying)
+ if (!conductor.isPlaying)
return;
- if (Conductor.instance.songPositionInBeatsAsDouble >= Math.Ceiling(_playStartBeat) + _latePulseTally)
+ if (conductor.songPositionInBeatsAsDouble >= Math.Ceiling(_playStartBeat) + _latePulseTally)
{
if (minigame != null) minigame.OnLateBeatPulse(Math.Ceiling(_playStartBeat) + _latePulseTally);
onBeatPulse?.Invoke(Math.Ceiling(_playStartBeat) + _latePulseTally);
@@ -668,8 +673,7 @@ namespace HeavenStudio
public void Play(double beat, float delay = 0f)
{
- bool paused = Conductor.instance.isPaused;
- Debug.Log("Playing at " + beat);
+ bool paused = conductor.isPaused;
_playStartBeat = beat;
_pulseTally = 0;
_latePulseTally = 0;
@@ -711,14 +715,16 @@ namespace HeavenStudio
private IEnumerator PlayCo(double beat, float delay = 0f)
{
- bool paused = Conductor.instance.isPaused;
+ bool paused = conductor.isPaused;
if (!paused)
{
- Conductor.instance.SetBpm(Beatmap.TempoChanges[0]["tempo"]);
- Conductor.instance.SetVolume(Beatmap.VolumeChanges[0]["volume"]);
- Conductor.instance.firstBeatOffset = Beatmap.data.offset;
+ conductor.SetBpm(Beatmap.TempoChanges[0]["tempo"]);
+ conductor.SetVolume(Beatmap.VolumeChanges[0]["volume"]);
+ conductor.firstBeatOffset = Beatmap.data.offset;
+ conductor.PlaySetup(beat);
SetCurrentEventToClosest(beat);
+ Debug.Log("Playing at " + beat);
KillAllSounds();
if (delay > 0)
@@ -726,7 +732,6 @@ namespace HeavenStudio
yield return new WaitForSeconds(delay);
}
- Conductor.instance.PlaySetup(beat);
Minigame miniGame = null;
if (minigameObj != null && minigameObj.TryGetComponent(out miniGame))
{
@@ -765,21 +770,21 @@ namespace HeavenStudio
CircleCursor.LockCursor(true);
}
Application.backgroundLoadingPriority = ThreadPriority.Low;
- Conductor.instance.Play(beat);
+ conductor.Play(beat);
}
public void Pause()
{
- Conductor.instance.Pause();
+ conductor.Pause();
Util.SoundByte.PauseOneShots();
- onPause?.Invoke(Conductor.instance.songPositionInBeatsAsDouble);
+ onPause?.Invoke(conductor.songPositionInBeatsAsDouble);
canInput = false;
}
public void Stop(double beat, bool restart = false, float restartDelay = 0f)
{
// I feel like I should standardize the names
- if (Conductor.instance.isPlaying)
+ if (conductor.isPlaying)
{
SkillStarManager.instance.KillStar();
TimingAccuracyDisplay.instance.StopStarFlash();
@@ -796,8 +801,8 @@ namespace HeavenStudio
}
}
- Conductor.instance.Stop(beat);
- SetCurrentEventToClosest(beat);
+ conductor.Stop(beat);
+ conductor.SetBeat(beat);
KillAllSounds();
if (restart)
@@ -816,6 +821,10 @@ namespace HeavenStudio
GlobalGameManager.LoadScene("Judgement", 0.35f, 0f, DestroyGame);
CircleCursor.LockCursor(false);
}
+ else
+ {
+ conductor.SetBeat(beat);
+ }
Application.backgroundLoadingPriority = ThreadPriority.Normal;
}
@@ -830,6 +839,8 @@ namespace HeavenStudio
SoundByte.PreloadAudioClipAsync("skillStar");
SoundByte.PreloadAudioClipAsync("perfectMiss");
+ conductor.SetBeat(beat);
+
WaitUntil yieldOverlays = new WaitUntil(() => OverlaysManager.OverlaysReady);
WaitUntil yieldBeatmap = new WaitUntil(() => Beatmap != null && BeatmapEntities() > 0);
WaitUntil yieldAudio = new WaitUntil(() => AudioLoadDone || (ChartLoadError && !GlobalGameManager.IsShowingDialog));
@@ -842,16 +853,16 @@ namespace HeavenStudio
}
// wait for overlays to be ready
- Debug.Log("waiting for overlays");
+ // Debug.Log("waiting for overlays");
yield return yieldOverlays;
// wait for beatmap to be loaded
- Debug.Log("waiting for beatmap");
+ // Debug.Log("waiting for beatmap");
yield return yieldBeatmap;
//wait for audio clip to be loaded
- Debug.Log("waiting for audio");
+ // Debug.Log("waiting for audio");
yield return yieldAudio;
//wait for games to be loaded
- Debug.Log("waiting for minigames");
+ // Debug.Log("waiting for minigames");
if (yieldGame != null)
yield return yieldGame;
@@ -871,7 +882,7 @@ namespace HeavenStudio
public void KillAllSounds()
{
- Debug.Log("Killing all sounds");
+ // Debug.Log("Killing all sounds");
SoundObjects.Clear();
SoundByte.KillOneShots();
}
@@ -895,9 +906,10 @@ namespace HeavenStudio
allGameSwitches = EventCaller.GetAllInGameManagerList("gameManager", new string[] { "switchGame" });
preSequenceBeats = new List();
+ string[] seekEntityDatamodel;
foreach (RiqEntity entity in Beatmap.Entities)
{
- string[] seekEntityDatamodel = entity.datamodel.Split('/');
+ seekEntityDatamodel = entity.datamodel.Split('/');
double seekTime = eventCaller.GetGameAction(seekEntityDatamodel[0], seekEntityDatamodel[1]).preFunctionLength;
preSequenceBeats.Add(entity.beat - seekTime);
}
@@ -1023,12 +1035,12 @@ namespace HeavenStudio
if (allEnds.Count > 0)
endBeat = allEnds.Select(c => c.beat).Min();
else
- endBeat = Conductor.instance.SongLengthInBeatsAsDouble();
+ endBeat = conductor.SongLengthInBeatsAsDouble();
}
else
{
SetGame("noGame");
- endBeat = Conductor.instance.SongLengthInBeatsAsDouble();
+ endBeat = conductor.SongLengthInBeatsAsDouble();
}
if (Beatmap.TempoChanges.Count > 0)
@@ -1112,9 +1124,9 @@ namespace HeavenStudio
}
}
- while (beat + 0.25 > Math.Max(Conductor.instance.songPositionInBeatsAsDouble, 0))
+ while (beat + 0.25 > Math.Max(conductor.songPositionInBeatsAsDouble, 0))
{
- if (!Conductor.instance.isPlaying)
+ if (!conductor.isPlaying)
{
HeavenStudio.StaticCamera.instance.ToggleCanvasVisibility(true);
SetAmbientGlowToCurrentMinigameColor();
@@ -1141,7 +1153,7 @@ namespace HeavenStudio
this.minigame = minigame;
minigame.minigameName = game;
minigame.gameManager = this;
- minigame.conductor = Conductor.instance;
+ minigame.conductor = conductor;
}
Vector3 originalScale = minigameObj.transform.localScale;
minigameObj.transform.parent = eventCaller.GamesHolder.transform;
@@ -1165,7 +1177,7 @@ namespace HeavenStudio
{
if (!(inf.AssetsLoaded || inf.AlreadyLoading))
{
- Debug.Log($"ASYNC loading assetbundles for game {game}");
+ // Debug.Log($"ASYNC loading assetbundles for game {game}");
inf.LoadAssetsAsync().Forget();
}
yield return new WaitUntil(() => inf.AssetsLoaded);
@@ -1300,8 +1312,8 @@ namespace HeavenStudio
private bool SongPosLessThanClipLength(float t)
{
- if (Conductor.instance.musicSource.clip != null)
- return Conductor.instance.GetSongPosFromBeat(t) < Conductor.instance.musicSource.clip.length;
+ if (conductor.musicSource.clip != null)
+ return conductor.GetSongPosFromBeat(t) < conductor.musicSource.clip.length;
else
return true;
}
diff --git a/Assets/Scripts/Games/BlueBear/Treat.cs b/Assets/Scripts/Games/BlueBear/Treat.cs
index e8a9095b..bafe36aa 100644
--- a/Assets/Scripts/Games/BlueBear/Treat.cs
+++ b/Assets/Scripts/Games/BlueBear/Treat.cs
@@ -41,6 +41,7 @@ namespace HeavenStudio.Games.Scripts_BlueBear
path.positions[0].height = pathToCopy.positions[0].height;
path.positions[1].pos = pathToCopy.positions[1].pos;
game.ScheduleInput(startBeat, flyBeats, isCake ? BlueBear.InputAction_Left : BlueBear.InputAction_Right, Just, Out, Out);
+ startBeat = Conductor.instance.GetUnSwungBeat(startBeat);
Update();
}
@@ -52,7 +53,7 @@ namespace HeavenStudio.Games.Scripts_BlueBear
private void Update()
{
var cond = Conductor.instance;
- transform.localPosition = GetPathPositionFromBeat(path, cond.songPositionInBeatsAsDouble, startBeat);
+ transform.localPosition = GetPathPositionFromBeat(path, cond.unswungSongPositionInBeatsAsDouble, startBeat);
float flyPos = cond.GetPositionFromBeat(startBeat, flyBeats);
if (flyPos > 2f)
@@ -75,7 +76,7 @@ namespace HeavenStudio.Games.Scripts_BlueBear
SoundByte.PlayOneShotGame("blueBear/chompDonut");
}
- game.Bite(Conductor.instance.songPositionInBeatsAsDouble, isCake, hold);
+ game.Bite(Conductor.instance.unswungSongPositionInBeatsAsDouble, isCake, hold);
game.EatTreat();
SpawnCrumbs();
@@ -100,7 +101,7 @@ namespace HeavenStudio.Games.Scripts_BlueBear
path.positions[0].height = barelyHeight;
path.positions[0].duration = 1;
path.positions[1].pos = new Vector3(path.positions[0].pos.x + (isCake ? -barelyDistX : barelyDistX), path.positions[0].pos.y + barelyDistY);
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
Update();
return;
}
diff --git a/Assets/Scripts/Games/CatchyTune/Fruit.cs b/Assets/Scripts/Games/CatchyTune/Fruit.cs
index 41a16ec5..45d36eaa 100644
--- a/Assets/Scripts/Games/CatchyTune/Fruit.cs
+++ b/Assets/Scripts/Games/CatchyTune/Fruit.cs
@@ -74,11 +74,11 @@ namespace HeavenStudio.Games.Scripts_CatchyTune
{
if (barelyStart > 0f)
{
- anim.DoScaledAnimation("barely", barelyStart, isPineapple ? 2f : 1f, clamp: true);
+ anim.DoScaledAnimation("barely", Conductor.instance.GetUnSwungBeat(barelyStart), isPineapple ? 2f : 1f, clamp: true);
}
else
{
- anim.DoScaledAnimation("fruit bounce", startBeat, beatLength + (isPineapple ? 4f : 2f), clamp: true);
+ anim.DoScaledAnimation("fruit bounce", Conductor.instance.GetUnSwungBeat(startBeat), beatLength + (isPineapple ? 4f : 2f), clamp: true);
}
}
@@ -136,7 +136,7 @@ namespace HeavenStudio.Games.Scripts_CatchyTune
if (state <= -1f || state >= 1f)
{
//near miss (barely)
- barelyStart = Conductor.instance.songPositionInBeatsAsDouble;
+ barelyStart = Conductor.instance.unswungSongPositionInBeatsAsDouble;
game.catchBarely(side);
diff --git a/Assets/Scripts/Games/CropStomp/Veggie.cs b/Assets/Scripts/Games/CropStomp/Veggie.cs
index ee3b2d95..ea8a4747 100644
--- a/Assets/Scripts/Games/CropStomp/Veggie.cs
+++ b/Assets/Scripts/Games/CropStomp/Veggie.cs
@@ -131,7 +131,7 @@ namespace HeavenStudio.Games.Scripts_CropStomp
// var key2Pos = key2.Position;
// key2.Position = new Vector3(key2Pos.x, veggieTrans.position.y + 2f, key2Pos.z);
- pickedBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ pickedBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
SoundByte.PlayOneShot("miss");
@@ -222,11 +222,11 @@ namespace HeavenStudio.Games.Scripts_CropStomp
veggieState = 1;
game.ScheduleInput(targetBeat, isMole ? 0.5f : 1f, CropStomp.InputAction_FlickRelease, PickJust, PickMiss, Out);
- targetBeat = targetBeat + (isMole ? 0.5f : 1f);
+ targetBeat = cond.GetUnSwungBeat(targetBeat + (isMole ? 0.5f : 1f));
- stompedBeat = cond.songPositionInBeatsAsDouble;
+ stompedBeat = cond.unswungSongPositionInBeatsAsDouble;
- landBeat = targetBeat + (float)cond.SecsToBeats(Minigame.NgLateTime() - 1, cond.GetBpmAtBeat(targetBeat));
+ landBeat = targetBeat + cond.SecsToBeats(Minigame.NgLateTime() - 1, cond.GetBpmAtBeat(targetBeat));
if (autoTriggered)
{
@@ -261,12 +261,12 @@ namespace HeavenStudio.Games.Scripts_CropStomp
game.bodyAnim.DoScaledAnimationAsync("Pick", 0.5f);
game.isFlicking = true;
}
-
+
var key1 = game.pickCurve.KeyPoints[0];
var keyPos = key1.Position;
key1.Position = new Vector3(keyPos.x, veggieTrans.position.y, keyPos.z);
- pickedBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ pickedBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
if (!isMole)
{
diff --git a/Assets/Scripts/Games/DoubleDate/Basketball.cs b/Assets/Scripts/Games/DoubleDate/Basketball.cs
index 33b28abb..9c3cb875 100644
--- a/Assets/Scripts/Games/DoubleDate/Basketball.cs
+++ b/Assets/Scripts/Games/DoubleDate/Basketball.cs
@@ -25,7 +25,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
void Update()
{
- double beat = conductor.songPositionInBeatsAsDouble;
+ double beat = conductor.unswungSongPositionInBeatsAsDouble;
double height = 0f;
if (pathStartBeat > double.MinValue)
{
@@ -44,7 +44,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
game.ScheduleInput(beat, 1f, DoubleDate.InputAction_FlickPress, Just, Miss, Empty);
path = game.GetPath("BasketBallIn");
UpdateLastRealPos();
- pathStartBeat = beat - 1f;
+ pathStartBeat = Conductor.instance.GetUnSwungBeat(beat - 1f);
Vector3 pos = GetPathPositionFromBeat(path, pathStartBeat, pathStartBeat);
transform.position = pos;
@@ -65,7 +65,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
}),
});
UpdateLastRealPos();
- pathStartBeat = conductor.songPositionInBeatsAsDouble;
+ pathStartBeat = conductor.unswungSongPositionInBeatsAsDouble;
if (state >= 1f || state <= -1f)
{
path = game.GetPath("BasketBallNg" + (state > 0 ? "Late" : "Early"));
@@ -80,7 +80,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
void Hit()
{
UpdateLastRealPos();
- pathStartBeat = conductor.songPositionInBeatsAsDouble;
+ pathStartBeat = conductor.unswungSongPositionInBeatsAsDouble;
path = game.GetPath("BasketBallJust");
game.Kick(true, false, true, _jump);
SoundByte.PlayOneShotGame("doubleDate/kick");
diff --git a/Assets/Scripts/Games/DoubleDate/DoubleDate.cs b/Assets/Scripts/Games/DoubleDate/DoubleDate.cs
index d5c41ea6..1fe5df9a 100644
--- a/Assets/Scripts/Games/DoubleDate/DoubleDate.cs
+++ b/Assets/Scripts/Games/DoubleDate/DoubleDate.cs
@@ -261,8 +261,7 @@ namespace HeavenStudio.Games
void Update()
{
- var cond = Conductor.instance;
- if (cond.isPlaying && !cond.isPaused)
+ if (conductor.isPlaying && !conductor.isPaused)
{
if (queuedBalls.Count != 0)
{
@@ -286,7 +285,7 @@ namespace HeavenStudio.Games
}
else
{
- if ((!cond.isPaused) && queuedBalls.Count != 0)
+ if ((!conductor.isPaused) && queuedBalls.Count != 0)
{
queuedBalls.Clear();
}
@@ -352,7 +351,7 @@ namespace HeavenStudio.Games
{
boyAnim.DoScaledAnimationAsync(_isStaring ? "IdleBop2" : "IdleBop", _animSpeed);
}
- if (Conductor.instance.songPositionInBeatsAsDouble > lastGirlGacha)
+ if (conductor.songPositionInBeatsAsDouble > lastGirlGacha)
girlAnim.DoScaledAnimationAsync("GirlBop", _animSpeed);
weasels.Bop();
}
@@ -365,7 +364,7 @@ namespace HeavenStudio.Games
if (jump)
{
weasels.Jump();
- lastGirlGacha = Conductor.instance.songPositionInBeatsAsDouble + 0.5f;
+ lastGirlGacha = conductor.songPositionInBeatsAsDouble + 0.5f;
girlAnim.DoScaledAnimationAsync("GirlLookUp", _animSpeed);
}
else if (weaselsHappy) weasels.Happy();
@@ -373,7 +372,7 @@ namespace HeavenStudio.Games
{
BeatAction.New(instance, new List()
{
- new BeatAction.Action(Conductor.instance.songPositionInBeatsAsDouble + 1f, delegate
+ new BeatAction.Action(conductor.songPositionInBeatsAsDouble + 1f, delegate
{
leaves.Play();
treeAnim.DoScaledAnimationAsync("TreeRustle", _animSpeed);
@@ -470,11 +469,11 @@ namespace HeavenStudio.Games
public void MissKick(double beat, bool hit = false)
{
- lastGirlGacha = Conductor.instance.songPositionInBeatsAsDouble + 1.5f;
+ lastGirlGacha = conductor.songPositionInBeatsAsDouble + 1.5f;
girlAnim.DoScaledAnimationAsync("GirlSad", _animSpeed);
if (hit)
{
- lastHitWeasel = Conductor.instance.songPositionInBeatsAsDouble;
+ lastHitWeasel = conductor.songPositionInBeatsAsDouble;
BeatAction.New(this, new List()
{
new BeatAction.Action(beat - (0.25f/3f), delegate { weasels.Hit(beat); }),
@@ -482,7 +481,7 @@ namespace HeavenStudio.Games
}
else
{
- lastHitWeasel = Conductor.instance.songPositionInBeatsAsDouble;
+ lastHitWeasel = conductor.songPositionInBeatsAsDouble;
BeatAction.New(this, new List()
{
new BeatAction.Action(beat + 0.25, delegate { weasels.Hide(beat + 0.25f); }),
diff --git a/Assets/Scripts/Games/DoubleDate/Football.cs b/Assets/Scripts/Games/DoubleDate/Football.cs
index b0f025e0..63a35321 100644
--- a/Assets/Scripts/Games/DoubleDate/Football.cs
+++ b/Assets/Scripts/Games/DoubleDate/Football.cs
@@ -25,7 +25,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
void Update()
{
- double beat = conductor.songPositionInBeatsAsDouble;
+ double beat = conductor.unswungSongPositionInBeatsAsDouble;
double height = 0f;
if (pathStartBeat > double.MinValue)
{
@@ -44,7 +44,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
game.ScheduleInput(beat, 1.5f, DoubleDate.InputAction_FlickPress, Just, Miss, Empty);
path = game.GetPath("FootBallInNoHit"); // there's a second path for footballs that hit the weasels, use that if the weasels haven't been hit recently
UpdateLastRealPos();
- pathStartBeat = beat - 1f;
+ pathStartBeat = Conductor.instance.GetUnSwungBeat(beat - 1f);
Vector3 pos = GetPathPositionFromBeat(path, pathStartBeat, pathStartBeat);
transform.position = pos;
@@ -60,7 +60,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
if (state >= 1f || state <= -1f)
{
UpdateLastRealPos();
- pathStartBeat = conductor.songPositionInBeatsAsDouble;
+ pathStartBeat = conductor.unswungSongPositionInBeatsAsDouble;
path = game.GetPath("FootBallNg" + (state > 0 ? "Late" : "Early"));
SoundByte.PlayOneShot("miss");
game.Kick(false);
@@ -84,7 +84,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
transform.localScale *= 0.25f;
path = game.GetPath("FootBallFall");
UpdateLastRealPos();
- pathStartBeat = conductor.songPositionInBeatsAsDouble + 1f;
+ pathStartBeat = conductor.unswungSongPositionInBeatsAsDouble + 1f;
}),
new BeatAction.Action(conductor.songPositionInBeatsAsDouble + 12f, delegate
{
@@ -96,7 +96,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
void Hit()
{
UpdateLastRealPos();
- pathStartBeat = conductor.songPositionInBeatsAsDouble;
+ pathStartBeat = conductor.unswungSongPositionInBeatsAsDouble;
path = game.GetPath("FootBallJust");
game.Kick(true, true, jump: _jump);
SoundByte.PlayOneShotGame("doubleDate/footballKick");
diff --git a/Assets/Scripts/Games/DoubleDate/SoccerBall.cs b/Assets/Scripts/Games/DoubleDate/SoccerBall.cs
index a84cacfc..18ad157a 100644
--- a/Assets/Scripts/Games/DoubleDate/SoccerBall.cs
+++ b/Assets/Scripts/Games/DoubleDate/SoccerBall.cs
@@ -25,7 +25,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
void Update()
{
- double beat = conductor.songPositionInBeatsAsDouble;
+ double beat = conductor.unswungSongPositionInBeatsAsDouble;
double height = 0f;
if (pathStartBeat > double.MinValue)
{
@@ -44,7 +44,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
game.ScheduleInput(beat, 1f, DoubleDate.InputAction_FlickPress, Just, Miss, Empty);
path = game.GetPath("SoccerIn");
UpdateLastRealPos();
- pathStartBeat = beat - 1f;
+ pathStartBeat = Conductor.instance.GetUnSwungBeat(beat - 1f);
Vector3 pos = GetPathPositionFromBeat(path, pathStartBeat, pathStartBeat);
transform.position = pos;
@@ -65,7 +65,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
}),
});
UpdateLastRealPos();
- pathStartBeat = conductor.songPositionInBeatsAsDouble;
+ pathStartBeat = conductor.unswungSongPositionInBeatsAsDouble;
if (state >= 1f || state <= -1f)
{
path = game.GetPath("SoccerNg" + (state > 0 ? "Late" : "Early"));
@@ -80,7 +80,7 @@ namespace HeavenStudio.Games.Scripts_DoubleDate
void Hit()
{
UpdateLastRealPos();
- pathStartBeat = conductor.songPositionInBeatsAsDouble;
+ pathStartBeat = conductor.unswungSongPositionInBeatsAsDouble;
path = game.GetPath("SoccerJust");
game.Kick(true, false, true, _jump);
SoundByte.PlayOneShotGame("doubleDate/kick");
diff --git a/Assets/Scripts/Games/FanClub/FanClub.cs b/Assets/Scripts/Games/FanClub/FanClub.cs
index 44cfc96b..676ace6a 100644
--- a/Assets/Scripts/Games/FanClub/FanClub.cs
+++ b/Assets/Scripts/Games/FanClub/FanClub.cs
@@ -389,7 +389,7 @@ namespace HeavenStudio.Games
//idol jumping physics
float jumpPos = conductor.GetPositionFromBeat(idolJumpStartTime, 1f);
float IDOL_SHADOW_SCALE = 1.18f;
- if (conductor.songPositionInBeatsAsDouble >= idolJumpStartTime && conductor.songPositionInBeatsAsDouble < idolJumpStartTime + 1f)
+ if (conductor.unswungSongPositionInBeatsAsDouble >= idolJumpStartTime && conductor.unswungSongPositionInBeatsAsDouble < idolJumpStartTime + 1f)
{
hasJumped = true;
float yMul = jumpPos * 2f - 1f;
@@ -579,7 +579,7 @@ namespace HeavenStudio.Games
{
DisableBop(beat, length);
DisableResponse(beat, length);
- idolJumpStartTime = beat;
+ idolJumpStartTime = conductor.GetUnSwungBeat(beat);
//play anim
BeatAction.New(instance, new List()
diff --git a/Assets/Scripts/Games/FanClub/NtrIdolAmie.cs b/Assets/Scripts/Games/FanClub/NtrIdolAmie.cs
index bf452349..a6240094 100644
--- a/Assets/Scripts/Games/FanClub/NtrIdolAmie.cs
+++ b/Assets/Scripts/Games/FanClub/NtrIdolAmie.cs
@@ -69,7 +69,7 @@ namespace HeavenStudio.Games.Scripts_FanClub
//idol jumping physics
float jumpPos = cond.GetPositionFromBeat(startJumpTime, 1f);
float IDOL_SHADOW_SCALE = 1.18f;
- if (cond.songPositionInBeatsAsDouble >= startJumpTime && cond.songPositionInBeatsAsDouble < startJumpTime + 1f)
+ if (cond.unswungSongPositionInBeatsAsDouble >= startJumpTime && cond.unswungSongPositionInBeatsAsDouble < startJumpTime + 1f)
{
hasJumped = true;
float yMul = jumpPos * 2f - 1f;
@@ -77,7 +77,7 @@ namespace HeavenStudio.Games.Scripts_FanClub
rootTransform.transform.localPosition = new Vector3(startPostion + stepDistance * AnimCount, rootYPos + (2f * yWeight + 0.25f));
shadow.transform.localScale = new Vector3((1f-yWeight*0.8f) * IDOL_SHADOW_SCALE, (1f-yWeight*0.8f) * IDOL_SHADOW_SCALE, 1f);
- anim.DoScaledAnimation("Jump", startJumpTime, 1f);
+ anim.DoScaledAnimation("Jump", startJumpTime, 1f, ignoreSwing: true);
}
else
{
@@ -160,12 +160,11 @@ namespace HeavenStudio.Games.Scripts_FanClub
{
if (startStepBeat != double.MaxValue) return;
if (!gameObject.activeInHierarchy) return;
- startJumpTime = beat;
+ startJumpTime = Conductor.instance.GetUnSwungBeat(beat);
//play anim
BeatAction.New(this, new List()
{
- // new BeatAction.Action(beat, delegate { anim.Play("Jump", -1, 0); }),
new BeatAction.Action(beat + 1f, delegate { anim.Play("Land", -1, 0); }),
});
}
diff --git a/Assets/Scripts/Games/FanClub/NtrIdolFan.cs b/Assets/Scripts/Games/FanClub/NtrIdolFan.cs
index 65ba9a38..6200add5 100644
--- a/Assets/Scripts/Games/FanClub/NtrIdolFan.cs
+++ b/Assets/Scripts/Games/FanClub/NtrIdolFan.cs
@@ -116,7 +116,7 @@ namespace HeavenStudio.Games.Scripts_FanClub
}
if (PlayerInput.GetIsAction(FanClub.InputAction_BasicPressing))
{
- if (clappingStartTime != double.MinValue && cond.songPositionInBeatsAsDouble > clappingStartTime + 2f && !stopCharge)
+ if (clappingStartTime != double.MinValue && cond.unswungSongPositionInBeatsAsDouble > clappingStartTime + 2f && !stopCharge)
{
animator.speed = 1f;
animator.Play("FanClapCharge", -1, 0);
@@ -131,7 +131,7 @@ namespace HeavenStudio.Games.Scripts_FanClub
nonTouchDelay = 0f;
stopCharge = true;
}
- if (clappingStartTime != double.MinValue && cond.songPositionInBeatsAsDouble > clappingStartTime + nonTouchDelay && stopCharge
+ if (clappingStartTime != double.MinValue && cond.unswungSongPositionInBeatsAsDouble > clappingStartTime + nonTouchDelay && stopCharge
&& !FanClub.instance.IsExpectingInputNow(FanClub.InputAction_FlickRelease.inputLockCategory))
{
if (FanClub.instance.JudgementPaused)
@@ -163,14 +163,14 @@ namespace HeavenStudio.Games.Scripts_FanClub
}
float jumpPos = cond.GetPositionFromBeat(jumpStartTime, 1f);
- if (cond.songPositionInBeatsAsDouble >= jumpStartTime && cond.songPositionInBeatsAsDouble < jumpStartTime + 1f)
+ if (cond.unswungSongPositionInBeatsAsDouble >= jumpStartTime && cond.unswungSongPositionInBeatsAsDouble < jumpStartTime + 1f)
{
hasJumped = true;
float yMul = jumpPos * 2f - 1f;
float yWeight = -(yMul*yMul) + 1f;
motionRoot.transform.localPosition = new Vector3(0, 3f * yWeight);
shadow.transform.localScale = new Vector3((1f-yWeight*0.8f) * 1.4f, (1f-yWeight*0.8f) * 1.4f, 1f);
- animator.DoScaledAnimation("FanJump", jumpStartTime);
+ animator.DoScaledAnimation("FanJump", jumpStartTime, ignoreSwing: true);
}
else
{
@@ -205,12 +205,12 @@ namespace HeavenStudio.Games.Scripts_FanClub
var cond = Conductor.instance;
hasJumped = false;
stopBeat = true;
- jumpStartTime = -99f;
+ jumpStartTime = double.MinValue;
animator.speed = 1f;
animator.Play("FanClap", -1, 0);
SoundByte.PlayOneShotGame("fanClub/play_clap");
SoundByte.PlayOneShotGame("fanClub/crap_impact");
- clappingStartTime = cond.songPositionInBeatsAsDouble;
+ clappingStartTime = cond.unswungSongPositionInBeatsAsDouble;
if (doCharge)
BeatAction.New(this, new List()
@@ -247,7 +247,7 @@ namespace HeavenStudio.Games.Scripts_FanClub
var cond = Conductor.instance;
animator.Play("FanJump", -1, 0);
SoundByte.PlayOneShotGame("fanClub/play_jump");
- jumpStartTime = cond.songPositionInBeatsAsDouble;
+ jumpStartTime = cond.unswungSongPositionInBeatsAsDouble;
clappingStartTime = double.MinValue;
stopCharge = false;
}
@@ -255,7 +255,7 @@ namespace HeavenStudio.Games.Scripts_FanClub
public bool IsJumping()
{
var cond = Conductor.instance;
- return (cond.songPositionInBeatsAsDouble >= jumpStartTime && cond.songPositionInBeatsAsDouble < jumpStartTime + 1f);
+ return (cond.unswungSongPositionInBeatsAsDouble >= jumpStartTime && cond.unswungSongPositionInBeatsAsDouble < jumpStartTime + 1f);
}
public void Bop()
diff --git a/Assets/Scripts/Games/KarateMan/KarateMan.cs b/Assets/Scripts/Games/KarateMan/KarateMan.cs
index 27772eab..b3179931 100644
--- a/Assets/Scripts/Games/KarateMan/KarateMan.cs
+++ b/Assets/Scripts/Games/KarateMan/KarateMan.cs
@@ -7,6 +7,7 @@ using HeavenStudio.Util;
using HeavenStudio.InputSystem;
using Jukebox;
using System.Linq;
+using BurstLinq;
namespace HeavenStudio.Games.Loaders
{
diff --git a/Assets/Scripts/Games/KarateMan/KarateManPot.cs b/Assets/Scripts/Games/KarateMan/KarateManPot.cs
index 5768680a..8085c251 100644
--- a/Assets/Scripts/Games/KarateMan/KarateManPot.cs
+++ b/Assets/Scripts/Games/KarateMan/KarateManPot.cs
@@ -38,7 +38,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
public bool KickBarrelContent = false;
public bool ShouldGlow = false;
- public int OnHitExpression = (int) KarateMan.KarateManFaces.Normal;
+ public int OnHitExpression = (int)KarateMan.KarateManFaces.Normal;
public int comboId = -1;
static int _lastCombo = -1;
@@ -266,8 +266,6 @@ namespace HeavenStudio.Games.Scripts_KarateMan
transform.rotation = Quaternion.Euler(0, 0, transform.rotation.eulerAngles.z + (-360f * Time.deltaTime) + UnityEngine.Random.Range(0f, 360f));
-
-
ShadowInstance = Instantiate(Shadow, KarateMan.instance.ItemHolder);
shadowRenderer = ShadowInstance.GetComponent();
shadowRenderer.color = KarateMan.instance.Joe.Shadows[0].color;
@@ -350,7 +348,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
}
else if (type == ItemType.KickBall && cond.songPositionInBeatsAsDouble < startBeat + curveTargetBeat + 1f)
return;
-
+
Destroy(ShadowInstance.gameObject);
Destroy(gameObject);
return;
@@ -585,9 +583,12 @@ namespace HeavenStudio.Games.Scripts_KarateMan
p.Play();
break;
case ItemType.KickBarrel:
- if (KickBarrelContent) {
+ if (KickBarrelContent)
+ {
game.CreateItemInstance(startBeat + 1f, "Item03", OnHitExpression, ItemType.KickBall);
- } else {
+ }
+ else
+ {
if (ShouldGlow) game.Joe.ApplyBombGlow();
game.CreateItemInstance(startBeat + 1f, "Item04", OnHitExpression, ItemType.KickBomb);
}
@@ -629,7 +630,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
break;
}
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
status = FlyStatus.Hit;
}
@@ -765,7 +766,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
if (state <= -1f || state >= 1f)
{
bool straight = joe.Punch(ItemPunchHand(), false, ItemPunchHand() == 2);
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
CurrentCurve = ItemCurves[6];
curveTargetBeat = 1f;
SoundByte.PlayOneShot("miss");
@@ -788,7 +789,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
if (ItemNeedNori() && KarateMan.instance.NoriPerformance < 0.6f)
{
CreateHitMark(false);
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
status = FlyStatus.HitWeak;
SoundByte.PlayOneShotGame("karateman/hitNoNori", forcePlay: true);
joe.Punch(3);
@@ -815,7 +816,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
joe.ForceFailCombo(Conductor.instance.songPositionInBeatsAsDouble);
if (state <= -1f || state >= 1f)
{
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
CurrentCurve = ItemCurves[6];
curveTargetBeat = 1f;
SoundByte.PlayOneShot("miss");
@@ -885,7 +886,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
joe.SetShouldComboId(comboId);
if (state <= -1f || state >= 1f)
{
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
CurrentCurve = ItemCurves[6];
curveTargetBeat = 1f;
SoundByte.PlayOneShot("miss");
@@ -932,7 +933,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
bool straight = joe.Punch(ItemPunchHand());
if (state <= -1f || state >= 1f)
{
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
CurrentCurve = ItemCurves[6];
curveTargetBeat = 1f;
SoundByte.PlayOneShot("miss");
@@ -962,7 +963,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
joe.ComboSequence(3);
if (state <= -1f || state >= 1f)
{
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
CurrentCurve = ItemCurves[5];
curveTargetBeat = 1f;
SoundByte.PlayOneShot("miss");
@@ -1052,7 +1053,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
joe.Punch(ItemPunchHand());
if (state <= -1f || state >= 1f)
{
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
CurrentCurve = ItemCurves[6];
curveTargetBeat = 1f;
SoundByte.PlayOneShot("miss");
@@ -1114,7 +1115,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
joe.Kick(Conductor.instance.songPositionInBeatsAsDouble);
if (state <= -1f || state >= 1f)
{
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
CurrentCurve = ItemCurves[8];
curveTargetBeat = 1f;
SoundByte.PlayOneShot("miss");
@@ -1140,7 +1141,7 @@ namespace HeavenStudio.Games.Scripts_KarateMan
ItemHitEffect();
status = FlyStatus.Hit;
CurrentCurve = ItemCurves[7];
- startBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ startBeat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
curveTargetBeat = 3f;
KarateMan.instance.Nori.DoHit();
}
diff --git a/Assets/Scripts/Games/Minigame.cs b/Assets/Scripts/Games/Minigame.cs
index 9087c290..4877d01e 100644
--- a/Assets/Scripts/Games/Minigame.cs
+++ b/Assets/Scripts/Games/Minigame.cs
@@ -7,6 +7,7 @@ using HeavenStudio.Common;
using HeavenStudio.InputSystem;
using System;
using System.Linq;
+using BurstLinq;
using Jukebox;
namespace HeavenStudio.Games
diff --git a/Assets/Scripts/Games/MrUpbeat/MrUpbeat.cs b/Assets/Scripts/Games/MrUpbeat/MrUpbeat.cs
index 3e592dab..d02e3a3f 100644
--- a/Assets/Scripts/Games/MrUpbeat/MrUpbeat.cs
+++ b/Assets/Scripts/Games/MrUpbeat/MrUpbeat.cs
@@ -167,6 +167,8 @@ namespace HeavenStudio.Games
public int stepIterate = 0;
private static double startSteppingBeat = double.MaxValue;
private static double startBlippingBeat = double.MaxValue;
+ private string currentMetronomeDir = "Right";
+ private static double metronomeBeat = double.MaxValue;
private bool stopStepping;
public bool stopBlipping;
@@ -240,6 +242,16 @@ namespace HeavenStudio.Games
man.RecursiveBlipping(startBlippingBeat);
startBlippingBeat = double.MaxValue;
}
+
+ if (songPos > metronomeBeat + 1)
+ {
+ metronomeAnim.Play("MetronomeGo" + currentMetronomeDir, -1, 1);
+ metronomeAnim.speed = 0;
+ }
+ else if (songPos >= metronomeBeat)
+ {
+ metronomeAnim.DoScaledAnimation("MetronomeGo" + currentMetronomeDir, metronomeBeat, 1, ignoreSwing: false);
+ }
}
}
@@ -290,9 +302,9 @@ namespace HeavenStudio.Games
stopStepping = false;
return;
}
- string dir = (stepIterate % 2 == 1) ? "Right" : "Left";
- metronomeAnim.DoScaledAnimationAsync("MetronomeGo" + dir, 0.5f);
- SoundByte.PlayOneShotGame("mrUpbeat/metronome" + dir);
+ currentMetronomeDir = (stepIterate % 2 == 1) ? "Right" : "Left";
+ SoundByte.PlayOneShotGame($"mrUpbeat/metronome{currentMetronomeDir}");
+ metronomeBeat = beat;
ScheduleStep(beat);
BeatAction.New(this, new List() {
new(beat + 1, delegate { RecursiveStepping(beat + 1); })
@@ -305,11 +317,11 @@ namespace HeavenStudio.Games
var actions = new List();
for (int i = 0; i < length; i++)
{
- ScheduleStep(beat);
+ ScheduleStep(beat + i);
actions.Add(new BeatAction.Action(beat + i, delegate {
- string dir = (stepIterate % 2 == 1) ? "Right" : "Left";
- metronomeAnim.DoScaledAnimationAsync("MetronomeGo" + dir, 0.5f);
- SoundByte.PlayOneShotGame("mrUpbeat/metronome" + dir);
+ currentMetronomeDir = (stepIterate % 2 == 1) ? "Right" : "Left";
+ SoundByte.PlayOneShotGame($"mrUpbeat/metronome{currentMetronomeDir}");
+ metronomeBeat = beat + i;
stepIterate++;
}));
}
diff --git a/Assets/Scripts/Games/PajamaParty/CtrPillowMonkey.cs b/Assets/Scripts/Games/PajamaParty/CtrPillowMonkey.cs
index 3c39cfec..7a33d0ad 100644
--- a/Assets/Scripts/Games/PajamaParty/CtrPillowMonkey.cs
+++ b/Assets/Scripts/Games/PajamaParty/CtrPillowMonkey.cs
@@ -123,7 +123,7 @@ namespace HeavenStudio.Games.Scripts_PajamaParty
public void Jump(double beat, int alt = 1)
{
- startJumpTime = beat;
+ startJumpTime = Conductor.instance.GetUnSwungBeat(beat);
jumpAlt = 0;
if (alt > 1)
{
@@ -140,7 +140,7 @@ namespace HeavenStudio.Games.Scripts_PajamaParty
public void Throw(double beat, bool highCheck)
{
anim.DoUnscaledAnimation("MonkeyThrow" + animSuffix);
- startThrowTime = beat;
+ startThrowTime = Conductor.instance.GetUnSwungBeat(beat);
Projectile.SetActive(true);
if (highCheck)
diff --git a/Assets/Scripts/Games/PajamaParty/CtrPillowPlayer.cs b/Assets/Scripts/Games/PajamaParty/CtrPillowPlayer.cs
index a37dddbf..2431bbab 100644
--- a/Assets/Scripts/Games/PajamaParty/CtrPillowPlayer.cs
+++ b/Assets/Scripts/Games/PajamaParty/CtrPillowPlayer.cs
@@ -182,7 +182,7 @@ namespace HeavenStudio.Games.Scripts_PajamaParty
{
throwType = false;
throwLength = 0.5;
- Projectile.GetComponent().DoScaledAnimation("ThrowOut", startThrowTime, throwLength);
+ Projectile.GetComponent().DoScaledAnimation("ThrowOut", Conductor.instance.GetUnSwungBeat(startThrowTime), throwLength);
Projectile.transform.rotation = Quaternion.Euler(0, 0, 360f * UnityEngine.Random.Range(0f, 1f));
}
else
@@ -310,12 +310,12 @@ namespace HeavenStudio.Games.Scripts_PajamaParty
if (state <= -1f || state >= 1f)
{
SoundByte.PlayOneShot("miss");
- PlayerJump(cond.songPositionInBeatsAsDouble, false, true);
+ PlayerJump(cond.unswungSongPositionInBeatsAsDouble, false, true);
}
else
{
SoundByte.PlayOneShotGame("pajamaParty/jumpJust");
- PlayerJump(cond.songPositionInBeatsAsDouble, false, false);
+ PlayerJump(cond.unswungSongPositionInBeatsAsDouble, false, false);
}
caller.CanHit(false);
}
@@ -328,7 +328,7 @@ namespace HeavenStudio.Games.Scripts_PajamaParty
if (canJump)
{
var cond = Conductor.instance;
- PlayerThrough(cond.songPositionInBeatsAsDouble);
+ PlayerThrough(cond.unswungSongPositionInBeatsAsDouble);
}
}
//////
@@ -359,12 +359,12 @@ namespace HeavenStudio.Games.Scripts_PajamaParty
{
SoundByte.PlayOneShot("miss");
throwNg = true;
- EndCharge(cond.songPositionInBeatsAsDouble, true, throwNg);
+ EndCharge(cond.unswungSongPositionInBeatsAsDouble, true, throwNg);
}
else
{
SoundByte.PlayOneShotGame("pajamaParty/throw5");
- EndCharge(cond.songPositionInBeatsAsDouble, true, throwNg);
+ EndCharge(cond.unswungSongPositionInBeatsAsDouble, true, throwNg);
}
caller.CanHit(false);
}
@@ -374,7 +374,7 @@ namespace HeavenStudio.Games.Scripts_PajamaParty
if (canCharge)
{
var cond = Conductor.instance;
- PlayerThrough(cond.songPositionInBeatsAsDouble);
+ PlayerThrough(cond.unswungSongPositionInBeatsAsDouble);
}
}
//
diff --git a/Assets/Scripts/Games/PlayerActionEvent.cs b/Assets/Scripts/Games/PlayerActionEvent.cs
index d2fdbe56..ff6af2d3 100644
--- a/Assets/Scripts/Games/PlayerActionEvent.cs
+++ b/Assets/Scripts/Games/PlayerActionEvent.cs
@@ -147,6 +147,7 @@ namespace HeavenStudio.Games
private bool CheckEventLock()
{
+ Conductor cond = Conductor.instance;
foreach (PlayerActionEvent toCompare in allEvents)
{
if (toCompare == this) continue;
@@ -159,9 +160,9 @@ namespace HeavenStudio.Games
&& toCompare.InputAction.inputLockCategory[catIdx] != InputAction.inputLockCategory[catIdx]) continue;
}
- double t1 = this.startBeat + this.timer;
- double t2 = toCompare.startBeat + toCompare.timer;
- double songPos = Conductor.instance.songPositionInBeatsAsDouble;
+ double t1 = cond.GetUnSwungBeat(this.startBeat + this.timer);
+ double t2 = cond.GetUnSwungBeat(toCompare.startBeat + toCompare.timer);
+ double songPos = cond.unswungSongPositionInBeatsAsDouble;
// compare distance between current time and the events
// events that happen at the exact same time with the exact same inputs will return true
@@ -211,7 +212,7 @@ namespace HeavenStudio.Games
{
var cond = Conductor.instance;
double currTime = cond.songPositionAsDouble;
- double targetTime = cond.GetSongPosFromBeat(startBeat + timer);
+ double targetTime = cond.GetSongPosFromBeat(cond.GetUnSwungBeat(startBeat + timer), true);
// HS timing window uses 1 as the middle point instead of 0
return 1 + (currTime - targetTime);
diff --git a/Assets/Scripts/Games/RhythmTweezers/LongHair.cs b/Assets/Scripts/Games/RhythmTweezers/LongHair.cs
index 80455e27..e6b627f7 100644
--- a/Assets/Scripts/Games/RhythmTweezers/LongHair.cs
+++ b/Assets/Scripts/Games/RhythmTweezers/LongHair.cs
@@ -43,7 +43,7 @@ namespace HeavenStudio.Games.Scripts_RhythmTweezers
var hairDirection = new Vector3(tst.x + 0.173f, tst.y) - holder.transform.position;
holder.transform.rotation = Quaternion.FromToRotation(Vector3.down, hairDirection);
- float normalizedBeat = Conductor.instance.GetPositionFromBeat(inputBeat, 0.5f);
+ float normalizedBeat = Conductor.instance.GetPositionFromBeat(inputBeat, 0.5f, ignoreSwing: false);
anim.Play("LoopPull", 0, normalizedBeat);
tweezers.anim.Play("Tweezers_LongPluck", 0, normalizedBeat);
if (!game.IsExpectingInputNow(RhythmTweezers.InputAction_Release) && PlayerInput.GetIsAction(RhythmTweezers.InputAction_Release) && normalizedBeat < 1f)
@@ -73,7 +73,7 @@ namespace HeavenStudio.Games.Scripts_RhythmTweezers
public void EndEarly()
{
- var normalized = Conductor.instance.GetPositionFromBeat(inputBeat, 0.5f);
+ var normalized = Conductor.instance.GetPositionFromBeat(inputBeat, 0.5f, ignoreSwing: false);
anim.Play("LoopPullReverse", 0, normalized);
tweezers.anim.Play("Tweezers_Idle", 0, 0);
diff --git a/Assets/Scripts/Games/RhythmTweezers/RhythmTweezers.cs b/Assets/Scripts/Games/RhythmTweezers/RhythmTweezers.cs
index f6e87e0c..97e69ac0 100644
--- a/Assets/Scripts/Games/RhythmTweezers/RhythmTweezers.cs
+++ b/Assets/Scripts/Games/RhythmTweezers/RhythmTweezers.cs
@@ -292,7 +292,7 @@ namespace HeavenStudio.Games
spawnedHairs.Add(hair);
hair.gameObject.SetActive(true);
hair.GetComponent().Play("SmallAppear", 0, 1);
- float rot = -58f + 116 * crHandlerInstance.GetIntervalProgressFromBeat(beat, 1);
+ float rot = -58f + 116 * crHandlerInstance.GetIntervalProgressFromBeat(conductor.GetUnSwungBeat(beat), 1);
hair.transform.eulerAngles = new Vector3(0, 0, rot);
hair.createBeat = beat;
}
@@ -305,7 +305,7 @@ namespace HeavenStudio.Games
spawnedLongs.Add(hair);
hair.gameObject.SetActive(true);
hair.GetComponent().Play("LongAppear", 0, 1);
- float rot = -58f + 116 * crHandlerInstance.GetIntervalProgressFromBeat(beat, 1);
+ float rot = -58f + 116 * crHandlerInstance.GetIntervalProgressFromBeat(conductor.GetUnSwungBeat(beat), 1);
hair.transform.eulerAngles = new Vector3(0, 0, rot);
hair.createBeat = beat;
}
@@ -332,7 +332,7 @@ namespace HeavenStudio.Games
})
});
- float rot = -58f + 116 * crHandlerInstance.GetIntervalProgressFromBeat(beat, 1);
+ float rot = -58f + 116 * crHandlerInstance.GetIntervalProgressFromBeat(conductor.GetUnSwungBeat(beat), 1);
hair.transform.eulerAngles = new Vector3(0, 0, rot);
hair.createBeat = beat;
}
@@ -357,7 +357,7 @@ namespace HeavenStudio.Games
})
});
- float rot = -58f + 116 * crHandlerInstance.GetIntervalProgressFromBeat(beat, 1);
+ float rot = -58f + 116 * crHandlerInstance.GetIntervalProgressFromBeat(conductor.GetUnSwungBeat(beat), 1);
hair.transform.eulerAngles = new Vector3(0, 0, rot);
hair.createBeat = beat;
}
diff --git a/Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs b/Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs
index 5b4e0f05..db2294ad 100644
--- a/Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs
+++ b/Assets/Scripts/Games/SeeSaw/SeeSawGuy.cs
@@ -68,7 +68,7 @@ namespace HeavenStudio.Games.Scripts_SeeSaw
{
var cond = Conductor.instance;
- double currentBeat = cond.songPositionInBeatsAsDouble;
+ double currentBeat = cond.unswungSongPositionInBeatsAsDouble;
if (cond.isPlaying && !cond.isPaused)
{
@@ -298,7 +298,7 @@ namespace HeavenStudio.Games.Scripts_SeeSaw
{
lastState = currentState;
currentState = state;
- startBeat = beat;
+ startBeat = Conductor.instance.GetUnSwungBeat(beat);
heightLastFrame = 0;
hasChangedAnimMidAir = false;
switch (currentState)
diff --git a/Assets/Scripts/Games/SneakySpirits/SneakySpirits.cs b/Assets/Scripts/Games/SneakySpirits/SneakySpirits.cs
index bce5e464..afc50312 100644
--- a/Assets/Scripts/Games/SneakySpirits/SneakySpirits.cs
+++ b/Assets/Scripts/Games/SneakySpirits/SneakySpirits.cs
@@ -101,7 +101,7 @@ namespace HeavenStudio.Games
}
if (Conductor.instance.isPlaying)
{
- Conductor.instance.SetMinigamePitch(1f);
+ Conductor.instance.SetMinigamePitch(1f, true);
}
}
diff --git a/Assets/Scripts/Games/SpaceSoccer/Ball.cs b/Assets/Scripts/Games/SpaceSoccer/Ball.cs
index d82d900f..02c06464 100644
--- a/Assets/Scripts/Games/SpaceSoccer/Ball.cs
+++ b/Assets/Scripts/Games/SpaceSoccer/Ball.cs
@@ -39,10 +39,11 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
}
public void Init(Kicker kicker, double dispensedBeat)
{
+ Conductor conductor = Conductor.instance;
this.kicker = kicker;
kicker.ball = this;
kicker.dispenserBeat = dispensedBeat;
- double currentBeat = Conductor.instance.songPositionInBeatsAsDouble;
+ double currentBeat = conductor.unswungSongPositionInBeatsAsDouble;
kickPath = SpaceSoccer.instance.GetPath("Kick");
dispensePath = SpaceSoccer.instance.GetPath("Dispense");
highKickPath = SpaceSoccer.instance.GetPath("HighKick");
@@ -53,7 +54,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
{
//Debug.Log("Dispensing");
state = State.Dispensing;
- startBeat = dispensedBeat;
+ startBeat = conductor.GetUnSwungBeat(dispensedBeat);
nextAnimBeat = startBeat + GetAnimLength(State.Dispensing);
kicker.kickTimes = 0;
return;
@@ -74,31 +75,32 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
//Debug.Log("Setting state to kicked");
state = State.Kicked;
double relativeBeat = currentBeat - dispensedBeat;
- startBeat = dispensedBeat + (int)(relativeBeat - 0.1); //this makes the startBeat be for the kick that is currently in progress, but it won't play the kicker's animation for that kick. the -0.1 makes it so that if playback is started right when the kicker kicks, it still plays the kicker's animation.
+ startBeat = conductor.GetUnSwungBeat(dispensedBeat) + (int)(relativeBeat - 0.1); //this makes the startBeat be for the kick that is currently in progress, but it won't play the kicker's animation for that kick. the -0.1 makes it so that if playback is started right when the kicker kicks, it still plays the kicker's animation.
nextAnimBeat = startBeat + GetAnimLength(State.Kicked);
kicker.kickTimes = (int)(relativeBeat - 0.1) - numHighKicks - 1; //every high kick has 2 kicks in the same time a regular keep-up does 3 kicks.
break;
}
else
{
- highKickSwing = 0.5f;
if (highKicks[i].beat + GetAnimLength(State.HighKicked) > currentBeat)
{
+ highKickSwing = conductor.GetSwingRatioAtBeat(highKicks[i].beat, out _);
//Debug.Log("Setting state to high kick");
state = State.HighKicked;
double relativeBeat = highKicks[i].beat - dispensedBeat;
- startBeat = dispensedBeat + Math.Ceiling(relativeBeat); //there is a chance this makes startBeat later than the current beat, but it shouldn't matter too much. It would only happen if the user places the high kicks incorrectly.
+ startBeat = conductor.GetUnSwungBeat(dispensedBeat) + Math.Ceiling(relativeBeat); //there is a chance this makes startBeat later than the current beat, but it shouldn't matter too much. It would only happen if the user places the high kicks incorrectly.
nextAnimBeat = startBeat + GetAnimLength(State.HighKicked);
kicker.kickTimes = (int)Math.Ceiling(relativeBeat) - numHighKicks - 1;
break;
}
else
{
+ highKickSwing = conductor.GetSwingRatioAtBeat(highKicks[i].beat + GetAnimLength(State.HighKicked), out _);
//Debug.Log("Setting state to toe");
state = State.Toe;
double relativeBeat = Math.Ceiling(highKicks[i].beat - dispensedBeat) + GetAnimLength(State.HighKicked); //there is a chance this makes startBeat later than the current beat, but it shouldn't matter too much. It would only happen if the user places the high kicks incorrectly.
- startBeat = dispensedBeat + relativeBeat;
+ startBeat = conductor.GetUnSwungBeat(dispensedBeat) + relativeBeat;
nextAnimBeat = startBeat + GetAnimLength(State.Toe);
kicker.kickTimes = (int)(relativeBeat - GetAnimLength(State.HighKicked)) - numHighKicks;
break;
@@ -110,7 +112,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
//Debug.Log("Defaulting to kicked state");
state = State.Kicked;
double relativeBeat = currentBeat - dispensedBeat;
- startBeat = dispensedBeat + (int)(relativeBeat - 0.1); //this makes the startBeat be for the kick that is currently in progress, but it won't play the kicker's animation for that kick. the -0.1 makes it so that if playback is started right when the kicker kicks, it still plays the kicker's animation.
+ startBeat = conductor.GetUnSwungBeat(dispensedBeat) + (int)(relativeBeat - 0.1); //this makes the startBeat be for the kick that is currently in progress, but it won't play the kicker's animation for that kick. the -0.1 makes it so that if playback is started right when the kicker kicks, it still plays the kicker's animation.
nextAnimBeat = startBeat + GetAnimLength(State.Kicked);
kicker.kickTimes = (int)(relativeBeat - 0.1) - numHighKicks - 1;
}
@@ -178,7 +180,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
private void Update()
{
- double beat = Conductor.instance.songPositionInBeatsAsDouble;
+ double beat = Conductor.instance.unswungSongPositionInBeatsAsDouble;
switch (state) //handle animations
{
case State.None: //the only time any ball should ever have this state is if it's the unused offscreen ball (which is the only reason this state exists)
@@ -270,7 +272,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
case State.Kicked:
return 1f;
case State.HighKicked:
- return 2f - highKickSwing;
+ return 1f + highKickSwing;
case State.Toe:
return 2f - (1f - highKickSwing);
default:
diff --git a/Assets/Scripts/Games/WizardsWaltz/Wizard.cs b/Assets/Scripts/Games/WizardsWaltz/Wizard.cs
index c64407e8..5b547639 100644
--- a/Assets/Scripts/Games/WizardsWaltz/Wizard.cs
+++ b/Assets/Scripts/Games/WizardsWaltz/Wizard.cs
@@ -20,7 +20,7 @@ namespace HeavenStudio.Games.Scripts_WizardsWaltz
void Update()
{
- songPos = (float)(Conductor.instance.songPositionInBeatsAsDouble - game.wizardBeatOffset);
+ songPos = (float)(Conductor.instance.unswungSongPositionInBeatsAsDouble - game.wizardBeatOffset);
var am = game.beatInterval / 2f;
var x = Mathf.Sin(Mathf.PI * songPos / am) * game.xRange;
var y = Mathf.Cos(Mathf.PI * songPos / am) * game.yRange;
diff --git a/Assets/Scripts/Games/WizardsWaltz/WizardsWaltz.cs b/Assets/Scripts/Games/WizardsWaltz/WizardsWaltz.cs
index 53d737fe..207f7988 100644
--- a/Assets/Scripts/Games/WizardsWaltz/WizardsWaltz.cs
+++ b/Assets/Scripts/Games/WizardsWaltz/WizardsWaltz.cs
@@ -223,7 +223,7 @@ namespace HeavenStudio.Games
intervalStartBeat = beat;
foreach (var plant in currentPlants)
{
- var songPos = (float)(plant.createBeat - wizardBeatOffset);
+ var songPos = (float)(conductor.GetUnSwungBeat(plant.createBeat) - wizardBeatOffset);
var am = (beatInterval / 2f);
var x = Mathf.Sin(Mathf.PI * songPos / am) * xRange;
var y = plantYOffset + Mathf.Cos(Mathf.PI * songPos / am) * (yRange * 1.5f);
@@ -260,7 +260,7 @@ namespace HeavenStudio.Games
if (!spawnedInactive) SoundByte.PlayOneShotGame("wizardsWaltz/plant", beat);
Plant plant = Instantiate(plantBase, plantHolder.transform).GetComponent();
currentPlants.Add(plant);
- var songPos = (float)(beat - wizardBeatOffset);
+ var songPos = (float)(conductor.GetUnSwungBeat(beat) - wizardBeatOffset);
var am = (beatInterval / 2f);
var x = Mathf.Sin(Mathf.PI * songPos / am) * xRange;
var y = plantYOffset + Mathf.Cos(Mathf.PI * songPos / am) * (yRange * 1.5f);
diff --git a/Assets/Scripts/InputSystem/PlayerInput.cs b/Assets/Scripts/InputSystem/PlayerInput.cs
index cec570b7..0a2032f2 100644
--- a/Assets/Scripts/InputSystem/PlayerInput.cs
+++ b/Assets/Scripts/InputSystem/PlayerInput.cs
@@ -1,7 +1,4 @@
using System;
-using System.Linq;
-using System.Reflection;
-
using System.Collections.Generic;
using HeavenStudio.InputSystem;
diff --git a/Assets/Scripts/LevelEditor/Editor.cs b/Assets/Scripts/LevelEditor/Editor.cs
index 4297dc15..745fc7ad 100644
--- a/Assets/Scripts/LevelEditor/Editor.cs
+++ b/Assets/Scripts/LevelEditor/Editor.cs
@@ -15,6 +15,7 @@ using HeavenStudio.StudioDance;
using Jukebox;
using UnityEditor;
using System.Linq;
+using BurstLinq;
namespace HeavenStudio.Editor
{
@@ -269,6 +270,11 @@ namespace HeavenStudio.Editor
public void SelectMusic()
{
+ if (Timeline.instance != null)
+ Timeline.instance?.Stop(0);
+ else
+ GameManager.instance.Stop(0);
+
var extensions = new[]
{
new ExtensionFilter("Music Files", "mp3", "ogg", "wav", "aiff", "aif", "aifc")
diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs
index 90750f7d..e0497136 100644
--- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs
+++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/SpecialTimeline.cs
@@ -160,6 +160,7 @@ namespace HeavenStudio.Editor.Track
lastTempo /= 2f;
}
RiqEntity tempoC = GameManager.instance.Beatmap.AddNewTempoChange(Timeline.instance.MousePos2BeatSnap, lastTempo);
+ tempoC.CreateProperty("swingDivision", 1f);
tempoTimelineObj.chartEntity = tempoC;
CommandManager.Instance.AddCommand(new Commands.AddMarker(tempoC, tempoC.guid, HoveringTypes.TempoChange));
}
diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TempoDialog.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TempoDialog.cs
index e9590f35..fe2dd3c3 100644
--- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TempoDialog.cs
+++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TempoDialog.cs
@@ -14,6 +14,9 @@ public class TempoDialog : Dialog
[SerializeField] Button deleteButton;
[SerializeField] TMP_InputField tempoInput;
+ [SerializeField] TMP_InputField swingInput;
+ [SerializeField] Slider swingSlider;
+ [SerializeField] Toggle swingDivisionToggle;
public void SwitchTempoDialog()
{
@@ -28,6 +31,9 @@ public class TempoDialog : Dialog
Editor.instance.inAuthorativeMenu = true;
ResetAllDialogs();
dialog.SetActive(true);
+
+ swingSlider.maxValue = 0.25f;
+ swingSlider.minValue = 0;
}
}
@@ -45,6 +51,10 @@ public class TempoDialog : Dialog
deleteButton.gameObject.SetActive(!tempoObj.first);
tempoInput.text = tempoObj.chartEntity["tempo"].ToString("F");
+ swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F");
+ swingSlider.value = tempoObj.chartEntity["swing"];
+
+ swingDivisionToggle.isOn = tempoObj.chartEntity["swingDivision"] != 1f;
}
public void DeleteTempo()
@@ -86,4 +96,33 @@ public class TempoDialog : Dialog
tempoInput.text = tempoObj.chartEntity["tempo"].ToString("F");
}
}
+
+ public void SwingSliderUpdate()
+ {
+ if (tempoObj != null)
+ {
+ tempoObj.SetSwing(System.MathF.Round(swingSlider.value, 4));
+ swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F");
+ swingSlider.value = tempoObj.chartEntity["swing"];
+ }
+ }
+
+ public void SetSwing()
+ {
+ if (tempoObj != null)
+ {
+ float swing = float.Parse(swingInput.text);
+ tempoObj.SetSwing(swing * 0.25f / 100f);
+ swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F");
+ swingSlider.value = tempoObj.chartEntity["swing"];
+ }
+ }
+
+ public void SwingDivisionToggle()
+ {
+ if (tempoObj != null)
+ {
+ tempoObj.SetSwingDivision(swingDivisionToggle.isOn);
+ }
+ }
}
diff --git a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/TempoTimelineObj.cs b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/TempoTimelineObj.cs
index 809924c9..e327263d 100644
--- a/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/TempoTimelineObj.cs
+++ b/Assets/Scripts/LevelEditor/Timeline/SpecialTmeline/TimelineObjs/TempoTimelineObj.cs
@@ -62,6 +62,18 @@ namespace HeavenStudio.Editor.Track
SetX(chartEntity);
}
+ public void SetSwing(float swing)
+ {
+ chartEntity["swing"] = Mathf.Clamp(swing, 0, 0.5f);
+ UpdateTempo();
+ }
+
+ public void SetSwingDivision(bool sixteenth)
+ {
+ chartEntity["swingDivision"] = sixteenth ? 0.5f : 1f;
+ UpdateTempo();
+ }
+
public override void Init()
{
UpdateTempo();
diff --git a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs
index d4b82526..16ba4d08 100644
--- a/Assets/Scripts/LevelEditor/Timeline/Timeline.cs
+++ b/Assets/Scripts/LevelEditor/Timeline/Timeline.cs
@@ -9,6 +9,7 @@ using TMPro;
using Jukebox;
using Newtonsoft.Json;
using System.Linq;
+using BurstLinq;
using HeavenStudio.Util;
@@ -475,7 +476,7 @@ namespace HeavenStudio.Editor.Track
if (Conductor.instance.metronome)
{
var startBeat = Mathf.FloorToInt(Conductor.instance.songPositionInBeats - 0.5f);
- var nm = Conductor.instance.GetLoopPositionFromBeat(0.5f, 1f);
+ var nm = Conductor.instance.GetLoopPositionFromBeat(0.5f, 1f, ignoreSwing: false);
var loop = (startBeat % 2 == 0) ? Mathf.SmoothStep(-1.1f, 1f, nm) : Mathf.SmoothStep(1f, -1f, nm);
rot = loop * 45f;
@@ -630,7 +631,7 @@ namespace HeavenStudio.Editor.Track
{
TimelinePlaybackBeat.text = $"Beat {string.Format("{0:0.000}", PlaybackBeat)}";
- if (TimelineSongPosLine != null)
+ if (TimelineSongPosLine != null && !Conductor.instance.WaitingForDsp)
{
TimelineSongPosLine.transform.localPosition = new Vector3(Conductor.instance.songPositionInBeats * PixelsPerBeat, TimelineSongPosLine.transform.localPosition.y);
}
@@ -655,13 +656,13 @@ namespace HeavenStudio.Editor.Track
{
if (!Conductor.instance.isPlaying)
{
- if (TimelineSongPosLine == null)
+ if (Conductor.instance.isPaused)
{
- Play(false, PlaybackBeat);
+ Play(false, Conductor.instance.songPositionInBeats);
}
else
{
- Play(false, Conductor.instance.songPositionInBeats);
+ Play(false, PlaybackBeat);
}
}
else if (!Conductor.instance.isPaused)
@@ -673,16 +674,14 @@ namespace HeavenStudio.Editor.Track
public void Play(bool fromStart, float time)
{
- // if (fromStart) Stop();
-
+ GameManager.instance.SafePlay(time, 0, false);
if (!Conductor.instance.isPaused)
{
TimelineSongPosLine = Instantiate(TimelineSongPosLineRef, TimelineSongPosLineRef.parent).GetComponent();
TimelineSongPosLine.gameObject.SetActive(true);
+ TimelineSongPosLine.transform.localPosition = new Vector3(time * PixelsPerBeat, TimelineSongPosLine.transform.localPosition.y);
}
- GameManager.instance.SafePlay(time, 0, false);
-
SetTimeButtonColors(false, true, true);
}
diff --git a/Assets/Scripts/LevelEditor/Timeline/TimelineBlockManager.cs b/Assets/Scripts/LevelEditor/Timeline/TimelineBlockManager.cs
index 8566ebc6..efeeaf7b 100644
--- a/Assets/Scripts/LevelEditor/Timeline/TimelineBlockManager.cs
+++ b/Assets/Scripts/LevelEditor/Timeline/TimelineBlockManager.cs
@@ -5,6 +5,7 @@ using UnityEngine.Pool;
using Jukebox;
using System.Linq;
+using BurstLinq;
namespace HeavenStudio.Editor.Track
{
diff --git a/Assets/Scripts/Minigames.cs b/Assets/Scripts/Minigames.cs
index d2bbf0c3..8ddf3bc6 100644
--- a/Assets/Scripts/Minigames.cs
+++ b/Assets/Scripts/Minigames.cs
@@ -16,6 +16,7 @@ using SatorImaging.UnitySourceGenerator;
using System;
using System.IO;
using System.Linq;
+using BurstLinq;
using UnityEngine.Assertions.Must;
using Newtonsoft.Json.Linq;
@@ -98,6 +99,7 @@ namespace HeavenStudio
{
{"tempo", 120f},
{"swing", 0f},
+ {"swingDivision", 1f},
{"timeSignature", new Vector2(4, 4)},
};
diff --git a/Assets/Scripts/TitleManager.cs b/Assets/Scripts/TitleManager.cs
index 36476e7f..4fa2cf52 100644
--- a/Assets/Scripts/TitleManager.cs
+++ b/Assets/Scripts/TitleManager.cs
@@ -8,6 +8,7 @@ using HeavenStudio.Common;
using HeavenStudio.InputSystem;
using System.Linq;
+using BurstLinq;
using SFB;
using Jukebox;
diff --git a/Assets/Scripts/Util/AnimationHelpers.cs b/Assets/Scripts/Util/AnimationHelpers.cs
index 3a5b592a..b71722cc 100644
--- a/Assets/Scripts/Util/AnimationHelpers.cs
+++ b/Assets/Scripts/Util/AnimationHelpers.cs
@@ -34,10 +34,10 @@ namespace HeavenStudio.Util
/// duration of animation (progress 1.0)
/// multiplier for animation progress (smaller values make animation slower)
/// animator layer to play animation on
- public static void DoScaledAnimation(this Animator anim, string animName, double startTime, double length = 1, float timeScale = 1f, int animLayer = -1, bool clamp = false)
+ public static void DoScaledAnimation(this Animator anim, string animName, double startTime, double length = 1, float timeScale = 1f, int animLayer = -1, bool clamp = false, bool ignoreSwing = true)
{
if (anim == null) return;
- float pos = Conductor.instance.GetPositionFromBeat(startTime, length) * timeScale;
+ float pos = Conductor.instance.GetPositionFromBeat(startTime, length, ignoreSwing: ignoreSwing) * timeScale;
if (clamp) pos = Mathf.Clamp01(pos);
anim.Play(animName, animLayer, pos);
anim.speed = 1f; //not 0 so these can still play their script events
diff --git a/Assets/Scripts/Util/MultiSound.cs b/Assets/Scripts/Util/MultiSound.cs
index 21ea2fbd..d79143db 100644
--- a/Assets/Scripts/Util/MultiSound.cs
+++ b/Assets/Scripts/Util/MultiSound.cs
@@ -106,5 +106,17 @@ namespace HeavenStudio.Util
}
Destroy(gameObject);
}
+
+ public void StopAll(bool destroy = false)
+ {
+ foreach (Util.Sound sound in playingSounds)
+ {
+ sound.Stop();
+ }
+ if (destroy)
+ {
+ Destroy(gameObject);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/Assets/Scripts/Util/SoundByte.cs b/Assets/Scripts/Util/SoundByte.cs
index 5236b3a2..5d16239a 100644
--- a/Assets/Scripts/Util/SoundByte.cs
+++ b/Assets/Scripts/Util/SoundByte.cs
@@ -2,6 +2,7 @@ using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using BurstLinq;
using System.Threading.Tasks;
using Cysharp.Threading.Tasks;
using UnityEngine;
diff --git a/Packages/manifest.json b/Packages/manifest.json
index 66ec8d3d..6dcc066c 100644
--- a/Packages/manifest.json
+++ b/Packages/manifest.json
@@ -1,5 +1,6 @@
{
"dependencies": {
+ "com.annulusgames.burst-linq": "https://github.com/AnnulusGames/BurstLinq.git?path=/Assets/BurstLinq",
"com.coffee.softmask-for-ugui": "https://github.com/mob-sakai/SoftMaskForUGUI.git",
"com.cysharp.unitask": "https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask",
"com.nobi.roundedcorners": "https://github.com/kirevdokimov/Unity-UI-Rounded-Corners.git",
@@ -9,7 +10,8 @@
"com.tayx.graphy": "https://github.com/Tayx94/graphy.git",
"com.unity.2d.sprite": "1.0.0",
"com.unity.assetbundlebrowser": "https://github.com/Unity-Technologies/AssetBundles-Browser.git",
- "com.unity.collab-proxy": "2.0.1",
+ "com.unity.burst": "1.6.6",
+ "com.unity.collections": "1.2.4",
"com.unity.ide.rider": "3.0.18",
"com.unity.ide.visualstudio": "2.0.21",
"com.unity.nuget.newtonsoft-json": "3.0.2",
diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json
index 2c03dc44..82d372f7 100644
--- a/Packages/packages-lock.json
+++ b/Packages/packages-lock.json
@@ -1,5 +1,12 @@
{
"dependencies": {
+ "com.annulusgames.burst-linq": {
+ "version": "https://github.com/AnnulusGames/BurstLinq.git?path=/Assets/BurstLinq",
+ "depth": 0,
+ "source": "git",
+ "dependencies": {},
+ "hash": "fc354905c8e40b1491ea8a750ee722ee07adf484"
+ },
"com.coffee.softmask-for-ugui": {
"version": "https://github.com/mob-sakai/SoftMaskForUGUI.git",
"depth": 0,
@@ -67,11 +74,23 @@
"dependencies": {},
"hash": "b7c279278d1a343c6957c9f15b45173d3211f01c"
},
- "com.unity.collab-proxy": {
- "version": "2.0.1",
+ "com.unity.burst": {
+ "version": "1.6.6",
"depth": 0,
"source": "registry",
- "dependencies": {},
+ "dependencies": {
+ "com.unity.mathematics": "1.2.1"
+ },
+ "url": "https://packages.unity.com"
+ },
+ "com.unity.collections": {
+ "version": "1.2.4",
+ "depth": 0,
+ "source": "registry",
+ "dependencies": {
+ "com.unity.burst": "1.6.6",
+ "com.unity.test-framework": "1.1.31"
+ },
"url": "https://packages.unity.com"
},
"com.unity.ext.nunit": {
@@ -99,6 +118,13 @@
},
"url": "https://packages.unity.com"
},
+ "com.unity.mathematics": {
+ "version": "1.2.6",
+ "depth": 1,
+ "source": "registry",
+ "dependencies": {},
+ "url": "https://packages.unity.com"
+ },
"com.unity.nuget.newtonsoft-json": {
"version": "3.2.1",
"depth": 1,
diff --git a/ProjectSettings/BurstAotSettings_StandaloneWindows.json b/ProjectSettings/BurstAotSettings_StandaloneWindows.json
new file mode 100644
index 00000000..e02ae332
--- /dev/null
+++ b/ProjectSettings/BurstAotSettings_StandaloneWindows.json
@@ -0,0 +1,17 @@
+{
+ "MonoBehaviour": {
+ "Version": 4,
+ "EnableBurstCompilation": true,
+ "EnableOptimisations": true,
+ "EnableSafetyChecks": false,
+ "EnableDebugInAllBuilds": false,
+ "UsePlatformSDKLinker": false,
+ "CpuMinTargetX32": 0,
+ "CpuMaxTargetX32": 0,
+ "CpuMinTargetX64": 0,
+ "CpuMaxTargetX64": 0,
+ "CpuTargetsX32": 6,
+ "CpuTargetsX64": 72,
+ "OptimizeFor": 0
+ }
+}
diff --git a/ProjectSettings/CommonBurstAotSettings.json b/ProjectSettings/CommonBurstAotSettings.json
new file mode 100644
index 00000000..0293dafc
--- /dev/null
+++ b/ProjectSettings/CommonBurstAotSettings.json
@@ -0,0 +1,6 @@
+{
+ "MonoBehaviour": {
+ "Version": 4,
+ "DisabledWarnings": ""
+ }
+}
diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset
index beaddb30..e24fa8dc 100644
--- a/ProjectSettings/ProjectSettings.asset
+++ b/ProjectSettings/ProjectSettings.asset
@@ -134,7 +134,7 @@ PlayerSettings:
16:10: 1
16:9: 1
Others: 1
- bundleVersion: 1.0.2
+ bundleVersion: 1.0.10
preloadedAssets:
- {fileID: 102900000, guid: 5348c08b82446e0478cee8bda6c02cfc, type: 3}
metroInputSource: 0
@@ -158,11 +158,11 @@ PlayerSettings:
applicationIdentifier:
Standalone: com.RHeavenStudio.Heaven-Studio
buildNumber:
- Standalone: 100002
+ Standalone: 100010
iPhone: 0
tvOS: 0
overrideDefaultApplicationIdentifier: 0
- AndroidBundleVersionCode: 100002
+ AndroidBundleVersionCode: 100010
AndroidMinSdkVersion: 22
AndroidTargetSdkVersion: 0
AndroidPreferredInstallLocation: 1
@@ -689,7 +689,11 @@ PlayerSettings:
Windows Store Apps: UNITY_POST_PROCESSING_STACK_V2
XboxOne: UNITY_POST_PROCESSING_STACK_V2
tvOS: UNITY_POST_PROCESSING_STACK_V2
- additionalCompilerArguments: {}
+ additionalCompilerArguments:
+ Standalone:
+ - /nowarn:0168
+ - /nowarn:0219
+ - /nowarn:0414
platformArchitecture: {}
scriptingBackend: {}
il2cppCompilerConfiguration: {}
diff --git a/ProjectSettings/SatorImaging.UnitySourceGenerator.Editor.ProjectSettingsData.asset b/ProjectSettings/SatorImaging.UnitySourceGenerator.Editor.ProjectSettingsData.asset
index ead3389e..76c6f91d 100644
--- a/ProjectSettings/SatorImaging.UnitySourceGenerator.Editor.ProjectSettingsData.asset
+++ b/ProjectSettings/SatorImaging.UnitySourceGenerator.Editor.ProjectSettingsData.asset
@@ -17,6 +17,30 @@ MonoBehaviour:
DenseViewWidthThreshold: 512
_disableAutoReloadInBackground: 0
ImportedScriptPaths:
- - Assets/Scripts/Games/Tunnel/Tunnel.cs
+ - Assets/Scripts/Games/GleeClub/GleeClub.cs
+ - Assets/Scripts/Minigames.cs
+ - Assets/Scripts/LevelEditor/Editor.cs
+ - Assets/Scripts/Games/FreezeFrame/Car.cs
+ - Assets/Scripts/Games/Fillbots/Fillbots.cs
+ - Assets/Scripts/Games/Fillbots/FullBody.cs
+ - Assets/Scripts/Games/CatchOfTheDay/CatchOfTheDay.cs
+ - Assets/Scripts/Util/ParticleSystemHelpers.cs
+ - Assets/Scripts/Games/Fillbots/NtrFillbot.cs
+ - Assets/Scripts/USG.g/LoadMinigames.Minigames.MinigameLoaderGenerator.g.cs
+ - Assets/Scripts/Games/FreezeFrame/FreezeFrame.cs
+ - Assets/Scripts/Games/CatchOfTheDay/LakeScene.cs
+ - Assets/Scripts/Conductor.cs
+ - Assets/Scripts/GameManager.cs
+ - Assets/Scripts/LevelEditor/Timeline/TimelineBlockManager.cs
+ - Assets/Scripts/TitleManager.cs
+ - Assets/Scripts/Util/MultiSound.cs
+ - Assets/Scripts/LevelEditor/Timeline/Timeline.cs
+ - Assets/Scripts/EventCaller.cs
+ - Assets/Scripts/Games/Minigame.cs
+ - Assets/Scripts/InputSystem/PlayerInput.cs
+ - Assets/Scripts/GameCamera.cs
+ - Assets/Scripts/Util/SoundByte.cs
+ - Assets/Scripts/GameInitializer.cs
+ - Assets/Scripts/AppInfo.cs
PathsToSkipImportEvent: []
PathsToIgnoreOverwriteSettingOnAttribute: []