注意:更改了trackpercentpoint的逻辑

Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
2025-08-31 15:27:02 +08:00
parent 84ff356427
commit 27b3cf58d0
40 changed files with 288899 additions and 18281 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -81,7 +81,7 @@ namespace Michsky.MUIP
DragObjectInternal.localPosition = originalPanelLocalPosition + offsetToOriginal;
}
ClampToArea();
//ClampToArea();
}
}

File diff suppressed because one or more lines are too long

View File

@@ -33,11 +33,11 @@ RectTransform:
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 450, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
m_SizeDelta: {x: 450, y: 21}
m_Pivot: {x: 0, y: 1}
--- !u!222 &8183404397726464440
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -93,7 +93,7 @@ MonoBehaviour:
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 17.9
m_fontSize: 18
m_fontSizeBase: 18
m_fontWeight: 400
m_enableAutoSizing: 1

View File

@@ -93,7 +93,9 @@ GameObject:
m_Component:
- component: {fileID: 1315658469023090610}
- component: {fileID: 8806291656250087362}
m_Layer: 0
- component: {fileID: 2465663648442524387}
- component: {fileID: 141484915043168710}
m_Layer: 9
m_Name: PathNode
m_TagString: Untagged
m_Icon: {fileID: 0}
@@ -129,30 +131,14 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
SerializedFormat: 0
SerializedBytes: 29010b00000065006c0065006d0065006e00740047007500690064000000000000000000000000000000000001010d0000007300750062006d006f00640075006c0065004c006900730074002f00000000015e000000530079007300740065006d002e0043006f006c006c0065006300740069006f006e0073002e00470065006e0065007200690063002e004c00690073007400600031005b005b004900630068006e0069002e00520068007900740068006d00470061006d0065002e005300750062006d006f00640075006c00650042006100730065002c00200041007300730065006d0062006c0079002d004300530068006100720070005d005d002c0020006d00730063006f0072006c00690062000000000006000000000000000007052d010b00000065006e00610062006c00650054007900700065007300
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:
SerializationNodes: []
elementName:
tags: []
parentElement: {fileID: 0}
@@ -169,3 +155,37 @@ MonoBehaviour:
tangent2: {x: 0, y: 0, z: 0}
pathNodeSphere: {fileID: 2852814640559356108}
isShowingSphere: 0
--- !u!114 &2465663648442524387
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7248180033186031075}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b37c44f04f3075045aef6be2c0506551, type: 3}
m_Name:
m_EditorClassIdentifier:
connectedGameElement: {fileID: 8806291656250087362}
--- !u!135 &141484915043168710
SphereCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7248180033186031075}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Radius: 0.25
m_Center: {x: 0, y: 0, z: 0}

View File

@@ -1101,8 +1101,8 @@ RectTransform:
m_GameObject: {fileID: 976582014086353606}
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_LocalScale: {x: 0.8, y: 0.8, z: 0.8}
m_ConstrainProportionsScale: 1
m_Children:
- {fileID: 4852151156487291557}
- {fileID: 669416151988446346}

View File

@@ -11,7 +11,6 @@ GameObject:
- component: {fileID: 8513125829252354392}
- component: {fileID: 2621771371107799449}
- component: {fileID: 741680413475236520}
- component: {fileID: 4170913235429893697}
m_Layer: 0
m_Name: Y
m_TagString: Untagged
@@ -31,7 +30,8 @@ Transform:
m_LocalPosition: {x: 0, y: 5, z: 0}
m_LocalScale: {x: 0.3, y: 0.5, z: 0.3}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 6645388671143322315}
m_Father: {fileID: 5947592144106898092}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &2621771371107799449
@@ -84,13 +84,97 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &4170913235429893697
--- !u!1 &1742335630928125934
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 7854933447232336416}
- component: {fileID: 644029043323004575}
- component: {fileID: 5733737945388314792}
- component: {fileID: 6205096500104401830}
m_Layer: 9
m_Name: Y (3)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &7854933447232336416
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1742335630928125934}
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: 2980912009560321788}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &644029043323004575
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1742335630928125934}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &5733737945388314792
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1742335630928125934}
m_Enabled: 0
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: 3ad414b125e09f84bb147b7751337653, 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!65 &6205096500104401830
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 215703077368714792}
m_GameObject: {fileID: 1742335630928125934}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
@@ -155,9 +239,114 @@ MonoBehaviour:
m_EditorClassIdentifier:
moveSensitivity: 2
prefab: {fileID: 2260653761532832587}
colliderX: {fileID: 2621130263500266208}
colliderY: {fileID: 4170913235429893697}
colliderZ: {fileID: 2195485992075471291}
colliderX: {fileID: 3181013651884669472}
colliderY: {fileID: 2651512064473402658}
colliderZ: {fileID: 6205096500104401830}
--- !u!1 &2493779181360497649
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1109716753171402670}
- component: {fileID: 1515188775959535411}
- component: {fileID: 5578802066690555216}
- component: {fileID: 3181013651884669472}
m_Layer: 9
m_Name: Y (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1109716753171402670
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2493779181360497649}
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: 1337011025134255266}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1515188775959535411
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2493779181360497649}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &5578802066690555216
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2493779181360497649}
m_Enabled: 0
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: 3ad414b125e09f84bb147b7751337653, 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!65 &3181013651884669472
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2493779181360497649}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!1 &3305423860229473686
GameObject:
m_ObjectHideFlags: 0
@@ -169,7 +358,6 @@ GameObject:
- component: {fileID: 1337011025134255266}
- component: {fileID: 6424561589510022844}
- component: {fileID: 8543897811309128406}
- component: {fileID: 2621130263500266208}
m_Layer: 0
m_Name: X
m_TagString: Untagged
@@ -189,7 +377,8 @@ Transform:
m_LocalPosition: {x: 5, y: 0, z: 0}
m_LocalScale: {x: 0.5, y: 0.3, z: 0.3}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 1109716753171402670}
m_Father: {fileID: 5947592144106898092}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &6424561589510022844
@@ -242,27 +431,6 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &2621130263500266208
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3305423860229473686}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 1
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!1 &4589018768241046200
GameObject:
m_ObjectHideFlags: 0
@@ -274,7 +442,6 @@ GameObject:
- component: {fileID: 2980912009560321788}
- component: {fileID: 1738644939232745362}
- component: {fileID: 1326140950170993813}
- component: {fileID: 2195485992075471291}
m_Layer: 0
m_Name: Z
m_TagString: Untagged
@@ -294,7 +461,8 @@ Transform:
m_LocalPosition: {x: 0, y: 0, z: 5}
m_LocalScale: {x: 0.3, y: 0.3, z: 0.5}
m_ConstrainProportionsScale: 0
m_Children: []
m_Children:
- {fileID: 7854933447232336416}
m_Father: {fileID: 5947592144106898092}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &1738644939232745362
@@ -347,13 +515,97 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!65 &2195485992075471291
--- !u!1 &5824058449296065999
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6645388671143322315}
- component: {fileID: 7516237178923888863}
- component: {fileID: 3221658530144337786}
- component: {fileID: 2651512064473402658}
m_Layer: 9
m_Name: Y (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6645388671143322315
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5824058449296065999}
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: 8513125829252354392}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &7516237178923888863
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5824058449296065999}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &3221658530144337786
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5824058449296065999}
m_Enabled: 0
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: 3ad414b125e09f84bb147b7751337653, 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!65 &2651512064473402658
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4589018768241046200}
m_GameObject: {fileID: 5824058449296065999}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2

File diff suppressed because one or more lines are too long

View File

@@ -205,8 +205,8 @@ namespace Ichni.Editor
{
string a = arg.Trim();
// Vector2/3: [1,2] 或 [1,2,3]
if (Regex.IsMatch(a, @"^\[\s*-?\d+(\.\d+)?\s*,\s*-?\d+(\.\d+)?(\s*,\s*-?\d+(\.\d+)?)*\s*\]$"))
// Vector2/3: [1,2] 或 [1,2,3],支持小数
if (Regex.IsMatch(a, @"^\[\s*-?\d*\.?\d+\s*,\s*-?\d*\.?\d+(\s*,\s*-?\d*\.?\d+)*\s*\]$"))
{
// 去除中括号和空格
string content = a.Substring(1, a.Length - 2).Trim();

View File

@@ -41,7 +41,7 @@ namespace Ichni.Editor
}
public static void Lgp(int loop, Vector3 start, Vector3 end, bool Clear = false)
public static void Lgp(int loop, Vector3 start, Vector3 end, bool Clear = false, bool offsetOrigin = false)
{
if (inspector.connectedGameElement == null || inspector.connectedGameElement.GetType() != typeof(Track))
{
@@ -54,10 +54,18 @@ namespace Ichni.Editor
return;
}
Track track = (Track)inspector.connectedGameElement;
List<PathNode> oldNodes = track.trackPathSubmodule.pathNodeList.ToList();
List<PathNode> newNodes = new List<PathNode>();
// 如果 Clear 且有旧节点,迁移变换
if (Clear)
{
if (offsetOrigin && oldNodes.Count > 0 && newNodes.Count > 0)
{
AdjustPathNodesToNearest(track, newNodes, oldNodes);
}
// 清除之前的PathNode
foreach (var node in track.trackPathSubmodule.pathNodeList.ToList())
foreach (var node in oldNodes)
{
EditorManager.instance.operationManager.CopyPasteDeleteModule.DeleteElement(node);
}
@@ -70,7 +78,38 @@ namespace Ichni.Editor
float z = start.z + (end.z - start.z) * t;
PathNode j = PathNode.GenerateElement("PathNode" + i.ToString(), Guid.NewGuid(), new List<string>(), true, track, true);
j.transformSubmodule.originalPosition = new Vector3(x, y, z);
newNodes.Add(j);
}
}
/// <summary>
/// 将原有 PathNode 的变换(位置、旋转、缩放)迁移到新生成的最近 PathNode 上
/// </summary>
public static bool AdjustPathNodesToNearest(Track track, List<PathNode> newNodes, List<PathNode> oldNodes)
{
foreach (var oldNode in oldNodes)
{
// 找到距离 oldNode 最近的新节点
PathNode nearest = newNodes
.OrderBy(n => Vector3.Distance(n.transformSubmodule.originalPosition, oldNode.transformSubmodule.originalPosition))
.FirstOrDefault();
if (nearest != null)
{
// 计算 oldNode 的变换(直接用欧拉角,不用四元数)
Vector3 deltaPos = oldNode.transformSubmodule.originalPosition - oldNode.transformSubmodule.originalPosition;
Vector3 deltaEuler = oldNode.transformSubmodule.originalEulerAngles - oldNode.transformSubmodule.originalEulerAngles;
Vector3 deltaScale = oldNode.transformSubmodule.originalScale - oldNode.transformSubmodule.originalScale;
// 将变换应用到新节点
nearest.transformSubmodule.originalPosition += deltaPos;
nearest.transformSubmodule.originalEulerAngles += deltaEuler;
nearest.transformSubmodule.originalScale += deltaScale;
}
}
return true;
}

View File

@@ -14,7 +14,7 @@ namespace Ichni.Editor
public Hierarchy hierarchy;
public Inspector inspector;
public Timeline timeline;
public Canvas WindowsCanvas;
public List<StaticWindow> staticWindows;
/// <summary>

View File

@@ -23,21 +23,21 @@ namespace Ichni.Editor
{
CompositeParameterWindow compositeParameterWindow =
Object.Instantiate(EditorManager.instance.basePrefabs.compositeParameterWindow,
EditorManager.instance.uiManager.inspector.inspectorCanvas.GetComponent<RectTransform>())
EditorManager.instance.uiManager.WindowsCanvas.GetComponent<RectTransform>())
.GetComponent<CompositeParameterWindow>();
compositeParameterWindow.Initialize(baseElement, title, parameterName);
return compositeParameterWindow;
}
public GraphicalFlexibleFloatWindow GenerateGraphicalFlexibleFloatWindow(IBaseElement baseElement, string title, FlexibleFloat[] FlexibleFloats, string[] subTitle)
{
GraphicalFlexibleFloatWindow graphicalFlexibleFloatWindow = Object.Instantiate(EditorManager.instance.basePrefabs.graphicalFlexibleFloatWindow, EditorManager.instance.uiManager.inspector.inspectorCanvas.GetComponent<RectTransform>())
GraphicalFlexibleFloatWindow graphicalFlexibleFloatWindow = Object.Instantiate(EditorManager.instance.basePrefabs.graphicalFlexibleFloatWindow, EditorManager.instance.uiManager.WindowsCanvas.GetComponent<RectTransform>())
.GetComponent<GraphicalFlexibleFloatWindow>();
graphicalFlexibleFloatWindow.Initialize(baseElement, title, FlexibleFloats, subTitle);
return graphicalFlexibleFloatWindow;
}
public SampleWindow GenerateSampler(GameElement baseElement, string title)
{
SampleWindow sampler = Object.Instantiate(EditorManager.instance.basePrefabs.sampler, EditorManager.instance.uiManager.inspector.inspectorCanvas.GetComponent<RectTransform>())
SampleWindow sampler = Object.Instantiate(EditorManager.instance.basePrefabs.sampler, EditorManager.instance.uiManager.WindowsCanvas.GetComponent<RectTransform>())
.GetComponent<SampleWindow>();
sampler.Initialize(baseElement, title);
return sampler;
@@ -130,7 +130,7 @@ namespace Ichni.Editor
subcontainer.dynamicUIElements.Add(vector3InputField);
return vector3InputField;
}
public DynamicUIVector2InputField GenerateVector2InputField(IBaseElement baseElement,
DynamicUISubcontainer subcontainer, string title, string parameterName, bool isAutoUpdate = false)
{

View File

@@ -3,23 +3,26 @@ using System.Collections.Generic;
using Lean.Pool;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Ichni.Editor
{
public class LogText : MonoBehaviour
{
public TMP_Text logText;
public void SetLogText(string text, Color color)
{
logText.text = text;
logText.color = color;
string logFilePath = EditorManager.instance.projectInformation.projectPath + "/Logs/EditorLog.txt";
// if(!ES3.FileExists(logFilePath)) System.IO.File.Create(logFilePath).Dispose();
//
// System.IO.File.AppendAllText(logFilePath, text + "\n");
}
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using Lean.Pool;
using UnityEngine;
using UnityEngine.Serialization;
@@ -13,18 +14,17 @@ namespace Ichni.Editor
public GameObject logTextPrefab;
List<string> savedTexts;
public RectTransform textRect;
public Button copyAllTextsButton;
public Button removeAllTextsButton;
public Queue<LogText> logTexts;
public List<LogText> logTexts; // 改为 List
public int logTextCapacity = 4;
protected override void Start()
{
base.Start();
savedTexts = new List<string>();
logTexts = new Queue<LogText>();
logTexts = new List<LogText>(); // 初始化为 List
copyAllTextsButton.onClick.AddListener(CopyAllText);
removeAllTextsButton.onClick.AddListener(RemoveAllText);
}
@@ -36,19 +36,37 @@ namespace Ichni.Editor
private void AddLog(string text, Color color = default)
{
CheckLogTextCapacity();
LogText logText = LeanPool.Spawn(logTextPrefab, textRect).GetComponent<LogText>();
if (color == default) color = Color.white;
savedTexts.Add(text);
logText.SetLogText(text, color);
logTexts.Enqueue(logText);
}
private void CheckLogTextCapacity()
{
if (logTexts.Count >= logTextCapacity)
// 插入到头部
logTexts.Insert(0, logText);
// 超出容量则移除最后一个
if (logTexts.Count > logTextCapacity)
{
LeanPool.Despawn(logTexts.Dequeue().gameObject);
LogText logText1 = logTexts[logTexts.Count - 1];
RectTransform rt = logText1.GetComponent<RectTransform>();
rt.DOComplete();
rt.DOAnchorPos(new Vector2(0, -23 * (logTexts.Count - 1)), 0.2f).SetEase(Ease.OutCubic);
logText1.logText.DOColor(new Color(0, 0, 0, 0), 0.2f).OnComplete(() =>
{
LeanPool.Despawn(logText1.gameObject);
});
logTexts.RemoveAt(logTexts.Count - 1);
}
logText.logText.color = new Color(0, 0, 0, 0);
logText.logText.DOColor(color, 0.2f);
// 更新所有 log 的位置
for (int i = 0; i < logTexts.Count; i++)
{
RectTransform rt = logTexts[i].GetComponent<RectTransform>();
rt.DOComplete();
rt.DOAnchorPos(new Vector2(0, -23 * i), 0.2f).SetEase(Ease.OutCubic);
}
}

View File

@@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using TMPro;
using UnityEngine;
using UnityEngine.Events;
@@ -24,7 +25,10 @@ namespace Ichni.Editor
{
onCloseWindow?.Invoke();
onQuit?.Invoke();
Destroy(gameObject);
this.transform.DOScale(Vector3.zero, 0.15f).SetEase(Ease.InCirc).OnComplete(() =>
{
Destroy(gameObject);
});
});
StartCoroutine(WindowAnim.ShowPanelOnScale(gameObject));
}

View File

@@ -1,5 +1,6 @@
using System.Collections;
using System.Collections.Generic;
using DG.Tweening;
using Sirenix.OdinInspector;
using TMPro;
using UniRx;
@@ -26,6 +27,13 @@ namespace Ichni.Editor
// anchoredPosition = this.GetComponent<RectTransform>().anchoredPosition;
// anchoredPosition3D = this.GetComponent<RectTransform>().anchoredPosition3D;
// }
public void PlayAnim()
{
intervalUnitText.transform.DOKill();
intervalUnitText.transform.DOScale(Vector3.one * 1.5f, 0.1f).SetEase(Ease.OutCubic).OnComplete(() =>
{
intervalUnitText.transform.DOScale(Vector3.one, 0.5f).SetEase(Ease.OutCubic);
});
}
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using Ichni.RhythmGame;
using UniRx;
using UnityEngine;
@@ -15,7 +16,9 @@ namespace Ichni.Editor
public GameObject timePointerPrefab;
public List<TimePointer> timePointerList;
public List<TimePointer> ActivePointer => timePointerList.FindAll(pointer => pointer.gameObject.activeSelf);
private TimePointer NowPointer;
public RectTransform moveTabPoint;
public RectTransform timePointerContainer;
public RectTransform rightSide;
@@ -38,7 +41,7 @@ namespace Ichni.Editor
{
TimePointer timePointer = Instantiate(timePointerPrefab, timePointerContainer).GetComponent<TimePointer>();
timePointerList.Add(timePointer);
timePointer.time = i * timeline.timePerBeat;
timePointer.intervalUnitText.text = (i * timeline.timePerBeat).ToString("F3");
timePointer.GetComponent<RectTransform>().localPosition = new Vector3(i * timePointerInterval, 0f, 0f);
timePointer.index = i;
@@ -94,5 +97,6 @@ namespace Ichni.Editor
}
}
}
}

View File

@@ -27,7 +27,7 @@ namespace Ichni.Editor
public TimePointerModule timePointerModule;
public MusicPlayModule musicPlayModule;
private TimePointer MarkedPointer;
public TMP_InputField TimeField;
public TMP_InputField BeatField;
@@ -41,6 +41,7 @@ namespace Ichni.Editor
{
DetectSetRange();
DetectPointer();
}
@@ -86,6 +87,71 @@ namespace Ichni.Editor
}
}
}
private void DetectPointer()
{
if (Mouse.current.leftButton.wasPressedThisFrame)
{
foreach (var pointer in timePointerModule.ActivePointer)
{
if (RectTransformUtility.RectangleContainsScreenPoint(pointer.intervalUnitText.GetComponent<RectTransform>(), Mouse.current.position.ReadValue()))
{
GUIUtility.systemCopyBuffer = pointer.intervalUnitText.text;
LogWindow.Log("Copied Time: " + pointer.intervalUnitText.text + " Marked Pointer");
if (MarkedPointer != null) MarkedPointer.intervalUnitText.color = Color.white;
pointer.intervalUnitText.color = Color.yellow;
pointer.PlayAnim();
MarkedPointer = pointer;
}
}
}
if (Mouse.current.rightButton.wasPressedThisFrame)
{
foreach (var pointer in timePointerModule.ActivePointer)
{
if (RectTransformUtility.RectangleContainsScreenPoint(pointer.intervalUnitText.GetComponent<RectTransform>(), Mouse.current.position.ReadValue()))
{
GUIUtility.systemCopyBuffer = Mathf.Abs(pointer.time - MarkedPointer.time).ToString("F3");
LogWindow.Log("Total Time: " + Mathf.Abs(pointer.time - MarkedPointer.time).ToString("F3"));
pointer.PlayAnim();
pointer.intervalUnitText.color = Color.yellow;
pointer.intervalUnitText.DOColor(Color.white, 0.5f);
// 灰色矩形动画效果
if (MarkedPointer != null && pointer != MarkedPointer)
{
var rt1 = pointer.intervalUnitText.GetComponent<RectTransform>();
var rt2 = MarkedPointer.intervalUnitText.GetComponent<RectTransform>();
var parentRect = timePointerModule.timePointerContainer;
// 世界坐标转父级本地坐标
Vector3 localPos1 = parentRect.InverseTransformPoint(rt1.position);
Vector3 localPos2 = parentRect.InverseTransformPoint(rt2.position);
float minX = Mathf.Min(localPos1.x, localPos2.x);
float width = Mathf.Abs(localPos1.x - localPos2.x);
float minY = Mathf.Min(localPos1.y, localPos2.y);
float height = Mathf.Max(rt1.rect.height, rt2.rect.height);
GameObject rectObj = new GameObject("PointerRangeRect", typeof(RectTransform), typeof(Image));
rectObj.transform.SetParent(parentRect, false);
var rectTrans = rectObj.GetComponent<RectTransform>();
var image = rectObj.GetComponent<Image>();
image.color = new Color(1f, 1f, 1f, 0.5f);
rectTrans.anchorMin = new Vector2(0, 0);
rectTrans.anchorMax = new Vector2(0, 0);
rectTrans.pivot = new Vector2(0, 0);
rectTrans.localPosition = new Vector3(minX, minY - (height / 2), 0);
rectTrans.sizeDelta = new Vector2(width, height);
DOTween.ToAlpha(() => image.color, c => image.color = c, 0f, 1f)
.OnComplete(() => Destroy(rectObj));
}
}
}
}
}
private void UpdateTime()
{
TimeField.text = songTime.ToString("F2");

View File

@@ -18,18 +18,7 @@ namespace Ichni.RhythmGame
public void SelectGameElement()
{
if (EditorManager.instance.uiManager.inspector.connectedGameElement == this.elementToSelect)
{
EditorManager.instance.uiManager.hierarchy.FindTab(elementToSelect.parentElement);
}
else
{
EditorManager.instance.uiManager.hierarchy.FindTab(elementToSelect);
}
// EditorManager.instance.operationManager.ClearSelectedElements();
// EditorManager.instance.operationManager.AddSelectElement(elementToSelect);
// EditorManager.instance.uiManager.inspector.SetInspector(elementToSelect);
// EditorManager.instance.timeline.SetTimeLine(elementToSelect);
EditorManager.instance.uiManager.hierarchy.FindTab(elementToSelect);
}
public override void SaveBM()

View File

@@ -92,10 +92,10 @@ namespace Ichni.RhythmGame
public override void SetDefaultSubmodules()
{
base.SetDefaultSubmodules();
noteAudioSubmodule ??= new NoteAudioSubmodule(this, new List<string>(){"DefaultEndHold"},
noteAudioSubmodule ??= new NoteAudioSubmodule(this, new List<string>() { "DefaultEndHold" },
new List<string>(), new List<string>(),
new List<string>(), new List<string>(),
new List<string>(){"DefaultStartHold"});
new List<string>() { "DefaultStartHold" });
}
public override void SaveBM()
@@ -128,6 +128,7 @@ namespace Ichni.RhythmGame
{
effect.effectTime = holdingTime;
});
holdEndTimeInputField.inputField.text = holdEndTime.ToString();
});
inspector.MarkedElements["ExactJudgeTime"].AddListenerFunction(() =>
{

View File

@@ -11,7 +11,7 @@ using UnityEngine;
namespace Ichni.RhythmGame
{
public partial class PathNode : GameElement, IHaveTransformSubmodule, IHaveTimeDurationSubmodule, IHaveColorSubmodule
public partial class PathNode : GameElement, IHaveTransformSubmodule, IHaveTimeDurationSubmodule, IHaveColorSubmodule, IHaveSelectSubmodule
{
public Track track;
public SplinePoint node;
@@ -22,6 +22,9 @@ namespace Ichni.RhythmGame
public bool haveEmissionColor => false;
public override int HierarchyPriority => -100;
public SelectSubmodule selectSubmodule { get; set; }
[Title("Editor独有参数")]
[SerializeField]
[HideInPlayMode]
@@ -47,7 +50,7 @@ namespace Ichni.RhythmGame
{
track.trackPathSubmodule.pathNodeList.Insert(index, pathNode);
}
pathNode.SetEditorSubmodules();
return pathNode;
}
@@ -58,7 +61,10 @@ namespace Ichni.RhythmGame
timeDurationSubmodule = new TimeDurationSubmodule(this);
colorSubmodule = new ColorSubmodule(this);
}
public override void SetEditorSubmodules()
{
selectSubmodule ??= new SelectSubmodule(this, this);
}
public override void AfterInitialize()
{
@@ -119,7 +125,7 @@ namespace Ichni.RhythmGame
var isShowingSphereToggle =
inspector.GenerateToggle(this, pathNodeSettings, "Is Showing Sphere", nameof(isShowingSphere))
.AddListenerFunction(() => SetPathNodeSphere(isShowingSphere));
var generateAnimation = container.GenerateSubcontainer(3);
StandardInspectionElement.GenerateForTransform(this, container);
var generateBaseColorChangeButton = inspector.GenerateButton(this, generateAnimation, "Base Color Change",

View File

@@ -150,7 +150,17 @@ namespace Ichni.RhythmGame
var trackMajorPointSubcontainer = generateContainer.GenerateSubcontainer(3);
var trackPercentPointButton = inspector.GenerateButton(this, trackMajorPointSubcontainer, "Track Percent Point",
() => { TrackPercentPoint.GenerateElement("New Track Percent Point", Guid.NewGuid(), new List<string>(), true, this, new FlexibleFloat()); }); //百分比点
() =>
{
var a = TrackPercentPoint.GenerateElement("New Track Percent Point", Guid.NewGuid(), new List<string>(), true, this, new FlexibleFloat());
//添加默认动画
if (trackTimeSubmodule != null && trackTimeSubmodule is TrackTimeSubmoduleMovable trackTimeSubmoduleMovable)
a.trackPercent.Add(
new AnimatedFloat(trackTimeSubmoduleMovable.trackStartTime, trackTimeSubmoduleMovable.trackEndTime, 0, 1, AnimationCurveType.Linear)); //添加一个默认的动画
}); //百分比点
var trackHeadPointButton = inspector.GenerateButton(this, trackMajorPointSubcontainer, "Track Head Point",
() => { TrackHeadPoint.GenerateElement("New Track Head Point", Guid.NewGuid(), new List<string>(), true, this, false, Vector3.zero); }); //头部点必须先有TrackTimeSubmoduleMovable
if (trackTimeSubmodule is not TrackTimeSubmoduleMovable) trackHeadPointButton.button.interactable = false;

View File

@@ -22,8 +22,6 @@ namespace Ichni.RhythmGame
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
private bool isBeyond1 = false;
public bool MotionAngles = false;
public static TrackPercentPoint GenerateElement(string elementName, Guid id, List<string> tags,
@@ -39,17 +37,6 @@ namespace Ichni.RhythmGame
point.trackPositioner.spline = track.trackPathSubmodule.path;
point.trackPercent = trackPercent;
point.isBeyond1 = trackPercent.animations.Any(animation => animation.endValue > 1); //判断是否有超过1的动画超过1将会循环
//添加默认动画
if (isFirstGenerated && point.parentElement is Track track1 && track1.submoduleList.Where(submodule => submodule is TrackTimeSubmoduleMovable).Count() == 1)
{
TrackTimeSubmoduleMovable trackTimeSubmoduleMovable = track1.submoduleList.Where(submodule => submodule is TrackTimeSubmoduleMovable).FirstOrDefault() as TrackTimeSubmoduleMovable;
point.trackPercent.Add(
new AnimatedFloat(trackTimeSubmoduleMovable.trackStartTime, trackTimeSubmoduleMovable.trackEndTime, 0, 1, AnimationCurveType.Linear)); //添加一个默认的动画
}
point.trackPositioner.motion.rotationOffset = Vector3.zero;
point.trackPositioner.motion.applyRotation = false;
@@ -69,11 +56,8 @@ namespace Ichni.RhythmGame
if (trackPercent.returnType == FlexibleReturnType.MiddleExecuting)
{
float finalValue = trackPercent.value;
if (finalValue > 1 && finalValue > Mathf.Floor(finalValue)) finalValue -= Mathf.Floor(finalValue);
if (isBeyond1)
{
finalValue -= Mathf.Floor(finalValue);
}
trackPositioner.SetPercent(finalValue);
}
@@ -118,8 +102,8 @@ namespace Ichni.RhythmGame
var generateParticleEmitterButton = inspector.GenerateButton(this, generation, "Generate Particle Emitter", () =>
{
ParticleEmitter.GenerateElement("New Particle Emitter", Guid.NewGuid(), new List<string>(), true,
this, "", "",false,0, 1, ParticleSystemSimulationSpace.World,
10, 5, 1, 1 ,true, Vector3.zero);
this, "", "", false, 0, 1, ParticleSystemSimulationSpace.World,
10, 5, 1, 1, true, Vector3.zero);
});
}

View File

@@ -2,6 +2,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using DG.Tweening;
using Ichni;
using Ichni.Editor;
using Ichni.RhythmGame;
@@ -78,7 +79,10 @@ public partial class GraphicalFlexibleFloatWindow : MovableWindow
{
ApplyParameters();
//StartCoroutine(WindowAnim.HidePanel(gameObject, true));
Destroy(gameObject);
this.transform.DOScale(Vector3.zero, 0.15f).SetEase(Ease.InCirc).OnComplete(() =>
{
Destroy(gameObject);
});
}
public float scalevalue;
public void CurveScale(string Rawvalue)
@@ -203,9 +207,12 @@ public partial class GraphicalFlexibleFloatWindow
RemoveConnectedPoint();
}
if (Keyboard.current.shiftKey.isPressed && Keyboard.current.vKey.wasPressedThisFrame)
if (Keyboard.current.shiftKey.isPressed)
{
PasteClipboard();
if (Keyboard.current.vKey.wasPressedThisFrame)
PasteClipboard(1f);
else if (Keyboard.current.bKey.wasPressedThisFrame)
PasteClipboard(-1f);
}
if (Keyboard.current.escapeKey.wasPressedThisFrame)
{
@@ -220,6 +227,7 @@ public partial class GraphicalFlexibleFloatWindow
j.LeftSide.sizeDelta = new Vector2(15, j.EvDrawimage.rectTransform.sizeDelta.y);
}
}
updateClipBoardMuM();
}
if (ConnectedPoint != null && RectTransformUtility.RectangleContainsScreenPoint(GetComponent<RectTransform>(), Mouse.current.position.ReadValue()))
{
@@ -257,7 +265,7 @@ public partial class GraphicalFlexibleFloatWindow
}
public void PasteClipboard()
public void PasteClipboard(float valuescale = 1f)
{
// 获取当前时间线的节拍位置
float time = unitList[0].GetBeat();
@@ -279,7 +287,8 @@ public partial class GraphicalFlexibleFloatWindow
{
// 克隆动画数据并应用时间偏移
AnimatedFloat newFloat = EventPoint.CloneWithOffset(animatedFloat, time - MinCopyTime);
newFloat.startValue *= valuescale;
newFloat.endValue *= valuescale;
// 在对应的 FlexibleFloatTab 中生成事件点
unitList.Find(x => x.Title == key).SpawnEvent(newFloat);
}

View File

@@ -67,7 +67,7 @@ namespace Ichni.Editor
Vector2 mousePosition = Mouse.current.position.ReadValue();
Ray ray = editorCamera.ScreenPointToRay(mousePosition);
if (Physics.Raycast(ray, out RaycastHit hit, float.MaxValue, LayerMask.GetMask("Default")))
if (Physics.Raycast(ray, out RaycastHit hit, float.MaxValue, LayerMask.GetMask("Selectable")))
{
if (hit.collider == colliderX)
{

View File

@@ -43,7 +43,7 @@ public class NotefabContoler : MonoBehaviour
}
public void Update()
{
if (RectTransformUtility.RectangleContainsScreenPoint(this.GetComponent<RectTransform>(), Mouse.current.position.ReadValue()))
if (sampleWindow.isExpand && RectTransformUtility.RectangleContainsScreenPoint(this.GetComponent<RectTransform>(), Mouse.current.position.ReadValue()))
{
if (Mouse.current.leftButton.wasPressedThisFrame)
{

View File

@@ -20,6 +20,8 @@ namespace Ichni.Editor
public GameObject hoveredUI;
public EventSystem eventSystem;
public List<GraphicRaycaster> graphicRaycasters;
private List<SelectionConnector> lastHitConnectors = new List<SelectionConnector>();
private int currentSelectIndex = 0;
private void Awake()
{
@@ -260,15 +262,31 @@ namespace Ichni.Editor
private void ClickSelectElement()
{
if (Mouse.current.leftButton.wasPressedThisFrame && !isPointerOverUI)
{
Vector2 mousePosition = Mouse.current.position.ReadValue();
Ray ray = EditorManager.instance.cameraManager.currentCamera.ScreenPointToRay(mousePosition);
if (Physics.Raycast(ray, out RaycastHit hit, float.MaxValue, LayerMask.GetMask("Selectable")))
RaycastHit[] hits = Physics.RaycastAll(ray, 500f, LayerMask.GetMask("Selectable"));
var hitConnectors = hits
.Select(hit => hit.collider.GetComponent<SelectionConnector>())
.Where(connector => connector != null)
.ToList();
if (hitConnectors.Count == 0) return;
// 如果点击对象列表变化,重置索引
if (!Enumerable.SequenceEqual(hitConnectors, lastHitConnectors))
{
SelectionConnector connector = hit.collider.GetComponent<SelectionConnector>();//TODO: 对于Hold这种复杂的元素需要使用连接脚本进行获取
(connector.connectedGameElement as IHaveSelectSubmodule)?.selectSubmodule.SelectGameElement();
lastHitConnectors = hitConnectors;
currentSelectIndex = 0;
}
var connector = lastHitConnectors[currentSelectIndex];
(connector.connectedGameElement as IHaveSelectSubmodule)?.selectSubmodule.SelectGameElement();
currentSelectIndex = (currentSelectIndex + 1) % lastHitConnectors.Count;
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3f85d2b6703d7644bb36ee4814c36f5b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 5b0c28a9a3a4665449562bf151644ca6
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0d013f5aeb1e0f641a04f18227d4af14
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e851f104723c1c94cab5857310957aa2
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 7826dab11dde58e47b0503461b7ddceb
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 61dd20aa4a2505242889b56206148582
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -55,7 +55,7 @@
]
},
"trackPercent" : {
"value" : 0,
"value" : 0.005243696,
"currentAnimationIndex" : 0,
"animations" : [
{
@@ -78307,6 +78307,167 @@
"attachedElementGuid" : {
"value" : "84012862-3b8c-4ac7-b880-d4855a557118"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp",
"elementName" : "Folder",
"tags" : [
],
"elementGuid" : {
"value" : "8e2f590b-87c2-40b7-8c20-7dc26de8b774"
},
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "8e2f590b-87c2-40b7-8c20-7dc26de8b774"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "8e2f590b-87c2-40b7-8c20-7dc26de8b774"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeEffectsCollection_BM,Assembly-CSharp",
"time" : 0,
"elementName" : "New Time Effects Collection",
"tags" : [
],
"elementGuid" : {
"value" : "7157a11a-c0c3-4b87-ae57-ef3210163571"
},
"attachedElementGuid" : {
"value" : "8e2f590b-87c2-40b7-8c20-7dc26de8b774"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "7157a11a-c0c3-4b87-ae57-ef3210163571"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.EffectSubmodule_BM,Assembly-CSharp",
"effectCollection" : {"Prior":[
],"Default":[
],"Late":[
]
},
"attachedElementGuid" : {
"value" : "7157a11a-c0c3-4b87-ae57-ef3210163571"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ParticleEmitter_BM,Assembly-CSharp",
"prewarm" : false,
"playTime" : 0,
"stopTime" : 1,
"simulationSpace" : 1,
"density" : 10,
"lifeTime" : 5,
"speed" : 1,
"radius" : 1,
"isAutoOrient" : true,
"particleRotation" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"materialThemeBundleName" : "",
"materialName" : "",
"elementName" : "New Particle Emitter",
"tags" : [
],
"elementGuid" : {
"value" : "2b3ba82d-0758-4da5-bffc-4b719cfb81e1"
},
"attachedElementGuid" : {
"value" : "8e2f590b-87c2-40b7-8c20-7dc26de8b774"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "2b3ba82d-0758-4da5-bffc-4b719cfb81e1"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "2b3ba82d-0758-4da5-bffc-4b719cfb81e1"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : true,
"originalEmissionColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "2b3ba82d-0758-4da5-bffc-4b719cfb81e1"
}
}
],
"attachedElementGuid" : {

View File

@@ -70,7 +70,7 @@
]
},
"trackPercent" : {
"value" : 0.05883333,
"value" : 0.415374637,
"currentAnimationIndex" : 0,
"animations" : [
{
@@ -35345,6 +35345,465 @@
"attachedElementGuid" : {
"value" : "e0d07c25-8139-400f-88d7-bc7008fd11f3"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ElementFolder_BM,Assembly-CSharp",
"elementName" : "Folder",
"tags" : [
],
"elementGuid" : {
"value" : "eade24ad-5605-47ef-aad5-554060709a42"
},
"attachedElementGuid" : {
"value" : "00000000-0000-0000-0000-000000000000"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "eade24ad-5605-47ef-aad5-554060709a42"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "eade24ad-5605-47ef-aad5-554060709a42"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.Track_BM,Assembly-CSharp",
"elementName" : "New Track",
"tags" : [
],
"elementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
},
"attachedElementGuid" : {
"value" : "eade24ad-5605-47ef-aad5-554060709a42"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPathSubmodule_BM,Assembly-CSharp",
"trackSpaceType" : 0,
"trackSamplingType" : 0,
"isClosed" : true,
"isShowingDisplay" : false,
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackRendererSubmodulePathGenerator_BM,Assembly-CSharp",
"materialThemeBundleName" : "",
"materialName" : "",
"enableEmission" : false,
"emissionIntensity" : 0,
"zWrite" : true,
"uvScale" : {
"x" : 1,
"y" : 1
},
"uvOffset" : {
"x" : 0,
"y" : 0
},
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "bd365e83-baa0-4f09-83e7-9e57072c0ab8"
},
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 5
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "bd365e83-baa0-4f09-83e7-9e57072c0ab8"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "bd365e83-baa0-4f09-83e7-9e57072c0ab8"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "bd365e83-baa0-4f09-83e7-9e57072c0ab8"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "54cf724d-c5a0-4b98-b346-7e7db1bfe0ce"
},
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 5,
"y" : 0,
"z" : 5
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "54cf724d-c5a0-4b98-b346-7e7db1bfe0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "54cf724d-c5a0-4b98-b346-7e7db1bfe0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "54cf724d-c5a0-4b98-b346-7e7db1bfe0ce"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "782594bc-26ba-492b-acd3-2275e97620bd"
},
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 5,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "782594bc-26ba-492b-acd3-2275e97620bd"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "782594bc-26ba-492b-acd3-2275e97620bd"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "782594bc-26ba-492b-acd3-2275e97620bd"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
"isShowingSphere" : true,
"elementName" : "New Path Node",
"tags" : [
],
"elementGuid" : {
"value" : "fbe2c0df-6a40-4706-a391-a07b3100d792"
},
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "fbe2c0df-6a40-4706-a391-a07b3100d792"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "fbe2c0df-6a40-4706-a391-a07b3100d792"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "fbe2c0df-6a40-4706-a391-a07b3100d792"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TrackPercentPoint_BM,Assembly-CSharp",
"trackPercent" : {
"animatedFloatList" : [
{
"startValue" : 0,
"endValue" : 1,
"startTime" : 0.3529412,
"endTime" : 3.276471,
"animationCurveType" : 26
},{
"startValue" : 1,
"endValue" : 0,
"startTime" : 3.529412,
"endTime" : 3.882353,
"animationCurveType" : 8
},{
"startValue" : 0,
"endValue" : 15,
"startTime" : 4.235294,
"endTime" : 7.058824,
"animationCurveType" : 8
},{
"startValue" : 15,
"endValue" : 0,
"startTime" : 7.411765,
"endTime" : 7.764706,
"animationCurveType" : 8
}
]
},
"MotionAngles" : false,
"elementName" : "New Track Percent Point",
"tags" : [
],
"elementGuid" : {
"value" : "6f9b2f46-f9d8-4711-89d8-d93a3fd9938f"
},
"attachedElementGuid" : {
"value" : "00bd6046-2a4b-4de1-9c31-cef265cff557"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "6f9b2f46-f9d8-4711-89d8-d93a3fd9938f"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.EnvironmentObject_BM,Assembly-CSharp",
"isStatic" : false,
"themeBundleName" : "basic",
"objectName" : "Cube",
"elementName" : "New Environment Object",
"tags" : [
],
"elementGuid" : {
"value" : "45efb473-facb-4bd0-88c6-83a7909d37f9"
},
"attachedElementGuid" : {
"value" : "6f9b2f46-f9d8-4711-89d8-d93a3fd9938f"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TransformSubmodule_BM,Assembly-CSharp",
"originalPosition" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalEulerAngles" : {
"x" : 0,
"y" : 0,
"z" : 0
},
"originalScale" : {
"x" : 1,
"y" : 1,
"z" : 1
},
"attachedElementGuid" : {
"value" : "45efb473-facb-4bd0-88c6-83a7909d37f9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
"isOverridingDuration" : false,
"startTime" : -32767,
"endTime" : 32767,
"attachedElementGuid" : {
"value" : "45efb473-facb-4bd0-88c6-83a7909d37f9"
}
},{
"__type" : "Ichni.RhythmGame.Beatmap.ColorSubmodule_BM,Assembly-CSharp",
"originalBaseColor" : {
"r" : 1,
"g" : 1,
"b" : 1,
"a" : 1
},
"emissionEnabled" : false,
"originalEmissionColor" : {
"r" : 0,
"g" : 0,
"b" : 0,
"a" : 1
},
"originalEmissionIntensity" : 0,
"attachedElementGuid" : {
"value" : "45efb473-facb-4bd0-88c6-83a7909d37f9"
}
}
],
"attachedElementGuid" : {

File diff suppressed because one or more lines are too long