From 686a8942f5c252d1c1715072c71f50cd020efe1c Mon Sep 17 00:00:00 2001 From: Braedon Date: Fri, 4 Feb 2022 17:16:22 -0500 Subject: [PATCH] Spaceball camera easings --- Assets/Scenes/Editor.unity | 1386 ++++++++++++++++- Assets/Scripts/Beatmap.cs | 3 + Assets/Scripts/Games/Spaceball/Spaceball.cs | 45 +- Assets/Scripts/LevelEditor/Editor.cs | 16 +- .../EventSelector/EventParameterManager.cs | 7 +- .../EventSelector/EventPropertyPrefab.cs | 55 +- Assets/Scripts/Minigames.cs | 2 +- Assets/Scripts/Util/EasingFunctions.cs | 1110 +++++++++++++ Assets/Scripts/Util/EasingFunctions.cs.meta | 11 + 9 files changed, 2597 insertions(+), 38 deletions(-) create mode 100644 Assets/Scripts/Util/EasingFunctions.cs create mode 100644 Assets/Scripts/Util/EasingFunctions.cs.meta diff --git a/Assets/Scenes/Editor.unity b/Assets/Scenes/Editor.unity index c1e9c572..7f437a56 100644 --- a/Assets/Scenes/Editor.unity +++ b/Assets/Scenes/Editor.unity @@ -332,7 +332,7 @@ MonoBehaviour: m_fontSizeBase: 20 m_fontWeight: 400 m_enableAutoSizing: 1 - m_fontSizeMin: 18 + m_fontSizeMin: 3 m_fontSizeMax: 72 m_fontStyle: 0 m_HorizontalAlignment: 1 @@ -588,6 +588,140 @@ MonoBehaviour: image: {fileID: 19519746} width: 10332 col: {r: 0.6509804, g: 0.3882353, b: 0.8, a: 1} +--- !u!1 &44496734 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 44496735} + - component: {fileID: 44496737} + - component: {fileID: 44496736} + 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 &44496735 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 44496734} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.0000798, y: 1.0000798, z: 1.0000798} + m_Children: [] + m_Father: {fileID: 184838088} + 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: 63.92, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &44496736 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 44496734} + 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: Dropdown + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: c2df694f599b22b42817910ff570a9df, type: 2} + m_sharedMaterial: {fileID: -5829441969153149921, guid: c2df694f599b22b42817910ff570a9df, 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: 14 + m_fontSizeBase: 20 + m_fontWeight: 400 + m_enableAutoSizing: 1 + m_fontSizeMin: 3 + 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_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 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 &44496737 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 44496734} + m_CullTransparentMesh: 1 --- !u!1 &93132552 GameObject: m_ObjectHideFlags: 0 @@ -1903,6 +2037,61 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 184364175} m_CullTransparentMesh: 1 +--- !u!1 &184838087 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 184838088} + - component: {fileID: 184838089} + m_Layer: 5 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &184838088 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184838087} + 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_Children: + - {fileID: 44496735} + - {fileID: 9172948791891367921} + m_Father: {fileID: 830452352} + 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: 288.675, y: -25} + m_SizeDelta: {x: 537.35, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &184838089 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 184838087} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3b7c76a246115c1459c963e93f7db056, type: 3} + m_Name: + m_EditorClassIdentifier: + caption: {fileID: 44496736} + parameterManager: {fileID: 830452354} + slider: {fileID: 0} + inputField: {fileID: 0} + dropdown: {fileID: 9172948791891367920} --- !u!1 &191459085 GameObject: m_ObjectHideFlags: 0 @@ -3159,9 +3348,10 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: caption: {fileID: 5490985} + parameterManager: {fileID: 830452354} slider: {fileID: 2067224779} inputField: {fileID: 1182082595} - parameterManager: {fileID: 830452354} + dropdown: {fileID: 0} --- !u!1 &411779173 GameObject: m_ObjectHideFlags: 0 @@ -6717,6 +6907,7 @@ MonoBehaviour: length: 0 valA: 0 type: 0 + ease: 0 datamodel: eventObj: {fileID: 0} length: 0 @@ -6924,6 +7115,7 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 396879233} + - {fileID: 184838088} m_Father: {fileID: 1050802356} m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -6973,12 +7165,14 @@ MonoBehaviour: eventSelector: {fileID: 1056099131} gridGameSelector: {fileID: 1154875947} IntegerP: {fileID: 396879232} + DropdownP: {fileID: 184838087} entity: beat: 0 track: 0 length: 0 valA: 0 type: 0 + ease: 0 datamodel: eventObj: {fileID: 0} --- !u!1 &830672828 @@ -9395,7 +9589,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Navigation: - m_Mode: 3 + m_Mode: 0 m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} @@ -15183,7 +15377,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_Navigation: - m_Mode: 3 + m_Mode: 0 m_WrapAround: 0 m_SelectOnUp: {fileID: 0} m_SelectOnDown: {fileID: 0} @@ -15579,3 +15773,1187 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2142375786} m_CullTransparentMesh: 1 +--- !u!1 &9172948790358451332 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948790358451335} + - component: {fileID: 9172948790358451385} + - component: {fileID: 9172948790358451334} + m_Layer: 5 + m_Name: Item Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &9172948790358451334 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790358451332} + 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: Option A + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 35949c950a936b744936efd75ae436ea, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + 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: 0 + 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: 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_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 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: 1 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!224 &9172948790358451335 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790358451332} + 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_Children: [] + m_Father: {fileID: 9172948791269996195} + 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: 5, y: -0.5} + m_SizeDelta: {x: -30, y: -3} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9172948790358451385 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790358451332} + m_CullTransparentMesh: 1 +--- !u!224 &9172948790374844804 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790374844805} + 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_Children: [] + m_Father: {fileID: 9172948791891367921} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -15, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &9172948790374844805 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948790374844804} + - component: {fileID: 9172948790374844806} + - component: {fileID: 9172948790374844807} + m_Layer: 5 + m_Name: Arrow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &9172948790374844806 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790374844805} + m_CullTransparentMesh: 1 +--- !u!114 &9172948790374844807 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790374844805} + 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: 10915, 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!224 &9172948790422923506 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790422923507} + 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_Children: [] + m_Father: {fileID: 9172948791018705698} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.2} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &9172948790422923507 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948790422923506} + - component: {fileID: 9172948790422923508} + - component: {fileID: 9172948790422923509} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &9172948790422923508 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790422923507} + m_CullTransparentMesh: 1 +--- !u!114 &9172948790422923509 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790422923507} + 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!1 &9172948790445334532 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948790445334535} + - component: {fileID: 9172948790445334585} + - component: {fileID: 9172948790445334534} + m_Layer: 5 + m_Name: Item Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &9172948790445334534 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790445334532} + 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: 0.9607843, g: 0.9607843, b: 0.9607843, 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: 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!224 &9172948790445334535 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790445334532} + 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_Children: [] + m_Father: {fileID: 9172948791269996195} + 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!222 &9172948790445334585 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790445334532} + m_CullTransparentMesh: 1 +--- !u!1 &9172948790492497232 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948790492497235} + - component: {fileID: 9172948790492497236} + - component: {fileID: 9172948790492497237} + - component: {fileID: 9172948790492497234} + m_Layer: 5 + m_Name: Template + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &9172948790492497234 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790492497232} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1aa08ab6e0800fa44ae55d278d1423e3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 9172948791814519783} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 2 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 9172948791288181729} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 9172948790907700978} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!224 &9172948790492497235 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790492497232} + 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_Children: + - {fileID: 9172948791288181729} + - {fileID: 9172948790907700979} + m_Father: {fileID: 9172948791891367921} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 2} + m_SizeDelta: {x: 0, y: 150} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &9172948790492497236 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790492497232} + m_CullTransparentMesh: 1 +--- !u!114 &9172948790492497237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790492497232} + 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: 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!1 &9172948790907700976 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948790907700979} + - component: {fileID: 9172948790907700980} + - component: {fileID: 9172948790907700981} + - component: {fileID: 9172948790907700978} + m_Layer: 5 + m_Name: Scrollbar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &9172948790907700978 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790907700976} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a4db7a114972834c8e4117be1d82ba3, 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: 9172948790422923509} + m_HandleRect: {fileID: 9172948790422923506} + m_Direction: 2 + m_Value: 0 + m_Size: 0.2 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!224 &9172948790907700979 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790907700976} + 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_Children: + - {fileID: 9172948791018705698} + m_Father: {fileID: 9172948790492497235} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 0} + m_Pivot: {x: 1, y: 1} +--- !u!222 &9172948790907700980 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790907700976} + m_CullTransparentMesh: 1 +--- !u!114 &9172948790907700981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948790907700976} + 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!224 &9172948791018705698 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791018705699} + 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_Children: + - {fileID: 9172948790422923506} + m_Father: {fileID: 9172948790907700979} + 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: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &9172948791018705699 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948791018705698} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &9172948791269996192 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948791269996195} + - component: {fileID: 9172948791269996194} + m_Layer: 5 + m_Name: Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &9172948791269996194 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791269996192} + 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: 9172948790445334534} + toggleTransition: 1 + graphic: {fileID: 9172948792157168130} + m_Group: {fileID: 0} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 1 +--- !u!224 &9172948791269996195 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791269996192} + 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_Children: + - {fileID: 9172948790445334535} + - {fileID: 9172948792157168131} + - {fileID: 9172948790358451335} + m_Father: {fileID: 9172948791814519783} + m_RootOrder: 0 + 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: 0} + m_SizeDelta: {x: 0, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &9172948791288181728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791288181742} + 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: 10917, 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!224 &9172948791288181729 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791288181742} + 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_Children: + - {fileID: 9172948791814519783} + m_Father: {fileID: 9172948790492497235} + 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: -18, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &9172948791288181730 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791288181742} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 31a19414c41e5ae4aae2af33fee712f6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!222 &9172948791288181731 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791288181742} + m_CullTransparentMesh: 1 +--- !u!1 &9172948791288181742 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948791288181729} + - component: {fileID: 9172948791288181730} + - component: {fileID: 9172948791288181731} + - component: {fileID: 9172948791288181728} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!222 &9172948791664681352 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791664681367} + m_CullTransparentMesh: 1 +--- !u!114 &9172948791664681353 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791664681367} + 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: + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 35949c950a936b744936efd75ae436ea, type: 2} + m_sharedMaterial: {fileID: -212896991529246517, guid: 35949c950a936b744936efd75ae436ea, 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: 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_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 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!224 &9172948791664681366 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791664681367} + 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_Children: [] + m_Father: {fileID: 9172948791891367921} + 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: -7.5, y: -0.5} + m_SizeDelta: {x: -35, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &9172948791664681367 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948791664681366} + - component: {fileID: 9172948791664681352} + - component: {fileID: 9172948791664681353} + m_Layer: 5 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &9172948791814519780 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948791814519783} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9172948791814519783 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791814519780} + 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_Children: + - {fileID: 9172948791269996195} + m_Father: {fileID: 9172948791288181729} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 28} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &9172948791891367920 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791891367934} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7b743370ac3e4ec2a1668f5455a8ef8a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + 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: 9172948791891367923} + m_Template: {fileID: 9172948790492497235} + m_CaptionText: {fileID: 9172948791664681353} + m_CaptionImage: {fileID: 0} + m_Placeholder: {fileID: 0} + m_ItemText: {fileID: 9172948790358451334} + m_ItemImage: {fileID: 0} + m_Value: 0 + m_Options: + m_Options: [] + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_AlphaFadeSpeed: 0.15 +--- !u!224 &9172948791891367921 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791891367934} + 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_Children: + - {fileID: 9172948791664681366} + - {fileID: 9172948790374844804} + - {fileID: 9172948790492497235} + m_Father: {fileID: 184838088} + 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: 68.2, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!222 &9172948791891367922 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791891367934} + m_CullTransparentMesh: 1 +--- !u!114 &9172948791891367923 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948791891367934} + 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: 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!1 &9172948791891367934 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948791891367921} + - component: {fileID: 9172948791891367922} + - component: {fileID: 9172948791891367923} + - component: {fileID: 9172948791891367920} + m_Layer: 5 + m_Name: Dropdown + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &9172948792157168128 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9172948792157168131} + - component: {fileID: 9172948792157168133} + - component: {fileID: 9172948792157168130} + m_Layer: 5 + m_Name: Item Checkmark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &9172948792157168130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948792157168128} + 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: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!224 &9172948792157168131 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948792157168128} + 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_Children: [] + m_Father: {fileID: 9172948791269996195} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9172948792157168133 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9172948792157168128} + m_CullTransparentMesh: 1 diff --git a/Assets/Scripts/Beatmap.cs b/Assets/Scripts/Beatmap.cs index cdf4ff30..31d7a51e 100644 --- a/Assets/Scripts/Beatmap.cs +++ b/Assets/Scripts/Beatmap.cs @@ -2,6 +2,8 @@ using System; using System.Collections.Generic; using Newtonsoft.Json; +using RhythmHeavenMania.Util; + namespace RhythmHeavenMania { [Serializable] @@ -19,6 +21,7 @@ namespace RhythmHeavenMania [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float length; [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valA; [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public int type; + [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public EasingFunction.Ease ease; public string datamodel; [JsonIgnore] public Editor.Track.TimelineEventObj eventObj; diff --git a/Assets/Scripts/Games/Spaceball/Spaceball.cs b/Assets/Scripts/Games/Spaceball/Spaceball.cs index f422d156..0e5cb31f 100644 --- a/Assets/Scripts/Games/Spaceball/Spaceball.cs +++ b/Assets/Scripts/Games/Spaceball/Spaceball.cs @@ -27,6 +27,8 @@ namespace RhythmHeavenMania.Games.Spaceball public Alien alien; + private EasingFunction.Ease lastEase; + public static Spaceball instance { get; set; } public override void OnGameSwitch() @@ -51,7 +53,17 @@ namespace RhythmHeavenMania.Games.Spaceball private void Start() { - allCameraEvents = EventCaller.GetAllInGameManagerList("spaceball", new string[] { "camera" }); + var camEvents = EventCaller.GetAllInGameManagerList("spaceball", new string[] { "camera" }); + List tempEvents = new List(); + for (int i = 0; i < camEvents.Count; i++) + { + if (camEvents[i].beat + camEvents[i].beat >= Conductor.instance.songPositionInBeats) + { + tempEvents.Add(camEvents[i]); + } + } + + allCameraEvents = tempEvents; UpdateCameraZoom(); // can't believe this shit actually works } @@ -71,22 +83,33 @@ namespace RhythmHeavenMania.Games.Spaceball float normalizedBeat = Conductor.instance.GetPositionFromBeat(currentZoomCamBeat, currentZoomCamLength); - if (normalizedBeat > Minigame.EndTime()) + if (normalizedBeat >= 0) { - // lastCamDistance = GameCamera.instance.camera.transform.localPosition.z; - } - else - { - if (currentZoomCamLength < 0) + if (normalizedBeat > Minigame.EndTime()) { - GameCamera.instance.camera.transform.localPosition = new Vector3(0, 0, currentZoomCamDistance); + // lastCamDistance = GameCamera.instance.camera.transform.localPosition.z; } else { - float newPosZ = Mathf.Lerp(lastCamDistance, currentZoomCamDistance, normalizedBeat); - GameCamera.instance.camera.transform.localPosition = new Vector3(0, 0, newPosZ); + if (currentZoomCamLength < 0) + { + GameCamera.instance.camera.transform.localPosition = new Vector3(0, 0, currentZoomCamDistance); + } + else + { + EasingFunction.Ease ease = EasingFunction.Ease.EaseInOutCirc; + EasingFunction.Function func = EasingFunction.GetEasingFunction(lastEase); + + float newPosZ = func(lastCamDistance, currentZoomCamDistance, normalizedBeat); + GameCamera.instance.camera.transform.localPosition = new Vector3(0, 0, newPosZ); + } } } + else + { + // ? + GameCamera.instance.camera.transform.localPosition = new Vector3(0, 0, -10f); + } } } @@ -116,6 +139,8 @@ namespace RhythmHeavenMania.Games.Spaceball currentZoomCamDistance = 0; else currentZoomCamDistance = dist; + + lastEase = allCameraEvents[currentZoomIndex].ease; } } diff --git a/Assets/Scripts/LevelEditor/Editor.cs b/Assets/Scripts/LevelEditor/Editor.cs index 4c9a26cd..44495526 100644 --- a/Assets/Scripts/LevelEditor/Editor.cs +++ b/Assets/Scripts/LevelEditor/Editor.cs @@ -53,7 +53,7 @@ namespace RhythmHeavenMania.Editor private bool changedMusic = false; private bool loadedMusic = false; private string currentRemixPath = ""; - private int lastEditorObjectsCount = 0; + private string remixName = ""; private bool fullscreen; public bool discordDuringTesting = false; @@ -176,13 +176,6 @@ namespace RhythmHeavenMania.Editor } } - if (lastEditorObjectsCount != GameManager.instance.BeatmapEntities()) - { - UpdateEditorStatus(false); - } - - lastEditorObjectsCount = GameManager.instance.BeatmapEntities(); - if (Application.isEditor) { if (Input.GetKeyDown(KeyCode.S)) @@ -308,6 +301,9 @@ namespace RhythmHeavenMania.Editor zipStream.Write(bytes, 0, bytes.Length); } } + + currentRemixPath = path; + UpdateEditorStatus(false); } } @@ -364,6 +360,8 @@ namespace RhythmHeavenMania.Editor } currentRemixPath = path; + remixName = Path.GetFileName(path); + UpdateEditorStatus(false); CommandManager.instance.Clear(); } }); @@ -394,7 +392,7 @@ namespace RhythmHeavenMania.Editor private void UpdateEditorStatus(bool updateTime) { if (discordDuringTesting || !Application.isEditor) - DiscordRPC.DiscordRPC.UpdateActivity("In Editor", $"Objects: {GameManager.instance.Beatmap.entities.Count + GameManager.instance.Beatmap.tempoChanges.Count}", updateTime); + DiscordRPC.DiscordRPC.UpdateActivity("In Editor", $"{remixName}", updateTime); } public string GetJson() diff --git a/Assets/Scripts/LevelEditor/EventSelector/EventParameterManager.cs b/Assets/Scripts/LevelEditor/EventSelector/EventParameterManager.cs index 3a305743..48f8d5c0 100644 --- a/Assets/Scripts/LevelEditor/EventSelector/EventParameterManager.cs +++ b/Assets/Scripts/LevelEditor/EventSelector/EventParameterManager.cs @@ -14,6 +14,7 @@ namespace RhythmHeavenMania.Editor [Header("Property Prefabs")] [SerializeField] private GameObject IntegerP; + [SerializeField] private GameObject DropdownP; public Beatmap.Entity entity; @@ -88,6 +89,10 @@ namespace RhythmHeavenMania.Editor { prefab = IntegerP; } + else if (type.GetType() == typeof(RhythmHeavenMania.Util.EasingFunction.Ease)) + { + prefab = DropdownP; + } GameObject input = Instantiate(prefab); input.transform.SetParent(this.gameObject.transform); @@ -101,7 +106,7 @@ namespace RhythmHeavenMania.Editor private void DestroyParams() { active = false; - for (int i = 1; i < transform.childCount; i++) + for (int i = 2; i < transform.childCount; i++) { Destroy(transform.GetChild(i).gameObject); } diff --git a/Assets/Scripts/LevelEditor/EventSelector/EventPropertyPrefab.cs b/Assets/Scripts/LevelEditor/EventSelector/EventPropertyPrefab.cs index 9ff5fa96..a1cfe1de 100644 --- a/Assets/Scripts/LevelEditor/EventSelector/EventPropertyPrefab.cs +++ b/Assets/Scripts/LevelEditor/EventSelector/EventPropertyPrefab.cs @@ -5,39 +5,68 @@ using UnityEngine.UI; using TMPro; +using RhythmHeavenMania.Util; + namespace RhythmHeavenMania.Editor { public class EventPropertyPrefab : MonoBehaviour { public TMP_Text caption; + [SerializeField] private EventParameterManager parameterManager; + + [Header("Integer and Float")] + [Space(10)] public Slider slider; public TMP_InputField inputField; + [Header("Dropdown")] + [Space(10)] + public TMP_Dropdown dropdown; + private string propertyName; - [SerializeField] private EventParameterManager parameterManager; public void SetProperties(string propertyName, object type, string caption) { this.propertyName = propertyName; this.caption.text = caption; - var integer = ((EntityTypes.Integer)type); + if (type.GetType() == typeof(EntityTypes.Integer)) + { + var integer = ((EntityTypes.Integer)type); - slider.minValue = integer.min; - slider.maxValue = integer.max; + slider.minValue = integer.min; + slider.maxValue = integer.max; - slider.value = Mathf.RoundToInt(System.Convert.ToSingle(parameterManager.entity[propertyName])); - inputField.text = slider.value.ToString(); + slider.value = Mathf.RoundToInt(System.Convert.ToSingle(parameterManager.entity[propertyName])); + inputField.text = slider.value.ToString(); - slider.onValueChanged.AddListener(delegate { TestChange(); }); - } + slider.onValueChanged.AddListener(delegate + { + inputField.text = slider.value.ToString(); + parameterManager.entity[propertyName] = (int)slider.value; + }); + } + else if (type.GetType() == typeof(EasingFunction.Ease)) + { + List dropDownData = new List(); + for (int i = 0; i < System.Enum.GetValues(typeof(EasingFunction.Ease)).Length; i++) + { + string name = System.Enum.GetNames(typeof(EasingFunction.Ease))[i]; + TMP_Dropdown.OptionData optionData = new TMP_Dropdown.OptionData(); - public void TestChange() - { - print("bru"); - inputField.text = slider.value.ToString(); - parameterManager.entity[propertyName] = (int)slider.value; + optionData.text = name; + + dropDownData.Add(optionData); + } + dropdown.AddOptions(dropDownData); + dropdown.value = ((int)(EasingFunction.Ease)parameterManager.entity[propertyName]); + + dropdown.onValueChanged.AddListener(delegate + { + parameterManager.entity[propertyName] = (EasingFunction.Ease)dropdown.value; + }); + } } } } \ No newline at end of file diff --git a/Assets/Scripts/Minigames.cs b/Assets/Scripts/Minigames.cs index daf6fec2..1342e09a 100644 --- a/Assets/Scripts/Minigames.cs +++ b/Assets/Scripts/Minigames.cs @@ -127,7 +127,7 @@ namespace RhythmHeavenMania new GameAction("shootHigh", delegate { Spaceball.instance.Shoot(eventCaller.currentBeat, true, eventCaller.currentType); }, 3), new GameAction("costume", delegate { Spaceball.instance.Costume(eventCaller.currentType); }, 1f, false, new List() { new Param("type", new EntityTypes.Integer(0, 2), "type") } ), new GameAction("alien", delegate { Spaceball.instance.alien.Show(eventCaller.currentBeat); } ), - new GameAction("camera", delegate { Spaceball.instance.OverrideCurrentZoom(); }, 4, true, new List() { new Param("valA", new EntityTypes.Integer(1, 320, 10), "zoom") } ), + new GameAction("camera", delegate { Spaceball.instance.OverrideCurrentZoom(); }, 4, true, new List() { new Param("valA", new EntityTypes.Integer(1, 320, 10), "zoom"), new Param("ease", EasingFunction.Ease.Linear, "ease") } ), new GameAction("prepare dispenser", delegate { Spaceball.instance.PrepareDispenser(); }, 1 ), }), new Minigame("karateman", "Karate Man", "70A8D8", false, false, new List() diff --git a/Assets/Scripts/Util/EasingFunctions.cs b/Assets/Scripts/Util/EasingFunctions.cs new file mode 100644 index 00000000..980251d6 --- /dev/null +++ b/Assets/Scripts/Util/EasingFunctions.cs @@ -0,0 +1,1110 @@ +/* + * Created by C.J. Kimberlin + * + * The MIT License (MIT) + * + * Copyright (c) 2019 + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * + * TERMS OF USE - EASING EQUATIONS + * Open source under the BSD License. + * Copyright (c)2001 Robert Penner + * All rights reserved. + * Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * + * ============= Description ============= + * + * Below is an example of how to use the easing functions in the file. There is a getting function that will return the function + * from an enum. This is useful since the enum can be exposed in the editor and then the function queried during Start(). + * + * EasingFunction.Ease ease = EasingFunction.Ease.EaseInOutQuad; + * EasingFunction.EasingFunc func = GetEasingFunction(ease; + * + * float value = func(0, 10, 0.67f); + * + * EasingFunction.EaseingFunc derivativeFunc = GetEasingFunctionDerivative(ease); + * + * float derivativeValue = derivativeFunc(0, 10, 0.67f); + */ + +using UnityEngine; + +namespace RhythmHeavenMania.Util +{ + public static class EasingFunction + { + public enum Ease + { + Linear = 0, + EaseInQuad, + EaseOutQuad, + EaseInOutQuad, + EaseInCubic, + EaseOutCubic, + EaseInOutCubic, + EaseInQuart, + EaseOutQuart, + EaseInOutQuart, + EaseInQuint, + EaseOutQuint, + EaseInOutQuint, + EaseInSine, + EaseOutSine, + EaseInOutSine, + EaseInExpo, + EaseOutExpo, + EaseInOutExpo, + EaseInCirc, + EaseOutCirc, + EaseInOutCirc, + EaseInBounce, + EaseOutBounce, + EaseInOutBounce, + EaseInBack, + EaseOutBack, + EaseInOutBack, + EaseInElastic, + EaseOutElastic, + EaseInOutElastic, + Spring, + } + + private const float NATURAL_LOG_OF_2 = 0.693147181f; + + // + // Easing functions + // + + public static float Linear(float start, float end, float value) + { + return Mathf.Lerp(start, end, value); + } + + public static float Spring(float start, float end, float value) + { + value = Mathf.Clamp01(value); + value = (Mathf.Sin(value * Mathf.PI * (0.2f + 2.5f * value * value * value)) * Mathf.Pow(1f - value, 2.2f) + value) * (1f + (1.2f * (1f - value))); + return start + (end - start) * value; + } + + public static float EaseInQuad(float start, float end, float value) + { + end -= start; + return end * value * value + start; + } + + public static float EaseOutQuad(float start, float end, float value) + { + end -= start; + return -end * value * (value - 2) + start; + } + + public static float EaseInOutQuad(float start, float end, float value) + { + value /= .5f; + end -= start; + if (value < 1) return end * 0.5f * value * value + start; + value--; + return -end * 0.5f * (value * (value - 2) - 1) + start; + } + + public static float EaseInCubic(float start, float end, float value) + { + end -= start; + return end * value * value * value + start; + } + + public static float EaseOutCubic(float start, float end, float value) + { + value--; + end -= start; + return end * (value * value * value + 1) + start; + } + + public static float EaseInOutCubic(float start, float end, float value) + { + value /= .5f; + end -= start; + if (value < 1) return end * 0.5f * value * value * value + start; + value -= 2; + return end * 0.5f * (value * value * value + 2) + start; + } + + public static float EaseInQuart(float start, float end, float value) + { + end -= start; + return end * value * value * value * value + start; + } + + public static float EaseOutQuart(float start, float end, float value) + { + value--; + end -= start; + return -end * (value * value * value * value - 1) + start; + } + + public static float EaseInOutQuart(float start, float end, float value) + { + value /= .5f; + end -= start; + if (value < 1) return end * 0.5f * value * value * value * value + start; + value -= 2; + return -end * 0.5f * (value * value * value * value - 2) + start; + } + + public static float EaseInQuint(float start, float end, float value) + { + end -= start; + return end * value * value * value * value * value + start; + } + + public static float EaseOutQuint(float start, float end, float value) + { + value--; + end -= start; + return end * (value * value * value * value * value + 1) + start; + } + + public static float EaseInOutQuint(float start, float end, float value) + { + value /= .5f; + end -= start; + if (value < 1) return end * 0.5f * value * value * value * value * value + start; + value -= 2; + return end * 0.5f * (value * value * value * value * value + 2) + start; + } + + public static float EaseInSine(float start, float end, float value) + { + end -= start; + return -end * Mathf.Cos(value * (Mathf.PI * 0.5f)) + end + start; + } + + public static float EaseOutSine(float start, float end, float value) + { + end -= start; + return end * Mathf.Sin(value * (Mathf.PI * 0.5f)) + start; + } + + public static float EaseInOutSine(float start, float end, float value) + { + end -= start; + return -end * 0.5f * (Mathf.Cos(Mathf.PI * value) - 1) + start; + } + + public static float EaseInExpo(float start, float end, float value) + { + end -= start; + return end * Mathf.Pow(2, 10 * (value - 1)) + start; + } + + public static float EaseOutExpo(float start, float end, float value) + { + end -= start; + return end * (-Mathf.Pow(2, -10 * value) + 1) + start; + } + + public static float EaseInOutExpo(float start, float end, float value) + { + value /= .5f; + end -= start; + if (value < 1) return end * 0.5f * Mathf.Pow(2, 10 * (value - 1)) + start; + value--; + return end * 0.5f * (-Mathf.Pow(2, -10 * value) + 2) + start; + } + + public static float EaseInCirc(float start, float end, float value) + { + end -= start; + return -end * (Mathf.Sqrt(1 - value * value) - 1) + start; + } + + public static float EaseOutCirc(float start, float end, float value) + { + value--; + end -= start; + return end * Mathf.Sqrt(1 - value * value) + start; + } + + public static float EaseInOutCirc(float start, float end, float value) + { + value /= .5f; + end -= start; + if (value < 1) return -end * 0.5f * (Mathf.Sqrt(1 - value * value) - 1) + start; + value -= 2; + return end * 0.5f * (Mathf.Sqrt(1 - value * value) + 1) + start; + } + + public static float EaseInBounce(float start, float end, float value) + { + end -= start; + float d = 1f; + return end - EaseOutBounce(0, end, d - value) + start; + } + + public static float EaseOutBounce(float start, float end, float value) + { + value /= 1f; + end -= start; + if (value < (1 / 2.75f)) + { + return end * (7.5625f * value * value) + start; + } + else if (value < (2 / 2.75f)) + { + value -= (1.5f / 2.75f); + return end * (7.5625f * (value) * value + .75f) + start; + } + else if (value < (2.5 / 2.75)) + { + value -= (2.25f / 2.75f); + return end * (7.5625f * (value) * value + .9375f) + start; + } + else + { + value -= (2.625f / 2.75f); + return end * (7.5625f * (value) * value + .984375f) + start; + } + } + + public static float EaseInOutBounce(float start, float end, float value) + { + end -= start; + float d = 1f; + if (value < d * 0.5f) return EaseInBounce(0, end, value * 2) * 0.5f + start; + else return EaseOutBounce(0, end, value * 2 - d) * 0.5f + end * 0.5f + start; + } + + public static float EaseInBack(float start, float end, float value) + { + end -= start; + value /= 1; + float s = 1.70158f; + return end * (value) * value * ((s + 1) * value - s) + start; + } + + public static float EaseOutBack(float start, float end, float value) + { + float s = 1.70158f; + end -= start; + value = (value) - 1; + return end * ((value) * value * ((s + 1) * value + s) + 1) + start; + } + + public static float EaseInOutBack(float start, float end, float value) + { + float s = 1.70158f; + end -= start; + value /= .5f; + if ((value) < 1) + { + s *= (1.525f); + return end * 0.5f * (value * value * (((s) + 1) * value - s)) + start; + } + value -= 2; + s *= (1.525f); + return end * 0.5f * ((value) * value * (((s) + 1) * value + s) + 2) + start; + } + + public static float EaseInElastic(float start, float end, float value) + { + end -= start; + + float d = 1f; + float p = d * .3f; + float s; + float a = 0; + + if (value == 0) return start; + + if ((value /= d) == 1) return start + end; + + if (a == 0f || a < Mathf.Abs(end)) + { + a = end; + s = p / 4; + } + else + { + s = p / (2 * Mathf.PI) * Mathf.Asin(end / a); + } + + return -(a * Mathf.Pow(2, 10 * (value -= 1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start; + } + + public static float EaseOutElastic(float start, float end, float value) + { + end -= start; + + float d = 1f; + float p = d * .3f; + float s; + float a = 0; + + if (value == 0) return start; + + if ((value /= d) == 1) return start + end; + + if (a == 0f || a < Mathf.Abs(end)) + { + a = end; + s = p * 0.25f; + } + else + { + s = p / (2 * Mathf.PI) * Mathf.Asin(end / a); + } + + return (a * Mathf.Pow(2, -10 * value) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) + end + start); + } + + public static float EaseInOutElastic(float start, float end, float value) + { + end -= start; + + float d = 1f; + float p = d * .3f; + float s; + float a = 0; + + if (value == 0) return start; + + if ((value /= d * 0.5f) == 2) return start + end; + + if (a == 0f || a < Mathf.Abs(end)) + { + a = end; + s = p / 4; + } + else + { + s = p / (2 * Mathf.PI) * Mathf.Asin(end / a); + } + + if (value < 1) return -0.5f * (a * Mathf.Pow(2, 10 * (value -= 1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p)) + start; + return a * Mathf.Pow(2, -10 * (value -= 1)) * Mathf.Sin((value * d - s) * (2 * Mathf.PI) / p) * 0.5f + end + start; + } + + // + // These are derived functions that the motor can use to get the speed at a specific time. + // + // The easing functions all work with a normalized time (0 to 1) and the returned value here + // reflects that. Values returned here should be divided by the actual time. + // + // TODO: These functions have not had the testing they deserve. If there is odd behavior around + // dash speeds then this would be the first place I'd look. + + public static float LinearD(float start, float end, float value) + { + return end - start; + } + + public static float EaseInQuadD(float start, float end, float value) + { + return 2f * (end - start) * value; + } + + public static float EaseOutQuadD(float start, float end, float value) + { + end -= start; + return -end * value - end * (value - 2); + } + + public static float EaseInOutQuadD(float start, float end, float value) + { + value /= .5f; + end -= start; + + if (value < 1) + { + return end * value; + } + + value--; + + return end * (1 - value); + } + + public static float EaseInCubicD(float start, float end, float value) + { + return 3f * (end - start) * value * value; + } + + public static float EaseOutCubicD(float start, float end, float value) + { + value--; + end -= start; + return 3f * end * value * value; + } + + public static float EaseInOutCubicD(float start, float end, float value) + { + value /= .5f; + end -= start; + + if (value < 1) + { + return (3f / 2f) * end * value * value; + } + + value -= 2; + + return (3f / 2f) * end * value * value; + } + + public static float EaseInQuartD(float start, float end, float value) + { + return 4f * (end - start) * value * value * value; + } + + public static float EaseOutQuartD(float start, float end, float value) + { + value--; + end -= start; + return -4f * end * value * value * value; + } + + public static float EaseInOutQuartD(float start, float end, float value) + { + value /= .5f; + end -= start; + + if (value < 1) + { + return 2f * end * value * value * value; + } + + value -= 2; + + return -2f * end * value * value * value; + } + + public static float EaseInQuintD(float start, float end, float value) + { + return 5f * (end - start) * value * value * value * value; + } + + public static float EaseOutQuintD(float start, float end, float value) + { + value--; + end -= start; + return 5f * end * value * value * value * value; + } + + public static float EaseInOutQuintD(float start, float end, float value) + { + value /= .5f; + end -= start; + + if (value < 1) + { + return (5f / 2f) * end * value * value * value * value; + } + + value -= 2; + + return (5f / 2f) * end * value * value * value * value; + } + + public static float EaseInSineD(float start, float end, float value) + { + return (end - start) * 0.5f * Mathf.PI * Mathf.Sin(0.5f * Mathf.PI * value); + } + + public static float EaseOutSineD(float start, float end, float value) + { + end -= start; + return (Mathf.PI * 0.5f) * end * Mathf.Cos(value * (Mathf.PI * 0.5f)); + } + + public static float EaseInOutSineD(float start, float end, float value) + { + end -= start; + return end * 0.5f * Mathf.PI * Mathf.Sin(Mathf.PI * value); + } + public static float EaseInExpoD(float start, float end, float value) + { + return (10f * NATURAL_LOG_OF_2 * (end - start) * Mathf.Pow(2f, 10f * (value - 1))); + } + + public static float EaseOutExpoD(float start, float end, float value) + { + end -= start; + return 5f * NATURAL_LOG_OF_2 * end * Mathf.Pow(2f, 1f - 10f * value); + } + + public static float EaseInOutExpoD(float start, float end, float value) + { + value /= .5f; + end -= start; + + if (value < 1) + { + return 5f * NATURAL_LOG_OF_2 * end * Mathf.Pow(2f, 10f * (value - 1)); + } + + value--; + + return (5f * NATURAL_LOG_OF_2 * end) / (Mathf.Pow(2f, 10f * value)); + } + + public static float EaseInCircD(float start, float end, float value) + { + return ((end - start) * value) / Mathf.Sqrt(1f - value * value); + } + + public static float EaseOutCircD(float start, float end, float value) + { + value--; + end -= start; + return (-end * value) / Mathf.Sqrt(1f - value * value); + } + + public static float EaseInOutCircD(float start, float end, float value) + { + value /= .5f; + end -= start; + + if (value < 1) + { + return (end * value) / (2f * Mathf.Sqrt(1f - value * value)); + } + + value -= 2; + + return (-end * value) / (2f * Mathf.Sqrt(1f - value * value)); + } + + public static float EaseInBounceD(float start, float end, float value) + { + end -= start; + float d = 1f; + + return EaseOutBounceD(0, end, d - value); + } + + public static float EaseOutBounceD(float start, float end, float value) + { + value /= 1f; + end -= start; + + if (value < (1 / 2.75f)) + { + return 2f * end * 7.5625f * value; + } + else if (value < (2 / 2.75f)) + { + value -= (1.5f / 2.75f); + return 2f * end * 7.5625f * value; + } + else if (value < (2.5 / 2.75)) + { + value -= (2.25f / 2.75f); + return 2f * end * 7.5625f * value; + } + else + { + value -= (2.625f / 2.75f); + return 2f * end * 7.5625f * value; + } + } + + public static float EaseInOutBounceD(float start, float end, float value) + { + end -= start; + float d = 1f; + + if (value < d * 0.5f) + { + return EaseInBounceD(0, end, value * 2) * 0.5f; + } + else + { + return EaseOutBounceD(0, end, value * 2 - d) * 0.5f; + } + } + + public static float EaseInBackD(float start, float end, float value) + { + float s = 1.70158f; + + return 3f * (s + 1f) * (end - start) * value * value - 2f * s * (end - start) * value; + } + + public static float EaseOutBackD(float start, float end, float value) + { + float s = 1.70158f; + end -= start; + value = (value) - 1; + + return end * ((s + 1f) * value * value + 2f * value * ((s + 1f) * value + s)); + } + + public static float EaseInOutBackD(float start, float end, float value) + { + float s = 1.70158f; + end -= start; + value /= .5f; + + if ((value) < 1) + { + s *= (1.525f); + return 0.5f * end * (s + 1) * value * value + end * value * ((s + 1f) * value - s); + } + + value -= 2; + s *= (1.525f); + return 0.5f * end * ((s + 1) * value * value + 2f * value * ((s + 1f) * value + s)); + } + + public static float EaseInElasticD(float start, float end, float value) + { + return EaseOutElasticD(start, end, 1f - value); + } + + public static float EaseOutElasticD(float start, float end, float value) + { + end -= start; + + float d = 1f; + float p = d * .3f; + float s; + float a = 0; + + if (a == 0f || a < Mathf.Abs(end)) + { + a = end; + s = p * 0.25f; + } + else + { + s = p / (2 * Mathf.PI) * Mathf.Asin(end / a); + } + + return (a * Mathf.PI * d * Mathf.Pow(2f, 1f - 10f * value) * + Mathf.Cos((2f * Mathf.PI * (d * value - s)) / p)) / p - 5f * NATURAL_LOG_OF_2 * a * + Mathf.Pow(2f, 1f - 10f * value) * Mathf.Sin((2f * Mathf.PI * (d * value - s)) / p); + } + + public static float EaseInOutElasticD(float start, float end, float value) + { + end -= start; + + float d = 1f; + float p = d * .3f; + float s; + float a = 0; + + if (a == 0f || a < Mathf.Abs(end)) + { + a = end; + s = p / 4; + } + else + { + s = p / (2 * Mathf.PI) * Mathf.Asin(end / a); + } + + if (value < 1) + { + value -= 1; + + return -5f * NATURAL_LOG_OF_2 * a * Mathf.Pow(2f, 10f * value) * Mathf.Sin(2 * Mathf.PI * (d * value - 2f) / p) - + a * Mathf.PI * d * Mathf.Pow(2f, 10f * value) * Mathf.Cos(2 * Mathf.PI * (d * value - s) / p) / p; + } + + value -= 1; + + return a * Mathf.PI * d * Mathf.Cos(2f * Mathf.PI * (d * value - s) / p) / (p * Mathf.Pow(2f, 10f * value)) - + 5f * NATURAL_LOG_OF_2 * a * Mathf.Sin(2f * Mathf.PI * (d * value - s) / p) / (Mathf.Pow(2f, 10f * value)); + } + + public static float SpringD(float start, float end, float value) + { + value = Mathf.Clamp01(value); + end -= start; + + // Damn... Thanks http://www.derivative-calculator.net/ + // TODO: And it's a little bit wrong + return end * (6f * (1f - value) / 5f + 1f) * (-2.2f * Mathf.Pow(1f - value, 1.2f) * + Mathf.Sin(Mathf.PI * value * (2.5f * value * value * value + 0.2f)) + Mathf.Pow(1f - value, 2.2f) * + (Mathf.PI * (2.5f * value * value * value + 0.2f) + 7.5f * Mathf.PI * value * value * value) * + Mathf.Cos(Mathf.PI * value * (2.5f * value * value * value + 0.2f)) + 1f) - + 6f * end * (Mathf.Pow(1 - value, 2.2f) * Mathf.Sin(Mathf.PI * value * (2.5f * value * value * value + 0.2f)) + value + / 5f); + + } + + public delegate float Function(float s, float e, float v); + + /// + /// Returns the function associated to the easingFunction enum. This value returned should be cached as it allocates memory + /// to return. + /// + /// The enum associated with the easing function. + /// The easing function + public static Function GetEasingFunction(Ease easingFunction) + { + if (easingFunction == Ease.EaseInQuad) + { + return EaseInQuad; + } + + if (easingFunction == Ease.EaseOutQuad) + { + return EaseOutQuad; + } + + if (easingFunction == Ease.EaseInOutQuad) + { + return EaseInOutQuad; + } + + if (easingFunction == Ease.EaseInCubic) + { + return EaseInCubic; + } + + if (easingFunction == Ease.EaseOutCubic) + { + return EaseOutCubic; + } + + if (easingFunction == Ease.EaseInOutCubic) + { + return EaseInOutCubic; + } + + if (easingFunction == Ease.EaseInQuart) + { + return EaseInQuart; + } + + if (easingFunction == Ease.EaseOutQuart) + { + return EaseOutQuart; + } + + if (easingFunction == Ease.EaseInOutQuart) + { + return EaseInOutQuart; + } + + if (easingFunction == Ease.EaseInQuint) + { + return EaseInQuint; + } + + if (easingFunction == Ease.EaseOutQuint) + { + return EaseOutQuint; + } + + if (easingFunction == Ease.EaseInOutQuint) + { + return EaseInOutQuint; + } + + if (easingFunction == Ease.EaseInSine) + { + return EaseInSine; + } + + if (easingFunction == Ease.EaseOutSine) + { + return EaseOutSine; + } + + if (easingFunction == Ease.EaseInOutSine) + { + return EaseInOutSine; + } + + if (easingFunction == Ease.EaseInExpo) + { + return EaseInExpo; + } + + if (easingFunction == Ease.EaseOutExpo) + { + return EaseOutExpo; + } + + if (easingFunction == Ease.EaseInOutExpo) + { + return EaseInOutExpo; + } + + if (easingFunction == Ease.EaseInCirc) + { + return EaseInCirc; + } + + if (easingFunction == Ease.EaseOutCirc) + { + return EaseOutCirc; + } + + if (easingFunction == Ease.EaseInOutCirc) + { + return EaseInOutCirc; + } + + if (easingFunction == Ease.Linear) + { + return Linear; + } + + if (easingFunction == Ease.Spring) + { + return Spring; + } + + if (easingFunction == Ease.EaseInBounce) + { + return EaseInBounce; + } + + if (easingFunction == Ease.EaseOutBounce) + { + return EaseOutBounce; + } + + if (easingFunction == Ease.EaseInOutBounce) + { + return EaseInOutBounce; + } + + if (easingFunction == Ease.EaseInBack) + { + return EaseInBack; + } + + if (easingFunction == Ease.EaseOutBack) + { + return EaseOutBack; + } + + if (easingFunction == Ease.EaseInOutBack) + { + return EaseInOutBack; + } + + if (easingFunction == Ease.EaseInElastic) + { + return EaseInElastic; + } + + if (easingFunction == Ease.EaseOutElastic) + { + return EaseOutElastic; + } + + if (easingFunction == Ease.EaseInOutElastic) + { + return EaseInOutElastic; + } + + return null; + } + + /// + /// Gets the derivative function of the appropriate easing function. If you use an easing function for position then this + /// function can get you the speed at a given time (normalized). + /// + /// + /// The derivative function + public static Function GetEasingFunctionDerivative(Ease easingFunction) + { + if (easingFunction == Ease.EaseInQuad) + { + return EaseInQuadD; + } + + if (easingFunction == Ease.EaseOutQuad) + { + return EaseOutQuadD; + } + + if (easingFunction == Ease.EaseInOutQuad) + { + return EaseInOutQuadD; + } + + if (easingFunction == Ease.EaseInCubic) + { + return EaseInCubicD; + } + + if (easingFunction == Ease.EaseOutCubic) + { + return EaseOutCubicD; + } + + if (easingFunction == Ease.EaseInOutCubic) + { + return EaseInOutCubicD; + } + + if (easingFunction == Ease.EaseInQuart) + { + return EaseInQuartD; + } + + if (easingFunction == Ease.EaseOutQuart) + { + return EaseOutQuartD; + } + + if (easingFunction == Ease.EaseInOutQuart) + { + return EaseInOutQuartD; + } + + if (easingFunction == Ease.EaseInQuint) + { + return EaseInQuintD; + } + + if (easingFunction == Ease.EaseOutQuint) + { + return EaseOutQuintD; + } + + if (easingFunction == Ease.EaseInOutQuint) + { + return EaseInOutQuintD; + } + + if (easingFunction == Ease.EaseInSine) + { + return EaseInSineD; + } + + if (easingFunction == Ease.EaseOutSine) + { + return EaseOutSineD; + } + + if (easingFunction == Ease.EaseInOutSine) + { + return EaseInOutSineD; + } + + if (easingFunction == Ease.EaseInExpo) + { + return EaseInExpoD; + } + + if (easingFunction == Ease.EaseOutExpo) + { + return EaseOutExpoD; + } + + if (easingFunction == Ease.EaseInOutExpo) + { + return EaseInOutExpoD; + } + + if (easingFunction == Ease.EaseInCirc) + { + return EaseInCircD; + } + + if (easingFunction == Ease.EaseOutCirc) + { + return EaseOutCircD; + } + + if (easingFunction == Ease.EaseInOutCirc) + { + return EaseInOutCircD; + } + + if (easingFunction == Ease.Linear) + { + return LinearD; + } + + if (easingFunction == Ease.Spring) + { + return SpringD; + } + + if (easingFunction == Ease.EaseInBounce) + { + return EaseInBounceD; + } + + if (easingFunction == Ease.EaseOutBounce) + { + return EaseOutBounceD; + } + + if (easingFunction == Ease.EaseInOutBounce) + { + return EaseInOutBounceD; + } + + if (easingFunction == Ease.EaseInBack) + { + return EaseInBackD; + } + + if (easingFunction == Ease.EaseOutBack) + { + return EaseOutBackD; + } + + if (easingFunction == Ease.EaseInOutBack) + { + return EaseInOutBackD; + } + + if (easingFunction == Ease.EaseInElastic) + { + return EaseInElasticD; + } + + if (easingFunction == Ease.EaseOutElastic) + { + return EaseOutElasticD; + } + + if (easingFunction == Ease.EaseInOutElastic) + { + return EaseInOutElasticD; + } + + return null; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Util/EasingFunctions.cs.meta b/Assets/Scripts/Util/EasingFunctions.cs.meta new file mode 100644 index 00000000..e1fc90d0 --- /dev/null +++ b/Assets/Scripts/Util/EasingFunctions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 469bc36024b0e9746b909a02559d8b8a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: