Substantial Object生成调整
可以正确的生成NoteVisual
This commit is contained in:
5
.idea/.idea.IchniCreatorStudio/.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
5
.idea/.idea.IchniCreatorStudio/.idea/codeStyles/codeStyleConfig.xml
generated
Normal file
@@ -0,0 +1,5 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||
</state>
|
||||
</component>
|
||||
BIN
Assets/.DS_Store
vendored
BIN
Assets/.DS_Store
vendored
Binary file not shown.
8
Assets/000_assets.meta
Normal file
8
Assets/000_assets.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7f3d6cf0a59a417fa4cc153774d797e
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
481
Assets/000_assets/M_tap_01 1.mat
Executable file
481
Assets/000_assets/M_tap_01 1.mat
Executable file
@@ -0,0 +1,481 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!21 &2100000
|
||||
Material:
|
||||
serializedVersion: 8
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_Name: M_tap_01 1
|
||||
m_Shader: {fileID: 4800000, guid: 4af258f019782954c9c32cd616f51c3b, type: 3}
|
||||
m_Parent: {fileID: 0}
|
||||
m_ModifiedSerializedProperties: 0
|
||||
m_ValidKeywords:
|
||||
- _DISSOLVE_TEX
|
||||
- _VTO_TEX
|
||||
m_InvalidKeywords:
|
||||
- _CADDTEXUVT_ON
|
||||
- _CUSTOMDATADIS_ON
|
||||
- _DISSOLVEAR_ON
|
||||
- _DISSOLVEPLUSTEXAR_ON
|
||||
- _DISSOLVEPLUSTEXUVCLIP_ON
|
||||
- _DISSOLVETEXAR_ON
|
||||
- _DISSOLVETEXUVCLIP_ON
|
||||
- _DISTORTMASKTEXAR_ON
|
||||
- _DISTORTTEXAR_ON
|
||||
- _DISTORTUINTENSITY_ON
|
||||
- _DISTORTVINTENSITY_ON
|
||||
- _FACE_Y
|
||||
- _IFADDTEXCOLOR_ON
|
||||
- _IFBEINGDISTORTED_ON
|
||||
- _IFDISSOLVECOLOR_ON
|
||||
- _MAINTEXUVCLIP_ON
|
||||
- _MASKALPHARA_ON
|
||||
- _MASKPLUSAR_ON
|
||||
- _MASKTEXAR_ON
|
||||
- _MASKTEXUVCLIP_ON
|
||||
- _REFACTIONMASKTEXAR_ON
|
||||
- _REFACTIONTEXAR_ON
|
||||
- _VTOAR_ON
|
||||
- _VTOFACTORCUSTOM_ON
|
||||
- _VTOTEXAR_ON
|
||||
- _VTOTEXUVCLIP_ON
|
||||
m_LightmapFlags: 4
|
||||
m_EnableInstancingVariants: 0
|
||||
m_DoubleSidedGI: 0
|
||||
m_CustomRenderQueue: -1
|
||||
stringTagMap: {}
|
||||
disabledShaderPasses:
|
||||
- Distortion
|
||||
- AfterDistortion
|
||||
m_LockedProperties: _MainTex_ar
|
||||
m_SavedProperties:
|
||||
serializedVersion: 3
|
||||
m_TexEnvs:
|
||||
- _AddTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BaseMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _BumpMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailAlbedoMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailMask:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DetailNormalMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DisslovePlusTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DissloveTex:
|
||||
m_Texture: {fileID: 2800000, guid: 342297fdd4488f949a644a20f8b2e259, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DissolvePlusTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DissolveTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DistortMaskTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _DistortTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _EmissionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MainTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MaskPlusTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MaskTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _MetallicGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _OcclusionMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _ParallaxMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _RefactionMaskTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _RefactionTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _SpecGlossMap:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _VTOMaskTex:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- _VTOTex:
|
||||
m_Texture: {fileID: 2800000, guid: 5392668a037c8bf49b4479948ee1f3fd, type: 3}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_Lightmaps:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_LightmapsInd:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
- unity_ShadowMasks:
|
||||
m_Texture: {fileID: 0}
|
||||
m_Scale: {x: 1, y: 1}
|
||||
m_Offset: {x: 0, y: 0}
|
||||
m_Ints: []
|
||||
m_Floats:
|
||||
- _AddRotate: 0
|
||||
- _AddTexAR: 0
|
||||
- _AddTexBlend: 0
|
||||
- _AddTexC: 0
|
||||
- _AddTexCV: 0
|
||||
- _AddTexUspeed: 0
|
||||
- _AddTexVspeed: 0
|
||||
- _AlphaAdd: 0
|
||||
- _AlphaClip: 0
|
||||
- _AlphaCutoff: 0.5
|
||||
- _AlphaToMask: 0
|
||||
- _Blend: 0
|
||||
- _BlendMode: 0
|
||||
- _BlendModePreserveSpecular: 1
|
||||
- _BumpScale: 1
|
||||
- _CAddTexUV: 0
|
||||
- _CAddTexUVT: 1
|
||||
- _CenterU: 0.5
|
||||
- _CenterV: 0.5
|
||||
- _ClearCoatMask: 0
|
||||
- _ClearCoatSmoothness: 0
|
||||
- _Comparison: 8
|
||||
- _Cull: 2
|
||||
- _CullMode: 0
|
||||
- _Cullmode: 2
|
||||
- _CustomDataToZero: 1
|
||||
- _CustomDissolve: 0
|
||||
- _CustomDissolvePlusTexUOffset: 0
|
||||
- _CustomDissolvePlusTexVOffset: 0
|
||||
- _CustomDissolveTexUOffset: 0
|
||||
- _CustomDissolveTexVOffset: 0
|
||||
- _CustomDistort: 0
|
||||
- _CustomDistortFactor: 0
|
||||
- _CustomMainTexUOffset: 0
|
||||
- _CustomMainTexVOffset: 0
|
||||
- _CustomMaskTexUOffset: 0
|
||||
- _CustomMaskTexVOffset: 0
|
||||
- _CustomRefactionFactor: 0
|
||||
- _CustomVTO: 0
|
||||
- _CustomdataDis: 1
|
||||
- _CustomdataDisT: 0
|
||||
- _CustomdataMainTexUV: 0
|
||||
- _CustomdataMaskUV: 0
|
||||
- _Cutoff: 0.5
|
||||
- _DIssloveFactor: 0.599
|
||||
- _DIssloveSoft: 0
|
||||
- _DIssloveWide: 0.1
|
||||
- _DIssolve_rotat: 0
|
||||
- _DepthFade: 1
|
||||
- _DepthfadeFactor: 1
|
||||
- _Depthfadeon: 0
|
||||
- _DetailAlbedoMapScale: 1
|
||||
- _DetailNormalMapScale: 1
|
||||
- _DisTex_Uspeed: 0
|
||||
- _DisTex_Vspeed: 0
|
||||
- _DissolveAR: 1
|
||||
- _DissolveC: 0
|
||||
- _DissolveCV: 0
|
||||
- _DissolveFactor: 0
|
||||
- _DissolveFactorC: 1
|
||||
- _DissolveFactorC1: 0
|
||||
- _DissolveOffsetUC1: 1
|
||||
- _DissolveOffsetVC1: 1
|
||||
- _DissolvePlusAR: 0
|
||||
- _DissolvePlusC: 0
|
||||
- _DissolvePlusCV: 0
|
||||
- _DissolvePlusIntensity: 0.5
|
||||
- _DissolvePlusR: 0
|
||||
- _DissolvePlusTexAR: 1
|
||||
- _DissolvePlusTexDetail: 0
|
||||
- _DissolvePlusTexRotator: 0
|
||||
- _DissolvePlusTexUClamp: 0
|
||||
- _DissolvePlusTexUMirror: 0
|
||||
- _DissolvePlusTexUOffsetC: 1
|
||||
- _DissolvePlusTexUSpeed: 0
|
||||
- _DissolvePlusTexUVClip: 1
|
||||
- _DissolvePlusTexVClamp: 0
|
||||
- _DissolvePlusTexVMirror: 0
|
||||
- _DissolvePlusTexVOffsetC: 1
|
||||
- _DissolvePlusTexVSpeed: 0
|
||||
- _DissolveSoft: 0.1
|
||||
- _DissolveTexAR: 1
|
||||
- _DissolveTexDetail: 0
|
||||
- _DissolveTexDivide: 1
|
||||
- _DissolveTexExp: 10
|
||||
- _DissolveTexRotator: 0
|
||||
- _DissolveTexUClamp: 0
|
||||
- _DissolveTexUMirror: 0
|
||||
- _DissolveTexUOffsetC: 1
|
||||
- _DissolveTexUSpeed: 0
|
||||
- _DissolveTexUVClip: 1
|
||||
- _DissolveTexVClamp: 0
|
||||
- _DissolveTexVMirror: 0
|
||||
- _DissolveTexVOffsetC: 1
|
||||
- _DissolveTexVSpeed: 0
|
||||
- _DissolveWide: 0.05
|
||||
- _DistortDissolveTex: 0
|
||||
- _DistortFactor: 0
|
||||
- _DistortFactorC: 1
|
||||
- _DistortFactorC1: 1
|
||||
- _DistortMainTex: 0
|
||||
- _DistortMask: 0
|
||||
- _DistortMaskTex: 0
|
||||
- _DistortMaskTexAR: 1
|
||||
- _DistortMaskTexC: 0
|
||||
- _DistortMaskTexCV: 0
|
||||
- _DistortMaskTexR: 0
|
||||
- _DistortRemap: 0
|
||||
- _DistortTexAR: 1
|
||||
- _DistortTexDetail: 0
|
||||
- _DistortTexRotator: 0
|
||||
- _DistortTexUMirror: 0
|
||||
- _DistortTexUSpeed: 0
|
||||
- _DistortTexVMirror: 0
|
||||
- _DistortTexVSpeed: 0
|
||||
- _DistortTex_Uspeed: 0
|
||||
- _DistortTex_Vspeed: 0
|
||||
- _DistortUIntensity: 1
|
||||
- _DistortVIntensity: 1
|
||||
- _Dst: 10
|
||||
- _DstBlend: 0
|
||||
- _DstBlendAlpha: 0
|
||||
- _EnvironmentReflections: 1
|
||||
- _FDepth: 0
|
||||
- _FDissolvePlusTex: 0
|
||||
- _FDissolveTex: 0
|
||||
- _FDistortTex: 0
|
||||
- _FFnl: 0
|
||||
- _FMaskTex: 0
|
||||
- _FNLfanxiangkaiguan: 0
|
||||
- _Face: 1
|
||||
- _Fail: 0
|
||||
- _FnlPower: 1
|
||||
- _FnlScale: 0
|
||||
- _GlossMapScale: 0
|
||||
- _Glossiness: 0
|
||||
- _GlossyReflections: 0
|
||||
- _IfAddTex: 0
|
||||
- _IfAddTexAlpha: 0
|
||||
- _IfAddTexColor: 1
|
||||
- _IfBeingDistorted: 1
|
||||
- _IfDissolveColor: 1
|
||||
- _IfDissolveOffsetC: 0
|
||||
- _IfDissolvePlus: 0
|
||||
- _IfFNLAlpha: 0
|
||||
- _IfFlowmap: 0
|
||||
- _IfMaskColor: 0
|
||||
- _IfMaskPlusTex: 0
|
||||
- _IfRefaction: 0
|
||||
- _IfRefactionMask: 0
|
||||
- _IfVTO: 0
|
||||
- _MainAlpha: 1
|
||||
- _MainOffsetUC1: 0
|
||||
- _MainOffsetVC1: 0
|
||||
- _MainRGBA: 14
|
||||
- _MainTexAR: 0
|
||||
- _MainTexCAFator: 0
|
||||
- _MainTexDesaturate: 0
|
||||
- _MainTexDetail: 0
|
||||
- _MainTexRotator: 0
|
||||
- _MainTexUClamp: 0
|
||||
- _MainTexUMirror: 0
|
||||
- _MainTexUOffsetC: 1
|
||||
- _MainTexUSpeed: 0
|
||||
- _MainTexUVClip: 1
|
||||
- _MainTexVClamp: 0
|
||||
- _MainTexVMirror: 0
|
||||
- _MainTexVOffsetC: 1
|
||||
- _MainTexVSpeed: 0
|
||||
- _MainTex_Uspeed: 0
|
||||
- _MainTex_Vspeed: 0
|
||||
- _MainTex_ar: 0
|
||||
- _MainTex_rotat: 0
|
||||
- _MaintexC: 0
|
||||
- _MaintexCV: 0
|
||||
- _MaskAlphaRA: 1
|
||||
- _MaskC: 0
|
||||
- _MaskCV: 0
|
||||
- _MaskOffsetUC1: 0
|
||||
- _MaskOffsetVC1: 0
|
||||
- _MaskPlusAR: 1
|
||||
- _MaskPlusC: 0
|
||||
- _MaskPlusCV: 0
|
||||
- _MaskPlusR: 0
|
||||
- _MaskPlusUspeed: 0
|
||||
- _MaskPlusVspeed: 0
|
||||
- _MaskTexAR: 1
|
||||
- _MaskTexDetail: 0
|
||||
- _MaskTexRotator: 0
|
||||
- _MaskTexUClamp: 0
|
||||
- _MaskTexUMirror: 0
|
||||
- _MaskTexUOffsetC: 1
|
||||
- _MaskTexUSpeed: 0
|
||||
- _MaskTexUVClip: 1
|
||||
- _MaskTexVClamp: 0
|
||||
- _MaskTexVMirror: 0
|
||||
- _MaskTexVOffsetC: 1
|
||||
- _MaskTexVSpeed: 0
|
||||
- _Mask_Uspeed: 0
|
||||
- _Mask_Vspeed: 0
|
||||
- _Mask_rotat: 0
|
||||
- _Mask_scale: 1
|
||||
- _Metallic: 0
|
||||
- _OcclusionStrength: 1
|
||||
- _Parallax: 0.005
|
||||
- _Pass: 0
|
||||
- _QueueControl: -1
|
||||
- _QueueOffset: 0
|
||||
- _ReFnl: 0
|
||||
- _ReceiveShadows: 1
|
||||
- _RefactionFactor: 0
|
||||
- _RefactionFactorC: 1
|
||||
- _RefactionMaskTexAR: 1
|
||||
- _RefactionMaskTexDetail: 0
|
||||
- _RefactionMaskTexRotator: 0
|
||||
- _RefactionMaskTexUClamp: 0
|
||||
- _RefactionMaskTexUMirror: 0
|
||||
- _RefactionMaskTexUSpeed: 0
|
||||
- _RefactionMaskTexUVClip: 0
|
||||
- _RefactionMaskTexVClamp: 0
|
||||
- _RefactionMaskTexVMirror: 0
|
||||
- _RefactionMaskTexVSpeed: 0
|
||||
- _RefactionRemap: 0
|
||||
- _RefactionTexAR: 1
|
||||
- _RefactionTexDetail: 0
|
||||
- _RefactionTexRotator: 0
|
||||
- _RefactionTexUMirror: 0
|
||||
- _RefactionTexUSpeed: 0
|
||||
- _RefactionTexVMirror: 0
|
||||
- _RefactionTexVSpeed: 0
|
||||
- _Reference: 0
|
||||
- _SB: 0
|
||||
- _SBCompare: 0
|
||||
- _SceenTex: 0
|
||||
- _Scr: 5
|
||||
- _Smoothness: 0.5
|
||||
- _SmoothnessTextureChannel: 0
|
||||
- _SpecularHighlights: 1
|
||||
- _SrcBlend: 1
|
||||
- _SrcBlendAlpha: 1
|
||||
- _Surface: 0
|
||||
- _TextureUScale: 1
|
||||
- _TextureUValue: 0
|
||||
- _TextureVScale: 1
|
||||
- _TextureVValue: 0
|
||||
- _UVPolar: 0
|
||||
- _VTOAR: 1
|
||||
- _VTOC: 0
|
||||
- _VTOCV: 0
|
||||
- _VTOFactor: 0
|
||||
- _VTOFactorC1: 1
|
||||
- _VTOFactorCustom: 1
|
||||
- _VTOR: 0
|
||||
- _VTORemap: 0
|
||||
- _VTOScale: 1
|
||||
- _VTOScaleC: 1
|
||||
- _VTOTexAR: 1
|
||||
- _VTOTexDetail: 0
|
||||
- _VTOTexRotator: 0
|
||||
- _VTOTexUClamp: 0
|
||||
- _VTOTexUMirror: 0
|
||||
- _VTOTexUSpeed: 0
|
||||
- _VTOTexUVClip: 1
|
||||
- _VTOTexVClamp: 0
|
||||
- _VTOTexVMirror: 0
|
||||
- _VTOTexVSpeed: 0
|
||||
- _VTOTex_Uspeed: 0
|
||||
- _VTOTex_Vspeed: 0
|
||||
- _WorkflowMode: 1
|
||||
- _ZTest: 4
|
||||
- _ZWrite: 1
|
||||
- _Ztest: 4
|
||||
- _Zwrite: 0
|
||||
- __dirty: 1
|
||||
- _fnl_power: 3.45
|
||||
- _fnl_sacle: 1
|
||||
- _softFacotr: 0
|
||||
- _sot_sting_A: 0
|
||||
m_Colors:
|
||||
- _AddTexBlendModeVec4: {r: 1, g: 0, b: 0, a: 0}
|
||||
- _AddTexColor: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _BackFaceColor: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _DIssloveColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _Dir: {r: 0, g: 0, b: 0, a: 0}
|
||||
- _DissolveColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _DissolveFactorC2Vec4: {r: 0, g: 0, b: 1, a: 0}
|
||||
- _DissolveOffsetUC2Vec4: {r: 1, g: 0, b: 0, a: 0}
|
||||
- _DissolveOffsetVC2Vec4: {r: 0, g: 1, b: 0, a: 0}
|
||||
- _DistortFactorC2Vec4: {r: 0, g: 0, b: 1, a: 0}
|
||||
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _FnlColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
- _MainColor: {r: 0.0050000013, g: 0.032580644, b: 0.1, a: 1}
|
||||
- _MainOffsetUC2Vec4: {r: 1, g: 0, b: 0, a: 0}
|
||||
- _MainOffsetVC2Vec4: {r: 0, g: 1, b: 0, a: 0}
|
||||
- _MainTexRefine: {r: 1, g: 1, b: 1, a: 0}
|
||||
- _MaskOffsetUC2Vec4: {r: 0, g: 0, b: 1, a: 0}
|
||||
- _MaskOffsetVC2Vec4: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
|
||||
- _VTOFactorC2Vec4: {r: 0, g: 0, b: 0, a: 1}
|
||||
- _fnl_color: {r: 3.4680061, g: 12.21937, b: 12.844468, a: 1}
|
||||
m_BuildTextureStacks: []
|
||||
--- !u!114 &3905949624757751178
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 11
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
version: 7
|
||||
8
Assets/000_assets/M_tap_01 1.mat.meta
Executable file
8
Assets/000_assets/M_tap_01 1.mat.meta
Executable file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ed3350df76a990c4ba0848b24f43a95d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 2100000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
4908
Assets/000_assets/tap_a2_HitEffect.prefab
Executable file
4908
Assets/000_assets/tap_a2_HitEffect.prefab
Executable file
File diff suppressed because it is too large
Load Diff
7
Assets/000_assets/tap_a2_HitEffect.prefab.meta
Executable file
7
Assets/000_assets/tap_a2_HitEffect.prefab.meta
Executable file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 309440712cd69174087f4d2526ad1502
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
8
Assets/000_assets/tex.meta
Normal file
8
Assets/000_assets/tex.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 49687f59f681442a1b52b5c7fe3f60b5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/000_assets/tex/0_white.tga
Executable file
BIN
Assets/000_assets/tex/0_white.tga
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
144
Assets/000_assets/tex/0_white.tga.meta
Executable file
144
Assets/000_assets/tex/0_white.tga.meta
Executable file
@@ -0,0 +1,144 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5392668a037c8bf49b4479948ee1f3fd
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 2
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 8192
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 8192
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 8192
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 8192
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Windows Store Apps
|
||||
maxTextureSize: 8192
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
BIN
Assets/000_assets/tex/tap_a2_uv.png
Executable file
BIN
Assets/000_assets/tex/tap_a2_uv.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 117 KiB |
127
Assets/000_assets/tex/tap_a2_uv.png.meta
Executable file
127
Assets/000_assets/tex/tap_a2_uv.png.meta
Executable file
@@ -0,0 +1,127 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 342297fdd4488f949a644a20f8b2e259
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 12
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 1
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 0
|
||||
wrapV: 0
|
||||
wrapW: 0
|
||||
nPOTScale: 1
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 0
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 0
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Server
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -140,9 +140,6 @@ MonoBehaviour:
|
||||
- Name: elementGuid
|
||||
Entry: 2
|
||||
Data: 00000000000000000000000000000000
|
||||
- Name: matchedBM
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name: submoduleList
|
||||
Entry: 7
|
||||
Data: 0|System.Collections.Generic.List`1[[Ichni.RhythmGame.SubmoduleBase,
|
||||
@@ -156,21 +153,10 @@ MonoBehaviour:
|
||||
- Name:
|
||||
Entry: 8
|
||||
Data:
|
||||
- Name: timeDurationSubmodule
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name: transformSubmodule
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name: colorSubmodule
|
||||
Entry: 6
|
||||
Data:
|
||||
- Name: PathNode+colorSubmodule
|
||||
Entry: 6
|
||||
Data:
|
||||
elementName:
|
||||
tags: []
|
||||
parentElement: {fileID: 0}
|
||||
connectedTab: {fileID: 0}
|
||||
childElementList: []
|
||||
track: {fileID: 0}
|
||||
node:
|
||||
@@ -181,3 +167,5 @@ MonoBehaviour:
|
||||
size: 0
|
||||
tangent: {x: 0, y: 0, z: 0}
|
||||
tangent2: {x: 0, y: 0, z: 0}
|
||||
pathNodeSphere: {fileID: 2852814640559356108}
|
||||
isShowingSphere: 0
|
||||
|
||||
@@ -211,7 +211,7 @@ namespace Ichni.Editor
|
||||
float x = xs + (xe - xs) / loop * i;
|
||||
float y = ys + (ye - ys) / loop * i;
|
||||
float z = zs + (ze - zs) / loop * i;
|
||||
PathNode j = PathNode.GenerateElement("PathNode" + i.ToString(), Guid.NewGuid(), new List<string>(), true, track);
|
||||
PathNode j = PathNode.GenerateElement("PathNode" + i.ToString(), Guid.NewGuid(), new List<string>(), true, track, true);
|
||||
j.transformSubmodule.originalPosition = new Vector3(x, y, z);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,6 @@ namespace Ichni.RhythmGame
|
||||
List<EffectBase> effectList = new List<EffectBase>();
|
||||
foreach (var effectBM in effect.Value)
|
||||
{
|
||||
Debug.Log(attachedGameElement.GetType().ToString());
|
||||
effectList.Add(effectBM.ConvertToGameType(attachedGameElement));
|
||||
}
|
||||
effectCollection.Add(effect.Key, effectList);
|
||||
|
||||
@@ -2,6 +2,7 @@ using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Dreamteck.Splines;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using Lean.Pool;
|
||||
using Unity.VisualScripting;
|
||||
@@ -52,6 +53,18 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
matchedBM = new Tap_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM, exactJudgeTime);
|
||||
}
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
base.SetUpInspector();
|
||||
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
var container = inspector.GenerateContainer("Generate");
|
||||
var generateNoteVisualButton = inspector.GenerateButton(this, container, "Generate Note Visual", () =>
|
||||
{
|
||||
TemporaryObject.GenerateElement("New Note Visual", Guid.NewGuid(), new List<string>(), true, this);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
|
||||
@@ -21,10 +21,22 @@ namespace Ichni.RhythmGame
|
||||
GameObject themeBundleObject = ThemeBundleManager.instance.GetObject<GameObject>(themeBundleName, objectName);
|
||||
SubstantialObject substantialObject = Instantiate(themeBundleObject, parentElement.transform).GetComponent<SubstantialObject>();
|
||||
substantialObject.Initialize(elementName, id, tags, isFirstGenerated, parentElement);
|
||||
|
||||
substantialObject.themeBundleName = themeBundleName;
|
||||
substantialObject.objectName = objectName;
|
||||
substantialObject.FirstSetUpObject(isFirstGenerated);
|
||||
return substantialObject;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 初次生成继承自SubstantialObject的对象时,生成方法必然使用SubstantialObject中的GenerateElement方法。
|
||||
/// 因此对于需要进行特殊处理的子类,需要重写FirstSetUpObject方法。
|
||||
/// 在读取Beatmap时,生成物体则使用子类本身的GenerateElement方法。
|
||||
/// </summary>
|
||||
public virtual void FirstSetUpObject(bool isFirstGenerated)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void SetDefaultSubmodules()
|
||||
{
|
||||
transformSubmodule = new TransformSubmodule(this);
|
||||
|
||||
@@ -54,7 +54,7 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
Delete();
|
||||
inspectorMain.ClearInspector();
|
||||
SubstantialObject.GenerateElement(elementName, elementGuid, tags, false, themeBundleName, objectName, parentElement);
|
||||
SubstantialObject.GenerateElement(elementName, elementGuid, tags, true, themeBundleName, objectName, parentElement);
|
||||
});
|
||||
|
||||
if (themeBundleName == String.Empty || objectName == String.Empty)
|
||||
|
||||
@@ -14,18 +14,20 @@ namespace Ichni.RhythmGame
|
||||
public partial class PathNode : GameElement, IHaveTransformSubmodule, IHaveTimeDurationSubmodule, IHaveColorSubmodule
|
||||
{
|
||||
public Track track;
|
||||
|
||||
public int index => track.trackPathSubmodule.pathNodeList.IndexOf(this);
|
||||
|
||||
public SplinePoint node;
|
||||
|
||||
public int index => track.trackPathSubmodule.pathNodeList.IndexOf(this);
|
||||
public TransformSubmodule transformSubmodule { get; set; }
|
||||
public TimeDurationSubmodule timeDurationSubmodule { get; set; }
|
||||
public ColorSubmodule colorSubmodule { get; set; }
|
||||
public bool haveEmission => false;
|
||||
|
||||
[Title("Editor独有参数")]
|
||||
[SerializeField] [HideInPlayMode]
|
||||
private GameObject pathNodeSphere;
|
||||
public bool isShowingSphere;
|
||||
|
||||
public static PathNode GenerateElement(string elementName, Guid id, List<string> tags, bool isFirstGenerated,
|
||||
Track track)
|
||||
Track track, bool isShowingSphere)
|
||||
{
|
||||
PathNode pathNode = Instantiate(EditorManager.instance.basePrefabs.pathNode, track.transform)
|
||||
.GetComponent<PathNode>();
|
||||
@@ -33,6 +35,8 @@ namespace Ichni.RhythmGame
|
||||
pathNode.Initialize(elementName, id, tags, isFirstGenerated, track);
|
||||
|
||||
pathNode.track = track;
|
||||
pathNode.isShowingSphere = isShowingSphere;
|
||||
pathNode.SetPathNodeSphere(isShowingSphere);
|
||||
track.trackPathSubmodule.pathNodeList.Add(pathNode);
|
||||
|
||||
return pathNode;
|
||||
@@ -78,7 +82,13 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new Beatmap.PathNode_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM);
|
||||
matchedBM = new Beatmap.PathNode_BM(elementName, elementGuid, tags, parentElement.matchedBM as GameElement_BM, isShowingSphere);
|
||||
}
|
||||
|
||||
public void SetPathNodeSphere(bool isShowing)
|
||||
{
|
||||
isShowingSphere = isShowing;
|
||||
pathNodeSphere.SetActive(isShowing);
|
||||
}
|
||||
|
||||
public override void SetUpInspector()
|
||||
@@ -89,6 +99,8 @@ namespace Ichni.RhythmGame
|
||||
|
||||
var container = inspector.GenerateContainer("Path Node");
|
||||
var indexText = inspector.GenerateHintText(this, container, "Index: " + index);
|
||||
var isShowingSphereToggle = inspector.GenerateToggle(this, container, "Is Showing Sphere", nameof(isShowingSphere));
|
||||
isShowingSphereToggle.AddListenerFunction(SetPathNodeSphere);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,26 +108,28 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
public class PathNode_BM : GameElement_BM
|
||||
{
|
||||
public bool isShowingSphere;
|
||||
public PathNode_BM()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public PathNode_BM(string elementName, Guid elementGuid, List<string> tags, GameElement_BM attachedElement)
|
||||
public PathNode_BM(string elementName, Guid elementGuid, List<string> tags, GameElement_BM attachedElement,
|
||||
bool isShowingSphere)
|
||||
: base(elementName, elementGuid, tags, attachedElement)
|
||||
{
|
||||
|
||||
this.isShowingSphere = isShowingSphere;
|
||||
}
|
||||
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
matchedElement = PathNode.GenerateElement(elementName, elementGuid, tags, false,
|
||||
GetElement(attachedElementGuid) as Track);
|
||||
GetElement(attachedElementGuid) as Track, isShowingSphere);
|
||||
}
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return PathNode.GenerateElement(elementName, elementGuid, tags, false, parent as Track);
|
||||
return PathNode.GenerateElement(elementName, elementGuid, tags, false, parent as Track, isShowingSphere);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,35 +75,35 @@ namespace Ichni.RhythmGame
|
||||
Inspector inspectorMain = EditorManager.instance.uiManager.inspector;
|
||||
base.SetUpInspector();
|
||||
|
||||
var container = inspector.GenerateContainer("Track");
|
||||
var trackPathButton = inspector.GenerateButton(this, container, "Track Path",
|
||||
var trackSubmodulesContainer = inspector.GenerateContainer("Track Submodules"); //次级模块
|
||||
var trackPathButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Path",
|
||||
() =>
|
||||
{
|
||||
trackPathSubmodule = new TrackPathSubmodule(this, TrackSpaceType.CatmullRom,
|
||||
TrackSamplingType.TimeDistributed, false);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
var trackTimeMovableButton = inspector.GenerateButton(this, container, "Track Time Movable",
|
||||
var trackTimeMovableButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Time Movable",
|
||||
() =>
|
||||
{
|
||||
trackTimeSubmodule = new TrackTimeSubmoduleMovable(this, 0, 1, 1, AnimationCurveType.Linear);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
var trackTimeStaticButton = inspector.GenerateButton(this, container, "Track Time Static",
|
||||
var trackTimeStaticButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Time Static",
|
||||
() =>
|
||||
{
|
||||
trackTimeSubmodule = new TrackTimeSubmoduleStatic(this, 1, AnimationCurveType.Linear);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
|
||||
var trackRendererAutoOrientButton = inspector.GenerateButton(this, container, "Track Renderer Auto Orient",
|
||||
var trackRendererAutoOrientButton = inspector.GenerateButton(this, trackSubmodulesContainer, "Track Renderer Auto Orient",
|
||||
() =>
|
||||
{
|
||||
trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(this);
|
||||
inspectorMain.SetInspector(this);
|
||||
});
|
||||
|
||||
var trackRendererPathGeneratorButton = inspector.GenerateButton(this, container,
|
||||
var trackRendererPathGeneratorButton = inspector.GenerateButton(this, trackSubmodulesContainer,
|
||||
"Track Renderer Path Generator",
|
||||
() =>
|
||||
{
|
||||
@@ -131,21 +131,70 @@ namespace Ichni.RhythmGame
|
||||
trackRendererSubmodule.SetUpInspector();
|
||||
}
|
||||
|
||||
var displacementButton = inspector.GenerateButton(this, container, "Displacement",
|
||||
var generateContainer = inspector.GenerateContainer("Generate Elements"); //物体生成
|
||||
|
||||
var pathNodeButton = inspector.GenerateButton(this, generateContainer, "Path Node",
|
||||
() =>
|
||||
{
|
||||
PathNode.GenerateElement("New Path Node", Guid.NewGuid(), new List<string>(), true, this, true);
|
||||
}); //路径点
|
||||
|
||||
var trackPercentPointButton = inspector.GenerateButton(this, generateContainer, "Track Percent Point",
|
||||
() =>
|
||||
{
|
||||
TrackPercentPoint.GenerateElement("New Track Percent Point", Guid.NewGuid(), new List<string>(),
|
||||
true, this, new FlexibleFloat());
|
||||
}); //百分比点
|
||||
|
||||
var trackHeadPointButton = inspector.GenerateButton(this, generateContainer, "Track Head Point",
|
||||
() =>
|
||||
{
|
||||
TrackHeadPoint.GenerateElement("New Track Head Point", Guid.NewGuid(), new List<string>(),
|
||||
true, this);
|
||||
}); //头部点(必须先有TrackTimeSubmoduleMovable)
|
||||
if (trackTimeSubmodule is not TrackTimeSubmoduleMovable) trackHeadPointButton.button.interactable = false;
|
||||
|
||||
var tapButton = inspector.GenerateButton(this, generateContainer, "Tap",
|
||||
() =>
|
||||
{
|
||||
Tap.GenerateElement("New Tap", Guid.NewGuid(), new List<string>(), true, this, 0f);
|
||||
}); //Note Tap
|
||||
|
||||
var stayButton = inspector.GenerateButton(this, generateContainer, "Stay",
|
||||
() =>
|
||||
{
|
||||
Stay.GenerateElement("New Stay", Guid.NewGuid(), new List<string>(), true, this, 0f);
|
||||
}); //Note Stay
|
||||
|
||||
// var holdButton = inspector.GenerateButton(this, generateContainer, "Hold",
|
||||
// () =>
|
||||
// {
|
||||
// Hold.GenerateElement("New Hold", Guid.NewGuid(), new List<string>(), true, this, 0f);
|
||||
// }); //Note Hold
|
||||
|
||||
var flickButton = inspector.GenerateButton(this, generateContainer, "Flick",
|
||||
() =>
|
||||
{
|
||||
Flick.GenerateElement("New Flick", Guid.NewGuid(), new List<string>(), true, this, 0f,
|
||||
new List<Vector2>());
|
||||
}); //Note Flick
|
||||
|
||||
var displacementButton = inspector.GenerateButton(this, generateContainer, "Displacement",
|
||||
() =>
|
||||
{
|
||||
Displacement.GenerateElement("New Displacement", Guid.NewGuid(), new List<string>(), true, this,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
});
|
||||
}); //位移
|
||||
|
||||
var swirlButton = inspector.GenerateButton(this, container, "Swirl",
|
||||
var swirlButton = inspector.GenerateButton(this, generateContainer, "Swirl",
|
||||
() =>
|
||||
{
|
||||
Swirl.GenerateElement("New Swirl", Guid.NewGuid(), new List<string>(), true, this,
|
||||
new FlexibleFloat(), new FlexibleFloat(), new FlexibleFloat());
|
||||
});
|
||||
}); //旋转
|
||||
|
||||
var QuickCopyButton = inspector.GenerateButton(this, container, "QuickCopy", () =>
|
||||
var toolsContainerTrack = inspector.GenerateContainer("Track Tools"); //轨道(整体)快捷工具
|
||||
var quickCopyButton = inspector.GenerateButton(this, toolsContainerTrack, "QuickCopy", () =>
|
||||
{
|
||||
IHaveInspection qcWindow = inspectorMain.GenerateSecondaryWindow(this, elementName + "'s Quick Copy");
|
||||
var qcContainer = qcWindow.GenerateContainer();
|
||||
@@ -163,9 +212,72 @@ namespace Ichni.RhythmGame
|
||||
bool includeAnimation = includeAnimationToggle.toggle.isOn;
|
||||
QuickCopy(positionOffset, timeOffset, includeAnimation, iteration);
|
||||
});
|
||||
}); //快速复制
|
||||
|
||||
var wholeTrackMoveButton = inspector.GenerateButton(this, toolsContainerTrack, "Whole Track Move", () =>
|
||||
{
|
||||
IHaveInspection wholeMoveWindow = inspectorMain.GenerateSecondaryWindow(this, elementName + "'s Whole Track Move");
|
||||
var wmContainer = wholeMoveWindow.GenerateContainer();
|
||||
var xField = wholeMoveWindow.GenerateGetterInputField(wmContainer, "X offset", "0");
|
||||
var yField = wholeMoveWindow.GenerateGetterInputField(wmContainer, "Y offset", "0");
|
||||
var zField = wholeMoveWindow.GenerateGetterInputField(wmContainer, "Z offset", "0");
|
||||
wholeMoveWindow.GenerateButton(this, wmContainer, "Move", () =>
|
||||
{
|
||||
Vector3 positionOffset = new Vector3(xField.GetResult<float>(), yField.GetResult<float>(), zField.GetResult<float>());
|
||||
WholeTrackMove(positionOffset);
|
||||
});
|
||||
}); //整体移动
|
||||
|
||||
var wholeTrackSwirlButton = inspector.GenerateButton(this, toolsContainerTrack, "Whole Track Swirl", () =>
|
||||
{
|
||||
IHaveInspection wholeSwirlWindow = inspectorMain.GenerateSecondaryWindow(this, elementName + "'s Whole Track Swirl");
|
||||
var wsContainer = wholeSwirlWindow.GenerateContainer();
|
||||
var angleField = wholeSwirlWindow.GenerateGetterInputField(wsContainer, "Angle", "0");
|
||||
var centerXField = wholeSwirlWindow.GenerateGetterInputField(wsContainer, "Center X", "0");
|
||||
var centerYField = wholeSwirlWindow.GenerateGetterInputField(wsContainer, "Center Y", "0");
|
||||
var centerZField = wholeSwirlWindow.GenerateGetterInputField(wsContainer, "Center Z", "0");
|
||||
var axisDirXField = wholeSwirlWindow.GenerateGetterInputField(wsContainer, "Axis Direction X", "0");
|
||||
var axisDirYField = wholeSwirlWindow.GenerateGetterInputField(wsContainer, "Axis Direction Y", "0");
|
||||
var axisDirZField = wholeSwirlWindow.GenerateGetterInputField(wsContainer, "Axis Direction Z", "0");
|
||||
wholeSwirlWindow.GenerateButton(this, wsContainer, "Swirl", () =>
|
||||
{
|
||||
float angle = angleField.GetResult<float>();
|
||||
Vector3 center = new Vector3(centerXField.GetResult<float>(), centerYField.GetResult<float>(), centerZField.GetResult<float>());
|
||||
Vector3 axisDirection = new Vector3(axisDirXField.GetResult<float>(), axisDirYField.GetResult<float>(), axisDirZField.GetResult<float>());
|
||||
WholeTrackSwirl(angle, center, axisDirection);
|
||||
});
|
||||
}); //整体旋转
|
||||
|
||||
var wholeTrackFlipButton = inspector.GenerateButton(this, toolsContainerTrack, "Whole Track Flip", () =>
|
||||
{
|
||||
IHaveInspection wholeFlipWindow = inspectorMain.GenerateSecondaryWindow(this, elementName + "'s Whole Track Flip");
|
||||
var wfContainer = wholeFlipWindow.GenerateContainer();
|
||||
var axisStartXField = wholeFlipWindow.GenerateGetterInputField(wfContainer, "Axis Start X", "0");
|
||||
var axisStartYField = wholeFlipWindow.GenerateGetterInputField(wfContainer, "Axis Start Y", "0");
|
||||
var axisStartZField = wholeFlipWindow.GenerateGetterInputField(wfContainer, "Axis Start Z", "0");
|
||||
var axisEndXField = wholeFlipWindow.GenerateGetterInputField(wfContainer, "Axis End X", "0");
|
||||
var axisEndYField = wholeFlipWindow.GenerateGetterInputField(wfContainer, "Axis End Y", "0");
|
||||
var axisEndZField = wholeFlipWindow.GenerateGetterInputField(wfContainer, "Axis End Z", "0");
|
||||
wholeFlipWindow.GenerateButton(this, wfContainer, "Flip", () =>
|
||||
{
|
||||
Vector3 axisStart = new Vector3(axisStartXField.GetResult<float>(), axisStartYField.GetResult<float>(), axisStartZField.GetResult<float>());
|
||||
Vector3 axisEnd = new Vector3(axisEndXField.GetResult<float>(), axisEndYField.GetResult<float>(), axisEndZField.GetResult<float>());
|
||||
WholeTrackFlip(axisStart, axisEnd);
|
||||
});
|
||||
}); //整体翻转
|
||||
|
||||
var toolsContainerPathNode = inspector.GenerateContainer("Path Node Tools"); //路径点快捷工具
|
||||
var setAllPathNodeSphereButton = inspector.GenerateButton(this, toolsContainerPathNode,
|
||||
"Set All Path Node Sphere", () =>
|
||||
{
|
||||
bool firstPathNodeSphere = trackPathSubmodule.pathNodeList[0].isShowingSphere;
|
||||
SetAllPathNodeSphere(!firstPathNodeSphere);
|
||||
});
|
||||
|
||||
container.SetDeviver(1);
|
||||
var setOnlyStartEndPathNodeSphereEnabledButton = inspector.GenerateButton(this, toolsContainerPathNode,
|
||||
"Only Start & End Path Node's sphere enabled", SetOnlyStartEndPathNodeSphereEnabled);
|
||||
|
||||
trackSubmodulesContainer.SetDeviver(1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ namespace Ichni.RhythmGame
|
||||
isClosedToggle.AddListenerFunction(_ => ClosePath());
|
||||
var generatePathNodeButton = inspector.GenerateButton(this, container, "Generate Path Node", () =>
|
||||
{
|
||||
PathNode.GenerateElement("New Path Node", Guid.NewGuid(), new List<string>(), true, track);
|
||||
PathNode.GenerateElement("New Path Node", Guid.NewGuid(), new List<string>(), true, track, true);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,6 @@ using Dreamteck.Splines;
|
||||
using Ichni.Editor;
|
||||
using Unity.VisualScripting;
|
||||
using UnityEngine;
|
||||
using Inspector = Unity.VisualScripting.Inspector;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
|
||||
@@ -16,8 +16,8 @@ namespace Ichni.RhythmGame
|
||||
/// <param name="iteration">迭代次数,即产生几个粘贴的Track</param>
|
||||
private void QuickCopy(Vector3 unitPositionOffset, float unitTimeOffset, bool includeAnimations = true, int iteration = 1)
|
||||
{
|
||||
if(iteration <= 0) return;
|
||||
|
||||
if (iteration <= 0) return;
|
||||
|
||||
CopyPasteDeleteModule cpd = EditorManager.instance.operationManager.CopyPasteDeleteModule;
|
||||
cpd.CopyElement(this);
|
||||
for (int i = 1; i <= iteration; i++)
|
||||
@@ -26,31 +26,34 @@ namespace Ichni.RhythmGame
|
||||
Track newTrack = cpd.pastedElementList[0] as Track;
|
||||
Vector3 positionOffset = unitPositionOffset * i;
|
||||
float timeOffset = unitTimeOffset * i;
|
||||
|
||||
//对Track的所有有效的Submodule和子GameElement进行偏移
|
||||
if (newTrack.trackTimeSubmodule is TrackTimeSubmoduleMovable movable)
|
||||
{
|
||||
movable.trackStartTime += timeOffset;
|
||||
movable.trackEndTime += timeOffset;
|
||||
}
|
||||
|
||||
|
||||
//以下:对Track的所有有效的Submodule和子GameElement进行偏移 TODO: 需要思考是否有统一时间偏移的方法?
|
||||
|
||||
//PathNode,位置偏移
|
||||
newTrack.trackPathSubmodule.pathNodeList.ForEach(pn =>
|
||||
{
|
||||
pn.transformSubmodule.originalPosition += positionOffset;
|
||||
pn.transformSubmodule.Refresh();
|
||||
});
|
||||
|
||||
|
||||
|
||||
//TrackTimeSubmoduleMovable,时间偏移
|
||||
if (newTrack.trackTimeSubmodule is TrackTimeSubmoduleMovable movable)
|
||||
{
|
||||
movable.trackStartTime += timeOffset;
|
||||
movable.trackEndTime += timeOffset;
|
||||
}
|
||||
|
||||
//获取所有newTrack及之下(所有layer)的GameElement
|
||||
List<GameElement> allNewGameElements = newTrack.GetAllGameElementsFromThis();
|
||||
|
||||
List<TrackPercentPoint> percentPoints = allNewGameElements
|
||||
.FindAll(x => x is TrackPercentPoint).Cast<TrackPercentPoint>().ToList();
|
||||
//TrackPercentPoint,时间偏移
|
||||
List<TrackPercentPoint> percentPoints = allNewGameElements.FindAll(x => x is TrackPercentPoint).Cast<TrackPercentPoint>().ToList();
|
||||
percentPoints.ForEach(pp =>
|
||||
{
|
||||
pp.trackPercent.animations.ForEach(anim => anim.ApplyTimeOffset(timeOffset));
|
||||
});
|
||||
|
||||
|
||||
//Note,时间偏移
|
||||
List<NoteBase> notes = allNewGameElements.FindAll(x => x is NoteBase).Cast<NoteBase>().ToList();
|
||||
notes.ForEach(note =>
|
||||
{
|
||||
@@ -58,19 +61,97 @@ namespace Ichni.RhythmGame
|
||||
note.Refresh();
|
||||
});
|
||||
|
||||
//Animation,时间偏移(可以根据需要选择是否偏移)
|
||||
if (includeAnimations)
|
||||
{
|
||||
List<AnimationBase> animations = allNewGameElements
|
||||
.FindAll(x => x.GetType().IsSubclassOf(typeof(AnimationBase))).Cast<AnimationBase>().ToList();
|
||||
|
||||
animations.ForEach(anim =>
|
||||
{
|
||||
anim.ApplyTimeOffset(timeOffset);
|
||||
});
|
||||
.FindAll(x => x is AnimationBase).Cast<AnimationBase>().ToList();
|
||||
|
||||
animations.ForEach(anim => { anim.ApplyTimeOffset(timeOffset); });
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
cpd.pastedElementList.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Track整体移动
|
||||
/// </summary>
|
||||
/// <param name="positionOffset">坐标偏移量</param>
|
||||
private void WholeTrackMove(Vector3 positionOffset)
|
||||
{
|
||||
trackPathSubmodule.pathNodeList.ForEach(pn =>
|
||||
{
|
||||
pn.transformSubmodule.originalPosition += positionOffset;
|
||||
pn.transformSubmodule.Refresh();
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Track整体旋转
|
||||
/// </summary>
|
||||
/// <param name="angle">旋转角度,单位:度,方向:顺时针</param>
|
||||
/// <param name="center">旋转中心</param>
|
||||
/// <param name="axisDirection">旋转轴方向</param>
|
||||
private void WholeTrackSwirl(float angle, Vector3 center, Vector3 axisDirection)
|
||||
{
|
||||
if (axisDirection == Vector3.zero)
|
||||
{
|
||||
LogWindow.Log("Axis direction cannot be zero!", Color.red);
|
||||
return;
|
||||
}
|
||||
|
||||
trackPathSubmodule.pathNodeList.ForEach(pn =>
|
||||
{
|
||||
Vector3 originalPosition = pn.transformSubmodule.originalPosition;
|
||||
Vector3 rotatedPosition = Quaternion.AngleAxis(angle, axisDirection) * (originalPosition - center) + center;
|
||||
pn.transformSubmodule.originalPosition = rotatedPosition;
|
||||
pn.transformSubmodule.Refresh();
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Track整体翻转
|
||||
/// </summary>
|
||||
/// <param name="axisStart">翻转轴起点</param>
|
||||
/// <param name="axisEnd">翻转轴终点</param>
|
||||
private void WholeTrackFlip(Vector3 axisStart, Vector3 axisEnd)
|
||||
{
|
||||
trackPathSubmodule.pathNodeList.ForEach(pn =>
|
||||
{
|
||||
Vector3 originalPosition = pn.transformSubmodule.originalPosition;
|
||||
Vector3 flippedPosition = Vector3.Reflect(originalPosition - axisStart, axisEnd - axisStart) + axisStart;
|
||||
pn.transformSubmodule.originalPosition = flippedPosition;
|
||||
pn.transformSubmodule.Refresh();
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 仅开启起点和终点的PathNode的Sphere显示,中间的PathNode不显示
|
||||
/// </summary>
|
||||
private void SetOnlyStartEndPathNodeSphereEnabled()
|
||||
{
|
||||
if (trackPathSubmodule.pathNodeList.Count < 2)
|
||||
{
|
||||
LogWindow.Log("PathNode amount is less than 2!", Color.red);
|
||||
return;
|
||||
}
|
||||
|
||||
trackPathSubmodule.pathNodeList[0].SetPathNodeSphere(true);
|
||||
trackPathSubmodule.pathNodeList[^1].SetPathNodeSphere(true);
|
||||
for (int i = 1; i < trackPathSubmodule.pathNodeList.Count - 1; i++)
|
||||
{
|
||||
trackPathSubmodule.pathNodeList[i].SetPathNodeSphere(false);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 批量开启或关闭所有PathNode的Sphere显示
|
||||
/// </summary>
|
||||
/// <param name="isShowing"></param>
|
||||
private void SetAllPathNodeSphere(bool isShowing)
|
||||
{
|
||||
trackPathSubmodule.pathNodeList.ForEach(pn => pn.SetPathNodeSphere(isShowing));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,45 +85,5 @@ namespace Ichni
|
||||
songInformation.SetUpInspector();
|
||||
cameraManager.SetUpInspector();
|
||||
}
|
||||
|
||||
private void CreateNew()
|
||||
{
|
||||
projectManager.GenerateProject("TestProject");
|
||||
|
||||
var f0 = ElementFolder.GenerateElement("Folder", Guid.NewGuid(), new List<string>(), true, null);
|
||||
var dis0 = Displacement.GenerateElement("Displacement-0",Guid.NewGuid(), new List<string>(),true, f0,
|
||||
new FlexibleFloat(),
|
||||
new FlexibleFloat(new List<AnimatedFloat>(){new (0,2,0,10, AnimationCurveType.Linear)}),
|
||||
new FlexibleFloat());
|
||||
var dis1 = Displacement.GenerateElement("Displacement-1", Guid.NewGuid(), new List<string>(), true, f0,
|
||||
new FlexibleFloat(new List<AnimatedFloat>()
|
||||
{
|
||||
new(0, 0.5f, 0, -4, AnimationCurveType.OutQuad),
|
||||
new(0.5f, 1, -4, 0, AnimationCurveType.InQuad),
|
||||
new(1, 1.5f, 0, 4, AnimationCurveType.OutQuad),
|
||||
new(1.5f, 2, 4, 0, AnimationCurveType.InQuad),
|
||||
}),
|
||||
new FlexibleFloat(new List<AnimatedFloat>(){new (0,2,0,-10, AnimationCurveType.Linear)}),
|
||||
new FlexibleFloat());
|
||||
|
||||
var t0 = Track.GenerateElement("Track", Guid.NewGuid(), new List<string>(), true, f0);
|
||||
t0.trackPathSubmodule = new TrackPathSubmodule(t0, Track.TrackSpaceType.Linear, Track.TrackSamplingType.TimeDistributed, false);
|
||||
t0.submoduleList.Add(t0.trackPathSubmodule);
|
||||
t0.trackTimeSubmodule = new TrackTimeSubmoduleMovable(t0, 0, 2, 1, AnimationCurveType.OutQuad);
|
||||
t0.submoduleList.Add(t0.trackTimeSubmodule);
|
||||
var pp0 = TrackPercentPoint.GenerateElement("TrackPercentPoint-0", Guid.NewGuid(), new List<string>(), true, t0,
|
||||
new FlexibleFloat(new List<AnimatedFloat>() { new(0, 2, 0, 1, AnimationCurveType.OutQuad) }));
|
||||
var tr0 = Trail.GenerateElement("Trail-0", Guid.NewGuid(), new List<string>(), true, pp0, 5);
|
||||
// t0.trackRendererSubmodule = new TrackRendererSubmoduleAutoOrient(t0);
|
||||
var p0 = PathNode.GenerateElement("PathNode-0", Guid.NewGuid(), new List<string>(), true, t0);
|
||||
p0.transformSubmodule = new TransformSubmodule(p0, new Vector3(-5, 5, 10), Vector3.zero, Vector3.one);
|
||||
p0.colorSubmodule = new ColorSubmodule(p0, Color.white);
|
||||
var p1 = PathNode.GenerateElement("PathNode-1", Guid.NewGuid(), new List<string>(), true, t0);
|
||||
p1.transformSubmodule = new TransformSubmodule(p1, new Vector3(5, -5, 10), Vector3.zero, Vector3.one);
|
||||
p1.colorSubmodule = new ColorSubmodule(p1, Color.red);
|
||||
var n0 = Tap.GenerateElement("Note-0", Guid.NewGuid(), new List<string>(), true, t0, 1f);
|
||||
var n0v = BasicNoteVisual.GenerateElement("Note-0-V", Guid.NewGuid(), new List<string>(), true, n0,
|
||||
"basic", "BasicNoteTap3D");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -273,6 +273,7 @@
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "PathNode-0",
|
||||
"tags" : [
|
||||
|
||||
@@ -332,6 +333,7 @@
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.PathNode_BM,Assembly-CSharp",
|
||||
"isShowingSphere" : true,
|
||||
"elementName" : "PathNode-1",
|
||||
"tags" : [
|
||||
|
||||
@@ -505,9 +507,6 @@
|
||||
{
|
||||
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteGenerateExpand_BM,Assembly-CSharp",
|
||||
"generateTime" : 1,
|
||||
"attachedNoteID" : {
|
||||
"value" : "c5134d2c-c175-458c-99ff-07523169ec21"
|
||||
},
|
||||
"effectTime" : 0.1
|
||||
}
|
||||
],"GeneralJudge":[
|
||||
@@ -517,33 +516,21 @@
|
||||
],"Perfect":[
|
||||
{
|
||||
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNotePerfectBurst_BM,Assembly-CSharp",
|
||||
"attachedNoteID" : {
|
||||
"value" : "c5134d2c-c175-458c-99ff-07523169ec21"
|
||||
},
|
||||
"effectTime" : 0.1
|
||||
}
|
||||
],"Good":[
|
||||
{
|
||||
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteGoodBurst_BM,Assembly-CSharp",
|
||||
"attachedNoteID" : {
|
||||
"value" : "c5134d2c-c175-458c-99ff-07523169ec21"
|
||||
},
|
||||
"effectTime" : 0.1
|
||||
}
|
||||
],"Bad":[
|
||||
{
|
||||
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteBadExpand_BM,Assembly-CSharp",
|
||||
"attachedNoteID" : {
|
||||
"value" : "c5134d2c-c175-458c-99ff-07523169ec21"
|
||||
},
|
||||
"effectTime" : 0.1
|
||||
}
|
||||
],"Miss":[
|
||||
{
|
||||
"__type" : "Ichni.RhythmGame.ThemeBundles.Basic.Beatmap.BasicNoteMissPale_BM,Assembly-CSharp",
|
||||
"attachedNoteID" : {
|
||||
"value" : "c5134d2c-c175-458c-99ff-07523169ec21"
|
||||
},
|
||||
"effectTime" : 0.2
|
||||
}
|
||||
]
|
||||
@@ -626,6 +613,55 @@
|
||||
"attachedElementGuid" : {
|
||||
"value" : "90851003-b06b-4fee-8bd3-910abdbe53b1"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.Tap_BM,Assembly-CSharp",
|
||||
"exactJudgeTime" : 0.5,
|
||||
"elementName" : "New Tap",
|
||||
"tags" : [
|
||||
|
||||
],
|
||||
"elementGuid" : {
|
||||
"value" : "49905a7f-456c-491d-a607-0aebebd5ab7f"
|
||||
},
|
||||
"attachedElementGuid" : {
|
||||
"value" : "04f7a1d6-76f2-4b15-9632-494515114d5d"
|
||||
}
|
||||
},{
|
||||
"__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" : "49905a7f-456c-491d-a607-0aebebd5ab7f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.TimeDurationSubmodule_BM,Assembly-CSharp",
|
||||
"isOverridingDuration" : false,
|
||||
"startTime" : -32767,
|
||||
"endTime" : 32767,
|
||||
"attachedElementGuid" : {
|
||||
"value" : "49905a7f-456c-491d-a607-0aebebd5ab7f"
|
||||
}
|
||||
},{
|
||||
"__type" : "Ichni.RhythmGame.Beatmap.NoteJudgeSubmodule_BM,Assembly-CSharp",
|
||||
"judgeUnitList" : [
|
||||
|
||||
],
|
||||
"attachedElementGuid" : {
|
||||
"value" : "49905a7f-456c-491d-a607-0aebebd5ab7f"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 1529963868
|
||||
CRC: 1057476443
|
||||
AssetBundleManifest:
|
||||
AssetBundleInfos:
|
||||
Info_0:
|
||||
|
||||
Binary file not shown.
@@ -1,15 +1,15 @@
|
||||
ManifestFileVersion: 0
|
||||
CRC: 639174668
|
||||
CRC: 1444715112
|
||||
Hashes:
|
||||
AssetFileHash:
|
||||
serializedVersion: 2
|
||||
Hash: 26333e77a3a5ee29d85cfc010f962845
|
||||
Hash: 6a31f70c38ba841b2847683946b57dbf
|
||||
TypeTreeHash:
|
||||
serializedVersion: 2
|
||||
Hash: 625a8bf3466c7efbf901d88367e54446
|
||||
Hash: 7c8fba77ff779a35ad42450f8316ace8
|
||||
IncrementalBuildHash:
|
||||
serializedVersion: 2
|
||||
Hash: 26333e77a3a5ee29d85cfc010f962845
|
||||
Hash: 6a31f70c38ba841b2847683946b57dbf
|
||||
HashAppended: 0
|
||||
ClassTypes:
|
||||
- Class: 1
|
||||
@@ -20,6 +20,8 @@ ClassTypes:
|
||||
Script: {instanceID: 0}
|
||||
- Class: 23
|
||||
Script: {instanceID: 0}
|
||||
- Class: 28
|
||||
Script: {instanceID: 0}
|
||||
- Class: 33
|
||||
Script: {instanceID: 0}
|
||||
- Class: 43
|
||||
@@ -32,6 +34,10 @@ ClassTypes:
|
||||
Script: {fileID: 11500000, guid: ea0771a0c87f746769a9ffd7286a0665, type: 3}
|
||||
- Class: 115
|
||||
Script: {instanceID: 0}
|
||||
- Class: 198
|
||||
Script: {instanceID: 0}
|
||||
- Class: 199
|
||||
Script: {instanceID: 0}
|
||||
SerializeReferenceClassIdentifiers:
|
||||
- AssemblyName: Sirenix.Serialization
|
||||
ClassName: Sirenix.Serialization.SerializationData
|
||||
|
||||
@@ -15,21 +15,24 @@ namespace Ichni.RhythmGame.ThemeBundles.Basic
|
||||
BasicNoteVisual noteVisual = SubstantialObject.GenerateElement(elementName, id, tags,
|
||||
isFirstGenerated, themeBundleName, objectName, parentElement).GetComponent<BasicNoteVisual>();
|
||||
|
||||
return noteVisual;
|
||||
}
|
||||
|
||||
public override void FirstSetUpObject(bool isFirstGenerated)
|
||||
{
|
||||
NoteBase note = parentElement as NoteBase;
|
||||
if(note == null) throw new System.Exception("NoteVisual只能生成在Note下。");
|
||||
noteVisual.note = note;
|
||||
note.noteVisual = noteVisual;
|
||||
this.note = note;
|
||||
note.noteVisual = this;
|
||||
|
||||
if (isFirstGenerated)
|
||||
{
|
||||
noteVisual.effectSubmodule.effectCollection["Generate"].Add(new BasicNoteGenerateExpand(noteVisual));
|
||||
noteVisual.effectSubmodule.effectCollection["Perfect"].Add(new BasicNotePerfectBurst(noteVisual));
|
||||
noteVisual.effectSubmodule.effectCollection["Good"].Add(new BasicNoteGoodBurst(noteVisual));
|
||||
noteVisual.effectSubmodule.effectCollection["Bad"].Add(new BasicNoteBadExpand(noteVisual));
|
||||
noteVisual.effectSubmodule.effectCollection["Miss"].Add(new BasicNoteMissPale(noteVisual));
|
||||
effectSubmodule.effectCollection["Generate"].Add(new BasicNoteGenerateExpand(this));
|
||||
effectSubmodule.effectCollection["Perfect"].Add(new BasicNotePerfectBurst(this));
|
||||
effectSubmodule.effectCollection["Good"].Add(new BasicNoteGoodBurst(this));
|
||||
effectSubmodule.effectCollection["Bad"].Add(new BasicNoteBadExpand(this));
|
||||
effectSubmodule.effectCollection["Miss"].Add(new BasicNoteMissPale(this));
|
||||
}
|
||||
|
||||
return noteVisual;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@@ -35,7 +35,7 @@ ModelImporter:
|
||||
isReadable: 0
|
||||
meshes:
|
||||
lODScreenPercentages: []
|
||||
globalScale: 5
|
||||
globalScale: 1
|
||||
meshCompression: 0
|
||||
addColliders: 0
|
||||
useSRGBMaterialColor: 1
|
||||
@@ -90,7 +90,7 @@ ModelImporter:
|
||||
armStretch: 0.05
|
||||
legStretch: 0.05
|
||||
feetSpacing: 0
|
||||
globalScale: 0.049999997
|
||||
globalScale: 1
|
||||
rootMotionBoneName:
|
||||
hasTranslationDoF: 0
|
||||
hasExtraRoot: 0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,65 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Ichni.Editor;
|
||||
using Ichni.RhythmGame.Beatmap;
|
||||
using Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse.Beatmap;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
|
||||
{
|
||||
public class DTMNotePerfectBurst : NotePerfectEffect
|
||||
{
|
||||
private ParticleSystem effectParticle;
|
||||
|
||||
public DTMNotePerfectBurst(NoteVisualBase noteVisual)
|
||||
{
|
||||
this.note = noteVisual.note;
|
||||
this.noteVisual = noteVisual;
|
||||
this.effectParticle = noteVisual.effectPartList[0].GetComponent<ParticleSystem>();
|
||||
this.effectTime = 0f;
|
||||
}
|
||||
public override void Recover()
|
||||
{
|
||||
effectParticle.Stop();
|
||||
noteVisual.noteMain.SetActive(true);
|
||||
}
|
||||
|
||||
public override void Adjust()
|
||||
{
|
||||
effectParticle.Play();
|
||||
noteVisual.noteMain.SetActive(false);
|
||||
}
|
||||
|
||||
public override EffectBase_BM ConvertToBM()
|
||||
{
|
||||
return new DTMNotePerfectBurst_BM(effectTime);
|
||||
}
|
||||
|
||||
public override void SetUpInspector()
|
||||
{
|
||||
IHaveInspection inspector = EditorManager.instance.uiManager.inspector;
|
||||
var container = inspector.GenerateContainer("Basic Note Perfect Burst");
|
||||
}
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
{
|
||||
public class DTMNotePerfectBurst_BM : NotePerfectEffect_BM
|
||||
{
|
||||
public DTMNotePerfectBurst_BM()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DTMNotePerfectBurst_BM(float effectTime) : base(effectTime)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override EffectBase ConvertToGameType(GameElement attachedGameElement)
|
||||
{
|
||||
return new DTMNotePerfectBurst(attachedGameElement as NoteVisualBase);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4979bd6148dc44f2c9444c1d3f663a2a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -9,31 +9,36 @@ namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
|
||||
public partial class DTMNoteVisual : NoteVisualBase
|
||||
{
|
||||
public static DTMNoteVisual GenerateElement(string elementName, Guid id, List<string> tags,
|
||||
bool isFirstGenerated, GameElement parentElement, string themeBundleName, string objectName)
|
||||
bool isFirstGenerated, string themeBundleName, string objectName, GameElement parentElement)
|
||||
{
|
||||
DTMNoteVisual noteVisual = SubstantialObject.GenerateElement(elementName, id, tags,
|
||||
isFirstGenerated, themeBundleName, objectName, parentElement).GetComponent<DTMNoteVisual>();
|
||||
|
||||
|
||||
return noteVisual;
|
||||
}
|
||||
|
||||
public override void FirstSetUpObject(bool isFirstGenerated)
|
||||
{
|
||||
NoteBase note = parentElement as NoteBase;
|
||||
if (note == null) throw new System.Exception("NoteVisual只能生成在Note下。");
|
||||
noteVisual.note = note;
|
||||
note.noteVisual = noteVisual;
|
||||
if(note == null) throw new System.Exception("NoteVisual只能生成在Note下。");
|
||||
this.note = note;
|
||||
note.noteVisual = this;
|
||||
|
||||
if (isFirstGenerated)
|
||||
{
|
||||
//noteVisual.effectSubmodule.effectCollection["Generate"].Add(new BasicNoteGenerateExpand(noteVisual.note));
|
||||
//noteVisual.effectSubmodule.effectCollection["Perfect"].Add(new BasicNotePerfectBurst(noteVisual.note));
|
||||
//noteVisual.effectSubmodule.effectCollection["Good"].Add(new BasicNoteGoodBurst(noteVisual.note));
|
||||
//noteVisual.effectSubmodule.effectCollection["Bad"].Add(new BasicNoteBadExpand(noteVisual.note));
|
||||
//noteVisual.effectSubmodule.effectCollection["Miss"].Add(new BasicNoteMissPale(noteVisual.note));
|
||||
//effectSubmodule.effectCollection["Generate"].Add(new BasicNoteGenerateExpand(this));
|
||||
effectSubmodule.effectCollection["Perfect"].Add(new DTMNotePerfectBurst(this));
|
||||
//effectSubmodule.effectCollection["Good"].Add(new BasicNoteGoodBurst(this));
|
||||
//effectSubmodule.effectCollection["Bad"].Add(new BasicNoteBadExpand(this));
|
||||
//effectSubmodule.effectCollection["Miss"].Add(new BasicNoteMissPale(this));
|
||||
}
|
||||
|
||||
return noteVisual;
|
||||
}
|
||||
}
|
||||
|
||||
public partial class DTMNoteVisual
|
||||
{
|
||||
|
||||
|
||||
public override void SaveBM()
|
||||
{
|
||||
matchedBM = new Beatmap.DTMNoteVisual_BM(elementName, elementGuid, tags,
|
||||
@@ -60,13 +65,13 @@ namespace Ichni.RhythmGame.ThemeBundles.DepartureToMultiverse
|
||||
public override void ExecuteBM()
|
||||
{
|
||||
matchedElement = DTMNoteVisual.GenerateElement(elementName, elementGuid, tags, false,
|
||||
GetElement(attachedElementGuid), themeBundleName, objectName);
|
||||
themeBundleName, objectName, GetElement(attachedElementGuid));
|
||||
}
|
||||
|
||||
public override GameElement DuplicateBM(GameElement parent)
|
||||
{
|
||||
return DTMNoteVisual.GenerateElement(elementName, elementGuid, tags, false, parent, themeBundleName,
|
||||
objectName);
|
||||
return DTMNoteVisual.GenerateElement(elementName, elementGuid, tags, false, themeBundleName,
|
||||
objectName, parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user