This commit is contained in:
SoulliesOfficial
2026-03-18 13:42:23 -04:00
parent 7580c4d87c
commit 56cee0cf01
38 changed files with 1156 additions and 3392 deletions

View File

@@ -0,0 +1,43 @@
---
name: unity-tech-art
description: 首席技术美术专员 (Technical Artist)。专精于 Unity 6 (URP 17+) 及 Render Graph API。负责开发高性能的 HLSL 纯代码 Shader以及编写高级 URP 管线扩展(如 PCSS软阴影、高级卡通渲染、Toon Bloom 等)。具备防呆提问机制与自主知识库管理能力。
---
# 首席技术美术专员 (Principal Technical Artist)
## 核心定位
你是一位精通图形学底层与现代二次元动作游戏渲染管线的顶级 Unity 技术美术 (TA)。你崇尚“代码即控制力”,**完全聚焦于 Unity 6 的 Render Graph 架构**。你的核心任务是通过编写高性能的 ShaderLab/HLSL 源码,结合最新的 Render Graph API 深度定制 URP实现主机级的光影与高级 NPR非真实感卡通渲染表现。
## 强制防呆提问机制 (QA Gate)
**【最高优先级规则】**:在接收到任何新的渲染或 Shader 开发需求时,**绝不允许直接开始写代码**。
1. 检查用户是否提供了**【目标平台与性能预算】**。
2. 如果未提供,立即暂停并提问:“在开始编写 Shader 或 Render Graph 扩展前请告知本次特性的目标运行平台及性能预期以便我决定精度half vs float及 Render Pass 的资源生命周期规划。”
## 通用底层系统原则 (Base OS)
1. **知识库自主管理 (Knowledge Base Management)**
- 专属知识库存放于 `knowledge/` 文件夹中,同步更新 `knowledge/INDEX.md`
- 在学习新的 Unity 6 渲染机制或高阶算法(如 SSGI、Cluster 光照必须提炼为【算法原理】、【HLSL实现】、【Render Graph 构建逻辑】。
2. **I/O 工作流与代码产出规则**
- 默认输出 Markdown 代码块;接到明确指令时,可通过 bash 将文件写入本地路径。
## 核心专业技能 (Core Technical Capabilities)
### 1. 极致二次元与高级光影表现 (NPR & High-End Lighting)
- **高级卡通渲染 (Advanced Toon Rendering)**:精通开发适用于高速 3D 动作游戏的 NPR 材质体系。熟练处理角色专属的面部平滑法线Smoothed Normals、多光源下的色带阶跃Cel-shading Steps、以及高对比度的边缘高光Rim Light确保在快速运镜下角色的绝对辨识度。
- **光影魔改 (Lighting Modding)**:熟练通过自定义 HLSL 库或 Inject Pass 的方式,实现 PCSS百分比靠近软阴影、深度边缘检测描边以及基于全屏的极速后处理特效。
### 2. Unity 6 Render Graph 管线扩展 (Modern URP Extension)
- **强制 API 规范**:严禁使用旧版 `CommandBuffer.Blit` 或废弃的渲染接口。所有管线扩展必须基于 Unity 6 的 **Render Graph API** 编写。
- 熟练编写继承自 `ScriptableRendererFeature` 的扩展类。
- 精通使用 `RenderGraph.AddRenderPass`、声明 `RasterRenderPassBuilder``ComputeRenderPassBuilder`,并准确管理 `TextureHandle` 的内存生命周期,绝不引起内存泄漏。
### 3. 纯代码优先与节点转化 (Code-First & Graph Translation)
- **代码转化器**:当接收到 Shader Graph 或 ASE 截图/逻辑时,能够剔除冗余,翻译为极其干净、手写、易于维护的纯 HLSL/ShaderLab 源码。
- 严格控制 Fragment Shader 中的指令树与浮点精度,重度使用 `half` 优化移动端/中端 PC 的带宽。
## 示例 (Examples)
**用户输入**: "我们要实现一个带有角色高光和边缘光的 NPR Shader并且加一个环境空间的 PCSS 软阴影。目标是 PC 端。请给出纯代码方案和必要的管线注入 C# 脚本。"
**你的预期执行**:
1. 确认平台性能充裕,可采用高采样率的 PCSS 算法。
2. 输出优化后的 `.shader` 源码,包含对 URP 主光及附加光源的衰减魔改,实现二次元卡通阶跃。
3. 输出配套的 `PCSSShadowRendererFeature.cs`,严格使用 Unity 6 的 Render Graph API 分配临时阴影贴图并调度执行逻辑。

9
.gitattributes vendored
View File

@@ -1,3 +1,8 @@
*.png filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.asset filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text

View File

@@ -213,7 +213,7 @@ Material:
- _Dst: 10
- _DstBlend: 0
- _DstBlendAlpha: 0
- _EdgeValue: 0.30905974
- _EdgeValue: 0.12679087
- _EnvironmentReflections: 1
- _FNLfanxiangkaiguan: 0
- _Face: 1
@@ -258,7 +258,7 @@ Material:
- _Mask_scale: 1
- _Metallic: 0
- _OcclusionStrength: 1
- _Opacity: 0.69094026
- _Opacity: 0.8732091
- _Parallax: 0.005
- _Pass: 0
- _QueueOffset: 0

View File

@@ -3156,6 +3156,76 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 340068461}
m_CullTransparentMesh: 1
--- !u!21 &345063865
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Override
m_Shader: {fileID: 4800000, guid: a3a3bc8785681554d9558e2ea68f100e, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _AdvancedCat: 1
- _Banner: 1
- _DirectionalCat: 1
- _DirectionalFalloff: 2
- _DirectionalIntensity: 1
- _FarDistanceHeight: 0
- _FarDistanceOffset: 0
- _FogAxisMode: 1
- _FogCameraMode: 0
- _FogCat: 1
- _FogColorDuo: 1
- _FogDistanceEnd: 100
- _FogDistanceFalloff: 2
- _FogDistanceStart: 0
- _FogHeightEnd: 100
- _FogHeightFalloff: 2
- _FogHeightStart: 0
- _FogIntensity: 1
- _FogLayersMode: 0
- _IsHeightFogPreset: 1
- _IsHeightFogShader: 1
- _JitterIntensity: 1
- _NoiseCat: 1
- _NoiseDistanceEnd: 50
- _NoiseIntensity: 1
- _NoiseMax: 1
- _NoiseMin: 0
- _NoiseModeBlend: 1
- _NoiseScale: 30
- _SkyboxCat: 1
- _SkyboxFogBottom: 0
- _SkyboxFogFalloff: 1
- _SkyboxFogFill: 1
- _SkyboxFogHeight: 1
- _SkyboxFogIntensity: 1
- _SkyboxFogOffset: 0
m_Colors:
- _DirectionalColor: {r: 1, g: 0.7793103, b: 0.5, a: 1}
- _DirectionalDir: {r: 0, g: 0, b: 0, a: 0}
- _FogAxisOption: {r: 0, g: 0, b: 0, a: 0}
- _FogColorEnd: {r: 0.8862745, g: 1.443137, b: 2, a: 1}
- _FogColorStart: {r: 0.4411765, g: 0.722515, b: 1, a: 1}
- _NoiseSpeed: {r: 0.5, g: 0, b: 0.5, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!1 &354327107
GameObject:
m_ObjectHideFlags: 0
@@ -4401,6 +4471,59 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 499957285}
m_CullTransparentMesh: 1
--- !u!21 &506240100
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Height Fog Global
m_Shader: {fileID: 4800000, guid: 3a7ef1b66bafb7a448a880ef76d2e6e6, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords:
- _RECEIVESHADOWS_OFF
- _SURFACE_TYPE_TRANSPARENT
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- 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:
- _AddPrecomputedVelocity: 1
- _AlphaCutoff: 0.5
- _Banner: 1
- _FogCameraMode: 0
- _HeightFogGlobal: 1
- _IsHeightFogShader: 1
- _QueueControl: -1
- _QueueOffset: 0
- _ReceiveShadows: 0
- _XRMotionVectorsPass: 1
m_Colors:
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!1 &509046553
GameObject:
m_ObjectHideFlags: 0
@@ -10248,76 +10371,6 @@ RectTransform:
m_AnchoredPosition: {x: 250, y: 200}
m_SizeDelta: {x: 500, y: 400}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!21 &1183351825
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Override
m_Shader: {fileID: 4800000, guid: a3a3bc8785681554d9558e2ea68f100e, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _AdvancedCat: 1
- _Banner: 1
- _DirectionalCat: 1
- _DirectionalFalloff: 2
- _DirectionalIntensity: 1
- _FarDistanceHeight: 0
- _FarDistanceOffset: 0
- _FogAxisMode: 1
- _FogCameraMode: 0
- _FogCat: 1
- _FogColorDuo: 1
- _FogDistanceEnd: 100
- _FogDistanceFalloff: 2
- _FogDistanceStart: 0
- _FogHeightEnd: 100
- _FogHeightFalloff: 2
- _FogHeightStart: 0
- _FogIntensity: 1
- _FogLayersMode: 0
- _IsHeightFogPreset: 1
- _IsHeightFogShader: 1
- _JitterIntensity: 1
- _NoiseCat: 1
- _NoiseDistanceEnd: 50
- _NoiseIntensity: 1
- _NoiseMax: 1
- _NoiseMin: 0
- _NoiseModeBlend: 1
- _NoiseScale: 30
- _SkyboxCat: 1
- _SkyboxFogBottom: 0
- _SkyboxFogFalloff: 1
- _SkyboxFogFill: 1
- _SkyboxFogHeight: 1
- _SkyboxFogIntensity: 1
- _SkyboxFogOffset: 0
m_Colors:
- _DirectionalColor: {r: 1, g: 0.7793103, b: 0.5, a: 1}
- _DirectionalDir: {r: 0, g: 0, b: 0, a: 0}
- _FogAxisOption: {r: 0, g: 0, b: 0, a: 0}
- _FogColorEnd: {r: 0.8862745, g: 1.443137, b: 2, a: 1}
- _FogColorStart: {r: 0.4411765, g: 0.722515, b: 1, a: 1}
- _NoiseSpeed: {r: 0.5, g: 0, b: 0.5, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!1 &1196244857
GameObject:
m_ObjectHideFlags: 0
@@ -16640,13 +16693,14 @@ GameObject:
- component: {fileID: 1798257352}
- component: {fileID: 1798257351}
- component: {fileID: 1798257350}
- component: {fileID: 1798257354}
m_Layer: 0
m_Name: Height Fog Global
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!114 &1798257350
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -16712,7 +16766,7 @@ MonoBehaviour:
renderPriority: 1
manualPositionAndScale: 0
styledSpace0: 0
overrideMaterial: {fileID: 1183351825}
overrideMaterial: {fileID: 345063865}
overrideCamToVolumeDistance: 1
overrideVolumeDistanceFade: 0
version: 0
@@ -16731,7 +16785,7 @@ MeshRenderer:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1798257349}
m_Enabled: 0
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 1
m_DynamicOccludee: 1
@@ -16749,7 +16803,7 @@ MeshRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2102650505}
- {fileID: 506240100}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -16783,11 +16837,134 @@ Transform:
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_LocalScale: {x: 1000, y: 1000, z: 1000}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1798257354
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1798257349}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: e8bab02f6d349f6418ccfe0674b93013, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::DTMGlobalFog
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}
childElementList: []
themeBundleName:
objectName:
isStatic: 0
heightFogGlobal: {fileID: 0}
fogColorStartR:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
fogColorStartG:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
fogColorStartB:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
fogColorStartA:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
fogColorEndR:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
fogColorEndG:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
fogColorEndB:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
fogColorEndA:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
fogColorDuo:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
skyboxFogIntensity:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
skyboxFogHeight:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
skyboxFogFalloff:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
skyboxFogOffset:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
--- !u!1 &1801106072
GameObject:
m_ObjectHideFlags: 0
@@ -20136,59 +20313,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2098988181}
m_CullTransparentMesh: 1
--- !u!21 &2102650505
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Height Fog Global
m_Shader: {fileID: 4800000, guid: 3a7ef1b66bafb7a448a880ef76d2e6e6, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords:
- _RECEIVESHADOWS_OFF
- _SURFACE_TYPE_TRANSPARENT
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- 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:
- _AddPrecomputedVelocity: 1
- _AlphaCutoff: 0.5
- _Banner: 1
- _FogCameraMode: 0
- _HeightFogGlobal: 1
- _IsHeightFogShader: 1
- _QueueControl: -1
- _QueueOffset: 0
- _ReceiveShadows: 0
- _XRMotionVectorsPass: 1
m_Colors:
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
m_BuildTextureStacks: []
m_AllowLocking: 1
--- !u!1 &2106034325
GameObject:
m_ObjectHideFlags: 0

View File

@@ -5701,87 +5701,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 41fab833db1ccee4d95a84b1d56da81c, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &536319313
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 536319314}
- component: {fileID: 536319315}
m_Layer: 0
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &536319314
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 536319313}
serializedVersion: 2
m_LocalRotation: {x: 0.000007383292, y: -0.20432918, z: -0.00003537195, w: 0.9789022}
m_LocalPosition: {x: -4.1613183, y: 0, z: -2.0971782}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1434772400}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &536319315
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 536319313}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6150424209395469db7104ccaa18bffd, 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: 1434772399}
childElementList: []
track: {fileID: 1434772399}
trackPercent:
value: 0
animations: []
isSwitchingReturnType: 0
lastReturnType: 0
returnType: 0
trackPositioner: {fileID: 0}
--- !u!1 &568494915
GameObject:
m_ObjectHideFlags: 0
@@ -14821,6 +14740,95 @@ MonoBehaviour:
mGUI_ShowCallback: 0
mLocalizeTarget: {fileID: 1568404963}
mLocalizeTargetName: I2.Loc.LocalizeTarget_TextMeshPro_UGUI
--- !u!1001 &1279533325
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 0}
m_Modifications:
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalScale.x
value: 100
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalScale.z
value: 100
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalPosition.x
value: -740
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalPosition.y
value: -46.517853
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalPosition.z
value: 74.851295
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5365034608843891105, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8220859051912764878, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_Name
value: FramesPlaneIndigo
objectReference: {fileID: 0}
- target: {fileID: 8220859051912764878, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: m_IsActive
value: 0
objectReference: {fileID: 0}
- target: {fileID: 8823166546278708317, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
propertyPath: serializationData.Prefab
value:
objectReference: {fileID: 8823166546278708317, guid: 3d0f2c82e1126e44382d4dc21bc57ee2,
type: 3}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 3d0f2c82e1126e44382d4dc21bc57ee2, type: 3}
--- !u!1 &1283588606
GameObject:
m_ObjectHideFlags: 0
@@ -16163,433 +16171,6 @@ CanvasGroup:
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!1 &1434772393
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1434772400}
- component: {fileID: 1434772399}
- component: {fileID: 1434772398}
- component: {fileID: 1434772397}
- component: {fileID: 1434772401}
- component: {fileID: 1434772402}
m_Layer: 0
m_Name: GameObject (1)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!114 &1434772397
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1434772393}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: dab5c7d4c32e743048dfca98e2d5914f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &1434772398
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1434772393}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cb219b23cdf4b314f94a27bca3cc8012, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &1434772399
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1434772393}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8d2b6af5deaa046ff89ed3c74bb2ffdc, type: 3}
m_Name:
m_EditorClassIdentifier:
serializationData:
SerializedFormat: 2
SerializedBytes:
ReferencedUnityObjects:
- {fileID: 1434772399}
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: 3
- Name:
Entry: 7
Data: 1|Ichni.RhythmGame.TransformSubmodule, Assembly-CSharp
- Name: attachedGameElement
Entry: 10
Data: 0
- Name: originalPosition
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 8
Data:
- Name: originalEulerAngles
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 8
Data:
- Name: originalScale
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 1
- Name:
Entry: 4
Data: 1
- Name:
Entry: 4
Data: 1
- Name:
Entry: 8
Data:
- Name: positionOffset
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 8
Data:
- Name: eulerAnglesOffset
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 8
Data:
- Name: scaleOffset
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 8
Data:
- Name: currentPosition
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 8
Data:
- Name: currentEulerAngles
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 4
Data: 0
- Name:
Entry: 8
Data:
- Name: currentScale
Entry: 7
Data: UnityEngine.Vector3, UnityEngine.CoreModule
- Name:
Entry: 4
Data: 1
- Name:
Entry: 4
Data: 1
- Name:
Entry: 4
Data: 1
- Name:
Entry: 8
Data:
- Name: positionDirtyMark
Entry: 5
Data: true
- Name: eulerAnglesDirtyMark
Entry: 5
Data: true
- Name: scaleDirtyMark
Entry: 5
Data: true
- Name: eulerAnglesOffsetLock
Entry: 5
Data: false
- Name: observer
Entry: 7
Data: 2|UniRx.SingleAssignmentDisposable, UniRx
- Name:
Entry: 8
Data:
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 3|Ichni.RhythmGame.TimeDurationSubmodule, Assembly-CSharp
- Name: attachedGameElement
Entry: 10
Data: 0
- Name: isOverridingDuration
Entry: 5
Data: false
- Name: startTime
Entry: 4
Data: -32767
- Name: endTime
Entry: 4
Data: 32767
- Name:
Entry: 8
Data:
- Name:
Entry: 7
Data: 4|Ichni.RhythmGame.TrackPathSubmodule, Assembly-CSharp
- Name: attachedGameElement
Entry: 10
Data: 0
- Name: track
Entry: 10
Data: 0
- Name: path
Entry: 6
Data:
- Name: pathNodeList
Entry: 7
Data: 5|System.Collections.Generic.List`1[[Ichni.RhythmGame.PathNode, Assembly-CSharp]],
mscorlib
- Name:
Entry: 12
Data: 0
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
- Name: trackSpaceType
Entry: 3
Data: 0
- Name: trackSamplingType
Entry: 3
Data: 0
- Name: isClosed
Entry: 5
Data: true
- Name: isShowingDisplay
Entry: 5
Data: false
- Name: refreshedThisFrame
Entry: 5
Data: false
- Name:
Entry: 8
Data:
- Name:
Entry: 13
Data:
- Name:
Entry: 8
Data:
elementName:
tags: []
parentElement: {fileID: 0}
childElementList: []
trackRenderer: {fileID: 0}
--- !u!4 &1434772400
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1434772393}
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: 536319314}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1434772401
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1434772393}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 598e68924c9f6324bbfd049d3bae754c, type: 3}
m_Name:
m_EditorClassIdentifier:
editorDrawPivot: 1
editorPathColor: {r: 1, g: 1, b: 1, a: 1}
editorAlwaysDraw: 0
editorDrawThickness: 0
editorBillboardThickness: 1
isNewlyCreated: 0
editorUpdateMode: 0
multithreaded: 0
updateMode: 2
triggerGroups: []
_spline:
points: []
type: 0
linearAverageDirection: 1
customValueInterpolation:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
customNormalInterpolation:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
sampleRate: 16
closed: 0
_knotParametrization: 0
_originalSamplePercents: []
_is2D: 0
hasSamples: 0
_optimizeAngleThreshold: 0.5
_space: 1
_sampleMode: 0
_subscribers: []
_rawSamples: []
_nodes: []
--- !u!114 &1434772402
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1434772393}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 598e68924c9f6324bbfd049d3bae754c, type: 3}
m_Name:
m_EditorClassIdentifier:
editorDrawPivot: 1
editorPathColor: {r: 1, g: 1, b: 1, a: 1}
editorAlwaysDraw: 0
editorDrawThickness: 0
editorBillboardThickness: 1
isNewlyCreated: 0
editorUpdateMode: 0
multithreaded: 0
updateMode: 2
triggerGroups: []
_spline:
points: []
type: 0
linearAverageDirection: 1
customValueInterpolation:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
customNormalInterpolation:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
sampleRate: 16
closed: 0
_knotParametrization: 0
_originalSamplePercents: []
_is2D: 0
hasSamples: 0
_optimizeAngleThreshold: 0.5
_space: 1
_sampleMode: 0
_subscribers: []
_rawSamples: []
_nodes: []
--- !u!1 &1440676912
GameObject:
m_ObjectHideFlags: 0
@@ -17449,250 +17030,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1492554504}
m_CullTransparentMesh: 1
--- !u!1 &1504374241
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1504374244}
- component: {fileID: 1504374243}
- component: {fileID: 1504374242}
m_Layer: 0
m_Name: GameObject
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!114 &1504374242
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1504374241}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: acb0592a986cebb4287d41702ab6ea22, type: 3}
m_Name:
m_EditorClassIdentifier:
updateMethod: 0
_spline: {fileID: 1504374243}
_autoUpdate: 1
_rotationModifier:
blend: 1
useClippedPercent: 0
keys: []
_offsetModifier:
blend: 1
useClippedPercent: 0
keys: []
_colorModifier:
blend: 1
useClippedPercent: 0
keys: []
_sizeModifier:
blend: 1
useClippedPercent: 0
keys: []
_clipFromSample:
position: {x: 1.9664593, y: 0, z: 228.98975}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360255}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0
_clipToSample:
position: {x: 32.22073, y: 0, z: 234.96}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360253}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 1
_loopSamples: 0
_clipFrom: 0
_clipTo: 1
animClipFrom: 0
animClipTo: 1
multithreaded: 0
buildOnAwake: 1
buildOnEnable: 0
objects:
- {fileID: 5319423730886709430, guid: 92e2ddcb3cdd78544bef993272068d31, type: 3}
_evaluateOffset: 0
_spawnMethod: 0
_spawnCount: 0
_retainPrefabInstancesInEditor: 1
_objectPositioning: 0
_iteration: 0
_randomSeed: 1
_minOffset: {x: -2, y: -2, z: 0}
_maxOffset: {x: 2, y: 2, z: 0}
_offsetUseWorldCoords: 0
_minRotation: {x: 0, y: 0, z: 0}
_maxRotation: {x: 0, y: 0, z: 0}
_uniformScaleLerp: 1
_minScaleMultiplier: {x: 1, y: 1, z: 1}
_maxScaleMultiplier: {x: 1, y: 1, z: 1}
_shellOffset: 0
_applyRotation: 1
_rotateByOffset: 0
_applyScale: 0
_objectMethod: 0
delayedSpawn: 0
spawnDelay: 0.1
lastChildCount: 0
lastPointCount: 0
spawned: []
_useCustomObjectDistance: 0
_minObjectDistance: 0
_maxObjectDistance: 0
_customOffsetRule: {fileID: 0}
_customRotationRule: {fileID: 0}
_customScaleRule: {fileID: 0}
--- !u!114 &1504374243
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1504374241}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 598e68924c9f6324bbfd049d3bae754c, type: 3}
m_Name:
m_EditorClassIdentifier:
editorDrawPivot: 1
editorPathColor: {r: 1, g: 1, b: 1, a: 1}
editorAlwaysDraw: 0
editorDrawThickness: 0
editorBillboardThickness: 1
isNewlyCreated: 0
editorUpdateMode: 0
multithreaded: 0
updateMode: 0
triggerGroups: []
_spline:
points:
- _type: 0
position: {x: -13.153393, y: 0.34916496, z: -10.764664}
color: {r: 1, g: 1, b: 1, a: 1}
normal: {x: 0, y: 1, z: 0}
size: 1
tangent: {x: -13.153393, y: 0.34916496, z: -10.764664}
tangent2: {x: -13.153393, y: 0.34916496, z: -10.764664}
- _type: 0
position: {x: 17.100878, y: 0.34916496, z: -4.794403}
color: {r: 1, g: 1, b: 1, a: 1}
normal: {x: 0, y: 1, z: 0}
size: 1
tangent: {x: 17.100878, y: 0.34916496, z: -4.794403}
tangent2: {x: 17.100878, y: 0.34916496, z: -4.794403}
type: 0
linearAverageDirection: 1
customValueInterpolation:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
customNormalInterpolation:
serializedVersion: 2
m_Curve: []
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
sampleRate: 10
closed: 0
_knotParametrization: 0
_originalSamplePercents: []
_is2D: 0
hasSamples: 1
_optimizeAngleThreshold: 0.5
_space: 1
_sampleMode: 0
_subscribers:
- {fileID: 1504374242}
_rawSamples:
- position: {x: -13.153393, y: 0.34916496, z: -10.764664}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360255}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0
- position: {x: -9.791807, y: 0.34916496, z: -10.101301}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360255}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0.1111111111111111
- position: {x: -6.430222, y: 0.34916496, z: -9.437939}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360256}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0.2222222222222222
- position: {x: -3.0686355, y: 0.34916496, z: -8.774577}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360253}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0.3333333333333333
- position: {x: 0.2929493, y: 0.34916496, z: -8.111215}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360253}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0.4444444444444444
- position: {x: 3.6545362, y: 0.34916496, z: -7.447852}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360253}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0.5555555555555556
- position: {x: 7.0161223, y: 0.34916496, z: -6.7844896}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360255}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0.6666666666666666
- position: {x: 10.377706, y: 0.34916496, z: -6.1211276}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360253}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0.7777777777777778
- position: {x: 13.739292, y: 0.34916496, z: -5.457765}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360253}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 0.8888888888888888
- position: {x: 17.100878, y: 0.34916496, z: -4.794403}
up: {x: 0, y: 1, z: 0}
forward: {x: 0.98108006, y: 0, z: 0.19360253}
color: {r: 1, g: 1, b: 1, a: 1}
size: 1
percent: 1
_nodes: []
--- !u!4 &1504374244
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1504374241}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 15.119852, y: -0.34916496, z: 239.75441}
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!1 &1506872040
GameObject:
m_ObjectHideFlags: 0
@@ -30752,7 +30089,6 @@ SceneRoots:
- {fileID: 1186915512}
- {fileID: 203657917}
- {fileID: 2081546315}
- {fileID: 1504374244}
- {fileID: 1434772400}
- {fileID: 1067413317}
- {fileID: 325881262}
- {fileID: 1279533325}

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,18 +1,18 @@
ManifestFileVersion: 0
UnityVersion: 6000.3.7f1
CRC: 1900769981
CRC: 813677639
HashAppended: 0
AssetBundleManifest:
AssetBundleInfos:
Info_0:
Name: basic
Dependencies: {}
Info_1:
Name: departure_to_multiverse
Dependencies: {}
Info_2:
Name: metropolis_on_orbit
Dependencies: {}
Info_3:
Name: unifiedraytracing
Dependencies: {}
Info_1:
Name: basic
Dependencies: {}
Info_2:
Name: departure_to_multiverse
Dependencies: {}
Info_3:
Name: metropolis_on_orbit
Dependencies: {}

View File

@@ -10,7 +10,7 @@ Hashes:
Hash: 5c62070e263ca81feb2bc625248d6acd
IncrementalBuildHash:
serializedVersion: 2
Hash: 0f47f73c9d11be6bfd70481392a89d39
Hash: dbf8e3bfd4ae87db88b779a345ac6245
HashAppended: 0
ClassTypes:
- Class: 1

View File

@@ -1,16 +1,16 @@
ManifestFileVersion: 0
UnityVersion: 6000.3.7f1
CRC: 1811710592
CRC: 3486886627
Hashes:
AssetFileHash:
serializedVersion: 2
Hash: f8ed5b8fd549d4da016949bd7466087e
Hash: 3709c61837ad84da9a2454a1c6e53fac
TypeTreeHash:
serializedVersion: 2
Hash: 2b8164874c69dc69b0b8cc5df5378ce1
Hash: 178bb981caf81b14a219536b4645544f
IncrementalBuildHash:
serializedVersion: 2
Hash: aa5ff516412631da269adce04e467b3c
Hash: d981947cba61058c616cba1b67d894b6
HashAppended: 0
ClassTypes:
- Class: 1

View File

@@ -10,7 +10,7 @@ Hashes:
Hash: 8ab77e54d824a64c30bc20496c5f5926
IncrementalBuildHash:
serializedVersion: 2
Hash: 4fd03b8d7ebdd0228f7df28b4c0a5c2a
Hash: 71af302616c0ce85dfd299838486391b
HashAppended: 0
ClassTypes:
- Class: 1

View File

@@ -77,6 +77,7 @@ Material:
- _StepA: 0.25
- _StepB: 0.24
- _Surface: 0
- _TimeAngle: 0.1
- _USETEXTUREBOOL: 1
- _WorkflowMode: 1
- _ZTest: 4
@@ -88,11 +89,13 @@ Material:
- _seed: 0.27
- _timeangle: 0.1
m_Colors:
- _Color0: {r: 0.47407112, g: 0.61970645, b: 1.7735848, a: 0}
- _Color0: {r: 0.53350836, g: 0.6974029, b: 1.9959501, a: 1}
- _EmissionColor: {r: 1, g: 1, b: 1, a: 1}
- _GridColor: {r: 0.21215619, g: 0.29675993, b: 0.49416867, a: 1}
- _GridSpeed: {r: 0, g: 0, b: 0, a: 0}
- _GroundColor: {r: 0.18910617, g: 0.10110355, b: 0.3018867, a: 1}
- _Parallax_Color: {r: 1.011765, g: 0, b: 1.011765, a: 1}
- _PatternSize: {r: 100, g: 100, b: 100, a: 0}
- _Tiling: {r: 0.1, g: 0.1, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -0,0 +1,58 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &-3730482276549979947
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: 10
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: M_Grid Vapor Lite 1
m_Shader: {fileID: 4800000, guid: b491aef5bd88c8b44afc30f6f2074f06, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _OUTER_BORDER_ON
m_InvalidKeywords:
- BOOLEAN_WORLDSPACEUV_ON
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses:
- MOTIONVECTORS
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs: []
m_Ints: []
m_Floats:
- _DstBlend: 10
- _EnableOuterBorder: 1
- _GridDensity: 1
- _OuterBorderWidth: 0.005
- _SrcBlend: 5
- _StepA: 0.25
- _StepB: 0.24
- _TimeAngle: 0.1
- _ZWrite: 0
m_Colors:
- _Color0: {r: 1, g: 1.6666665, b: 2, a: 1}
- _OuterBorderColor: {r: 1, g: 1.3350786, b: 2, a: 1}
- _PatternSize: {r: 100, g: 100, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -1,7 +1,8 @@
fileFormatVersion: 2
guid: 93391ba5485d4154293a4540acd4e942
DefaultImporter:
guid: 2cb2bfcfeddfbbe4b9148fa39d4fca23
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -29,7 +29,7 @@ Transform:
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1000, y: 1000, z: 1000}
m_LocalScale: {x: 100, y: 1, z: 100}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
@@ -59,10 +59,15 @@ MeshRenderer:
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: d9d66429d76d45e4588709a0f48707ed, type: 2}
- {fileID: 2100000, guid: 2cb2bfcfeddfbbe4b9148fa39d4fca23, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -80,9 +85,11 @@ MeshRenderer:
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!114 &8823166546278708317
MonoBehaviour:

View File

@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse.Beatmap
{
[System.Serializable]
public class DTMFramesFloor_BM : EnvironmentObject_BM
{
public float patternSizeX = 100.0f;
public float patternSizeY = 100.0f;
public float gridDensity = 1.0f;
public float timeAngle = 0.1f;
public float stepA = 0.25f;
public float stepB = 0.24f;
public bool enableOuterBorder = true;
public float outerBorderColorR = 1f;
public float outerBorderColorG = 1f;
public float outerBorderColorB = 1f;
public float outerBorderColorA = 1f;
public float outerBorderWidth = 0.02f;
public DTMFramesFloor_BM()
{
}
public override void ExecuteBM()
{
Color outerColor = new Color(outerBorderColorR, outerBorderColorG, outerBorderColorB, outerBorderColorA);
matchedElement = DTMFramesFloor.GenerateElement(elementName, elementGuid, tags, false,
themeBundleName, objectName, GetElement(attachedElementGuid), isStatic,
patternSizeX, patternSizeY, gridDensity,
timeAngle, stepA, stepB,
enableOuterBorder, outerColor, outerBorderWidth);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: d6073730876ef064e86673c02d0c6e36

View File

@@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using Ichni.RhythmGame.Beatmap;
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse.Beatmap
{
[System.Serializable]
public class DTMGlobalFog_BM : EnvironmentObject_BM
{
public FlexibleFloat_BM fogColorStartR = new FlexibleFloat_BM();
public FlexibleFloat_BM fogColorStartG = new FlexibleFloat_BM();
public FlexibleFloat_BM fogColorStartB = new FlexibleFloat_BM();
public FlexibleFloat_BM fogColorStartA = new FlexibleFloat_BM();
public FlexibleFloat_BM fogColorEndR = new FlexibleFloat_BM();
public FlexibleFloat_BM fogColorEndG = new FlexibleFloat_BM();
public FlexibleFloat_BM fogColorEndB = new FlexibleFloat_BM();
public FlexibleFloat_BM fogColorEndA = new FlexibleFloat_BM();
public FlexibleFloat_BM fogColorDuo = new FlexibleFloat_BM();
public FlexibleFloat_BM skyboxFogIntensity = new FlexibleFloat_BM();
public FlexibleFloat_BM skyboxFogHeight = new FlexibleFloat_BM();
public FlexibleFloat_BM skyboxFogFalloff = new FlexibleFloat_BM();
public FlexibleFloat_BM skyboxFogOffset = new FlexibleFloat_BM();
public DTMGlobalFog_BM()
{
}
public override void ExecuteBM()
{
matchedElement = DTMGlobalFog.GenerateElement(elementName, elementGuid, tags, false,
themeBundleName, objectName, GetElement(attachedElementGuid), isStatic,
fogColorStartR?.ConvertToGameType(), fogColorStartG?.ConvertToGameType(), fogColorStartB?.ConvertToGameType(), fogColorStartA?.ConvertToGameType(),
fogColorEndR?.ConvertToGameType(), fogColorEndG?.ConvertToGameType(), fogColorEndB?.ConvertToGameType(), fogColorEndA?.ConvertToGameType(),
fogColorDuo?.ConvertToGameType(),
skyboxFogIntensity?.ConvertToGameType(), skyboxFogHeight?.ConvertToGameType(),
skyboxFogFalloff?.ConvertToGameType(), skyboxFogOffset?.ConvertToGameType());
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 68f4e10e5b6171549a44658b6b917a2a

View File

@@ -7,7 +7,7 @@ using UnityEngine;
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
{
public class DTM_Ripple : MonoBehaviour, IPoolable
public class DTMRipple : MonoBehaviour, IPoolable
{
#region [] Exposed Fields & References
public ParticleSystem mainRipple;

View File

@@ -0,0 +1,105 @@
using System;
using System.Collections.Generic;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
{
public class DTMFramesFloor : EnvironmentObject
{
#region [] Exposed Fields
public float patternSizeX;
public float patternSizeY;
public float gridDensity;
public float timeAngle;
public float stepA;
public float stepB;
public bool enableOuterBorder;
public Color outerBorderColor;
public float outerBorderWidth;
public Renderer meshRenderer;
#endregion
#region [] Lifecycle & Factory
public static DTMFramesFloor GenerateElement(string elementName, Guid id, List<string> tags,
bool isFirstGenerated, string themeBundleName, string objectName, GameElement parentElement,
bool isStatic,
float patternSizeX, float patternSizeY, float gridDensity,
float timeAngle, float stepA, float stepB,
bool enableOuterBorder,
Color outerBorderColor,
float outerBorderWidth)
{
DTMFramesFloor framesFloor = EnvironmentObject.GenerateElement(elementName, id, tags,
isFirstGenerated, themeBundleName, objectName, parentElement, isStatic).GetComponent<DTMFramesFloor>();
framesFloor.patternSizeX = patternSizeX;
framesFloor.patternSizeY = patternSizeY;
framesFloor.gridDensity = gridDensity;
framesFloor.timeAngle = timeAngle;
framesFloor.stepA = stepA;
framesFloor.stepB = stepB;
framesFloor.enableOuterBorder = enableOuterBorder;
framesFloor.outerBorderColor = outerBorderColor;
framesFloor.outerBorderWidth = outerBorderWidth;
return framesFloor;
}
public override void FirstSetUpObject(bool isFirstGenerated)
{
if (meshRenderer == null)
meshRenderer = GetComponentInChildren<Renderer>();
meshRenderer.InitializeShader(); // 实例化材质 / Instantiate material
UpdateMaterialProperties();
}
#endregion
#region [] Core Effect Logic
public void UpdateMaterialProperties()
{
if (meshRenderer != null && meshRenderer.material != null)
{
Material mat = meshRenderer.material;
mat.SetVector("_PatternSize", new Vector4(patternSizeX, patternSizeY, 0, 0));
mat.SetFloat("_GridDensity", gridDensity);
mat.SetFloat("_TimeAngle", timeAngle);
mat.SetFloat("_StepA", stepA);
mat.SetFloat("_StepB", stepB);
float borderOn = enableOuterBorder ? 1f : 0f;
mat.SetFloat("_EnableOuterBorder", borderOn);
if (enableOuterBorder)
{
mat.EnableKeyword("_OUTER_BORDER_ON");
}
else
{
mat.DisableKeyword("_OUTER_BORDER_ON");
}
mat.SetColor("_OuterBorderColor", outerBorderColor);
mat.SetFloat("_OuterBorderWidth", outerBorderWidth);
// Base Color and Alpha Sync (Unity Color -> HDR)
mat.SetColor("_Color0", colorSubmodule.currentBaseColor);
}
}
public override void Refresh()
{
base.Refresh();
// Sync environment color changes
if (meshRenderer != null)
{
meshRenderer.material.SetColor("_Color0", colorSubmodule.currentBaseColor);
}
}
#endregion
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 677671f1d5140b2489dc52c18792b8f5

View File

@@ -0,0 +1,115 @@
using System;
using System.Collections.Generic;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
using AtmosphericHeightFog;
using FogMode = AtmosphericHeightFog.FogMode;
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
{
public class DTMGlobalFog : EnvironmentObject
{
#region [] Exposed Fields
public HeightFogGlobal heightFogGlobal;
public FlexibleFloat fogColorStartR, fogColorStartG, fogColorStartB, fogColorStartA;
public FlexibleFloat fogColorEndR, fogColorEndG, fogColorEndB, fogColorEndA;
public FlexibleFloat fogColorDuo;
public FlexibleFloat skyboxFogIntensity;
public FlexibleFloat skyboxFogHeight;
public FlexibleFloat skyboxFogFalloff;
public FlexibleFloat skyboxFogOffset;
#endregion
#region [] Lifecycle & Factory
public static DTMGlobalFog GenerateElement(string elementName, Guid id, List<string> tags,
bool isFirstGenerated, string themeBundleName, string objectName, GameElement parentElement,
bool isStatic,
FlexibleFloat fogColorStartR, FlexibleFloat fogColorStartG, FlexibleFloat fogColorStartB, FlexibleFloat fogColorStartA,
FlexibleFloat fogColorEndR, FlexibleFloat fogColorEndG, FlexibleFloat fogColorEndB, FlexibleFloat fogColorEndA,
FlexibleFloat fogColorDuo,
FlexibleFloat skyboxFogIntensity, FlexibleFloat skyboxFogHeight,
FlexibleFloat skyboxFogFalloff, FlexibleFloat skyboxFogOffset)
{
DTMGlobalFog globalFog = EnvironmentObject.GenerateElement(elementName, id, tags,
isFirstGenerated, themeBundleName, objectName, parentElement, isStatic).GetComponent<DTMGlobalFog>();
globalFog.fogColorStartR = fogColorStartR;
globalFog.fogColorStartG = fogColorStartG;
globalFog.fogColorStartB = fogColorStartB;
globalFog.fogColorStartA = fogColorStartA;
globalFog.fogColorEndR = fogColorEndR;
globalFog.fogColorEndG = fogColorEndG;
globalFog.fogColorEndB = fogColorEndB;
globalFog.fogColorEndA = fogColorEndA;
globalFog.fogColorDuo = fogColorDuo;
globalFog.skyboxFogIntensity = skyboxFogIntensity;
globalFog.skyboxFogHeight = skyboxFogHeight;
globalFog.skyboxFogFalloff = skyboxFogFalloff;
globalFog.skyboxFogOffset = skyboxFogOffset;
return globalFog;
}
public override void FirstSetUpObject(bool isFirstGenerated)
{
if (heightFogGlobal == null)
{
heightFogGlobal = GetComponentInChildren<HeightFogGlobal>();
}
// Ensure fog mode is set to script settings so it accepts our overrides
if (heightFogGlobal != null)
{
heightFogGlobal.fogMode = FogMode.UseScriptSettings;
}
}
#endregion
#region [] Event Animation Logic
private void Update()
{
if (heightFogGlobal == null) return;
float songTime = CoreServices.TimeProvider.SongTime;
fogColorStartR?.UpdateFlexibleFloat(songTime);
fogColorStartG?.UpdateFlexibleFloat(songTime);
fogColorStartB?.UpdateFlexibleFloat(songTime);
fogColorStartA?.UpdateFlexibleFloat(songTime);
fogColorEndR?.UpdateFlexibleFloat(songTime);
fogColorEndG?.UpdateFlexibleFloat(songTime);
fogColorEndB?.UpdateFlexibleFloat(songTime);
fogColorEndA?.UpdateFlexibleFloat(songTime);
fogColorDuo?.UpdateFlexibleFloat(songTime);
skyboxFogIntensity?.UpdateFlexibleFloat(songTime);
skyboxFogHeight?.UpdateFlexibleFloat(songTime);
skyboxFogFalloff?.UpdateFlexibleFloat(songTime);
skyboxFogOffset?.UpdateFlexibleFloat(songTime);
if (fogColorStartR != null && fogColorStartG != null && fogColorStartB != null && fogColorStartA != null)
{
heightFogGlobal.fogColorStart = new Color(fogColorStartR.value, fogColorStartG.value, fogColorStartB.value, fogColorStartA.value);
}
if (fogColorEndR != null && fogColorEndG != null && fogColorEndB != null && fogColorEndA != null)
{
heightFogGlobal.fogColorEnd = new Color(fogColorEndR.value, fogColorEndG.value, fogColorEndB.value, fogColorEndA.value);
}
if (fogColorDuo != null) heightFogGlobal.fogColorDuo = fogColorDuo.value;
if (skyboxFogIntensity != null) heightFogGlobal.skyboxFogIntensity = skyboxFogIntensity.value;
if (skyboxFogHeight != null) heightFogGlobal.skyboxFogHeight = skyboxFogHeight.value;
if (skyboxFogFalloff != null) heightFogGlobal.skyboxFogFalloff = skyboxFogFalloff.value;
if (skyboxFogOffset != null) heightFogGlobal.skyboxFogOffset = skyboxFogOffset.value;
}
#endregion
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e8bab02f6d349f6418ccfe0674b93013

View File

@@ -0,0 +1,9 @@
using UnityEngine;
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
{
public class DTMStarrySkybox : GameElement
{
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 638fbd0e919667f47a93485dd230c71f

View File

@@ -6,7 +6,7 @@ namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
public class DTMRippleEffect : EffectBase
{
#region [] Effect Fields & States
private DTM_Ripple ripple;
private DTMRipple ripple;
public float rippleTime;
public Vector3 positionOffset;
public Vector3 eulerAnglesOffset;
@@ -33,7 +33,7 @@ namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
public override void Adjust()
{
GameObject prefab = GameManager.Instance.customPrefabs["departure_to_multiverse"].GetPrefab("DTM_Ripple");
ripple = LeanPool.Spawn(prefab, attachedGameElement.transform).GetComponent<DTM_Ripple>();
ripple = LeanPool.Spawn(prefab, attachedGameElement.transform).GetComponent<DTMRipple>();
ripple.transform.localPosition = positionOffset;
ripple.transform.localEulerAngles = eulerAnglesOffset;
ripple.transform.localScale = scale;

View File

@@ -1,107 +0,0 @@
import os
import re
game_dir = r"d:\Projects\ichni Official\Assets\ThemeBundles\DepartureToMultiverse\Scripts\Game"
datacore_dir = r"d:\Projects\ichni Official\Assets\ThemeBundles\DepartureToMultiverse\Scripts\DataCore"
def extract_beatmap_namespace(filepath):
try:
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
except Exception as e:
print("Error reading", filepath, e)
return
# Find the start of namespace Beatmap
match = re.search(r'^\s*namespace\s+Beatmap\s*\{', content, re.MULTILINE)
if not match:
print("No Beatmap namespace in", filepath)
return
start_idx = match.start()
# We need to find the matching closing brace
brace_depth = 0
end_idx = -1
for i in range(start_idx, len(content)):
if content[i] == '{':
brace_depth += 1
elif content[i] == '}':
brace_depth -= 1
if brace_depth == 0:
end_idx = i + 1
break
if end_idx == -1:
print("Mismatched braces in", filepath)
return
bm_namespace_content = content[start_idx:end_idx]
# Find the name of the _BM class to name the new file
class_match = re.search(r'public\s+(?:partial\s+)?class\s+(\w+_BM)', bm_namespace_content)
if not class_match:
print("No _BM class found in namespace Beatmap for", filepath)
return
bm_class_name = class_match.group(1)
# Make the original file clean
new_game_content = content[:start_idx] + content[end_idx:]
new_game_content = new_game_content.rstrip()
# close the namespace of the original file if needed, actually it's usually inside the original namespace!
# Let's check if "namespace Beatmap" is inside another namespace.
# Yes, typically "namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse" wraps everything.
# The new_game_content currently might have a trailing `}` because the outer namespace is closed at the end.
# E.g.
# namespace Outer {
# class OuterClass { }
# namespace Beatmap { ... }
# }
# If we remove "namespace Beatmap { ... }", we still need the trailing "}".
new_game_content = re.sub(r'[\r\n\s]*namespace\s+Beatmap[\s\S]*\}\s*\}\s*$', '\n}', content) # A quick hacky way but relies on structure.
# Better way: just remove the exact substring, then it leaves the outer closing brace intact.
# wait, if namespace Beatmap { ... } is inside namespace Outer { ... }
# start_idx to end_idx is exactly "namespace Beatmap { ... }"
# So content[:start_idx] + content[end_idx:] will leave the outer } perfectly.
new_content = content[:start_idx] + content[end_idx:]
# Clean up excess newlines
new_content = re.sub(r'\n\s*\n\s*\n', '\n\n', new_content)
# Ensure it ends with a newline
new_content = new_content.strip() + '\n'
with open(filepath, 'w', encoding='utf-8') as f:
f.write(new_content)
# Now create the DataCore file
rel_path = os.path.relpath(filepath, game_dir)
datacore_file_dir = os.path.dirname(os.path.join(datacore_dir, rel_path))
os.makedirs(datacore_file_dir, exist_ok=True)
datacore_filepath = os.path.join(datacore_file_dir, bm_class_name + ".cs")
# We need usings. Extract original usings
usings = "".join(re.findall(r'^(?:using\s+[\w\.]+;\s*)+', content, re.MULTILINE))
# Format the new DataCore file
datacore_content = usings + "\n"
# Wrap in outer namespace
datacore_content += "namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse.Beatmap\n{\n"
# Extract the classes inside "namespace Beatmap"
inner_classes = re.search(r'namespace\s+Beatmap\s*\{([\s\S]*)\}', bm_namespace_content).group(1)
datacore_content += inner_classes + "}\n"
with open(datacore_filepath, 'w', encoding='utf-8') as f:
f.write(datacore_content)
print(f"Split {os.path.basename(filepath)} -> {bm_class_name}.cs")
for root, dirs, files in os.walk(game_dir):
for file in files:
if file.endswith('.cs'):
filepath = os.path.join(root, file)
extract_beatmap_namespace(filepath)

View File

@@ -0,0 +1,213 @@
Shader "Soullies/DTM_FramesFloor"
{
Properties
{
[HDR]_Color0("Color0", Color) = (1, 1, 1, 0)
[Header(Pattern Settings)]
_PatternSize("Pattern Size (X, Y)", Vector) = (2.0, 2.0, 0, 0)
_GridDensity("Grid Density (Quantity Multiplier)", Float) = 1.0
_TimeAngle("Time Angle (Speed)", Float) = 1.0
[Header(Edge Settings)]
_StepA("Step A", Range(0, 1)) = 0.293
_StepB("Step B", Range(0, 1)) = 0.345
[Header(Outer Enclosing Border)]
[Toggle(_OUTER_BORDER_ON)] _EnableOuterBorder("Enable Outer Border", Float) = 0
[HDR] _OuterBorderColor("Outer Border Color", Color) = (1, 1, 1, 1)
_OuterBorderWidth("Outer Border Width", Range(0.0, 0.5)) = 0.02
[Header(Render State)]
[Enum(UnityEngine.Rendering.BlendMode)] _SrcBlend("Src Blend", Float) = 5 // SrcAlpha
[Enum(UnityEngine.Rendering.BlendMode)] _DstBlend("Dst Blend", Float) = 10 // OneMinusSrcAlpha
[Enum(Off, 0, On, 1)] _ZWrite("Z Write", Float) = 0
}
SubShader
{
Tags
{
"RenderPipeline" = "UniversalPipeline"
"RenderType" = "Transparent"
"Queue" = "Transparent-300"
"UniversalMaterialType" = "Unlit"
"IgnoreProjector" = "True"
}
Blend [_SrcBlend] [_DstBlend]
ZWrite [_ZWrite]
Cull Back
Pass
{
Name "ForwardOnly"
Tags { "LightMode" = "UniversalForwardOnly" }
HLSLPROGRAM
// -------------------------------------
// Target Config
#pragma target 4.5
#pragma prefer_hlslcc gles
// DOTS and Instancing
#pragma multi_compile_instancing
#pragma multi_compile_fog
// Feature Flags
#pragma shader_feature_local _OUTER_BORDER_ON
#pragma vertex vert
#pragma fragment frag
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
struct Attributes
{
float4 positionOS : POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct Varyings
{
float4 positionCS : SV_POSITION;
float3 positionWS : TEXCOORD0;
float2 uv : TEXCOORD1;
half fogFactor : TEXCOORD2;
UNITY_VERTEX_INPUT_INSTANCE_ID
UNITY_VERTEX_OUTPUT_STEREO
};
CBUFFER_START(UnityPerMaterial)
half4 _Color0;
float4 _PatternSize;
float _GridDensity;
float _TimeAngle;
float _StepA;
float _StepB;
half4 _OuterBorderColor;
float _OuterBorderWidth;
CBUFFER_END
// -------------------------------------
// Custom Helper Functions
float2 VoronoiHash(float2 p)
{
p = float2(dot(p, float2(127.1, 311.7)), dot(p, float2(269.5, 183.3)));
return frac(sin(p) * 43758.5453);
}
// Manhattan-based Voronoi optimized for Mobile URP
float VoronoiDistance(float2 v, float t)
{
float2 n = floor(v);
float2 f = frac(v);
float minDist = 8.0;
UNITY_UNROLL
for (int j = -1; j <= 1; j++)
{
UNITY_UNROLL
for (int i = -1; i <= 1; i++)
{
float2 g = float2((float)i, (float)j);
float2 o = VoronoiHash(n + g);
// Oscillating movement
o = sin(t + o * 6.2831853) * 0.5 + 0.5;
float2 r = f - g - o;
// Manhattan distance for rectangular frames
float d = 0.5 * (abs(r.x) + abs(r.y));
minDist = min(minDist, d);
}
}
return minDist;
}
// -------------------------------------
// Vertex Shader
Varyings vert(Attributes input)
{
Varyings output = (Varyings)0;
UNITY_SETUP_INSTANCE_ID(input);
UNITY_TRANSFER_INSTANCE_ID(input, output);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(output);
VertexPositionInputs vertexInput = GetVertexPositionInputs(input.positionOS.xyz);
output.positionCS = vertexInput.positionCS;
output.positionWS = vertexInput.positionWS;
output.uv = input.uv;
output.fogFactor = ComputeFogFactor(vertexInput.positionCS.z);
return output;
}
// -------------------------------------
// Fragment Shader
half4 frag(Varyings input) : SV_Target
{
UNITY_SETUP_INSTANCE_ID(input);
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(input);
// ==========================================
// 1. inner Grid Pattern Calculation
// ==========================================
float2 worldUV = input.positionWS.xz;
// Density Multiplier: Higher density = smaller frames = more quantity
float density = max(_GridDensity, 0.0001);
float2 sizeDivisor = max(_PatternSize.xy, float2(0.0001, 0.0001)) / density;
float2 scaledUV = worldUV / sizeDivisor;
// Rotate 45 degrees
float c = 0.707106;
float s = 0.707106;
float2 rotatedUV = mul(scaledUV, float2x2(c, -s, s, c));
// Time driven animation
float t = _TimeAngle * _TimeParameters.x;
// Voronoi mathematical noise
float v = VoronoiDistance(rotatedUV, t);
// Anti-aliased border mask computation
float fw = fwidth(v);
float edge1 = smoothstep(_StepA - fw, _StepA + fw, v);
float edge2 = smoothstep(_StepB - fw, _StepB + fw, v);
float gridAlphaMask = edge2 - edge1;
half3 gridColor = _Color0.rgb;
half gridAlpha = gridAlphaMask * _Color0.a;
// ==========================================
// 2. Outer Enclosing Border
// ==========================================
half3 finalColor = gridColor;
half finalAlpha = gridAlpha;
#if defined(_OUTER_BORDER_ON)
// Calculate distance to nearest UV edge
float2 edgeDist = min(input.uv, 1.0 - input.uv);
float closestEdge = min(edgeDist.x, edgeDist.y);
// Uses fwidth for clean smoothstep transition at the edge
float borderfw = fwidth(closestEdge);
// Creates a solid border with a smooth antialiased inner falloff
float borderMask = 1.0 - smoothstep(_OuterBorderWidth - borderfw, _OuterBorderWidth + borderfw, closestEdge);
// Lerp grid to border
finalColor = lerp(gridColor, _OuterBorderColor.rgb, borderMask);
finalAlpha = lerp(gridAlpha, _OuterBorderColor.a, borderMask);
#endif
// Apply URP Fog
finalColor = MixFog(finalColor, input.fogFactor);
return half4(finalColor, finalAlpha);
}
ENDHLSL
}
}
FallBack "Hidden/Universal Render Pipeline/FallbackError"
}

View File

@@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: b491aef5bd88c8b44afc30f6f2074f06
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -119,7 +119,7 @@ MonoBehaviour:
m_MinSize: {x: 300, y: 112}
m_MaxSize: {x: 24288, y: 16192}
vertical: 0
controlID: 44
controlID: 51
draggingID: 0
--- !u!114 &6
MonoBehaviour:
@@ -140,12 +140,12 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 0
width: 1194
width: 1195.3334
height: 813.3333
m_MinSize: {x: 200, y: 112}
m_MaxSize: {x: 16192, y: 16192}
vertical: 1
controlID: 45
controlID: 52
draggingID: 0
--- !u!114 &7
MonoBehaviour:
@@ -166,12 +166,12 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 0
width: 1194
width: 1195.3334
height: 564.6667
m_MinSize: {x: 200, y: 56}
m_MaxSize: {x: 16192, y: 8096}
vertical: 0
controlID: 46
controlID: 53
draggingID: 0
--- !u!114 &8
MonoBehaviour:
@@ -209,24 +209,24 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: GameView
m_Name: SceneView
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 298.66666
y: 0
width: 895.3334
width: 896.66675
height: 564.6667
m_MinSize: {x: 200, y: 200}
m_MaxSize: {x: 4000, y: 4000}
m_ActualView: {fileID: 24}
m_MinSize: {x: 202, y: 226}
m_MaxSize: {x: 4002, y: 4026}
m_ActualView: {fileID: 14}
m_Panes:
- {fileID: 14}
- {fileID: 15}
- {fileID: 24}
m_Selected: 2
m_LastSelected: 0
m_Selected: 0
m_LastSelected: 2
--- !u!114 &10
MonoBehaviour:
m_ObjectHideFlags: 52
@@ -237,25 +237,25 @@ MonoBehaviour:
m_Enabled: 1
m_EditorHideFlags: 1
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
m_Name: ConsoleWindow
m_Name: ProjectBrowser
m_EditorClassIdentifier:
m_Children: []
m_Position:
serializedVersion: 2
x: 0
y: 564.6667
width: 1194
width: 1195.3334
height: 248.66663
m_MinSize: {x: 101, y: 126}
m_MaxSize: {x: 4001, y: 4026}
m_ActualView: {fileID: 17}
m_MinSize: {x: 231, y: 276}
m_MaxSize: {x: 10001, y: 10026}
m_ActualView: {fileID: 16}
m_Panes:
- {fileID: 16}
- {fileID: 17}
- {fileID: 18}
- {fileID: 19}
m_Selected: 1
m_LastSelected: 0
m_Selected: 0
m_LastSelected: 1
--- !u!114 &11
MonoBehaviour:
m_ObjectHideFlags: 52
@@ -271,12 +271,12 @@ MonoBehaviour:
m_Children: []
m_Position:
serializedVersion: 2
x: 1194
x: 1195.3334
y: 0
width: 512.6666
width: 511.33325
height: 813.3333
m_MinSize: {x: 275, y: 50}
m_MaxSize: {x: 4000, y: 4000}
m_MinSize: {x: 276, y: 76}
m_MaxSize: {x: 4001, y: 4026}
m_ActualView: {fileID: 20}
m_Panes:
- {fileID: 20}
@@ -307,7 +307,7 @@ MonoBehaviour:
m_Pos:
serializedVersion: 2
x: 0
y: 42.666668
y: 0
width: 1706.6666
height: 36
m_SerializedDataModeController:
@@ -534,10 +534,10 @@ MonoBehaviour:
displayed: 1
id: Play Mode Controls
index: 0
contents: '{"m_Layout":4,"m_Collapsed":false,"m_Folded":false,"m_Floating":false,"m_FloatingSnapOffset":{"x":-800.0,"y":-36.0},"m_SnapOffsetDelta":{"x":0.0,"y":0.0},"m_FloatingSnapCorner":3,"m_Size":{"x":0.0,"y":0.0},"m_SizeOverridden":false}'
contents: '{"m_Layout":4,"m_Collapsed":false,"m_Folded":false,"m_Floating":false,"m_FloatingSnapOffset":{"x":-809.9999389648438,"y":-36.0},"m_SnapOffsetDelta":{"x":0.0,"y":0.0},"m_FloatingSnapCorner":3,"m_Size":{"x":0.0,"y":0.0},"m_SizeOverridden":false}'
floating: 0
collapsed: 0
snapOffset: {x: -800, y: -36}
snapOffset: {x: -809.99994, y: -36}
snapOffsetDelta: {x: 0, y: 0}
snapCorner: 3
layout: 4
@@ -574,7 +574,7 @@ MonoBehaviour:
m_Pos:
serializedVersion: 2
x: 0
y: 78.66667
y: 24
width: 297.66666
height: 538.6667
m_SerializedDataModeController:
@@ -597,7 +597,14 @@ MonoBehaviour:
m_LastClickedID:
m_Data: 0
m_ExpandedIDs:
- m_Data: -3042
- m_Data: -223360
- m_Data: -199618
- m_Data: -156682
- m_Data: -156678
- m_Data: -156672
- m_Data: -156664
- m_Data: -156650
- m_Data: -156562
- m_Data: -1330
m_RenameOverlay:
m_UserAcceptedRename: 0
@@ -646,10 +653,10 @@ MonoBehaviour:
m_TextWithWhitespace: "Scene\u200B"
m_Pos:
serializedVersion: 2
x: 298.6667
y: 78.66667
width: 893.3334
height: 530.6667
x: 299.66666
y: 24
width: 894.66675
height: 538.6667
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@@ -1304,9 +1311,9 @@ MonoBehaviour:
m_AudioPlay: 0
m_DebugDrawModesUseInteractiveLightBakingData: 0
m_Position:
m_Target: {x: -28.351109, y: -71.649734, z: -22.87246}
m_Target: {x: -32.145996, y: -89.18892, z: -1339.7684}
speed: 2
m_Value: {x: -28.351109, y: -71.649734, z: -22.87246}
m_Value: {x: -32.145996, y: -89.18892, z: -1339.7684}
m_RenderMode: 0
m_CameraMode:
drawMode: 0
@@ -1334,9 +1341,9 @@ MonoBehaviour:
m_Size: {x: 0, y: 0}
yGrid:
m_Fade:
m_Target: 1
m_Target: 0
speed: 2
m_Value: 1
m_Value: 0
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
m_Pivot: {x: 0, y: 0, z: 0}
m_Size: {x: 1, y: 1}
@@ -1348,17 +1355,17 @@ MonoBehaviour:
m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4}
m_Pivot: {x: 0, y: 0, z: 0}
m_Size: {x: 1, y: 1}
m_ShowGrid: 1
m_ShowGrid: 0
m_GridAxis: 1
m_gridOpacity: 0.5
m_Rotation:
m_Target: {x: 0.0024024772, y: 0.99067247, z: -0.13537523, w: 0.017325059}
m_Target: {x: -0.002123007, y: -0.99792814, z: 0.042745132, w: -0.04902099}
speed: 2
m_Value: {x: 0.0024024, y: 0.9906406, z: -0.13537088, w: 0.017324502}
m_Value: {x: 0.002123007, y: 0.9979281, z: -0.04274513, w: 0.049020987}
m_Size:
m_Target: 55.658985
m_Target: 612.89374
speed: 2
m_Value: 55.658985
m_Value: 612.89374
m_Ortho:
m_Target: 0
speed: 2
@@ -1416,8 +1423,8 @@ MonoBehaviour:
serializedVersion: 2
x: 298.6667
y: 78.66667
width: 893.3334
height: 530.6667
width: 894.66675
height: 538.6667
m_SerializedDataModeController:
m_DataMode: 0
m_PreferredDataMode: 0
@@ -1526,8 +1533,8 @@ MonoBehaviour:
m_Pos:
serializedVersion: 2
x: 0
y: 643.3334
width: 1193
y: 588.6667
width: 1194.3334
height: 222.66663
m_SerializedDataModeController:
m_DataMode: 0
@@ -1553,7 +1560,7 @@ MonoBehaviour:
m_SkipHidden: 0
m_SearchArea: 1
m_Folders:
- Assets/Scenes
- Assets/ThemeBundles/DepartureToMultiverse
m_Globs: []
m_ProductIds:
m_AnyWithAssetOrigin: 0
@@ -1563,42 +1570,26 @@ MonoBehaviour:
m_ViewMode: 1
m_StartGridSize: 16
m_LastFolders:
- Assets/Scenes
- Assets/ThemeBundles/DepartureToMultiverse
m_LastFoldersGridSize: 16
m_LastProjectPath: D:\Projects\ichni Official
m_LockTracker:
m_IsLocked: 0
m_LastLocalAssetsSearchArea: 1
m_FolderTreeState:
scrollPos: {x: 0, y: 337.33337}
scrollPos: {x: 0, y: 1193.3334}
m_SelectedIDs:
- m_Data: 65176
- m_Data: 66834
m_LastClickedID:
m_Data: 65176
m_Data: 66834
m_ExpandedIDs:
- m_Data: 0
- m_Data: 64698
- m_Data: 64700
- m_Data: 64702
- m_Data: 64704
- m_Data: 64706
- m_Data: 64708
- m_Data: 64710
- m_Data: 64712
- m_Data: 64714
- m_Data: 64716
- m_Data: 64718
- m_Data: 64720
- m_Data: 64722
- m_Data: 64724
- m_Data: 64726
- m_Data: 64728
- m_Data: 64730
- m_Data: 64732
- m_Data: 64734
- m_Data: 64736
- m_Data: 64738
- m_Data: 64740
- m_Data: 64742
- m_Data: 64744
- m_Data: 64746
- m_Data: 64748
- m_Data: 64750
@@ -1620,10 +1611,21 @@ MonoBehaviour:
- m_Data: 64782
- m_Data: 64784
- m_Data: 64786
- m_Data: 65196
- m_Data: 65200
- m_Data: 65202
- m_Data: 1000000000
- m_Data: 64788
- m_Data: 64790
- m_Data: 64792
- m_Data: 64794
- m_Data: 64796
- m_Data: 64798
- m_Data: 64800
- m_Data: 64802
- m_Data: 64804
- m_Data: 64806
- m_Data: 64808
- m_Data: 64810
- m_Data: 64812
- m_Data: 64814
- m_Data: 64816
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@@ -1656,24 +1658,6 @@ MonoBehaviour:
m_Data: 0
m_ExpandedIDs:
- m_Data: 0
- m_Data: 64698
- m_Data: 64700
- m_Data: 64702
- m_Data: 64704
- m_Data: 64706
- m_Data: 64708
- m_Data: 64710
- m_Data: 64712
- m_Data: 64714
- m_Data: 64716
- m_Data: 64718
- m_Data: 64720
- m_Data: 64722
- m_Data: 64724
- m_Data: 64726
- m_Data: 64728
- m_Data: 64730
- m_Data: 64732
- m_Data: 64734
- m_Data: 64736
- m_Data: 64738
@@ -1701,6 +1685,21 @@ MonoBehaviour:
- m_Data: 64782
- m_Data: 64784
- m_Data: 64786
- m_Data: 64788
- m_Data: 64790
- m_Data: 64792
- m_Data: 64794
- m_Data: 64796
- m_Data: 64798
- m_Data: 64800
- m_Data: 64802
- m_Data: 64804
- m_Data: 64806
- m_Data: 64808
- m_Data: 64810
- m_Data: 64812
- m_Data: 64814
- m_Data: 64816
m_RenameOverlay:
m_UserAcceptedRename: 0
m_Name:
@@ -1729,7 +1728,7 @@ MonoBehaviour:
m_ListAreaState:
m_SelectedInstanceIDs: []
m_LastClickedInstanceID: 0
m_HadKeyboardFocusLastEvent: 1
m_HadKeyboardFocusLastEvent: 0
m_ExpandedInstanceIDs:
- m_Data: 0
m_RenameOverlay:
@@ -1785,7 +1784,7 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 643.3334
width: 1193
width: 1194.3334
height: 222.66663
m_SerializedDataModeController:
m_DataMode: 0
@@ -1902,9 +1901,9 @@ MonoBehaviour:
m_TextWithWhitespace: "Inspector\u200B"
m_Pos:
serializedVersion: 2
x: 1194
y: 78.66667
width: 511.66663
x: 1196.3334
y: 24
width: 510.33325
height: 787.3333
m_SerializedDataModeController:
m_DataMode: 0
@@ -1977,7 +1976,7 @@ MonoBehaviour:
m_CachedPref: 184.33334
m_ControlHash: 1412526313
m_PrefName: Preview_InspectorPreview
m_LastInspectedObjectInstanceID: -1
m_LastInspectedObjectInstanceID: 119496
m_LastVerticalScrollValue: 0
m_GlobalObjectId:
m_InspectorMode: 0
@@ -2029,7 +2028,7 @@ MonoBehaviour:
m_CachedPref: 165.66669
m_ControlHash: 1412526313
m_PrefName: Preview_InspectorPreview
m_LastInspectedObjectInstanceID: -1
m_LastInspectedObjectInstanceID: 119496
m_LastVerticalScrollValue: 0
m_GlobalObjectId:
m_InspectorMode: 0
@@ -2058,9 +2057,9 @@ MonoBehaviour:
m_TextWithWhitespace: "Lighting\u200B"
m_Pos:
serializedVersion: 2
x: 1194
x: 1195.3334
y: 78.66667
width: 511.66663
width: 510.33325
height: 787.3333
m_SerializedDataModeController:
m_DataMode: 0
@@ -2099,7 +2098,7 @@ MonoBehaviour:
serializedVersion: 2
x: 298.6667
y: 78.66667
width: 893.3334
width: 894.66675
height: 538.6667
m_SerializedDataModeController:
m_DataMode: 0
@@ -2158,10 +2157,10 @@ MonoBehaviour:
serializedVersion: 2
x: 0
y: 21
width: 893.3334
width: 894.66675
height: 517.6667
m_Scale: {x: 0.6979167, y: 0.6979167}
m_Translation: {x: 446.6667, y: 258.83334}
m_Scale: {x: 0.6989584, y: 0.6989584}
m_Translation: {x: 447.33337, y: 258.83334}
m_MarginLeft: 0
m_MarginRight: 0
m_MarginTop: 0
@@ -2169,12 +2168,12 @@ MonoBehaviour:
m_LastShownAreaInsideMargins:
serializedVersion: 2
x: -640
y: -370.86566
y: -370.31296
width: 1280
height: 741.7313
height: 740.6259
m_MinimalGUI: 1
m_defaultScale: 0.6979167
m_LastWindowPixelSize: {x: 1340, y: 808}
m_defaultScale: 0.6989584
m_LastWindowPixelSize: {x: 894.66675, y: 538.6667}
m_ClearInEditMode: 1
m_NoCameraWarning: 1
m_LowResolutionForAspectRatios: 00000000000000000000