diff --git a/.DS_Store b/.DS_Store index 681b92dc..31a71f4b 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/Assets/.DS_Store b/Assets/.DS_Store index 95fd5dbc..97b40c90 100644 Binary files a/Assets/.DS_Store and b/Assets/.DS_Store differ diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 430a9139..9342bab1 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -122,6 +122,107 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &101130663 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 101130664} + - component: {fileID: 101130667} + - component: {fileID: 101130666} + - component: {fileID: 101130665} + m_Layer: 5 + m_Name: Timeline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &101130664 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101130663} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1039576899} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &101130665 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101130663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 55 +--- !u!114 &101130666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101130663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &101130667 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 101130663} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 --- !u!1 &151991539 GameObject: m_ObjectHideFlags: 0 @@ -247,9 +348,6 @@ MonoBehaviour: - Name: elementGuid Entry: 2 Data: 00000000000000000000000000000000 - - Name: matchedBM - Entry: 6 - Data: - Name: submoduleList Entry: 7 Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase, @@ -263,15 +361,6 @@ MonoBehaviour: - Name: Entry: 8 Data: - - Name: timeDurationSubmodule - Entry: 6 - Data: - - Name: transformSubmodule - Entry: 6 - Data: - - Name: colorSubmodule - Entry: 6 - Data: elementName: tags: [] parentElement: {fileID: 0} @@ -902,6 +991,107 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 1 +--- !u!1 &552304311 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 552304312} + - component: {fileID: 552304315} + - component: {fileID: 552304314} + - component: {fileID: 552304313} + m_Layer: 5 + m_Name: Hierarchy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &552304312 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 552304311} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1039576899} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &552304313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 552304311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 55 +--- !u!114 &552304314 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 552304311} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &552304315 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 552304311} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 --- !u!1 &719302917 GameObject: m_ObjectHideFlags: 0 @@ -975,9 +1165,6 @@ MonoBehaviour: - Name: elementGuid Entry: 2 Data: 00000000000000000000000000000000 - - Name: matchedBM - Entry: 6 - Data: - Name: submoduleList Entry: 7 Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase, @@ -991,15 +1178,6 @@ MonoBehaviour: - Name: Entry: 8 Data: - - Name: timeDurationSubmodule - Entry: 6 - Data: - - Name: transformSubmodule - Entry: 6 - Data: - - Name: colorSubmodule - Entry: 6 - Data: elementName: tags: [] parentElement: {fileID: 0} @@ -1470,6 +1648,41 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 911784085} m_CullTransparentMesh: 1 +--- !u!1 &1039576898 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1039576899} + m_Layer: 0 + m_Name: EditorUIManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1039576899 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039576898} + serializedVersion: 2 + 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: 1647473499} + - {fileID: 101130664} + - {fileID: 552304312} + - {fileID: 1243045559} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1109987326 GameObject: m_ObjectHideFlags: 0 @@ -1784,35 +1997,26 @@ MonoBehaviour: - Name: Entry: 8 Data: - - Name: elementList_BM - Entry: 7 - Data: 1|System.Collections.Generic.List`1[[Ichni.RhythmGame.Beatmap.BaseElement_BM, - Assembly-CSharp]], mscorlib - - Name: - Entry: 12 - Data: 0 - - Name: - Entry: 13 + - Name: projectManager + Entry: 6 Data: - - Name: - Entry: 8 + - Name: editorSettings + Entry: 6 Data: - - Name: submoduleList_BM - Entry: 7 - Data: 2|System.Collections.Generic.List`1[[Ichni.RhythmGame.Beatmap.Submodule_BM, - Assembly-CSharp]], mscorlib - - Name: - Entry: 12 - Data: 0 - - Name: - Entry: 13 + - Name: projectInformation + Entry: 6 Data: - - Name: - Entry: 8 + - Name: songInformation + Entry: 6 Data: - currentJudgeType: 0 + - Name: beatmapContainer + Entry: 6 + Data: + - Name: commandScripts + Entry: 6 + Data: + currentJudgeType: 2 basePrefabs: {fileID: 11400000, guid: 266f4a39c512c46eea7e44336e4fc600, type: 2} - elementList: [] --- !u!4 &1197505579 Transform: m_ObjectHideFlags: 0 @@ -1868,13 +2072,10 @@ MonoBehaviour: - Name: effectSubmodule Entry: 7 Data: 2|Ichni.RhythmGame.EffectSubmodule, Assembly-CSharp - - Name: attachedElement + - Name: attachedGameElement Entry: 6 Data: - - Name: matchedBM - Entry: 6 - Data: - - Name: effectList + - Name: effectCollection Entry: 6 Data: - Name: @@ -1919,6 +2120,107 @@ MonoBehaviour: selectedThemeBundleList: [] loadedThemeBundleList: [] waitingBundleAmount: 0 +--- !u!1 &1243045558 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1243045559} + - component: {fileID: 1243045562} + - component: {fileID: 1243045561} + - component: {fileID: 1243045560} + m_Layer: 5 + m_Name: Inspector + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1243045559 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1243045558} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1039576899} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1243045560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1243045558} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 55 +--- !u!114 &1243045561 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1243045558} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1243045562 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1243045558} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 --- !u!1 &1381594468 GameObject: m_ObjectHideFlags: 0 @@ -2085,6 +2387,107 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1436513871} m_CullTransparentMesh: 1 +--- !u!1 &1647473498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1647473499} + - component: {fileID: 1647473502} + - component: {fileID: 1647473501} + - component: {fileID: 1647473500} + m_Layer: 5 + m_Name: Main + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1647473499 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647473498} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1039576899} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1647473500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647473498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 55 +--- !u!114 &1647473501 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647473498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!223 &1647473502 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1647473498} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 --- !u!1 &1888135909 GameObject: m_ObjectHideFlags: 0 @@ -2234,7 +2637,7 @@ MonoBehaviour: openPrefabs: 0 prefabs: [] idRef: - _Keys: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b999126f1e8b81df292d1acf2f06228873853005edfb00aa354575a31cc8ad1ac7b966308a3fe3ee5ae259f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe724520d14109f10d172186ee5fbb117f22411b26aaa31c824f2767cf5966e2b72a8263f2e0370d16764590b067c1b61cb6e75d9b619fa92551a320786221b3b03ec208e22f046f695e21830fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373bb7da5ac7fe2c5c192218ce0a49d6dd738a25db26e4fd6d370a7552956d137d6b665288ffceb792398ee2b794abe52873b82aa5499ca2e04b4891be89dac6ab0e659c5a08b1215a41b815970146d88b119ec54e97b8c60707cd2b47c307f6a055723ad0f074e03e69319b6e78f521fa20e22f14eb87ebaa2c5d9ec5792568c53e74417380a87c864288e4671d588e1210db981f281d4a325d1a036b29e53abc3829cf12c86a843666a9d2726c53c784328db49f8d499d214074d166a5105c5d3da29f4627a1da7a5e317a2d1042614f5281c64a6625b57e38f05354991e91554c74350ef20eacd34ec6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161e8f9dd682d3dee657e0ec3e9f39a3e76118743006e0ffa3a958fe6b6ca98245845d258f66aa26d222a2ff31dc5e16529d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656508d984144c6391548fc5f9307b1937f462b1e94944b8a5d2d296fda38614b2c47e5baaa4a0ec664069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f660704e68bd01df34b4f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035b399727f338ebd32b154b50236b0376b4d721d6667e4fc106c1a9fcd2a75ee765300a244e46bac30d36f74ee5f1e5e1ecf22e3b47049ce6796831219efef073b663eaf360df286471f4d94f76f0eb074884263b2a75d1863ce0aae615892403e884faa62326ad43eaa2a9522b5d7f75bcc785fcdad451c3b561268034425ee4e712d804046ec580d17a1097cc8f6ad5afff6d32e0ef214326ce60b1f02d1fa31e71c6c1ca8c75d472e9349f4c45f8c4dc0c2013af81c5d6342b3d460e1390a18 + _Keys: 526a8851fe85233e7cc810cd2b8a733faa68e71a62b999126f1e8b81df292d1acf2f06228873853005edfb00aa354575a31cc8ad1ac7b966308a3fe3ee5ae259f52afefc8351b636e2b71574be99675b6400dfc3607f0069e96d5112b3681f5fcf550a7f3749f10c2c006f2e23d1db370e64801184e106752a681216ffa3837998b5a5688fe724520d14109f10d172186ee5fbb117f22411b26aaa31c824f2767cf5966e2b72a8263f2e0370d16764590b067c1b61cb6e75d9b619fa92551a320786221b3b03ec208e22f046f695e21830fcd93d5728ea479cf46b8ba7516b16ed2e96b5bbb6e20e0c6272c125d7806f67cd366983232521642549cf9088373bb7da5ac7fe2c5c192218ce0a49d6dd738a25db26e4fd6d370a7552956d137d6b665288ffceb792398ee2b794abe52873b82aa5499ca2e04b4891be89dac6ab0e659c5a08b1215a41b815970146d88b119ec54e97b8c60707cd2b47c307f6a055723ad0f074e03e69319b6e78f521fa20e22f14eb87ebaa2c5d9ec5792568c53e74417380a87c864288e4671d588e1210db981f281d4a325d1a036b29e53abc3829cf12c86a843666a9d2726c53c784328db49f8d499d214074d166a5105c5d3da29f4627a1da7a5e317a2d1042614f5281c64a6625b57e38f05354991e91554cc6bf413c35ce7d12821326d7a7c36313210e18f42f147d60db1f64f3ada3bb2d6666d31a094491222bbde8f495825a4e2f05ece33b3881253ca117543370bf2531ac8ebf10b7f565a03ac9712b88ca58c516c5a7b6d8f161e8f9dd682d3dee657e0ec3e9f39a3e76118743006e0ffa3a958fe6b6ca98245845d258f66aa26d222a2ff31dc5e16529d84e972e95f1f208f318fcbd24a42f1a1594d13a0cca1e4d0b9a28c0e4238a4cd5432183fe0a3d37c5600352a5affe32a0f1cca64d60c95d6de43a2f1ab3ec2f8dafe7e182ac1c0b579975acc6cca75b9cf61ff356e4ff757ac4f0e2446c5178b3cc3b0938e3500b2c3eb04c15e369388d95cb10d3df8656508d984144c6391548fc5f9307b1937f462b1e94944b8a5d2d296fda38614b2c47e5baaa4a0ec664069a951142fc403ed6b4a90102e5146519f66f6d35134e18b132d9ec6c3ec954f282992fe09c9f2a9752fc7c47b5d52b06e06eab61a6d10e4d7cc274d62caa67eb540f7f4be5844b6a66281ce82d2f660704e68bd01df34b4f7483a3a0ebff69576b98633aaa8921a5ddbe04814bd97aac297cdb1235373261c4cec06828ec556592c57c95cb2c5c853ad052230733029b09f8776f245772a3ca0276dcc8b833ca146a1411560f76a926a9289a1bf169092fa58ddf9c3a7517c82635364a7f4df403890f9d1ef144fb812196cd7f0c77286780f491baec2cdaf4fd482fda400ba6f61b9da4000716c29e6ca1845b5768bcaf0ecfc98bbb39185d35a921a8142041153dc39aaa1c286f97b630278db035b399727f338ebd32b154b50236b0376b4d721d6667e4fc106c1a9fcd2a75ee765300a244e46bac30d36f74ee5f1e5e1ecf22e3b47049ce6796831219efef073b663eaf360df286471f4d94f76f0eb074884263b2a75d1863ce0aae615892403e884faa62326ad43eaa2a9522b5d7f75bcc785fcdad451c3b561268034425ee4e712d804046ec580d17a1097cc8f6ad5afff6d32e0ef214326ce60b1f02d1fa31e71c6c1ca8c75d472e9349f4c45f8c4dc0c2013af81c5d6342b3d460e1390a18b2032b19179f0c5109edb220eddd4a554c13b12cb5d56721429066885700c558f421713be1a14442bb774cca3425cb341fcaf3fbd03ccf786c4d5ba70595a869cf6fe72c22325567a5649773f2357847af0759d10313b725cfe3c24772aa470214482b6154a356625d3cfd5f01ca892d756a72e68478521c260cfa05f49dda051e95883b60da9c51a244d0c0efe9d8666defd20837617d7266b7c4b857af913f62f77c9653c48e6531de7737b6edf43c _Values: - {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} @@ -2296,7 +2699,6 @@ MonoBehaviour: - {fileID: 410087040} - {fileID: 410087042} - {fileID: 2800000, guid: 188dfe7e559f13248ba2c41eb5a59328, type: 3} - - {fileID: 2800000, guid: f20112bdeec2e8d4d9f80e8390e37263, type: 3} - {fileID: 11500000, guid: 0b2db86121404754db890f4c8dfe81b2, type: 3} - {fileID: 11500000, guid: d7fd9488000d3734a9e00ee676215985, type: 3} - {fileID: 11500000, guid: 94df1ffae0c2c7d4ba695b68267eea10, type: 3} @@ -2392,6 +2794,28 @@ MonoBehaviour: - {fileID: 151991542} - {fileID: 151991541} - {fileID: 151991540} + - {fileID: 101130663} + - {fileID: 552304315} + - {fileID: 101130664} + - {fileID: 101130667} + - {fileID: 101130666} + - {fileID: 101130665} + - {fileID: 1039576898} + - {fileID: 1039576899} + - {fileID: 552304314} + - {fileID: 552304312} + - {fileID: 552304313} + - {fileID: 552304311} + - {fileID: 1243045560} + - {fileID: 1243045562} + - {fileID: 1243045561} + - {fileID: 1243045558} + - {fileID: 1243045559} + - {fileID: 1647473502} + - {fileID: 1647473499} + - {fileID: 1647473500} + - {fileID: 1647473501} + - {fileID: 1647473498} --- !u!4 &1926461710 Transform: m_ObjectHideFlags: 0 @@ -2529,3 +2953,4 @@ SceneRoots: - {fileID: 759707325} - {fileID: 151991542} - {fileID: 1926461710} + - {fileID: 1039576899} diff --git a/Assets/Scripts/EditorUI.meta b/Assets/Scripts/EditorUI.meta new file mode 100644 index 00000000..6405b746 --- /dev/null +++ b/Assets/Scripts/EditorUI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2bbff197b56ed47f08fd4a87330cd3fa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EditorUI/DynamicUIContainer.cs b/Assets/Scripts/EditorUI/DynamicUIContainer.cs new file mode 100644 index 00000000..66012c01 --- /dev/null +++ b/Assets/Scripts/EditorUI/DynamicUIContainer.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DynamicUIContainer : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/EditorUI/DynamicUIContainer.cs.meta b/Assets/Scripts/EditorUI/DynamicUIContainer.cs.meta new file mode 100644 index 00000000..b55398d9 --- /dev/null +++ b/Assets/Scripts/EditorUI/DynamicUIContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 336519de04d43424fa30796507182569 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EditorUI/DynamicUIElement.cs b/Assets/Scripts/EditorUI/DynamicUIElement.cs new file mode 100644 index 00000000..5c9639b0 --- /dev/null +++ b/Assets/Scripts/EditorUI/DynamicUIElement.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class DynamicUIElement : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/EditorUI/DynamicUIElement.cs.meta b/Assets/Scripts/EditorUI/DynamicUIElement.cs.meta new file mode 100644 index 00000000..461af21f --- /dev/null +++ b/Assets/Scripts/EditorUI/DynamicUIElement.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff19cfc4963444c2e8aa109adef5c68d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EditorUI/MovableWindow.cs b/Assets/Scripts/EditorUI/MovableWindow.cs new file mode 100644 index 00000000..9cb0afad --- /dev/null +++ b/Assets/Scripts/EditorUI/MovableWindow.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MovableWindow : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/EditorUI/MovableWindow.cs.meta b/Assets/Scripts/EditorUI/MovableWindow.cs.meta new file mode 100644 index 00000000..8f5dc088 --- /dev/null +++ b/Assets/Scripts/EditorUI/MovableWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6d4712eca3d5244fb85c7d6a73144803 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/EditorUI/StaticWindow.cs b/Assets/Scripts/EditorUI/StaticWindow.cs new file mode 100644 index 00000000..b2d06e58 --- /dev/null +++ b/Assets/Scripts/EditorUI/StaticWindow.cs @@ -0,0 +1,21 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.Editor +{ + public class StaticWindow : MonoBehaviour + { + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } + } +} diff --git a/Assets/Scripts/EditorUI/StaticWindow.cs.meta b/Assets/Scripts/EditorUI/StaticWindow.cs.meta new file mode 100644 index 00000000..24680e9f --- /dev/null +++ b/Assets/Scripts/EditorUI/StaticWindow.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77b82cf36b77c477683072aacc2b864a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs b/Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs new file mode 100644 index 00000000..d89ade6c --- /dev/null +++ b/Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class BackgroundController : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs.meta b/Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs.meta new file mode 100644 index 00000000..93a6d449 --- /dev/null +++ b/Assets/Scripts/GameElements/EnvironmentObjects/BackgroundController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0bfee67d496ae4f609383bce72ee88fe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects.meta b/Assets/Scripts/GameElements/Notes/NoteEffects.meta new file mode 100644 index 00000000..abfbd8a0 --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 084c7ad2bd4754df29e585542aaa5b37 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs new file mode 100644 index 00000000..0d119c4d --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteBadEffect : NoteEffectBase + { + public override EffectState CheckEffectState() + { + float songTime = EditorManager.instance.songModule.songTime; + + if (songTime < note.exactJudgeTime ) + { + return EffectState.Before; + } + + if (songTime >= note.exactJudgeTime && + songTime <= note.exactJudgeTime + effectTime) + { + return EffectState.Middle; + } + + if (songTime > note.exactJudgeTime + effectTime) + { + return EffectState.After; + } + + return EffectState.Error; + } + } + + namespace Beatmap + { + public abstract class NoteBadEffect_BM : NoteEffectBase_BM + { + public NoteBadEffect_BM() + { + + } + + public NoteBadEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs.meta b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs.meta new file mode 100644 index 00000000..2073b193 --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteBadEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8eed65786e0bd442a8c8ab0fa0408cd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/NoteEffectBase.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteEffectBase.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffectBase.cs rename to Assets/Scripts/GameElements/Notes/NoteEffects/NoteEffectBase.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteEffectBase.cs.meta b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteEffectBase.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteEffectBase.cs.meta rename to Assets/Scripts/GameElements/Notes/NoteEffects/NoteEffectBase.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs new file mode 100644 index 00000000..66e60529 --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteGeneralJudgeEffect : NoteEffectBase + { + public override EffectState CheckEffectState() + { + float songTime = EditorManager.instance.songModule.songTime; + + if (songTime < note.exactJudgeTime ) + { + return EffectState.Before; + } + + if (songTime >= note.exactJudgeTime && + songTime <= note.exactJudgeTime + effectTime) + { + return EffectState.Middle; + } + + if (songTime > note.exactJudgeTime + effectTime) + { + return EffectState.After; + } + + return EffectState.Error; + } + } + + namespace Beatmap + { + public abstract class NoteGeneralJudgeEffect_BM : NoteEffectBase_BM + { + public NoteGeneralJudgeEffect_BM() + { + + } + + public NoteGeneralJudgeEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs.meta b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs.meta new file mode 100644 index 00000000..cf3b27ca --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGeneralJudgeEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 279cfa5b13b844c1aa3b5493d90f4237 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs new file mode 100644 index 00000000..48abded0 --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Ichni.RhythmGame.ThemeBundles.Basic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteGenerateEffect : NoteEffectBase + { + public float generateTime; + + public override EffectState CheckEffectState() + { + float songTime = EditorManager.instance.songModule.songTime; + + if (songTime < note.exactJudgeTime - generateTime) + { + return EffectState.Before; + } + + if (songTime >= note.exactJudgeTime - generateTime && + songTime <= note.exactJudgeTime - generateTime + effectTime) + { + return EffectState.Middle; + } + + if (songTime > note.exactJudgeTime - generateTime + effectTime) + { + return EffectState.After; + } + + return EffectState.Error; + } + } + + namespace Beatmap + { + public abstract class NoteGenerateEffect_BM : NoteEffectBase_BM + { + public float generateTime; + + public NoteGenerateEffect_BM() + { + + } + + public NoteGenerateEffect_BM(float effectTime, float generateTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + this.generateTime = generateTime; + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs.meta b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs.meta new file mode 100644 index 00000000..08ab51ad --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGenerateEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6a1263bc63de94e75b9238395922c7dc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs new file mode 100644 index 00000000..1d2ba366 --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteGoodEffect : NoteEffectBase + { + public override EffectState CheckEffectState() + { + float songTime = EditorManager.instance.songModule.songTime; + + if (songTime < note.exactJudgeTime ) + { + return EffectState.Before; + } + + if (songTime >= note.exactJudgeTime && + songTime <= note.exactJudgeTime + effectTime) + { + return EffectState.Middle; + } + + if (songTime > note.exactJudgeTime + effectTime) + { + return EffectState.After; + } + + return EffectState.Error; + } + } + + namespace Beatmap + { + public abstract class NoteGoodEffect_BM : NoteEffectBase_BM + { + public NoteGoodEffect_BM() + { + + } + + public NoteGoodEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs.meta b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs.meta new file mode 100644 index 00000000..4cb706ff --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteGoodEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f5341b8c1433a4e77be4ba00d86504ce +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs new file mode 100644 index 00000000..82afbc4d --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NoteMissEffect : NoteEffectBase + { + public override EffectState CheckEffectState() + { + float songTime = EditorManager.instance.songModule.songTime; + + if (songTime < note.exactJudgeTime ) + { + return EffectState.Before; + } + + if (songTime >= note.exactJudgeTime && + songTime <= note.exactJudgeTime + effectTime) + { + return EffectState.Middle; + } + + if (songTime > note.exactJudgeTime + effectTime) + { + return EffectState.After; + } + + return EffectState.Error; + } + } + + namespace Beatmap + { + public abstract class NoteMissEffect_BM : NoteEffectBase_BM + { + public NoteMissEffect_BM() + { + + } + + public NoteMissEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } + +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs.meta b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs.meta new file mode 100644 index 00000000..4d738dcf --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NoteMissEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 923c4229a45ad464e92ab499d1375faa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs b/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs new file mode 100644 index 00000000..d2ece709 --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs @@ -0,0 +1,51 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using Ichni.RhythmGame.ThemeBundles.Basic; +using UnityEngine; + +namespace Ichni.RhythmGame +{ + public abstract class NotePerfectEffect : NoteEffectBase + { + public override EffectState CheckEffectState() + { + float songTime = EditorManager.instance.songModule.songTime; + + if (songTime < note.exactJudgeTime ) + { + return EffectState.Before; + } + + if (songTime >= note.exactJudgeTime && + songTime <= note.exactJudgeTime + effectTime) + { + return EffectState.Middle; + } + + if (songTime > note.exactJudgeTime + effectTime) + { + return EffectState.After; + } + + return EffectState.Error; + } + + } + + namespace Beatmap + { + public abstract class NotePerfectEffect_BM : NoteEffectBase_BM + { + public NotePerfectEffect_BM() + { + + } + + public NotePerfectEffect_BM(float effectTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + { + + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs.meta b/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs.meta new file mode 100644 index 00000000..8a620f96 --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteEffects/NotePerfectEffect.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 39dd448aba8824f77a2ca056ce206f0b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/NoteObjects.meta b/Assets/Scripts/GameElements/Notes/NoteObjects.meta new file mode 100644 index 00000000..37f73f5f --- /dev/null +++ b/Assets/Scripts/GameElements/Notes/NoteObjects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fe3876299b0c64d7b91110f05e83c65d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/GameElements/Notes/Flick.cs b/Assets/Scripts/GameElements/Notes/NoteObjects/Flick.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/Flick.cs rename to Assets/Scripts/GameElements/Notes/NoteObjects/Flick.cs diff --git a/Assets/Scripts/GameElements/Notes/Flick.cs.meta b/Assets/Scripts/GameElements/Notes/NoteObjects/Flick.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/Flick.cs.meta rename to Assets/Scripts/GameElements/Notes/NoteObjects/Flick.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/Hold.cs b/Assets/Scripts/GameElements/Notes/NoteObjects/Hold.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/Hold.cs rename to Assets/Scripts/GameElements/Notes/NoteObjects/Hold.cs diff --git a/Assets/Scripts/GameElements/Notes/Hold.cs.meta b/Assets/Scripts/GameElements/Notes/NoteObjects/Hold.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/Hold.cs.meta rename to Assets/Scripts/GameElements/Notes/NoteObjects/Hold.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/NoteBase.cs b/Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteBase.cs rename to Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs diff --git a/Assets/Scripts/GameElements/Notes/NoteBase.cs.meta b/Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/NoteBase.cs.meta rename to Assets/Scripts/GameElements/Notes/NoteObjects/NoteBase.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/Stay.cs b/Assets/Scripts/GameElements/Notes/NoteObjects/Stay.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/Stay.cs rename to Assets/Scripts/GameElements/Notes/NoteObjects/Stay.cs diff --git a/Assets/Scripts/GameElements/Notes/Stay.cs.meta b/Assets/Scripts/GameElements/Notes/NoteObjects/Stay.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/Stay.cs.meta rename to Assets/Scripts/GameElements/Notes/NoteObjects/Stay.cs.meta diff --git a/Assets/Scripts/GameElements/Notes/Tap.cs b/Assets/Scripts/GameElements/Notes/NoteObjects/Tap.cs similarity index 100% rename from Assets/Scripts/GameElements/Notes/Tap.cs rename to Assets/Scripts/GameElements/Notes/NoteObjects/Tap.cs diff --git a/Assets/Scripts/GameElements/Notes/Tap.cs.meta b/Assets/Scripts/GameElements/Notes/NoteObjects/Tap.cs.meta similarity index 100% rename from Assets/Scripts/GameElements/Notes/Tap.cs.meta rename to Assets/Scripts/GameElements/Notes/NoteObjects/Tap.cs.meta diff --git a/Assets/Scripts/GameElements/Track/Track.cs b/Assets/Scripts/GameElements/Track/Track.cs index 5caed25f..0e5ee069 100644 --- a/Assets/Scripts/GameElements/Track/Track.cs +++ b/Assets/Scripts/GameElements/Track/Track.cs @@ -39,8 +39,6 @@ namespace Ichni.RhythmGame private void Update() { - Debug.Log(timeDurationSubmodule == null); - if (timeDurationSubmodule.CheckTimeInDuration(EditorManager.instance.songModule.songTime)) { (trackTimeSubmodule as TrackTimeSubmoduleMovable)?.UpdateTrackPart(); diff --git a/Assets/Shaders.meta b/Assets/Shaders.meta index eb5ad48a..183e644a 100644 --- a/Assets/Shaders.meta +++ b/Assets/Shaders.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 41d169eab4b5f42bd82f68363fe237b1 +guid: 2087828f4f945413582b045fcf36c58b folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Shaders/VFX.meta b/Assets/Shaders/VFX.meta new file mode 100644 index 00000000..7dd9eecd --- /dev/null +++ b/Assets/Shaders/VFX.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44a6be033c2af4cecaefb9b3dd0cf3a4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/VFX/Pandavfx_Function.hlsl b/Assets/Shaders/VFX/Pandavfx_Function.hlsl new file mode 100755 index 00000000..4b72c02c --- /dev/null +++ b/Assets/Shaders/VFX/Pandavfx_Function.hlsl @@ -0,0 +1,363 @@ +#ifndef PANDAVFX_FUNCTION +#define PANDAVFX_FUNCTION + + +struct appdata_full { + float4 vertex : POSITION; + float3 normal : NORMAL; + float4 texcoord : TEXCOORD0; + float4 texcoord1 : TEXCOORD1; + float4 texcoord2 : TEXCOORD2; + half4 color : COLOR; + uint instanceID : SV_InstanceID; +}; + +struct Input +{ + float4 uv_texcoord : TEXCOORD0; + float3 worldPos; + float4 positionCS; + float4 uv2_texcoord2; + float4 uv3_texcoord3; + float4 vertexColor : COLOR; + float3 worldNormal; + float4 screenPos; + half ASEVFace : VFACE; +}; +struct Varyings +{ + //V2F_SHADOW_CASTER; + float4 pos : SV_POSITION; + float4 customPack1 : TEXCOORD0; + float4 customPack2 : TEXCOORD1; + float4 customPack3 : TEXCOORD2; + float4 screenPos : TEXCOORD3; + float3 normal : TEXCOORD4; + float3 posWS : TEXCOORD5; + half4 color : COLOR0; + + UNITY_VERTEX_INPUT_INSTANCE_ID + UNITY_VERTEX_OUTPUT_STEREO +}; + +CBUFFER_START(UnityPerMaterial) + uniform float _Scr; + uniform float _Comparison; + uniform float _Fail; + uniform float _Ztest; + uniform float _Dst; + uniform float _Pass; + uniform float _Zwrite; + uniform float _Reference; + uniform float _Cullmode; + uniform float _AlphaAdd; + uniform float4 _BackFaceColor; + + TEXTURE2D(_VTOTex); + SAMPLER(sampler_VTOTex); + uniform float _VTOC; + uniform float _VTOTex_Uspeed; + uniform float _VTOTex_Vspeed; + uniform float4 _VTOTex_ST; + uniform float _VTOCV; + uniform float _VTOFactorCustom; + uniform float _VTOFactor; + uniform float _VTOFactorC2; + uniform half4 _VTOFactorC2Vec4; + uniform float _VTOFactorC1; + uniform float _VTORemap; + uniform float _VTOAR; + uniform half _VTOR; + + TEXTURE2D(_MaskTex); + SAMPLER(sampler_MaskTex); + uniform float _MaskC; + uniform float _Mask_Uspeed; + uniform float _Mask_Vspeed; + uniform float4 _MaskTex_ST; + uniform float _DistortMask; + uniform float _IfFlowmap; + uniform float _Mask_scale; + uniform float _MaskAlphaRA; + uniform float _CustomdataMaskUV; + uniform half4 _MaskOffsetUC2Vec4; + uniform float _MaskOffsetUC1; + uniform half4 _MaskOffsetVC2Vec4; + uniform float _MaskOffsetVC1; + uniform float _MaskCV; + uniform float _IfMaskPlusTex; + uniform float _MaskPlusAR; + uniform half _Mask_rotat; + uniform half _MaskPlusR; + + TEXTURE2D(_DistortTex); + SAMPLER(sampler_DistortTex); + uniform float _DistortTex_Uspeed; + uniform float _DistortTex_Vspeed; + uniform float4 _DistortTex_ST; + uniform float _DistortTexAR; + uniform float _CustomDistort; + uniform float _DistortFactor; + uniform half4 _DistortFactorC2Vec4; + uniform float _DistortFactorC1; + uniform float _DistortRemap; + uniform float _IfBeingDistorted; + + //uniform sampler2D _DistortMaskTex; + TEXTURE2D(_DistortMaskTex); + SAMPLER(sampler_DistortMaskTex); + uniform float _DistortMaskTexC; + uniform float4 _DistortMaskTex_ST; + uniform float _DistortMaskTexCV; + uniform float _DistortMaskTexAR; + uniform half _DistortMaskTexR; + + TEXTURE2D(_MaskPlusTex); + SAMPLER(sampler_MaskPlusTex); + uniform float _MaskPlusC; + uniform float _MaskPlusUspeed; + uniform float _MaskPlusVspeed; + uniform float4 _MaskPlusTex_ST; + uniform float _MaskPlusCV; + uniform float _IfMaskColor; + + TEXTURE2D(_MainTex); + uniform float _MainTex_ar; + SAMPLER(sampler_MainTex); + uniform float _MainUV2; + uniform float _MaintexC; + uniform float _MainTex_Uspeed; + uniform float _MainTex_Vspeed; + uniform float _CustomdataMainTexUV; + uniform half4 _MainOffsetUC2Vec4; + uniform float _MainOffsetUC1; + uniform half4 _MainOffsetVC2Vec4; + uniform float _MainOffsetVC1; + uniform float4 _MainTex_ST; + uniform float _MaintexCV; + uniform float4 _MainColor; + uniform float _MainAlpha; + uniform half _MainTex_rotat; + + TEXTURE2D(_CameraOpaqueTexture); + SAMPLER(sampler_CameraOpaqueTexture); + uniform float4 _CameraOpaqueTexture_ST; + + TEXTURE2D(_CameraOpaqueAndTransparentTexture); + SAMPLER(sampler_CameraOpaqueAndTransparentTexture); + uniform float4 _CameraOpaqueAndTransparentTexture_ST; + + TEXTURE2D(_AddTex); + SAMPLER(sampler_AddTex); + uniform float _AddTexC; + uniform float _AddTexUspeed; + uniform float _AddTexVspeed; + uniform float4 _AddTex_ST; + uniform float _CAddTexUV; + uniform float _CAddTexUVT; + uniform float _IfAddTexAlpha; + uniform half4 _AddTexBlendModeVec4; + uniform float _AddTexAR; + uniform float _AddTexCV; + uniform float _AddTexBlend; + uniform float _IfAddTex; + uniform float _IfAddTexColor; + uniform float4 _AddTexColor; + uniform half _AddRotate; + + TEXTURE2D(_DissloveTex); + SAMPLER(sampler_DissloveTex); + uniform float _DissolveC; + uniform float _DisTex_Uspeed; + uniform float _DisTex_Vspeed; + uniform float4 _DissloveTex_ST; + uniform float _sot_sting_A; + uniform float _DIssloveSoft; + uniform float _CustomdataDis; + uniform float _IfDissolveColor; + uniform float _DIssloveFactor; + uniform half4 _DissolveFactorC2Vec4; + uniform float _DissolveFactorC1; + uniform float _DissolveAR; + uniform float _IfDissolveOffsetC; + uniform half4 _DissolveOffsetUC2Vec4; + uniform float _DissolveOffsetUC1; + uniform half4 _DissolveOffsetVC2Vec4; + uniform float _DissolveOffsetVC1; + uniform float _DissolveCV; + uniform float _DissolveTexExp; + uniform float _DIssloveWide; + uniform float _CustomdataDisT; + TEXTURE2D(_DisslovePlusTex); + SAMPLER(sampler_DisslovePlusTex); + uniform float4 _DisslovePlusTex_ST; + uniform float _IfDissolvePlus; + uniform float _DissolvePlusAR; + uniform float _DissolvePlusC; + uniform float _DissolvePlusCV; + uniform half _DissolveTexDivide; + uniform half _DIssolve_rotat; + uniform half _DissolvePlusR; + + TEXTURE2D(_CameraDepthTexture); + SAMPLER(sampler_CameraDepthTexture); + uniform float4 _CameraDepthTexture_TexelSize; + uniform float _DepthfadeFactor; + uniform float _softFacotr; + uniform float _Depthfadeon; + + uniform float _FNLfanxiangkaiguan; + uniform float _IfFNLAlpha; + uniform float3 _Dir; + uniform float _fnl_power; + uniform float _fnl_sacle; + uniform float4 _fnl_color; + + uniform float4 _DIssloveColor; + + uniform float _CenterU; + uniform float _CenterV; + uniform float _UVPolar; + + //粒子系统材质球适配Linerenderer时使用 + uniform float _TextureUScale; + uniform float _TextureUValue; + uniform float _TextureVScale; + uniform float _TextureVValue; + + uniform float _CustomDataToZero; + + //uniform float _UVTest; +CBUFFER_END + +#define RADIAN 0.0174533 +float2 ConvertUV(float2 uv, float4 textureST, + half useCustom, half uDataIndex, half4 uDataChannel, half vDataIndex, half4 vDataChannel,half4 data1, half4 data2, + half uSpeed, half vSpeed, + half uClamp, half vClamp, + half rotate) +{ + float2 convertedUV = uv * textureST.xy + textureST.zw; + half4 uData = lerp(data1, data2, uDataIndex); + half u = dot(uDataChannel, uData); + half4 vData = lerp(data1, data2, vDataIndex); + half v = dot(vDataChannel, vData); + half2 offset = lerp(half2(0, 0), half2(u, v), useCustom); + + convertedUV += _Time.y * half2(uSpeed, vSpeed) + offset; + + half cosValue = cos(rotate * RADIAN); + half sinValue = sin(rotate * RADIAN); + convertedUV = mul(convertedUV- half2(0.5, 0.5) , half2x2(cosValue, -sinValue, sinValue, cosValue)) + half2(0.5, 0.5); + + float2 clampUV = clamp(convertedUV, 0, 1); + + convertedUV.x = lerp(convertedUV.x, clampUV.x, uClamp); + convertedUV.y = lerp(convertedUV.y, clampUV.y, vClamp); + + return convertedUV; +} + + +/** + * UV扭曲贴图部分 + * \param uv + * \param distortUV + */ +float2 GetDistortTextureData(float2 uv, Texture2D tex, SamplerState samplerState, half distortFactor, half useRChannel = 0, half remap = 0, half isFlow = 0) +{ + float2 distortUV = float2(0,0); + float4 distortTex =float4(0,0,0,0); + float distort = 0; + + //采样扭曲贴图 + distortTex = SAMPLE_TEXTURE2D(tex, samplerState, uv); + //是否使用a通道 + distort = lerp(distortTex.a, distortTex.r, useRChannel); + //是否remap + distort = lerp(distort,distort*0.5-1,remap); + float4 distortTexRemap = lerp(distortTex,distortTex*0.5-1,remap); + //扭曲强度 区分是customdata 还是输入参数 + float distortFract = distortFactor; + + //FlowMap化 + float3 disortFlowMap = float3(distortFract*(float2(distortTexRemap.r,distortTexRemap.g)-uv.xy),0); + distortUV = (distort * distortFract).xx; + + distortUV = lerp(distortUV, disortFlowMap.xy, isFlow); + + return distortUV; +} + +/** + * MaskTexture + */ +half4 GetMaskTextureData(float2 uv, Texture2D tex, SamplerState samplerState, float3 scrColor, float scrAlpha, half useRChannel = 0, half isMaskColor = 0, half maskScale = 1) +{ + //采样遮罩贴图 + half4 maskTexColor = SAMPLE_TEXTURE2D(tex, samplerState,uv); + //maskTexColor *= _AddTexColor.rgba; + + //遮罩贴图是否使用R通道作为遮罩源头 + half mask = lerp(maskTexColor.a, maskTexColor.r, useRChannel); + mask *= maskScale; + + scrColor = lerp(scrColor, scrColor * maskTexColor.rgb, isMaskColor); + scrAlpha = scrAlpha * mask; + + return half4(scrColor, scrAlpha); +} + +half4 AddTexture(float2 uv, Texture2D tex, SamplerState samplerState, + half3 srcColor, half srcAlpha, + half4 addTexColor, half useRchannel, half blendFactor, + half4 blendMode, half blendColor, half blendAlpha) +{ + half4 addColor = SAMPLE_TEXTURE2D(tex, samplerState, uv); + addColor *= addTexColor.rgba; + + float3 reFineResultAddTex = addColor.rgb; + + float addColorAlpha = lerp(addColor.a, addColor.r, useRchannel); + + float4 blendColAddTex = lerp(float4(srcColor, srcAlpha), float4(reFineResultAddTex.rgb, addColorAlpha), blendFactor); + float4 multiplyColAddTex = float4(srcColor, srcAlpha) * float4(reFineResultAddTex.rgb, addColorAlpha); + float4 addColAddTex = float4(srcColor, srcAlpha) + float4(reFineResultAddTex.rgb, addColorAlpha); + + float4x4 blendMatrix; + blendMatrix._11_21_31_41 = blendColAddTex; + blendMatrix._12_22_32_42 = addColAddTex; + blendMatrix._13_23_33_43 = multiplyColAddTex; + blendMatrix._14_24_34_44 = float4(srcColor, srcAlpha); + + float4 finalColorTemp = float4(0,0,0,0); + //根据addTex的blendMode决定使用哪个数据 + finalColorTemp = mul(blendMatrix, blendMode); + + srcColor = lerp(srcColor, finalColorTemp.rgb, blendColor); + srcAlpha = lerp(srcAlpha, finalColorTemp.a, blendAlpha); + + return half4(srcColor, srcAlpha); +} + +half3 GetLitColor(half3 normal, half3 color, float3 worldPos) +{ + // 主光,用半lambert计算 + half3 ambient = UNITY_LIGHTMODEL_AMBIENT.xyz * color; + half3 worldNomal = normal; + half3 worldLightDir = normalize(_MainLightPosition.xyz); + half3 lambert = 0.5 * dot(worldNomal, worldLightDir) + 0.5; + half3 diffuse = lambert * color * _MainLightColor.xyz + ambient; + + // 增加其他光源的影响 + uint lightsCount = GetAdditionalLightsCount(); + for (uint lightIndex = 0u; lightIndex < lightsCount; ++lightIndex) + { + Light light = GetAdditionalLight(lightIndex, worldPos); + diffuse += light.color * light.distanceAttenuation * light.shadowAttenuation; + } + + return diffuse; +} + +#endif diff --git a/Assets/Shaders/VFX/Pandavfx_Function.hlsl.meta b/Assets/Shaders/VFX/Pandavfx_Function.hlsl.meta new file mode 100755 index 00000000..6c4f5dd1 --- /dev/null +++ b/Assets/Shaders/VFX/Pandavfx_Function.hlsl.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 15557e8a2f58f5f498b2b3a6c5fddf96 +ShaderIncludeImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/VFX/Pandavfx_v2.3_URP.shader b/Assets/Shaders/VFX/Pandavfx_v2.3_URP.shader new file mode 100755 index 00000000..92e5dc8a --- /dev/null +++ b/Assets/Shaders/VFX/Pandavfx_v2.3_URP.shader @@ -0,0 +1,558 @@ + +Shader "VFX/Pandavfx_v2.3_URP" +{ + Properties + { + [Enum(UnityEngine.Rendering.CullMode)]_Cullmode("Cullmode", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)]_Ztest("Ztest", Float) = 4 + [Enum(UnityEngine.Rendering.BlendMode)]_Scr("Scr", Float) = 5 + [Enum(UnityEngine.Rendering.BlendMode)]_Dst("Dst", Float) = 10 + [KeywordEnum(X,Y,Z)] _Face("Face", Float) = 1 + _Zwrite("Zwrite", Float) = 0 + [HDR]_BackFaceColor("BackFaceColor", Color) = (1,1,1,0) + _AddTexBlendModeVec4("AddTexBlendMode", Vector) = (1, 0, 0, 0) + [Toggle]_AlphaAdd("AlphaAdd", Float) = 0 + _Reference("Reference", Range( 0 , 200)) = 0 + [Enum(UnityEngine.Rendering.StencilOp)]_Pass("Pass", Float) = 0 + [Enum(UnityEngine.Rendering.CompareFunction)]_Comparison("Comparison", Float) = 8 + [Enum(UnityEngine.Rendering.StencilOp)]_Fail("Fail", Float) = 0 + + _CenterU("CenterU", Float) = 0.5 + _CenterV("CenterV", Float) = 0.5 + + // Main + [HideInInspector]_MainTex_ST("MainTex_ST", Vector) = (1,1,0,0) + _MainTex("MainTex", 2D) = "white" {} + [Toggle]_UVPolar("UVPOLAR", Float) = 0 + _MainAlpha("MainAlpha", Range(0, 10)) = 1 + [HDR]_MainColor("MainColor", Color) = (1,1,1,1) + _MainTex_Uspeed("MainTex_Uspeed", Float) = 0 + _MainTex_Vspeed("MainTex_Vspeed", Float) = 0 + [Toggle]_MaintexC("MaintexC", Float) = 0 + [Toggle]_MaintexCV("MaintexCV", Float) = 0 + [Toggle]_MainTex_ar("MainTex_a/r", Float) = 0 + [Toggle]_CustomdataMainTexUV("CustomdataMainTexUV", Float) = 0 + [Enum(Custom1,0,Custom2,1)]_MainOffsetVC1("MainOffsetVC1", Float) = 0 + [Enum(Custom1,0,Custom2,1)]_MainOffsetUC1("MainOffsetUC1", Float) = 0 + _MainOffsetUC2Vec4("MainOffsetUC2Vec4", Vector) = (1, 0, 0, 0) + _MainOffsetVC2Vec4("MainOffsetVC2Vec4", Vector) = (0, 1, 0, 0) + _MainTex_rotat("MainRoate", Range(0, 360)) = 0 + + // Add + _AddTex("AddTex", 2D) = "white" {} + [HideInInspector]_AddTex_ST("AddTex_ST", Vector) = (1,1,0,0) + _AddTexUspeed("AddTexUspeed", Float) = 0 + _AddTexVspeed("AddTexVspeed", Float) = 0 + [HDR]_AddTexColor("AddTexColor", Color) = (0,0,0,0) + _AddTexBlend("AddTexBlend", Range( 0 , 1)) = 0 + [Toggle]_IfAddTex("IfAddTex", Float) = 0 + [Toggle]_AddTexC("AddTexC", Float) = 0 + [Toggle]_AddTexCV("AddTexCV", Float) = 0 + [Toggle]_AddTexAR("AddTexAR", Float) = 0 + [Toggle]_IfAddTexAlpha("IfAddTexAlpha", Float) = 0 + [Toggle]_IfAddTexColor("IfAddTexColor", Float) = 1 + [Toggle]_CAddTexUV("CAddTexUV", Float) = 0 + [Toggle]_CAddTexUVT("CAddTexUVT", Float) = 1 + _AddRotate("AddRoate", Range(0, 360)) = 0 + + // Distort + [HideInInspector]_DistortTex_ST("DistortTex_ST", Vector) = (1,1,0,0) + [HideInInspector]_DistortMaskTex_ST("DistortMaskTex_ST", Vector) = (1,1,0,0) + _DistortTex("DistortTex", 2D) = "white" {} + [Toggle]_SceenTex("SceenTex", Float) = 0 + [Toggle]_DistortTexAR("DistortTexAR", Float) = 1 + [Toggle]_DistortMask("DistortMask", Float) = 0 + _DistortFactor("DistortFactor", Range( 0 , 1)) = 0 + _DistortTex_Uspeed("DistortTex_Uspeed", Float) = 0 + _DistortTex_Vspeed("DistortTex_Vspeed", Float) = 0 + [Enum(Option1,0,Option2,1)]_CustomDistort("CustomDistort", Float) = 0 + [Toggle]_DistortMaskTexAR("DistortMaskTexAR", Float) = 1 + _DistortMaskTex("DistortMaskTex", 2D) = "white" {} + [Toggle]_DistortMaskTexC("DistortMaskTexC", Float) = 0 + [Toggle]_DistortMaskTexCV("DistortMaskTexCV", Float) = 0 + [Toggle]_IfFlowmap("IfFlowmap", Float) = 0 + [Enum(Custom1,0,Custom2,1)]_DistortFactorC1("DistortFactorC1", Float) = 1 + _DistortFactorC2Vec4("DistortFactorC2Vec4", Vector) = (0, 0, 1, 0) + [Toggle]_DistortRemap("DistortRemap", Float) = 0 + _DistortMaskTexR("DistRoate", Range(0, 360)) = 0 + [Toggle]_IfBeingDistorted("IfBeingDistorted",int) = 1 + + // Dissolve + _DissloveTex("DissloveTex", 2D) = "white" {} + [HideInInspector]_DissloveTex_ST("DissloveTex_ST", Vector) = (1,1,0,0) + _DIssloveFactor("DIssloveFactor", Range( 0 , 1)) = 0.5 + _DIssloveWide("DIssloveWide", Range( 0 , 1)) = 0.1 + _DIssloveSoft("DIssloveSoft", Range( 0 , 1)) = 0.5 + [HDR]_DIssloveColor("DIssloveColor", Color) = (1,1,1,1) + _DisTex_Uspeed("DisTex_Uspeed", Float) = 0 + _DisTex_Vspeed("DisTex_Vspeed", Float) = 0 + [Enum(Option1,0,Option2,1)]_CustomdataDisT("CustomdataDisT", Float) = 0 + _DissolveTexExp("DissolveTexExp", Range( 0 , 10)) = 1 + [Toggle]_DissolveC("DissolveC", Float) = 0 + [Toggle]_DissolveCV("DissolveCV", Float) = 0 + [Toggle]_DissolveAR("DissolveAR", Float) = 1 + [Toggle]_sot_sting_A("sot_sting_A", Float) = 0 + [Toggle]_CustomdataDis("CustomdataDis", Float) = 0 + [Toggle]_IfDissolveColor("IfDissolveColor", Float) = 1 + [Enum(Custom1,0,Custom2,1)]_DissolveFactorC1("DissolveFactorC1", Float) = 1 + [Enum(off,0,on,1)]_IfDissolveOffsetC("IfDissolveOffsetC", Float) = 0 + [Enum(Custom1,0,Custom2,1)]_DissolveOffsetUC1("DissolveOffsetUC1", Float) = 1 + _DissolveFactorC2Vec4("DissolveFactorC2Vec4", Vector) = (0, 0, 1, 0) + _DissolveOffsetUC2Vec4("DissolveOffsetUC2", Vector) = (1, 0, 0, 0) + _DissolveOffsetVC2Vec4("DissolveOffsetVC2", Vector) = (0, 1, 0, 0) + [Enum(Custom1,0,Custom2,1)]_DissolveOffsetVC1("DissolveOffsetVC1", Float) = 1 + _DisslovePlusTex("DisslovePlusTex", 2D) = "white" {} + _DissolveTexDivide("DissolveTexDivide", Range(1 , 10)) = 1 + [HideInInspector]_DisslovePlusTex_ST("DisslovePlusTex_ST", Vector) = (1,1,0,0) + _IfDissolvePlus("IfDissolvePlus", Float) = 0 + [Toggle]_DissolvePlusAR("DissolvePlusAR", Float) = 0 + [Toggle]_DissolvePlusC("DissolvePlusC", Float) = 0 + [Toggle]_DissolvePlusCV("DissolvePlusCV", Float) = 0 + _DIssolve_rotat("DissRoate", Range(0, 360)) = 0 + _DissolvePlusR("DissPlusRotate", Range(0, 360)) = 0 + + // Vertex offset + [HideInInspector]_VTOTex_ST("VTOTex_ST", Vector) = (1,1,0,0) + _VTOTex("VTOTex", 2D) = "white" {} + _VTOFactor("VTOFactor", Float) = 0 + _VTOTex_Uspeed("VTOTex_Uspeed", Float) = 0 + _VTOTex_Vspeed("VTOTex_Vspeed", Float) = 0 + _VTOMaskTex("VTOMaskTex", 2D) = "white" {} + [Toggle]_VTOFactorCustom("VTOFactorCustom", Float) = 0 + [Toggle]_VTOC("VTOC", Float) = 0 + [Toggle]_VTOCV("VTOCV", Float) = 0 + [Toggle]_VTOAR("VTOAR", Float) = 1 + [Toggle]_VTORemap("VTORemap", Float) = 0 + [Enum(Custom1,0,Custom2,1)]_VTOFactorC1("VTOFactorC1", Float) = 1 + _VTOFactorC2Vec4("_VTOFactorC2", Vector) = (0, 0, 0, 1) + _VTOR("VTORotate", Range(0, 360)) = 0 + + // Fresnel + _fnl_power("fnl_power", Range( 1 , 10)) = 1 + _fnl_sacle("fnl_sacle", Range( 0 , 1)) = 0 + [HDR]_fnl_color("fnl_color", Color) = (1,1,1,0) + _softFacotr("softFacotr", Range( 0 , 20)) = 1 + _DepthfadeFactor("DepthfadeFactor", Range( 0 , 10)) = 1 + [Toggle]_FNLfanxiangkaiguan("FNLfanxiangkaiguan", Float) = 0 + _Dir("Dir", Vector) = (0,0,0,0) + [Toggle]_IfFNLAlpha("IfFNLAlpha", Float) = 0 + + // Mask + [HideInInspector]_MaskPlusTex_ST("MaskPlusTex_ST", Vector) = (1,1,0,0) + [HideInInspector]_MaskTex_ST("MaskTex_ST", Vector) = (1,1,0,0) + _MaskTex("MaskTex", 2D) = "white" {} + _MaskPlusTex("MaskPlusTex", 2D) = "white" {} + [Toggle]_CustomdataMaskUV("CustomdataMaskUV", Float) = 0 + _Mask_scale("Mask_scale", Float) = 1 + _Mask_Uspeed("Mask_Uspeed", Float) = 0 + _MaskPlusUspeed("MaskPlusUspeed", Float) = 0 + _MaskPlusVspeed("MaskPlusVspeed", Float) = 0 + _Mask_Vspeed("Mask_Vspeed", Float) = 0 + [Toggle]_IfMaskColor("IfMaskColor", Float) = 0 + [Toggle]_MaskPlusC("MaskPlusC", Float) = 0 + [Toggle]_MaskPlusCV("MaskPlusCV", Float) = 0 + [Toggle]_MaskC("MaskC", Float) = 0 + [Toggle]_MaskCV("MaskCV", Float) = 0 + [Toggle]_MaskPlusAR("MaskPlusAR", Float) = 1 + [Toggle]_MaskAlphaRA("MaskAlphaRA", Float) = 1 + [Toggle]_IfMaskPlusTex("IfMaskPlusTex", Float) = 0 + [Enum(Custom1,0,Custom2,1)]_MaskOffsetVC1("MaskOffsetVC1", Float) = 0 + [Enum(Custom1,0,Custom2,1)]_MaskOffsetUC1("MaskOffsetUC1", Float) = 0 + _MaskOffsetUC2Vec4("_MaskOffsetUC2", Vector) = (0, 0, 1, 0) + _MaskOffsetVC2Vec4("_MaskOffsetVC2", Vector) = (0, 0, 0, 1) + _Mask_rotat("MaskRotate", Range(0, 360)) = 0 + _MaskPlusR("MaskPlusRotate", Range(0, 360)) = 0 + + // Soft particle + [Toggle]_Depthfadeon("Depthfadeon", Float) = 0 + + [HideInInspector] __dirty( "", Int ) = 1 + [HideInInspector] _TextureUScale("",float) = 1 + [HideInInspector] _TextureUValue("",float) = 0 + [HideInInspector] _TextureVScale("",float) = 1 + [HideInInspector] _TextureVValue("",float) = 0 + [HideInInspector] _CustomDataToZero("",float) = 1 + + //_UVTest("UVTest",range(0,1)) = 0 + } + + SubShader + { + Tags{ "RenderType" = "Transparent" "RenderPipeline" = "UniversalPipeline" "IsEmissive" = "true" "Queue" = "Transparent+500"} + Cull [_Cullmode] + ZWrite [_Zwrite] + ZTest [_Ztest] + Stencil + { + Ref [_Reference] + Comp [_Comparison] + Pass [_Pass] + Fail [_Fail] + } + Blend [_Scr] [_Dst] + HLSLINCLUDE + + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" + #include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Lighting.hlsl" + #include "Packages/com.unity.render-pipelines.universal/Shaders/LitInput.hlsl" + #include "Pandavfx_Function.hlsl" + + #define lerp(x, y, s) (mad((y)-(x), (s), (x))) + #define POLAR_COEFFICIENT 0.15915 + + //为了适应大量贴图的需要,需要根据贴图作变体来减少采样的次数 + //#pragma shader_feature_local _ _MAINTEX_CUSTOMDATA //mainTex是否有customData + + #pragma shader_feature_local _ _VTO_TEX + + #pragma shader_feature_local _ _DISORT_TEX + #pragma shader_feature_local _ _DISORT_MASK_TEX + + #pragma shader_feature_local _ _MASK_TEX + #pragma shader_feature_local _ _MASK_PLUS_TEX + + #pragma shader_feature_local _ _ADD_TEX + + #pragma shader_feature_local _ _DISSOLVE_TEX + #pragma shader_feature_local _ _DISSOLVE_PLUS_TEX + + #pragma shader_feature_local _ _SOFT_PARTICAL //是否是软粒子 + #pragma shader_feature_local _ _SCEENTEX_ON + + half4 Func(Input i, half facing) + { + //float test = step(i.uv_texcoord.y,_UVTest); + + //return float4(i.uv2_texcoord2.www,1); + half4 customData1 = half4(i.uv_texcoord.zw, i.uv2_texcoord2.xy); + half4 customData2 = half4(i.uv2_texcoord2.zw, i.uv3_texcoord3.xy); + + //如果使用LineRenderer而不是粒子系统的话 在此将customData归零 + customData1.xyzw*=_CustomDataToZero; + customData2.xyzw*=_CustomDataToZero; + + ///DistortTexture + float2 distortUV = 0; + #ifdef _DISORT_TEX + float2 distortTexcoord = i.uv_texcoord.xy; + float2 convertedUV = ConvertUV(distortTexcoord, _DistortTex_ST, 0, 0, (half4)0, 0, (half4)0, (half4)0, (half4)0, + _DistortTex_Uspeed, _DistortTex_Vspeed, 0, 0, 0); + + float4 customDataDistChannel = lerp(customData1, customData2, _DistortFactorC1); + float distFactorCustom = dot(_DistortFactorC2Vec4, customDataDistChannel); + distFactorCustom = lerp(_DistortFactor, distFactorCustom, _CustomDistort); + + distortUV = GetDistortTextureData(convertedUV, _DistortTex, sampler_DistortTex, distFactorCustom, _DistortTexAR, _DistortRemap, _IfFlowmap); + + #ifdef _DISORT_MASK_TEX + float2 distortMaskTexcood = i.uv_texcoord.xy; + float2 distortMask = ConvertUV(i.uv_texcoord.xy, _DistortMaskTex_ST, 0, 0, (half4)0, 0, (half4)0, (half4)0, (half4)0, + 0, 0, _DistortMaskTexC, _DistortMaskTexCV, _DistortMaskTexR); + + half4 mask = SAMPLE_TEXTURE2D(_DistortMaskTex, sampler_DistortMaskTex, distortMask); + distortUV *= lerp(mask.a, mask.r, _DistortMaskTexAR); + #endif + #endif + + ///主贴图uv + float2 mainTexcoord = i.uv_texcoord.xy; + float2 mainUV = ConvertUV(mainTexcoord, _MainTex_ST, + _CustomdataMainTexUV, _MainOffsetUC1, _MainOffsetUC2Vec4, _MainOffsetVC1, _MainOffsetVC2Vec4, customData1, customData2, + _MainTex_Uspeed, _MainTex_Vspeed, _MaintexC, _MaintexCV, _MainTex_rotat); + + //采样主贴图 + //根据是采样材质贴图还是采样背景图做一个变体 + half4 mainColor = float4(0,0,0,1); + #ifdef _SCEENTEX_ON + //UnityStereoTransformScreenSpaceTex(float2 uv) + float4 screenPos = i.screenPos; + //mainColor = SAMPLE_TEXTURE2D(_CameraOpaqueTexture,sampler_CameraOpaqueTexture,i.screenPos.xy/i.screenPos.w+ distortUV); + mainColor = SAMPLE_TEXTURE2D(_CameraOpaqueAndTransparentTexture,sampler_CameraOpaqueAndTransparentTexture,i.screenPos.xy/i.screenPos.w+ distortUV); + #else + mainColor = SAMPLE_TEXTURE2D(_MainTex,sampler_MainTex,mainUV + distortUV); + #endif + //return float4(mainColor.a,mainColor.a,mainColor.a,1); + i.ASEVFace = 0; + //是否使用R通道来替代透明度 + mainColor.a = clamp(lerp(mainColor.a,mainColor.a * mainColor.r,_MainTex_ar),0,1); + //混合前景色和后景色 + mainColor.rgb = mainColor.rgb * _MainColor.rgb; + //mainColor.rgb = facing<0?mainColor.rgb*_BackFaceColor.rgb:mainColor.rgb; + facing = step(facing, 0); + mainColor.rgb = lerp(mainColor.rgb, mainColor.rgb*_BackFaceColor.rgb, facing); + + //mainColor与顶点色混合 + //mainColor.rgb *= ( _IfDissolveColor == 0.0 ? float3(1,1,1) : i.vertexColor.rgb ); + //mainColor.rgb *= lerp(i.vertexColor.rgb, float3(1,1,1), _IfDissolveColor); + mainColor.rgb *= i.vertexColor.rgb; + //return float4(i.vertexColor.rgb,1); + + //////////////////////////////////////////////////////////////////////////////// + ///mainColor与其他贴图开始混合 + ///mainColor与AddTex混合 + float3 finalColor = mainColor.rgb; + float finalColorAlpha = mainColor.a; + + //原代码中mainTexAlpha会受_CustomdataDisT(溶解贴图的拖尾模式)影响,不知为何,只是照抄 + finalColorAlpha = finalColorAlpha * (i.vertexColor.a * (1 - _CustomdataDisT) + _CustomdataDisT); + + ///多功能图(addTex)采样部分 + float2 addTexUV = float2(0,0); + //float4 addColor = float4(1,1,1,1); + #ifdef _ADD_TEX + float2 addTexcoord = i.uv_texcoord.xy; + float2 addUV = ConvertUV(addTexcoord, _AddTex_ST, 0, 0, (half4)0, 0, (half4)0, (half4)0, (half4)0, + _AddTexUspeed, _AddTexVspeed, _AddTexC, _AddTexCV, _AddRotate); + + half4 addColor = AddTexture(addUV, _AddTex, sampler_AddTex, + finalColor, finalColorAlpha, + _AddTexColor, _AddTexAR, _AddTexBlend, _AddTexBlendModeVec4, _IfAddTexColor, _IfAddTexAlpha); + finalColor.rgb = addColor.rgb; + finalColorAlpha = addColor.a; + #endif + //////////////////////////////////////////////////////////////////////////////// + + + //////////////////////////////////////////////////////////////////////////////// + ///菲涅尔部分内容 + float3 ViewDir =normalize(_WorldSpaceCameraPos - i.worldPos) + _Dir; + float NoV = abs(dot(normalize(i.worldNormal),ViewDir)); + float FNL = saturate( ( pow( ( 1.0 - saturate( abs( NoV ) ) ) , _fnl_power ) * _fnl_sacle ) ); + float4 fnlColor = FNL * _fnl_color; + float softedge = pow(NoV,_softFacotr); + //是否影响最终的Alpha值 + finalColorAlpha = finalColorAlpha * lerp(1,FNL,_IfFNLAlpha) * lerp(1,softedge,_FNLfanxiangkaiguan); + finalColor +=fnlColor.rgb; + + + //////////////////////////////////////////////////////////////////////////////// + + //////////////////////////////////////////////////////////////////////////////// + ///软粒子 需要开启深度图 + #ifdef _SOFT_PARTICAL + float4 screenPosNorm = i.screenPos/i.screenPos.w; + float screenDepth88 = LinearEyeDepth(SAMPLE_DEPTH_TEXTURE( _CameraDepthTexture,sampler_CameraDepthTexture, screenPosNorm.xy),_ZBufferParams); + float distanceDepth = saturate( ( screenDepth88 - LinearEyeDepth( screenPosNorm.z ,_ZBufferParams) ) / ( _DepthfadeFactor ) ); + float softDepth = lerp(1.0, distanceDepth, _Depthfadeon); + finalColorAlpha *=softDepth; + #endif + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///与遮罩贴图混合 + //MaskTexture + float4 maskTexColor = float4(1,1,1,1); + float maskPlus = 1; + //float3 maskColor = 1; + float3 tempmaskcolor = 1; + #ifdef _MASK_TEX + float2 maskTexcoord = i.uv_texcoord.xy; + float2 maskUV = ConvertUV(maskTexcoord, _MaskTex_ST, + _CustomdataMaskUV, _MaskOffsetUC1, _MaskOffsetUC2Vec4, _MaskOffsetVC1, _MaskOffsetVC2Vec4, customData1, customData2, + _Mask_Uspeed, _Mask_Vspeed, _MaskC, _MaskCV, _Mask_rotat); + + half4 maskColor = GetMaskTextureData(maskUV, _MaskTex, sampler_MaskTex, + finalColor, finalColorAlpha, _MaskAlphaRA, _IfMaskColor, _Mask_scale); + + finalColor = maskColor.rgb; + finalColorAlpha = maskColor.a; + #endif + + //启动额外遮罩贴图 + #ifdef _MASK_PLUS_TEX + float2 maskPlusTexcoord = i.uv_texcoord.xy; + float2 maskPlusUV = ConvertUV(maskPlusTexcoord, _MaskPlusTex_ST, 0, 0, (half4)0, 0, (half4)0, (half4)0, (half4)0, + _MaskPlusUspeed, _MaskPlusVspeed, _MaskPlusC, _MaskPlusCV, _MaskPlusR); + + half4 maskPlusTexColor = GetMaskTextureData(maskPlusUV, _MaskPlusTex, sampler_MaskPlusTex, + finalColor, finalColorAlpha, _MaskPlusAR, 0, 1); + + finalColorAlpha = maskPlusTexColor.a; + #endif + + ///与溶解贴图混合 + #ifdef _DISSOLVE_TEX + float2 dissolveTexcoord = i.uv_texcoord.xy; + half2 dissolveUV = ConvertUV(dissolveTexcoord, _DissloveTex_ST, + _IfDissolveOffsetC, _DissolveOffsetUC1, _DissolveOffsetUC2Vec4, _DissolveOffsetVC1, _DissolveOffsetVC2Vec4, customData1, customData2, + _DisTex_Uspeed, _DisTex_Vspeed, _DissolveC, _DissolveCV, _DIssolve_rotat); + float4 dissolveTexColor = SAMPLE_TEXTURE2D(_DissloveTex,sampler_DissloveTex,dissolveUV); + float dissolve = lerp(dissolveTexColor.a, dissolveTexColor.r, _DissolveAR); + + float4 customDataDissChannel = lerp(customData1, customData2, _DissolveFactorC1); + float dissFactorCustom = dot(_DissolveFactorC2Vec4, customDataDissChannel); + //float dissFactor = ( _CustomdataDis == 0.0 ? ( _DIssloveFactor + 0.001 ) : ( _CustomdataDisT == 0.0 ? dissFactorCustom : (1.0 + (i.vertexColor.a - 0.0) * (0.0 - 1.0) / (1.0 - 0.0)) ) ); + dissFactorCustom = lerp(dissFactorCustom, (1.0 - i.vertexColor.a), _CustomdataDisT); + float dissFactor = lerp(_DIssloveFactor, dissFactorCustom, _CustomdataDis); + //return float4(_CustomDataToZero,_CustomDataToZero,_CustomDataToZero,1); + + //附加溶解贴图 + #ifdef _DISSOLVE_PLUS_TEX + float2 dissolveAddTexUV = i.uv_texcoord.xy * _DisslovePlusTex_ST.xy + _DisslovePlusTex_ST.zw; + half cosValue = cos(_DissolvePlusR * RADIAN); + half sinValue = sin(_DissolvePlusR * RADIAN); + dissolveAddTexUV = mul(dissolveAddTexUV- half2(0.5, 0.5) , half2x2(cosValue, -sinValue, sinValue, cosValue)) + half2(0.5, 0.5); + + + //附加溶解贴图Clamp + float2 dissolvePlusUV = dissolveAddTexUV; + float2 dissolvePlusUVClamp = clamp(dissolveAddTexUV,0,1); + dissolvePlusUV.x = lerp(dissolvePlusUV.x, dissolvePlusUVClamp.x, _DissolvePlusC); + dissolvePlusUV.y = lerp(dissolvePlusUV.y, dissolvePlusUVClamp.y, _DissolvePlusCV); + //采样附加溶解贴图 + float4 dissolveAddTexColor = SAMPLE_TEXTURE2D(_DisslovePlusTex,sampler_DisslovePlusTex,dissolvePlusUV); + //是否使用R通道 + float dissolveAdd = lerp(dissolveAddTexColor.a,dissolveAddTexColor.r,_DissolvePlusAR); + //混合附加溶解贴图和溶解贴图的值 + + //根据溶解参数做变化. + float powDissolve = saturate(pow(abs(dissolve), _DissolveTexExp) + dissolveAdd/2); + powDissolve = saturate(pow(dissolve,_DissolveTexExp)/_DissolveTexDivide + dissolveAdd/2); + #else + float powDissolve = saturate(pow(abs(dissolve), _DissolveTexExp) + dissolve/2); + #endif + + //float temp_output_57_0_g571 = saturate( pow( ( (float)_DissolveAR == 0.0 ? dissolveTexColor.a : dissolveTexColor.r ) , _DissolveTexExp ) ); + //float powDissolve = saturate((((temp_output_57_0_g571 / _DissolveTexDivide) + ( _IfDissolvePlus == 0.0 ? temp_output_57_0_g571 : lerp(dissolveAddTexColor.a, dissolveAddTexColor.r, _DissolvePlusAR))) * 0.5)); + //float powDissolve = saturate(pow(abs(dissolve), _DissolveTexExp));//saturate(((temp_output_57_0_g571 + temp_output_57_0_g571) * 0.5)); + float temp_output_3_0_g571 = (dissFactor * (1.0 + _DIssloveWide)); + float temp_output_1783_43 = step((temp_output_3_0_g571 - _DIssloveWide) , powDissolve); + float temp_output_2_0_g571 = (_DIssloveSoft + 1.0) * dissFactor; + float smoothstepResult21_g571 = smoothstep((temp_output_2_0_g571 - _DIssloveSoft) , temp_output_2_0_g571 , powDissolve); + float dissolveAlpha = lerp(smoothstepResult21_g571, temp_output_1783_43, _sot_sting_A); + + finalColorAlpha *=dissolveAlpha; + + #endif + /////////////////////////////////////////////////////////////////////////////// + + //调整总透明度 + finalColorAlpha *= _MainAlpha; + + //判断混合模式 如果是AlphaAdd则要乘以alpha + finalColor.rgb = lerp(1.0, finalColorAlpha, _AlphaAdd) * finalColor.rgb; + finalColorAlpha = clamp(finalColorAlpha,0,1); + //return float4(finalColorAlpha,finalColorAlpha,finalColorAlpha,1); + return float4(finalColor.rgb,finalColorAlpha); + } + + Input vertexFunc( inout appdata_full v ) + { + Input o; + //NITY_INITIALIZE_OUTPUT( Input, o ); + o = (Input)0; + + half4 customData1 = half4(v.texcoord.zw, v.texcoord1.xy); + half4 customData2 = half4(v.texcoord1.zw, v.texcoord2.xy); + + ///////////////////////////////////////////////////////////////////// + ///顶点偏移贴图部分 + float VtoOffset = 0; + #ifdef _VTO_TEX + float2 VtoUV = ConvertUV(v.texcoord.xy, _VTOTex_ST, 0, 0, (half4)0, 0, (half4)0, (half4)0, (half4)0, + _VTOTex_Uspeed, _VTOTex_Vspeed, _VTOC, _VTOCV, _VTOR); + + //采样顶点偏移贴图 + float4 VtoTex = SAMPLE_TEXTURE2D_LOD(_VTOTex,sampler_VTOTex,VtoUV,0); + + //是否使用自定义数据 _VTOFactorCustom + float4 CustomData = lerp(customData1, customData2, _VTOFactorC1); + float VTOFactorCustomData = dot(_VTOFactorC2Vec4, CustomData); + + //使用顶点偏移贴图的a通道还是r通道? + VtoOffset = lerp(VtoTex.a,VtoTex.r,_VTOAR); + //是否Remap + VtoOffset = lerp(VtoOffset,VtoOffset - 0.5,_VTORemap); + VtoOffset *=lerp(_VTOFactor,VTOFactorCustomData,_VTOFactorCustom); + #endif + ///////////////////////////////////////////////////////////////////// + + //顶点在法线方向上作偏移 + v.vertex = v.vertex + float4(VtoOffset * normalize(v.normal),0); + + return o; + } + + Varyings vert( appdata_full v ) + { + Varyings o; + UNITY_SETUP_INSTANCE_ID( v ); + o = (Varyings)0; + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO( o ); + UNITY_TRANSFER_INSTANCE_ID( v, o ); + Input customInputData; + customInputData = vertexFunc(v); + o.posWS = mul(unity_ObjectToWorld, v.vertex).xyz; + o.normal = TransformObjectToWorldNormal(v.normal); + o.customPack1.xyzw = v.texcoord; + //外界调整uv缩放值的时候使用, 默认缩放值为1 + o.customPack1.x = o.customPack1.x * _TextureUScale + _TextureUValue; + o.customPack1.y = o.customPack1.y * _TextureVScale + _TextureVValue; + + o.customPack2.xyzw = v.texcoord1; + o.customPack3.xyzw = v.texcoord2; + o.pos = TransformObjectToHClip(v.vertex.xyz); + o.screenPos = ComputeScreenPos( o.pos ); + o.color = v.color; + return o; + } + half4 Frag(Varyings IN,half facing : VFACE): SV_Target + { + UNITY_SETUP_INSTANCE_ID( IN ); + Input surfIN; + surfIN = (Input)0; + surfIN.uv_texcoord = IN.customPack1.xyzw; + surfIN.uv2_texcoord2 = IN.customPack2.xyzw; + surfIN.uv3_texcoord3 = IN.customPack3.xyzw; + surfIN.worldPos = IN.posWS; + surfIN.worldNormal = IN.normal; + surfIN.screenPos = IN.screenPos; + surfIN.vertexColor = IN.color; + surfIN.positionCS = IN.pos; + + half4 color = Func(surfIN, facing); + return color; + } + ENDHLSL + + Pass + { + Name "UniversalForward" + Tags{"LightMode" = "UniversalForward" } + Blend [_Scr] [_Dst] + //ZTest On + HLSLPROGRAM + #pragma vertex vert + #pragma fragment Frag + + ENDHLSL + } + + Pass + { + Name "Distortion" + Tags {"LightMode" = "Distortion" } + Blend [_Scr] [_Dst] + //ZTest On + HLSLPROGRAM + #pragma vertex vert + #pragma fragment Frag + + ENDHLSL + } + Pass + { + Name "AfterDistortion" + Tags {"LightMode" = "AfterDistortion" } + Blend [_Scr] [_Dst] + //ZTest On + HLSLPROGRAM + #pragma vertex vert + #pragma fragment Frag + + ENDHLSL + } + + } + FallBack "Hidden/Universal Render Pipeline/FallbackError" + CustomEditor "Yoka.MGame.PandaShader.PandavfxGUI" +} diff --git a/Assets/Shaders/VFX/Pandavfx_v2.3_URP.shader.meta b/Assets/Shaders/VFX/Pandavfx_v2.3_URP.shader.meta new file mode 100755 index 00000000..311d9071 --- /dev/null +++ b/Assets/Shaders/VFX/Pandavfx_v2.3_URP.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4af258f019782954c9c32cd616f51c3b +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteBadExpand.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteBadExpand.cs index a4a93ab1..e027c7d9 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteBadExpand.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteBadExpand.cs @@ -7,7 +7,7 @@ using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.Basic { - public class BasicNoteBadExpand : NoteEffectBase + public class BasicNoteBadExpand : NoteBadEffect { Renderer noteMainRenderer; public BasicNoteBadExpand(NoteBase note) @@ -29,30 +29,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic noteMainRenderer.material.DOColor(Color.clear, 0.2f).SetEase(Ease.OutQuad); noteVisual.noteMain.transform.DOScale(Vector3.one * 1.5f, 0.2f).SetEase(Ease.OutQuad).OnComplete(() => noteVisual.noteMain.SetActive(false)); } - - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songModule.songTime; - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - public override EffectBase_BM ConvertToBM() { return new Beatmap.BasicNoteBadExpand_BM(effectTime, note.elementGuid); @@ -61,7 +38,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic namespace Beatmap { - public class BasicNoteBadExpand_BM : NoteEffectBase_BM + public class BasicNoteBadExpand_BM : NoteBadEffect_BM { public BasicNoteBadExpand_BM() { diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGenerateExpand.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGenerateExpand.cs index b7e65f98..e76eda0c 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGenerateExpand.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGenerateExpand.cs @@ -4,14 +4,13 @@ using System.Collections.Generic; using DG.Tweening; using Ichni.RhythmGame; using Ichni.RhythmGame.Beatmap; +using Ichni.RhythmGame.ThemeBundles.Basic.Beatmap; using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.Basic { - public class BasicNoteGenerateExpand : NoteEffectBase + public class BasicNoteGenerateExpand : NoteGenerateEffect { - public float generateTime; - public BasicNoteGenerateExpand(NoteBase note) { this.note = note; @@ -32,49 +31,25 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic noteVisual.noteMain.transform.DOScale(Vector3.one, 0.1f).SetEase(Ease.OutBack); } - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songModule.songTime; - - if (songTime < note.exactJudgeTime - generateTime) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime - generateTime && - songTime <= note.exactJudgeTime - generateTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime - generateTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - public override EffectBase_BM ConvertToBM() { - return new Beatmap.BasicNoteGenerateExpand_BM(effectTime, generateTime, note.elementGuid); + return new BasicNoteGenerateExpand_BM(effectTime, generateTime, note.elementGuid); } } namespace Beatmap { - public class BasicNoteGenerateExpand_BM : NoteEffectBase_BM + public class BasicNoteGenerateExpand_BM : NoteGenerateEffect_BM { - public float generateTime; - public BasicNoteGenerateExpand_BM() { } - public BasicNoteGenerateExpand_BM(float effectTime, float generateTime, Guid attachedNoteID) : base(effectTime, attachedNoteID) + public BasicNoteGenerateExpand_BM(float effectTime, float generateTime, Guid attachedNoteID) : + base(effectTime, generateTime, attachedNoteID) { - this.generateTime = generateTime; + } public override EffectBase ConvertToGameType() diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGoodBurst.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGoodBurst.cs index 58239291..8dedd5e2 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGoodBurst.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteGoodBurst.cs @@ -8,7 +8,7 @@ using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.Basic { - public class BasicNoteGoodBurst : NoteEffectBase + public class BasicNoteGoodBurst : NoteGoodEffect { private GameObject effectRing; @@ -34,29 +34,6 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic effectRing.GetComponent().DOFade(0, 0.1f).SetEase(Ease.OutQuad).OnComplete(() => effectRing.SetActive(false)); noteVisual.noteMain.SetActive(false); } - - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songModule.songTime; - - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } public override EffectBase_BM ConvertToBM() { @@ -66,7 +43,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic namespace Beatmap { - public class BasicNoteGoodBurst_BM : NoteEffectBase_BM + public class BasicNoteGoodBurst_BM : NoteGoodEffect_BM { public BasicNoteGoodBurst_BM() { diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteMissPale.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteMissPale.cs index b984f4d9..e079b872 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteMissPale.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNoteMissPale.cs @@ -7,7 +7,7 @@ using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.Basic { - public class BasicNoteMissPale : NoteEffectBase + public class BasicNoteMissPale : NoteMissEffect { Renderer noteMainRenderer; @@ -30,30 +30,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic noteMainRenderer.material.SetColor("_BaseColor", Color.white / 2f); noteMainRenderer.material.DOColor(Color.clear, 0.2f).SetEase(Ease.OutQuad); } - - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songModule.songTime; - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - public override EffectBase_BM ConvertToBM() { return new Beatmap.BasicNoteMissPale_BM(effectTime, note.elementGuid); @@ -62,7 +39,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic namespace Beatmap { - public class BasicNoteMissPale_BM : NoteEffectBase_BM + public class BasicNoteMissPale_BM : NoteMissEffect_BM { public BasicNoteMissPale_BM() { diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNotePerfectBurst.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNotePerfectBurst.cs index 338b8201..ed1ed0c4 100644 --- a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNotePerfectBurst.cs +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicNotePerfectBurst.cs @@ -8,7 +8,7 @@ using UnityEngine; namespace Ichni.RhythmGame.ThemeBundles.Basic { - public class BasicNotePerfectBurst : NoteEffectBase + public class BasicNotePerfectBurst : NotePerfectEffect { private GameObject effectRing; @@ -35,29 +35,6 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic noteVisual.noteMain.SetActive(false); } - public override EffectState CheckEffectState() - { - float songTime = EditorManager.instance.songModule.songTime; - - if (songTime < note.exactJudgeTime ) - { - return EffectState.Before; - } - - if (songTime >= note.exactJudgeTime && - songTime <= note.exactJudgeTime + effectTime) - { - return EffectState.Middle; - } - - if (songTime > note.exactJudgeTime + effectTime) - { - return EffectState.After; - } - - return EffectState.Error; - } - public override EffectBase_BM ConvertToBM() { return new BasicNotePerfectBurst_BM(effectTime, note.elementGuid); @@ -66,7 +43,7 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic namespace Beatmap { - public class BasicNotePerfectBurst_BM : NoteEffectBase_BM + public class BasicNotePerfectBurst_BM : NotePerfectEffect_BM { public BasicNotePerfectBurst_BM() { diff --git a/Assets/ThemeBundles/DepartureToMultiverse.meta b/Assets/ThemeBundles/DepartureToMultiverse.meta new file mode 100644 index 00000000..a78adf08 --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d753827675cc4b6ca5b78e0aaead477 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Materials.meta b/Assets/ThemeBundles/DepartureToMultiverse/Materials.meta new file mode 100644 index 00000000..29ad6493 --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2bbc567792c554f848206ab2e0216425 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Materials/M_tap_01.mat b/Assets/ThemeBundles/DepartureToMultiverse/Materials/M_tap_01.mat new file mode 100644 index 00000000..16ba5c9c --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Materials/M_tap_01.mat @@ -0,0 +1,477 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: M_tap_01 + m_Shader: {fileID: 4800000, guid: 4af258f019782954c9c32cd616f51c3b, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: + - _CADDTEXUVT_ON + - _DISSOLVEAR_ON + - _DISSOLVEPLUSTEXAR_ON + - _DISSOLVEPLUSTEXUVCLIP_ON + - _DISSOLVETEXAR_ON + - _DISSOLVETEXUVCLIP_ON + - _DISTORTMASKTEXAR_ON + - _DISTORTTEXAR_ON + - _DISTORTUINTENSITY_ON + - _DISTORTVINTENSITY_ON + - _FACE_Y + - _IFADDTEXCOLOR_ON + - _IFBEINGDISTORTED_ON + - _IFDISSOLVECOLOR_ON + - _MAINTEXUVCLIP_ON + - _MASKALPHARA_ON + - _MASKPLUSAR_ON + - _MASKTEXAR_ON + - _MASKTEXUVCLIP_ON + - _REFACTIONMASKTEXAR_ON + - _REFACTIONTEXAR_ON + - _VTOAR_ON + - _VTOTEXAR_ON + - _VTOTEXUVCLIP_ON + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - Distortion + - AfterDistortion + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AddTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DisslovePlusTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DissloveTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DissolvePlusTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DissolveTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DistortMaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DistortTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskPlusTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RefactionMaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _RefactionTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _VTOMaskTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _VTOTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddRotate: 0 + - _AddTexAR: 0 + - _AddTexBlend: 0 + - _AddTexC: 0 + - _AddTexCV: 0 + - _AddTexUspeed: 0 + - _AddTexVspeed: 0 + - _AlphaAdd: 0 + - _AlphaClip: 0 + - _AlphaCutoff: 0.5 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendMode: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _CAddTexUV: 0 + - _CAddTexUVT: 1 + - _CenterU: 0.5 + - _CenterV: 0.5 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Comparison: 8 + - _Cull: 2 + - _CullMode: 0 + - _Cullmode: 2 + - _CustomDataToZero: 1 + - _CustomDissolve: 0 + - _CustomDissolvePlusTexUOffset: 0 + - _CustomDissolvePlusTexVOffset: 0 + - _CustomDissolveTexUOffset: 0 + - _CustomDissolveTexVOffset: 0 + - _CustomDistort: 0 + - _CustomDistortFactor: 0 + - _CustomMainTexUOffset: 0 + - _CustomMainTexVOffset: 0 + - _CustomMaskTexUOffset: 0 + - _CustomMaskTexVOffset: 0 + - _CustomRefactionFactor: 0 + - _CustomVTO: 0 + - _CustomdataDis: 0 + - _CustomdataDisT: 0 + - _CustomdataMainTexUV: 0 + - _CustomdataMaskUV: 0 + - _Cutoff: 0.5 + - _DIssloveFactor: 0.5 + - _DIssloveSoft: 0.5 + - _DIssloveWide: 0.1 + - _DIssolve_rotat: 0 + - _DepthFade: 1 + - _DepthfadeFactor: 1 + - _Depthfadeon: 0 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DisTex_Uspeed: 0 + - _DisTex_Vspeed: 0 + - _DissolveAR: 1 + - _DissolveC: 0 + - _DissolveCV: 0 + - _DissolveFactor: 0 + - _DissolveFactorC: 1 + - _DissolveFactorC1: 1 + - _DissolveOffsetUC1: 1 + - _DissolveOffsetVC1: 1 + - _DissolvePlusAR: 0 + - _DissolvePlusC: 0 + - _DissolvePlusCV: 0 + - _DissolvePlusIntensity: 0.5 + - _DissolvePlusR: 0 + - _DissolvePlusTexAR: 1 + - _DissolvePlusTexDetail: 0 + - _DissolvePlusTexRotator: 0 + - _DissolvePlusTexUClamp: 0 + - _DissolvePlusTexUMirror: 0 + - _DissolvePlusTexUOffsetC: 1 + - _DissolvePlusTexUSpeed: 0 + - _DissolvePlusTexUVClip: 1 + - _DissolvePlusTexVClamp: 0 + - _DissolvePlusTexVMirror: 0 + - _DissolvePlusTexVOffsetC: 1 + - _DissolvePlusTexVSpeed: 0 + - _DissolveSoft: 0.1 + - _DissolveTexAR: 1 + - _DissolveTexDetail: 0 + - _DissolveTexDivide: 1 + - _DissolveTexExp: 1 + - _DissolveTexRotator: 0 + - _DissolveTexUClamp: 0 + - _DissolveTexUMirror: 0 + - _DissolveTexUOffsetC: 1 + - _DissolveTexUSpeed: 0 + - _DissolveTexUVClip: 1 + - _DissolveTexVClamp: 0 + - _DissolveTexVMirror: 0 + - _DissolveTexVOffsetC: 1 + - _DissolveTexVSpeed: 0 + - _DissolveWide: 0.05 + - _DistortDissolveTex: 0 + - _DistortFactor: 0 + - _DistortFactorC: 1 + - _DistortFactorC1: 1 + - _DistortMainTex: 0 + - _DistortMask: 0 + - _DistortMaskTex: 0 + - _DistortMaskTexAR: 1 + - _DistortMaskTexC: 0 + - _DistortMaskTexCV: 0 + - _DistortMaskTexR: 0 + - _DistortRemap: 0 + - _DistortTexAR: 1 + - _DistortTexDetail: 0 + - _DistortTexRotator: 0 + - _DistortTexUMirror: 0 + - _DistortTexUSpeed: 0 + - _DistortTexVMirror: 0 + - _DistortTexVSpeed: 0 + - _DistortTex_Uspeed: 0 + - _DistortTex_Vspeed: 0 + - _DistortUIntensity: 1 + - _DistortVIntensity: 1 + - _Dst: 10 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _FDepth: 0 + - _FDissolvePlusTex: 0 + - _FDissolveTex: 0 + - _FDistortTex: 0 + - _FFnl: 0 + - _FMaskTex: 0 + - _FNLfanxiangkaiguan: 0 + - _Face: 1 + - _Fail: 0 + - _FnlPower: 1 + - _FnlScale: 0 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _IfAddTex: 0 + - _IfAddTexAlpha: 0 + - _IfAddTexColor: 1 + - _IfBeingDistorted: 1 + - _IfDissolveColor: 1 + - _IfDissolveOffsetC: 0 + - _IfDissolvePlus: 0 + - _IfFNLAlpha: 0 + - _IfFlowmap: 0 + - _IfMaskColor: 0 + - _IfMaskPlusTex: 0 + - _IfRefaction: 0 + - _IfRefactionMask: 0 + - _IfVTO: 0 + - _MainAlpha: 1 + - _MainOffsetUC1: 0 + - _MainOffsetVC1: 0 + - _MainRGBA: 14 + - _MainTexAR: 0 + - _MainTexCAFator: 0 + - _MainTexDesaturate: 0 + - _MainTexDetail: 0 + - _MainTexRotator: 0 + - _MainTexUClamp: 0 + - _MainTexUMirror: 0 + - _MainTexUOffsetC: 1 + - _MainTexUSpeed: 0 + - _MainTexUVClip: 1 + - _MainTexVClamp: 0 + - _MainTexVMirror: 0 + - _MainTexVOffsetC: 1 + - _MainTexVSpeed: 0 + - _MainTex_Uspeed: 0 + - _MainTex_Vspeed: 0 + - _MainTex_ar: 0 + - _MainTex_rotat: 0 + - _MaintexC: 0 + - _MaintexCV: 0 + - _MaskAlphaRA: 1 + - _MaskC: 0 + - _MaskCV: 0 + - _MaskOffsetUC1: 0 + - _MaskOffsetVC1: 0 + - _MaskPlusAR: 1 + - _MaskPlusC: 0 + - _MaskPlusCV: 0 + - _MaskPlusR: 0 + - _MaskPlusUspeed: 0 + - _MaskPlusVspeed: 0 + - _MaskTexAR: 1 + - _MaskTexDetail: 0 + - _MaskTexRotator: 0 + - _MaskTexUClamp: 0 + - _MaskTexUMirror: 0 + - _MaskTexUOffsetC: 1 + - _MaskTexUSpeed: 0 + - _MaskTexUVClip: 1 + - _MaskTexVClamp: 0 + - _MaskTexVMirror: 0 + - _MaskTexVOffsetC: 1 + - _MaskTexVSpeed: 0 + - _Mask_Uspeed: 0 + - _Mask_Vspeed: 0 + - _Mask_rotat: 0 + - _Mask_scale: 1 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _Pass: 0 + - _QueueControl: -1 + - _QueueOffset: 0 + - _ReFnl: 0 + - _ReceiveShadows: 1 + - _RefactionFactor: 0 + - _RefactionFactorC: 1 + - _RefactionMaskTexAR: 1 + - _RefactionMaskTexDetail: 0 + - _RefactionMaskTexRotator: 0 + - _RefactionMaskTexUClamp: 0 + - _RefactionMaskTexUMirror: 0 + - _RefactionMaskTexUSpeed: 0 + - _RefactionMaskTexUVClip: 0 + - _RefactionMaskTexVClamp: 0 + - _RefactionMaskTexVMirror: 0 + - _RefactionMaskTexVSpeed: 0 + - _RefactionRemap: 0 + - _RefactionTexAR: 1 + - _RefactionTexDetail: 0 + - _RefactionTexRotator: 0 + - _RefactionTexUMirror: 0 + - _RefactionTexUSpeed: 0 + - _RefactionTexVMirror: 0 + - _RefactionTexVSpeed: 0 + - _Reference: 0 + - _SB: 0 + - _SBCompare: 0 + - _SceenTex: 0 + - _Scr: 5 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _TextureUScale: 1 + - _TextureUValue: 0 + - _TextureVScale: 1 + - _TextureVValue: 0 + - _UVPolar: 0 + - _VTOAR: 1 + - _VTOC: 0 + - _VTOCV: 0 + - _VTOFactor: 0 + - _VTOFactorC1: 1 + - _VTOFactorCustom: 0 + - _VTOR: 0 + - _VTORemap: 0 + - _VTOScale: 1 + - _VTOScaleC: 1 + - _VTOTexAR: 1 + - _VTOTexDetail: 0 + - _VTOTexRotator: 0 + - _VTOTexUClamp: 0 + - _VTOTexUMirror: 0 + - _VTOTexUSpeed: 0 + - _VTOTexUVClip: 1 + - _VTOTexVClamp: 0 + - _VTOTexVMirror: 0 + - _VTOTexVSpeed: 0 + - _VTOTex_Uspeed: 0 + - _VTOTex_Vspeed: 0 + - _WorkflowMode: 1 + - _ZTest: 4 + - _ZWrite: 1 + - _Ztest: 4 + - _Zwrite: 0 + - __dirty: 1 + - _fnl_power: 3.45 + - _fnl_sacle: 1 + - _softFacotr: 0 + - _sot_sting_A: 0 + m_Colors: + - _AddTexBlendModeVec4: {r: 1, g: 0, b: 0, a: 0} + - _AddTexColor: {r: 0, g: 0, b: 0, a: 0} + - _BackFaceColor: {r: 1, g: 1, b: 1, a: 0} + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _DIssloveColor: {r: 1, g: 1, b: 1, a: 1} + - _Dir: {r: 0, g: 0, b: 0, a: 0} + - _DissolveColor: {r: 1, g: 1, b: 1, a: 1} + - _DissolveFactorC2Vec4: {r: 0, g: 0, b: 1, a: 0} + - _DissolveOffsetUC2Vec4: {r: 1, g: 0, b: 0, a: 0} + - _DissolveOffsetVC2Vec4: {r: 0, g: 1, b: 0, a: 0} + - _DistortFactorC2Vec4: {r: 0, g: 0, b: 1, a: 0} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _FnlColor: {r: 1, g: 1, b: 1, a: 1} + - _MainColor: {r: 0.007843138, g: 0.018431371, b: 0.043137256, a: 1} + - _MainOffsetUC2Vec4: {r: 1, g: 0, b: 0, a: 0} + - _MainOffsetVC2Vec4: {r: 0, g: 1, b: 0, a: 0} + - _MainTexRefine: {r: 1, g: 1, b: 1, a: 0} + - _MaskOffsetUC2Vec4: {r: 0, g: 0, b: 1, a: 0} + - _MaskOffsetVC2Vec4: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + - _VTOFactorC2Vec4: {r: 0, g: 0, b: 0, a: 1} + - _fnl_color: {r: 5.256514, g: 18.521101, b: 19.468573, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &3905949624757751178 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Materials/M_tap_01.mat.meta b/Assets/ThemeBundles/DepartureToMultiverse/Materials/M_tap_01.mat.meta new file mode 100755 index 00000000..60882a45 --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Materials/M_tap_01.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c3bfcc4bd240fb6438a1fbbbf81e49b3 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Models.meta b/Assets/ThemeBundles/DepartureToMultiverse/Models.meta new file mode 100644 index 00000000..2886a7e8 --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be488af7cf26f4cdab4f851be01c9fa3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Models/tapnote.fbx b/Assets/ThemeBundles/DepartureToMultiverse/Models/tapnote.fbx new file mode 100755 index 00000000..da4b9b02 Binary files /dev/null and b/Assets/ThemeBundles/DepartureToMultiverse/Models/tapnote.fbx differ diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Models/tapnote.fbx.meta b/Assets/ThemeBundles/DepartureToMultiverse/Models/tapnote.fbx.meta new file mode 100755 index 00000000..75dd791b --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Models/tapnote.fbx.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: 0db085323b2736746848a8b9b165d99f +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 0 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs.meta b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs.meta new file mode 100644 index 00000000..4ca971c8 --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad99bbec5bdea48888913df980419e3d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/tapnote.prefab b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/tapnote.prefab new file mode 100644 index 00000000..16d9ee69 --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/tapnote.prefab @@ -0,0 +1,85 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &9198835643077387700 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8422581136523542286} + - component: {fileID: 4849496633050345643} + - component: {fileID: 7253091419026080865} + m_Layer: 0 + m_Name: tapnote + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8422581136523542286 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9198835643077387700} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0, y: 0.308, z: 0} + m_LocalScale: {x: 0.030000012, y: 0.030000012, z: 0.030000012} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4849496633050345643 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9198835643077387700} + m_Mesh: {fileID: 1779601754579333883, guid: 0db085323b2736746848a8b9b165d99f, type: 3} +--- !u!23 &7253091419026080865 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9198835643077387700} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: c3bfcc4bd240fb6438a1fbbbf81e49b3, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} diff --git a/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/tapnote.prefab.meta b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/tapnote.prefab.meta new file mode 100755 index 00000000..b222b1ff --- /dev/null +++ b/Assets/ThemeBundles/DepartureToMultiverse/Prefabs/tapnote.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6ebb0c8bd5b2f51409686be1e0797531 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/IchniCreatorStudio.sln.DotSettings b/IchniCreatorStudio.sln.DotSettings new file mode 100644 index 00000000..34c23c47 --- /dev/null +++ b/IchniCreatorStudio.sln.DotSettings @@ -0,0 +1,2 @@ + + True \ No newline at end of file