diff --git a/Assets/Prefabs/GameElements/Note/Flick.prefab b/Assets/Prefabs/GameElements/Note/Flick.prefab new file mode 100644 index 00000000..5586fc3f --- /dev/null +++ b/Assets/Prefabs/GameElements/Note/Flick.prefab @@ -0,0 +1,84 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8182686472733940155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3154956539503596607} + - component: {fileID: 5348092283973790359} + m_Layer: 0 + m_Name: Flick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3154956539503596607 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8182686472733940155} + 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: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5348092283973790359 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8182686472733940155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: db9afa4209e714d689fc9b15d81c6f50, type: 3} + m_Name: + m_EditorClassIdentifier: + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: elementGuid + Entry: 2 + Data: 00000000000000000000000000000000 + - Name: submoduleList + Entry: 7 + Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + elementName: + tags: [] + parentElement: {fileID: 0} + connectedTab: {fileID: 0} + childElementList: [] + exactJudgeTime: 0 + isOnTrack: 0 + track: {fileID: 0} + trackPositioner: {fileID: 0} + noteVisual: {fileID: 0} + noteScreenPosition: {x: 0, y: 0} + isJudged: 0 + availableFlickDirections: [] diff --git a/Assets/Prefabs/GameElements/Note/Flick.prefab.meta b/Assets/Prefabs/GameElements/Note/Flick.prefab.meta new file mode 100644 index 00000000..3060fdca --- /dev/null +++ b/Assets/Prefabs/GameElements/Note/Flick.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9aa2b3262bc254b63a96346290d0c276 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/GameElements/Track/DefaultTrackMaterial.mat b/Assets/Prefabs/GameElements/Track/DefaultTrackMaterial.mat index b7e743b6..cc186a00 100644 --- a/Assets/Prefabs/GameElements/Track/DefaultTrackMaterial.mat +++ b/Assets/Prefabs/GameElements/Track/DefaultTrackMaterial.mat @@ -14,7 +14,7 @@ Material: m_ValidKeywords: [] m_InvalidKeywords: - _RECEIVE_SHADOWS_OFF - m_LightmapFlags: 0 + m_LightmapFlags: 4 m_EnableInstancingVariants: 0 m_DoubleSidedGI: 1 m_CustomRenderQueue: -1 diff --git a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs index 40a7e737..4ed01c9b 100644 --- a/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs +++ b/Assets/Scripts/EditorGame/Base/GeneralSubmodules/TransformSubmodule.cs @@ -75,6 +75,10 @@ namespace Ichni.RhythmGame scaleDirtyMark = true; eulerAnglesOffsetLock = false; + + attachedGameElement.transform.localScale = currentScale; + attachedGameElement.transform.localEulerAngles = currentEulerAngles; + attachedGameElement.transform.localPosition = currentPosition; (attachedGameElement as IHaveTransformSubmodule).transformSubmodule = this; (attachedGameElement as IHaveTransformSubmodule).SetTransformObserver(); diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs index 439efb30..e1161354 100644 --- a/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/FullScreenNearTimeJudgeUnit.cs @@ -17,7 +17,7 @@ namespace Ichni.RhythmGame public override void UpdateJudge() { - if(note.isJudged) return; + if(note.isFirstJudged) return; Vector2 noteScreenPosition = note.noteScreenPosition; RectTransform canvasRect = EditorManager.instance.judgeHintCanvas.GetComponent(); if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, noteScreenPosition, null, out Vector2 uiPosition)) diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs index d409777d..2eb4cb60 100644 --- a/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/JudgeSubmodules/TouchAreaJudgeUnit.cs @@ -21,7 +21,7 @@ namespace Ichni.RhythmGame public override void UpdateJudge() { - if(note.isJudged) return; + if(note.isFirstJudged) return; Vector2 noteScreenPosition = note.noteScreenPosition; RectTransform canvasRect = EditorManager.instance.judgeHintCanvas.GetComponent(); if (RectTransformUtility.ScreenPointToLocalPointInRectangle(canvasRect, noteScreenPosition, null, out Vector2 uiPosition)) diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Flick.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Flick.cs index 98a60bbe..77943aed 100644 --- a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Flick.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Flick.cs @@ -2,6 +2,7 @@ using System; using System.Collections; using System.Collections.Generic; using Dreamteck.Splines; +using Ichni.Editor; using Ichni.RhythmGame.Beatmap; using Lean.Pool; using Unity.VisualScripting; @@ -54,6 +55,18 @@ namespace Ichni.RhythmGame matchedBM = new Flick_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM, exactJudgeTime, availableFlickDirections); } + + public override void SetUpInspector() + { + base.SetUpInspector(); + + IHaveInspection inspector = EditorManager.instance.uiManager.inspector; + var container = inspector.GenerateContainer("Flick"); + var generateNoteVisualButton = inspector.GenerateButton(this, container, "Generate Note Visual", () => + { + TemporaryObject.GenerateElement("New Note Visual", Guid.NewGuid(), new List(), true, this); + }); + } } namespace Beatmap diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Hold.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Hold.cs index df8ca03f..c9695db8 100644 --- a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Hold.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Hold.cs @@ -1,18 +1,186 @@ +using System; using System.Collections; using System.Collections.Generic; +using System.Linq; +using Dreamteck.Splines; +using Ichni.Editor; +using Ichni.RhythmGame.Beatmap; +using Unity.VisualScripting; using UnityEngine; -public class Hold : MonoBehaviour +namespace Ichni.RhythmGame { - // Start is called before the first frame update - void Start() + public partial class Hold : NoteBase { + public float holdEndTime; + public bool isHolding; + public static Hold GenerateElement(string elementName, Guid id, List tags, bool isFirstGenerated, + GameElement parentElement, float exactJudgeTime, float holdEndTime) + { + Hold hold = Instantiate(EditorManager.instance.basePrefabs.tapNote, parentElement.transform) + .GetComponent(); + hold.Initialize(elementName, id, tags, isFirstGenerated, parentElement); + hold.exactJudgeTime = exactJudgeTime; + hold.holdEndTime = holdEndTime; + + if (parentElement.TryGetComponent(out Track track)) + { + if (track.trackTimeSubmodule != null) + { + hold.track = track; + //hold.trackPositioner = hold.AddComponent(); + hold.trackPositioner.spline = track.trackPathSubmodule.path; + hold.isOnTrack = true; + hold.UpdateNoteInTrack(); + } + else + { + throw new Exception("如果Note要生成在Track上,Track必须有TrackTimeSubmodule组件。"); + } + } + else + { + hold.track = null; + hold.isOnTrack = false; + } + + return hold; + } + } + + public partial class Hold + { + public override void SaveBM() + { + matchedBM = new Hold_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM, exactJudgeTime, holdEndTime); + } + + public override void SetUpInspector() + { + base.SetUpInspector(); + + IHaveInspection inspector = EditorManager.instance.uiManager.inspector; + var container = inspector.GenerateContainer("Hold"); + var holdEndTimeInputField = inspector.GenerateInputField(this, container, "holdEndTime", nameof(holdEndTime)); + var generateNoteVisualButton = inspector.GenerateButton(this, container, "Generate Note Visual", () => + { + TemporaryObject.GenerateElement("New Note Visual", Guid.NewGuid(), new List(), true, this); + }); + } } - // Update is called once per frame - void Update() + public partial class Hold { - + protected override void Update() + { + if(holdEndTime < exactJudgeTime) + { + LogWindow.Log("Hold end time is earlier than exact judge time.", Color.red); + return; + } + + if (isOnTrack) + { + if (track.trackTimeSubmodule is TrackTimeSubmoduleStatic) + { + UpdateNoteInStaticTrack(); + } + } + + float songTime = EditorManager.instance.songInformation.songTime; + + if (isFirstJudged && songTime < exactJudgeTime) + { + isFirstJudged = false; + isHolding = false; + } + + if (isHolding && songTime > holdEndTime) + { + isHolding = false; + } + + if (!isFirstJudged && songTime >= exactJudgeTime) + { + if (!isFirstJudged) + { + //AudioSource.PlayClipAtPoint(EditorManager.instance.basePrefabs.tapNoteSound, Camera.main.transform.position, 1f); + isFirstJudged = true; + } + + if (isFirstJudged && !isHolding && songTime < holdEndTime) + { + isHolding = true; + } + } + + if (noteJudgeSubmodule != null && !EditorManager.instance.cameraManager.isSceneCameraActive) + { + foreach (NoteJudgeUnit unit in noteJudgeSubmodule.judgeUnitList.Where(unit => unit.isShowingJudge)) + { + unit.UpdateJudge(); + } + } + + if (noteVisual != null) + { + noteVisual.effectSubmodule.effectCollection["Generate"].ForEach(e => e.UpdateEffect(exactJudgeTime)); + noteVisual.effectSubmodule.effectCollection["GeneralJudge"].ForEach(e => e.UpdateEffect(exactJudgeTime)); + + noteVisual.effectSubmodule.effectCollection["Holding"].ForEach(e => e.UpdateEffect(exactJudgeTime)); + + switch (EditorManager.instance.currentJudgeType) + { + case NoteJudgeType.Perfect: + noteVisual.effectSubmodule.effectCollection["Perfect"].ForEach(e => e.UpdateEffect(exactJudgeTime)); + break; + case NoteJudgeType.Good: + noteVisual.effectSubmodule.effectCollection["Good"].ForEach(e => e.UpdateEffect(exactJudgeTime)); + break; + case NoteJudgeType.Bad: + noteVisual.effectSubmodule.effectCollection["Bad"].ForEach(e => e.UpdateEffect(exactJudgeTime)); + break; + case NoteJudgeType.Miss: + noteVisual.effectSubmodule.effectCollection["Miss"].ForEach(e => e.UpdateEffect(exactJudgeTime)); + break; + } + + if (EditorManager.instance.cameraManager.haveGameCamera) + { + noteScreenPosition = EditorManager.instance.cameraManager.gameCamera.camera.WorldToScreenPoint(noteVisual.transform.position); + } + } + } } -} + + namespace Beatmap + { + public class Hold_BM : NoteBase_BM + { + public float holdEndTime; + + public Hold_BM() + { + + } + + public Hold_BM(string elementName, Guid elementGuid, List tags, GameElement_BM attachedElement, float exactJudgeTime, float holdEndTime) + : base(elementName, elementGuid, tags, attachedElement, exactJudgeTime) + { + this.holdEndTime = holdEndTime; + } + + public override void ExecuteBM() + { + matchedElement = Hold.GenerateElement(elementName, elementGuid, tags, false, + GetElement(attachedElementGuid), exactJudgeTime, holdEndTime); + } + + public override GameElement DuplicateBM(GameElement parent) + { + return Hold.GenerateElement(elementName, Guid.NewGuid(), tags, false, parent, exactJudgeTime, holdEndTime); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs index 370f08d4..e173bf06 100644 --- a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/NoteBase.cs @@ -6,6 +6,7 @@ using Dreamteck.Splines; using Ichni.Editor; using Sirenix.OdinInspector; using UnityEngine; +using UnityEngine.Serialization; namespace Ichni.RhythmGame { @@ -28,7 +29,7 @@ namespace Ichni.RhythmGame [Title("In-Game Info")] public Vector2 noteScreenPosition; - public bool isJudged; + [FormerlySerializedAs("isJudged")] public bool isFirstJudged; /// /// 在MovableTrack上更新Note的位置,注意HoldNote需要重写这个方法 @@ -61,7 +62,7 @@ namespace Ichni.RhythmGame noteJudgeSubmodule = new NoteJudgeSubmodule(this); } - private void Update() + protected virtual void Update() { if (isOnTrack) { @@ -73,17 +74,17 @@ namespace Ichni.RhythmGame float songTime = EditorManager.instance.songInformation.songTime; - if (isJudged && songTime < exactJudgeTime) + if (isFirstJudged && songTime < exactJudgeTime) { - isJudged = false; + isFirstJudged = false; } - if (!isJudged && songTime >= exactJudgeTime) + if (!isFirstJudged && songTime >= exactJudgeTime) { - if (!isJudged) + if (!isFirstJudged) { //AudioSource.PlayClipAtPoint(EditorManager.instance.basePrefabs.tapNoteSound, Camera.main.transform.position, 1f); - isJudged = true; + isFirstJudged = true; } } diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Stay.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Stay.cs index 307821a7..c54f7363 100644 --- a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Stay.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Stay.cs @@ -31,7 +31,7 @@ namespace Ichni.RhythmGame } else { - throw new System.Exception("如果Note要生成在Track上,Track必须有TrackTimeSubmodule组件。"); + throw new Exception("如果Note要生成在Track上,Track必须有TrackTimeSubmodule组件。"); } } else @@ -56,7 +56,7 @@ namespace Ichni.RhythmGame base.SetUpInspector(); IHaveInspection inspector = EditorManager.instance.uiManager.inspector; - var container = inspector.GenerateContainer("Generate"); + var container = inspector.GenerateContainer("Stay"); var generateNoteVisualButton = inspector.GenerateButton(this, container, "Generate Note Visual", () => { TemporaryObject.GenerateElement("New Note Visual", Guid.NewGuid(), new List(), true, this); diff --git a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Tap.cs b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Tap.cs index 34021024..2ae4a101 100644 --- a/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Tap.cs +++ b/Assets/Scripts/EditorGame/GameElements/Notes/NoteObjects/Tap.cs @@ -57,7 +57,7 @@ namespace Ichni.RhythmGame base.SetUpInspector(); IHaveInspection inspector = EditorManager.instance.uiManager.inspector; - var container = inspector.GenerateContainer("Generate"); + var container = inspector.GenerateContainer("Tap"); var generateNoteVisualButton = inspector.GenerateButton(this, container, "Generate Note Visual", () => { TemporaryObject.GenerateElement("New Note Visual", Guid.NewGuid(), new List(), true, this); diff --git a/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs index 6c489a77..f510e89c 100644 --- a/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs +++ b/Assets/Scripts/EditorGame/GameElements/Track/TrackSubmodules/TrackPathSubmodule.cs @@ -32,6 +32,8 @@ namespace Ichni.RhythmGame this.trackSamplingType = trackSamplingType; this.isClosed = isClosed; + this.path.sampleRate = 16; + SetUpSplineComputer(this.trackSpaceType, this.trackSamplingType); //闭合路径在PathNode生成时执行,在初始化的情况下,PathNode数量为0,不会执行闭合操作 diff --git a/Assets/ThemeBundles/Basic/Prefabs/BasicNoteHold.prefab b/Assets/ThemeBundles/Basic/Prefabs/BasicNoteHold.prefab new file mode 100644 index 00000000..670cf5bb --- /dev/null +++ b/Assets/ThemeBundles/Basic/Prefabs/BasicNoteHold.prefab @@ -0,0 +1,254 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6759562726529963496 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8577101396104971865} + - component: {fileID: 1652441339443578052} + m_Layer: 0 + m_Name: JudgeEffect + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8577101396104971865 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6759562726529963496} + serializedVersion: 2 + 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: 1 + m_Children: [] + m_Father: {fileID: 4303129164719886000} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &1652441339443578052 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6759562726529963496} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 0ab11be59df835d4099df401d7420c44, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 1 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!1 &7418166426351319151 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2236104322558172231} + - component: {fileID: 4662184346438900431} + - component: {fileID: 7556478762474901918} + m_Layer: 0 + m_Name: NoteMain + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2236104322558172231 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7418166426351319151} + 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: [] + m_Father: {fileID: 4303129164719886000} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &4662184346438900431 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7418166426351319151} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7556478762474901918 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7418166426351319151} + 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: b39306d2c39754d0aafabe8570b8e640, 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} +--- !u!1 &8969796646526822168 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4303129164719886000} + - component: {fileID: 102223384410705138} + m_Layer: 0 + m_Name: BasicNoteHold + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4303129164719886000 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8969796646526822168} + 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: 2236104322558172231} + - {fileID: 8577101396104971865} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &102223384410705138 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8969796646526822168} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 72caf325f2b59403c94193cd2037b7ba, type: 3} + m_Name: + m_EditorClassIdentifier: + serializationData: + SerializedFormat: 2 + SerializedBytes: + ReferencedUnityObjects: [] + SerializedBytesString: + Prefab: {fileID: 0} + PrefabModificationsReferencedUnityObjects: [] + PrefabModifications: [] + SerializationNodes: + - Name: elementGuid + Entry: 2 + Data: 00000000000000000000000000000000 + - Name: submoduleList + Entry: 7 + Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase, + Assembly-CSharp]], mscorlib + - Name: + Entry: 12 + Data: 0 + - Name: + Entry: 13 + Data: + - Name: + Entry: 8 + Data: + elementName: + tags: [] + parentElement: {fileID: 0} + connectedTab: {fileID: 0} + childElementList: [] + themeBundleName: basic + objectName: BasicNoteTap3D + note: {fileID: 0} + noteMain: {fileID: 7418166426351319151} + judgeEffect: {fileID: 6759562726529963496} + notePartList: + - {fileID: 7418166426351319151} + effectPartList: + - {fileID: 6759562726529963496} diff --git a/Assets/ThemeBundles/Basic/Prefabs/BasicNoteHold.prefab.meta b/Assets/ThemeBundles/Basic/Prefabs/BasicNoteHold.prefab.meta new file mode 100644 index 00000000..065e4fa1 --- /dev/null +++ b/Assets/ThemeBundles/Basic/Prefabs/BasicNoteHold.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6f11cbfdf394e4f3aae89e7dcdd44282 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: basic + assetBundleVariant: diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicHoldVisual.cs b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicHoldVisual.cs new file mode 100644 index 00000000..59dcd0a3 --- /dev/null +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicHoldVisual.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class BasicHoldVisual : MonoBehaviour +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } +} diff --git a/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicHoldVisual.cs.meta b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicHoldVisual.cs.meta new file mode 100644 index 00000000..1a42ff67 --- /dev/null +++ b/Assets/ThemeBundles/Basic/Scripts/NoteVisual/BasicHoldVisual.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f92b9b8f89de544adaa001ccfdf7eae4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: