16th note swing
more game fixes make pitch change resync optional in the API
This commit is contained in:
parent
9d14932b02
commit
92f00e5b04
|
@ -414,9 +414,9 @@ RectTransform:
|
|||
m_Father: {fileID: 574002313}
|
||||
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: -21}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 32, y: 32}
|
||||
m_Pivot: {x: 0, y: 0.5}
|
||||
--- !u!114 &9435782
|
||||
|
@ -3846,9 +3846,9 @@ RectTransform:
|
|||
m_Father: {fileID: 539838476}
|
||||
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: 32, y: -21}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 32, y: 32}
|
||||
m_Pivot: {x: 1, y: 0.5}
|
||||
--- !u!114 &121871281
|
||||
|
@ -4070,9 +4070,9 @@ RectTransform:
|
|||
m_Father: {fileID: 539838476}
|
||||
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: 72, y: -21}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 32, y: 32}
|
||||
m_Pivot: {x: 1, y: 0.5}
|
||||
--- !u!114 &129013734
|
||||
|
@ -4170,6 +4170,71 @@ MonoBehaviour:
|
|||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
TooltipText: Metronome <color=#adadad>[M]</color>
|
||||
--- !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
|
||||
|
@ -4206,9 +4271,9 @@ RectTransform:
|
|||
m_Father: {fileID: 539838476}
|
||||
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: 112, y: -21}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 32, y: 32}
|
||||
m_Pivot: {x: 1, y: 0.5}
|
||||
--- !u!114 &151246938
|
||||
|
@ -10303,6 +10368,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
|
||||
|
@ -11243,7 +11384,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
|
||||
|
@ -20311,8 +20452,8 @@ RectTransform:
|
|||
m_Father: {fileID: 2062943138}
|
||||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.01, y: 0}
|
||||
m_AnchorMax: {x: 0.01, y: 1}
|
||||
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}
|
||||
|
@ -20354,6 +20495,143 @@ CanvasRenderer:
|
|||
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
|
||||
|
@ -22205,6 +22483,7 @@ MonoBehaviour:
|
|||
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}
|
||||
|
@ -25179,6 +25458,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
|
||||
|
@ -27161,6 +27517,7 @@ RectTransform:
|
|||
m_Children:
|
||||
- {fileID: 278632244}
|
||||
- {fileID: 1922212788}
|
||||
- {fileID: 143407411}
|
||||
m_Father: {fileID: 788904137}
|
||||
m_RootOrder: 1
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
|
@ -31099,7 +31456,7 @@ RectTransform:
|
|||
m_RootOrder: 0
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0.01, y: 1}
|
||||
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}
|
||||
|
@ -31221,7 +31578,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: 136.20409}
|
||||
m_AnchoredPosition: {x: 0, y: 136.2041}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 1}
|
||||
--- !u!222 &1154875945
|
||||
|
@ -34607,6 +34964,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
|
||||
|
@ -35551,9 +35981,9 @@ RectTransform:
|
|||
m_Father: {fileID: 574002313}
|
||||
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: 40, y: -21}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 32, y: 32}
|
||||
m_Pivot: {x: 0, y: 0.5}
|
||||
--- !u!114 &1345846031
|
||||
|
@ -44049,9 +44479,9 @@ RectTransform:
|
|||
m_Father: {fileID: 574002313}
|
||||
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: 80, y: -21}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 32, y: 32}
|
||||
m_Pivot: {x: 0, y: 0.5}
|
||||
--- !u!114 &1783491359
|
||||
|
@ -47988,6 +48418,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
|
||||
|
|
|
@ -96,7 +96,9 @@ 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 || deferTimeKeeping) return;
|
||||
if (pitch != 0 && pitch != timelinePitch)
|
||||
|
@ -109,7 +111,7 @@ namespace HeavenStudio
|
|||
if (musicSource != null && musicSource.clip != null)
|
||||
{
|
||||
musicSource.pitch = SongPitch;
|
||||
if (isPlaying)
|
||||
if (doPitchResync && isPlaying && resync && !deferTimeKeeping)
|
||||
{
|
||||
time = MapTimeToPitchChanges(absTime + absTimeAdjust);
|
||||
songPos = startPos + time;
|
||||
|
@ -119,7 +121,7 @@ namespace HeavenStudio
|
|||
}
|
||||
}
|
||||
|
||||
public void SetMinigamePitch(float pitch)
|
||||
public void SetMinigamePitch(float pitch, bool resync = false)
|
||||
{
|
||||
if (isPaused || deferTimeKeeping || !isPlaying) return;
|
||||
if (pitch != 0 && pitch != minigamePitch)
|
||||
|
@ -132,7 +134,7 @@ namespace HeavenStudio
|
|||
if (musicSource != null && musicSource.clip != null)
|
||||
{
|
||||
musicSource.pitch = SongPitch;
|
||||
if (isPlaying)
|
||||
if (doPitchResync && isPlaying && resync && !deferTimeKeeping)
|
||||
{
|
||||
time = MapTimeToPitchChanges(absTime + absTimeAdjust);
|
||||
songPos = startPos + time;
|
||||
|
@ -162,8 +164,6 @@ namespace HeavenStudio
|
|||
double offset = chart.data.offset;
|
||||
startPos = GetSongPosFromBeat(beat);
|
||||
|
||||
double dspTime = AudioSettings.dspTime;
|
||||
|
||||
time = startPos;
|
||||
firstBeatOffset = offset;
|
||||
|
||||
|
@ -264,8 +264,8 @@ namespace HeavenStudio
|
|||
if (!isPlaying) return;
|
||||
isPlaying = false;
|
||||
isPaused = true;
|
||||
deferTimeKeeping = false;
|
||||
SetMinigamePitch(1f);
|
||||
deferTimeKeeping = false;
|
||||
|
||||
musicSource.Stop();
|
||||
Util.SoundByte.PauseOneShots();
|
||||
|
@ -286,8 +286,8 @@ namespace HeavenStudio
|
|||
|
||||
isPlaying = false;
|
||||
isPaused = false;
|
||||
deferTimeKeeping = false;
|
||||
SetMinigamePitch(1f);
|
||||
deferTimeKeeping = false;
|
||||
|
||||
musicSource.Stop();
|
||||
}
|
||||
|
@ -447,7 +447,7 @@ namespace HeavenStudio
|
|||
// if (metronome) metronomeSound = Util.SoundByte.PlayOneShot("metronome", Math.Ceiling(startBeat) + _metronomeTally);
|
||||
if (metronome)
|
||||
{
|
||||
metronomeSound = Util.MultiSound.Play(new List<Util.MultiSound.Sound> {
|
||||
metronomeSound = Util.MultiSound.Play(new List<Util.MultiSound.Sound> {
|
||||
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);
|
||||
|
@ -507,44 +507,58 @@ namespace HeavenStudio
|
|||
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;
|
||||
swingDivision = 1f;
|
||||
var chart = gameManager.Beatmap;
|
||||
if (chart.TempoChanges.Count == 0)
|
||||
return 120f;
|
||||
|
||||
RiqEntity tempoChange = chart.TempoChanges.FindLast(t => t.beat <= beat);
|
||||
tempoChange ??= chart.TempoChanges[0];
|
||||
swingRatio = tempoChange["swing"] + 0.5f;
|
||||
return tempoChange["tempo"];
|
||||
RiqEntity tempo = null;
|
||||
foreach (RiqEntity t in chart.TempoChanges)
|
||||
{
|
||||
if (t.beat > beat)
|
||||
{
|
||||
break;
|
||||
}
|
||||
tempo = t;
|
||||
}
|
||||
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)
|
||||
{
|
||||
return Math.Floor(beat) + GetSwingOffset(beat, GetSwingRatioAtBeat(beat));
|
||||
float ratio = GetSwingRatioAtBeat(beat, out float division);
|
||||
int floor = (int)Math.Floor(beat / division);
|
||||
|
||||
return (floor * division) + GetSwingOffset(beat, ratio, division);
|
||||
}
|
||||
|
||||
public double GetSwungBeat(double beat, float ratio)
|
||||
public double GetSwungBeat(double beat, float ratio, float division)
|
||||
{
|
||||
return Math.Floor(beat) + GetSwingOffset(beat, ratio);
|
||||
int floor = (int)Math.Floor(beat / division);
|
||||
return (floor * division) + GetSwingOffset(beat, ratio, division);
|
||||
}
|
||||
|
||||
public double GetSwingOffset(double beatFrac, float ratio)
|
||||
public double GetSwingOffset(double beatFrac, float ratio, float division)
|
||||
{
|
||||
beatFrac %= 1;
|
||||
beatFrac %= division;
|
||||
if (beatFrac <= ratio)
|
||||
{
|
||||
return 0.5 / ratio * beatFrac;
|
||||
|
@ -557,17 +571,21 @@ namespace HeavenStudio
|
|||
|
||||
public double GetUnSwungBeat(double beat)
|
||||
{
|
||||
return Math.Floor(beat) + GetUnSwingOffset(beat, GetSwingRatioAtBeat(beat));
|
||||
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)
|
||||
public double GetUnSwungBeat(double beat, float ratio, float division)
|
||||
{
|
||||
return Math.Floor(beat) + GetUnSwingOffset(beat, ratio);
|
||||
int floor = (int)Math.Floor(beat / division);
|
||||
return (floor * division) + GetUnSwingOffset(beat, ratio, division);
|
||||
}
|
||||
|
||||
public double GetUnSwingOffset(double beatFrac, float ratio)
|
||||
public double GetUnSwingOffset(double beatFrac, float ratio, float division)
|
||||
{
|
||||
beatFrac %= 1;
|
||||
beatFrac %= division;
|
||||
if (beatFrac <= ratio)
|
||||
{
|
||||
return 2 * ratio * beatFrac;
|
||||
|
|
|
@ -239,8 +239,12 @@ namespace HeavenStudio
|
|||
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.musicSource.clip = null;
|
||||
RiqFileHandler.WriteRiq(Beatmap);
|
||||
|
@ -798,7 +802,7 @@ namespace HeavenStudio
|
|||
}
|
||||
|
||||
conductor.Stop(beat);
|
||||
SetCurrentEventToClosest(beat);
|
||||
conductor.SetBeat(beat);
|
||||
|
||||
KillAllSounds();
|
||||
if (restart)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -262,8 +262,7 @@ namespace HeavenStudio.Games
|
|||
|
||||
void Update()
|
||||
{
|
||||
var cond = Conductor.instance;
|
||||
if (cond.isPlaying && !cond.isPaused)
|
||||
if (conductor.isPlaying && !conductor.isPaused)
|
||||
{
|
||||
if (queuedBalls.Count != 0)
|
||||
{
|
||||
|
@ -287,7 +286,7 @@ namespace HeavenStudio.Games
|
|||
}
|
||||
else
|
||||
{
|
||||
if ((!cond.isPaused) && queuedBalls.Count != 0)
|
||||
if ((!conductor.isPaused) && queuedBalls.Count != 0)
|
||||
{
|
||||
queuedBalls.Clear();
|
||||
}
|
||||
|
@ -353,7 +352,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();
|
||||
}
|
||||
|
@ -366,7 +365,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();
|
||||
|
@ -374,7 +373,7 @@ namespace HeavenStudio.Games
|
|||
{
|
||||
BeatAction.New(instance, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(Conductor.instance.songPositionInBeatsAsDouble + 1f, delegate
|
||||
new BeatAction.Action(conductor.songPositionInBeatsAsDouble + 1f, delegate
|
||||
{
|
||||
leaves.Play();
|
||||
treeAnim.DoScaledAnimationAsync("TreeRustle", _animSpeed);
|
||||
|
@ -471,11 +470,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<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(beat - (0.25f/3f), delegate { weasels.Hit(beat); }),
|
||||
|
@ -483,7 +482,7 @@ namespace HeavenStudio.Games
|
|||
}
|
||||
else
|
||||
{
|
||||
lastHitWeasel = Conductor.instance.songPositionInBeatsAsDouble;
|
||||
lastHitWeasel = conductor.songPositionInBeatsAsDouble;
|
||||
BeatAction.New(this, new List<BeatAction.Action>()
|
||||
{
|
||||
new BeatAction.Action(beat + 0.25, delegate { weasels.Hide(beat + 0.25f); }),
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -168,6 +168,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;
|
||||
|
||||
|
@ -241,6 +243,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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -291,9 +303,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<BeatAction.Action>() {
|
||||
new(beat + 1, delegate { RecursiveStepping(beat + 1); })
|
||||
|
@ -306,11 +318,11 @@ namespace HeavenStudio.Games
|
|||
var actions = new List<BeatAction.Action>();
|
||||
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++;
|
||||
}));
|
||||
}
|
||||
|
|
|
@ -149,6 +149,7 @@ namespace HeavenStudio.Games
|
|||
|
||||
private bool CheckEventLock()
|
||||
{
|
||||
Conductor cond = Conductor.instance;
|
||||
foreach (PlayerActionEvent toCompare in allEvents)
|
||||
{
|
||||
if (toCompare == this) continue;
|
||||
|
@ -161,9 +162,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
|
||||
|
@ -213,7 +214,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);
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
@ -299,7 +299,7 @@ namespace HeavenStudio.Games.Scripts_SeeSaw
|
|||
{
|
||||
lastState = currentState;
|
||||
currentState = state;
|
||||
startBeat = beat;
|
||||
startBeat = Conductor.instance.GetUnSwungBeat(beat);
|
||||
heightLastFrame = 0;
|
||||
hasChangedAnimMidAir = false;
|
||||
switch (currentState)
|
||||
|
|
|
@ -102,7 +102,7 @@ namespace HeavenStudio.Games
|
|||
}
|
||||
if (Conductor.instance.isPlaying)
|
||||
{
|
||||
Conductor.instance.SetMinigamePitch(1f);
|
||||
Conductor.instance.SetMinigamePitch(1f, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
|
|||
|
||||
if (highKicks[i].beat + GetAnimLength(State.HighKicked) > currentBeat)
|
||||
{
|
||||
highKickSwing = conductor.GetSwingRatioAtBeat(highKicks[i].beat);
|
||||
highKickSwing = conductor.GetSwingRatioAtBeat(highKicks[i].beat, out _);
|
||||
//Debug.Log("Setting state to high kick");
|
||||
state = State.HighKicked;
|
||||
double relativeBeat = highKicks[i].beat - dispensedBeat;
|
||||
|
@ -96,7 +96,7 @@ namespace HeavenStudio.Games.Scripts_SpaceSoccer
|
|||
}
|
||||
else
|
||||
{
|
||||
highKickSwing = conductor.GetSwingRatioAtBeat(highKicks[i].beat + GetAnimLength(State.HighKicked));
|
||||
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.
|
||||
|
|
|
@ -270,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")
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ public class TempoDialog : Dialog
|
|||
[SerializeField] TMP_InputField tempoInput;
|
||||
[SerializeField] TMP_InputField swingInput;
|
||||
[SerializeField] Slider swingSlider;
|
||||
[SerializeField] Toggle swingDivisionToggle;
|
||||
|
||||
public void SwitchTempoDialog()
|
||||
{
|
||||
|
@ -52,6 +53,8 @@ public class TempoDialog : Dialog
|
|||
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()
|
||||
|
@ -114,4 +117,12 @@ public class TempoDialog : Dialog
|
|||
swingSlider.value = tempoObj.chartEntity["swing"];
|
||||
}
|
||||
}
|
||||
|
||||
public void SwingDivisionToggle()
|
||||
{
|
||||
if (tempoObj != null)
|
||||
{
|
||||
tempoObj.SetSwingDivision(swingDivisionToggle.isOn);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,6 +68,12 @@ namespace HeavenStudio.Editor.Track
|
|||
UpdateTempo();
|
||||
}
|
||||
|
||||
public void SetSwingDivision(bool sixteenth)
|
||||
{
|
||||
chartEntity["swingDivision"] = sixteenth ? 0.5f : 1f;
|
||||
UpdateTempo();
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
UpdateTempo();
|
||||
|
|
|
@ -631,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);
|
||||
}
|
||||
|
@ -656,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)
|
||||
|
|
|
@ -99,6 +99,7 @@ namespace HeavenStudio
|
|||
{
|
||||
{"tempo", 120f},
|
||||
{"swing", 0f},
|
||||
{"swingDivision", 1f},
|
||||
{"timeSignature", new Vector2(4, 4)},
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue