This commit is contained in:
2025-04-03 02:30:16 +08:00
parent 142adb61c6
commit bee7af1732
14907 changed files with 1009130 additions and 13 deletions
.gitattributes.gitignore
.idea/.idea.KopMap/.idea
Assets
AmplifyShaderEditor.meta
AmplifyShaderEditor
AmplifyShaderEditor.asmdefAmplifyShaderEditor.asmdef.metaChangeLog.txtChangeLog.txt.metaPlugins.meta
Plugins
Editor.meta
Editor
Actions.meta
Actions
Constants.csConstants.cs.metaCustomDrawers.meta
CustomDrawers
DoCreateFunction.csDoCreateFunction.cs.metaDoCreateShader.csDoCreateShader.cs.metaEditorOptions.csEditorOptions.cs.metaGraphs.meta
Graphs
Menu.meta
Menu
Native.meta
Native
Nodes.meta
Nodes
CommentaryNode.csCommentaryNode.cs.metaConstants.meta
Constants
ColorNode.csColorNode.cs.metaGlobalArrayNode.csGlobalArrayNode.cs.metaGradientNode.csGradientNode.cs.metaIntNode.csIntNode.cs.metaMatrix3X3Node.csMatrix3X3Node.cs.metaMatrix4X4Node.csMatrix4X4Node.cs.metaMatrixParentNode.csMatrixParentNode.cs.metaPiNode.csPiNode.cs.metaPropertyNode.csPropertyNode.cs.metaRangedFloatNode.csRangedFloatNode.cs.metaShaderVariables.meta
ShaderVariables
CameraAndScreen.meta
CameraAndScreen
ConstVecShaderVariable.csConstVecShaderVariable.cs.metaConstantShaderVariable.csConstantShaderVariable.cs.metaFogAndAmbient.meta
FogAndAmbient
Lighting.meta
Lighting
ShaderVariablesNode.csShaderVariablesNode.cs.metaTime.meta
Time
Transform.meta
Transform
Various.meta
Various
StaticSwitch.csStaticSwitch.cs.metaTauNode.csTauNode.cs.metaTextureArrayNode.csTextureArrayNode.cs.metaVector2Node.csVector2Node.cs.metaVector3Node.csVector3Node.cs.metaVector4Node.csVector4Node.cs.meta
CustomAddNode.csCustomAddNode.cs.metaCustomNode.csCustomNode.cs.metaDrawInfo.csDrawInfo.cs.metaDynamicTypeNode.csDynamicTypeNode.cs.metaHelperFuncs.meta
HelperFuncs
CameraDepthFade.csCameraDepthFade.cs.metaComputeGrabScreenPosHlpNode.csComputeGrabScreenPosHlpNode.cs.metaComputeScreenPosHlpNode.csComputeScreenPosHlpNode.cs.metaDecodeDepthNormalNode.csDecodeDepthNormalNode.cs.metaDecodeFloatRGBAHlpNode.csDecodeFloatRGBAHlpNode.cs.metaDecodeFloatRGHlpNode.csDecodeFloatRGHlpNode.cs.metaDecodeLightmapHlpNode.csDecodeLightmapHlpNode.cs.metaDecodeViewNormalStereoHlpNode.csDecodeViewNormalStereoHlpNode.cs.metaDepthFade.csDepthFade.cs.metaDiffuseAndSpecularFromMetallicNode.csDiffuseAndSpecularFromMetallicNode.cs.metaDitheringNode.csDitheringNode.cs.metaEncodeDepthNormalNode.csEncodeDepthNormalNode.cs.metaEncodeFloatRGBAHlpNode.csEncodeFloatRGBAHlpNode.cs.metaEncodeFloatRGHlpNode.csEncodeFloatRGHlpNode.cs.metaEncodeViewNormalStereoHlpNode.csEncodeViewNormalStereoHlpNode.cs.metaGammaToLinearNode.csGammaToLinearNode.cs.metaHelperParentNode.csHelperParentNode.cs.metaLinearToGammaNode.csLinearToGammaNode.cs.metaLuminanceHlpNode.csLuminanceHlpNode.cs.metaObjSpaceLightDirHlpNode.csObjSpaceLightDirHlpNode.cs.metaObjSpaceViewDirHlpNode.csObjSpaceViewDirHlpNode.cs.metaParallaxMappingNode.csParallaxMappingNode.cs.metaParallaxOcclusionMappingNode.csParallaxOcclusionMappingNode.cs.metaParallaxOffsetHlpNode.csParallaxOffsetHlpNode.cs.metaShadeVertexLightsHlpNode.csShadeVertexLightsHlpNode.cs.metaSurfaceDepthNode.csSurfaceDepthNode.cs.metaTriplanarNode.csTriplanarNode.cs.metaUnityObjToClipPosHlpNode.csUnityObjToClipPosHlpNode.cs.metaUnityObjToViewPosHlpNode.csUnityObjToViewPosHlpNode.cs.metaWorldSpaceLightDirHlpNode.csWorldSpaceLightDirHlpNode.cs.metaWorldSpaceViewDirHlpNode.csWorldSpaceViewDirHlpNode.cs.meta
ISignalGenerator.csISignalGenerator.cs.metaImageEffects.meta
ImageEffects
LogicalOperators.meta
LogicalOperators
Master.meta
Master
Misc.meta
Misc
NodeAttributes.csNodeAttributes.cs.metaNodeRestrictions.csNodeRestrictions.cs.metaNodeUsageRegister.csNodeUsageRegister.cs.metaNodeUtils.csNodeUtils.cs.metaOperators.meta
Operators
ACosOpNode.csACosOpNode.cs.metaASinOpNode.csASinOpNode.cs.metaATan2OpNode.csATan2OpNode.cs.metaATanOpNode.csATanOpNode.cs.metaAbsOpNode.csAbsOpNode.cs.metaCeilOpNode.csCeilOpNode.cs.metaClampOpNode.csClampOpNode.cs.metaClipNode.csClipNode.cs.metaComponentMaskNode.csComponentMaskNode.cs.metaCosOpNode.csCosOpNode.cs.metaCoshOpNode.csCoshOpNode.cs.metaCrossProductOpNode.csCrossProductOpNode.cs.metaDdxOpNode.csDdxOpNode.cs.metaDdyOpNode.csDdyOpNode.cs.metaDegreesOpNode.csDegreesOpNode.cs.metaDeterminantOpNode.csDeterminantOpNode.cs.metaDistanceOpNode.csDistanceOpNode.cs.metaDotProductOpNode.csDotProductOpNode.cs.metaExp2OpNode.csExp2OpNode.cs.metaExpOpNode.csExpOpNode.cs.metaFWidthOpNode.csFWidthOpNode.cs.metaFloorOpNode.csFloorOpNode.cs.metaFmodOpNode.csFmodOpNode.cs.metaFractNode.csFractNode.cs.metaGradientSampleNode.csGradientSampleNode.cs.metaInverseOpNode.csInverseOpNode.cs.metaLengthOpNode.csLengthOpNode.cs.metaLerpOp.csLerpOp.cs.metaLog10OpNode.csLog10OpNode.cs.metaLog2OpNode.csLog2OpNode.cs.metaLogOpNode.csLogOpNode.cs.metaMultipleInputOpNode.csMultipleInputOpNode.cs.metaNegateNode.csNegateNode.cs.metaNormalizeNode.csNormalizeNode.cs.metaOneMinusNode.csOneMinusNode.cs.metaPowerNode.csPowerNode.cs.metaRSqrtOpNode.csRSqrtOpNode.cs.metaRadiansOpNode.csRadiansOpNode.cs.metaReciprocalOpNode.csReciprocalOpNode.cs.metaReflectOpNode.csReflectOpNode.cs.metaRefractOpVec.csRefractOpVec.cs.metaRoundOpNode.csRoundOpNode.cs.metaSaturateNode.csSaturateNode.cs.metaScaleAndOffsetNode.csScaleAndOffsetNode.cs.metaScaleNode.csScaleNode.cs.metaSignOpNode.csSignOpNode.cs.metaSimplifiedFModOpNode.csSimplifiedFModOpNode.cs.metaSinOpNode.csSinOpNode.cs.metaSingleInputOp.csSingleInputOp.cs.metaSinhOpNode.csSinhOpNode.cs.metaSmoothstepOpNode.csSmoothstepOpNode.cs.metaSqrtOpNode.csSqrtOpNode.cs.metaStepOpNode.csStepOpNode.cs.metaTFHCRemapNode.csTFHCRemapNode.cs.metaTanOpNode.csTanOpNode.cs.metaTanhOpNode.csTanhOpNode.cs.metaTransformVectorOpNode.csTransformVectorOpNode.cs.metaTransposeOpNode.csTransposeOpNode.cs.metaTruncOpNode.csTruncOpNode.cs.metaVariablePortTypeOpNode.csVariablePortTypeOpNode.cs.meta
ParentNode.csParentNode.cs.metaReordenatorNode.csReordenatorNode.cs.metaSRP.meta
SRP
SignalGeneratorNode.csSignalGeneratorNode.cs.metaSimpleNodes.meta
SimpleNodes
StickyNoteNode.csStickyNoteNode.cs.metaSurfaceShaderInputs.meta
SurfaceShaderInputs
Textures.meta
Textures
UndoParentNode.csUndoParentNode.cs.metaVertex.meta
Vertex
PreMadeShaders.csPreMadeShaders.cs.metaTemplates.meta
Templates
TemplateAdditionalDefinesHelper.csTemplateAdditionalDefinesHelper.cs.metaTemplateAdditionalDirectivesHelper.csTemplateAdditionalDirectivesHelper.cs.metaTemplateAdditionalIncludesHelper.csTemplateAdditionalIncludesHelper.cs.metaTemplateAdditionalParentHelper.csTemplateAdditionalParentHelper.cs.metaTemplateAdditionalPragmasHelper.csTemplateAdditionalPragmasHelper.cs.metaTemplateAlphaToMaskModule.csTemplateAlphaToMaskModule.cs.metaTemplateCodeSnippetBase.csTemplateCodeSnippetBase.cs.metaTemplateColorMaskModule.csTemplateColorMaskModule.cs.metaTemplateCullModeModule.csTemplateCullModeModule.cs.metaTemplateDBItem.csTemplateDBItem.cs.metaTemplateData.csTemplateData.cs.metaTemplateDataCollector.csTemplateDataCollector.cs.metaTemplateDataParent.csTemplateDataParent.cs.metaTemplateDepthModule.csTemplateDepthModule.cs.metaTemplateFragmentDataNode.csTemplateFragmentDataNode.cs.metaTemplateHelperFunctions.csTemplateHelperFunctions.cs.metaTemplateIdManager.csTemplateIdManager.cs.metaTemplateInterpData.csTemplateInterpData.cs.metaTemplateLocalVarData.csTemplateLocalVarData.cs.metaTemplateLocalVarsNode.csTemplateLocalVarsNode.cs.metaTemplateMasterNode.csTemplateMasterNode.cs.metaTemplateMenuItems.csTemplateMenuItems.cs.metaTemplateModuleHelper.csTemplateModuleHelper.cs.metaTemplateModuleParent.csTemplateModuleParent.cs.metaTemplateModulesData.csTemplateModulesData.cs.metaTemplateMultiPass.csTemplateMultiPass.cs.metaTemplateMultiPassMasterNode.csTemplateMultiPassMasterNode.cs.metaTemplateMultiPassSwitchNode.csTemplateMultiPassSwitchNode.cs.metaTemplateNodeParent.csTemplateNodeParent.cs.metaTemplateOptionsData.csTemplateOptionsData.cs.metaTemplateOptionsDefinesContainer.csTemplateOptionsDefinesContainer.cs.metaTemplateOptionsPort.csTemplateOptionsPort.cs.metaTemplateOptionsUI.csTemplateOptionsUI.cs.metaTemplateOptionsUIHelper.csTemplateOptionsUIHelper.cs.metaTemplatePass.csTemplatePass.cs.metaTemplatePassSelectorHelper.csTemplatePassSelectorHelper.cs.metaTemplatePostProcessor.csTemplatePostProcessor.cs.metaTemplateRenderPlatformHelper.csTemplateRenderPlatformHelper.cs.metaTemplateShaderData.csTemplateShaderData.cs.metaTemplateShaderModelModule.csTemplateShaderModelModule.cs.metaTemplateShaderPropertyData.csTemplateShaderPropertyData.cs.metaTemplateShaderPropertyNode.csTemplateShaderPropertyNode.cs.metaTemplateSubShader.csTemplateSubShader.cs.metaTemplateTagsModule.csTemplateTagsModule.cs.metaTemplateVertexData.csTemplateVertexData.cs.metaTemplateVertexDataNode.csTemplateVertexDataNode.cs.metaTemplatesBlendModule.csTemplatesBlendModule.cs.metaTemplatesManager.csTemplatesManager.cs.metaTemplatesStencilBufferModule.csTemplatesStencilBufferModule.cs.meta
Utils.meta
Utils
Version.meta
Version
Wires.meta
Wires
EditorResources.meta
EditorResources
GUISkins.meta
GUISkins
Nodes.meta
Nodes
Previews.meta
Previews
IndirectSpecularPreview.exrIndirectSpecularPreview.exr.metaLinearPreviews.shaderLinearPreviews.shader.metaPreview.cgincPreview.cginc.metaPreview_ACosOpNode.shaderPreview_ACosOpNode.shader.metaPreview_ASinOpNode.shaderPreview_ASinOpNode.shader.metaPreview_ATan2OpNode.shaderPreview_ATan2OpNode.shader.metaPreview_ATanOpNode.shaderPreview_ATanOpNode.shader.metaPreview_AbsOpNode.shaderPreview_AbsOpNode.shader.metaPreview_AllNode.shaderPreview_AllNode.shader.metaPreview_AnyNode.shaderPreview_AnyNode.shader.metaPreview_AppendNode.shaderPreview_AppendNode.shader.metaPreview_BlendNormalsNode.shaderPreview_BlendNormalsNode.shader.metaPreview_BlendOpsNode.shaderPreview_BlendOpsNode.shader.metaPreview_BreakToComponentsNode.shaderPreview_BreakToComponentsNode.shader.metaPreview_CeilOpNode.shaderPreview_CeilOpNode.shader.metaPreview_ClampOpNode.shaderPreview_ClampOpNode.shader.metaPreview_Clip.shaderPreview_Clip.shader.metaPreview_ClipPlanes.shaderPreview_ClipPlanes.shader.metaPreview_ColorNode.shaderPreview_ColorNode.shader.metaPreview_ColorSpaceDouble.shaderPreview_ColorSpaceDouble.shader.metaPreview_Compare.shaderPreview_Compare.shader.metaPreview_ComponentMaskNode.shaderPreview_ComponentMaskNode.shader.metaPreview_ComputeScreenPos.shaderPreview_ComputeScreenPos.shader.metaPreview_ConditionalIfNode.shaderPreview_ConditionalIfNode.shader.metaPreview_CosOpNode.shaderPreview_CosOpNode.shader.metaPreview_CosTime.shaderPreview_CosTime.shader.metaPreview_CoshOpNode.shaderPreview_CoshOpNode.shader.metaPreview_CrossProductOpNode.shaderPreview_CrossProductOpNode.shader.metaPreview_DdxOpNode.shaderPreview_DdxOpNode.shader.metaPreview_DdyOpNode.shaderPreview_DdyOpNode.shader.metaPreview_DecodeDepthNormalNode.shaderPreview_DecodeDepthNormalNode.shader.metaPreview_DecodeFloatRGBAHlpNode.shaderPreview_DecodeFloatRGBAHlpNode.shader.metaPreview_DecodeFloatRGHlpNode.shaderPreview_DecodeFloatRGHlpNode.shader.metaPreview_DecodeLightmapHlpNode.shaderPreview_DecodeLightmapHlpNode.shader.metaPreview_DecodeViewNormalStereoHlpNode.shaderPreview_DecodeViewNormalStereoHlpNode.shader.metaPreview_DegreesOpNode.shaderPreview_DegreesOpNode.shader.metaPreview_DeltaTime.shaderPreview_DeltaTime.shader.metaPreview_DesaturateNode.shaderPreview_DesaturateNode.shader.metaPreview_DiffuseAndSpecularFromMetallic.shaderPreview_DiffuseAndSpecularFromMetallic.shader.metaPreview_DistanceOpNode.shaderPreview_DistanceOpNode.shader.metaPreview_DotProductOpNode.shaderPreview_DotProductOpNode.shader.metaPreview_DynamicAppendNode.shaderPreview_DynamicAppendNode.shader.metaPreview_EncodeFloatRGBAHlpNode.shaderPreview_EncodeFloatRGBAHlpNode.shader.metaPreview_EncodeFloatRGHlpNode.shaderPreview_EncodeFloatRGHlpNode.shader.metaPreview_EncodeViewNormalStereoHlpNode.shaderPreview_EncodeViewNormalStereoHlpNode.shader.metaPreview_Exp2OpNode.shaderPreview_Exp2OpNode.shader.metaPreview_ExpOpNode.shaderPreview_ExpOpNode.shader.metaPreview_FWidthOpNode.shaderPreview_FWidthOpNode.shader.metaPreview_FaceVariableNode.shaderPreview_FaceVariableNode.shader.metaPreview_FlipNode.shaderPreview_FlipNode.shader.metaPreview_FloorOpNode.shaderPreview_FloorOpNode.shader.metaPreview_FmodOpNode.shaderPreview_FmodOpNode.shader.metaPreview_FogAndAmbientColors.shaderPreview_FogAndAmbientColors.shader.metaPreview_FogParams.shaderPreview_FogParams.shader.metaPreview_FractNode.shaderPreview_FractNode.shader.metaPreview_FresnelNode.shaderPreview_FresnelNode.shader.metaPreview_FunctionInputNode.shaderPreview_FunctionInputNode.shader.metaPreview_FunctionNode.shaderPreview_FunctionNode.shader.metaPreview_FunctionOutputNode.shaderPreview_FunctionOutputNode.shader.metaPreview_GammaToLinearNode.shaderPreview_GammaToLinearNode.shader.metaPreview_GetLocalVarNode.shaderPreview_GetLocalVarNode.shader.metaPreview_GradientSample.shaderPreview_GradientSample.shader.metaPreview_GrayscaleNode.shaderPreview_GrayscaleNode.shader.metaPreview_HSVToRGBNode.shaderPreview_HSVToRGBNode.shader.metaPreview_HeightMapTextureBlend.shaderPreview_HeightMapTextureBlend.shader.metaPreview_IndirectDiffuseLight.shaderPreview_IndirectDiffuseLight.shader.metaPreview_IndirectSpecularLight.shaderPreview_IndirectSpecularLight.shader.metaPreview_InstanceIDNode.shaderPreview_InstanceIDNode.shader.metaPreview_IntNode.shaderPreview_IntNode.shader.metaPreview_IsInfinite.shaderPreview_IsInfinite.shader.metaPreview_IsNaN.shaderPreview_IsNaN.shader.metaPreview_LODFadeNode.shaderPreview_LODFadeNode.shader.metaPreview_LayeredBlendNode.shaderPreview_LayeredBlendNode.shader.metaPreview_LengthOpNode.shaderPreview_LengthOpNode.shader.metaPreview_LerpOp.shaderPreview_LerpOp.shader.metaPreview_LightAttenuation.shaderPreview_LightAttenuation.shader.metaPreview_LightColorNode.shaderPreview_LightColorNode.shader.metaPreview_LinearDepthNode.shaderPreview_LinearDepthNode.shader.metaPreview_LinearToGammaNode.shaderPreview_LinearToGammaNode.shader.metaPreview_Log10OpNode.shaderPreview_Log10OpNode.shader.metaPreview_Log2OpNode.shaderPreview_Log2OpNode.shader.metaPreview_LogOpNode.shaderPreview_LogOpNode.shader.metaPreview_LuminanceNode.shaderPreview_LuminanceNode.shader.metaPreview_NandNode.shaderPreview_NandNode.shader.metaPreview_NegateNode.shaderPreview_NegateNode.shader.metaPreview_NodeMasking.shaderPreview_NodeMasking.shader.metaPreview_NoiseGeneratorNode.shaderPreview_NoiseGeneratorNode.shader.metaPreview_NormalVertexDataNode.shaderPreview_NormalVertexDataNode.shader.metaPreview_NormalizeNode.shaderPreview_NormalizeNode.shader.metaPreview_NotNode.shaderPreview_NotNode.shader.metaPreview_ObjSpaceLightDirHlpNode.shaderPreview_ObjSpaceLightDirHlpNode.shader.metaPreview_ObjSpaceViewDirHlpNode.shaderPreview_ObjSpaceViewDirHlpNode.shader.metaPreview_ObjectPositionNode.shaderPreview_ObjectPositionNode.shader.metaPreview_ObjectScaleNode.shaderPreview_ObjectScaleNode.shader.metaPreview_ObjectToClipPos.shaderPreview_ObjectToClipPos.shader.metaPreview_ObjectToViewPos.shaderPreview_ObjectToViewPos.shader.metaPreview_ObjectToWorldTransfNode.shaderPreview_ObjectToWorldTransfNode.shader.metaPreview_OneMinusNode.shaderPreview_OneMinusNode.shader.metaPreview_OrthoParams.shaderPreview_OrthoParams.shader.metaPreview_PannerNode.shaderPreview_PannerNode.shader.metaPreview_ParallaxMappingNode.shaderPreview_ParallaxMappingNode.shader.metaPreview_ParallaxOffset.shaderPreview_ParallaxOffset.shader.metaPreview_PiNode.shaderPreview_PiNode.shader.metaPreview_PosVertexDataNode.shaderPreview_PosVertexDataNode.shader.metaPreview_PositionNode.shaderPreview_PositionNode.shader.metaPreview_PosterizeNode.shaderPreview_PosterizeNode.shader.metaPreview_PowerNode.shaderPreview_PowerNode.shader.metaPreview_PrimitiveIDVariableNode.shaderPreview_PrimitiveIDVariableNode.shader.metaPreview_ProjectionParams.shaderPreview_ProjectionParams.shader.metaPreview_RGBToHSVNode.shaderPreview_RGBToHSVNode.shader.metaPreview_RadiansOpNode.shaderPreview_RadiansOpNode.shader.metaPreview_RangedFloatNode.shaderPreview_RangedFloatNode.shader.metaPreview_ReciprocalNode.shaderPreview_ReciprocalNode.shader.metaPreview_ReflectOpNode.shaderPreview_ReflectOpNode.shader.metaPreview_ReflectionProbe.shaderPreview_ReflectionProbe.shader.metaPreview_RefractOpVec.shaderPreview_RefractOpVec.shader.metaPreview_RegisterLocalVarNode.shaderPreview_RegisterLocalVarNode.shader.metaPreview_RelayNode.shaderPreview_RelayNode.shader.metaPreview_RotatorNode.shaderPreview_RotatorNode.shader.metaPreview_RoundOpNode.shaderPreview_RoundOpNode.shader.metaPreview_RsqrtOpNode.shaderPreview_RsqrtOpNode.shader.metaPreview_SamplerNode.shaderPreview_SamplerNode.shader.metaPreview_SaturateNode.shaderPreview_SaturateNode.shader.metaPreview_ScaleAndOffsetNode.shaderPreview_ScaleAndOffsetNode.shader.metaPreview_ScaleNode.shaderPreview_ScaleNode.shader.metaPreview_ScreenParams.shaderPreview_ScreenParams.shader.metaPreview_ScreenPosInputsNode.shaderPreview_ScreenPosInputsNode.shader.metaPreview_ShadeVertexLights.shaderPreview_ShadeVertexLights.shader.metaPreview_SignOpNode.shaderPreview_SignOpNode.shader.metaPreview_SimpleAddOpNode.shaderPreview_SimpleAddOpNode.shader.metaPreview_SimpleContrastNode.shaderPreview_SimpleContrastNode.shader.metaPreview_SimpleDivideOpNode.shaderPreview_SimpleDivideOpNode.shader.metaPreview_SimpleMaxOp.shaderPreview_SimpleMaxOp.shader.metaPreview_SimpleMinNode.shaderPreview_SimpleMinNode.shader.metaPreview_SimpleMultiplyOpNode.shaderPreview_SimpleMultiplyOpNode.shader.metaPreview_SimpleRemainderNode.shaderPreview_SimpleRemainderNode.shader.metaPreview_SimpleSubtractOpNode.shaderPreview_SimpleSubtractOpNode.shader.metaPreview_SimpleTimeNode.shaderPreview_SimpleTimeNode.shader.metaPreview_SimplifiedFModOpNode.shaderPreview_SimplifiedFModOpNode.shader.metaPreview_SinOpNode.shaderPreview_SinOpNode.shader.metaPreview_SinTimeNode.shaderPreview_SinTimeNode.shader.metaPreview_SinhOpNode.shaderPreview_SinhOpNode.shader.metaPreview_SmoothstepOpNode.shaderPreview_SmoothstepOpNode.shader.metaPreview_SqrtOpNode.shaderPreview_SqrtOpNode.shader.metaPreview_StaticSwitchNode.shaderPreview_StaticSwitchNode.shader.metaPreview_StepOpNode.shaderPreview_StepOpNode.shader.metaPreview_SummedBlendNode.shaderPreview_SummedBlendNode.shader.metaPreview_SwitchByFaceNode.shaderPreview_SwitchByFaceNode.shader.metaPreview_SwitchBySRPVersionNode.shaderPreview_SwitchBySRPVersionNode.shader.metaPreview_SwitchNode.shaderPreview_SwitchNode.shader.metaPreview_SwizzleNode.shaderPreview_SwizzleNode.shader.metaPreview_TFHCCompareEqual.shaderPreview_TFHCCompareEqual.shader.metaPreview_TFHCCompareGreater.shaderPreview_TFHCCompareGreater.shader.metaPreview_TFHCCompareGreaterEqual.shaderPreview_TFHCCompareGreaterEqual.shader.metaPreview_TFHCCompareLessNode.shaderPreview_TFHCCompareLessNode.shader.metaPreview_TFHCCompareLowerEqual.shaderPreview_TFHCCompareLowerEqual.shader.metaPreview_TFHCCompareNotEqual.shaderPreview_TFHCCompareNotEqual.shader.metaPreview_TFHCCompareWithRange.shaderPreview_TFHCCompareWithRange.shader.metaPreview_TFHCFlipBookUVAnimation.shaderPreview_TFHCFlipBookUVAnimation.shader.metaPreview_TFHCIf.shaderPreview_TFHCIf.shader.metaPreview_TFHCPixelateUV.shaderPreview_TFHCPixelateUV.shader.metaPreview_TFHCRemap.shaderPreview_TFHCRemap.shader.metaPreview_TanOpNode.shaderPreview_TanOpNode.shader.metaPreview_TangentSignVertexDataNode.shaderPreview_TangentSignVertexDataNode.shader.metaPreview_TangentVertexDataNode.shaderPreview_TangentVertexDataNode.shader.metaPreview_TanhOpNode.shaderPreview_TanhOpNode.shader.metaPreview_TauNode.shaderPreview_TauNode.shader.metaPreview_TemplateShaderProperty.shaderPreview_TemplateShaderProperty.shader.metaPreview_TexCoordVertexDataNode.shaderPreview_TexCoordVertexDataNode.shader.metaPreview_TexelSize.shaderPreview_TexelSize.shader.metaPreview_Texture2D.shaderPreview_Texture2D.shader.metaPreview_TextureArrayNode.shaderPreview_TextureArrayNode.shader.metaPreview_TextureCoordinatesNode.shaderPreview_TextureCoordinatesNode.shader.metaPreview_TexturePropertyNode.shaderPreview_TexturePropertyNode.shader.metaPreview_TextureTransform.shaderPreview_TextureTransform.shader.metaPreview_TimeNode.shaderPreview_TimeNode.shader.metaPreview_ToggleSwitchNode.shaderPreview_ToggleSwitchNode.shader.metaPreview_TriplanarNode.shaderPreview_TriplanarNode.shader.metaPreview_TruncOpNode.shaderPreview_TruncOpNode.shader.metaPreview_TwoSidedSignNode.shaderPreview_TwoSidedSignNode.shader.metaPreview_UnpackScaleNormalNode.shaderPreview_UnpackScaleNormalNode.shader.metaPreview_Vector2Node.shaderPreview_Vector2Node.shader.metaPreview_Vector3Node.shaderPreview_Vector3Node.shader.metaPreview_Vector4Node.shaderPreview_Vector4Node.shader.metaPreview_VertexBinormalNode.shaderPreview_VertexBinormalNode.shader.metaPreview_VertexColorNode.shaderPreview_VertexColorNode.shader.metaPreview_VertexIdVariableNode.shaderPreview_VertexIdVariableNode.shader.metaPreview_VertexTangentNode.shaderPreview_VertexTangentNode.shader.metaPreview_ViewDirInputsCoordNode.shaderPreview_ViewDirInputsCoordNode.shader.metaPreview_ViewVector.shaderPreview_ViewVector.shader.metaPreview_VoronoiNode.shaderPreview_VoronoiNode.shader.metaPreview_WeightedBlendNode.shaderPreview_WeightedBlendNode.shader.metaPreview_WireNode.shaderPreview_WireNode.shader.metaPreview_WorldNormalVector.shaderPreview_WorldNormalVector.shader.metaPreview_WorldPosInputsNode.shaderPreview_WorldPosInputsNode.shader.metaPreview_WorldReflectionVector.shaderPreview_WorldReflectionVector.shader.metaPreview_WorldSpaceCameraPos.shaderPreview_WorldSpaceCameraPos.shader.metaPreview_WorldSpaceLightDirHlpNode.shaderPreview_WorldSpaceLightDirHlpNode.shader.metaPreview_WorldSpaceLightPosNode.shaderPreview_WorldSpaceLightPosNode.shader.metaPreview_WorldSpaceViewDirHlpNode.shaderPreview_WorldSpaceViewDirHlpNode.shader.metaPreview_WorldToObjectTransfNode.shaderPreview_WorldToObjectTransfNode.shader.metaPreview_WorldTransformParams.shaderPreview_WorldTransformParams.shader.metaPreview_ZBufferParams.shaderPreview_ZBufferParams.shader.metaTextureArrayInspector.shaderTextureArrayInspector.shader.meta
ShaderFunctions.meta
ShaderFunctions
Alpha Merge.assetAlpha Merge.asset.metaAlpha Split.assetAlpha Split.asset.metaAnd.assetAnd.asset.metaBacteria Smoothstep.assetBacteria Smoothstep.asset.metaBacteria.assetBacteria.asset.metaBicubic Precompute.assetBicubic Precompute.asset.metaBicubic Sample.assetBicubic Sample.asset.metaBidirectional Parallax Mapping.assetBidirectional Parallax Mapping.asset.metaBlackbody.assetBlackbody.asset.metaBlinn-Phong Half Vector.assetBlinn-Phong Half Vector.asset.metaBlinn-Phong Light.assetBlinn-Phong Light.asset.metaBlinnPhongLightWrap.assetBlinnPhongLightWrap.asset.metaBoxMask.assetBoxMask.asset.metaBricks Pattern.assetBricks Pattern.asset.metaCheckerboard.assetCheckerboard.asset.metaColor Mask.assetColor Mask.asset.metaCompute Mip Level.assetCompute Mip Level.asset.metaComputeFilterWidth.assetComputeFilterWidth.asset.metaConstantBiasScale.assetConstantBiasScale.asset.metaCotangentFrame.assetCotangentFrame.asset.metaCreate Orthogonal Vector.assetCreate Orthogonal Vector.asset.metaCustom Screen Position.assetCustom Screen Position.asset.metaDecode Directional Lighmap.assetDecode Directional Lighmap.asset.metaDepthMaskedRefraction.assetDepthMaskedRefraction.asset.metaDerive Tangent Basis.assetDerive Tangent Basis.asset.metaDetail Albedo.assetDetail Albedo.asset.metaDevice Depth.assetDevice Depth.asset.metaDielectric Specular.assetDielectric Specular.asset.metaDots Pattern.assetDots Pattern.asset.metaEllipse.assetEllipse.asset.metaFade Transition.assetFade Transition.asset.metaFetchHDColorPyramid.assetFetchHDColorPyramid.asset.metaFetchLightmapValue.assetFetchLightmapValue.asset.metaFlipbook.assetFlipbook.asset.metaFlow.assetFlow.asset.metaFour Splats First Pass Terrain.assetFour Splats First Pass Terrain.asset.metaGrid.assetGrid.asset.metaHDRP Decal UVs.assetHDRP Decal UVs.asset.metaHalf Lambert Term.assetHalf Lambert Term.asset.metaHeight-based Blending.assetHeight-based Blending.asset.metaHerringbone.assetHerringbone.asset.metaHex Lattice.assetHex Lattice.asset.metaHoundstooth.assetHoundstooth.asset.metaInverse Lerp.assetInverse Lerp.asset.metaLambert Light.assetLambert Light.asset.metaLerp White To.assetLerp White To.asset.metaLightmap UV.assetLightmap UV.asset.metaMetal Reflectance.assetMetal Reflectance.asset.metaMidtones Control.assetMidtones Control.asset.metaNoise Sine Wave.assetNoise Sine Wave.asset.metaNon Stereo Screen Pos.assetNon Stereo Screen Pos.asset.metaNormal Face.assetNormal Face.asset.metaNormal From Height.assetNormal From Height.asset.metaNormal From Texture.assetNormal From Texture.asset.metaNormal Reconstruct Z.assetNormal Reconstruct Z.asset.metaNormalCreate.assetNormalCreate.asset.metaOr.assetOr.asset.metaPerturbNormal.assetPerturbNormal.asset.metaPerturbNormalHQ.assetPerturbNormalHQ.asset.metaPolar Coordinates.assetPolar Coordinates.asset.metaPolygon.assetPolygon.asset.metaPreparePerturbNormalHQ.assetPreparePerturbNormalHQ.asset.metaProcedural Sample.assetProcedural Sample.asset.metaProjection.assetProjection.asset.metaRadial Shear.assetRadial Shear.asset.metaRadialUVDistortion.assetRadialUVDistortion.asset.metaRandom Range.assetRandom Range.asset.metaReconstruct World Position From Depth.assetReconstruct World Position From Depth.asset.metaRectangle.assetRectangle.asset.metaRejection.assetRejection.asset.metaReplace Color.assetReplace Color.asset.metaRounded Polygon.assetRounded Polygon.asset.metaRounded Rectangle.assetRounded Rectangle.asset.metaSRP Additional Light.assetSRP Additional Light.asset.metaSample Lightmap.assetSample Lightmap.asset.metaSaturation.assetSaturation.asset.metaSawtooth Wave.assetSawtooth Wave.asset.metaShadow Mask.assetShadow Mask.asset.metaSimple HUE.assetSimple HUE.asset.metaSmooth Wave.assetSmooth Wave.asset.metaSphereMask.assetSphereMask.asset.metaSpherize.assetSpherize.asset.metaSpiral.assetSpiral.asset.metaSquare Wave.assetSquare Wave.asset.metaSquare.assetSquare.asset.metaStep Antialiasing.assetStep Antialiasing.asset.metaStereo Screen Pos.assetStereo Screen Pos.asset.metaStripes.assetStripes.asset.metaTerrain Wind Animate Vertex.assetTerrain Wind Animate Vertex.asset.metaTerrain Wind Value.assetTerrain Wind Value.asset.metaTriangle Wave.assetTriangle Wave.asset.metaTruchet.assetTruchet.asset.metaTwirl.assetTwirl.asset.metaUI-Sprite Effect Layer.assetUI-Sprite Effect Layer.asset.metaURP Tangent To World Normal.assetURP Tangent To World Normal.asset.metaWhirl.assetWhirl.asset.metaWorld Normal Face.assetWorld Normal Face.asset.metaZig Zag.assetZig Zag.asset.meta
ShaderLibrary.meta
ShaderLibrary
Shaders.meta
Shaders
Templates.meta
Templates
Textures.meta
Textures
UI.meta
UI
Buttons.meta
Buttons
AddToList.pngAddToList.png.metaCheckmark.pngCheckmark.png.metaCircularToggle_OFF_Dark.pngCircularToggle_OFF_Dark.png.metaCircularToggle_ON_Dark.pngCircularToggle_ON_Dark.png.metaCleanupOFF.pngCleanupOFF.png.metaCleanupOFFNew.pngCleanupOFFNew.png.metaCleanupON.pngCleanupON.png.metaCleanupONNew.pngCleanupONNew.png.metaCustomExpAddIconActive.pngCustomExpAddIconActive.png.metaCustomExpAddIconNormal.pngCustomExpAddIconNormal.png.metaCustomExpRemoveIconActive.pngCustomExpRemoveIconActive.png.metaCustomExpRemoveIconNormal.pngCustomExpRemoveIconNormal.png.metaFitView.pngFitView.png.metaFocusNode.pngFocusNode.png.metaHelp.pngHelp.png.metaHelp2.pngHelp2.png.metaItemCleanupOFF.pngItemCleanupOFF.png.metaItemCleanupON.pngItemCleanupON.png.metaLibrary.pngLibrary.png.metaLiveOFF.pngLiveOFF.png.metaLiveON.pngLiveON.png.metaLivePending.pngLivePending.png.metaMaximizeWindow.pngMaximizeWindow.png.metaMiniBotLeftOff.pngMiniBotLeftOff.png.metaMiniBotLeftOffHover.pngMiniBotLeftOffHover.png.metaMiniBotLeftOn.pngMiniBotLeftOn.png.metaMiniBotLeftOnHover.pngMiniBotLeftOnHover.png.metaMiniBotMidOff.pngMiniBotMidOff.png.metaMiniBotMidOffHover.pngMiniBotMidOffHover.png.metaMiniBotMidOn.pngMiniBotMidOn.png.metaMiniBotMidOnHover.pngMiniBotMidOnHover.png.metaMiniBotRightOff.pngMiniBotRightOff.png.metaMiniBotRightOffHover.pngMiniBotRightOffHover.png.metaMiniBotRightOn.pngMiniBotRightOn.png.metaMiniBotRightOnHover.pngMiniBotRightOnHover.png.metaMinimizeWindow.pngMinimizeWindow.png.metaNew.pngNew.png.metaOpen.pngOpen.png.metaOpenListedShader.pngOpenListedShader.png.metaOpenSourceCodeOFF.PNGOpenSourceCodeOFF.PNG.metaOpenSourceCodeON.PNGOpenSourceCodeON.PNG.metaOptions.pngOptions.png.metaRemoveFromList.pngRemoveFromList.png.metaResetInspectorIcon.pngResetInspectorIcon.png.metaSaveOFF.pngSaveOFF.png.metaSaveON.pngSaveON.png.metaSelectionAsTemplate.pngSelectionAsTemplate.png.metaShaderSelectOFF.pngShaderSelectOFF.png.metaShaderSelectON.pngShaderSelectON.png.metaShareOFF.pngShareOFF.png.metaSliderHoriz.pngSliderHoriz.png.metaTakeScreenshotOFF.pngTakeScreenshotOFF.png.metaTransparentPixel.pngTransparentPixel.png.metaUpdateOFF.pngUpdateOFF.png.metaUpdateOutdated.pngUpdateOutdated.png.metaUpdateUpToDated.pngUpdateUpToDated.png.meta
Canvas.meta
Canvas
Nodes.meta
Nodes
Readme.txtReadme.txt.meta
GeneratedMaterials.meta
GeneratedMaterials
MindPowerSdk.Tests.meta
MindPowerSdk.Tests
MindPowerSdk.meta
MindPowerSdk
New Material 1.matNew Material 1.mat.metaNew Material.matNew Material.mat.metaNew Terrain Layer.terrainlayerNew Terrain Layer.terrainlayer.metaNew Terrain Material 1.matNew Terrain Material 1.mat.metaNew Terrain Material.matNew Terrain Material.mat.metaNew Universal Render Pipeline Asset.assetNew Universal Render Pipeline Asset.asset.metaNew Universal Render Pipeline Asset_Renderer.assetNew Universal Render Pipeline Asset_Renderer.asset.metaPrefabs.metaResources.meta
Resources
Material.meta
Material
Scene.meta
Scene
001-01.mat001-01.mat.meta001-02.mat001-02.mat.meta001.mat001.mat.meta002.mat002.mat.meta003.mat003.mat.meta004.mat004.mat.meta005.mat005.mat.meta007.mat007.mat.meta008.mat008.mat.meta009.mat009.mat.meta01-01.mat01-01.mat.meta01-011-01.mat01-011-01.mat.meta01-011.mat01-011.mat.meta01-02.mat01-02.mat.meta01-04.mat01-04.mat.meta01-05.mat01-05.mat.meta01-06.mat01-06.mat.meta01-07.mat01-07.mat.meta01-10.mat01-10.mat.meta01-mofan.mat01-mofan.mat.meta010.mat010.mat.meta010025.mat010025.mat.meta010026.mat010026.mat.meta010079.mat010079.mat.meta010080.mat010080.mat.meta0100801.mat0100801.mat.meta010095.mat010095.mat.meta010096.mat010096.mat.meta010170.mat010170.mat.meta010171.mat010171.mat.meta010187-1.mat010187-1.mat.meta010187.mat010187.mat.meta010271-1.mat010271-1.mat.meta010271.mat010271.mat.meta010272-1.mat010272-1.mat.meta010272.mat010272.mat.meta010273.mat010273.mat.meta010274-1.mat010274-1.mat.meta010274.mat010274.mat.meta011.mat011.mat.meta012.mat012.mat.meta013.mat013.mat.meta014-6.mat014-6.mat.meta014-6B.mat014-6B.mat.meta014-8.mat014-8.mat.meta014-s.mat014-s.mat.meta014.mat014.mat.meta015.mat015.mat.meta016.mat016.mat.meta017.mat017.mat.meta018-01.mat018-01.mat.meta018-02.mat018-02.mat.meta018-03.mat018-03.mat.meta018-04.mat018-04.mat.meta018-05.mat018-05.mat.meta018-06.mat018-06.mat.meta018-07.mat018-07.mat.meta018-08.mat018-08.mat.meta018-09.mat018-09.mat.meta018-10.mat018-10.mat.meta018-11.mat018-11.mat.meta018.mat018.mat.meta019.mat019.mat.meta020.mat020.mat.meta020005.mat020005.mat.meta020005_B.mat020005_B.mat.meta020007.mat020007.mat.meta020012.mat020012.mat.meta020013-1.mat020013-1.mat.meta020013.mat020013.mat.meta020013_B.mat020013_B.mat.meta020025.mat020025.mat.meta020026-1.mat020026-1.mat.meta020027.mat020027.mat.meta020028.mat020028.mat.meta020029-1.mat020029-1.mat.meta020029.mat020029.mat.meta020041.mat020041.mat.meta020042-1.mat020042-1.mat.meta020043-1.mat020043-1.mat.meta020045.mat020045.mat.meta020057.mat020057.mat.meta020058.mat020058.mat.meta020059-1.mat020059-1.mat.meta020059.mat020059.mat.meta020060.mat020060.mat.meta020060_B.mat020060_B.mat.meta020061-1.mat020061-1.mat.meta020061.mat020061.mat.meta020062-1.mat020062-1.mat.meta020064.mat020064.mat.meta020070.mat020070.mat.meta020074-1.mat020074-1.mat.meta020074.mat020074.mat.meta020076.mat020076.mat.meta020077.mat020077.mat.meta020078.mat020078.mat.meta02008.mat02008.mat.meta020081-1.mat020081-1.mat.meta020082-1.mat020082-1.mat.meta020089.mat020089.mat.meta020090.mat020090.mat.meta020094-1.mat020094-1.mat.meta020094-B.mat020094-B.mat.meta020096.mat020096.mat.meta020096_B.mat020096_B.mat.meta020099.mat020099.mat.meta020109.mat020109.mat.meta020116.mat020116.mat.meta020119-1.mat020119-1.mat.meta020119.mat020119.mat.meta020120-1.mat020120-1.mat.meta020120.mat020120.mat.meta020121.mat020121.mat.meta020122.mat020122.mat.meta020125.mat020125.mat.meta020129.mat020129.mat.meta020133.mat020133.mat.meta020134.mat020134.mat.meta020136-01.mat020136-01.mat.meta020136.mat020136.mat.meta020137-1.mat020137-1.mat.meta020137.mat020137.mat.meta020138-01.mat020138-01.mat.meta020138.mat020138.mat.meta020155.mat020155.mat.meta020156.mat020156.mat.meta020160.mat020160.mat.meta020161.mat020161.mat.meta020164.mat020164.mat.meta020165.mat020165.mat.meta020166-1.mat020166-1.mat.meta020166.mat020166.mat.meta020167.mat020167.mat.meta020175.mat020175.mat.meta020176.mat020176.mat.meta020202.mat020202.mat.meta020203.mat020203.mat.meta020204.mat020204.mat.meta020205.mat020205.mat.meta020206.mat020206.mat.meta020207.mat020207.mat.meta020212-1.mat020212-1.mat.meta020212.mat020212.mat.meta020213.mat020213.mat.meta020214.mat020214.mat.meta020215.mat020215.mat.meta020216.mat020216.mat.meta0202160.mat0202160.mat.meta020218.mat020218.mat.meta020219-1.mat020219-1.mat.meta020219.mat020219.mat.meta020221.mat020221.mat.meta020222.mat020222.mat.meta020226-1.mat020226-1.mat.meta020226.mat020226.mat.meta020228-1.mat020228-1.mat.meta020228.mat020228.mat.meta020231.mat020231.mat.meta020232.mat020232.mat.meta020236-1.mat020236-1.mat.meta020236.mat020236.mat.meta020242.mat020242.mat.meta020243.mat020243.mat.meta020244.mat020244.mat.meta020245.mat020245.mat.meta020247.mat020247.mat.meta020250.mat020250.mat.meta020251.mat020251.mat.meta020252.mat020252.mat.meta020254-1.mat020254-1.mat.meta020255.mat020255.mat.meta020258.mat020258.mat.meta022.mat022.mat.meta023.mat023.mat.meta025-01.mat025-01.mat.meta025-02.mat025-02.mat.meta025-03.mat025-03.mat.meta025-04.mat025-04.mat.meta025-05.mat025-05.mat.meta025-06.mat025-06.mat.meta025-07.mat025-07.mat.meta025-08.mat025-08.mat.meta025-09.mat025-09.mat.meta025.mat025.mat.meta025_B.mat025_B.mat.meta026.mat026.mat.meta028.mat028.mat.meta028_B.mat028_B.mat.meta029.mat029.mat.meta030.mat030.mat.meta033.mat033.mat.meta034.mat034.mat.meta035.mat035.mat.meta036-01.mat036-01.mat.meta036-02-2.mat036-02-2.mat.meta036-02.mat036-02.mat.meta036-03.mat036-03.mat.meta036.mat036.mat.meta037.mat037.mat.meta038.mat038.mat.meta039.mat039.mat.meta039_B.mat039_B.mat.meta040.mat040.mat.meta041.mat041.mat.meta041_B.mat041_B.mat.meta042.mat042.mat.meta044.mat044.mat.meta045.mat045.mat.meta047.mat047.mat.meta049.mat049.mat.meta07.mat07.mat.meta07hdw_hualanbai.prefab07hdw_hualanbai.prefab.meta1.mat1.mat.meta2.mat2.mat.metaIt-bd039.matIt-bd039.mat.metaba202-01-1.matba202-01-1.mat.metabaiyanwu.prefabbaiyanwu.prefab.metabd001-1.matbd001-1.mat.metabd001.matbd001.mat.metabd003-1.matbd003-1.mat.metabd003.matbd003.mat.metabd004-1.matbd004-1.mat.metabd004.matbd004.mat.metabd005-1.matbd005-1.mat.metabd005.matbd005.mat.metabd006.matbd006.mat.metabd006_B.matbd006_B.mat.metabd007.matbd007.mat.metabd008.matbd008.mat.metabd009.matbd009.mat.metabd010.matbd010.mat.metabd011.matbd011.mat.metabd012.matbd012.mat.metabd013.matbd013.mat.metabd014-01-1.matbd014-01-1.mat.metabd014-01.matbd014-01.mat.metabd014-02.matbd014-02.mat.metabd014-03.matbd014-03.mat.metabd014-05.matbd014-05.mat.metabd014-2.matbd014-2.mat.metabd014-B.matbd014-B.mat.metabd014.matbd014.mat.metabd015-01.matbd015-01.mat.metabd015.matbd015.mat.metabd016.matbd016.mat.metabd017-01.matbd017-01.mat.metabd017-02.matbd017-02.mat.metabd017-03.matbd017-03.mat.metabd018.matbd018.mat.metabd019.matbd019.mat.metabd020-01.matbd020-01.mat.metabd020.matbd020.mat.metabd021.matbd021.mat.metabd022.matbd022.mat.metabd024.matbd024.mat.metabd025.matbd025.mat.metabd026-01-1.matbd026-01-1.mat.metabd026-01.matbd026-01.mat.metabd026-02-1.matbd026-02-1.mat.metabd026-02.matbd026-02.mat.metabd026-03-1.matbd026-03-1.mat.metabd026-03.matbd026-03.mat.metabd026-04-1.matbd026-04-1.mat.metabd026-04.matbd026-04.mat.metabd026-05-1.matbd026-05-1.mat.metabd026-05.matbd026-05.mat.metabd026-06-1.matbd026-06-1.mat.metabd026-06.matbd026-06.mat.metabd026-07-1.matbd026-07-1.mat.metabd026-07.matbd026-07.mat.metabd026-08-1.matbd026-08-1.mat.metabd026-08.matbd026-08.mat.metabd026-09.matbd026-09.mat.metabd026-feilin.matbd026-feilin.mat.metabd026.matbd026.mat.metabd027-01.matbd027-01.mat.metabd027-02.matbd027-02.mat.metabd027-03.matbd027-03.mat.metabd027-feilin.matbd027-feilin.mat.metabd027.matbd027.mat.metabd028-01.matbd028-01.mat.metabd028-02.matbd028-02.mat.metabd028-03.matbd028-03.mat.metabd028-04.matbd028-04.mat.metabd028-B.matbd028-B.mat.metabd028.matbd028.mat.metabd029.matbd029.mat.metabd030-1.matbd030-1.mat.metabd030.matbd030.mat.metabd031.matbd031.mat.metabd032.matbd032.mat.metabd033.matbd033.mat.metabd034.matbd034.mat.metabd035.matbd035.mat.metabd036.matbd036.mat.metabd037-1.matbd037-1.mat.metabd037.matbd037.mat.metabd038.matbd038.mat.metabd039.matbd039.mat.metabd039_feilin.matbd039_feilin.mat.metabd040.matbd040.mat.metabd040_feilin.matbd040_feilin.mat.metabd041.matbd041.mat.metabd041_feilin.matbd041_feilin.mat.metabd042-01.matbd042-01.mat.metabd042.matbd042.mat.metabd043-01.matbd043-01.mat.metabd043.matbd043.mat.metabd044-01.matbd044-01.mat.metabd044.matbd044.mat.metabd045.matbd045.mat.metabd047.matbd047.mat.metabd048.matbd048.mat.metabd051.matbd051.mat.metabd058.matbd058.mat.metabd061-01.matbd061-01.mat.metabd061-02.matbd061-02.mat.metabd061-03.matbd061-03.mat.metabd062-01.matbd062-01.mat.metabd069.matbd069.mat.metabd071.matbd071.mat.metabd072.matbd072.mat.metabd073-01.matbd073-01.mat.metabd073-02.matbd073-02.mat.metabd073-03.matbd073-03.mat.metabd087-01.matbd087-01.mat.metabd087-02.matbd087-02.mat.metabd098.matbd098.mat.metabd099.matbd099.mat.metabd107.matbd107.mat.metabd110.matbd110.mat.metabd149.matbd149.mat.metabd168-1.matbd168-1.mat.metabd168.matbd168.mat.metabd187-1.matbd187-1.mat.metabd187.matbd187.mat.metabd192.matbd192.mat.metabd193.matbd193.mat.metabd194.matbd194.mat.metabd195.matbd195.mat.metabd195_B.matbd195_B.mat.metabd199.matbd199.mat.metabd202-01.matbd202-01.mat.metabd204-01.matbd204-01.mat.metabd204.matbd204.mat.metabd205-feilin.matbd205-feilin.mat.metabd205.matbd205.mat.metabd208-feilin.matbd208-feilin.mat.metabd208.matbd208.mat.metabd209-feilin.matbd209-feilin.mat.metabd210-feilin.matbd210-feilin.mat.metabd210.matbd210.mat.metabd217.matbd217.mat.metabl-bd001.matbl-bd001.mat.metabl-bd001.prefabbl-bd001.prefab.metabl-bd002.matbl-bd002.mat.metabl-bd002.prefabbl-bd002.prefab.metabl-bd003.matbl-bd003.mat.metabl-bd003.prefabbl-bd003.prefab.metabl-bd004.matbl-bd004.mat.metabl-bd004.prefabbl-bd004.prefab.metabl-bd005-01.matbl-bd005-01.mat.metabl-bd005-01.prefabbl-bd005-01.prefab.metabl-bd005-02.matbl-bd005-02.mat.metabl-bd005-02.prefabbl-bd005-02.prefab.metabl-bd005-03.matbl-bd005-03.mat.metabl-bd005-03.prefabbl-bd005-03.prefab.metabl-bd006.matbl-bd006.mat.metabl-bd006.prefabbl-bd006.prefab.metabl-bd007.matbl-bd007.mat.metabl-bd007.prefabbl-bd007.prefab.metabl-bd008-01.matbl-bd008-01.mat.metabl-bd008-01.prefabbl-bd008-01.prefab.metabl-bd008-02.matbl-bd008-02.mat.metabl-bd008-02.prefabbl-bd008-02.prefab.metabl-bd008-03.matbl-bd008-03.mat.metabl-bd008-03.prefabbl-bd008-03.prefab.metabl-bd008-04.matbl-bd008-04.mat.metabl-bd008-04.prefabbl-bd008-04.prefab.metabl-bd008-05.matbl-bd008-05.mat.metabl-bd008-05.prefabbl-bd008-05.prefab.metabl-bd009.matbl-bd009.mat.metabl-bd009.prefabbl-bd009.prefab.metabl-bd010.matbl-bd010.mat.metabl-bd010.prefabbl-bd010.prefab.metabl-bd011.matbl-bd011.mat.metabl-bd011.prefabbl-bd011.prefab.metabl-bd012.matbl-bd012.mat.metabl-bd012.prefabbl-bd012.prefab.metabl-bd013-01.matbl-bd013-01.mat.metabl-bd013-Controller.controllerbl-bd013-Controller.controller.metabl-bd013-DONGHUA.animbl-bd013-DONGHUA.anim.metabl-bd013.matbl-bd013.mat.metabl-bd013.prefabbl-bd013.prefab.metabl-bd014.prefabbl-bd014.prefab.metabl-bd015.prefabbl-bd015.prefab.metabl-bd016.prefabbl-bd016.prefab.metabl-bd017.matbl-bd017.mat.metabl-bd017.prefabbl-bd017.prefab.metabl-bd018.matbl-bd018.mat.metabl-bd018.prefabbl-bd018.prefab.metabl-bd019.matbl-bd019.mat.metabl-bd019.prefabbl-bd019.prefab.metabl-bd020.matbl-bd020.mat.metabl-bd020.prefabbl-bd020.prefab.metabl-bd021-01.matbl-bd021-01.mat.metabl-bd021-02.matbl-bd021-02.mat.metabl-bd021.prefabbl-bd021.prefab.metaby-bd001-2.prefabby-bd001-2.prefab.metaby-bd002.prefabby-bd002.prefab.metaby-bd004.prefabby-bd004.prefab.metaby-bd005-Controller.controllerby-bd005-Controller.controller.metaby-bd005-donghua.animby-bd005-donghua.anim.metaby-bd005.prefabby-bd005.prefab.metaby-bd007.prefabby-bd007.prefab.metaby-bd008-2.prefabby-bd008-2.prefab.metaby-bd009-2.prefabby-bd009-2.prefab.metaby-bd010-2.prefabby-bd010-2.prefab.metaby-bd011.prefabby-bd011.prefab.metaby-bd013-2.prefabby-bd013-2.prefab.metaby-bd014-1.prefabby-bd014-1.prefab.metaby-bd014-2.prefabby-bd014-2.prefab.metaby-bd014-3.prefabby-bd014-3.prefab.metaby-bd014-4.prefabby-bd014-4.prefab.metaby-bd014-5-2.prefabby-bd014-5-2.prefab.metaby-bd014-6-2.prefabby-bd014-6-2.prefab.metaby-bd014-8-2.prefabby-bd014-8-2.prefab.metaby-bd015-2.prefabby-bd015-2.prefab.metaby-bd015-Controller.controllerby-bd015-Controller.controller.metaby-bd015-Take 001.animby-bd015-Take 001.anim.metaby-bd016.prefabby-bd016.prefab.metaby-bd017.prefabby-bd017.prefab.metaby-bd019-2.prefabby-bd019-2.prefab.metaby-bd020-2.prefabby-bd020-2.prefab.metaby-bd022-Controller.controllerby-bd022-Controller.controller.metaby-bd022-donghua.animby-bd022-donghua.anim.metaby-bd022_2.prefabby-bd022_2.prefab.metaby-bd023_2.prefabby-bd023_2.prefab.metaby-bd024_2.prefabby-bd024_2.prefab.metaby-bd025.prefabby-bd025.prefab.metaby-bd026-01.prefabby-bd026-01.prefab.metaby-bd026.prefabby-bd026.prefab.metaby-bd027-Controller.controllerby-bd027-Controller.controller.metaby-bd027-donghua.animby-bd027-donghua.anim.metaby-bd027.prefabby-bd027.prefab.metaby-bd028_2.prefabby-bd028_2.prefab.metaby-bd029-Controller.controllerby-bd029-Controller.controller.metaby-bd029-Take 001.animby-bd029-Take 001.anim.metaby-bd029-diaopai.xafby-bd029-diaopai.xaf.metaby-bd029.prefabby-bd029.prefab.metaby-bd030-Controller.controllerby-bd030-Controller.controller.metaby-bd030-donghua.animby-bd030-donghua.anim.metaby-bd030.prefabby-bd030.prefab.metaby-bd031-Controller.controllerby-bd031-Controller.controller.metaby-bd031-donghua.animby-bd031-donghua.anim.metaby-bd031.prefabby-bd031.prefab.metaby-bd032-Controller.controllerby-bd032-Controller.controller.metaby-bd032-Take 001.animby-bd032-Take 001.anim.metaby-bd032.prefabby-bd032.prefab.metaby-bd033-Controller.controllerby-bd033-Controller.controller.metaby-bd033-donghua.animby-bd033-donghua.anim.metaby-bd033.prefabby-bd033.prefab.metaby-bd034-Controller.controllerby-bd034-Controller.controller.metaby-bd034-donghua.animby-bd034-donghua.anim.metaby-bd034.prefabby-bd034.prefab.metaby-bd035-Controller.controllerby-bd035-Controller.controller.metaby-bd035-donghua.animby-bd035-donghua.anim.metaby-bd035.prefabby-bd035.prefab.metaby-bd036.prefabby-bd036.prefab.metaby-bd037.prefabby-bd037.prefab.metaby-bd038.prefabby-bd038.prefab.metaby-bd039-2.prefabby-bd039-2.prefab.metaby-bd040-2.prefabby-bd040-2.prefab.metaby-bd041.prefabby-bd041.prefab.metaby-bd042.prefabby-bd042.prefab.metaby-bd043-2.prefabby-bd043-2.prefab.metaby-bd044.prefabby-bd044.prefab.metaby-bd045-2.prefabby-bd045-2.prefab.metaby-bd047.prefabby-bd047.prefab.metaby-bd048-Controller.controllerby-bd048-Controller.controller.metaby-bd048-donghua.animby-bd048-donghua.anim.metaby-bd048.prefabby-bd048.prefab.metaby-bd049-2.prefabby-bd049-2.prefab.metaby_bd003.prefabby_bd003.prefab.metaby_bd018.prefabby_bd018.prefab.metacc-bd001.matcc-bd001.mat.metacc-bd001.prefabcc-bd001.prefab.metacc-bd002.matcc-bd002.mat.metacc-bd002.prefabcc-bd002.prefab.metacc-bd003.matcc-bd003.mat.metacc-bd003.prefabcc-bd003.prefab.metacc-bd004.matcc-bd004.mat.metacc-bd004.prefabcc-bd004.prefab.metacc-bd005.matcc-bd005.mat.metacc-bd005.prefabcc-bd005.prefab.metacc-bd006.matcc-bd006.mat.metacc-bd006.prefabcc-bd006.prefab.metacc-bd007-Controller.controllercc-bd007-Controller.controller.metacc-bd007-donghua.animcc-bd007-donghua.anim.metacc-bd007.matcc-bd007.mat.metacc-bd007.prefabcc-bd007.prefab.metacc-bd008.matcc-bd008.mat.metacc-bd008.prefabcc-bd008.prefab.metacc-bd009.matcc-bd009.mat.metacc-bd009.prefabcc-bd009.prefab.metacc-bd010.matcc-bd010.mat.metacc-bd010.prefabcc-bd010.prefab.metacc-bd011.matcc-bd011.mat.metacc-bd011.prefabcc-bd011.prefab.metacc-bd012.matcc-bd012.mat.metacc-bd012.prefabcc-bd012.prefab.metacc-bd013.matcc-bd013.mat.metacc-bd013.prefabcc-bd013.prefab.metacc-bd014.matcc-bd014.mat.metacc-bd014.prefabcc-bd014.prefab.metacc-bd015-Controller.controllercc-bd015-Controller.controller.metacc-bd015-donghua.animcc-bd015-donghua.anim.metacc-bd015.matcc-bd015.mat.metacc-bd015.prefabcc-bd015.prefab.metacc-bd016.matcc-bd016.mat.metacc-bd016.prefabcc-bd016.prefab.metacc-bd017.matcc-bd017.mat.metacc-bd017.prefabcc-bd017.prefab.metacc-bd018-Controller.controllercc-bd018-Controller.controller.metacc-bd018-donghua.animcc-bd018-donghua.anim.metacc-bd018.matcc-bd018.mat.metacc-bd018.prefabcc-bd018.prefab.metacc-bd019-Controller.controllercc-bd019-Controller.controller.metacc-bd019-donghua.animcc-bd019-donghua.anim.metacc-bd019.matcc-bd019.mat.metacc-bd019.prefabcc-bd019.prefab.metacc-bd020.matcc-bd020.mat.metacc-bd020.prefabcc-bd020.prefab.metacc-bd021.matcc-bd021.mat.metacc-bd021.prefabcc-bd021.prefab.metacc-bd022.matcc-bd022.mat.metacc-bd022.prefabcc-bd022.prefab.metacc-bd023-Controller.controllercc-bd023-Controller.controller.metacc-bd023-donghua.animcc-bd023-donghua.anim.metacc-bd023.matcc-bd023.mat.metacc-bd023.prefabcc-bd023.prefab.metacc-bd024.matcc-bd024.mat.metacc-bd024.prefabcc-bd024.prefab.metacc-bd025.matcc-bd025.mat.metacc-bd025.prefabcc-bd025.prefab.metacc-bd026.matcc-bd026.mat.metacc-bd026.prefabcc-bd026.prefab.metacc-bd027.matcc-bd027.mat.metacc-bd027.prefabcc-bd027.prefab.metacc-bd028.matcc-bd028.mat.metacc-bd028.prefabcc-bd028.prefab.metacc-bd029.matcc-bd029.mat.metacc-bd029.prefabcc-bd029.prefab.metacc-bd030.matcc-bd030.mat.metacc-bd030.prefabcc-bd030.prefab.metacc-bd031.matcc-bd031.mat.metacc-bd031.prefabcc-bd031.prefab.metacc-bd032-Controller.controllercc-bd032-Controller.controller.metacc-bd032-donghua.animcc-bd032-donghua.anim.metacc-bd032.matcc-bd032.mat.metacc-bd032.prefabcc-bd032.prefab.metacc-bd033.matcc-bd033.mat.metacc-bd033.prefabcc-bd033.prefab.metacc-bd034.matcc-bd034.mat.metacc-bd034.prefabcc-bd034.prefab.metacc-bd035.matcc-bd035.mat.metacc-bd035.prefabcc-bd035.prefab.metacc-bd036-Controller.controllercc-bd036-Controller.controller.metacc-bd036-donghua.animcc-bd036-donghua.anim.metacc-bd036.matcc-bd036.mat.metacc-bd036.prefabcc-bd036.prefab.metacc-bd037.matcc-bd037.mat.metacc-bd037.prefabcc-bd037.prefab.metacc-bd038.prefabcc-bd038.prefab.metacc-bd039.prefabcc-bd039.prefab.metacc-bd040-Controller.controllercc-bd040-Controller.controller.metacc-bd040-donghua.animcc-bd040-donghua.anim.metacc-bd040.matcc-bd040.mat.metacc-bd040.prefabcc-bd040.prefab.metacc-bd041-Controller.controllercc-bd041-Controller.controller.metacc-bd041-donghua.animcc-bd041-donghua.anim.metacc-bd041.matcc-bd041.mat.metacc-bd041.prefabcc-bd041.prefab.metacc-bd042-Controller.controllercc-bd042-Controller.controller.metacc-bd042-donghua.animcc-bd042-donghua.anim.metacc-bd042.matcc-bd042.mat.metacc-bd042.prefabcc-bd042.prefab.metacc-bd043.matcc-bd043.mat.metacc-bd043.prefabcc-bd043.prefab.metacc-bd044.matcc-bd044.mat.metacc-bd044.prefabcc-bd044.prefab.metacc-bd045.matcc-bd045.mat.metacc-bd045.prefabcc-bd045.prefab.metacc-bd046.matcc-bd046.mat.metacc-bd046.prefabcc-bd046.prefab.metacc-bd047.matcc-bd047.mat.metacc-bd047.prefabcc-bd047.prefab.metacc-bd049.matcc-bd049.mat.metacc-bd049.prefabcc-bd049.prefab.metacc-bd050.matcc-bd050.mat.metacc-bd050.prefabcc-bd050.prefab.metacc-bd051.prefabcc-bd051.prefab.metacc-bd052.matcc-bd052.mat.metacc-bd052.prefabcc-bd052.prefab.metacc-bd053.prefabcc-bd053.prefab.metacc-bd054.matcc-bd054.mat.metacc-bd054.prefabcc-bd054.prefab.metacc-bd055.matcc-bd055.mat.metacc-bd055.prefabcc-bd055.prefab.metacc-bd056.matcc-bd056.mat.metacc-bd056.prefabcc-bd056.prefab.metacc-bd057.matcc-bd057.mat.metacc-bd057.prefabcc-bd057.prefab.metacc-bd058-1.matcc-bd058-1.mat.metacc-bd058.matcc-bd058.mat.metacc-bd058.prefabcc-bd058.prefab.metacc-bd059.matcc-bd059.mat.metacc-bd059.prefabcc-bd059.prefab.metacc-bd060-Controller.controllercc-bd060-Controller.controller.metacc-bd060-donghua.animcc-bd060-donghua.anim.metacc-bd060.matcc-bd060.mat.metacc-bd060.prefabcc-bd060.prefab.metacc-bd061-1.matcc-bd061-1.mat.metacc-bd061-Controller.controllercc-bd061-Controller.controller.metacc-bd061-donghua.animcc-bd061-donghua.anim.metacc-bd061.matcc-bd061.mat.metacc-bd061.prefabcc-bd061.prefab.metacc-bd062-1.matcc-bd062-1.mat.metacc-bd062-Controller.controllercc-bd062-Controller.controller.metacc-bd062-donghua.animcc-bd062-donghua.anim.metacc-bd062.matcc-bd062.mat.metacc-bd062.prefabcc-bd062.prefab.metacc-bd063-1.matcc-bd063-1.mat.metacc-bd063-Controller.controllercc-bd063-Controller.controller.metacc-bd063-donghua.animcc-bd063-donghua.anim.metacc-bd063.matcc-bd063.mat.metacc-bd063.prefabcc-bd063.prefab.metacc-bd064.matcc-bd064.mat.metacc-bd064.prefabcc-bd064.prefab.metacc-bd065.matcc-bd065.mat.metacc-bd065.prefabcc-bd065.prefab.metacc-bd066.matcc-bd066.mat.metacc-bd066.prefabcc-bd066.prefab.metacc-bd067.matcc-bd067.mat.metacc-bd067.prefabcc-bd067.prefab.metacc-bd068.matcc-bd068.mat.metacc-bd068.prefabcc-bd068.prefab.metacc-bd069.matcc-bd069.mat.metacc-bd069.prefabcc-bd069.prefab.metacc-bd071-Controller.controllercc-bd071-Controller.controller.metacc-bd071-donghua.animcc-bd071-donghua.anim.metacc-bd071.matcc-bd071.mat.metacc-bd071.prefabcc-bd071.prefab.metacc-bd072.matcc-bd072.mat.metacc-bd072.prefabcc-bd072.prefab.metacc-bd073.matcc-bd073.mat.metacc-bd073.prefabcc-bd073.prefab.metacc-bd074.matcc-bd074.mat.metacc-bd074.prefabcc-bd074.prefab.metacc-bd075.matcc-bd075.mat.metacc-bd075.prefabcc-bd075.prefab.metacc-bd077.matcc-bd077.mat.metacc-bd077.prefabcc-bd077.prefab.metacc-bddxsdrk.matcc-bddxsdrk.mat.metacc-bddxsdrk.prefabcc-bddxsdrk.prefab.metacc-bdhq.matcc-bdhq.mat.metacc-bdhq.prefabcc-bdhq.prefab.metadiaopai.xafdiaopai.xaf.metaeff0042.mateff0042.mat.metafireire.prefabfireire.prefab.metahailang.prefabhailang.prefab.metahlcx-rk.mathlcx-rk.mat.metahlcx-rk.prefabhlcx-rk.prefab.metals-bd001.matls-bd001.mat.metals-bd002.matls-bd002.mat.metals_bd001.prefabls_bd001.prefab.metals_bd002.prefabls_bd002.prefab.metals_bd003.prefabls_bd003.prefab.metals_bd004.prefabls_bd004.prefab.metals_bd005.prefabls_bd005.prefab.metals_bd006.prefabls_bd006.prefab.metals_bd007.prefabls_bd007.prefab.metals_bd008.matls_bd008.mat.metals_bd008.prefabls_bd008.prefab.metals_bd009.matls_bd009.mat.metals_bd009.prefabls_bd009.prefab.metals_bd010.prefabls_bd010.prefab.metalt-bd001-01.prefablt-bd001-01.prefab.metalt-bd002_2.prefablt-bd002_2.prefab.metalt-bd005_2.prefablt-bd005_2.prefab.metalt-bd007.prefablt-bd007.prefab.metalt-bd009.prefablt-bd009.prefab.metalt-bd011_2.prefablt-bd011_2.prefab.metalt-bd012.prefablt-bd012.prefab.metalt-bd013-01.prefablt-bd013-01.prefab.metalt-bd013-02.prefablt-bd013-02.prefab.metalt-bd013-03.prefablt-bd013-03.prefab.metalt-bd013-04.prefablt-bd013-04.prefab.metalt-bd014.prefablt-bd014.prefab.metalt-bd015.prefablt-bd015.prefab.metalt-bd016.prefablt-bd016.prefab.metalt-bd017.prefablt-bd017.prefab.metalt-bd018-01.prefablt-bd018-01.prefab.metalt-bd018-02.prefablt-bd018-02.prefab.metalt-bd018-03-shizi.matlt-bd018-03-shizi.mat.metalt-bd018-03_2.prefablt-bd018-03_2.prefab.metalt-bd018-04_2.prefablt-bd018-04_2.prefab.metalt-bd018-05.prefablt-bd018-05.prefab.metalt-bd018-06_2.prefablt-bd018-06_2.prefab.metalt-bd018-07.prefablt-bd018-07.prefab.metalt-bd018-08.prefablt-bd018-08.prefab.metalt-bd018-09.prefablt-bd018-09.prefab.metalt-bd018-10.prefablt-bd018-10.prefab.metalt-bd018-11.prefablt-bd018-11.prefab.metalt-bd019.prefablt-bd019.prefab.metalt-bd020.prefablt-bd020.prefab.metalt-bd021.prefablt-bd021.prefab.metalt-bd022.prefablt-bd022.prefab.metalt-bd024.prefablt-bd024.prefab.metalt-bd025-01.prefablt-bd025-01.prefab.metalt-bd025-02.prefablt-bd025-02.prefab.metalt-bd025-03.prefablt-bd025-03.prefab.metalt-bd025-04.prefablt-bd025-04.prefab.metalt-bd025-05.prefablt-bd025-05.prefab.metalt-bd025-06.prefablt-bd025-06.prefab.metalt-bd025-07.prefablt-bd025-07.prefab.metalt-bd025-08.prefablt-bd025-08.prefab.metalt-bd025-09.prefablt-bd025-09.prefab.metalt-bd026.prefablt-bd026.prefab.metalt-bd027.prefablt-bd027.prefab.metalt-bd028.prefablt-bd028.prefab.metalt-bd029.prefablt-bd029.prefab.metalt-bd030.prefablt-bd030.prefab.metalt-bd031.prefablt-bd031.prefab.metalt-bd032.prefablt-bd032.prefab.metalt-bd033.prefablt-bd033.prefab.metalt-bd034.prefablt-bd034.prefab.metalt-bd035.prefablt-bd035.prefab.metalt-bd036-01.prefablt-bd036-01.prefab.metalt-bd036-02.prefablt-bd036-02.prefab.metalt-bd036-03.prefablt-bd036-03.prefab.metalt-bd037.prefablt-bd037.prefab.metalt-bd038.prefablt-bd038.prefab.metalt-bd039.prefablt-bd039.prefab.metamz-bd005.matmz-bd005.mat.metamz-bd011-03.prefabmz-bd011-03.prefab.metamz-bd011-04.prefabmz-bd011-04.prefab.metamz-bd013.prefabmz-bd013.prefab.metamz-bd014.prefabmz-bd014.prefab.metamz-bd015.prefabmz-bd015.prefab.metamz-bd016.prefabmz-bd016.prefab.metamz-bd017.prefabmz-bd017.prefab.metamz-bd018.prefabmz-bd018.prefab.metamz-bd019.prefabmz-bd019.prefab.metamz-bd020.prefabmz-bd020.prefab.metamz-bd021.prefabmz-bd021.prefab.metamz-bd022.prefabmz-bd022.prefab.metamz-bd023.prefabmz-bd023.prefab.metamz-bd024.prefabmz-bd024.prefab.metamz-bd025.prefabmz-bd025.prefab.metamz-bd026.prefabmz-bd026.prefab.metamz-bd027.prefabmz-bd027.prefab.metamz-bd028.prefabmz-bd028.prefab.metamz-bd029.prefabmz-bd029.prefab.metamz-bd030.prefabmz-bd030.prefab.metamz-bd099.prefabmz-bd099.prefab.metanml--bd082-shizi.matnml--bd082-shizi.mat.metanml-bd001.prefabnml-bd001.prefab.metanml-bd002 1.prefabnml-bd002 1.prefab.metanml-bd003 1.prefabnml-bd003 1.prefab.metanml-bd003.prefabnml-bd003.prefab.metanml-bd004.prefabnml-bd004.prefab.metanml-bd005.prefabnml-bd005.prefab.metanml-bd006.prefabnml-bd006.prefab.metanml-bd007-Controller.controllernml-bd007-Controller.controller.metanml-bd007-donghua.animnml-bd007-donghua.anim.metanml-bd007.matnml-bd007.mat.metanml-bd007.prefabnml-bd007.prefab.metanml-bd008.prefabnml-bd008.prefab.metanml-bd009.prefabnml-bd009.prefab.metanml-bd010.prefabnml-bd010.prefab.metanml-bd011.prefabnml-bd011.prefab.metanml-bd012.prefabnml-bd012.prefab.metanml-bd013-Controller.controllernml-bd013-Controller.controller.metanml-bd013-donghua.animnml-bd013-donghua.anim.metanml-bd013.prefabnml-bd013.prefab.metanml-bd014-Controller.controllernml-bd014-Controller.controller.metanml-bd014-donghua.animnml-bd014-donghua.anim.metanml-bd014.prefabnml-bd014.prefab.metanml-bd015-Controller.controllernml-bd015-Controller.controller.metanml-bd015-donghua.animnml-bd015-donghua.anim.metanml-bd015.prefabnml-bd015.prefab.metanml-bd018.prefabnml-bd018.prefab.metanml-bd019 1.prefabnml-bd019 1.prefab.metanml-bd019-Controller.controllernml-bd019-Controller.controller.metanml-bd019-donghua.animnml-bd019-donghua.anim.metanml-bd020-Controller.controllernml-bd020-Controller.controller.metanml-bd020-donghua.animnml-bd020-donghua.anim.metanml-bd020.prefabnml-bd020.prefab.metanml-bd021-Controller.controllernml-bd021-Controller.controller.metanml-bd021-donghua.animnml-bd021-donghua.anim.metanml-bd021.prefabnml-bd021.prefab.metanml-bd022.prefabnml-bd022.prefab.metanml-bd023.prefabnml-bd023.prefab.metanml-bd024 1.prefabnml-bd024 1.prefab.metanml-bd024.prefabnml-bd024.prefab.metanml-bd025.prefabnml-bd025.prefab.metanml-bd026.prefabnml-bd026.prefab.metanml-bd027.prefabnml-bd027.prefab.metanml-bd028.prefabnml-bd028.prefab.metanml-bd029.prefabnml-bd029.prefab.metanml-bd030.prefabnml-bd030.prefab.metanml-bd031.prefabnml-bd031.prefab.metanml-bd032.prefabnml-bd032.prefab.metanml-bd033.prefabnml-bd033.prefab.metanml-bd034.prefabnml-bd034.prefab.metanml-bd035.prefabnml-bd035.prefab.metanml-bd036.prefabnml-bd036.prefab.metanml-bd037.prefabnml-bd037.prefab.metanml-bd038.prefabnml-bd038.prefab.metanml-bd039.prefabnml-bd039.prefab.metanml-bd040.prefabnml-bd040.prefab.metanml-bd041.prefabnml-bd041.prefab.metanml-bd042-Controller.controllernml-bd042-Controller.controller.metanml-bd042-donghua.animnml-bd042-donghua.anim.metanml-bd042.prefabnml-bd042.prefab.metanml-bd043-Controller.controllernml-bd043-Controller.controller.metanml-bd043-donghua.animnml-bd043-donghua.anim.metanml-bd043.prefabnml-bd043.prefab.metanml-bd044-Controller.controllernml-bd044-Controller.controller.metanml-bd044-donghua.animnml-bd044-donghua.anim.metanml-bd044.prefabnml-bd044.prefab.metanml-bd045.prefabnml-bd045.prefab.metanml-bd046.prefabnml-bd046.prefab.metanml-bd047.prefabnml-bd047.prefab.metanml-bd048.prefabnml-bd048.prefab.metanml-bd049.prefabnml-bd049.prefab.metanml-bd050-shizi.matnml-bd050-shizi.mat.metanml-bd050.matnml-bd050.mat.metanml-bd050.prefabnml-bd050.prefab.metanml-bd051.prefabnml-bd051.prefab.metanml-bd052.prefabnml-bd052.prefab.metanml-bd053.prefabnml-bd053.prefab.metanml-bd054.matnml-bd054.mat.metanml-bd054.prefabnml-bd054.prefab.metanml-bd055-shizi.matnml-bd055-shizi.mat.metanml-bd055.prefabnml-bd055.prefab.metanml-bd056.prefabnml-bd056.prefab.metanml-bd057.prefabnml-bd057.prefab.metanml-bd058 1.prefabnml-bd058 1.prefab.metanml-bd058.prefabnml-bd058.prefab.metanml-bd059-shizi.matnml-bd059-shizi.mat.metanml-bd059.matnml-bd059.mat.metanml-bd059.prefabnml-bd059.prefab.metanml-bd060 1.prefabnml-bd060 1.prefab.metanml-bd061.prefabnml-bd061.prefab.metanml-bd062 1.prefabnml-bd062 1.prefab.metanml-bd062-shizi.matnml-bd062-shizi.mat.metanml-bd062.prefabnml-bd062.prefab.metanml-bd063-Controller.controllernml-bd063-Controller.controller.metanml-bd063-donghua.animnml-bd063-donghua.anim.metanml-bd063-shizi.matnml-bd063-shizi.mat.metanml-bd063.matnml-bd063.mat.metanml-bd063.prefabnml-bd063.prefab.metanml-bd064-shizi.matnml-bd064-shizi.mat.metanml-bd064.matnml-bd064.mat.metanml-bd064.prefabnml-bd064.prefab.metanml-bd065-shizi.matnml-bd065-shizi.mat.metanml-bd065.matnml-bd065.mat.metanml-bd065.prefabnml-bd065.prefab.metanml-bd066-shizi.matnml-bd066-shizi.mat.metanml-bd066.matnml-bd066.mat.metanml-bd066.prefabnml-bd066.prefab.metanml-bd067-Controller.controllernml-bd067-Controller.controller.metanml-bd067-donghua.animnml-bd067-donghua.anim.metanml-bd067.matnml-bd067.mat.metanml-bd067.prefabnml-bd067.prefab.metanml-bd068.matnml-bd068.mat.metanml-bd068.prefabnml-bd068.prefab.metanml-bd069.prefabnml-bd069.prefab.metanml-bd070.prefabnml-bd070.prefab.metanml-bd071-Controller.controllernml-bd071-Controller.controller.metanml-bd071-donghua.animnml-bd071-donghua.anim.metanml-bd071.prefabnml-bd071.prefab.metanml-bd072-Controller.controllernml-bd072-Controller.controller.metanml-bd072-donghua.animnml-bd072-donghua.anim.metanml-bd072.prefabnml-bd072.prefab.metanml-bd073.prefabnml-bd073.prefab.metanml-bd074.prefabnml-bd074.prefab.metanml-bd075.prefabnml-bd075.prefab.metanml-bd076.prefabnml-bd076.prefab.metanml-bd077.prefabnml-bd077.prefab.metanml-bd078.prefabnml-bd078.prefab.metanml-bd079.prefabnml-bd079.prefab.metanml-bd080.prefabnml-bd080.prefab.metanml-bd081.prefabnml-bd081.prefab.metanml-bd082.prefabnml-bd082.prefab.metanml-bd083-Controller.controllernml-bd083-Controller.controller.metanml-bd083-donghua.animnml-bd083-donghua.anim.metanml-bd083.matnml-bd083.mat.metanml-bd083.prefabnml-bd083.prefab.metanml-bd084.prefabnml-bd084.prefab.metanml-bd085.prefabnml-bd085.prefab.metanml-bd086.prefabnml-bd086.prefab.metanml-bd087.prefabnml-bd087.prefab.metanml-bd088.matnml-bd088.mat.metanml-bd088.prefabnml-bd088.prefab.metanml-bd089.matnml-bd089.mat.metanml-bd089.prefabnml-bd089.prefab.metanml-bd090.prefabnml-bd090.prefab.metanml-bd091.prefabnml-bd091.prefab.metanml-bd093.prefabnml-bd093.prefab.metanml-bd094.prefabnml-bd094.prefab.metanml-bd095.prefabnml-bd095.prefab.metanml-bd096.matnml-bd096.mat.metanml-bd096.prefabnml-bd096.prefab.metanml-bd098.prefabnml-bd098.prefab.metanml-bd099-Controller.controllernml-bd099-Controller.controller.metanml-bd099-donghua.animnml-bd099-donghua.anim.metanml-bd099.prefabnml-bd099.prefab.metanml-bd100.prefabnml-bd100.prefab.metanml-bd101.matnml-bd101.mat.metanml-bd101.prefabnml-bd101.prefab.metanml-bd102.prefabnml-bd102.prefab.metanml-bd103.prefabnml-bd103.prefab.metanml-bd104.prefabnml-bd104.prefab.metanml-bd105.prefabnml-bd105.prefab.metanml-bd106.prefabnml-bd106.prefab.metanml-bd107.prefabnml-bd107.prefab.metanml-bd108.prefabnml-bd108.prefab.metanml-bd109.prefabnml-bd109.prefab.metanml-bd110-Controller.controllernml-bd110-Controller.controller.metanml-bd110-donghua.animnml-bd110-donghua.anim.metanml-bd110.prefabnml-bd110.prefab.metanml-bd111.prefabnml-bd111.prefab.metanml-bd112.prefabnml-bd112.prefab.metanml-bd113.prefabnml-bd113.prefab.metanml-bd114.prefabnml-bd114.prefab.metanml-bd115.prefabnml-bd115.prefab.metanml-bd116.prefabnml-bd116.prefab.metanml-bd117-shizi.matnml-bd117-shizi.mat.metanml-bd117.matnml-bd117.mat.metanml-bd117.prefabnml-bd117.prefab.metanml-bd118.matnml-bd118.mat.metanml-bd118.prefabnml-bd118.prefab.metanml-bd119-shizi.matnml-bd119-shizi.mat.metanml-bd119.matnml-bd119.mat.metanml-bd119.prefabnml-bd119.prefab.metanml-bd121.matnml-bd121.mat.metanml-bd121.prefabnml-bd121.prefab.metanml-bd122-01.matnml-bd122-01.mat.metanml-bd122-02.matnml-bd122-02.mat.metanml-bd122-03.matnml-bd122-03.mat.metanml-bd122.prefabnml-bd122.prefab.metanml-bd123-01.matnml-bd123-01.mat.metanml-bd123-02.matnml-bd123-02.mat.metanml-bd123-03.matnml-bd123-03.mat.metanml-bd123.prefabnml-bd123.prefab.metanml-bd124.prefabnml-bd124.prefab.metanml-bd125.matnml-bd125.mat.metanml-bd125.prefabnml-bd125.prefab.metanml-bd126-Controller.controllernml-bd126-Controller.controller.metanml-bd126-donghua.animnml-bd126-donghua.anim.metanml-bd126.matnml-bd126.mat.metanml-bd126.prefabnml-bd126.prefab.metanml-bd127.matnml-bd127.mat.metanml-bd127.prefabnml-bd127.prefab.metanml-bd128-01.matnml-bd128-01.mat.metanml-bd128-01.prefabnml-bd128-01.prefab.metanml-bd128-02.prefabnml-bd128-02.prefab.metanml-bd128-03.prefabnml-bd128-03.prefab.metanml-bd128-04.prefabnml-bd128-04.prefab.metanml-bd129.prefabnml-bd129.prefab.metanml-bd130.prefabnml-bd130.prefab.metanml-bd131-Controller.controllernml-bd131-Controller.controller.metanml-bd131-donghua.animnml-bd131-donghua.anim.metanml-bd131.matnml-bd131.mat.metanml-bd131.prefabnml-bd131.prefab.metanml-bd132-Controller.controllernml-bd132-Controller.controller.metanml-bd132-donghua.animnml-bd132-donghua.anim.metanml-bd132.matnml-bd132.mat.metanml-bd132.prefabnml-bd132.prefab.metanml-bd133-Controller.controllernml-bd133-Controller.controller.metanml-bd133-donghua.animnml-bd133-donghua.anim.metanml-bd133.matnml-bd133.mat.metanml-bd133.prefabnml-bd133.prefab.metanml-bd134-Controller.controllernml-bd134-Controller.controller.metanml-bd134-donghua.animnml-bd134-donghua.anim.metanml-bd134.matnml-bd134.mat.metanml-bd134.prefabnml-bd134.prefab.metanml-bd135-Controller.controllernml-bd135-Controller.controller.metanml-bd135-donghua.animnml-bd135-donghua.anim.metanml-bd135.matnml-bd135.mat.metanml-bd135.prefabnml-bd135.prefab.metanml-bd136-Controller.controllernml-bd136-Controller.controller.metanml-bd136-donghua.animnml-bd136-donghua.anim.metanml-bd136.matnml-bd136.mat.metanml-bd136.prefabnml-bd136.prefab.metanml-bd137-Controller.controllernml-bd137-Controller.controller.metanml-bd137-donghua.animnml-bd137-donghua.anim.metanml-bd137.matnml-bd137.mat.metanml-bd137.prefabnml-bd137.prefab.metanml-bd139.prefabnml-bd139.prefab.metanml-bd140.prefabnml-bd140.prefab.metanml-bd143.lmo-nml-bd143-0_0_0Mat.matnml-bd143.lmo-nml-bd143-0_0_0Mat.mat.metanml-bd144-01.matnml-bd144-01.mat.metanml-bd144-02.matnml-bd144-02.mat.metanml-bd144.prefabnml-bd144.prefab.metanml-bd145.matnml-bd145.mat.metanml-bd145.prefabnml-bd145.prefab.metanml-bd146-Controller.controllernml-bd146-Controller.controller.metanml-bd146-donghua.animnml-bd146-donghua.anim.metanml-bd146.matnml-bd146.mat.metanml-bd146.prefabnml-bd146.prefab.metanml-bd147.matnml-bd147.mat.metanml-bd147.prefabnml-bd147.prefab.metanml-bd149_Controller.controllernml-bd149_Controller.controller.metanml-bd149_Take 001.animnml-bd149_Take 001.anim.metanml-bd151-01.matnml-bd151-01.mat.metanml-bd151-02.matnml-bd151-02.mat.metanml-bd151-03.matnml-bd151-03.mat.metanml-bd151.prefabnml-bd151.prefab.metanml-bd152-01.matnml-bd152-01.mat.metanml-bd152-02.matnml-bd152-02.mat.metanml-bd152.prefabnml-bd152.prefab.metanml-bd153.prefabnml-bd153.prefab.metanml-bd154.matnml-bd154.mat.metanml-bd154.prefabnml-bd154.prefab.metanml-bd155.prefabnml-bd155.prefab.metanml-bd156.prefabnml-bd156.prefab.metanml-bd157.matnml-bd157.mat.metanml-bd157.prefabnml-bd157.prefab.metanml-bd158-Controller.controllernml-bd158-Controller.controller.metanml-bd158-donghua.animnml-bd158-donghua.anim.metanml-bd158.matnml-bd158.mat.metanml-bd158.prefabnml-bd158.prefab.metanml-bd159-Contorller.controllernml-bd159-Contorller.controller.metanml-bd159-donghua.animnml-bd159-donghua.anim.metanml-bd159.matnml-bd159.mat.metanml-bd159.prefabnml-bd159.prefab.metanml-bd160.prefabnml-bd160.prefab.metanml-bd161.prefabnml-bd161.prefab.metanml-bd162.prefabnml-bd162.prefab.metanml-bd163.prefabnml-bd163.prefab.metanml-bd164.prefabnml-bd164.prefab.metanml-bd165-Controller.controllernml-bd165-Controller.controller.metanml-bd165-donghua.animnml-bd165-donghua.anim.metanml-bd165.matnml-bd165.mat.metanml-bd165.prefabnml-bd165.prefab.metanml-bd166.prefabnml-bd166.prefab.metanml-bd168-Controller.controllernml-bd168-Controller.controller.metanml-bd168-donghua.animnml-bd168-donghua.anim.metanml-bd168.prefabnml-bd168.prefab.metanml-bd169.matnml-bd169.mat.metanml-bd169.prefabnml-bd169.prefab.metanml-bd170.prefabnml-bd170.prefab.metanml-bd172.prefabnml-bd172.prefab.metanml-bd173-Controller.controllernml-bd173-Controller.controller.metanml-bd173-donghua.animnml-bd173-donghua.anim.metanml-bd173.matnml-bd173.mat.metanml-bd173.prefabnml-bd173.prefab.metanml-bd174.matnml-bd174.mat.metanml-bd174.prefabnml-bd174.prefab.metanml-bd175.prefabnml-bd175.prefab.metanml-bd176.prefabnml-bd176.prefab.metanml-bd177 .prefabnml-bd177 .prefab.metanml-bd178.prefabnml-bd178.prefab.metanml-bd179.prefabnml-bd179.prefab.metanml-bd180.prefabnml-bd180.prefab.metanml-bd181.prefabnml-bd181.prefab.metanml-bd182-1.matnml-bd182-1.mat.metanml-bd182-shizi.matnml-bd182-shizi.mat.metanml-bd182.matnml-bd182.mat.metanml-bd182.prefabnml-bd182.prefab.metanml-bd183-Controller.controllernml-bd183-Controller.controller.metanml-bd183-donghua.animnml-bd183-donghua.anim.metanml-bd183.matnml-bd183.mat.metanml-bd183.prefabnml-bd183.prefab.metanml-bd184.prefabnml-bd184.prefab.metanml-bd185.matnml-bd185.mat.metanml-bd185.prefabnml-bd185.prefab.metanml-bd186.matnml-bd186.mat.metanml-bd186.prefabnml-bd186.prefab.metanml-bd187.prefabnml-bd187.prefab.metanml-bd188.matnml-bd188.mat.metanml-bd188.prefabnml-bd188.prefab.metanml-bd189-01.matnml-bd189-01.mat.metanml-bd189-02.matnml-bd189-02.mat.metanml-bd189-03.matnml-bd189-03.mat.metanml-bd189-04.matnml-bd189-04.mat.metanml-bd189.prefabnml-bd189.prefab.metanml-bd190.prefabnml-bd190.prefab.metanml-bd191.prefabnml-bd191.prefab.metanml-bd192_Controller.controllernml-bd192_Controller.controller.metanml-bd192_Take 001.animnml-bd192_Take 001.anim.metanml-bd193_Controller.controllernml-bd193_Controller.controller.metanml-bd193_Take 001.animnml-bd193_Take 001.anim.metanml-bd194-Take 001.animnml-bd194-Take 001.anim.metanml-bd194_Controller.controllernml-bd194_Controller.controller.metanml-bd194_Take 001.animnml-bd194_Take 001.anim.metanml-bd195.prefabnml-bd195.prefab.metanml-bd196.prefabnml-bd196.prefab.metanml-bd197.prefabnml-bd197.prefab.metanml-bd199-Take 001.animnml-bd199-Take 001.anim.metanml-bd199_Controller.controllernml-bd199_Controller.controller.metanml-bd201.prefabnml-bd201.prefab.metanml-bd202.prefabnml-bd202.prefab.metanml-bd203.prefabnml-bd203.prefab.metanml-bd204.prefabnml-bd204.prefab.metanml-bd205.prefabnml-bd205.prefab.metanml-bd206.prefabnml-bd206.prefab.metanml-bd207.prefabnml-bd207.prefab.metanml-bd208.prefabnml-bd208.prefab.metanml-bd209.prefabnml-bd209.prefab.metanml-bd210.prefabnml-bd210.prefab.metanml-bd211.prefabnml-bd211.prefab.metanml-bd212 LOD.prefabnml-bd212 LOD.prefab.metanml-bd212.prefabnml-bd212.prefab.metanml-bd213.prefabnml-bd213.prefab.metanml-bd214 LOD.prefabnml-bd214 LOD.prefab.metanml-bd214.prefabnml-bd214.prefab.metanml-bd215 LOD.prefabnml-bd215 LOD.prefab.metanml-bd215.prefabnml-bd215.prefab.metanml-bd216 LOD.prefabnml-bd216 LOD.prefab.metanml-bd216.prefabnml-bd216.prefab.metanml-bd217 LOD.prefabnml-bd217 LOD.prefab.metanml-bd217.prefabnml-bd217.prefab.metanml-bd218.prefabnml-bd218.prefab.metanml-bd219 LOD.prefabnml-bd219 LOD.prefab.metanml-bd219.prefabnml-bd219.prefab.metanml-bd220.prefabnml-bd220.prefab.metanml-bd221.prefabnml-bd221.prefab.metanml-bd222 LOD.prefabnml-bd222 LOD.prefab.metanml-bd222.prefabnml-bd222.prefab.metanml_bd017.prefabnml_bd017.prefab.metanml_bd149.prefabnml_bd149.prefab.metanml_bd192.prefabnml_bd192.prefab.metanml_bd193.prefabnml_bd193.prefab.metanml_bd194.prefabnml_bd194.prefab.metanml_bd199.prefabnml_bd199.prefab.metanml_bd211_m_01.matnml_bd211_m_01.mat.metanml_bd211_m_02.matnml_bd211_m_02.mat.metanml_bd212_m_01.matnml_bd212_m_01.mat.metanml_bd214_m_01.matnml_bd214_m_01.mat.metanml_bd216_m_01.matnml_bd216_m_01.mat.metanml_bd220_m_01.matnml_bd220_m_01.mat.metanml_bd221_m_01.matnml_bd221_m_01.mat.metashuiwen.matshuiwen.mat.metasl-ba014-01-Controller.controllersl-ba014-01-Controller.controller.metasl-ba014-01-donghua.animsl-ba014-01-donghua.anim.metasl-bd001-Controller.controllersl-bd001-Controller.controller.metasl-bd001-donghua.animsl-bd001-donghua.anim.metasl-bd001.prefabsl-bd001.prefab.metasl-bd003-Controller.controllersl-bd003-Controller.controller.metasl-bd003-donghua.animsl-bd003-donghua.anim.metasl-bd003.prefabsl-bd003.prefab.metasl-bd004-Controller.controllersl-bd004-Controller.controller.metasl-bd004-donghua.animsl-bd004-donghua.anim.metasl-bd004.prefabsl-bd004.prefab.metasl-bd005-Controller.controllersl-bd005-Controller.controller.metasl-bd005-donghua.animsl-bd005-donghua.anim.metasl-bd005.prefabsl-bd005.prefab.metasl-bd006.prefabsl-bd006.prefab.metasl-bd007.prefabsl-bd007.prefab.metasl-bd008.prefabsl-bd008.prefab.metasl-bd009.prefabsl-bd009.prefab.metasl-bd010.prefabsl-bd010.prefab.metasl-bd011.prefabsl-bd011.prefab.metasl-bd012.prefabsl-bd012.prefab.metasl-bd013-Controller.controllersl-bd013-Controller.controller.metasl-bd013-donghua.animsl-bd013-donghua.anim.metasl-bd013.prefabsl-bd013.prefab.metasl-bd014-01.prefabsl-bd014-01.prefab.metasl-bd014-02.prefabsl-bd014-02.prefab.metasl-bd014-03.prefabsl-bd014-03.prefab.metasl-bd014-04.prefabsl-bd014-04.prefab.metasl-bd014-05.prefabsl-bd014-05.prefab.metasl-bd015-Controller.controllersl-bd015-Controller.controller.metasl-bd015-donghua.animsl-bd015-donghua.anim.metasl-bd015.prefabsl-bd015.prefab.metasl-bd017-01.prefabsl-bd017-01.prefab.metasl-bd017-02.prefabsl-bd017-02.prefab.metasl-bd017-03.prefabsl-bd017-03.prefab.metasl-bd019.prefabsl-bd019.prefab.metasl-bd020-Controller.controllersl-bd020-Controller.controller.metasl-bd020-donghua.animsl-bd020-donghua.anim.metasl-bd020.prefabsl-bd020.prefab.metasl-bd021.prefabsl-bd021.prefab.metasl-bd025.prefabsl-bd025.prefab.metasl-bd026-01.prefabsl-bd026-01.prefab.metasl-bd026-02.prefabsl-bd026-02.prefab.metasl-bd026-03.prefabsl-bd026-03.prefab.metasl-bd026-04.prefabsl-bd026-04.prefab.metasl-bd026-05.prefabsl-bd026-05.prefab.metasl-bd026-06.prefabsl-bd026-06.prefab.metasl-bd026-07.prefabsl-bd026-07.prefab.metasl-bd026-08.prefabsl-bd026-08.prefab.metasl-bd026-09.prefabsl-bd026-09.prefab.metasl-bd028-01.prefabsl-bd028-01.prefab.metasl-bd028-02.prefabsl-bd028-02.prefab.metasl-bd028-03.prefabsl-bd028-03.prefab.metasl-bd028-04.prefabsl-bd028-04.prefab.metasl-bd030.prefabsl-bd030.prefab.metasl-bd031-1.prefabsl-bd031-1.prefab.metasl-bd032-01.prefabsl-bd032-01.prefab.metasl-bd032-02.prefabsl-bd032-02.prefab.metasl-bd032-03.prefabsl-bd032-03.prefab.metasl-bd032.prefabsl-bd032.prefab.metasl-bd033.prefabsl-bd033.prefab.metasl-bd034.prefabsl-bd034.prefab.metasl-bd035.prefabsl-bd035.prefab.metasl-bd036.prefabsl-bd036.prefab.metasl-bd037.prefabsl-bd037.prefab.metasl-bd038.prefabsl-bd038.prefab.metasl-bd039.prefabsl-bd039.prefab.metasl-bd040.prefabsl-bd040.prefab.metasl-bd041.prefabsl-bd041.prefab.metasl-bd042.prefabsl-bd042.prefab.metasl-bd043-Controller.controllersl-bd043-Controller.controller.metasl-bd043-donghua.animsl-bd043-donghua.anim.metasl-bd043.prefabsl-bd043.prefab.metasl-bd044-Controller.controllersl-bd044-Controller.controller.metasl-bd044-donghua.animsl-bd044-donghua.anim.metasl-bd044.prefabsl-bd044.prefab.meta
Materials.meta
Materials
Model.meta
Model
Scene.meta
Scene
07hdw_hualanbai.FBX07hdw_hualanbai.FBX.meta07hdw_hualanbai.lmo.mtl07hdw_hualanbai.lmo.mtl.meta07hdw_hualanbai.lmo.obj07hdw_hualanbai.lmo.obj.metaAm_bd002.lmo.mtlAm_bd002.lmo.mtl.metaAm_bd002.lmo.objAm_bd002.lmo.obj.metaFB_LYMK_baozuo_01.lmo.mtlFB_LYMK_baozuo_01.lmo.mtl.metaFB_LYMK_baozuo_01.lmo.objFB_LYMK_baozuo_01.lmo.obj.metaFB_LYMK_diaosu_01.lmo.mtlFB_LYMK_diaosu_01.lmo.mtl.metaFB_LYMK_diaosu_01.lmo.objFB_LYMK_diaosu_01.lmo.obj.metaFB_LYMK_diaosu_02.lmo.mtlFB_LYMK_diaosu_02.lmo.mtl.metaFB_LYMK_diaosu_02.lmo.objFB_LYMK_diaosu_02.lmo.obj.metaFB_LYMK_louti_01.lmo.mtlFB_LYMK_louti_01.lmo.mtl.metaFB_LYMK_louti_01.lmo.objFB_LYMK_louti_01.lmo.obj.metaFB_LYMK_rukou_01.lmo.mtlFB_LYMK_rukou_01.lmo.mtl.metaFB_LYMK_rukou_01.lmo.objFB_LYMK_rukou_01.lmo.obj.metaFB_MMHJ_men_01.lmo.mtlFB_MMHJ_men_01.lmo.mtl.metaFB_MMHJ_men_01.lmo.objFB_MMHJ_men_01.lmo.obj.metaFB_ZJSM_fangzi_0001.lmo.mtlFB_ZJSM_fangzi_0001.lmo.mtl.metaFB_ZJSM_fangzi_0001.lmo.objFB_ZJSM_fangzi_0001.lmo.obj.metaFB_ZJSM_fangzi_0003.lmo.mtlFB_ZJSM_fangzi_0003.lmo.mtl.metaFB_ZJSM_fangzi_0003.lmo.objFB_ZJSM_fangzi_0003.lmo.obj.metaFB_ZJSM_fangzi_0004.lmo.mtlFB_ZJSM_fangzi_0004.lmo.mtl.metaFB_ZJSM_fangzi_0004.lmo.objFB_ZJSM_fangzi_0004.lmo.obj.metaFB_ZJSM_fangzi_0005.lmo.mtlFB_ZJSM_fangzi_0005.lmo.mtl.metaFB_ZJSM_fangzi_0005.lmo.objFB_ZJSM_fangzi_0005.lmo.obj.metaFB_tt-2_Bossshizhu_0001.lmo.mtlFB_tt-2_Bossshizhu_0001.lmo.mtl.metaFB_tt-2_Bossshizhu_0001.lmo.objFB_tt-2_Bossshizhu_0001.lmo.obj.metaFB_tt-2_Bosstaizi_01_01.lmo.mtlFB_tt-2_Bosstaizi_01_01.lmo.mtl.metaFB_tt-2_Bosstaizi_01_01.lmo.objFB_tt-2_Bosstaizi_01_01.lmo.obj.metaFB_ttt3_diaoxiang_0001.lmo.mtlFB_ttt3_diaoxiang_0001.lmo.mtl.metaFB_ttt3_diaoxiang_0001.lmo.objFB_ttt3_diaoxiang_0001.lmo.obj.metaFB_ttt3_diaoxiang_0002.lmo.mtlFB_ttt3_diaoxiang_0002.lmo.mtl.metaFB_ttt3_diaoxiang_0002.lmo.objFB_ttt3_diaoxiang_0002.lmo.obj.metaFB_ttt3_louti_0002.lmo.mtlFB_ttt3_louti_0002.lmo.mtl.metaFB_ttt3_louti_0002.lmo.objFB_ttt3_louti_0002.lmo.obj.metaFB_ttt3_penquan_0001.lmo.mtlFB_ttt3_penquan_0001.lmo.mtl.metaFB_ttt3_penquan_0001.lmo.objFB_ttt3_penquan_0001.lmo.obj.metaFB_ttt3_qiang_0005.lmo.mtlFB_ttt3_qiang_0005.lmo.mtl.metaFB_ttt3_qiang_0005.lmo.objFB_ttt3_qiang_0005.lmo.obj.metaFB_ttt3_xiejie_0001.lmo.mtlFB_ttt3_xiejie_0001.lmo.mtl.metaFB_ttt3_xiejie_0001.lmo.objFB_ttt3_xiejie_0001.lmo.obj.metaFB_ttt3_zhuzi_0001.lmo.mtlFB_ttt3_zhuzi_0001.lmo.mtl.metaFB_ttt3_zhuzi_0001.lmo.objFB_ttt3_zhuzi_0001.lmo.obj.metaKxs_bd001.lmo.mtlKxs_bd001.lmo.mtl.metaKxs_bd001.lmo.objKxs_bd001.lmo.obj.metaMY_bd001.lmo.mtlMY_bd001.lmo.mtl.metaMY_bd001.lmo.objMY_bd001.lmo.obj.metabl-bd001.FBXbl-bd001.FBX.metabl-bd001.lmo.mtlbl-bd001.lmo.mtl.metabl-bd001.lmo.objbl-bd001.lmo.obj.metabl-bd002.FBXbl-bd002.FBX.metabl-bd002.lmo.mtlbl-bd002.lmo.mtl.metabl-bd002.lmo.objbl-bd002.lmo.obj.metabl-bd003.FBXbl-bd003.FBX.metabl-bd003.lmo.mtlbl-bd003.lmo.mtl.metabl-bd003.lmo.objbl-bd003.lmo.obj.metabl-bd004.FBXbl-bd004.FBX.metabl-bd004.lmo.mtlbl-bd004.lmo.mtl.metabl-bd004.lmo.objbl-bd004.lmo.obj.metabl-bd005-01.FBXbl-bd005-01.FBX.metabl-bd005-01.lmo.mtlbl-bd005-01.lmo.mtl.metabl-bd005-01.lmo.objbl-bd005-01.lmo.obj.metabl-bd005-02.FBXbl-bd005-02.FBX.metabl-bd005-02.lmo.mtlbl-bd005-02.lmo.mtl.metabl-bd005-02.lmo.objbl-bd005-02.lmo.obj.metabl-bd005-03.FBXbl-bd005-03.FBX.metabl-bd005-03.lmo.mtlbl-bd005-03.lmo.mtl.metabl-bd005-03.lmo.objbl-bd005-03.lmo.obj.metabl-bd006.FBXbl-bd006.FBX.metabl-bd006.lmo.mtlbl-bd006.lmo.mtl.metabl-bd006.lmo.objbl-bd006.lmo.obj.metabl-bd007.FBXbl-bd007.FBX.metabl-bd007.lmo.mtlbl-bd007.lmo.mtl.metabl-bd007.lmo.objbl-bd007.lmo.obj.metabl-bd008-01.FBXbl-bd008-01.FBX.metabl-bd008-01.lmo.mtlbl-bd008-01.lmo.mtl.metabl-bd008-01.lmo.objbl-bd008-01.lmo.obj.metabl-bd008-02.FBXbl-bd008-02.FBX.metabl-bd008-02.lmo.mtlbl-bd008-02.lmo.mtl.metabl-bd008-02.lmo.objbl-bd008-02.lmo.obj.metabl-bd008-03.FBXbl-bd008-03.FBX.metabl-bd008-03.lmo.mtlbl-bd008-03.lmo.mtl.metabl-bd008-03.lmo.objbl-bd008-03.lmo.obj.metabl-bd008-04.FBXbl-bd008-04.FBX.metabl-bd008-04.lmo.mtlbl-bd008-04.lmo.mtl.metabl-bd008-04.lmo.objbl-bd008-04.lmo.obj.metabl-bd008-05.FBXbl-bd008-05.FBX.metabl-bd008-05.lmo.mtlbl-bd008-05.lmo.mtl.metabl-bd008-05.lmo.objbl-bd008-05.lmo.obj.metabl-bd009.FBXbl-bd009.FBX.metabl-bd009.lmo.mtlbl-bd009.lmo.mtl.metabl-bd009.lmo.objbl-bd009.lmo.obj.metabl-bd010.FBXbl-bd010.FBX.metabl-bd010.lmo.mtlbl-bd010.lmo.mtl.metabl-bd010.lmo.objbl-bd010.lmo.obj.metabl-bd011.FBXbl-bd011.FBX.metabl-bd011.lmo.mtlbl-bd011.lmo.mtl.metabl-bd011.lmo.objbl-bd011.lmo.obj.metabl-bd012.FBXbl-bd012.FBX.metabl-bd012.lmo.mtlbl-bd012.lmo.mtl.metabl-bd012.lmo.objbl-bd012.lmo.obj.metabl-bd013-DONGHUA.fbxbl-bd013-DONGHUA.fbx.metabl-bd013.FBXbl-bd013.FBX.metabl-bd013.lmo.mtlbl-bd013.lmo.mtl.metabl-bd013.lmo.objbl-bd013.lmo.obj.metabl-bd014.FBXbl-bd014.FBX.metabl-bd014.lmo.mtlbl-bd014.lmo.mtl.metabl-bd014.lmo.objbl-bd014.lmo.obj.metabl-bd015.FBXbl-bd015.FBX.metabl-bd015.lmo.mtlbl-bd015.lmo.mtl.metabl-bd015.lmo.objbl-bd015.lmo.obj.metabl-bd016.FBXbl-bd016.FBX.metabl-bd016.lmo.mtlbl-bd016.lmo.mtl.metabl-bd016.lmo.objbl-bd016.lmo.obj.metabl-bd017.FBXbl-bd017.FBX.metabl-bd017.lmo.mtlbl-bd017.lmo.mtl.metabl-bd017.lmo.objbl-bd017.lmo.obj.metabl-bd018.FBXbl-bd018.FBX.metabl-bd018.lmo.mtlbl-bd018.lmo.mtl.metabl-bd018.lmo.objbl-bd018.lmo.obj.metabl-bd019.FBXbl-bd019.FBX.metabl-bd019.lmo.mtlbl-bd019.lmo.mtl.metabl-bd019.lmo.objbl-bd019.lmo.obj.metabl-bd020.FBXbl-bd020.FBX.metabl-bd020.lmo.mtlbl-bd020.lmo.mtl.metabl-bd020.lmo.objbl-bd020.lmo.obj.metabl-bd021.FBXbl-bd021.FBX.metabl-bd021.lmo.mtlbl-bd021.lmo.mtl.metabl-bd021.lmo.objbl-bd021.lmo.obj.metabot_bd001.lmo.mtlbot_bd001.lmo.mtl.metabot_bd001.lmo.objbot_bd001.lmo.obj.metabot_bd002.lmo.mtlbot_bd002.lmo.mtl.metabot_bd002.lmo.objbot_bd002.lmo.obj.metabot_bd003.lmo.mtlbot_bd003.lmo.mtl.metabot_bd003.lmo.objbot_bd003.lmo.obj.metaby-bd001-2.FBXby-bd001-2.FBX.metaby-bd001.lmo.mtlby-bd001.lmo.mtl.metaby-bd001.lmo.objby-bd001.lmo.obj.metaby-bd002.FBXby-bd002.FBX.metaby-bd002.lmo.mtlby-bd002.lmo.mtl.metaby-bd002.lmo.objby-bd002.lmo.obj.metaby-bd003.lmo.mtlby-bd003.lmo.mtl.metaby-bd003.lmo.objby-bd003.lmo.obj.metaby-bd004.FBXby-bd004.FBX.metaby-bd004.lmo.mtlby-bd004.lmo.mtl.metaby-bd004.lmo.objby-bd004.lmo.obj.metaby-bd005-donghua.fbxby-bd005-donghua.fbx.metaby-bd005.FBXby-bd005.FBX.metaby-bd005.lmo.mtlby-bd005.lmo.mtl.metaby-bd005.lmo.objby-bd005.lmo.obj.metaby-bd007.FBXby-bd007.FBX.metaby-bd007.lmo.mtlby-bd007.lmo.mtl.metaby-bd007.lmo.objby-bd007.lmo.obj.metaby-bd008-2.fbxby-bd008-2.fbx.metaby-bd008.lmo.mtlby-bd008.lmo.mtl.metaby-bd008.lmo.objby-bd008.lmo.obj.metaby-bd009-2.fbxby-bd009-2.fbx.metaby-bd009.lmo.mtlby-bd009.lmo.mtl.metaby-bd009.lmo.objby-bd009.lmo.obj.metaby-bd010-2.fbxby-bd010-2.fbx.metaby-bd010.lmo.mtlby-bd010.lmo.mtl.metaby-bd010.lmo.objby-bd010.lmo.obj.metaby-bd011.FBXby-bd011.FBX.metaby-bd011.lmo.mtlby-bd011.lmo.mtl.metaby-bd011.lmo.objby-bd011.lmo.obj.metaby-bd013-2.fbxby-bd013-2.fbx.metaby-bd013.lmo.mtlby-bd013.lmo.mtl.metaby-bd013.lmo.objby-bd013.lmo.obj.metaby-bd014-1.FBXby-bd014-1.FBX.metaby-bd014-1.lmo.mtlby-bd014-1.lmo.mtl.metaby-bd014-1.lmo.objby-bd014-1.lmo.obj.metaby-bd014-2.FBXby-bd014-2.FBX.metaby-bd014-2.lmo.mtlby-bd014-2.lmo.mtl.metaby-bd014-2.lmo.objby-bd014-2.lmo.obj.metaby-bd014-3.FBXby-bd014-3.FBX.metaby-bd014-3.lmo.mtlby-bd014-3.lmo.mtl.metaby-bd014-3.lmo.objby-bd014-3.lmo.obj.metaby-bd014-4.FBXby-bd014-4.FBX.metaby-bd014-4.lmo.mtlby-bd014-4.lmo.mtl.metaby-bd014-4.lmo.objby-bd014-4.lmo.obj.metaby-bd014-5-2.fbxby-bd014-5-2.fbx.metaby-bd014-5.lmo.mtlby-bd014-5.lmo.mtl.metaby-bd014-5.lmo.objby-bd014-5.lmo.obj.metaby-bd014-6-2.fbxby-bd014-6-2.fbx.metaby-bd014-6.lmo.mtlby-bd014-6.lmo.mtl.metaby-bd014-6.lmo.objby-bd014-6.lmo.obj.metaby-bd014-7.lmo.mtlby-bd014-7.lmo.mtl.metaby-bd014-7.lmo.objby-bd014-7.lmo.obj.metaby-bd014-8-2.fbxby-bd014-8-2.fbx.metaby-bd014-8.lmo.mtlby-bd014-8.lmo.mtl.metaby-bd014-8.lmo.objby-bd014-8.lmo.obj.metaby-bd014.lmo.mtlby-bd014.lmo.mtl.metaby-bd014.lmo.objby-bd014.lmo.obj.metaby-bd015-2.FBXby-bd015-2.FBX.metaby-bd015-donghua.fbxby-bd015-donghua.fbx.metaby-bd015.lmo.mtlby-bd015.lmo.mtl.metaby-bd015.lmo.objby-bd015.lmo.obj.metaby-bd016.FBXby-bd016.FBX.metaby-bd016.lmo.mtlby-bd016.lmo.mtl.metaby-bd016.lmo.objby-bd016.lmo.obj.metaby-bd017.FBXby-bd017.FBX.metaby-bd017.lmo.mtlby-bd017.lmo.mtl.metaby-bd017.lmo.objby-bd017.lmo.obj.metaby-bd018.lmo.mtlby-bd018.lmo.mtl.metaby-bd018.lmo.objby-bd018.lmo.obj.metaby-bd019-2.fbxby-bd019-2.fbx.metaby-bd019.lmo.mtlby-bd019.lmo.mtl.metaby-bd019.lmo.objby-bd019.lmo.obj.metaby-bd020.FBXby-bd020.FBX.metaby-bd020.lmo.mtlby-bd020.lmo.mtl.metaby-bd020.lmo.objby-bd020.lmo.obj.metaby-bd022-donghua.fbxby-bd022-donghua.fbx.metaby-bd022.lmo.mtlby-bd022.lmo.mtl.metaby-bd022.lmo.objby-bd022.lmo.obj.metaby-bd022_2.FBXby-bd022_2.FBX.metaby-bd023.lmo.mtlby-bd023.lmo.mtl.metaby-bd023.lmo.objby-bd023.lmo.obj.metaby-bd023_2.FBXby-bd023_2.FBX.metaby-bd024.lmo.mtlby-bd024.lmo.mtl.metaby-bd024.lmo.objby-bd024.lmo.obj.metaby-bd024_2.FBXby-bd024_2.FBX.metaby-bd025.FBXby-bd025.FBX.metaby-bd025.lmo.mtlby-bd025.lmo.mtl.metaby-bd025.lmo.objby-bd025.lmo.obj.metaby-bd026-01.FBXby-bd026-01.FBX.metaby-bd026-01.lmo.mtlby-bd026-01.lmo.mtl.metaby-bd026-01.lmo.objby-bd026-01.lmo.obj.metaby-bd026.FBXby-bd026.FBX.metaby-bd026.lmo.mtlby-bd026.lmo.mtl.metaby-bd026.lmo.objby-bd026.lmo.obj.metaby-bd027-donghua.fbxby-bd027-donghua.fbx.metaby-bd027.FBXby-bd027.FBX.metaby-bd027.lmo.mtlby-bd027.lmo.mtl.metaby-bd027.lmo.objby-bd027.lmo.obj.metaby-bd028.lmo.mtlby-bd028.lmo.mtl.metaby-bd028.lmo.objby-bd028.lmo.obj.metaby-bd028_2.FBXby-bd028_2.FBX.metaby-bd029-donghua.fbxby-bd029-donghua.fbx.metaby-bd029.FBXby-bd029.FBX.metaby-bd029.lmo.mtlby-bd029.lmo.mtl.metaby-bd029.lmo.objby-bd029.lmo.obj.metaby-bd030-donghua.fbxby-bd030-donghua.fbx.metaby-bd030.FBXby-bd030.FBX.metaby-bd030.lmo.mtlby-bd030.lmo.mtl.metaby-bd030.lmo.objby-bd030.lmo.obj.metaby-bd031-donghua.fbxby-bd031-donghua.fbx.metaby-bd031.FBXby-bd031.FBX.metaby-bd031.lmo.mtlby-bd031.lmo.mtl.metaby-bd031.lmo.objby-bd031.lmo.obj.metaby-bd032-donghua.FBXby-bd032-donghua.FBX.metaby-bd032.FBXby-bd032.FBX.metaby-bd032.lmo.mtlby-bd032.lmo.mtl.metaby-bd032.lmo.objby-bd032.lmo.obj.metaby-bd033-donghua.fbxby-bd033-donghua.fbx.metaby-bd033.FBXby-bd033.FBX.metaby-bd033.lmo.mtlby-bd033.lmo.mtl.metaby-bd033.lmo.objby-bd033.lmo.obj.metaby-bd034-donghua.fbxby-bd034-donghua.fbx.metaby-bd034.FBXby-bd034.FBX.metaby-bd034.lmo.mtlby-bd034.lmo.mtl.metaby-bd034.lmo.objby-bd034.lmo.obj.metaby-bd035-donghua.fbxby-bd035-donghua.fbx.metaby-bd035.FBXby-bd035.FBX.metaby-bd035.lmo.mtlby-bd035.lmo.mtl.metaby-bd035.lmo.objby-bd035.lmo.obj.metaby-bd036.FBXby-bd036.FBX.metaby-bd036.lmo.mtlby-bd036.lmo.mtl.metaby-bd036.lmo.objby-bd036.lmo.obj.metaby-bd037.FBXby-bd037.FBX.metaby-bd037.lmo.mtlby-bd037.lmo.mtl.metaby-bd037.lmo.objby-bd037.lmo.obj.metaby-bd038.FBXby-bd038.FBX.metaby-bd038.lmo.mtlby-bd038.lmo.mtl.metaby-bd038.lmo.objby-bd038.lmo.obj.metaby-bd039-2.FBXby-bd039-2.FBX.metaby-bd039.lmo.mtlby-bd039.lmo.mtl.metaby-bd039.lmo.objby-bd039.lmo.obj.metaby-bd040-2.FBXby-bd040-2.FBX.metaby-bd040.lmo.mtlby-bd040.lmo.mtl.metaby-bd040.lmo.objby-bd040.lmo.obj.metaby-bd041.FBXby-bd041.FBX.metaby-bd041.lmo.mtlby-bd041.lmo.mtl.metaby-bd041.lmo.objby-bd041.lmo.obj.metaby-bd042.FBXby-bd042.FBX.metaby-bd042.lmo.mtlby-bd042.lmo.mtl.metaby-bd042.lmo.objby-bd042.lmo.obj.metaby-bd043-2.FBXby-bd043-2.FBX.metaby-bd043.lmo.mtlby-bd043.lmo.mtl.metaby-bd043.lmo.objby-bd043.lmo.obj.metaby-bd044.FBXby-bd044.FBX.metaby-bd044.lmo.mtlby-bd044.lmo.mtl.metaby-bd044.lmo.objby-bd044.lmo.obj.metaby-bd045-2.FBXby-bd045-2.FBX.metaby-bd045.lmo.mtlby-bd045.lmo.mtl.metaby-bd045.lmo.objby-bd045.lmo.obj.metaby-bd046-donghua.fbxby-bd046-donghua.fbx.metaby-bd046.FBXby-bd046.FBX.metaby-bd046.lmo.mtlby-bd046.lmo.mtl.metaby-bd046.lmo.objby-bd046.lmo.obj.metaby-bd047.FBXby-bd047.FBX.metaby-bd047.lmo.mtlby-bd047.lmo.mtl.metaby-bd047.lmo.objby-bd047.lmo.obj.metaby-bd048-donghua.fbxby-bd048-donghua.fbx.metaby-bd048.FBXby-bd048.FBX.metaby-bd048.lmo.mtlby-bd048.lmo.mtl.metaby-bd048.lmo.objby-bd048.lmo.obj.metaby-bd049-2.FBXby-bd049-2.FBX.metaby-bd049.lmo.mtlby-bd049.lmo.mtl.metaby-bd049.lmo.objby-bd049.lmo.obj.metaby-bd050.lmo.mtlby-bd050.lmo.mtl.metaby-bd050.lmo.objby-bd050.lmo.obj.metaby_bd003.FBXby_bd003.FBX.metaby_bd018.FBXby_bd018.FBX.metacc-bd001.FBXcc-bd001.FBX.metacc-bd001.lmo.mtlcc-bd001.lmo.mtl.metacc-bd001.lmo.objcc-bd001.lmo.obj.metacc-bd002.FBXcc-bd002.FBX.metacc-bd002.lmo.mtlcc-bd002.lmo.mtl.metacc-bd002.lmo.objcc-bd002.lmo.obj.metacc-bd003.FBXcc-bd003.FBX.metacc-bd003.lmo.mtlcc-bd003.lmo.mtl.metacc-bd003.lmo.objcc-bd003.lmo.obj.metacc-bd004.FBXcc-bd004.FBX.metacc-bd004.lmo.mtlcc-bd004.lmo.mtl.metacc-bd004.lmo.objcc-bd004.lmo.obj.metacc-bd005.FBXcc-bd005.FBX.metacc-bd005.lmo.mtlcc-bd005.lmo.mtl.metacc-bd005.lmo.objcc-bd005.lmo.obj.metacc-bd006.FBXcc-bd006.FBX.metacc-bd006.lmo.mtlcc-bd006.lmo.mtl.metacc-bd006.lmo.objcc-bd006.lmo.obj.metacc-bd007-donghua.fbxcc-bd007-donghua.fbx.metacc-bd007.FBXcc-bd007.FBX.metacc-bd007.lmo.mtlcc-bd007.lmo.mtl.metacc-bd007.lmo.objcc-bd007.lmo.obj.metacc-bd008.FBXcc-bd008.FBX.metacc-bd008.lmo.mtlcc-bd008.lmo.mtl.metacc-bd008.lmo.objcc-bd008.lmo.obj.metacc-bd009.FBXcc-bd009.FBX.metacc-bd009.lmo.mtlcc-bd009.lmo.mtl.metacc-bd009.lmo.objcc-bd009.lmo.obj.metacc-bd010.FBXcc-bd010.FBX.metacc-bd010.lmo.mtlcc-bd010.lmo.mtl.metacc-bd010.lmo.objcc-bd010.lmo.obj.metacc-bd011.FBXcc-bd011.FBX.metacc-bd011.lmo.mtlcc-bd011.lmo.mtl.metacc-bd011.lmo.objcc-bd011.lmo.obj.metacc-bd012.FBXcc-bd012.FBX.metacc-bd012.lmo.mtlcc-bd012.lmo.mtl.metacc-bd012.lmo.objcc-bd012.lmo.obj.metacc-bd013.FBXcc-bd013.FBX.metacc-bd013.lmo.mtlcc-bd013.lmo.mtl.metacc-bd013.lmo.objcc-bd013.lmo.obj.metacc-bd014.FBXcc-bd014.FBX.metacc-bd014.lmo.mtlcc-bd014.lmo.mtl.metacc-bd014.lmo.objcc-bd014.lmo.obj.metacc-bd015-donghua.fbxcc-bd015-donghua.fbx.metacc-bd015.FBXcc-bd015.FBX.metacc-bd015.lmo.mtlcc-bd015.lmo.mtl.metacc-bd015.lmo.objcc-bd015.lmo.obj.metacc-bd016.FBXcc-bd016.FBX.metacc-bd016.lmo.mtlcc-bd016.lmo.mtl.metacc-bd016.lmo.objcc-bd016.lmo.obj.metacc-bd017.FBXcc-bd017.FBX.metacc-bd017.lmo.mtlcc-bd017.lmo.mtl.metacc-bd017.lmo.objcc-bd017.lmo.obj.metacc-bd018-donghua.fbxcc-bd018-donghua.fbx.metacc-bd018.FBXcc-bd018.FBX.metacc-bd018.lmo.mtlcc-bd018.lmo.mtl.metacc-bd018.lmo.objcc-bd018.lmo.obj.metacc-bd019-donghua.fbxcc-bd019-donghua.fbx.metacc-bd019.FBXcc-bd019.FBX.metacc-bd019.lmo.mtlcc-bd019.lmo.mtl.metacc-bd019.lmo.objcc-bd019.lmo.obj.metacc-bd020.FBXcc-bd020.FBX.metacc-bd020.lmo.mtlcc-bd020.lmo.mtl.metacc-bd020.lmo.objcc-bd020.lmo.obj.metacc-bd021.FBXcc-bd021.FBX.metacc-bd021.lmo.mtlcc-bd021.lmo.mtl.metacc-bd021.lmo.objcc-bd021.lmo.obj.metacc-bd022.FBXcc-bd022.FBX.metacc-bd022.lmo.mtlcc-bd022.lmo.mtl.metacc-bd022.lmo.objcc-bd022.lmo.obj.metacc-bd023-donghua.fbxcc-bd023-donghua.fbx.metacc-bd023.FBXcc-bd023.FBX.metacc-bd023.lmo.mtlcc-bd023.lmo.mtl.metacc-bd023.lmo.objcc-bd023.lmo.obj.metacc-bd024.FBXcc-bd024.FBX.metacc-bd024.lmo.mtlcc-bd024.lmo.mtl.metacc-bd024.lmo.objcc-bd024.lmo.obj.metacc-bd025.FBXcc-bd025.FBX.metacc-bd025.lmo.mtlcc-bd025.lmo.mtl.metacc-bd025.lmo.objcc-bd025.lmo.obj.metacc-bd026.FBXcc-bd026.FBX.metacc-bd026.lmo.mtlcc-bd026.lmo.mtl.metacc-bd026.lmo.objcc-bd026.lmo.obj.metacc-bd027.FBXcc-bd027.FBX.metacc-bd027.lmo.mtlcc-bd027.lmo.mtl.metacc-bd027.lmo.objcc-bd027.lmo.obj.metacc-bd028.FBXcc-bd028.FBX.metacc-bd028.lmo.mtlcc-bd028.lmo.mtl.metacc-bd028.lmo.objcc-bd028.lmo.obj.metacc-bd029.FBXcc-bd029.FBX.metacc-bd029.lmo.mtlcc-bd029.lmo.mtl.metacc-bd029.lmo.objcc-bd029.lmo.obj.metacc-bd030.FBXcc-bd030.FBX.metacc-bd030.lmo.mtlcc-bd030.lmo.mtl.metacc-bd030.lmo.objcc-bd030.lmo.obj.metacc-bd031.FBXcc-bd031.FBX.metacc-bd031.lmo.mtlcc-bd031.lmo.mtl.metacc-bd031.lmo.objcc-bd031.lmo.obj.metacc-bd032-donghua.fbxcc-bd032-donghua.fbx.metacc-bd032.FBXcc-bd032.FBX.metacc-bd032.lmo.mtlcc-bd032.lmo.mtl.metacc-bd032.lmo.objcc-bd032.lmo.obj.metacc-bd033.FBXcc-bd033.FBX.metacc-bd033.lmo.mtlcc-bd033.lmo.mtl.metacc-bd033.lmo.objcc-bd033.lmo.obj.metacc-bd034.FBXcc-bd034.FBX.metacc-bd034.lmo.mtlcc-bd034.lmo.mtl.metacc-bd034.lmo.objcc-bd034.lmo.obj.metacc-bd035.FBXcc-bd035.FBX.metacc-bd035.lmo.mtlcc-bd035.lmo.mtl.metacc-bd035.lmo.objcc-bd035.lmo.obj.metacc-bd036-donghua.fbxcc-bd036-donghua.fbx.metacc-bd036.FBXcc-bd036.FBX.metacc-bd036.lmo.mtlcc-bd036.lmo.mtl.metacc-bd036.lmo.objcc-bd036.lmo.obj.metacc-bd037.FBXcc-bd037.FBX.metacc-bd037.lmo.mtlcc-bd037.lmo.mtl.metacc-bd037.lmo.objcc-bd037.lmo.obj.metacc-bd038.FBXcc-bd038.FBX.metacc-bd038.lmo.mtlcc-bd038.lmo.mtl.metacc-bd038.lmo.objcc-bd038.lmo.obj.metacc-bd039.FBXcc-bd039.FBX.metacc-bd039.lmo.mtlcc-bd039.lmo.mtl.metacc-bd039.lmo.objcc-bd039.lmo.obj.metacc-bd040-donghua.fbxcc-bd040-donghua.fbx.metacc-bd040.FBXcc-bd040.FBX.metacc-bd040.lmo.mtlcc-bd040.lmo.mtl.metacc-bd040.lmo.objcc-bd040.lmo.obj.metacc-bd041-donghua.fbxcc-bd041-donghua.fbx.metacc-bd041.FBXcc-bd041.FBX.metacc-bd041.lmo.mtlcc-bd041.lmo.mtl.metacc-bd041.lmo.objcc-bd041.lmo.obj.metacc-bd042-donghua.fbxcc-bd042-donghua.fbx.metacc-bd042.FBXcc-bd042.FBX.metacc-bd042.lmo.mtlcc-bd042.lmo.mtl.metacc-bd042.lmo.objcc-bd042.lmo.obj.metacc-bd043.FBXcc-bd043.FBX.metacc-bd043.lmo.mtlcc-bd043.lmo.mtl.metacc-bd043.lmo.objcc-bd043.lmo.obj.metacc-bd044.FBXcc-bd044.FBX.metacc-bd044.lmo.mtlcc-bd044.lmo.mtl.metacc-bd044.lmo.objcc-bd044.lmo.obj.metacc-bd045.FBXcc-bd045.FBX.metacc-bd045.lmo.mtlcc-bd045.lmo.mtl.metacc-bd045.lmo.objcc-bd045.lmo.obj.metacc-bd046.FBXcc-bd046.FBX.metacc-bd046.lmo.mtlcc-bd046.lmo.mtl.metacc-bd046.lmo.objcc-bd046.lmo.obj.metacc-bd047.FBXcc-bd047.FBX.metacc-bd047.lmo.mtlcc-bd047.lmo.mtl.metacc-bd047.lmo.objcc-bd047.lmo.obj.metacc-bd049.FBXcc-bd049.FBX.metacc-bd049.lmo.mtlcc-bd049.lmo.mtl.metacc-bd049.lmo.objcc-bd049.lmo.obj.metacc-bd050.FBXcc-bd050.FBX.metacc-bd050.lmo.mtlcc-bd050.lmo.mtl.metacc-bd050.lmo.objcc-bd050.lmo.obj.metacc-bd051.FBXcc-bd051.FBX.metacc-bd051.lmo.mtlcc-bd051.lmo.mtl.metacc-bd051.lmo.objcc-bd051.lmo.obj.metacc-bd052.FBXcc-bd052.FBX.metacc-bd052.lmo.mtlcc-bd052.lmo.mtl.metacc-bd052.lmo.objcc-bd052.lmo.obj.metacc-bd053.FBXcc-bd053.FBX.metacc-bd053.lmo.mtlcc-bd053.lmo.mtl.metacc-bd053.lmo.objcc-bd053.lmo.obj.metacc-bd054.FBXcc-bd054.FBX.metacc-bd054.lmo.mtlcc-bd054.lmo.mtl.metacc-bd054.lmo.objcc-bd054.lmo.obj.metacc-bd055.FBXcc-bd055.FBX.metacc-bd055.lmo.mtlcc-bd055.lmo.mtl.metacc-bd055.lmo.objcc-bd055.lmo.obj.metacc-bd056.FBXcc-bd056.FBX.metacc-bd056.lmo.mtlcc-bd056.lmo.mtl.metacc-bd056.lmo.objcc-bd056.lmo.obj.metacc-bd057.FBXcc-bd057.FBX.metacc-bd057.lmo.mtlcc-bd057.lmo.mtl.metacc-bd057.lmo.objcc-bd057.lmo.obj.metacc-bd058.FBXcc-bd058.FBX.metacc-bd058.lmo.mtlcc-bd058.lmo.mtl.metacc-bd058.lmo.objcc-bd058.lmo.obj.metacc-bd059.FBXcc-bd059.FBX.metacc-bd059.lmo.mtlcc-bd059.lmo.mtl.metacc-bd059.lmo.objcc-bd059.lmo.obj.metacc-bd060-donghua.fbxcc-bd060-donghua.fbx.metacc-bd060.FBXcc-bd060.FBX.metacc-bd060.lmo.mtlcc-bd060.lmo.mtl.metacc-bd060.lmo.objcc-bd060.lmo.obj.metacc-bd061-donghua.fbxcc-bd061-donghua.fbx.metacc-bd061.FBXcc-bd061.FBX.metacc-bd061.lmo.mtlcc-bd061.lmo.mtl.metacc-bd061.lmo.objcc-bd061.lmo.obj.metacc-bd062-donghua.fbxcc-bd062-donghua.fbx.metacc-bd062.FBXcc-bd062.FBX.metacc-bd062.lmo.mtlcc-bd062.lmo.mtl.metacc-bd062.lmo.objcc-bd062.lmo.obj.metacc-bd063-donghua.fbxcc-bd063-donghua.fbx.metacc-bd063.FBXcc-bd063.FBX.metacc-bd063.lmo.mtlcc-bd063.lmo.mtl.metacc-bd063.lmo.objcc-bd063.lmo.obj.metacc-bd064.FBXcc-bd064.FBX.metacc-bd064.lmo.mtlcc-bd064.lmo.mtl.metacc-bd064.lmo.objcc-bd064.lmo.obj.metacc-bd065.FBXcc-bd065.FBX.metacc-bd065.lmo.mtlcc-bd065.lmo.mtl.metacc-bd065.lmo.objcc-bd065.lmo.obj.metacc-bd066.FBXcc-bd066.FBX.metacc-bd066.lmo.mtlcc-bd066.lmo.mtl.metacc-bd066.lmo.objcc-bd066.lmo.obj.metacc-bd067.FBXcc-bd067.FBX.metacc-bd067.lmo.mtlcc-bd067.lmo.mtl.metacc-bd067.lmo.objcc-bd067.lmo.obj.metacc-bd068.FBXcc-bd068.FBX.metacc-bd068.lmo.mtlcc-bd068.lmo.mtl.metacc-bd068.lmo.objcc-bd068.lmo.obj.metacc-bd069.FBXcc-bd069.FBX.metacc-bd069.lmo.mtlcc-bd069.lmo.mtl.metacc-bd069.lmo.objcc-bd069.lmo.obj.metacc-bd071-donghua.fbxcc-bd071-donghua.fbx.metacc-bd071.FBXcc-bd071.FBX.metacc-bd071.lmo.mtlcc-bd071.lmo.mtl.metacc-bd071.lmo.objcc-bd071.lmo.obj.metacc-bd072.FBXcc-bd072.FBX.metacc-bd072.lmo.mtlcc-bd072.lmo.mtl.metacc-bd072.lmo.objcc-bd072.lmo.obj.metacc-bd073.FBXcc-bd073.FBX.metacc-bd073.lmo.mtlcc-bd073.lmo.mtl.metacc-bd073.lmo.objcc-bd073.lmo.obj.metacc-bd074.FBXcc-bd074.FBX.metacc-bd074.lmo.mtlcc-bd074.lmo.mtl.metacc-bd074.lmo.objcc-bd074.lmo.obj.metacc-bd075.FBXcc-bd075.FBX.metacc-bd075.lmo.mtlcc-bd075.lmo.mtl.metacc-bd075.lmo.objcc-bd075.lmo.obj.metacc-bd077.FBXcc-bd077.FBX.metacc-bd077.lmo.mtlcc-bd077.lmo.mtl.metacc-bd077.lmo.objcc-bd077.lmo.obj.metacc-bddxsdrk.FBXcc-bddxsdrk.FBX.metacc-bddxsdrk.lmo.mtlcc-bddxsdrk.lmo.mtl.metacc-bddxsdrk.lmo.objcc-bddxsdrk.lmo.obj.metacc-bdhq.FBXcc-bdhq.FBX.metacc-bdhq.lmo.mtlcc-bdhq.lmo.mtl.metacc-bdhq.lmo.objcc-bdhq.lmo.obj.metadd_bd001.lmo.mtldd_bd001.lmo.mtl.metadd_bd001.lmo.objdd_bd001.lmo.obj.metadd_bd002.lmo.mtldd_bd002.lmo.mtl.metadd_bd002.lmo.objdd_bd002.lmo.obj.metadd_bd003.lmo.mtldd_bd003.lmo.mtl.metadd_bd003.lmo.objdd_bd003.lmo.obj.metadd_bd004.lmo.mtldd_bd004.lmo.mtl.metadd_bd004.lmo.objdd_bd004.lmo.obj.metadd_bd006.lmo.mtldd_bd006.lmo.mtl.metadd_bd006.lmo.objdd_bd006.lmo.obj.metadd_bd007.lmo.mtldd_bd007.lmo.mtl.metadd_bd007.lmo.objdd_bd007.lmo.obj.metadd_bd008.lmo.mtldd_bd008.lmo.mtl.metadd_bd008.lmo.objdd_bd008.lmo.obj.metadd_bd009.lmo.mtldd_bd009.lmo.mtl.metadd_bd009.lmo.objdd_bd009.lmo.obj.metadd_bd010.lmo.mtldd_bd010.lmo.mtl.metadd_bd010.lmo.objdd_bd010.lmo.obj.metadd_bd011.lmo.mtldd_bd011.lmo.mtl.metadd_bd011.lmo.objdd_bd011.lmo.obj.metadd_bd012.lmo.mtldd_bd012.lmo.mtl.metadd_bd012.lmo.objdd_bd012.lmo.obj.metadd_bd013.lmo.mtldd_bd013.lmo.mtl.metadd_bd013.lmo.objdd_bd013.lmo.obj.metadd_bd014.lmo.mtldd_bd014.lmo.mtl.metadd_bd014.lmo.objdd_bd014.lmo.obj.metadd_bd015.lmo.mtldd_bd015.lmo.mtl.metadd_bd015.lmo.objdd_bd015.lmo.obj.metadonghua.fbxdonghua.fbx.metahdjd-cbd01.lmo.mtlhdjd-cbd01.lmo.mtl.metahdjd-cbd01.lmo.objhdjd-cbd01.lmo.obj.metahdmgrk01.lmo.mtlhdmgrk01.lmo.mtl.metahdmgrk01.lmo.objhdmgrk01.lmo.obj.metahdsd01.lmo.mtlhdsd01.lmo.mtl.metahdsd01.lmo.objhdsd01.lmo.obj.metahdwblg001.lmo.mtlhdwblg001.lmo.mtl.metahdwblg001.lmo.objhdwblg001.lmo.obj.metahdwjsj001.lmo.mtlhdwjsj001.lmo.mtl.metahdwjsj001.lmo.objhdwjsj001.lmo.obj.metahl_bd001.lmo.mtlhl_bd001.lmo.mtl.metahl_bd001.lmo.objhl_bd001.lmo.obj.metahl_bd002.lmo.mtlhl_bd002.lmo.mtl.metahl_bd002.lmo.objhl_bd002.lmo.obj.metahl_bd003.lmo.mtlhl_bd003.lmo.mtl.metahl_bd003.lmo.objhl_bd003.lmo.obj.metahl_bd004.lmo.mtlhl_bd004.lmo.mtl.metahl_bd004.lmo.objhl_bd004.lmo.obj.metahl_bd005.lmo.mtlhl_bd005.lmo.mtl.metahl_bd005.lmo.objhl_bd005.lmo.obj.metahl_bd006.lmo.mtlhl_bd006.lmo.mtl.metahl_bd006.lmo.objhl_bd006.lmo.obj.metahl_bd007.lmo.mtlhl_bd007.lmo.mtl.metahl_bd007.lmo.objhl_bd007.lmo.obj.metahl_bd008.lmo.mtlhl_bd008.lmo.mtl.metahl_bd008.lmo.objhl_bd008.lmo.obj.metahl_bd009.lmo.mtlhl_bd009.lmo.mtl.metahl_bd009.lmo.objhl_bd009.lmo.obj.metahl_bd010.lmo.mtlhl_bd010.lmo.mtl.metahl_bd010.lmo.objhl_bd010.lmo.obj.metahl_bd011.lmo.mtlhl_bd011.lmo.mtl.metahl_bd011.lmo.objhl_bd011.lmo.obj.metahlcx-bx.lmo.mtlhlcx-bx.lmo.mtl.metahlcx-bx.lmo.objhlcx-bx.lmo.obj.metahlcx-ck.lmo.mtlhlcx-ck.lmo.mtl.metahlcx-ck.lmo.objhlcx-ck.lmo.obj.metahlcx-gh.lmo.mtlhlcx-gh.lmo.mtl.metahlcx-gh.lmo.objhlcx-gh.lmo.obj.metahlcx-rk.FBXhlcx-rk.FBX.metahlcx-rk.lmo.mtlhlcx-rk.lmo.mtl.metahlcx-rk.lmo.objhlcx-rk.lmo.obj.metahlcx02.lmo.mtlhlcx02.lmo.mtl.metahlcx02.lmo.objhlcx02.lmo.obj.metahlcx03.lmo.mtlhlcx03.lmo.mtl.metahlcx03.lmo.objhlcx03.lmo.obj.metahlcx04.lmo.mtlhlcx04.lmo.mtl.metahlcx04.lmo.objhlcx04.lmo.obj.metahlcx05.lmo.mtlhlcx05.lmo.mtl.metahlcx05.lmo.objhlcx05.lmo.obj.metahlcx06.lmo.mtlhlcx06.lmo.mtl.metahlcx06.lmo.objhlcx06.lmo.obj.metahlcx07.lmo.mtlhlcx07.lmo.mtl.metahlcx07.lmo.objhlcx07.lmo.obj.metahlcx08.lmo.mtlhlcx08.lmo.mtl.metahlcx08.lmo.objhlcx08.lmo.obj.metahlcx09.lmo.mtlhlcx09.lmo.mtl.metahlcx09.lmo.objhlcx09.lmo.obj.metajtsn.lmo.mtljtsn.lmo.mtl.metajtsn.lmo.objjtsn.lmo.obj.metakao-bd001.lmo.mtlkao-bd001.lmo.mtl.metakao-bd001.lmo.objkao-bd001.lmo.obj.metakyjj-bd01-01.lmo.mtlkyjj-bd01-01.lmo.mtl.metakyjj-bd01-01.lmo.objkyjj-bd01-01.lmo.obj.metakyjj-bd01-21.lmo.mtlkyjj-bd01-21.lmo.mtl.metakyjj-bd01-21.lmo.objkyjj-bd01-21.lmo.obj.metakyjj-bd01-22.lmo.mtlkyjj-bd01-22.lmo.mtl.metakyjj-bd01-22.lmo.objkyjj-bd01-22.lmo.obj.metakyjj-bd01-23.lmo.mtlkyjj-bd01-23.lmo.mtl.metakyjj-bd01-23.lmo.objkyjj-bd01-23.lmo.obj.metakyjj-bd01-31.lmo.mtlkyjj-bd01-31.lmo.mtl.metakyjj-bd01-31.lmo.objkyjj-bd01-31.lmo.obj.metakyjj-bd01-32.lmo.mtlkyjj-bd01-32.lmo.mtl.metakyjj-bd01-32.lmo.objkyjj-bd01-32.lmo.obj.metakyjj-bd01-33.lmo.mtlkyjj-bd01-33.lmo.mtl.metakyjj-bd01-33.lmo.objkyjj-bd01-33.lmo.obj.metakyjj-bd01-34.lmo.mtlkyjj-bd01-34.lmo.mtl.metakyjj-bd01-34.lmo.objkyjj-bd01-34.lmo.obj.metakyjj-bd01-41.lmo.mtlkyjj-bd01-41.lmo.mtl.metakyjj-bd01-41.lmo.objkyjj-bd01-41.lmo.obj.metakyjj-bd01-42.lmo.mtlkyjj-bd01-42.lmo.mtl.metakyjj-bd01-42.lmo.objkyjj-bd01-42.lmo.obj.metakyjj-bd01-43.lmo.mtlkyjj-bd01-43.lmo.mtl.metakyjj-bd01-43.lmo.objkyjj-bd01-43.lmo.obj.metakyjj-bd02-01.lmo.mtlkyjj-bd02-01.lmo.mtl.metakyjj-bd02-01.lmo.objkyjj-bd02-01.lmo.obj.metakyjj-bd02-02.lmo.mtlkyjj-bd02-02.lmo.mtl.metakyjj-bd02-02.lmo.objkyjj-bd02-02.lmo.obj.metakyjj-bd02-21.lmo.mtlkyjj-bd02-21.lmo.mtl.metakyjj-bd02-21.lmo.objkyjj-bd02-21.lmo.obj.metakyjj-bd02-22.lmo.mtlkyjj-bd02-22.lmo.mtl.metakyjj-bd02-22.lmo.objkyjj-bd02-22.lmo.obj.metakyjj-bd02-23.lmo.mtlkyjj-bd02-23.lmo.mtl.metakyjj-bd02-23.lmo.objkyjj-bd02-23.lmo.obj.metakyjj-bd02-24.lmo.mtlkyjj-bd02-24.lmo.mtl.metakyjj-bd02-24.lmo.objkyjj-bd02-24.lmo.obj.metakyjj-bd02-31.lmo.mtlkyjj-bd02-31.lmo.mtl.metakyjj-bd02-31.lmo.objkyjj-bd02-31.lmo.obj.metakyjj-bd02-32.lmo.mtlkyjj-bd02-32.lmo.mtl.metakyjj-bd02-32.lmo.objkyjj-bd02-32.lmo.obj.metakyjj-bd02-33.lmo.mtlkyjj-bd02-33.lmo.mtl.metakyjj-bd02-33.lmo.objkyjj-bd02-33.lmo.obj.metakyjj-bd02-34.lmo.mtlkyjj-bd02-34.lmo.mtl.metakyjj-bd02-34.lmo.objkyjj-bd02-34.lmo.obj.metakyjj-bd02-41.lmo.mtlkyjj-bd02-41.lmo.mtl.metakyjj-bd02-41.lmo.objkyjj-bd02-41.lmo.obj.metakyjj-bd02-42.lmo.mtlkyjj-bd02-42.lmo.mtl.metakyjj-bd02-42.lmo.objkyjj-bd02-42.lmo.obj.metakyjj-bd02-43.lmo.mtlkyjj-bd02-43.lmo.mtl.metakyjj-bd02-43.lmo.objkyjj-bd02-43.lmo.obj.metakyjj-bd02-51.lmo.mtlkyjj-bd02-51.lmo.mtl.metakyjj-bd02-51.lmo.objkyjj-bd02-51.lmo.obj.metakyjj-bd02-52.lmo.mtlkyjj-bd02-52.lmo.mtl.metakyjj-bd02-52.lmo.objkyjj-bd02-52.lmo.obj.metakyjj-bd02-53.lmo.mtlkyjj-bd02-53.lmo.mtl.metakyjj-bd02-53.lmo.objkyjj-bd02-53.lmo.obj.metakyjj-bd03-01.lmo.mtlkyjj-bd03-01.lmo.mtl.metakyjj-bd03-01.lmo.objkyjj-bd03-01.lmo.obj.metakyjj-bd03-21.lmo.mtlkyjj-bd03-21.lmo.mtl.metakyjj-bd03-21.lmo.objkyjj-bd03-21.lmo.obj.metakyjj-bd03-22.lmo.mtlkyjj-bd03-22.lmo.mtl.metakyjj-bd03-22.lmo.objkyjj-bd03-22.lmo.obj.metakyjj-bd03-31.lmo.mtlkyjj-bd03-31.lmo.mtl.metakyjj-bd03-31.lmo.objkyjj-bd03-31.lmo.obj.metakyjj-bd03-32.lmo.mtlkyjj-bd03-32.lmo.mtl.metakyjj-bd03-32.lmo.objkyjj-bd03-32.lmo.obj.metakyjj-bd04-01.lmo.mtlkyjj-bd04-01.lmo.mtl.metakyjj-bd04-01.lmo.objkyjj-bd04-01.lmo.obj.metakyjj-bd04-21.lmo.mtlkyjj-bd04-21.lmo.mtl.metakyjj-bd04-21.lmo.objkyjj-bd04-21.lmo.obj.metakyjj-bd04-31.lmo.mtlkyjj-bd04-31.lmo.mtl.metakyjj-bd04-31.lmo.objkyjj-bd04-31.lmo.obj.metakyjj-bd04-41.lmo.mtlkyjj-bd04-41.lmo.mtl.metakyjj-bd04-41.lmo.objkyjj-bd04-41.lmo.obj.metakyjj-bd05-01.lmo.mtlkyjj-bd05-01.lmo.mtl.metakyjj-bd05-01.lmo.objkyjj-bd05-01.lmo.obj.metakyjj-bd05-21.lmo.mtlkyjj-bd05-21.lmo.mtl.metakyjj-bd05-21.lmo.objkyjj-bd05-21.lmo.obj.metakyjj-bd05-22.lmo.mtlkyjj-bd05-22.lmo.mtl.metakyjj-bd05-22.lmo.objkyjj-bd05-22.lmo.obj.metakyjj-bd05-23.lmo.mtlkyjj-bd05-23.lmo.mtl.metakyjj-bd05-23.lmo.objkyjj-bd05-23.lmo.obj.metakyjj-bd05-31.lmo.mtlkyjj-bd05-31.lmo.mtl.metakyjj-bd05-31.lmo.objkyjj-bd05-31.lmo.obj.metakyjj-bd05-32.lmo.mtlkyjj-bd05-32.lmo.mtl.metakyjj-bd05-32.lmo.objkyjj-bd05-32.lmo.obj.metakyjj-bd05-33.lmo.mtlkyjj-bd05-33.lmo.mtl.metakyjj-bd05-33.lmo.objkyjj-bd05-33.lmo.obj.metakyjj-bd05-34.lmo.mtlkyjj-bd05-34.lmo.mtl.metakyjj-bd05-34.lmo.objkyjj-bd05-34.lmo.obj.metakyjj-bd06-01.lmo.mtlkyjj-bd06-01.lmo.mtl.metakyjj-bd06-01.lmo.objkyjj-bd06-01.lmo.obj.metakyjj-bd06-21.lmo.mtlkyjj-bd06-21.lmo.mtl.metakyjj-bd06-21.lmo.objkyjj-bd06-21.lmo.obj.metakyjj-bd06-22.lmo.mtlkyjj-bd06-22.lmo.mtl.metakyjj-bd06-22.lmo.objkyjj-bd06-22.lmo.obj.metakyjj-bd06-23.lmo.mtlkyjj-bd06-23.lmo.mtl.metakyjj-bd06-23.lmo.objkyjj-bd06-23.lmo.obj.metakyjj-bd06-24.lmo.mtlkyjj-bd06-24.lmo.mtl.metakyjj-bd06-24.lmo.objkyjj-bd06-24.lmo.obj.metakyjj-bd06-25.lmo.mtlkyjj-bd06-25.lmo.mtl.metakyjj-bd06-25.lmo.objkyjj-bd06-25.lmo.obj.metakyjj-bd06-26.lmo.mtlkyjj-bd06-26.lmo.mtl.metakyjj-bd06-26.lmo.objkyjj-bd06-26.lmo.obj.metakyjj-bd06-27.lmo.mtlkyjj-bd06-27.lmo.mtl.metakyjj-bd06-27.lmo.objkyjj-bd06-27.lmo.obj.metakyjj-bd06-28.lmo.mtlkyjj-bd06-28.lmo.mtl.metakyjj-bd06-28.lmo.objkyjj-bd06-28.lmo.obj.metakyjj-bd06-29.lmo.mtlkyjj-bd06-29.lmo.mtl.metakyjj-bd06-29.lmo.objkyjj-bd06-29.lmo.obj.metakyjj-bd07-01.lmo.mtlkyjj-bd07-01.lmo.mtl.metakyjj-bd07-01.lmo.objkyjj-bd07-01.lmo.obj.metakyjj-bd07-02.lmo.mtlkyjj-bd07-02.lmo.mtl.metakyjj-bd07-02.lmo.objkyjj-bd07-02.lmo.obj.metakyjj-bd07-03.lmo.mtlkyjj-bd07-03.lmo.mtl.metakyjj-bd07-03.lmo.objkyjj-bd07-03.lmo.obj.metakyjj-bd07-04.lmo.mtlkyjj-bd07-04.lmo.mtl.metakyjj-bd07-04.lmo.objkyjj-bd07-04.lmo.obj.metakyjj-bd07-05.lmo.mtlkyjj-bd07-05.lmo.mtl.metakyjj-bd07-05.lmo.objkyjj-bd07-05.lmo.obj.metakyjj-bd07-06.lmo.mtlkyjj-bd07-06.lmo.mtl.metakyjj-bd07-06.lmo.objkyjj-bd07-06.lmo.obj.metakyjj-bd07-07.lmo.mtlkyjj-bd07-07.lmo.mtl.metakyjj-bd07-07.lmo.objkyjj-bd07-07.lmo.obj.metalogin.lmo.mtllogin.lmo.mtl.metalogin.lmo.objlogin.lmo.obj.metalogin02.lmo.mtllogin02.lmo.mtl.metalogin02.lmo.objlogin02.lmo.obj.metalong001.lmo.mtllong001.lmo.mtl.metalong001.lmo.objlong001.lmo.obj.metals_bd001.FBXls_bd001.FBX.metals_bd002.FBXls_bd002.FBX.metals_bd003.FBXls_bd003.FBX.metals_bd004.FBXls_bd004.FBX.metals_bd005.FBXls_bd005.FBX.metals_bd006.FBXls_bd006.FBX.metals_bd007.FBXls_bd007.FBX.metals_bd008.FBXls_bd008.FBX.metals_bd009.FBXls_bd009.FBX.metals_bd010.FBXls_bd010.FBX.metalt-bd001-01.FBXlt-bd001-01.FBX.metalt-bd001-01.lmo.mtllt-bd001-01.lmo.mtl.metalt-bd001-01.lmo.objlt-bd001-01.lmo.obj.metalt-bd001-02.FBXlt-bd001-02.FBX.metalt-bd001-02.lmo.mtllt-bd001-02.lmo.mtl.metalt-bd001-02.lmo.objlt-bd001-02.lmo.obj.metalt-bd002.lmo.mtllt-bd002.lmo.mtl.metalt-bd002.lmo.objlt-bd002.lmo.obj.metalt-bd002_2.FBXlt-bd002_2.FBX.metalt-bd005.lmo.mtllt-bd005.lmo.mtl.metalt-bd005.lmo.objlt-bd005.lmo.obj.metalt-bd005_2.FBXlt-bd005_2.FBX.metalt-bd007.FBXlt-bd007.FBX.metalt-bd007.lmo.mtllt-bd007.lmo.mtl.metalt-bd007.lmo.objlt-bd007.lmo.obj.metalt-bd009.FBXlt-bd009.FBX.metalt-bd009.lmo.mtllt-bd009.lmo.mtl.metalt-bd009.lmo.objlt-bd009.lmo.obj.metalt-bd011.lmo.mtllt-bd011.lmo.mtl.metalt-bd011.lmo.objlt-bd011.lmo.obj.metalt-bd011_2.FBXlt-bd011_2.FBX.metalt-bd012.FBXlt-bd012.FBX.metalt-bd012.lmo.mtllt-bd012.lmo.mtl.metalt-bd012.lmo.objlt-bd012.lmo.obj.metalt-bd013-01.FBXlt-bd013-01.FBX.metalt-bd013-01.lmo.mtllt-bd013-01.lmo.mtl.metalt-bd013-01.lmo.objlt-bd013-01.lmo.obj.metalt-bd013-02.FBXlt-bd013-02.FBX.metalt-bd013-02.lmo.mtllt-bd013-02.lmo.mtl.metalt-bd013-02.lmo.objlt-bd013-02.lmo.obj.metalt-bd013-03.FBXlt-bd013-03.FBX.metalt-bd013-03.lmo.mtllt-bd013-03.lmo.mtl.metalt-bd013-03.lmo.objlt-bd013-03.lmo.obj.metalt-bd013-04.FBXlt-bd013-04.FBX.metalt-bd013-04.lmo.mtllt-bd013-04.lmo.mtl.metalt-bd013-04.lmo.objlt-bd013-04.lmo.obj.metalt-bd014.FBXlt-bd014.FBX.metalt-bd014.lmo.mtllt-bd014.lmo.mtl.metalt-bd014.lmo.objlt-bd014.lmo.obj.metalt-bd015.FBXlt-bd015.FBX.metalt-bd015.lmo.mtllt-bd015.lmo.mtl.metalt-bd015.lmo.objlt-bd015.lmo.obj.metalt-bd016.FBXlt-bd016.FBX.metalt-bd016.lmo.mtllt-bd016.lmo.mtl.metalt-bd016.lmo.objlt-bd016.lmo.obj.metalt-bd017.FBXlt-bd017.FBX.metalt-bd017.lmo.mtllt-bd017.lmo.mtl.metalt-bd017.lmo.objlt-bd017.lmo.obj.metalt-bd018-01.FBXlt-bd018-01.FBX.metalt-bd018-01.lmo.mtllt-bd018-01.lmo.mtl.metalt-bd018-01.lmo.objlt-bd018-01.lmo.obj.metalt-bd018-02.FBXlt-bd018-02.FBX.metalt-bd018-02.lmo.mtllt-bd018-02.lmo.mtl.metalt-bd018-02.lmo.objlt-bd018-02.lmo.obj.metalt-bd018-03.lmo.mtllt-bd018-03.lmo.mtl.metalt-bd018-03.lmo.objlt-bd018-03.lmo.obj.metalt-bd018-03_2.FBXlt-bd018-03_2.FBX.metalt-bd018-04.lmo.mtllt-bd018-04.lmo.mtl.metalt-bd018-04.lmo.objlt-bd018-04.lmo.obj.metalt-bd018-04_2.FBXlt-bd018-04_2.FBX.metalt-bd018-05.FBXlt-bd018-05.FBX.metalt-bd018-05.lmo.mtllt-bd018-05.lmo.mtl.metalt-bd018-05.lmo.objlt-bd018-05.lmo.obj.metalt-bd018-06.lmo.mtllt-bd018-06.lmo.mtl.metalt-bd018-06.lmo.objlt-bd018-06.lmo.obj.metalt-bd018-06_2.FBXlt-bd018-06_2.FBX.metalt-bd018-07.fbxlt-bd018-07.fbx.metalt-bd018-07.lmo.mtllt-bd018-07.lmo.mtl.metalt-bd018-07.lmo.objlt-bd018-07.lmo.obj.metalt-bd018-08.fbxlt-bd018-08.fbx.metalt-bd018-08.lmo.mtllt-bd018-08.lmo.mtl.metalt-bd018-08.lmo.objlt-bd018-08.lmo.obj.metalt-bd018-09.fbxlt-bd018-09.fbx.metalt-bd018-09.lmo.mtllt-bd018-09.lmo.mtl.metalt-bd018-09.lmo.objlt-bd018-09.lmo.obj.metalt-bd018-10.fbxlt-bd018-10.fbx.metalt-bd018-10.lmo.mtllt-bd018-10.lmo.mtl.metalt-bd018-10.lmo.objlt-bd018-10.lmo.obj.metalt-bd018-11.FBXlt-bd018-11.FBX.metalt-bd018-11.lmo.mtllt-bd018-11.lmo.mtl.metalt-bd018-11.lmo.objlt-bd018-11.lmo.obj.metalt-bd019.FBXlt-bd019.FBX.metalt-bd019.lmo.mtllt-bd019.lmo.mtl.metalt-bd019.lmo.objlt-bd019.lmo.obj.metalt-bd020.FBXlt-bd020.FBX.metalt-bd020.lmo.mtllt-bd020.lmo.mtl.metalt-bd020.lmo.objlt-bd020.lmo.obj.metalt-bd021.FBXlt-bd021.FBX.metalt-bd021.lmo.mtllt-bd021.lmo.mtl.metalt-bd021.lmo.objlt-bd021.lmo.obj.metalt-bd022.fbxlt-bd022.fbx.metalt-bd022.lmo.mtllt-bd022.lmo.mtl.metalt-bd022.lmo.objlt-bd022.lmo.obj.metalt-bd024.FBXlt-bd024.FBX.metalt-bd024.lmo.mtllt-bd024.lmo.mtl.metalt-bd024.lmo.objlt-bd024.lmo.obj.metalt-bd025-01.FBXlt-bd025-01.FBX.metalt-bd025-01.lmo.mtllt-bd025-01.lmo.mtl.metalt-bd025-01.lmo.objlt-bd025-01.lmo.obj.metalt-bd025-02.FBXlt-bd025-02.FBX.metalt-bd025-02.lmo.mtllt-bd025-02.lmo.mtl.metalt-bd025-02.lmo.objlt-bd025-02.lmo.obj.metalt-bd025-03.FBXlt-bd025-03.FBX.metalt-bd025-03.lmo.mtllt-bd025-03.lmo.mtl.metalt-bd025-03.lmo.objlt-bd025-03.lmo.obj.metalt-bd025-04.fbxlt-bd025-04.fbx.metalt-bd025-04.lmo.mtllt-bd025-04.lmo.mtl.metalt-bd025-04.lmo.objlt-bd025-04.lmo.obj.metalt-bd025-05.FBXlt-bd025-05.FBX.metalt-bd025-05.lmo.mtllt-bd025-05.lmo.mtl.metalt-bd025-05.lmo.objlt-bd025-05.lmo.obj.metalt-bd025-06.FBXlt-bd025-06.FBX.metalt-bd025-06.lmo.mtllt-bd025-06.lmo.mtl.metalt-bd025-06.lmo.objlt-bd025-06.lmo.obj.metalt-bd025-07.FBXlt-bd025-07.FBX.metalt-bd025-07.lmo.mtllt-bd025-07.lmo.mtl.metalt-bd025-07.lmo.objlt-bd025-07.lmo.obj.metalt-bd025-08.FBXlt-bd025-08.FBX.metalt-bd025-08.lmo.mtllt-bd025-08.lmo.mtl.metalt-bd025-08.lmo.objlt-bd025-08.lmo.obj.metalt-bd025-09.FBXlt-bd025-09.FBX.metalt-bd025-09.lmo.mtllt-bd025-09.lmo.mtl.metalt-bd025-09.lmo.objlt-bd025-09.lmo.obj.metalt-bd026.fbxlt-bd026.fbx.metalt-bd026.lmo.mtllt-bd026.lmo.mtl.metalt-bd026.lmo.objlt-bd026.lmo.obj.metalt-bd027.FBXlt-bd027.FBX.metalt-bd027.lmo.mtllt-bd027.lmo.mtl.metalt-bd027.lmo.objlt-bd027.lmo.obj.metalt-bd028.FBXlt-bd028.FBX.metalt-bd028.lmo.mtllt-bd028.lmo.mtl.metalt-bd028.lmo.objlt-bd028.lmo.obj.metalt-bd029.FBXlt-bd029.FBX.metalt-bd029.lmo.mtllt-bd029.lmo.mtl.metalt-bd029.lmo.objlt-bd029.lmo.obj.metalt-bd030.FBXlt-bd030.FBX.metalt-bd030.lmo.mtllt-bd030.lmo.mtl.metalt-bd030.lmo.objlt-bd030.lmo.obj.metalt-bd031.FBXlt-bd031.FBX.metalt-bd031.lmo.mtllt-bd031.lmo.mtl.metalt-bd031.lmo.objlt-bd031.lmo.obj.metalt-bd032.FBXlt-bd032.FBX.metalt-bd032.lmo.mtllt-bd032.lmo.mtl.metalt-bd032.lmo.objlt-bd032.lmo.obj.metalt-bd033.fbxlt-bd033.fbx.metalt-bd033.lmo.mtllt-bd033.lmo.mtl.metalt-bd033.lmo.objlt-bd033.lmo.obj.metalt-bd034.fbxlt-bd034.fbx.metalt-bd034.lmo.mtllt-bd034.lmo.mtl.metalt-bd034.lmo.objlt-bd034.lmo.obj.metalt-bd035.fbxlt-bd035.fbx.metalt-bd035.lmo.mtllt-bd035.lmo.mtl.metalt-bd035.lmo.objlt-bd035.lmo.obj.metalt-bd036-01.fbxlt-bd036-01.fbx.metalt-bd036-01.lmo.mtllt-bd036-01.lmo.mtl.metalt-bd036-01.lmo.objlt-bd036-01.lmo.obj.metalt-bd036-02.fbxlt-bd036-02.fbx.metalt-bd036-02.lmo.mtllt-bd036-02.lmo.mtl.metalt-bd036-02.lmo.objlt-bd036-02.lmo.obj.metalt-bd036-03.fbxlt-bd036-03.fbx.metalt-bd036-03.lmo.mtllt-bd036-03.lmo.mtl.metalt-bd036-03.lmo.objlt-bd036-03.lmo.obj.metalt-bd037.FBXlt-bd037.FBX.metalt-bd037.lmo.mtllt-bd037.lmo.mtl.metalt-bd037.lmo.objlt-bd037.lmo.obj.metalt-bd038.FBXlt-bd038.FBX.metalt-bd038.lmo.mtllt-bd038.lmo.mtl.metalt-bd038.lmo.objlt-bd038.lmo.obj.metalt-bd039.FBXlt-bd039.FBX.metalt-bd039.lmo.mtllt-bd039.lmo.mtl.metalt-bd039.lmo.objlt-bd039.lmo.obj.metaml-bd045.lmo.mtlml-bd045.lmo.mtl.metaml-bd045.lmo.objml-bd045.lmo.obj.metamz-bd001.FBXmz-bd001.FBX.metamz-bd001.lmo.mtlmz-bd001.lmo.mtl.metamz-bd001.lmo.objmz-bd001.lmo.obj.metamz-bd002.FBXmz-bd002.FBX.metamz-bd002.lmo.mtlmz-bd002.lmo.mtl.metamz-bd002.lmo.objmz-bd002.lmo.obj.metamz-bd003.FBXmz-bd003.FBX.metamz-bd003.lmo.mtlmz-bd003.lmo.mtl.metamz-bd003.lmo.objmz-bd003.lmo.obj.metamz-bd004.FBXmz-bd004.FBX.metamz-bd004.lmo.mtlmz-bd004.lmo.mtl.metamz-bd004.lmo.objmz-bd004.lmo.obj.metamz-bd005.FBXmz-bd005.FBX.metamz-bd005.lmo.mtlmz-bd005.lmo.mtl.metamz-bd005.lmo.objmz-bd005.lmo.obj.metamz-bd006.FBXmz-bd006.FBX.metamz-bd006.lmo.mtlmz-bd006.lmo.mtl.metamz-bd006.lmo.objmz-bd006.lmo.obj.metamz-bd007.FBXmz-bd007.FBX.metamz-bd007.lmo.mtlmz-bd007.lmo.mtl.metamz-bd007.lmo.objmz-bd007.lmo.obj.metamz-bd008.FBXmz-bd008.FBX.metamz-bd008.lmo.mtlmz-bd008.lmo.mtl.metamz-bd008.lmo.objmz-bd008.lmo.obj.metamz-bd009.FBXmz-bd009.FBX.metamz-bd009.lmo.mtlmz-bd009.lmo.mtl.metamz-bd009.lmo.objmz-bd009.lmo.obj.metamz-bd010.FBXmz-bd010.FBX.metamz-bd010.lmo.mtlmz-bd010.lmo.mtl.metamz-bd010.lmo.objmz-bd010.lmo.obj.metamz-bd011-01.FBXmz-bd011-01.FBX.metamz-bd011-01.lmo.mtlmz-bd011-01.lmo.mtl.metamz-bd011-01.lmo.objmz-bd011-01.lmo.obj.metamz-bd011-02.FBXmz-bd011-02.FBX.metamz-bd011-02.lmo.mtlmz-bd011-02.lmo.mtl.metamz-bd011-02.lmo.objmz-bd011-02.lmo.obj.metamz-bd011-03.FBXmz-bd011-03.FBX.metamz-bd011-03.lmo.mtlmz-bd011-03.lmo.mtl.metamz-bd011-03.lmo.objmz-bd011-03.lmo.obj.metamz-bd011-04.FBXmz-bd011-04.FBX.metamz-bd011-04.lmo.mtlmz-bd011-04.lmo.mtl.metamz-bd011-04.lmo.objmz-bd011-04.lmo.obj.metamz-bd011-05.FBXmz-bd011-05.FBX.metamz-bd011-05.lmo.mtlmz-bd011-05.lmo.mtl.metamz-bd011-05.lmo.objmz-bd011-05.lmo.obj.metamz-bd011-06.FBXmz-bd011-06.FBX.metamz-bd011-06.lmo.mtlmz-bd011-06.lmo.mtl.metamz-bd011-06.lmo.objmz-bd011-06.lmo.obj.metamz-bd011.FBXmz-bd011.FBX.metamz-bd011.lmo.mtlmz-bd011.lmo.mtl.metamz-bd011.lmo.objmz-bd011.lmo.obj.metamz-bd013.FBXmz-bd013.FBX.metamz-bd013.lmo.mtlmz-bd013.lmo.mtl.metamz-bd013.lmo.objmz-bd013.lmo.obj.metamz-bd014.FBXmz-bd014.FBX.metamz-bd014.lmo.mtlmz-bd014.lmo.mtl.metamz-bd014.lmo.objmz-bd014.lmo.obj.metamz-bd015.FBXmz-bd015.FBX.metamz-bd015.lmo.mtlmz-bd015.lmo.mtl.metamz-bd015.lmo.objmz-bd015.lmo.obj.metamz-bd016.FBXmz-bd016.FBX.metamz-bd016.lmo.mtlmz-bd016.lmo.mtl.metamz-bd016.lmo.objmz-bd016.lmo.obj.metamz-bd017.FBXmz-bd017.FBX.metamz-bd017.lmo.mtlmz-bd017.lmo.mtl.metamz-bd017.lmo.objmz-bd017.lmo.obj.metamz-bd018.FBXmz-bd018.FBX.metamz-bd018.lmo.mtlmz-bd018.lmo.mtl.metamz-bd018.lmo.objmz-bd018.lmo.obj.metamz-bd019.FBXmz-bd019.FBX.metamz-bd019.lmo.mtlmz-bd019.lmo.mtl.metamz-bd019.lmo.objmz-bd019.lmo.obj.metamz-bd020.FBXmz-bd020.FBX.metamz-bd020.lmo.mtlmz-bd020.lmo.mtl.metamz-bd020.lmo.objmz-bd020.lmo.obj.metamz-bd021.FBXmz-bd021.FBX.metamz-bd021.lmo.mtlmz-bd021.lmo.mtl.metamz-bd021.lmo.objmz-bd021.lmo.obj.metamz-bd022.FBXmz-bd022.FBX.metamz-bd022.lmo.mtlmz-bd022.lmo.mtl.metamz-bd022.lmo.objmz-bd022.lmo.obj.metamz-bd023.FBXmz-bd023.FBX.metamz-bd023.lmo.mtlmz-bd023.lmo.mtl.metamz-bd023.lmo.objmz-bd023.lmo.obj.metamz-bd024.FBXmz-bd024.FBX.metamz-bd024.lmo.mtlmz-bd024.lmo.mtl.metamz-bd024.lmo.objmz-bd024.lmo.obj.metamz-bd025.FBXmz-bd025.FBX.metamz-bd025.lmo.mtlmz-bd025.lmo.mtl.metamz-bd025.lmo.objmz-bd025.lmo.obj.metamz-bd026.FBXmz-bd026.FBX.metamz-bd026.lmo.mtlmz-bd026.lmo.mtl.metamz-bd026.lmo.objmz-bd026.lmo.obj.metamz-bd027.FBXmz-bd027.FBX.metamz-bd027.lmo.mtlmz-bd027.lmo.mtl.metamz-bd027.lmo.objmz-bd027.lmo.obj.metamz-bd028.FBXmz-bd028.FBX.metamz-bd028.lmo.mtlmz-bd028.lmo.mtl.metamz-bd028.lmo.objmz-bd028.lmo.obj.metamz-bd029.FBXmz-bd029.FBX.metamz-bd029.lmo.mtlmz-bd029.lmo.mtl.metamz-bd029.lmo.objmz-bd029.lmo.obj.metamz-bd030.FBXmz-bd030.FBX.metamz-bd030.lmo.mtlmz-bd030.lmo.mtl.metamz-bd030.lmo.objmz-bd030.lmo.obj.metamz-bd099.FBXmz-bd099.FBX.metamz-bd099.lmo.mtlmz-bd099.lmo.mtl.metamz-bd099.lmo.objmz-bd099.lmo.obj.metanml-bd001.FBXnml-bd001.FBX.metanml-bd001.lmo.mtlnml-bd001.lmo.mtl.metanml-bd001.lmo.objnml-bd001.lmo.obj.metanml-bd002.FBXnml-bd002.FBX.metanml-bd002.lmo.mtlnml-bd002.lmo.mtl.metanml-bd002.lmo.objnml-bd002.lmo.obj.metanml-bd003.FBXnml-bd003.FBX.metanml-bd003.lmo.mtlnml-bd003.lmo.mtl.metanml-bd003.lmo.objnml-bd003.lmo.obj.metanml-bd004.FBXnml-bd004.FBX.metanml-bd004.lmo.mtlnml-bd004.lmo.mtl.metanml-bd004.lmo.objnml-bd004.lmo.obj.metanml-bd005.FBXnml-bd005.FBX.metanml-bd005.lmo.mtlnml-bd005.lmo.mtl.metanml-bd005.lmo.objnml-bd005.lmo.obj.metanml-bd006.FBXnml-bd006.FBX.metanml-bd006.lmo.mtlnml-bd006.lmo.mtl.metanml-bd006.lmo.objnml-bd006.lmo.obj.metanml-bd007-donghua.fbxnml-bd007-donghua.fbx.metanml-bd007.FBXnml-bd007.FBX.metanml-bd007.lmo.mtlnml-bd007.lmo.mtl.metanml-bd007.lmo.objnml-bd007.lmo.obj.metanml-bd008.FBXnml-bd008.FBX.metanml-bd008.lmo.mtlnml-bd008.lmo.mtl.metanml-bd008.lmo.objnml-bd008.lmo.obj.metanml-bd009.FBXnml-bd009.FBX.metanml-bd009.lmo.mtlnml-bd009.lmo.mtl.metanml-bd009.lmo.objnml-bd009.lmo.obj.metanml-bd010.FBXnml-bd010.FBX.metanml-bd010.lmo.mtlnml-bd010.lmo.mtl.metanml-bd010.lmo.objnml-bd010.lmo.obj.metanml-bd011.FBXnml-bd011.FBX.metanml-bd011.lmo.mtlnml-bd011.lmo.mtl.metanml-bd011.lmo.objnml-bd011.lmo.obj.metanml-bd012.FBXnml-bd012.FBX.metanml-bd012.lmo.mtlnml-bd012.lmo.mtl.metanml-bd012.lmo.objnml-bd012.lmo.obj.metanml-bd013-donghua.fbxnml-bd013-donghua.fbx.metanml-bd013.FBXnml-bd013.FBX.metanml-bd013.lmo.mtlnml-bd013.lmo.mtl.metanml-bd013.lmo.objnml-bd013.lmo.obj.metanml-bd014-donghua.fbxnml-bd014-donghua.fbx.metanml-bd014.FBXnml-bd014.FBX.metanml-bd014.lmo.mtlnml-bd014.lmo.mtl.metanml-bd014.lmo.objnml-bd014.lmo.obj.metanml-bd015-donghua.fbxnml-bd015-donghua.fbx.metanml-bd015.FBXnml-bd015.FBX.metanml-bd015.lmo.mtlnml-bd015.lmo.mtl.metanml-bd015.lmo.objnml-bd015.lmo.obj.metanml-bd016.lmo.mtlnml-bd016.lmo.mtl.metanml-bd016.lmo.objnml-bd016.lmo.obj.metanml-bd017.lmo.mtlnml-bd017.lmo.mtl.metanml-bd017.lmo.objnml-bd017.lmo.obj.metanml-bd018.FBXnml-bd018.FBX.metanml-bd018.lmo.mtlnml-bd018.lmo.mtl.metanml-bd018.lmo.objnml-bd018.lmo.obj.metanml-bd019-donghua.fbxnml-bd019-donghua.fbx.metanml-bd019.FBXnml-bd019.FBX.metanml-bd019.lmo.mtlnml-bd019.lmo.mtl.metanml-bd019.lmo.objnml-bd019.lmo.obj.metanml-bd020-donghua.fbxnml-bd020-donghua.fbx.metanml-bd020.FBXnml-bd020.FBX.metanml-bd020.lmo.mtlnml-bd020.lmo.mtl.metanml-bd020.lmo.objnml-bd020.lmo.obj.metanml-bd021-donghua.fbxnml-bd021-donghua.fbx.metanml-bd021.FBXnml-bd021.FBX.metanml-bd021.lmo.mtlnml-bd021.lmo.mtl.metanml-bd021.lmo.objnml-bd021.lmo.obj.metanml-bd022.FBXnml-bd022.FBX.metanml-bd022.lmo.mtlnml-bd022.lmo.mtl.metanml-bd022.lmo.objnml-bd022.lmo.obj.metanml-bd023.FBXnml-bd023.FBX.metanml-bd023.lmo.mtlnml-bd023.lmo.mtl.metanml-bd023.lmo.objnml-bd023.lmo.obj.metanml-bd024.FBXnml-bd024.FBX.metanml-bd024.lmo.mtlnml-bd024.lmo.mtl.metanml-bd024.lmo.objnml-bd024.lmo.obj.metanml-bd025.FBXnml-bd025.FBX.metanml-bd025.lmo.mtlnml-bd025.lmo.mtl.metanml-bd025.lmo.objnml-bd025.lmo.obj.metanml-bd026.FBXnml-bd026.FBX.metanml-bd026.lmo.mtlnml-bd026.lmo.mtl.metanml-bd026.lmo.objnml-bd026.lmo.obj.metanml-bd027.FBXnml-bd027.FBX.metanml-bd027.lmo.mtlnml-bd027.lmo.mtl.metanml-bd027.lmo.objnml-bd027.lmo.obj.metanml-bd028.FBXnml-bd028.FBX.metanml-bd028.lmo.mtlnml-bd028.lmo.mtl.metanml-bd028.lmo.objnml-bd028.lmo.obj.metanml-bd029.FBXnml-bd029.FBX.metanml-bd029.lmo.mtlnml-bd029.lmo.mtl.metanml-bd029.lmo.objnml-bd029.lmo.obj.metanml-bd030.FBXnml-bd030.FBX.metanml-bd030.lmo.mtlnml-bd030.lmo.mtl.metanml-bd030.lmo.objnml-bd030.lmo.obj.metanml-bd031.FBXnml-bd031.FBX.metanml-bd031.lmo.mtlnml-bd031.lmo.mtl.metanml-bd031.lmo.objnml-bd031.lmo.obj.metanml-bd032.FBXnml-bd032.FBX.metanml-bd032.lmo.mtlnml-bd032.lmo.mtl.metanml-bd032.lmo.objnml-bd032.lmo.obj.metanml-bd033.FBXnml-bd033.FBX.metanml-bd033.lmo.mtlnml-bd033.lmo.mtl.metanml-bd033.lmo.objnml-bd033.lmo.obj.metanml-bd034.FBXnml-bd034.FBX.metanml-bd034.lmo.mtlnml-bd034.lmo.mtl.metanml-bd034.lmo.objnml-bd034.lmo.obj.metanml-bd035.FBXnml-bd035.FBX.metanml-bd035.lmo.mtlnml-bd035.lmo.mtl.metanml-bd035.lmo.objnml-bd035.lmo.obj.metanml-bd036.FBXnml-bd036.FBX.metanml-bd036.lmo.mtlnml-bd036.lmo.mtl.metanml-bd036.lmo.objnml-bd036.lmo.obj.metanml-bd037.FBXnml-bd037.FBX.metanml-bd037.lmo.mtlnml-bd037.lmo.mtl.metanml-bd037.lmo.objnml-bd037.lmo.obj.metanml-bd038.FBXnml-bd038.FBX.metanml-bd038.lmo.mtlnml-bd038.lmo.mtl.metanml-bd038.lmo.objnml-bd038.lmo.obj.metanml-bd039.FBXnml-bd039.FBX.metanml-bd039.lmo.mtlnml-bd039.lmo.mtl.metanml-bd039.lmo.objnml-bd039.lmo.obj.metanml-bd040.FBXnml-bd040.FBX.metanml-bd040.lmo.mtlnml-bd040.lmo.mtl.metanml-bd040.lmo.objnml-bd040.lmo.obj.metanml-bd041.FBXnml-bd041.FBX.metanml-bd041.lmo.mtlnml-bd041.lmo.mtl.metanml-bd041.lmo.objnml-bd041.lmo.obj.metanml-bd042-donghua.fbxnml-bd042-donghua.fbx.metanml-bd042.FBXnml-bd042.FBX.metanml-bd042.lmo.mtlnml-bd042.lmo.mtl.metanml-bd042.lmo.objnml-bd042.lmo.obj.metanml-bd043-donghua.fbxnml-bd043-donghua.fbx.metanml-bd043.FBXnml-bd043.FBX.metanml-bd043.lmo.mtlnml-bd043.lmo.mtl.metanml-bd043.lmo.objnml-bd043.lmo.obj.metanml-bd044-donghua.fbxnml-bd044-donghua.fbx.metanml-bd044.FBXnml-bd044.FBX.metanml-bd044.lmo.mtlnml-bd044.lmo.mtl.metanml-bd044.lmo.objnml-bd044.lmo.obj.metanml-bd045.FBXnml-bd045.FBX.metanml-bd045.lmo.mtlnml-bd045.lmo.mtl.metanml-bd045.lmo.objnml-bd045.lmo.obj.metanml-bd046.FBXnml-bd046.FBX.metanml-bd046.lmo.mtlnml-bd046.lmo.mtl.metanml-bd046.lmo.objnml-bd046.lmo.obj.metanml-bd047.FBXnml-bd047.FBX.metanml-bd047.lmo.mtlnml-bd047.lmo.mtl.metanml-bd047.lmo.objnml-bd047.lmo.obj.metanml-bd048.FBXnml-bd048.FBX.metanml-bd048.lmo.mtlnml-bd048.lmo.mtl.metanml-bd048.lmo.objnml-bd048.lmo.obj.metanml-bd049.FBXnml-bd049.FBX.metanml-bd049.lmo.mtlnml-bd049.lmo.mtl.metanml-bd049.lmo.objnml-bd049.lmo.obj.metanml-bd050.FBXnml-bd050.FBX.metanml-bd050.lmo.mtlnml-bd050.lmo.mtl.metanml-bd050.lmo.objnml-bd050.lmo.obj.metanml-bd050_shizi model.FBXnml-bd050_shizi model.FBX.metanml-bd051.FBXnml-bd051.FBX.metanml-bd051.lmo.mtlnml-bd051.lmo.mtl.metanml-bd051.lmo.objnml-bd051.lmo.obj.metanml-bd052.FBXnml-bd052.FBX.metanml-bd052.lmo.mtlnml-bd052.lmo.mtl.metanml-bd052.lmo.objnml-bd052.lmo.obj.metanml-bd053.FBXnml-bd053.FBX.metanml-bd053.lmo.mtlnml-bd053.lmo.mtl.metanml-bd053.lmo.objnml-bd053.lmo.obj.metanml-bd054.FBXnml-bd054.FBX.metanml-bd054.lmo.mtlnml-bd054.lmo.mtl.metanml-bd054.lmo.objnml-bd054.lmo.obj.metanml-bd055.FBXnml-bd055.FBX.metanml-bd055.lmo.mtlnml-bd055.lmo.mtl.metanml-bd055.lmo.objnml-bd055.lmo.obj.metanml-bd055_shizi model.FBXnml-bd055_shizi model.FBX.metanml-bd056.FBXnml-bd056.FBX.metanml-bd056.lmo.mtlnml-bd056.lmo.mtl.metanml-bd056.lmo.objnml-bd056.lmo.obj.metanml-bd057.FBXnml-bd057.FBX.metanml-bd057.lmo.mtlnml-bd057.lmo.mtl.metanml-bd057.lmo.objnml-bd057.lmo.obj.metanml-bd058.FBXnml-bd058.FBX.metanml-bd058.lmo.mtlnml-bd058.lmo.mtl.metanml-bd058.lmo.objnml-bd058.lmo.obj.metanml-bd059.FBXnml-bd059.FBX.metanml-bd059.lmo.mtlnml-bd059.lmo.mtl.metanml-bd059.lmo.objnml-bd059.lmo.obj.metanml-bd059_shizi model.FBXnml-bd059_shizi model.FBX.metanml-bd060.FBXnml-bd060.FBX.metanml-bd060.lmo.mtlnml-bd060.lmo.mtl.metanml-bd060.lmo.objnml-bd060.lmo.obj.metanml-bd061.FBXnml-bd061.FBX.metanml-bd061.lmo.mtlnml-bd061.lmo.mtl.metanml-bd061.lmo.objnml-bd061.lmo.obj.metanml-bd062-1.FBXnml-bd062-1.FBX.metanml-bd062.lmo.mtlnml-bd062.lmo.mtl.metanml-bd062.lmo.objnml-bd062.lmo.obj.metanml-bd062_shizi model.FBXnml-bd062_shizi model.FBX.metanml-bd063-donghua.fbxnml-bd063-donghua.fbx.metanml-bd063.FBXnml-bd063.FBX.metanml-bd063.lmo.mtlnml-bd063.lmo.mtl.metanml-bd063.lmo.objnml-bd063.lmo.obj.metanml-bd063_shizi model.FBXnml-bd063_shizi model.FBX.metanml-bd064.FBXnml-bd064.FBX.metanml-bd064.lmo.mtlnml-bd064.lmo.mtl.metanml-bd064.lmo.objnml-bd064.lmo.obj.metanml-bd064_shizi model.FBXnml-bd064_shizi model.FBX.metanml-bd065.FBXnml-bd065.FBX.metanml-bd065.lmo.mtlnml-bd065.lmo.mtl.metanml-bd065.lmo.objnml-bd065.lmo.obj.metanml-bd065_shizi model.FBXnml-bd065_shizi model.FBX.metanml-bd066.FBXnml-bd066.FBX.metanml-bd066.lmo.mtlnml-bd066.lmo.mtl.metanml-bd066.lmo.objnml-bd066.lmo.obj.metanml-bd066_shizi model.FBXnml-bd066_shizi model.FBX.metanml-bd067-donghua.fbxnml-bd067-donghua.fbx.metanml-bd067.FBXnml-bd067.FBX.metanml-bd067.lmo.mtlnml-bd067.lmo.mtl.metanml-bd067.lmo.objnml-bd067.lmo.obj.metanml-bd068.FBXnml-bd068.FBX.metanml-bd068.lmo.mtlnml-bd068.lmo.mtl.metanml-bd068.lmo.objnml-bd068.lmo.obj.metanml-bd069.FBXnml-bd069.FBX.metanml-bd069.lmo.mtlnml-bd069.lmo.mtl.metanml-bd069.lmo.objnml-bd069.lmo.obj.metanml-bd070.FBXnml-bd070.FBX.metanml-bd070.lmo.mtlnml-bd070.lmo.mtl.metanml-bd070.lmo.objnml-bd070.lmo.obj.metanml-bd071-donghua.fbxnml-bd071-donghua.fbx.metanml-bd071.FBXnml-bd071.FBX.metanml-bd071.lmo.mtlnml-bd071.lmo.mtl.metanml-bd071.lmo.objnml-bd071.lmo.obj.metanml-bd072-donghua.fbxnml-bd072-donghua.fbx.metanml-bd072.FBXnml-bd072.FBX.metanml-bd072.lmo.mtlnml-bd072.lmo.mtl.metanml-bd072.lmo.objnml-bd072.lmo.obj.metanml-bd073.FBXnml-bd073.FBX.metanml-bd073.lmo.mtlnml-bd073.lmo.mtl.metanml-bd073.lmo.objnml-bd073.lmo.obj.metanml-bd074.FBXnml-bd074.FBX.metanml-bd074.lmo.mtlnml-bd074.lmo.mtl.metanml-bd074.lmo.objnml-bd074.lmo.obj.metanml-bd075.FBXnml-bd075.FBX.metanml-bd075.lmo.mtlnml-bd075.lmo.mtl.metanml-bd075.lmo.objnml-bd075.lmo.obj.metanml-bd076.FBXnml-bd076.FBX.metanml-bd076.lmo.mtlnml-bd076.lmo.mtl.metanml-bd076.lmo.objnml-bd076.lmo.obj.metanml-bd077.FBXnml-bd077.FBX.metanml-bd077.lmo.mtlnml-bd077.lmo.mtl.metanml-bd077.lmo.objnml-bd077.lmo.obj.metanml-bd078.FBXnml-bd078.FBX.metanml-bd078.lmo.mtlnml-bd078.lmo.mtl.metanml-bd078.lmo.objnml-bd078.lmo.obj.metanml-bd079.FBXnml-bd079.FBX.metanml-bd079.lmo.mtlnml-bd079.lmo.mtl.metanml-bd079.lmo.objnml-bd079.lmo.obj.metanml-bd080.FBXnml-bd080.FBX.metanml-bd080.lmo.mtlnml-bd080.lmo.mtl.metanml-bd080.lmo.objnml-bd080.lmo.obj.metanml-bd081.FBXnml-bd081.FBX.metanml-bd081.lmo.mtlnml-bd081.lmo.mtl.metanml-bd081.lmo.objnml-bd081.lmo.obj.metanml-bd082.FBXnml-bd082.FBX.metanml-bd082.lmo.mtlnml-bd082.lmo.mtl.metanml-bd082.lmo.objnml-bd082.lmo.obj.metanml-bd082_shizi model.FBXnml-bd082_shizi model.FBX.metanml-bd083-donghua.fbxnml-bd083-donghua.fbx.metanml-bd083.FBXnml-bd083.FBX.metanml-bd083.lmo.mtlnml-bd083.lmo.mtl.metanml-bd083.lmo.objnml-bd083.lmo.obj.metanml-bd084.FBXnml-bd084.FBX.metanml-bd084.lmo.mtlnml-bd084.lmo.mtl.metanml-bd084.lmo.objnml-bd084.lmo.obj.metanml-bd085.FBXnml-bd085.FBX.metanml-bd085.lmo.mtlnml-bd085.lmo.mtl.metanml-bd085.lmo.objnml-bd085.lmo.obj.metanml-bd086.FBXnml-bd086.FBX.metanml-bd086.lmo.mtlnml-bd086.lmo.mtl.metanml-bd086.lmo.objnml-bd086.lmo.obj.metanml-bd087.FBXnml-bd087.FBX.metanml-bd087.lmo.mtlnml-bd087.lmo.mtl.metanml-bd087.lmo.objnml-bd087.lmo.obj.metanml-bd088.FBXnml-bd088.FBX.metanml-bd088.lmo.mtlnml-bd088.lmo.mtl.metanml-bd088.lmo.objnml-bd088.lmo.obj.metanml-bd089.FBXnml-bd089.FBX.metanml-bd089.lmo.mtlnml-bd089.lmo.mtl.metanml-bd089.lmo.objnml-bd089.lmo.obj.metanml-bd090.FBXnml-bd090.FBX.metanml-bd090.lmo.mtlnml-bd090.lmo.mtl.metanml-bd090.lmo.objnml-bd090.lmo.obj.metanml-bd091.FBXnml-bd091.FBX.metanml-bd091.lmo.mtlnml-bd091.lmo.mtl.metanml-bd091.lmo.objnml-bd091.lmo.obj.metanml-bd092.FBXnml-bd092.FBX.metanml-bd092.lmo.mtlnml-bd092.lmo.mtl.metanml-bd092.lmo.objnml-bd092.lmo.obj.metanml-bd093.FBXnml-bd093.FBX.metanml-bd093.lmo.mtlnml-bd093.lmo.mtl.metanml-bd093.lmo.objnml-bd093.lmo.obj.metanml-bd094.FBXnml-bd094.FBX.metanml-bd094.lmo.mtlnml-bd094.lmo.mtl.metanml-bd094.lmo.objnml-bd094.lmo.obj.metanml-bd095.FBXnml-bd095.FBX.metanml-bd095.lmo.mtlnml-bd095.lmo.mtl.metanml-bd095.lmo.objnml-bd095.lmo.obj.metanml-bd096-1.FBXnml-bd096-1.FBX.metanml-bd096.lmo.mtlnml-bd096.lmo.mtl.metanml-bd096.lmo.objnml-bd096.lmo.obj.metanml-bd097.FBXnml-bd097.FBX.metanml-bd097.lmo.mtlnml-bd097.lmo.mtl.metanml-bd097.lmo.objnml-bd097.lmo.obj.metanml-bd098.FBXnml-bd098.FBX.metanml-bd098.lmo.mtlnml-bd098.lmo.mtl.metanml-bd098.lmo.objnml-bd098.lmo.obj.metanml-bd099-donghua.fbxnml-bd099-donghua.fbx.metanml-bd099.FBXnml-bd099.FBX.metanml-bd099.lmo.mtlnml-bd099.lmo.mtl.metanml-bd099.lmo.objnml-bd099.lmo.obj.metanml-bd100.FBXnml-bd100.FBX.metanml-bd100.lmo.mtlnml-bd100.lmo.mtl.metanml-bd100.lmo.objnml-bd100.lmo.obj.metanml-bd101.FBXnml-bd101.FBX.metanml-bd101.lmo.mtlnml-bd101.lmo.mtl.metanml-bd101.lmo.objnml-bd101.lmo.obj.metanml-bd102.FBXnml-bd102.FBX.metanml-bd102.lmo.mtlnml-bd102.lmo.mtl.metanml-bd102.lmo.objnml-bd102.lmo.obj.metanml-bd103.FBXnml-bd103.FBX.metanml-bd103.lmo.mtlnml-bd103.lmo.mtl.metanml-bd103.lmo.objnml-bd103.lmo.obj.metanml-bd104.FBXnml-bd104.FBX.metanml-bd104.lmo.mtlnml-bd104.lmo.mtl.metanml-bd104.lmo.objnml-bd104.lmo.obj.metanml-bd105.FBXnml-bd105.FBX.metanml-bd105.lmo.mtlnml-bd105.lmo.mtl.metanml-bd105.lmo.objnml-bd105.lmo.obj.metanml-bd106.FBXnml-bd106.FBX.metanml-bd106.lmo.mtlnml-bd106.lmo.mtl.metanml-bd106.lmo.objnml-bd106.lmo.obj.metanml-bd107.FBXnml-bd107.FBX.metanml-bd107.lmo.mtlnml-bd107.lmo.mtl.metanml-bd107.lmo.objnml-bd107.lmo.obj.metanml-bd108.FBXnml-bd108.FBX.metanml-bd108.lmo.mtlnml-bd108.lmo.mtl.metanml-bd108.lmo.objnml-bd108.lmo.obj.metanml-bd109.FBXnml-bd109.FBX.metanml-bd109.lmo.mtlnml-bd109.lmo.mtl.metanml-bd109.lmo.objnml-bd109.lmo.obj.metanml-bd110-donghua.fbxnml-bd110-donghua.fbx.metanml-bd110.FBXnml-bd110.FBX.metanml-bd110.lmo.mtlnml-bd110.lmo.mtl.metanml-bd110.lmo.objnml-bd110.lmo.obj.metanml-bd111.FBXnml-bd111.FBX.metanml-bd111.lmo.mtlnml-bd111.lmo.mtl.metanml-bd111.lmo.objnml-bd111.lmo.obj.metanml-bd112-1.FBXnml-bd112-1.FBX.metanml-bd112.FBXnml-bd112.FBX.metanml-bd112.lmo.mtlnml-bd112.lmo.mtl.metanml-bd112.lmo.objnml-bd112.lmo.obj.metanml-bd113.FBXnml-bd113.FBX.metanml-bd113.lmo.mtlnml-bd113.lmo.mtl.metanml-bd113.lmo.objnml-bd113.lmo.obj.metanml-bd114.FBXnml-bd114.FBX.metanml-bd114.lmo.mtlnml-bd114.lmo.mtl.metanml-bd114.lmo.objnml-bd114.lmo.obj.metanml-bd115.FBXnml-bd115.FBX.metanml-bd115.lmo.mtlnml-bd115.lmo.mtl.metanml-bd115.lmo.objnml-bd115.lmo.obj.metanml-bd116.FBXnml-bd116.FBX.metanml-bd116.lmo.mtlnml-bd116.lmo.mtl.metanml-bd116.lmo.objnml-bd116.lmo.obj.metanml-bd117-1.FBXnml-bd117-1.FBX.metanml-bd117.lmo.mtlnml-bd117.lmo.mtl.metanml-bd117.lmo.objnml-bd117.lmo.obj.metanml-bd117_shizi model.FBXnml-bd117_shizi model.FBX.metanml-bd118-1.FBXnml-bd118-1.FBX.metanml-bd118.lmo.mtlnml-bd118.lmo.mtl.metanml-bd118.lmo.objnml-bd118.lmo.obj.metanml-bd119-1.FBXnml-bd119-1.FBX.metanml-bd119.lmo.mtlnml-bd119.lmo.mtl.metanml-bd119.lmo.objnml-bd119.lmo.obj.metanml-bd119_shizi model.FBXnml-bd119_shizi model.FBX.metanml-bd120.lmo.mtlnml-bd120.lmo.mtl.metanml-bd120.lmo.objnml-bd120.lmo.obj.metanml-bd121-1.FBXnml-bd121-1.FBX.metanml-bd121.lmo.mtlnml-bd121.lmo.mtl.metanml-bd121.lmo.objnml-bd121.lmo.obj.metanml-bd122-1.FBXnml-bd122-1.FBX.metanml-bd122.lmo.mtlnml-bd122.lmo.mtl.metanml-bd122.lmo.objnml-bd122.lmo.obj.metanml-bd123.lmo.mtlnml-bd123.lmo.mtl.metanml-bd123.lmo.objnml-bd123.lmo.obj.metanml-bd124.FBXnml-bd124.FBX.metanml-bd124.lmo.mtlnml-bd124.lmo.mtl.metanml-bd124.lmo.objnml-bd124.lmo.obj.metanml-bd125.lmo.mtlnml-bd125.lmo.mtl.metanml-bd125.lmo.objnml-bd125.lmo.obj.metanml-bd126-donghua.fbxnml-bd126-donghua.fbx.metanml-bd126.FBXnml-bd126.FBX.metanml-bd126.lmo.mtlnml-bd126.lmo.mtl.metanml-bd126.lmo.objnml-bd126.lmo.obj.metanml-bd127.lmo.mtlnml-bd127.lmo.mtl.metanml-bd127.lmo.objnml-bd127.lmo.obj.metanml-bd128-01.FBXnml-bd128-01.FBX.metanml-bd128-01.lmo.mtlnml-bd128-01.lmo.mtl.metanml-bd128-01.lmo.objnml-bd128-01.lmo.obj.metanml-bd128-02.FBXnml-bd128-02.FBX.metanml-bd128-02.lmo.mtlnml-bd128-02.lmo.mtl.metanml-bd128-02.lmo.objnml-bd128-02.lmo.obj.metanml-bd128-03.FBXnml-bd128-03.FBX.metanml-bd128-03.lmo.mtlnml-bd128-03.lmo.mtl.metanml-bd128-03.lmo.objnml-bd128-03.lmo.obj.metanml-bd128-04.FBXnml-bd128-04.FBX.metanml-bd128-04.lmo.mtlnml-bd128-04.lmo.mtl.metanml-bd128-04.lmo.objnml-bd128-04.lmo.obj.metanml-bd129.FBXnml-bd129.FBX.metanml-bd129.lmo.mtlnml-bd129.lmo.mtl.metanml-bd129.lmo.objnml-bd129.lmo.obj.metanml-bd130.FBXnml-bd130.FBX.metanml-bd130.lmo.mtlnml-bd130.lmo.mtl.metanml-bd130.lmo.objnml-bd130.lmo.obj.metanml-bd131-donghua.fbxnml-bd131-donghua.fbx.metanml-bd131.FBXnml-bd131.FBX.metanml-bd131.lmo.mtlnml-bd131.lmo.mtl.metanml-bd131.lmo.objnml-bd131.lmo.obj.metanml-bd132-donghua.fbxnml-bd132-donghua.fbx.metanml-bd132.FBXnml-bd132.FBX.metanml-bd132.lmo.mtlnml-bd132.lmo.mtl.metanml-bd132.lmo.objnml-bd132.lmo.obj.metanml-bd133-donghua.fbxnml-bd133-donghua.fbx.metanml-bd133.FBXnml-bd133.FBX.metanml-bd133.lmo.mtlnml-bd133.lmo.mtl.metanml-bd133.lmo.objnml-bd133.lmo.obj.metanml-bd134-donghua.fbxnml-bd134-donghua.fbx.metanml-bd134.FBXnml-bd134.FBX.metanml-bd134.lmo.mtlnml-bd134.lmo.mtl.metanml-bd134.lmo.objnml-bd134.lmo.obj.metanml-bd135-donghua.fbxnml-bd135-donghua.fbx.metanml-bd135.FBXnml-bd135.FBX.metanml-bd135.lmo.mtlnml-bd135.lmo.mtl.metanml-bd135.lmo.objnml-bd135.lmo.obj.metanml-bd136-donghua.fbxnml-bd136-donghua.fbx.metanml-bd136.FBXnml-bd136.FBX.metanml-bd136.lmo.mtlnml-bd136.lmo.mtl.metanml-bd136.lmo.objnml-bd136.lmo.obj.metanml-bd137-donghua.fbxnml-bd137-donghua.fbx.metanml-bd137.FBXnml-bd137.FBX.metanml-bd137.lmo.mtlnml-bd137.lmo.mtl.metanml-bd137.lmo.objnml-bd137.lmo.obj.metanml-bd138.FBXnml-bd138.FBX.metanml-bd138.lmo.mtlnml-bd138.lmo.mtl.metanml-bd138.lmo.objnml-bd138.lmo.obj.metanml-bd139.FBXnml-bd139.FBX.metanml-bd139.lmo.mtlnml-bd139.lmo.mtl.metanml-bd139.lmo.objnml-bd139.lmo.obj.metanml-bd140.FBXnml-bd140.FBX.metanml-bd140.lmo.mtlnml-bd140.lmo.mtl.metanml-bd140.lmo.objnml-bd140.lmo.obj.metanml-bd141.lmo.mtlnml-bd141.lmo.mtl.metanml-bd141.lmo.objnml-bd141.lmo.obj.metanml-bd142.lmo.mtlnml-bd142.lmo.mtl.metanml-bd142.lmo.objnml-bd142.lmo.obj.metanml-bd143.lmo.mtlnml-bd143.lmo.mtl.metanml-bd143.lmo.objnml-bd143.lmo.obj.metanml-bd144.FBXnml-bd144.FBX.metanml-bd144.lmo.mtlnml-bd144.lmo.mtl.metanml-bd144.lmo.objnml-bd144.lmo.obj.metanml-bd145.FBXnml-bd145.FBX.metanml-bd145.lmo.mtlnml-bd145.lmo.mtl.metanml-bd145.lmo.objnml-bd145.lmo.obj.metanml-bd146-donghua.fbxnml-bd146-donghua.fbx.metanml-bd146.FBXnml-bd146.FBX.metanml-bd146.lmo.mtlnml-bd146.lmo.mtl.metanml-bd146.lmo.objnml-bd146.lmo.obj.metanml-bd147.FBXnml-bd147.FBX.metanml-bd147.lmo.mtlnml-bd147.lmo.mtl.metanml-bd147.lmo.objnml-bd147.lmo.obj.metanml-bd148-01.FBXnml-bd148-01.FBX.metanml-bd148-01.lmo.mtlnml-bd148-01.lmo.mtl.metanml-bd148-01.lmo.objnml-bd148-01.lmo.obj.metanml-bd148-02.FBXnml-bd148-02.FBX.metanml-bd148-02.lmo.mtlnml-bd148-02.lmo.mtl.metanml-bd148-02.lmo.objnml-bd148-02.lmo.obj.metanml-bd149-donghua.fbxnml-bd149-donghua.fbx.metanml-bd149.lmo.mtlnml-bd149.lmo.mtl.metanml-bd149.lmo.objnml-bd149.lmo.obj.metanml-bd150.FBXnml-bd150.FBX.metanml-bd150.lmo.mtlnml-bd150.lmo.mtl.metanml-bd150.lmo.objnml-bd150.lmo.obj.metanml-bd151.FBXnml-bd151.FBX.metanml-bd151.lmo.mtlnml-bd151.lmo.mtl.metanml-bd151.lmo.objnml-bd151.lmo.obj.metanml-bd152.FBXnml-bd152.FBX.metanml-bd152.lmo.mtlnml-bd152.lmo.mtl.metanml-bd152.lmo.objnml-bd152.lmo.obj.metanml-bd153.FBXnml-bd153.FBX.metanml-bd153.lmo.mtlnml-bd153.lmo.mtl.metanml-bd153.lmo.objnml-bd153.lmo.obj.metanml-bd154.FBXnml-bd154.FBX.metanml-bd154.lmo.mtlnml-bd154.lmo.mtl.metanml-bd154.lmo.objnml-bd154.lmo.obj.metanml-bd155.FBXnml-bd155.FBX.metanml-bd155.lmo.mtlnml-bd155.lmo.mtl.metanml-bd155.lmo.objnml-bd155.lmo.obj.metanml-bd156.FBXnml-bd156.FBX.metanml-bd156.lmo.mtlnml-bd156.lmo.mtl.metanml-bd156.lmo.objnml-bd156.lmo.obj.metanml-bd157.FBXnml-bd157.FBX.metanml-bd157.lmo.mtlnml-bd157.lmo.mtl.metanml-bd157.lmo.objnml-bd157.lmo.obj.metanml-bd158-1.FBXnml-bd158-1.FBX.metanml-bd158-donghua.fbxnml-bd158-donghua.fbx.metanml-bd158.lmo.mtlnml-bd158.lmo.mtl.metanml-bd158.lmo.objnml-bd158.lmo.obj.metanml-bd159-1.FBXnml-bd159-1.FBX.metanml-bd159-donghua.fbxnml-bd159-donghua.fbx.metanml-bd159.lmo.mtlnml-bd159.lmo.mtl.metanml-bd159.lmo.objnml-bd159.lmo.obj.metanml-bd160.FBXnml-bd160.FBX.metanml-bd160.lmo.mtlnml-bd160.lmo.mtl.metanml-bd160.lmo.objnml-bd160.lmo.obj.metanml-bd161.FBXnml-bd161.FBX.metanml-bd161.lmo.mtlnml-bd161.lmo.mtl.metanml-bd161.lmo.objnml-bd161.lmo.obj.metanml-bd162.FBXnml-bd162.FBX.metanml-bd162.lmo.mtlnml-bd162.lmo.mtl.metanml-bd162.lmo.objnml-bd162.lmo.obj.metanml-bd163.FBXnml-bd163.FBX.metanml-bd163.lmo.mtlnml-bd163.lmo.mtl.metanml-bd163.lmo.objnml-bd163.lmo.obj.metanml-bd164.FBXnml-bd164.FBX.metanml-bd164.lmo.mtlnml-bd164.lmo.mtl.metanml-bd164.lmo.objnml-bd164.lmo.obj.metanml-bd165.FBXnml-bd165.FBX.metanml-bd165.lmo.mtlnml-bd165.lmo.mtl.metanml-bd165.lmo.objnml-bd165.lmo.obj.metanml-bd166.FBXnml-bd166.FBX.metanml-bd166.lmo.mtlnml-bd166.lmo.mtl.metanml-bd166.lmo.objnml-bd166.lmo.obj.metanml-bd167.FBXnml-bd167.FBX.metanml-bd167.lmo.mtlnml-bd167.lmo.mtl.metanml-bd167.lmo.objnml-bd167.lmo.obj.metanml-bd168-donghua.fbxnml-bd168-donghua.fbx.metanml-bd168.FBXnml-bd168.FBX.metanml-bd168.lmo.mtlnml-bd168.lmo.mtl.metanml-bd168.lmo.objnml-bd168.lmo.obj.metanml-bd169-1.FBXnml-bd169-1.FBX.metanml-bd169.lmo.mtlnml-bd169.lmo.mtl.metanml-bd169.lmo.objnml-bd169.lmo.obj.metanml-bd170.FBXnml-bd170.FBX.metanml-bd170.lmo.mtlnml-bd170.lmo.mtl.metanml-bd170.lmo.objnml-bd170.lmo.obj.metanml-bd171.lmo.mtlnml-bd171.lmo.mtl.metanml-bd171.lmo.objnml-bd171.lmo.obj.metanml-bd172.FBXnml-bd172.FBX.metanml-bd172.lmo.mtlnml-bd172.lmo.mtl.metanml-bd172.lmo.objnml-bd172.lmo.obj.metanml-bd173-donghua.fbxnml-bd173-donghua.fbx.metanml-bd173.FBXnml-bd173.FBX.metanml-bd173.lmo.mtlnml-bd173.lmo.mtl.metanml-bd173.lmo.objnml-bd173.lmo.obj.metanml-bd174.FBXnml-bd174.FBX.metanml-bd174.lmo.mtlnml-bd174.lmo.mtl.metanml-bd174.lmo.objnml-bd174.lmo.obj.metanml-bd175.FBXnml-bd175.FBX.metanml-bd175.lmo.mtlnml-bd175.lmo.mtl.metanml-bd175.lmo.objnml-bd175.lmo.obj.metanml-bd176.FBXnml-bd176.FBX.metanml-bd176.lmo.mtlnml-bd176.lmo.mtl.metanml-bd176.lmo.objnml-bd176.lmo.obj.metanml-bd177.FBXnml-bd177.FBX.metanml-bd177.lmo.mtlnml-bd177.lmo.mtl.metanml-bd177.lmo.objnml-bd177.lmo.obj.metanml-bd178.FBXnml-bd178.FBX.metanml-bd178.lmo.mtlnml-bd178.lmo.mtl.metanml-bd178.lmo.objnml-bd178.lmo.obj.metanml-bd179.FBXnml-bd179.FBX.metanml-bd179.lmo.mtlnml-bd179.lmo.mtl.metanml-bd179.lmo.objnml-bd179.lmo.obj.metanml-bd180.FBXnml-bd180.FBX.metanml-bd180.lmo.mtlnml-bd180.lmo.mtl.metanml-bd180.lmo.objnml-bd180.lmo.obj.metanml-bd181.FBXnml-bd181.FBX.metanml-bd181.lmo.mtlnml-bd181.lmo.mtl.metanml-bd181.lmo.objnml-bd181.lmo.obj.metanml-bd182.FBXnml-bd182.FBX.metanml-bd182.lmo.mtlnml-bd182.lmo.mtl.metanml-bd182.lmo.objnml-bd182.lmo.obj.metanml-bd182_shizi model.FBXnml-bd182_shizi model.FBX.metanml-bd183-donghua.fbxnml-bd183-donghua.fbx.metanml-bd183.FBXnml-bd183.FBX.metanml-bd183.lmo.mtlnml-bd183.lmo.mtl.metanml-bd183.lmo.objnml-bd183.lmo.obj.metanml-bd184.FBXnml-bd184.FBX.metanml-bd184.lmo.mtlnml-bd184.lmo.mtl.metanml-bd184.lmo.objnml-bd184.lmo.obj.metanml-bd185.FBXnml-bd185.FBX.metanml-bd185.lmo.mtlnml-bd185.lmo.mtl.metanml-bd185.lmo.objnml-bd185.lmo.obj.metanml-bd186.FBXnml-bd186.FBX.metanml-bd186.lmo.mtlnml-bd186.lmo.mtl.metanml-bd186.lmo.objnml-bd186.lmo.obj.metanml-bd187.FBXnml-bd187.FBX.metanml-bd187.lmo.mtlnml-bd187.lmo.mtl.metanml-bd187.lmo.objnml-bd187.lmo.obj.metanml-bd188.FBXnml-bd188.FBX.metanml-bd188.lmo.mtlnml-bd188.lmo.mtl.metanml-bd188.lmo.objnml-bd188.lmo.obj.metanml-bd189.FBXnml-bd189.FBX.metanml-bd189.lmo.mtlnml-bd189.lmo.mtl.metanml-bd189.lmo.objnml-bd189.lmo.obj.metanml-bd190.FBXnml-bd190.FBX.metanml-bd190.lmo.mtlnml-bd190.lmo.mtl.metanml-bd190.lmo.objnml-bd190.lmo.obj.metanml-bd191.FBXnml-bd191.FBX.metanml-bd191.lmo.mtlnml-bd191.lmo.mtl.metanml-bd191.lmo.objnml-bd191.lmo.obj.metanml-bd192.lmo.mtlnml-bd192.lmo.mtl.metanml-bd192.lmo.objnml-bd192.lmo.obj.metanml-bd192donghua.fbxnml-bd192donghua.fbx.metanml-bd193-donghua.fbxnml-bd193-donghua.fbx.metanml-bd193.lmo.mtlnml-bd193.lmo.mtl.metanml-bd193.lmo.objnml-bd193.lmo.obj.metanml-bd194-donghua.fbxnml-bd194-donghua.fbx.metanml-bd194.lmo.mtlnml-bd194.lmo.mtl.metanml-bd194.lmo.objnml-bd194.lmo.obj.metanml-bd195.FBXnml-bd195.FBX.metanml-bd195.lmo.mtlnml-bd195.lmo.mtl.metanml-bd195.lmo.objnml-bd195.lmo.obj.metanml-bd196.FBXnml-bd196.FBX.metanml-bd196.lmo.mtlnml-bd196.lmo.mtl.metanml-bd196.lmo.objnml-bd196.lmo.obj.metanml-bd197.FBXnml-bd197.FBX.metanml-bd197.lmo.mtlnml-bd197.lmo.mtl.metanml-bd197.lmo.objnml-bd197.lmo.obj.metanml-bd198.FBXnml-bd198.FBX.metanml-bd198.lmo.mtlnml-bd198.lmo.mtl.metanml-bd198.lmo.objnml-bd198.lmo.obj.metanml-bd199-donghua.fbxnml-bd199-donghua.fbx.metanml-bd199.lmo.mtlnml-bd199.lmo.mtl.metanml-bd199.lmo.objnml-bd199.lmo.obj.metanml-bd200.FBXnml-bd200.FBX.metanml-bd200.lmo.mtlnml-bd200.lmo.mtl.metanml-bd200.lmo.objnml-bd200.lmo.obj.metanml-bd201.FBXnml-bd201.FBX.metanml-bd201.lmo.mtlnml-bd201.lmo.mtl.metanml-bd201.lmo.objnml-bd201.lmo.obj.metanml-bd202.FBXnml-bd202.FBX.metanml-bd202.lmo.mtlnml-bd202.lmo.mtl.metanml-bd202.lmo.objnml-bd202.lmo.obj.metanml-bd203.FBXnml-bd203.FBX.metanml-bd203.lmo.mtlnml-bd203.lmo.mtl.metanml-bd203.lmo.objnml-bd203.lmo.obj.metanml-bd204.FBXnml-bd204.FBX.metanml-bd204.lmo.mtlnml-bd204.lmo.mtl.metanml-bd204.lmo.objnml-bd204.lmo.obj.metanml-bd205.FBXnml-bd205.FBX.metanml-bd205.lmo.mtlnml-bd205.lmo.mtl.metanml-bd205.lmo.objnml-bd205.lmo.obj.metanml-bd206.FBXnml-bd206.FBX.metanml-bd206.lmo.mtlnml-bd206.lmo.mtl.metanml-bd206.lmo.objnml-bd206.lmo.obj.metanml-bd207.FBXnml-bd207.FBX.metanml-bd207.lmo.mtlnml-bd207.lmo.mtl.metanml-bd207.lmo.objnml-bd207.lmo.obj.metanml-bd208.FBXnml-bd208.FBX.metanml-bd208.lmo.mtlnml-bd208.lmo.mtl.metanml-bd208.lmo.objnml-bd208.lmo.obj.metanml-bd209.FBXnml-bd209.FBX.metanml-bd209.lmo.mtlnml-bd209.lmo.mtl.metanml-bd209.lmo.objnml-bd209.lmo.obj.metanml-bd210.FBXnml-bd210.FBX.metanml-bd210.lmo.mtlnml-bd210.lmo.mtl.metanml-bd210.lmo.objnml-bd210.lmo.obj.metanml-bd211.FBXnml-bd211.FBX.metanml-bd211.lmo.mtlnml-bd211.lmo.mtl.metanml-bd211.lmo.objnml-bd211.lmo.obj.metanml-bd212.FBXnml-bd212.FBX.metanml-bd212.lmo.mtlnml-bd212.lmo.mtl.metanml-bd212.lmo.objnml-bd212.lmo.obj.metanml-bd213.FBXnml-bd213.FBX.metanml-bd213.lmo.mtlnml-bd213.lmo.mtl.metanml-bd213.lmo.objnml-bd213.lmo.obj.metanml-bd214.FBXnml-bd214.FBX.metanml-bd214.lmo.mtlnml-bd214.lmo.mtl.metanml-bd214.lmo.objnml-bd214.lmo.obj.metanml-bd215.FBXnml-bd215.FBX.metanml-bd215.lmo.mtlnml-bd215.lmo.mtl.metanml-bd215.lmo.objnml-bd215.lmo.obj.metanml-bd216.FBXnml-bd216.FBX.metanml-bd216.lmo.mtlnml-bd216.lmo.mtl.metanml-bd216.lmo.objnml-bd216.lmo.obj.metanml-bd217.FBXnml-bd217.FBX.metanml-bd217.lmo.mtlnml-bd217.lmo.mtl.metanml-bd217.lmo.objnml-bd217.lmo.obj.metanml-bd218.FBXnml-bd218.FBX.metanml-bd218.lmo.mtlnml-bd218.lmo.mtl.metanml-bd218.lmo.objnml-bd218.lmo.obj.metanml-bd219.FBXnml-bd219.FBX.metanml-bd219.lmo.mtlnml-bd219.lmo.mtl.metanml-bd219.lmo.objnml-bd219.lmo.obj.metanml-bd220.FBXnml-bd220.FBX.metanml-bd220.lmo.mtlnml-bd220.lmo.mtl.metanml-bd220.lmo.objnml-bd220.lmo.obj.metanml-bd221.FBXnml-bd221.FBX.metanml-bd221.lmo.mtlnml-bd221.lmo.mtl.metanml-bd221.lmo.objnml-bd221.lmo.obj.metanml-bd222.FBXnml-bd222.FBX.metanml-bd222.lmo.mtlnml-bd222.lmo.mtl.metanml-bd222.lmo.objnml-bd222.lmo.obj.metanml_bd017.FBXnml_bd017.FBX.metanml_bd054_shizi mode.FBXnml_bd054_shizi mode.FBX.metanml_bd123-1.FBXnml_bd123-1.FBX.metanml_bd125-1.FBXnml_bd125-1.FBX.metanml_bd127-1.FBXnml_bd127-1.FBX.metanml_bd149.FBXnml_bd149.FBX.metanml_bd192.FBXnml_bd192.FBX.metanml_bd193.FBXnml_bd193.FBX.metanml_bd194.FBXnml_bd194.FBX.metanml_bd199.FBXnml_bd199.FBX.metasbm.lmo.mtlsbm.lmo.mtl.metasbm.lmo.objsbm.lmo.obj.metasky_bd01.lmo.mtlsky_bd01.lmo.mtl.metasky_bd01.lmo.objsky_bd01.lmo.obj.metasl-ba014-01-donghua.fbxsl-ba014-01-donghua.fbx.metasl-bd001-donghua.fbxsl-bd001-donghua.fbx.metasl-bd001.FBXsl-bd001.FBX.metasl-bd001.lmo.mtlsl-bd001.lmo.mtl.metasl-bd001.lmo.objsl-bd001.lmo.obj.metasl-bd003-donghua.fbxsl-bd003-donghua.fbx.metasl-bd003.FBXsl-bd003.FBX.metasl-bd003.lmo.mtlsl-bd003.lmo.mtl.metasl-bd003.lmo.objsl-bd003.lmo.obj.metasl-bd004-donghua.fbxsl-bd004-donghua.fbx.metasl-bd004.FBXsl-bd004.FBX.metasl-bd004.lmo.mtlsl-bd004.lmo.mtl.metasl-bd004.lmo.objsl-bd004.lmo.obj.metasl-bd005-donghua.fbxsl-bd005-donghua.fbx.metasl-bd005.FBXsl-bd005.FBX.metasl-bd005.lmo.mtlsl-bd005.lmo.mtl.metasl-bd005.lmo.objsl-bd005.lmo.obj.metasl-bd006.FBXsl-bd006.FBX.metasl-bd006.lmo.mtlsl-bd006.lmo.mtl.metasl-bd006.lmo.objsl-bd006.lmo.obj.metasl-bd007.FBXsl-bd007.FBX.metasl-bd007.lmo.mtlsl-bd007.lmo.mtl.metasl-bd007.lmo.objsl-bd007.lmo.obj.metasl-bd008.FBXsl-bd008.FBX.metasl-bd008.lmo.mtlsl-bd008.lmo.mtl.metasl-bd008.lmo.objsl-bd008.lmo.obj.metasl-bd009.FBXsl-bd009.FBX.metasl-bd009.lmo.mtlsl-bd009.lmo.mtl.metasl-bd009.lmo.objsl-bd009.lmo.obj.metasl-bd010.FBXsl-bd010.FBX.metasl-bd010.lmo.mtlsl-bd010.lmo.mtl.metasl-bd010.lmo.objsl-bd010.lmo.obj.metasl-bd011.FBXsl-bd011.FBX.metasl-bd011.lmo.mtlsl-bd011.lmo.mtl.metasl-bd011.lmo.objsl-bd011.lmo.obj.metasl-bd012.FBXsl-bd012.FBX.metasl-bd012.lmo.mtlsl-bd012.lmo.mtl.metasl-bd012.lmo.objsl-bd012.lmo.obj.metasl-bd013-donghua.fbxsl-bd013-donghua.fbx.metasl-bd013.FBXsl-bd013.FBX.metasl-bd013.lmo.mtlsl-bd013.lmo.mtl.metasl-bd013.lmo.objsl-bd013.lmo.obj.metasl-bd014-01.FBXsl-bd014-01.FBX.metasl-bd014-01.lmo.mtlsl-bd014-01.lmo.mtl.metasl-bd014-01.lmo.objsl-bd014-01.lmo.obj.metasl-bd014-02.FBXsl-bd014-02.FBX.metasl-bd014-02.lmo.mtlsl-bd014-02.lmo.mtl.metasl-bd014-02.lmo.objsl-bd014-02.lmo.obj.metasl-bd014-03.FBXsl-bd014-03.FBX.metasl-bd014-03.lmo.mtlsl-bd014-03.lmo.mtl.metasl-bd014-03.lmo.objsl-bd014-03.lmo.obj.metasl-bd014-04.FBXsl-bd014-04.FBX.metasl-bd014-04.lmo.mtlsl-bd014-04.lmo.mtl.metasl-bd014-04.lmo.objsl-bd014-04.lmo.obj.metasl-bd014-05.FBXsl-bd014-05.FBX.metasl-bd014-05.lmo.mtlsl-bd014-05.lmo.mtl.metasl-bd014-05.lmo.objsl-bd014-05.lmo.obj.metasl-bd015-donghua.fbxsl-bd015-donghua.fbx.metasl-bd015.FBXsl-bd015.FBX.metasl-bd015.lmo.mtlsl-bd015.lmo.mtl.metasl-bd015.lmo.objsl-bd015.lmo.obj.metasl-bd017-01.FBXsl-bd017-01.FBX.metasl-bd017-01.lmo.mtlsl-bd017-01.lmo.mtl.metasl-bd017-01.lmo.objsl-bd017-01.lmo.obj.metasl-bd017-02.FBXsl-bd017-02.FBX.metasl-bd017-02.lmo.mtlsl-bd017-02.lmo.mtl.metasl-bd017-02.lmo.objsl-bd017-02.lmo.obj.metasl-bd017-03.FBXsl-bd017-03.FBX.metasl-bd017-03.lmo.mtlsl-bd017-03.lmo.mtl.metasl-bd017-03.lmo.objsl-bd017-03.lmo.obj.metasl-bd019.FBXsl-bd019.FBX.metasl-bd019.lmo.mtlsl-bd019.lmo.mtl.metasl-bd019.lmo.objsl-bd019.lmo.obj.metasl-bd020-donghua.fbxsl-bd020-donghua.fbx.metasl-bd020.FBXsl-bd020.FBX.metasl-bd020.lmo.mtlsl-bd020.lmo.mtl.metasl-bd020.lmo.objsl-bd020.lmo.obj.metasl-bd021.FBXsl-bd021.FBX.metasl-bd021.lmo.mtlsl-bd021.lmo.mtl.metasl-bd021.lmo.objsl-bd021.lmo.obj.metasl-bd025.FBXsl-bd025.FBX.metasl-bd025.lmo.mtlsl-bd025.lmo.mtl.metasl-bd025.lmo.objsl-bd025.lmo.obj.metasl-bd026-01.FBXsl-bd026-01.FBX.metasl-bd026-01.lmo.mtlsl-bd026-01.lmo.mtl.metasl-bd026-01.lmo.objsl-bd026-01.lmo.obj.metasl-bd026-02.FBXsl-bd026-02.FBX.metasl-bd026-02.lmo.mtlsl-bd026-02.lmo.mtl.metasl-bd026-02.lmo.objsl-bd026-02.lmo.obj.metasl-bd026-03.FBXsl-bd026-03.FBX.metasl-bd026-03.lmo.mtlsl-bd026-03.lmo.mtl.metasl-bd026-03.lmo.objsl-bd026-03.lmo.obj.metasl-bd026-04.FBXsl-bd026-04.FBX.metasl-bd026-04.lmo.mtlsl-bd026-04.lmo.mtl.metasl-bd026-04.lmo.objsl-bd026-04.lmo.obj.metasl-bd026-05.FBXsl-bd026-05.FBX.metasl-bd026-05.lmo.mtlsl-bd026-05.lmo.mtl.metasl-bd026-05.lmo.objsl-bd026-05.lmo.obj.metasl-bd026-06.FBXsl-bd026-06.FBX.metasl-bd026-06.lmo.mtlsl-bd026-06.lmo.mtl.metasl-bd026-06.lmo.objsl-bd026-06.lmo.obj.metasl-bd026-07.FBXsl-bd026-07.FBX.metasl-bd026-07.lmo.mtlsl-bd026-07.lmo.mtl.metasl-bd026-07.lmo.objsl-bd026-07.lmo.obj.metasl-bd026-08.FBXsl-bd026-08.FBX.metasl-bd026-08.lmo.mtlsl-bd026-08.lmo.mtl.metasl-bd026-08.lmo.objsl-bd026-08.lmo.obj.metasl-bd026-09.FBXsl-bd026-09.FBX.metasl-bd026-09.lmo.mtlsl-bd026-09.lmo.mtl.metasl-bd026-09.lmo.objsl-bd026-09.lmo.obj.metasl-bd028-01.FBXsl-bd028-01.FBX.metasl-bd028-01.lmo.mtlsl-bd028-01.lmo.mtl.metasl-bd028-01.lmo.objsl-bd028-01.lmo.obj.metasl-bd028-02.FBXsl-bd028-02.FBX.metasl-bd028-02.lmo.mtlsl-bd028-02.lmo.mtl.metasl-bd028-02.lmo.objsl-bd028-02.lmo.obj.metasl-bd028-03.FBXsl-bd028-03.FBX.metasl-bd028-03.lmo.mtlsl-bd028-03.lmo.mtl.metasl-bd028-03.lmo.objsl-bd028-03.lmo.obj.metasl-bd028-04.FBXsl-bd028-04.FBX.metasl-bd028-04.lmo.mtlsl-bd028-04.lmo.mtl.metasl-bd028-04.lmo.objsl-bd028-04.lmo.obj.metasl-bd030.FBXsl-bd030.FBX.metasl-bd030.lmo.mtlsl-bd030.lmo.mtl.metasl-bd030.lmo.objsl-bd030.lmo.obj.metasl-bd031.FBXsl-bd031.FBX.metasl-bd031.lmo.mtlsl-bd031.lmo.mtl.metasl-bd031.lmo.objsl-bd031.lmo.obj.metasl-bd032-01.FBXsl-bd032-01.FBX.metasl-bd032-01.lmo.mtlsl-bd032-01.lmo.mtl.metasl-bd032-01.lmo.objsl-bd032-01.lmo.obj.metasl-bd032-02.FBXsl-bd032-02.FBX.metasl-bd032-02.lmo.mtlsl-bd032-02.lmo.mtl.metasl-bd032-02.lmo.objsl-bd032-02.lmo.obj.metasl-bd032-03.FBXsl-bd032-03.FBX.metasl-bd032-03.lmo.mtlsl-bd032-03.lmo.mtl.metasl-bd032-03.lmo.objsl-bd032-03.lmo.obj.metasl-bd032.FBXsl-bd032.FBX.metasl-bd032.lmo.mtlsl-bd032.lmo.mtl.metasl-bd032.lmo.objsl-bd032.lmo.obj.metasl-bd033.FBXsl-bd033.FBX.metasl-bd033.lmo.mtlsl-bd033.lmo.mtl.metasl-bd033.lmo.objsl-bd033.lmo.obj.metasl-bd034.FBXsl-bd034.FBX.metasl-bd034.lmo.mtlsl-bd034.lmo.mtl.metasl-bd034.lmo.objsl-bd034.lmo.obj.metasl-bd035.FBXsl-bd035.FBX.metasl-bd035.lmo.mtlsl-bd035.lmo.mtl.metasl-bd035.lmo.objsl-bd035.lmo.obj.metasl-bd036.FBXsl-bd036.FBX.metasl-bd036.lmo.mtlsl-bd036.lmo.mtl.metasl-bd036.lmo.objsl-bd036.lmo.obj.metasl-bd037.FBXsl-bd037.FBX.metasl-bd037.lmo.mtlsl-bd037.lmo.mtl.metasl-bd037.lmo.objsl-bd037.lmo.obj.metasl-bd038.FBXsl-bd038.FBX.metasl-bd038.lmo.mtlsl-bd038.lmo.mtl.metasl-bd038.lmo.objsl-bd038.lmo.obj.metasl-bd039.FBXsl-bd039.FBX.metasl-bd039.lmo.mtlsl-bd039.lmo.mtl.metasl-bd039.lmo.objsl-bd039.lmo.obj.metasl-bd040.FBXsl-bd040.FBX.metasl-bd040.lmo.mtlsl-bd040.lmo.mtl.metasl-bd040.lmo.objsl-bd040.lmo.obj.metasl-bd041.FBXsl-bd041.FBX.metasl-bd041.lmo.mtlsl-bd041.lmo.mtl.metasl-bd041.lmo.objsl-bd041.lmo.obj.metasl-bd042.FBXsl-bd042.FBX.metasl-bd042.lmo.mtlsl-bd042.lmo.mtl.metasl-bd042.lmo.objsl-bd042.lmo.obj.metasl-bd043-donghua.fbxsl-bd043-donghua.fbx.metasl-bd043.FBXsl-bd043.FBX.metasl-bd043.lmo.mtlsl-bd043.lmo.mtl.metasl-bd043.lmo.objsl-bd043.lmo.obj.metasl-bd044-donghua.fbxsl-bd044-donghua.fbx.metasl-bd044.FBXsl-bd044.FBX.metasl-bd044.lmo.mtlsl-bd044.lmo.mtl.metasl-bd044.lmo.objsl-bd044.lmo.obj.metasw_louti.lmo.mtlsw_louti.lmo.mtl.metasw_louti.lmo.objsw_louti.lmo.obj.metasw_louti2.lmo.mtlsw_louti2.lmo.mtl.metasw_louti2.lmo.objsw_louti2.lmo.obj.metasw_ta.lmo.mtlsw_ta.lmo.mtl.metasw_ta.lmo.objsw_ta.lmo.obj.metasw_weiqiang.lmo.mtlsw_weiqiang.lmo.mtl.metasw_weiqiang.lmo.objsw_weiqiang.lmo.obj.metasw_yabian.lmo.mtlsw_yabian.lmo.mtl.metasw_yabian.lmo.objsw_yabian.lmo.obj.metatsrj_bataiguizi.lmo.mtltsrj_bataiguizi.lmo.mtl.metatsrj_bataiguizi.lmo.objtsrj_bataiguizi.lmo.obj.metatsrj_bataizhuozi.lmo.mtltsrj_bataizhuozi.lmo.mtl.metatsrj_bataizhuozi.lmo.objtsrj_bataizhuozi.lmo.obj.metatsrj_caideng.lmo.mtltsrj_caideng.lmo.mtl.metatsrj_caideng.lmo.objtsrj_caideng.lmo.obj.metatsrj_caidengpian.lmo.mtltsrj_caidengpian.lmo.mtl.metatsrj_caidengpian.lmo.objtsrj_caidengpian.lmo.obj.metatsrj_caidengpian1.lmo.mtltsrj_caidengpian1.lmo.mtl.metatsrj_caidengpian1.lmo.objtsrj_caidengpian1.lmo.obj.metatsrj_caidengpian1x.lmo.mtltsrj_caidengpian1x.lmo.mtl.metatsrj_caidengpian1x.lmo.objtsrj_caidengpian1x.lmo.obj.metatsrj_caidengpian2.lmo.mtltsrj_caidengpian2.lmo.mtl.metatsrj_caidengpian2.lmo.objtsrj_caidengpian2.lmo.obj.metatsrj_caidengpian2x.lmo.mtltsrj_caidengpian2x.lmo.mtl.metatsrj_caidengpian2x.lmo.objtsrj_caidengpian2x.lmo.obj.metatsrj_caidengpian3.lmo.mtltsrj_caidengpian3.lmo.mtl.metatsrj_caidengpian3.lmo.objtsrj_caidengpian3.lmo.obj.metatsrj_caidengpian3x.lmo.mtltsrj_caidengpian3x.lmo.mtl.metatsrj_caidengpian3x.lmo.objtsrj_caidengpian3x.lmo.obj.metatsrj_caidengpian4.lmo.mtltsrj_caidengpian4.lmo.mtl.metatsrj_caidengpian4.lmo.objtsrj_caidengpian4.lmo.obj.metatsrj_caidengpian4x.lmo.mtltsrj_caidengpian4x.lmo.mtl.metatsrj_caidengpian4x.lmo.objtsrj_caidengpian4x.lmo.obj.metatsrj_guopen01.lmo.mtltsrj_guopen01.lmo.mtl.metatsrj_guopen01.lmo.objtsrj_guopen01.lmo.obj.metatsrj_guopen02.lmo.mtltsrj_guopen02.lmo.mtl.metatsrj_guopen02.lmo.objtsrj_guopen02.lmo.obj.metatsrj_jiuping01.lmo.mtltsrj_jiuping01.lmo.mtl.metatsrj_jiuping01.lmo.objtsrj_jiuping01.lmo.obj.metatsrj_jiuping02.lmo.mtltsrj_jiuping02.lmo.mtl.metatsrj_jiuping02.lmo.objtsrj_jiuping02.lmo.obj.metatsrj_jiuping03.lmo.mtltsrj_jiuping03.lmo.mtl.metatsrj_jiuping03.lmo.objtsrj_jiuping03.lmo.obj.metatsrj_make.lmo.mtltsrj_make.lmo.mtl.metatsrj_make.lmo.objtsrj_make.lmo.obj.metatsrj_wjbayi01.lmo.mtltsrj_wjbayi01.lmo.mtl.metatsrj_wjbayi01.lmo.objtsrj_wjbayi01.lmo.obj.metatsrj_yinxiang.lmo.mtltsrj_yinxiang.lmo.mtl.metatsrj_yinxiang.lmo.objtsrj_yinxiang.lmo.obj.metawjchaji001.lmo.mtlwjchaji001.lmo.mtl.metawjchaji001.lmo.objwjchaji001.lmo.obj.metawjditanq001.lmo.mtlwjditanq001.lmo.mtl.metawjditanq001.lmo.objwjditanq001.lmo.obj.metawjfangzhuo001.lmo.mtlwjfangzhuo001.lmo.mtl.metawjfangzhuo001.lmo.objwjfangzhuo001.lmo.obj.metawjhuaq001.lmo.mtlwjhuaq001.lmo.mtl.metawjhuaq001.lmo.objwjhuaq001.lmo.obj.metawjhuaq002.lmo.mtlwjhuaq002.lmo.mtl.metawjhuaq002.lmo.objwjhuaq002.lmo.obj.metawjhuaq003.lmo.mtlwjhuaq003.lmo.mtl.metawjhuaq003.lmo.objwjhuaq003.lmo.obj.metawjhuaq004.lmo.mtlwjhuaq004.lmo.mtl.metawjhuaq004.lmo.objwjhuaq004.lmo.obj.metawjqiangtiq001.lmo.mtlwjqiangtiq001.lmo.mtl.metawjqiangtiq001.lmo.objwjqiangtiq001.lmo.obj.metawjqiangtiq002.lmo.mtlwjqiangtiq002.lmo.mtl.metawjqiangtiq002.lmo.objwjqiangtiq002.lmo.obj.metawjqiangtiq003.lmo.mtlwjqiangtiq003.lmo.mtl.metawjqiangtiq003.lmo.objwjqiangtiq003.lmo.obj.metawjqiangtiq004.lmo.mtlwjqiangtiq004.lmo.mtl.metawjqiangtiq004.lmo.objwjqiangtiq004.lmo.obj.metawjqiangtiq005.lmo.mtlwjqiangtiq005.lmo.mtl.metawjqiangtiq005.lmo.objwjqiangtiq005.lmo.obj.metawjshafa001.lmo.mtlwjshafa001.lmo.mtl.metawjshafa001.lmo.objwjshafa001.lmo.obj.metawjshafa002.lmo.mtlwjshafa002.lmo.mtl.metawjshafa002.lmo.objwjshafa002.lmo.obj.metawjshafa003.lmo.mtlwjshafa003.lmo.mtl.metawjshafa003.lmo.objwjshafa003.lmo.obj.metawjwutai001.lmo.mtlwjwutai001.lmo.mtl.metawjwutai001.lmo.objwjwutai001.lmo.obj.metawjwutai002.lmo.mtlwjwutai002.lmo.mtl.metawjwutai002.lmo.objwjwutai002.lmo.obj.metawjwutai003.lmo.mtlwjwutai003.lmo.mtl.metawjwutai003.lmo.objwjwutai003.lmo.obj.metawjwutai004.lmo.mtlwjwutai004.lmo.mtl.metawjwutai004.lmo.objwjwutai004.lmo.obj.metawjwutai005.lmo.mtlwjwutai005.lmo.mtl.metawjwutai005.lmo.objwjwutai005.lmo.obj.metawjwutai006.lmo.mtlwjwutai006.lmo.mtl.metawjwutai006.lmo.objwjwutai006.lmo.obj.metawjyizi001.lmo.mtlwjyizi001.lmo.mtl.metawjyizi001.lmo.objwjyizi001.lmo.obj.metawjzhuozi001.lmo.mtlwjzhuozi001.lmo.mtl.metawjzhuozi001.lmo.objwjzhuozi001.lmo.obj.metawjzhuziq001.lmo.mtlwjzhuziq001.lmo.mtl.metawjzhuziq001.lmo.objwjzhuziq001.lmo.obj.metaxmas_caidai.lmo.mtlxmas_caidai.lmo.mtl.metaxmas_caidai.lmo.objxmas_caidai.lmo.obj.metaxmas_henban.lmo.mtlxmas_henban.lmo.mtl.metaxmas_henban.lmo.objxmas_henban.lmo.obj.metaxmas_hengfu.lmo.mtlxmas_hengfu.lmo.mtl.metaxmas_hengfu.lmo.objxmas_hengfu.lmo.obj.metays_ditan.lmo.mtlys_ditan.lmo.mtl.metays_ditan.lmo.objys_ditan.lmo.obj.metays_jiaotang.lmo.mtlys_jiaotang.lmo.mtl.metays_jiaotang.lmo.objys_jiaotang.lmo.obj.metayu_bd01.lmo.mtlyu_bd01.lmo.mtl.metayu_bd01.lmo.objyu_bd01.lmo.obj.metayyyy001.lmo.mtlyyyy001.lmo.mtl.metayyyy001.lmo.objyyyy001.lmo.obj.metayyyy002.lmo.mtlyyyy002.lmo.mtl.metayyyy002.lmo.objyyyy002.lmo.obj.metayyyy003.lmo.mtlyyyy003.lmo.mtl.metayyyy003.lmo.objyyyy003.lmo.obj.metayyyy004.lmo.mtlyyyy004.lmo.mtl.metayyyy004.lmo.objyyyy004.lmo.obj.metayyyy005.lmo.mtlyyyy005.lmo.mtl.metayyyy005.lmo.objyyyy005.lmo.obj.metayyyy006.lmo.mtlyyyy006.lmo.mtl.metayyyy006.lmo.objyyyy006.lmo.obj.metayyyy007.lmo.mtlyyyy007.lmo.mtl.metayyyy007.lmo.objyyyy007.lmo.obj.metayyyy080.lmo.mtlyyyy080.lmo.mtl.metayyyy080.lmo.objyyyy080.lmo.obj.meta
MonoKopTest_maskNo_0_0.pngMonoKopTest_maskNo_0_0.png.metaMonoKopTest_texNo_0_0.pngMonoKopTest_texNo_0_0.png.metaTerrainGenerator_maskNo_0_0.pngTerrainGenerator_maskNo_0_0.png.metaTerrainGenerator_texNo_0_0.pngTerrainGenerator_texNo_0_0.png.metaTerrainInfo.txtTerrainInfo.txt.metaTextures.meta
Textures
Scene.meta
Scene
0001_01.png0001_01.png.meta010003.png010003.png.meta010004.png010004.png.meta010010.png010010.png.meta010025.png010025.png.meta010026.png010026.png.meta010079.png010079.png.meta010080.png010080.png.meta0100801.png0100801.png.meta010095.png010095.png.meta010096.png010096.png.meta010170.png010170.png.meta010171.png010171.png.meta010172.png010172.png.meta010185.png010185.png.meta010187.png010187.png.meta010193.png010193.png.meta010233.png010233.png.meta010257.png010257.png.meta010258.png010258.png.meta010259.png010259.png.meta010260.png010260.png.meta010261.png010261.png.meta010263.png010263.png.meta010271.png010271.png.meta010272.png010272.png.meta010273.png010273.png.meta010274.png010274.png.meta010275.png010275.png.meta010276.png010276.png.meta010277.png010277.png.meta010279-2.png010279-2.png.meta010306.png010306.png.meta010307.png010307.png.meta01nml-bd202_01.png01nml-bd202_01.png.meta01nml-bd204_01.png01nml-bd204_01.png.meta020003.png020003.png.meta020004.png020004.png.meta020005.png020005.png.meta020007.png020007.png.meta020008.png020008.png.meta020012.png020012.png.meta020013.png020013.png.meta020025.png020025.png.meta020026.png020026.png.meta020027.png020027.png.meta020028.png020028.png.meta020029.png020029.png.meta020040.png020040.png.meta020041.png020041.png.meta020042.png020042.png.meta020043.png020043.png.meta020044.png020044.png.meta020045.png020045.png.meta020046.png020046.png.meta020048.png020048.png.meta020057-2.png020057-2.png.meta020057.png020057.png.meta020058.png020058.png.meta020059.png020059.png.meta020060.png020060.png.meta020061.png020061.png.meta020062.png020062.png.meta020064.png020064.png.meta020070.png020070.png.meta020073.png020073.png.meta020074-1.png020074-1.png.meta020074.png020074.png.meta020076.png020076.png.meta020077.png020077.png.meta020078.png020078.png.meta020081.png020081.png.meta020082.png020082.png.meta020089.png020089.png.meta020090.png020090.png.meta020093.png020093.png.meta020094.png020094.png.meta020095.png020095.png.meta020096.png020096.png.meta020097.png020097.png.meta020098.png020098.png.meta020099.png020099.png.meta020100.png020100.png.meta020101.png020101.png.meta020106.png020106.png.meta020109.png020109.png.meta020116.png020116.png.meta020119.png020119.png.meta020120.png020120.png.meta020121.png020121.png.meta020122.png020122.png.meta020125.png020125.png.meta020126.png020126.png.meta020129.png020129.png.meta020131.png020131.png.meta020133.png020133.png.meta020134.png020134.png.meta020135.png020135.png.meta020136.png020136.png.meta020137.png020137.png.meta020138.png020138.png.meta020141.png020141.png.meta020149.png020149.png.meta020155.png020155.png.meta020156.png020156.png.meta020159.png020159.png.meta020160.png020160.png.meta020161.png020161.png.meta020162.png020162.png.meta020164.png020164.png.meta020165.png020165.png.meta020166.png020166.png.meta020167.png020167.png.meta020176.png020176.png.meta020191.png020191.png.meta020192.png020192.png.meta020193.png020193.png.meta020194.png020194.png.meta020202.png020202.png.meta020203.png020203.png.meta020204.png020204.png.meta020205.png020205.png.meta020206.png020206.png.meta020207.png020207.png.meta020212.png020212.png.meta020213.png020213.png.meta020214.png020214.png.meta020215.png020215.png.meta020216.png020216.png.meta020217.png020217.png.meta020218.png020218.png.meta020219.png020219.png.meta020220.png020220.png.meta020221.png020221.png.meta020222.png020222.png.meta020225.png020225.png.meta020226.png020226.png.meta020228.png020228.png.meta020229.png020229.png.meta020230.png020230.png.meta020231.png020231.png.meta020232.png020232.png.meta020236.png020236.png.meta020242.png020242.png.meta020243.png020243.png.meta020244.png020244.png.meta020245.png020245.png.meta020247.png020247.png.meta020250.png020250.png.meta020251.png020251.png.meta020252.png020252.png.meta020253.png020253.png.meta020254.png020254.png.meta020255.png020255.png.meta020258.png020258.png.meta02mf-bd01_010.png02mf-bd01_010.png.meta02mf-bd01_011.png02mf-bd01_011.png.meta02mf-bd01_01a.png02mf-bd01_01a.png.meta02mf-bd01_02.png02mf-bd01_02.png.meta02mf-bd01_04.png02mf-bd01_04.png.meta02mf-bd01_05.png02mf-bd01_05.png.meta02mf-bd01_06.png02mf-bd01_06.png.meta02mf-bd01_07.png02mf-bd01_07.png.meta07hdw_hualanbai.png07hdw_hualanbai.png.meta576e5e4e535ac_610.jpg576e5e4e535ac_610.jpg.metaIt-bd007.pngIt-bd007.png.metaIt-bd009.pngIt-bd009.png.metaIt-bd012.pngIt-bd012.png.metaIt-bd015.pngIt-bd015.png.metaIt-bd016.pngIt-bd016.png.metaIt-bd018-01.pngIt-bd018-01.png.metaIt-bd018-02.pngIt-bd018-02.png.metaIt-bd018-05.pngIt-bd018-05.png.metaIt-bd018-11.pngIt-bd018-11.png.metaIt-bd025-01.pngIt-bd025-01.png.metaIt-bd025-02.pngIt-bd025-02.png.metaIt-bd025-03.pngIt-bd025-03.png.metaba016-1.pngba016-1.png.metabd.pngbd.png.metabd003-1.pngbd003-1.png.metabd017-1.pngbd017-1.png.metabd018-1.pngbd018-1.png.metabl-bd001.pngbl-bd001.png.metabl-bd002.pngbl-bd002.png.metabl-bd003.pngbl-bd003.png.metabl-bd004.pngbl-bd004.png.metabl-bd005-01.pngbl-bd005-01.png.metabl-bd005-02.pngbl-bd005-02.png.metabl-bd005-03.pngbl-bd005-03.png.metabl-bd006.pngbl-bd006.png.metabl-bd007.pngbl-bd007.png.metabl-bd008-02.pngbl-bd008-02.png.metabl-bd008-04.pngbl-bd008-04.png.metabl-bd009.pngbl-bd009.png.metabl-bd010.pngbl-bd010.png.metabl-bd011.pngbl-bd011.png.metabl-bd012.pngbl-bd012.png.metabl-bd013.pngbl-bd013.png.metabl-bd017.pngbl-bd017.png.metabl-bd018.pngbl-bd018.png.metabl-bd019.pngbl-bd019.png.metabl-bd020.pngbl-bd020.png.metabl-bd021_01.pngbl-bd021_01.png.metabl-bd021_02.pngbl-bd021_02.png.metabl_bd014.pngbl_bd014.png.metabl_bd015.pngbl_bd015.png.metabl_bd016.pngbl_bd016.png.metaby-bd001.pngby-bd001.png.metaby-bd005.fbm.pngby-bd005.fbm.png.metaby-bd008.pngby-bd008.png.metaby-bd009.pngby-bd009.png.metaby-bd010-1.pngby-bd010-1.png.metaby-bd013-1.pngby-bd013-1.png.metaby-bd014-5.pngby-bd014-5.png.metaby-bd014-6.pngby-bd014-6.png.metaby-bd014-8.pngby-bd014-8.png.metaby-bd015.pngby-bd015.png.metaby-bd019.pngby-bd019.png.metaby-bd020.pngby-bd020.png.metaby-bd022.pngby-bd022.png.metaby-bd023.pngby-bd023.png.metaby-bd024.pngby-bd024.png.metaby-bd029.pngby-bd029.png.metaby-bd030.pngby-bd030.png.metaby-bd031.pngby-bd031.png.metaby-bd035.pngby-bd035.png.metaby-bd039.pngby-bd039.png.metaby-bd040.pngby-bd040.png.metaby-bd045.pngby-bd045.png.metaby-bd046.pngby-bd046.png.metaby_bd002.pngby_bd002.png.metaby_bd004.pngby_bd004.png.metaby_bd007.pngby_bd007.png.metaby_bd010.pngby_bd010.png.metaby_bd011.pngby_bd011.png.metaby_bd027.pngby_bd027.png.metaby_bd041.pngby_bd041.png.metaby_bd047.pngby_bd047.png.metacc-bd001.pngcc-bd001.png.metacc-bd002.pngcc-bd002.png.metacc-bd003.pngcc-bd003.png.metacc-bd004.pngcc-bd004.png.metacc-bd005.pngcc-bd005.png.metacc-bd006.pngcc-bd006.png.metacc-bd007.pngcc-bd007.png.metacc-bd008.pngcc-bd008.png.metacc-bd009.pngcc-bd009.png.metacc-bd010.pngcc-bd010.png.metacc-bd011.pngcc-bd011.png.metacc-bd012.pngcc-bd012.png.metacc-bd014.pngcc-bd014.png.metacc-bd015.pngcc-bd015.png.metacc-bd016.pngcc-bd016.png.metacc-bd017.pngcc-bd017.png.metacc-bd018.pngcc-bd018.png.metacc-bd019.pngcc-bd019.png.metacc-bd020.pngcc-bd020.png.metacc-bd021.pngcc-bd021.png.metacc-bd022.pngcc-bd022.png.metacc-bd023.pngcc-bd023.png.metacc-bd024.pngcc-bd024.png.metacc-bd025.pngcc-bd025.png.metacc-bd026.pngcc-bd026.png.metacc-bd027.pngcc-bd027.png.metacc-bd028.pngcc-bd028.png.metacc-bd029.pngcc-bd029.png.metacc-bd030.pngcc-bd030.png.metacc-bd031.pngcc-bd031.png.metacc-bd032.pngcc-bd032.png.metacc-bd033.pngcc-bd033.png.metacc-bd034.pngcc-bd034.png.metacc-bd035.pngcc-bd035.png.metacc-bd036.pngcc-bd036.png.metacc-bd037.pngcc-bd037.png.metacc-bd038.pngcc-bd038.png.metacc-bd039.pngcc-bd039.png.metacc-bd040.pngcc-bd040.png.metacc-bd041.pngcc-bd041.png.metacc-bd042.pngcc-bd042.png.metacc-bd043.pngcc-bd043.png.metacc-bd044.pngcc-bd044.png.metacc-bd045.pngcc-bd045.png.metacc-bd046.pngcc-bd046.png.metacc-bd047.pngcc-bd047.png.metacc-bd049.pngcc-bd049.png.metacc-bd050.pngcc-bd050.png.metacc-bd051.pngcc-bd051.png.metacc-bd052.pngcc-bd052.png.metacc-bd053.pngcc-bd053.png.metacc-bd054.pngcc-bd054.png.metacc-bd055.pngcc-bd055.png.metacc-bd056.pngcc-bd056.png.metacc-bd057.pngcc-bd057.png.metacc-bd058.pngcc-bd058.png.metacc-bd059.pngcc-bd059.png.metacc-bd060.pngcc-bd060.png.metacc-bd061.pngcc-bd061.png.metacc-bd062.pngcc-bd062.png.metacc-bd063.pngcc-bd063.png.metacc-bd064.pngcc-bd064.png.metacc-bd065.pngcc-bd065.png.metacc-bd066.pngcc-bd066.png.metacc-bd067.pngcc-bd067.png.metacc-bd068.pngcc-bd068.png.metacc-bd069.pngcc-bd069.png.metacc-bd071.pngcc-bd071.png.metacc-bd072.pngcc-bd072.png.metacc-bd073.pngcc-bd073.png.metacc-bd074.pngcc-bd074.png.metacc-bd075.pngcc-bd075.png.metacc-bd077.pngcc-bd077.png.metacc-bddxsdrk.pngcc-bddxsdrk.png.metacc-bdhq.pngcc-bdhq.png.metacc_bd013.pngcc_bd013.png.metaeff0042.pngeff0042.png.metahlcx-rk.pnghlcx-rk.png.metals_bd001.pngls_bd001.png.metals_bd002.pngls_bd002.png.metals_bd004.pngls_bd004.png.metals_bd008.pngls_bd008.png.metals_bd009.pngls_bd009.png.metalt-bd001-01.pnglt-bd001-01.png.metalt-bd001-02.pnglt-bd001-02.png.metalt-bd002.pnglt-bd002.png.metalt-bd005.pnglt-bd005.png.metalt-bd011.pnglt-bd011.png.metalt-bd014.pnglt-bd014.png.metalt-bd018-03.pnglt-bd018-03.png.metalt-bd018-03_shizi.pnglt-bd018-03_shizi.png.metalt-bd018-04.pnglt-bd018-04.png.metalt-bd018-06.pnglt-bd018-06.png.metalt-bd018-07.pnglt-bd018-07.png.metalt-bd018-08.pnglt-bd018-08.png.metalt-bd018-09.pnglt-bd018-09.png.metalt-bd018-10.pnglt-bd018-10.png.metalt-bd022.pnglt-bd022.png.metalt-bd025-04.pnglt-bd025-04.png.metalt-bd025-05.pnglt-bd025-05.png.metalt-bd025-06.pnglt-bd025-06.png.metalt-bd025-07.pnglt-bd025-07.png.metalt-bd025-08.pnglt-bd025-08.png.metalt-bd025-09.pnglt-bd025-09.png.metalt-bd026.pnglt-bd026.png.metalt-bd028.pnglt-bd028.png.metalt-bd029.pnglt-bd029.png.metalt-bd030.pnglt-bd030.png.metalt-bd033.pnglt-bd033.png.metalt-bd034.pnglt-bd034.png.metalt-bd035.pnglt-bd035.png.metalt-bd036-01.pnglt-bd036-01.png.metalt-bd036-02-2.pnglt-bd036-02-2.png.metalt-bd036-02.pnglt-bd036-02.png.metalt-bd036-03.pnglt-bd036-03.png.metalt-bd039.pnglt-bd039.png.metalt_bd022_0.pnglt_bd022_0.png.metamz-bd005.pngmz-bd005.png.metamz-bd028.pngmz-bd028.png.metamz_bd026.pngmz_bd026.png.metamz_bd027.pngmz_bd027.png.metamz_bd029.pngmz_bd029.png.metamz_bd030_1.pngmz_bd030_1.png.metamz_bd030_2.pngmz_bd030_2.png.metanml-bd006.pngnml-bd006.png.metanml-bd007.pngnml-bd007.png.metanml-bd0216.pngnml-bd0216.png.metanml-bd028.pngnml-bd028.png.metanml-bd029.pngnml-bd029.png.metanml-bd038.pngnml-bd038.png.metanml-bd039.pngnml-bd039.png.metanml-bd040.pngnml-bd040.png.metanml-bd045.pngnml-bd045.png.metanml-bd047.pngnml-bd047.png.metanml-bd050.pngnml-bd050.png.metanml-bd050_shizi.pngnml-bd050_shizi.png.metanml-bd051.pngnml-bd051.png.metanml-bd054_shizi.pngnml-bd054_shizi.png.metanml-bd055_shizi.pngnml-bd055_shizi.png.metanml-bd058.pngnml-bd058.png.metanml-bd059.pngnml-bd059.png.metanml-bd059_shizi.pngnml-bd059_shizi.png.metanml-bd061_01.pngnml-bd061_01.png.metanml-bd061_02.pngnml-bd061_02.png.metanml-bd061_03.pngnml-bd061_03.png.metanml-bd062_shizi.pngnml-bd062_shizi.png.metanml-bd063.pngnml-bd063.png.metanml-bd063_shizi.pngnml-bd063_shizi.png.metanml-bd064.pngnml-bd064.png.metanml-bd064_shizi.pngnml-bd064_shizi.png.metanml-bd065.pngnml-bd065.png.metanml-bd065_shizi.pngnml-bd065_shizi.png.metanml-bd066.pngnml-bd066.png.metanml-bd066_shizi.pngnml-bd066_shizi.png.metanml-bd067.pngnml-bd067.png.metanml-bd069.pngnml-bd069.png.metanml-bd073_01.pngnml-bd073_01.png.metanml-bd073_02.pngnml-bd073_02.png.metanml-bd073_03.pngnml-bd073_03.png.metanml-bd082.pngnml-bd082.png.metanml-bd082_shizi.pngnml-bd082_shizi.png.metanml-bd083.pngnml-bd083.png.metanml-bd089.pngnml-bd089.png.metanml-bd096.pngnml-bd096.png.metanml-bd101.pngnml-bd101.png.metanml-bd117.pngnml-bd117.png.metanml-bd117_shizi.pngnml-bd117_shizi.png.metanml-bd118.pngnml-bd118.png.metanml-bd119_shizi.pngnml-bd119_shizi.png.metanml-bd121.pngnml-bd121.png.metanml-bd126.pngnml-bd126.png.metanml-bd128.pngnml-bd128.png.metanml-bd131.pngnml-bd131.png.metanml-bd132.pngnml-bd132.png.metanml-bd133.pngnml-bd133.png.metanml-bd134.pngnml-bd134.png.metanml-bd135.pngnml-bd135.png.metanml-bd136.pngnml-bd136.png.metanml-bd137.pngnml-bd137.png.metanml-bd145.pngnml-bd145.png.metanml-bd146.pngnml-bd146.png.metanml-bd147.pngnml-bd147.png.metanml-bd151_01.pngnml-bd151_01.png.metanml-bd151_02.pngnml-bd151_02.png.metanml-bd151_03.pngnml-bd151_03.png.metanml-bd152_01.pngnml-bd152_01.png.metanml-bd152_02.pngnml-bd152_02.png.metanml-bd154.pngnml-bd154.png.metanml-bd157.pngnml-bd157.png.metanml-bd158.pngnml-bd158.png.metanml-bd159.pngnml-bd159.png.metanml-bd165.pngnml-bd165.png.metanml-bd169.pngnml-bd169.png.metanml-bd173.pngnml-bd173.png.metanml-bd174.pngnml-bd174.png.metanml-bd182.pngnml-bd182.png.metanml-bd182_shizi.pngnml-bd182_shizi.png.metanml-bd183.pngnml-bd183.png.metanml-bd185.pngnml-bd185.png.metanml-bd186.pngnml-bd186.png.metanml-bd188.pngnml-bd188.png.metanml-bd189_01.pngnml-bd189_01.png.metanml-bd189_02.pngnml-bd189_02.png.metanml-bd189_03.pngnml-bd189_03.png.metanml-bd189_04.pngnml-bd189_04.png.metanml-bd190_01.pngnml-bd190_01.png.metanml-bd190_02.pngnml-bd190_02.png.metanml-bd190_03.pngnml-bd190_03.png.metanml-bd190_04.pngnml-bd190_04.png.metanml-bd191_01.pngnml-bd191_01.png.metanml-bd191_02.pngnml-bd191_02.png.metanml-bd191_04.pngnml-bd191_04.png.metanml-bd195.pngnml-bd195.png.metanml_bd013.pngnml_bd013.png.metanml_bd014.pngnml_bd014.png.metanml_bd015.pngnml_bd015.png.metanml_bd017_01.pngnml_bd017_01.png.metanml_bd017_02.pngnml_bd017_02.png.metanml_bd018.pngnml_bd018.png.metanml_bd019.pngnml_bd019.png.metanml_bd020.pngnml_bd020.png.metanml_bd021.pngnml_bd021.png.metanml_bd027_01.pngnml_bd027_01.png.metanml_bd027_02.pngnml_bd027_02.png.metanml_bd027_03.pngnml_bd027_03.png.metanml_bd030.pngnml_bd030.png.metanml_bd053.pngnml_bd053.png.metanml_bd062_01.pngnml_bd062_01.png.metanml_bd062_02.pngnml_bd062_02.png.metanml_bd062_03.pngnml_bd062_03.png.metanml_bd071.pngnml_bd071.png.metanml_bd072.pngnml_bd072.png.metanml_bd087_01.pngnml_bd087_01.png.metanml_bd087_02.pngnml_bd087_02.png.metanml_bd088_01.pngnml_bd088_01.png.metanml_bd088_02.pngnml_bd088_02.png.metanml_bd098.pngnml_bd098.png.metanml_bd099.pngnml_bd099.png.metanml_bd107.pngnml_bd107.png.metanml_bd110.pngnml_bd110.png.metanml_bd122_01.pngnml_bd122_01.png.metanml_bd122_02.pngnml_bd122_02.png.metanml_bd122_03.pngnml_bd122_03.png.metanml_bd123_01.pngnml_bd123_01.png.metanml_bd123_02.pngnml_bd123_02.png.metanml_bd123_03.pngnml_bd123_03.png.metanml_bd125.pngnml_bd125.png.metanml_bd127.pngnml_bd127.png.metanml_bd144_01.pngnml_bd144_01.png.metanml_bd144_02.pngnml_bd144_02.png.metanml_bd149.pngnml_bd149.png.metanml_bd192.pngnml_bd192.png.metanml_bd193.pngnml_bd193.png.metanml_bd194.pngnml_bd194.png.metanml_bd199.pngnml_bd199.png.metanml_bd205.pngnml_bd205.png.metanml_bd206.pngnml_bd206.png.metanml_bd207.pngnml_bd207.png.metanml_bd208.pngnml_bd208.png.metanml_bd209.pngnml_bd209.png.metanml_bd210.pngnml_bd210.png.metanml_bd211.pngnml_bd211.png.metanml_bd212.pngnml_bd212.png.metanml_bd214.pngnml_bd214.png.metanml_bd217.pngnml_bd217.png.metanml_bd220.pngnml_bd220.png.metanml_bd221.pngnml_bd221.png.metasl_bd001.pngsl_bd001.png.metasl_bd003.pngsl_bd003.png.metasl_bd004.pngsl_bd004.png.metasl_bd005.pngsl_bd005.png.metasl_bd006.pngsl_bd006.png.metasl_bd007.pngsl_bd007.png.metasl_bd008.pngsl_bd008.png.metasl_bd009.pngsl_bd009.png.metasl_bd010.pngsl_bd010.png.metasl_bd011.pngsl_bd011.png.metasl_bd012.pngsl_bd012.png.metasl_bd014_01.pngsl_bd014_01.png.metasl_bd014_02.pngsl_bd014_02.png.metasl_bd014_03.pngsl_bd014_03.png.metasl_bd015.pngsl_bd015.png.metasl_bd017_02.pngsl_bd017_02.png.metasl_bd019.pngsl_bd019.png.metasl_bd020.pngsl_bd020.png.metasl_bd021.pngsl_bd021.png.metasl_bd025.pngsl_bd025.png.metasl_bd026_01.pngsl_bd026_01.png.metasl_bd026_02.pngsl_bd026_02.png.metasl_bd026_03.pngsl_bd026_03.png.metasl_bd026_04.pngsl_bd026_04.png.metasl_bd026_05.pngsl_bd026_05.png.metasl_bd026_06.pngsl_bd026_06.png.metasl_bd026_07.pngsl_bd026_07.png.metasl_bd026_08.pngsl_bd026_08.png.metasl_bd028_02.pngsl_bd028_02.png.metasl_bd028_03.pngsl_bd028_03.png.metasl_bd028_04.pngsl_bd028_04.png.metasl_bd030.pngsl_bd030.png.metasl_bd031.pngsl_bd031.png.metasl_bd032.pngsl_bd032.png.metasl_bd033.pngsl_bd033.png.metasl_bd034.pngsl_bd034.png.metasl_bd035.pngsl_bd035.png.metasl_bd036.pngsl_bd036.png.metasl_bd037.pngsl_bd037.png.metasl_bd038.pngsl_bd038.png.metasl_bd039.pngsl_bd039.png.metasl_bd040.pngsl_bd040.png.metasl_bd041.pngsl_bd041.png.metasl_bd042.pngsl_bd042.png.metasl_bd043.pngsl_bd043.png.metasl_bd044.pngsl_bd044.png.meta
Terrain.meta
Terrain
TerrainTex.pngTerrainTex.png.metablack.bmpblack.bmp.metabrick01.bmpbrick01.bmp.metabrick02.bmpbrick02.bmp.metabrick03.bmpbrick03.bmp.metabrick04.bmpbrick04.bmp.metabrick05.bmpbrick05.bmp.metabrick06.bmpbrick06.bmp.metabrick08.bmpbrick08.bmp.metabrick09.bmpbrick09.bmp.metabrick10.bmpbrick10.bmp.metabrick109.bmpbrick109.bmp.metabrick110.bmpbrick110.bmp.metabrick111.bmpbrick111.bmp.metadg2_top01.bmpdg2_top01.bmp.metadg2_top02.bmpdg2_top02.bmp.metadirt01.bmpdirt01.bmp.metadirt02.bmpdirt02.bmp.metadirt03.bmpdirt03.bmp.metadirt04.bmpdirt04.bmp.metadirt05.bmpdirt05.bmp.metadirt06.bmpdirt06.bmp.metadirt07.bmpdirt07.bmp.metadrit08.bmpdrit08.bmp.metadrit09.bmpdrit09.bmp.metadrit10.bmpdrit10.bmp.metagrass01.bmpgrass01.bmp.metagrass02.bmpgrass02.bmp.metagrass03.bmpgrass03.bmp.metagrass04.bmpgrass04.bmp.metagrass05.bmpgrass05.bmp.metagrass07.bmpgrass07.bmp.metagrass09.bmpgrass09.bmp.metagrass10.bmpgrass10.bmp.metagrass11.bmpgrass11.bmp.metarock01.bmprock01.bmp.metarock02.bmprock02.bmp.metasand01.bmpsand01.bmp.metasand02.bmpsand02.bmp.metasand03.bmpsand03.bmp.metasand05.bmpsand05.bmp.metasand06.bmpsand06.bmp.metasand07.bmpsand07.bmp.metasand08.BMPsand08.BMP.metasand09.BMPsand09.BMP.metasnow01.bmpsnow01.bmp.metasnow02.bmpsnow02.bmp.metasnow03.bmpsnow03.bmp.metasnow04.bmpsnow04.bmp.metasnow05.bmpsnow05.bmp.metasnow06.bmpsnow06.bmp.metasnow07.bmpsnow07.bmp.metasnow08.bmpsnow08.bmp.metasubtract.bmpsubtract.bmp.metasw_bottom01.bmpsw_bottom01.bmp.metasw_floor01.bmpsw_floor01.bmp.metasw_floor02.bmpsw_floor02.bmp.metasw_floor03.bmpsw_floor03.bmp.metasw_floor04.bmpsw_floor04.bmp.metasw_star01.bmpsw_star01.bmp.metasw_star02.bmpsw_star02.bmp.metasw_star03.bmpsw_star03.bmp.metasw_star04.bmpsw_star04.bmp.metasw_star05.bmpsw_star05.bmp.metasw_star06.bmpsw_star06.bmp.metasw_star07.bmpsw_star07.bmp.metasw_star08.bmpsw_star08.bmp.metasw_star09.bmpsw_star09.bmp.metasw_star10.bmpsw_star10.bmp.metasw_star11.bmpsw_star11.bmp.metasw_star12.bmpsw_star12.bmp.metasw_surface.bmpsw_surface.bmp.metatotal.tgatotal.tga.meta
sceneobjinfo.binsceneobjinfo.bin.meta原始導出模型.meta
原始導出模型
exportedmodel.meta
exportedmodel
07hdw_hualanbai.lmo.mtl07hdw_hualanbai.lmo.mtl.meta07hdw_hualanbai.lmo.obj07hdw_hualanbai.lmo.obj.metaAm_bd002.lmo.mtlAm_bd002.lmo.mtl.metaAm_bd002.lmo.objAm_bd002.lmo.obj.metaFB_LYMK_baozuo_01.lmo.mtlFB_LYMK_baozuo_01.lmo.mtl.metaFB_LYMK_baozuo_01.lmo.objFB_LYMK_baozuo_01.lmo.obj.metaFB_LYMK_diaosu_01.lmo.mtlFB_LYMK_diaosu_01.lmo.mtl.metaFB_LYMK_diaosu_01.lmo.objFB_LYMK_diaosu_01.lmo.obj.metaFB_LYMK_diaosu_02.lmo.mtlFB_LYMK_diaosu_02.lmo.mtl.metaFB_LYMK_diaosu_02.lmo.objFB_LYMK_diaosu_02.lmo.obj.metaFB_LYMK_louti_01.lmo.mtlFB_LYMK_louti_01.lmo.mtl.metaFB_LYMK_louti_01.lmo.objFB_LYMK_louti_01.lmo.obj.metaFB_LYMK_rukou_01.lmo.mtlFB_LYMK_rukou_01.lmo.mtl.metaFB_LYMK_rukou_01.lmo.objFB_LYMK_rukou_01.lmo.obj.metaFB_MMHJ_men_01.lmo.mtlFB_MMHJ_men_01.lmo.mtl.metaFB_MMHJ_men_01.lmo.objFB_MMHJ_men_01.lmo.obj.metaFB_ZJSM_fangzi_0001.lmo.mtlFB_ZJSM_fangzi_0001.lmo.mtl.metaFB_ZJSM_fangzi_0001.lmo.objFB_ZJSM_fangzi_0001.lmo.obj.metaFB_ZJSM_fangzi_0003.lmo.mtlFB_ZJSM_fangzi_0003.lmo.mtl.metaFB_ZJSM_fangzi_0003.lmo.objFB_ZJSM_fangzi_0003.lmo.obj.metaFB_ZJSM_fangzi_0004.lmo.mtlFB_ZJSM_fangzi_0004.lmo.mtl.metaFB_ZJSM_fangzi_0004.lmo.objFB_ZJSM_fangzi_0004.lmo.obj.metaFB_ZJSM_fangzi_0005.lmo.mtlFB_ZJSM_fangzi_0005.lmo.mtl.metaFB_ZJSM_fangzi_0005.lmo.objFB_ZJSM_fangzi_0005.lmo.obj.metaFB_tt-2_Bossshizhu_0001.lmo.mtlFB_tt-2_Bossshizhu_0001.lmo.mtl.metaFB_tt-2_Bossshizhu_0001.lmo.objFB_tt-2_Bossshizhu_0001.lmo.obj.metaFB_tt-2_Bosstaizi_01_01.lmo.mtlFB_tt-2_Bosstaizi_01_01.lmo.mtl.metaFB_tt-2_Bosstaizi_01_01.lmo.objFB_tt-2_Bosstaizi_01_01.lmo.obj.metaFB_ttt3_diaoxiang_0001.lmo.mtlFB_ttt3_diaoxiang_0001.lmo.mtl.metaFB_ttt3_diaoxiang_0001.lmo.objFB_ttt3_diaoxiang_0001.lmo.obj.metaFB_ttt3_diaoxiang_0002.lmo.mtlFB_ttt3_diaoxiang_0002.lmo.mtl.metaFB_ttt3_diaoxiang_0002.lmo.objFB_ttt3_diaoxiang_0002.lmo.obj.metaFB_ttt3_louti_0002.lmo.mtlFB_ttt3_louti_0002.lmo.mtl.metaFB_ttt3_louti_0002.lmo.objFB_ttt3_louti_0002.lmo.obj.metaFB_ttt3_penquan_0001.lmo.mtlFB_ttt3_penquan_0001.lmo.mtl.metaFB_ttt3_penquan_0001.lmo.objFB_ttt3_penquan_0001.lmo.obj.metaFB_ttt3_qiang_0005.lmo.mtlFB_ttt3_qiang_0005.lmo.mtl.metaFB_ttt3_qiang_0005.lmo.objFB_ttt3_qiang_0005.lmo.obj.metaFB_ttt3_xiejie_0001.lmo.mtlFB_ttt3_xiejie_0001.lmo.mtl.metaFB_ttt3_xiejie_0001.lmo.objFB_ttt3_xiejie_0001.lmo.obj.metaFB_ttt3_zhuzi_0001.lmo.mtlFB_ttt3_zhuzi_0001.lmo.mtl.metaFB_ttt3_zhuzi_0001.lmo.objFB_ttt3_zhuzi_0001.lmo.obj.metaKxs_bd001.lmo.mtlKxs_bd001.lmo.mtl.metaKxs_bd001.lmo.objKxs_bd001.lmo.obj.metaMY_bd001.lmo.mtlMY_bd001.lmo.mtl.metaMY_bd001.lmo.objMY_bd001.lmo.obj.metabl-bd001.lmo.mtlbl-bd001.lmo.mtl.metabl-bd001.lmo.objbl-bd001.lmo.obj.metabl-bd002.lmo.mtlbl-bd002.lmo.mtl.metabl-bd002.lmo.objbl-bd002.lmo.obj.metabl-bd003.lmo.mtlbl-bd003.lmo.mtl.metabl-bd003.lmo.objbl-bd003.lmo.obj.metabl-bd004.lmo.mtlbl-bd004.lmo.mtl.metabl-bd004.lmo.objbl-bd004.lmo.obj.metabl-bd005-01.lmo.mtlbl-bd005-01.lmo.mtl.metabl-bd005-01.lmo.objbl-bd005-01.lmo.obj.metabl-bd005-02.lmo.mtlbl-bd005-02.lmo.mtl.metabl-bd005-02.lmo.objbl-bd005-02.lmo.obj.metabl-bd005-03.lmo.mtlbl-bd005-03.lmo.mtl.metabl-bd005-03.lmo.objbl-bd005-03.lmo.obj.metabl-bd006.lmo.mtlbl-bd006.lmo.mtl.metabl-bd006.lmo.objbl-bd006.lmo.obj.metabl-bd007.lmo.mtlbl-bd007.lmo.mtl.metabl-bd007.lmo.objbl-bd007.lmo.obj.metabl-bd008-01.lmo.mtlbl-bd008-01.lmo.mtl.metabl-bd008-01.lmo.objbl-bd008-01.lmo.obj.metabl-bd008-02.lmo.mtlbl-bd008-02.lmo.mtl.metabl-bd008-02.lmo.objbl-bd008-02.lmo.obj.metabl-bd008-03.lmo.mtlbl-bd008-03.lmo.mtl.metabl-bd008-03.lmo.objbl-bd008-03.lmo.obj.metabl-bd008-04.lmo.mtlbl-bd008-04.lmo.mtl.metabl-bd008-04.lmo.objbl-bd008-04.lmo.obj.metabl-bd008-05.lmo.mtlbl-bd008-05.lmo.mtl.metabl-bd008-05.lmo.objbl-bd008-05.lmo.obj.metabl-bd009.lmo.mtlbl-bd009.lmo.mtl.metabl-bd009.lmo.objbl-bd009.lmo.obj.metabl-bd010.lmo.mtlbl-bd010.lmo.mtl.metabl-bd010.lmo.objbl-bd010.lmo.obj.metabl-bd011.lmo.mtlbl-bd011.lmo.mtl.metabl-bd011.lmo.objbl-bd011.lmo.obj.metabl-bd012.lmo.mtlbl-bd012.lmo.mtl.metabl-bd012.lmo.objbl-bd012.lmo.obj.metabl-bd013.lmo.mtlbl-bd013.lmo.mtl.metabl-bd013.lmo.objbl-bd013.lmo.obj.metabl-bd014.lmo.mtlbl-bd014.lmo.mtl.metabl-bd014.lmo.objbl-bd014.lmo.obj.metabl-bd015.lmo.mtlbl-bd015.lmo.mtl.metabl-bd015.lmo.objbl-bd015.lmo.obj.metabl-bd016.lmo.mtlbl-bd016.lmo.mtl.metabl-bd016.lmo.objbl-bd016.lmo.obj.metabl-bd017.lmo.mtlbl-bd017.lmo.mtl.metabl-bd017.lmo.objbl-bd017.lmo.obj.metabl-bd018.lmo.mtlbl-bd018.lmo.mtl.metabl-bd018.lmo.objbl-bd018.lmo.obj.metabl-bd019.lmo.mtlbl-bd019.lmo.mtl.metabl-bd019.lmo.objbl-bd019.lmo.obj.metabl-bd020.lmo.mtlbl-bd020.lmo.mtl.metabl-bd020.lmo.objbl-bd020.lmo.obj.metabl-bd021.lmo.mtlbl-bd021.lmo.mtl.metabl-bd021.lmo.objbl-bd021.lmo.obj.metabot_bd001.lmo.mtlbot_bd001.lmo.mtl.metabot_bd001.lmo.objbot_bd001.lmo.obj.metabot_bd002.lmo.mtlbot_bd002.lmo.mtl.metabot_bd002.lmo.objbot_bd002.lmo.obj.metabot_bd003.lmo.mtlbot_bd003.lmo.mtl.metabot_bd003.lmo.objbot_bd003.lmo.obj.metaby-bd001.lmo.mtlby-bd001.lmo.mtl.metaby-bd001.lmo.objby-bd001.lmo.obj.metaby-bd002.lmo.mtlby-bd002.lmo.mtl.metaby-bd002.lmo.objby-bd002.lmo.obj.metaby-bd003.lmo.mtlby-bd003.lmo.mtl.metaby-bd003.lmo.objby-bd003.lmo.obj.metaby-bd004.lmo.mtlby-bd004.lmo.mtl.metaby-bd004.lmo.objby-bd004.lmo.obj.metaby-bd005.lmo.mtlby-bd005.lmo.mtl.metaby-bd005.lmo.objby-bd005.lmo.obj.metaby-bd007.lmo.mtlby-bd007.lmo.mtl.metaby-bd007.lmo.objby-bd007.lmo.obj.metaby-bd008.lmo.mtlby-bd008.lmo.mtl.metaby-bd008.lmo.objby-bd008.lmo.obj.metaby-bd009.lmo.mtlby-bd009.lmo.mtl.metaby-bd009.lmo.objby-bd009.lmo.obj.metaby-bd010.lmo.mtlby-bd010.lmo.mtl.metaby-bd010.lmo.objby-bd010.lmo.obj.metaby-bd011.lmo.mtlby-bd011.lmo.mtl.metaby-bd011.lmo.objby-bd011.lmo.obj.metaby-bd013.lmo.mtlby-bd013.lmo.mtl.metaby-bd013.lmo.objby-bd013.lmo.obj.metaby-bd014-1.lmo.mtlby-bd014-1.lmo.mtl.metaby-bd014-1.lmo.objby-bd014-1.lmo.obj.metaby-bd014-2.lmo.mtlby-bd014-2.lmo.mtl.metaby-bd014-2.lmo.objby-bd014-2.lmo.obj.metaby-bd014-3.lmo.mtlby-bd014-3.lmo.mtl.metaby-bd014-3.lmo.objby-bd014-3.lmo.obj.metaby-bd014-4.lmo.mtlby-bd014-4.lmo.mtl.metaby-bd014-4.lmo.objby-bd014-4.lmo.obj.metaby-bd014-5.lmo.mtlby-bd014-5.lmo.mtl.metaby-bd014-5.lmo.objby-bd014-5.lmo.obj.metaby-bd014-6.lmo.mtlby-bd014-6.lmo.mtl.metaby-bd014-6.lmo.objby-bd014-6.lmo.obj.metaby-bd014-7.lmo.mtlby-bd014-7.lmo.mtl.metaby-bd014-7.lmo.objby-bd014-7.lmo.obj.metaby-bd014-8.lmo.mtlby-bd014-8.lmo.mtl.metaby-bd014-8.lmo.objby-bd014-8.lmo.obj.metaby-bd014.lmo.mtlby-bd014.lmo.mtl.metaby-bd014.lmo.objby-bd014.lmo.obj.metaby-bd015.lmo.mtlby-bd015.lmo.mtl.metaby-bd015.lmo.objby-bd015.lmo.obj.metaby-bd016.lmo.mtlby-bd016.lmo.mtl.metaby-bd016.lmo.objby-bd016.lmo.obj.metaby-bd017.lmo.mtlby-bd017.lmo.mtl.metaby-bd017.lmo.objby-bd017.lmo.obj.metaby-bd018.lmo.mtlby-bd018.lmo.mtl.metaby-bd018.lmo.objby-bd018.lmo.obj.metaby-bd019.lmo.mtlby-bd019.lmo.mtl.metaby-bd019.lmo.objby-bd019.lmo.obj.metaby-bd020.lmo.mtlby-bd020.lmo.mtl.metaby-bd020.lmo.objby-bd020.lmo.obj.metaby-bd022.lmo.mtlby-bd022.lmo.mtl.metaby-bd022.lmo.objby-bd022.lmo.obj.metaby-bd023.lmo.mtlby-bd023.lmo.mtl.metaby-bd023.lmo.objby-bd023.lmo.obj.metaby-bd024.lmo.mtlby-bd024.lmo.mtl.metaby-bd024.lmo.objby-bd024.lmo.obj.metaby-bd025.lmo.mtlby-bd025.lmo.mtl.metaby-bd025.lmo.objby-bd025.lmo.obj.metaby-bd026-01.lmo.mtlby-bd026-01.lmo.mtl.metaby-bd026-01.lmo.objby-bd026-01.lmo.obj.metaby-bd026.lmo.mtlby-bd026.lmo.mtl.metaby-bd026.lmo.objby-bd026.lmo.obj.metaby-bd027.lmo.mtlby-bd027.lmo.mtl.metaby-bd027.lmo.objby-bd027.lmo.obj.metaby-bd028.lmo.mtlby-bd028.lmo.mtl.metaby-bd028.lmo.objby-bd028.lmo.obj.metaby-bd029.lmo.mtlby-bd029.lmo.mtl.metaby-bd029.lmo.objby-bd029.lmo.obj.metaby-bd030.lmo.mtlby-bd030.lmo.mtl.metaby-bd030.lmo.objby-bd030.lmo.obj.metaby-bd031.lmo.mtlby-bd031.lmo.mtl.metaby-bd031.lmo.objby-bd031.lmo.obj.metaby-bd032.lmo.mtlby-bd032.lmo.mtl.metaby-bd032.lmo.objby-bd032.lmo.obj.metaby-bd033.lmo.mtlby-bd033.lmo.mtl.metaby-bd033.lmo.objby-bd033.lmo.obj.metaby-bd034.lmo.mtlby-bd034.lmo.mtl.metaby-bd034.lmo.objby-bd034.lmo.obj.metaby-bd035.lmo.mtlby-bd035.lmo.mtl.metaby-bd035.lmo.objby-bd035.lmo.obj.metaby-bd036.lmo.mtlby-bd036.lmo.mtl.metaby-bd036.lmo.objby-bd036.lmo.obj.metaby-bd037.lmo.mtlby-bd037.lmo.mtl.metaby-bd037.lmo.objby-bd037.lmo.obj.metaby-bd038.lmo.mtlby-bd038.lmo.mtl.metaby-bd038.lmo.objby-bd038.lmo.obj.metaby-bd039.lmo.mtlby-bd039.lmo.mtl.metaby-bd039.lmo.objby-bd039.lmo.obj.metaby-bd040.lmo.mtlby-bd040.lmo.mtl.metaby-bd040.lmo.objby-bd040.lmo.obj.metaby-bd041.lmo.mtlby-bd041.lmo.mtl.metaby-bd041.lmo.objby-bd041.lmo.obj.metaby-bd042.lmo.mtlby-bd042.lmo.mtl.metaby-bd042.lmo.objby-bd042.lmo.obj.metaby-bd043.lmo.mtlby-bd043.lmo.mtl.metaby-bd043.lmo.objby-bd043.lmo.obj.metaby-bd044.lmo.mtlby-bd044.lmo.mtl.metaby-bd044.lmo.objby-bd044.lmo.obj.metaby-bd045.lmo.mtlby-bd045.lmo.mtl.metaby-bd045.lmo.objby-bd045.lmo.obj.metaby-bd046.lmo.mtlby-bd046.lmo.mtl.metaby-bd046.lmo.objby-bd046.lmo.obj.metaby-bd047.lmo.mtlby-bd047.lmo.mtl.metaby-bd047.lmo.objby-bd047.lmo.obj.metaby-bd048.lmo.mtlby-bd048.lmo.mtl.metaby-bd048.lmo.objby-bd048.lmo.obj.metaby-bd049.lmo.mtlby-bd049.lmo.mtl.metaby-bd049.lmo.objby-bd049.lmo.obj.metaby-bd050.lmo.mtlby-bd050.lmo.mtl.metaby-bd050.lmo.objby-bd050.lmo.obj.metacc-bd001.lmo.mtlcc-bd001.lmo.mtl.metacc-bd001.lmo.objcc-bd001.lmo.obj.metacc-bd002.lmo.mtlcc-bd002.lmo.mtl.metacc-bd002.lmo.objcc-bd002.lmo.obj.metacc-bd003.lmo.mtlcc-bd003.lmo.mtl.metacc-bd003.lmo.objcc-bd003.lmo.obj.metacc-bd004.lmo.mtlcc-bd004.lmo.mtl.metacc-bd004.lmo.objcc-bd004.lmo.obj.metacc-bd005.lmo.mtlcc-bd005.lmo.mtl.metacc-bd005.lmo.objcc-bd005.lmo.obj.metacc-bd006.lmo.mtlcc-bd006.lmo.mtl.metacc-bd006.lmo.objcc-bd006.lmo.obj.metacc-bd007.lmo.mtlcc-bd007.lmo.mtl.metacc-bd007.lmo.objcc-bd007.lmo.obj.metacc-bd008.lmo.mtlcc-bd008.lmo.mtl.metacc-bd008.lmo.objcc-bd008.lmo.obj.metacc-bd009.lmo.mtlcc-bd009.lmo.mtl.metacc-bd009.lmo.objcc-bd009.lmo.obj.metacc-bd010.lmo.mtlcc-bd010.lmo.mtl.metacc-bd010.lmo.objcc-bd010.lmo.obj.metacc-bd011.lmo.mtlcc-bd011.lmo.mtl.metacc-bd011.lmo.objcc-bd011.lmo.obj.metacc-bd012.lmo.mtlcc-bd012.lmo.mtl.metacc-bd012.lmo.objcc-bd012.lmo.obj.metacc-bd013.lmo.mtlcc-bd013.lmo.mtl.metacc-bd013.lmo.objcc-bd013.lmo.obj.metacc-bd014.lmo.mtlcc-bd014.lmo.mtl.metacc-bd014.lmo.objcc-bd014.lmo.obj.metacc-bd015.lmo.mtlcc-bd015.lmo.mtl.metacc-bd015.lmo.objcc-bd015.lmo.obj.metacc-bd016.lmo.mtlcc-bd016.lmo.mtl.metacc-bd016.lmo.objcc-bd016.lmo.obj.metacc-bd017.lmo.mtlcc-bd017.lmo.mtl.metacc-bd017.lmo.objcc-bd017.lmo.obj.metacc-bd018.lmo.mtlcc-bd018.lmo.mtl.metacc-bd018.lmo.objcc-bd018.lmo.obj.metacc-bd019.lmo.mtlcc-bd019.lmo.mtl.metacc-bd019.lmo.objcc-bd019.lmo.obj.metacc-bd020.lmo.mtlcc-bd020.lmo.mtl.metacc-bd020.lmo.objcc-bd020.lmo.obj.metacc-bd021.lmo.mtlcc-bd021.lmo.mtl.metacc-bd021.lmo.objcc-bd021.lmo.obj.metacc-bd022.lmo.mtlcc-bd022.lmo.mtl.metacc-bd022.lmo.objcc-bd022.lmo.obj.metacc-bd023.lmo.mtlcc-bd023.lmo.mtl.metacc-bd023.lmo.objcc-bd023.lmo.obj.metacc-bd024.lmo.mtlcc-bd024.lmo.mtl.metacc-bd024.lmo.objcc-bd024.lmo.obj.metacc-bd025.lmo.mtlcc-bd025.lmo.mtl.metacc-bd025.lmo.objcc-bd025.lmo.obj.metacc-bd026.lmo.mtlcc-bd026.lmo.mtl.metacc-bd026.lmo.objcc-bd026.lmo.obj.metacc-bd027.lmo.mtlcc-bd027.lmo.mtl.metacc-bd027.lmo.objcc-bd027.lmo.obj.metacc-bd028.lmo.mtlcc-bd028.lmo.mtl.metacc-bd028.lmo.objcc-bd028.lmo.obj.metacc-bd029.lmo.mtlcc-bd029.lmo.mtl.metacc-bd029.lmo.objcc-bd029.lmo.obj.metacc-bd030.lmo.mtlcc-bd030.lmo.mtl.metacc-bd030.lmo.objcc-bd030.lmo.obj.metacc-bd031.lmo.mtlcc-bd031.lmo.mtl.metacc-bd031.lmo.objcc-bd031.lmo.obj.metacc-bd032.lmo.mtlcc-bd032.lmo.mtl.metacc-bd032.lmo.objcc-bd032.lmo.obj.metacc-bd033.lmo.mtlcc-bd033.lmo.mtl.metacc-bd033.lmo.objcc-bd033.lmo.obj.metacc-bd034.lmo.mtlcc-bd034.lmo.mtl.metacc-bd034.lmo.objcc-bd034.lmo.obj.metacc-bd035.lmo.mtlcc-bd035.lmo.mtl.metacc-bd035.lmo.objcc-bd035.lmo.obj.metacc-bd036.lmo.mtlcc-bd036.lmo.mtl.metacc-bd036.lmo.objcc-bd036.lmo.obj.metacc-bd037.lmo.mtlcc-bd037.lmo.mtl.metacc-bd037.lmo.objcc-bd037.lmo.obj.metacc-bd038.lmo.mtlcc-bd038.lmo.mtl.metacc-bd038.lmo.objcc-bd038.lmo.obj.metacc-bd039.lmo.mtlcc-bd039.lmo.mtl.metacc-bd039.lmo.objcc-bd039.lmo.obj.metacc-bd040.lmo.mtlcc-bd040.lmo.mtl.metacc-bd040.lmo.objcc-bd040.lmo.obj.metacc-bd041.lmo.mtlcc-bd041.lmo.mtl.metacc-bd041.lmo.objcc-bd041.lmo.obj.metacc-bd042.lmo.mtlcc-bd042.lmo.mtl.metacc-bd042.lmo.objcc-bd042.lmo.obj.metacc-bd043.lmo.mtlcc-bd043.lmo.mtl.metacc-bd043.lmo.objcc-bd043.lmo.obj.metacc-bd044.lmo.mtlcc-bd044.lmo.mtl.metacc-bd044.lmo.objcc-bd044.lmo.obj.metacc-bd045.lmo.mtlcc-bd045.lmo.mtl.metacc-bd045.lmo.objcc-bd045.lmo.obj.metacc-bd046.lmo.mtlcc-bd046.lmo.mtl.metacc-bd046.lmo.objcc-bd046.lmo.obj.metacc-bd047.lmo.mtlcc-bd047.lmo.mtl.metacc-bd047.lmo.objcc-bd047.lmo.obj.metacc-bd049.lmo.mtlcc-bd049.lmo.mtl.metacc-bd049.lmo.objcc-bd049.lmo.obj.metacc-bd050.lmo.mtlcc-bd050.lmo.mtl.metacc-bd050.lmo.objcc-bd050.lmo.obj.metacc-bd051.lmo.mtlcc-bd051.lmo.mtl.metacc-bd051.lmo.objcc-bd051.lmo.obj.metacc-bd052.lmo.mtlcc-bd052.lmo.mtl.metacc-bd052.lmo.objcc-bd052.lmo.obj.metacc-bd053.lmo.mtlcc-bd053.lmo.mtl.metacc-bd053.lmo.objcc-bd053.lmo.obj.metacc-bd054.lmo.mtlcc-bd054.lmo.mtl.metacc-bd054.lmo.objcc-bd054.lmo.obj.metacc-bd055.lmo.mtlcc-bd055.lmo.mtl.metacc-bd055.lmo.objcc-bd055.lmo.obj.metacc-bd056.lmo.mtlcc-bd056.lmo.mtl.metacc-bd056.lmo.objcc-bd056.lmo.obj.metacc-bd057.lmo.mtlcc-bd057.lmo.mtl.metacc-bd057.lmo.objcc-bd057.lmo.obj.metacc-bd058.lmo.mtlcc-bd058.lmo.mtl.metacc-bd058.lmo.objcc-bd058.lmo.obj.metacc-bd059.lmo.mtlcc-bd059.lmo.mtl.metacc-bd059.lmo.objcc-bd059.lmo.obj.metacc-bd060.lmo.mtlcc-bd060.lmo.mtl.metacc-bd060.lmo.objcc-bd060.lmo.obj.metacc-bd061.lmo.mtlcc-bd061.lmo.mtl.metacc-bd061.lmo.objcc-bd061.lmo.obj.metacc-bd062.lmo.mtlcc-bd062.lmo.mtl.metacc-bd062.lmo.objcc-bd062.lmo.obj.metacc-bd063.lmo.mtlcc-bd063.lmo.mtl.metacc-bd063.lmo.objcc-bd063.lmo.obj.metacc-bd064.lmo.mtlcc-bd064.lmo.mtl.metacc-bd064.lmo.objcc-bd064.lmo.obj.metacc-bd065.lmo.mtlcc-bd065.lmo.mtl.metacc-bd065.lmo.objcc-bd065.lmo.obj.metacc-bd066.lmo.mtlcc-bd066.lmo.mtl.metacc-bd066.lmo.objcc-bd066.lmo.obj.metacc-bd067.lmo.mtlcc-bd067.lmo.mtl.metacc-bd067.lmo.objcc-bd067.lmo.obj.metacc-bd068.lmo.mtlcc-bd068.lmo.mtl.metacc-bd068.lmo.objcc-bd068.lmo.obj.metacc-bd069.lmo.mtlcc-bd069.lmo.mtl.metacc-bd069.lmo.objcc-bd069.lmo.obj.metacc-bd071.lmo.mtlcc-bd071.lmo.mtl.metacc-bd071.lmo.objcc-bd071.lmo.obj.metacc-bd072.lmo.mtlcc-bd072.lmo.mtl.metacc-bd072.lmo.objcc-bd072.lmo.obj.metacc-bd073.lmo.mtlcc-bd073.lmo.mtl.metacc-bd073.lmo.objcc-bd073.lmo.obj.metacc-bd074.lmo.mtlcc-bd074.lmo.mtl.metacc-bd074.lmo.objcc-bd074.lmo.obj.metacc-bd075.lmo.mtlcc-bd075.lmo.mtl.metacc-bd075.lmo.objcc-bd075.lmo.obj.metacc-bd077.lmo.mtlcc-bd077.lmo.mtl.metacc-bd077.lmo.objcc-bd077.lmo.obj.metacc-bddxsdrk.lmo.mtlcc-bddxsdrk.lmo.mtl.metacc-bddxsdrk.lmo.objcc-bddxsdrk.lmo.obj.metacc-bdhq.lmo.mtlcc-bdhq.lmo.mtl.metacc-bdhq.lmo.objcc-bdhq.lmo.obj.metadd_bd001.lmo.mtldd_bd001.lmo.mtl.metadd_bd001.lmo.objdd_bd001.lmo.obj.metadd_bd002.lmo.mtldd_bd002.lmo.mtl.metadd_bd002.lmo.objdd_bd002.lmo.obj.metadd_bd003.lmo.mtldd_bd003.lmo.mtl.metadd_bd003.lmo.objdd_bd003.lmo.obj.metadd_bd004.lmo.mtldd_bd004.lmo.mtl.metadd_bd004.lmo.objdd_bd004.lmo.obj.metadd_bd006.lmo.mtldd_bd006.lmo.mtl.metadd_bd006.lmo.objdd_bd006.lmo.obj.metadd_bd007.lmo.mtldd_bd007.lmo.mtl.metadd_bd007.lmo.objdd_bd007.lmo.obj.metadd_bd008.lmo.mtldd_bd008.lmo.mtl.metadd_bd008.lmo.objdd_bd008.lmo.obj.metadd_bd009.lmo.mtldd_bd009.lmo.mtl.metadd_bd009.lmo.objdd_bd009.lmo.obj.metadd_bd010.lmo.mtldd_bd010.lmo.mtl.metadd_bd010.lmo.objdd_bd010.lmo.obj.metadd_bd011.lmo.mtldd_bd011.lmo.mtl.metadd_bd011.lmo.objdd_bd011.lmo.obj.metadd_bd012.lmo.mtldd_bd012.lmo.mtl.metadd_bd012.lmo.objdd_bd012.lmo.obj.metadd_bd013.lmo.mtldd_bd013.lmo.mtl.metadd_bd013.lmo.objdd_bd013.lmo.obj.metadd_bd014.lmo.mtldd_bd014.lmo.mtl.metadd_bd014.lmo.objdd_bd014.lmo.obj.metadd_bd015.lmo.mtldd_bd015.lmo.mtl.metadd_bd015.lmo.objdd_bd015.lmo.obj.metahdjd-cbd01.lmo.mtlhdjd-cbd01.lmo.mtl.metahdjd-cbd01.lmo.objhdjd-cbd01.lmo.obj.metahdmgrk01.lmo.mtlhdmgrk01.lmo.mtl.metahdmgrk01.lmo.objhdmgrk01.lmo.obj.metahdsd01.lmo.mtlhdsd01.lmo.mtl.metahdsd01.lmo.objhdsd01.lmo.obj.metahdwblg001.lmo.mtlhdwblg001.lmo.mtl.metahdwblg001.lmo.objhdwblg001.lmo.obj.metahdwjsj001.lmo.mtlhdwjsj001.lmo.mtl.metahdwjsj001.lmo.objhdwjsj001.lmo.obj.metahl_bd001.lmo.mtlhl_bd001.lmo.mtl.metahl_bd001.lmo.objhl_bd001.lmo.obj.metahl_bd002.lmo.mtlhl_bd002.lmo.mtl.metahl_bd002.lmo.objhl_bd002.lmo.obj.metahl_bd003.lmo.mtlhl_bd003.lmo.mtl.metahl_bd003.lmo.objhl_bd003.lmo.obj.metahl_bd004.lmo.mtlhl_bd004.lmo.mtl.metahl_bd004.lmo.objhl_bd004.lmo.obj.metahl_bd005.lmo.mtlhl_bd005.lmo.mtl.metahl_bd005.lmo.objhl_bd005.lmo.obj.metahl_bd006.lmo.mtlhl_bd006.lmo.mtl.metahl_bd006.lmo.objhl_bd006.lmo.obj.metahl_bd007.lmo.mtlhl_bd007.lmo.mtl.metahl_bd007.lmo.objhl_bd007.lmo.obj.metahl_bd008.lmo.mtlhl_bd008.lmo.mtl.metahl_bd008.lmo.objhl_bd008.lmo.obj.metahl_bd009.lmo.mtlhl_bd009.lmo.mtl.metahl_bd009.lmo.objhl_bd009.lmo.obj.metahl_bd010.lmo.mtlhl_bd010.lmo.mtl.metahl_bd010.lmo.objhl_bd010.lmo.obj.metahl_bd011.lmo.mtlhl_bd011.lmo.mtl.metahl_bd011.lmo.objhl_bd011.lmo.obj.metahlcx-bx.lmo.mtlhlcx-bx.lmo.mtl.metahlcx-bx.lmo.objhlcx-bx.lmo.obj.metahlcx-ck.lmo.mtlhlcx-ck.lmo.mtl.metahlcx-ck.lmo.objhlcx-ck.lmo.obj.metahlcx-gh.lmo.mtlhlcx-gh.lmo.mtl.metahlcx-gh.lmo.objhlcx-gh.lmo.obj.metahlcx-rk.lmo.mtlhlcx-rk.lmo.mtl.metahlcx-rk.lmo.objhlcx-rk.lmo.obj.metahlcx02.lmo.mtlhlcx02.lmo.mtl.metahlcx02.lmo.objhlcx02.lmo.obj.metahlcx03.lmo.mtlhlcx03.lmo.mtl.metahlcx03.lmo.objhlcx03.lmo.obj.metahlcx04.lmo.mtlhlcx04.lmo.mtl.metahlcx04.lmo.objhlcx04.lmo.obj.metahlcx05.lmo.mtlhlcx05.lmo.mtl.metahlcx05.lmo.objhlcx05.lmo.obj.metahlcx06.lmo.mtlhlcx06.lmo.mtl.metahlcx06.lmo.objhlcx06.lmo.obj.metahlcx07.lmo.mtlhlcx07.lmo.mtl.metahlcx07.lmo.objhlcx07.lmo.obj.metahlcx08.lmo.mtlhlcx08.lmo.mtl.metahlcx08.lmo.objhlcx08.lmo.obj.metahlcx09.lmo.mtlhlcx09.lmo.mtl.metahlcx09.lmo.objhlcx09.lmo.obj.metajtsn.lmo.mtljtsn.lmo.mtl.metajtsn.lmo.objjtsn.lmo.obj.metakao-bd001.lmo.mtlkao-bd001.lmo.mtl.metakao-bd001.lmo.objkao-bd001.lmo.obj.metakyjj-bd01-01.lmo.mtlkyjj-bd01-01.lmo.mtl.metakyjj-bd01-01.lmo.objkyjj-bd01-01.lmo.obj.metakyjj-bd01-21.lmo.mtlkyjj-bd01-21.lmo.mtl.metakyjj-bd01-21.lmo.objkyjj-bd01-21.lmo.obj.metakyjj-bd01-22.lmo.mtlkyjj-bd01-22.lmo.mtl.metakyjj-bd01-22.lmo.objkyjj-bd01-22.lmo.obj.metakyjj-bd01-23.lmo.mtlkyjj-bd01-23.lmo.mtl.metakyjj-bd01-23.lmo.objkyjj-bd01-23.lmo.obj.metakyjj-bd01-31.lmo.mtlkyjj-bd01-31.lmo.mtl.metakyjj-bd01-31.lmo.objkyjj-bd01-31.lmo.obj.metakyjj-bd01-32.lmo.mtlkyjj-bd01-32.lmo.mtl.metakyjj-bd01-32.lmo.objkyjj-bd01-32.lmo.obj.metakyjj-bd01-33.lmo.mtlkyjj-bd01-33.lmo.mtl.metakyjj-bd01-33.lmo.objkyjj-bd01-33.lmo.obj.metakyjj-bd01-34.lmo.mtlkyjj-bd01-34.lmo.mtl.metakyjj-bd01-34.lmo.objkyjj-bd01-34.lmo.obj.metakyjj-bd01-41.lmo.mtlkyjj-bd01-41.lmo.mtl.metakyjj-bd01-41.lmo.objkyjj-bd01-41.lmo.obj.metakyjj-bd01-42.lmo.mtlkyjj-bd01-42.lmo.mtl.metakyjj-bd01-42.lmo.objkyjj-bd01-42.lmo.obj.metakyjj-bd01-43.lmo.mtlkyjj-bd01-43.lmo.mtl.metakyjj-bd01-43.lmo.objkyjj-bd01-43.lmo.obj.metakyjj-bd02-01.lmo.mtlkyjj-bd02-01.lmo.mtl.metakyjj-bd02-01.lmo.objkyjj-bd02-01.lmo.obj.metakyjj-bd02-02.lmo.mtlkyjj-bd02-02.lmo.mtl.metakyjj-bd02-02.lmo.objkyjj-bd02-02.lmo.obj.metakyjj-bd02-21.lmo.mtlkyjj-bd02-21.lmo.mtl.metakyjj-bd02-21.lmo.objkyjj-bd02-21.lmo.obj.metakyjj-bd02-22.lmo.mtlkyjj-bd02-22.lmo.mtl.metakyjj-bd02-22.lmo.objkyjj-bd02-22.lmo.obj.metakyjj-bd02-23.lmo.mtlkyjj-bd02-23.lmo.mtl.metakyjj-bd02-23.lmo.objkyjj-bd02-23.lmo.obj.metakyjj-bd02-24.lmo.mtlkyjj-bd02-24.lmo.mtl.metakyjj-bd02-24.lmo.objkyjj-bd02-24.lmo.obj.metakyjj-bd02-31.lmo.mtlkyjj-bd02-31.lmo.mtl.metakyjj-bd02-31.lmo.objkyjj-bd02-31.lmo.obj.metakyjj-bd02-32.lmo.mtlkyjj-bd02-32.lmo.mtl.metakyjj-bd02-32.lmo.objkyjj-bd02-32.lmo.obj.metakyjj-bd02-33.lmo.mtlkyjj-bd02-33.lmo.mtl.metakyjj-bd02-33.lmo.objkyjj-bd02-33.lmo.obj.metakyjj-bd02-34.lmo.mtlkyjj-bd02-34.lmo.mtl.metakyjj-bd02-34.lmo.objkyjj-bd02-34.lmo.obj.metakyjj-bd02-41.lmo.mtlkyjj-bd02-41.lmo.mtl.metakyjj-bd02-41.lmo.objkyjj-bd02-41.lmo.obj.metakyjj-bd02-42.lmo.mtlkyjj-bd02-42.lmo.mtl.metakyjj-bd02-42.lmo.objkyjj-bd02-42.lmo.obj.metakyjj-bd02-43.lmo.mtlkyjj-bd02-43.lmo.mtl.metakyjj-bd02-43.lmo.objkyjj-bd02-43.lmo.obj.metakyjj-bd02-51.lmo.mtlkyjj-bd02-51.lmo.mtl.metakyjj-bd02-51.lmo.objkyjj-bd02-51.lmo.obj.metakyjj-bd02-52.lmo.mtlkyjj-bd02-52.lmo.mtl.metakyjj-bd02-52.lmo.objkyjj-bd02-52.lmo.obj.metakyjj-bd02-53.lmo.mtlkyjj-bd02-53.lmo.mtl.metakyjj-bd02-53.lmo.objkyjj-bd02-53.lmo.obj.metakyjj-bd03-01.lmo.mtlkyjj-bd03-01.lmo.mtl.metakyjj-bd03-01.lmo.objkyjj-bd03-01.lmo.obj.metakyjj-bd03-21.lmo.mtlkyjj-bd03-21.lmo.mtl.metakyjj-bd03-21.lmo.objkyjj-bd03-21.lmo.obj.metakyjj-bd03-22.lmo.mtlkyjj-bd03-22.lmo.mtl.metakyjj-bd03-22.lmo.objkyjj-bd03-22.lmo.obj.metakyjj-bd03-31.lmo.mtlkyjj-bd03-31.lmo.mtl.metakyjj-bd03-31.lmo.objkyjj-bd03-31.lmo.obj.metakyjj-bd03-32.lmo.mtlkyjj-bd03-32.lmo.mtl.metakyjj-bd03-32.lmo.objkyjj-bd03-32.lmo.obj.metakyjj-bd04-01.lmo.mtlkyjj-bd04-01.lmo.mtl.metakyjj-bd04-01.lmo.objkyjj-bd04-01.lmo.obj.metakyjj-bd04-21.lmo.mtlkyjj-bd04-21.lmo.mtl.metakyjj-bd04-21.lmo.objkyjj-bd04-21.lmo.obj.metakyjj-bd04-31.lmo.mtlkyjj-bd04-31.lmo.mtl.metakyjj-bd04-31.lmo.objkyjj-bd04-31.lmo.obj.metakyjj-bd04-41.lmo.mtlkyjj-bd04-41.lmo.mtl.metakyjj-bd04-41.lmo.objkyjj-bd04-41.lmo.obj.metakyjj-bd05-01.lmo.mtlkyjj-bd05-01.lmo.mtl.metakyjj-bd05-01.lmo.objkyjj-bd05-01.lmo.obj.metakyjj-bd05-21.lmo.mtlkyjj-bd05-21.lmo.mtl.metakyjj-bd05-21.lmo.objkyjj-bd05-21.lmo.obj.metakyjj-bd05-22.lmo.mtlkyjj-bd05-22.lmo.mtl.metakyjj-bd05-22.lmo.objkyjj-bd05-22.lmo.obj.metakyjj-bd05-23.lmo.mtlkyjj-bd05-23.lmo.mtl.metakyjj-bd05-23.lmo.objkyjj-bd05-23.lmo.obj.metakyjj-bd05-31.lmo.mtlkyjj-bd05-31.lmo.mtl.metakyjj-bd05-31.lmo.objkyjj-bd05-31.lmo.obj.metakyjj-bd05-32.lmo.mtlkyjj-bd05-32.lmo.mtl.metakyjj-bd05-32.lmo.objkyjj-bd05-32.lmo.obj.metakyjj-bd05-33.lmo.mtlkyjj-bd05-33.lmo.mtl.metakyjj-bd05-33.lmo.objkyjj-bd05-33.lmo.obj.metakyjj-bd05-34.lmo.mtlkyjj-bd05-34.lmo.mtl.metakyjj-bd05-34.lmo.objkyjj-bd05-34.lmo.obj.metakyjj-bd06-01.lmo.mtlkyjj-bd06-01.lmo.mtl.metakyjj-bd06-01.lmo.objkyjj-bd06-01.lmo.obj.metakyjj-bd06-21.lmo.mtlkyjj-bd06-21.lmo.mtl.metakyjj-bd06-21.lmo.objkyjj-bd06-21.lmo.obj.metakyjj-bd06-22.lmo.mtlkyjj-bd06-22.lmo.mtl.metakyjj-bd06-22.lmo.objkyjj-bd06-22.lmo.obj.metakyjj-bd06-23.lmo.mtlkyjj-bd06-23.lmo.mtl.metakyjj-bd06-23.lmo.objkyjj-bd06-23.lmo.obj.metakyjj-bd06-24.lmo.mtlkyjj-bd06-24.lmo.mtl.metakyjj-bd06-24.lmo.objkyjj-bd06-24.lmo.obj.metakyjj-bd06-25.lmo.mtlkyjj-bd06-25.lmo.mtl.metakyjj-bd06-25.lmo.objkyjj-bd06-25.lmo.obj.metakyjj-bd06-26.lmo.mtlkyjj-bd06-26.lmo.mtl.metakyjj-bd06-26.lmo.objkyjj-bd06-26.lmo.obj.metakyjj-bd06-27.lmo.mtlkyjj-bd06-27.lmo.mtl.metakyjj-bd06-27.lmo.objkyjj-bd06-27.lmo.obj.metakyjj-bd06-28.lmo.mtlkyjj-bd06-28.lmo.mtl.metakyjj-bd06-28.lmo.objkyjj-bd06-28.lmo.obj.metakyjj-bd06-29.lmo.mtlkyjj-bd06-29.lmo.mtl.metakyjj-bd06-29.lmo.objkyjj-bd06-29.lmo.obj.metakyjj-bd07-01.lmo.mtlkyjj-bd07-01.lmo.mtl.metakyjj-bd07-01.lmo.objkyjj-bd07-01.lmo.obj.metakyjj-bd07-02.lmo.mtlkyjj-bd07-02.lmo.mtl.metakyjj-bd07-02.lmo.objkyjj-bd07-02.lmo.obj.metakyjj-bd07-03.lmo.mtlkyjj-bd07-03.lmo.mtl.metakyjj-bd07-03.lmo.objkyjj-bd07-03.lmo.obj.metakyjj-bd07-04.lmo.mtlkyjj-bd07-04.lmo.mtl.metakyjj-bd07-04.lmo.objkyjj-bd07-04.lmo.obj.metakyjj-bd07-05.lmo.mtlkyjj-bd07-05.lmo.mtl.metakyjj-bd07-05.lmo.objkyjj-bd07-05.lmo.obj.metakyjj-bd07-06.lmo.mtlkyjj-bd07-06.lmo.mtl.metakyjj-bd07-06.lmo.objkyjj-bd07-06.lmo.obj.metakyjj-bd07-07.lmo.mtlkyjj-bd07-07.lmo.mtl.metakyjj-bd07-07.lmo.objkyjj-bd07-07.lmo.obj.metalogin.lmo.mtllogin.lmo.mtl.metalogin.lmo.objlogin.lmo.obj.metalogin02.lmo.mtllogin02.lmo.mtl.metalogin02.lmo.objlogin02.lmo.obj.metalong001.lmo.mtllong001.lmo.mtl.metalong001.lmo.objlong001.lmo.obj.metalt-bd001-01.lmo.mtllt-bd001-01.lmo.mtl.metalt-bd001-01.lmo.objlt-bd001-01.lmo.obj.metalt-bd001-02.lmo.mtllt-bd001-02.lmo.mtl.metalt-bd001-02.lmo.objlt-bd001-02.lmo.obj.metalt-bd002.lmo.mtllt-bd002.lmo.mtl.metalt-bd002.lmo.objlt-bd002.lmo.obj.metalt-bd005.lmo.mtllt-bd005.lmo.mtl.metalt-bd005.lmo.objlt-bd005.lmo.obj.metalt-bd007.lmo.mtllt-bd007.lmo.mtl.metalt-bd007.lmo.objlt-bd007.lmo.obj.metalt-bd009.lmo.mtllt-bd009.lmo.mtl.metalt-bd009.lmo.objlt-bd009.lmo.obj.metalt-bd011.lmo.mtllt-bd011.lmo.mtl.metalt-bd011.lmo.objlt-bd011.lmo.obj.metalt-bd012.lmo.mtllt-bd012.lmo.mtl.metalt-bd012.lmo.objlt-bd012.lmo.obj.metalt-bd013-01.lmo.mtllt-bd013-01.lmo.mtl.metalt-bd013-01.lmo.objlt-bd013-01.lmo.obj.metalt-bd013-02.lmo.mtllt-bd013-02.lmo.mtl.metalt-bd013-02.lmo.objlt-bd013-02.lmo.obj.metalt-bd013-03.lmo.mtllt-bd013-03.lmo.mtl.metalt-bd013-03.lmo.objlt-bd013-03.lmo.obj.metalt-bd013-04.lmo.mtllt-bd013-04.lmo.mtl.metalt-bd013-04.lmo.objlt-bd013-04.lmo.obj.metalt-bd014.lmo.mtllt-bd014.lmo.mtl.metalt-bd014.lmo.objlt-bd014.lmo.obj.metalt-bd015.lmo.mtllt-bd015.lmo.mtl.metalt-bd015.lmo.objlt-bd015.lmo.obj.metalt-bd016.lmo.mtllt-bd016.lmo.mtl.metalt-bd016.lmo.objlt-bd016.lmo.obj.metalt-bd017.lmo.mtllt-bd017.lmo.mtl.metalt-bd017.lmo.objlt-bd017.lmo.obj.metalt-bd018-01.lmo.mtllt-bd018-01.lmo.mtl.metalt-bd018-01.lmo.objlt-bd018-01.lmo.obj.metalt-bd018-02.lmo.mtllt-bd018-02.lmo.mtl.metalt-bd018-02.lmo.objlt-bd018-02.lmo.obj.metalt-bd018-03.lmo.mtllt-bd018-03.lmo.mtl.metalt-bd018-03.lmo.objlt-bd018-03.lmo.obj.metalt-bd018-04.lmo.mtllt-bd018-04.lmo.mtl.metalt-bd018-04.lmo.objlt-bd018-04.lmo.obj.metalt-bd018-05.lmo.mtllt-bd018-05.lmo.mtl.metalt-bd018-05.lmo.objlt-bd018-05.lmo.obj.metalt-bd018-06.lmo.mtllt-bd018-06.lmo.mtl.metalt-bd018-06.lmo.objlt-bd018-06.lmo.obj.metalt-bd018-07.lmo.mtllt-bd018-07.lmo.mtl.metalt-bd018-07.lmo.objlt-bd018-07.lmo.obj.metalt-bd018-08.lmo.mtllt-bd018-08.lmo.mtl.metalt-bd018-08.lmo.objlt-bd018-08.lmo.obj.metalt-bd018-09.lmo.mtllt-bd018-09.lmo.mtl.metalt-bd018-09.lmo.objlt-bd018-09.lmo.obj.metalt-bd018-10.lmo.mtllt-bd018-10.lmo.mtl.metalt-bd018-10.lmo.objlt-bd018-10.lmo.obj.metalt-bd018-11.lmo.mtllt-bd018-11.lmo.mtl.metalt-bd018-11.lmo.objlt-bd018-11.lmo.obj.metalt-bd019.lmo.mtllt-bd019.lmo.mtl.metalt-bd019.lmo.objlt-bd019.lmo.obj.metalt-bd020.lmo.mtllt-bd020.lmo.mtl.metalt-bd020.lmo.objlt-bd020.lmo.obj.metalt-bd021.lmo.mtllt-bd021.lmo.mtl.metalt-bd021.lmo.objlt-bd021.lmo.obj.metalt-bd022.lmo.mtllt-bd022.lmo.mtl.metalt-bd022.lmo.objlt-bd022.lmo.obj.metalt-bd024.lmo.mtllt-bd024.lmo.mtl.metalt-bd024.lmo.objlt-bd024.lmo.obj.metalt-bd025-01.lmo.mtllt-bd025-01.lmo.mtl.metalt-bd025-01.lmo.objlt-bd025-01.lmo.obj.metalt-bd025-02.lmo.mtllt-bd025-02.lmo.mtl.metalt-bd025-02.lmo.objlt-bd025-02.lmo.obj.metalt-bd025-03.lmo.mtllt-bd025-03.lmo.mtl.metalt-bd025-03.lmo.objlt-bd025-03.lmo.obj.metalt-bd025-04.lmo.mtllt-bd025-04.lmo.mtl.metalt-bd025-04.lmo.objlt-bd025-04.lmo.obj.metalt-bd025-05.lmo.mtllt-bd025-05.lmo.mtl.metalt-bd025-05.lmo.objlt-bd025-05.lmo.obj.metalt-bd025-06.lmo.mtllt-bd025-06.lmo.mtl.metalt-bd025-06.lmo.objlt-bd025-06.lmo.obj.metalt-bd025-07.lmo.mtllt-bd025-07.lmo.mtl.metalt-bd025-07.lmo.objlt-bd025-07.lmo.obj.metalt-bd025-08.lmo.mtllt-bd025-08.lmo.mtl.metalt-bd025-08.lmo.objlt-bd025-08.lmo.obj.metalt-bd025-09.lmo.mtllt-bd025-09.lmo.mtl.metalt-bd025-09.lmo.objlt-bd025-09.lmo.obj.metalt-bd026.lmo.mtllt-bd026.lmo.mtl.metalt-bd026.lmo.objlt-bd026.lmo.obj.metalt-bd027.lmo.mtllt-bd027.lmo.mtl.metalt-bd027.lmo.objlt-bd027.lmo.obj.metalt-bd028.lmo.mtllt-bd028.lmo.mtl.metalt-bd028.lmo.objlt-bd028.lmo.obj.metalt-bd029.lmo.mtllt-bd029.lmo.mtl.metalt-bd029.lmo.objlt-bd029.lmo.obj.metalt-bd030.lmo.mtllt-bd030.lmo.mtl.metalt-bd030.lmo.objlt-bd030.lmo.obj.metalt-bd031.lmo.mtllt-bd031.lmo.mtl.metalt-bd031.lmo.objlt-bd031.lmo.obj.metalt-bd032.lmo.mtllt-bd032.lmo.mtl.metalt-bd032.lmo.objlt-bd032.lmo.obj.metalt-bd033.lmo.mtllt-bd033.lmo.mtl.metalt-bd033.lmo.objlt-bd033.lmo.obj.metalt-bd034.lmo.mtllt-bd034.lmo.mtl.metalt-bd034.lmo.objlt-bd034.lmo.obj.metalt-bd035.lmo.mtllt-bd035.lmo.mtl.metalt-bd035.lmo.objlt-bd035.lmo.obj.metalt-bd036-01.lmo.mtllt-bd036-01.lmo.mtl.metalt-bd036-01.lmo.objlt-bd036-01.lmo.obj.metalt-bd036-02.lmo.mtllt-bd036-02.lmo.mtl.metalt-bd036-02.lmo.objlt-bd036-02.lmo.obj.metalt-bd036-03.lmo.mtllt-bd036-03.lmo.mtl.metalt-bd036-03.lmo.objlt-bd036-03.lmo.obj.metalt-bd037.lmo.mtllt-bd037.lmo.mtl.metalt-bd037.lmo.objlt-bd037.lmo.obj.metalt-bd038.lmo.mtllt-bd038.lmo.mtl.metalt-bd038.lmo.objlt-bd038.lmo.obj.metalt-bd039.lmo.mtllt-bd039.lmo.mtl.metalt-bd039.lmo.objlt-bd039.lmo.obj.metaml-bd045.lmo.mtlml-bd045.lmo.mtl.metaml-bd045.lmo.objml-bd045.lmo.obj.metamz-bd001.lmo.mtlmz-bd001.lmo.mtl.metamz-bd001.lmo.objmz-bd001.lmo.obj.metamz-bd002.lmo.mtlmz-bd002.lmo.mtl.metamz-bd002.lmo.objmz-bd002.lmo.obj.metamz-bd003.lmo.mtlmz-bd003.lmo.mtl.metamz-bd003.lmo.objmz-bd003.lmo.obj.metamz-bd004.lmo.mtlmz-bd004.lmo.mtl.metamz-bd004.lmo.objmz-bd004.lmo.obj.metamz-bd005.lmo.mtlmz-bd005.lmo.mtl.metamz-bd005.lmo.objmz-bd005.lmo.obj.metamz-bd006.lmo.mtlmz-bd006.lmo.mtl.metamz-bd006.lmo.objmz-bd006.lmo.obj.metamz-bd007.lmo.mtlmz-bd007.lmo.mtl.metamz-bd007.lmo.objmz-bd007.lmo.obj.metamz-bd008.lmo.mtlmz-bd008.lmo.mtl.metamz-bd008.lmo.objmz-bd008.lmo.obj.metamz-bd009.lmo.mtlmz-bd009.lmo.mtl.metamz-bd009.lmo.objmz-bd009.lmo.obj.metamz-bd010.lmo.mtlmz-bd010.lmo.mtl.metamz-bd010.lmo.objmz-bd010.lmo.obj.metamz-bd011-01.lmo.mtlmz-bd011-01.lmo.mtl.metamz-bd011-01.lmo.objmz-bd011-01.lmo.obj.metamz-bd011-02.lmo.mtlmz-bd011-02.lmo.mtl.metamz-bd011-02.lmo.objmz-bd011-02.lmo.obj.metamz-bd011-03.lmo.mtlmz-bd011-03.lmo.mtl.metamz-bd011-03.lmo.objmz-bd011-03.lmo.obj.metamz-bd011-04.lmo.mtlmz-bd011-04.lmo.mtl.metamz-bd011-04.lmo.objmz-bd011-04.lmo.obj.metamz-bd011-05.lmo.mtlmz-bd011-05.lmo.mtl.metamz-bd011-05.lmo.objmz-bd011-05.lmo.obj.metamz-bd011-06.lmo.mtlmz-bd011-06.lmo.mtl.metamz-bd011-06.lmo.objmz-bd011-06.lmo.obj.metamz-bd011.lmo.mtlmz-bd011.lmo.mtl.metamz-bd011.lmo.objmz-bd011.lmo.obj.metamz-bd013.lmo.mtlmz-bd013.lmo.mtl.metamz-bd013.lmo.objmz-bd013.lmo.obj.metamz-bd014.lmo.mtlmz-bd014.lmo.mtl.metamz-bd014.lmo.objmz-bd014.lmo.obj.metamz-bd015.lmo.mtlmz-bd015.lmo.mtl.metamz-bd015.lmo.objmz-bd015.lmo.obj.metamz-bd016.lmo.mtlmz-bd016.lmo.mtl.metamz-bd016.lmo.objmz-bd016.lmo.obj.metamz-bd017.lmo.mtlmz-bd017.lmo.mtl.metamz-bd017.lmo.objmz-bd017.lmo.obj.metamz-bd018.lmo.mtlmz-bd018.lmo.mtl.metamz-bd018.lmo.objmz-bd018.lmo.obj.metamz-bd019.lmo.mtlmz-bd019.lmo.mtl.metamz-bd019.lmo.objmz-bd019.lmo.obj.metamz-bd020.lmo.mtlmz-bd020.lmo.mtl.metamz-bd020.lmo.objmz-bd020.lmo.obj.metamz-bd021.lmo.mtlmz-bd021.lmo.mtl.metamz-bd021.lmo.objmz-bd021.lmo.obj.metamz-bd022.lmo.mtlmz-bd022.lmo.mtl.metamz-bd022.lmo.objmz-bd022.lmo.obj.metamz-bd023.lmo.mtlmz-bd023.lmo.mtl.metamz-bd023.lmo.objmz-bd023.lmo.obj.metamz-bd024.lmo.mtlmz-bd024.lmo.mtl.metamz-bd024.lmo.objmz-bd024.lmo.obj.metamz-bd025.lmo.mtlmz-bd025.lmo.mtl.metamz-bd025.lmo.objmz-bd025.lmo.obj.metamz-bd026.lmo.mtlmz-bd026.lmo.mtl.metamz-bd026.lmo.objmz-bd026.lmo.obj.metamz-bd027.lmo.mtlmz-bd027.lmo.mtl.metamz-bd027.lmo.objmz-bd027.lmo.obj.metamz-bd028.lmo.mtlmz-bd028.lmo.mtl.metamz-bd028.lmo.objmz-bd028.lmo.obj.metamz-bd029.lmo.mtlmz-bd029.lmo.mtl.metamz-bd029.lmo.objmz-bd029.lmo.obj.metamz-bd030.lmo.mtlmz-bd030.lmo.mtl.metamz-bd030.lmo.objmz-bd030.lmo.obj.metamz-bd099.lmo.mtlmz-bd099.lmo.mtl.metamz-bd099.lmo.objmz-bd099.lmo.obj.metanml-bd001.lmo.mtlnml-bd001.lmo.mtl.metanml-bd001.lmo.objnml-bd001.lmo.obj.metanml-bd002.lmo.mtlnml-bd002.lmo.mtl.metanml-bd002.lmo.objnml-bd002.lmo.obj.metanml-bd003.lmo.mtlnml-bd003.lmo.mtl.metanml-bd003.lmo.objnml-bd003.lmo.obj.metanml-bd004.lmo.mtlnml-bd004.lmo.mtl.metanml-bd004.lmo.objnml-bd004.lmo.obj.metanml-bd005.lmo.mtlnml-bd005.lmo.mtl.metanml-bd005.lmo.objnml-bd005.lmo.obj.metanml-bd006.lmo.mtlnml-bd006.lmo.mtl.metanml-bd006.lmo.objnml-bd006.lmo.obj.metanml-bd007.lmo.mtlnml-bd007.lmo.mtl.metanml-bd007.lmo.objnml-bd007.lmo.obj.metanml-bd008.lmo.mtlnml-bd008.lmo.mtl.metanml-bd008.lmo.objnml-bd008.lmo.obj.metanml-bd009.lmo.mtlnml-bd009.lmo.mtl.metanml-bd009.lmo.objnml-bd009.lmo.obj.metanml-bd010.lmo.mtlnml-bd010.lmo.mtl.metanml-bd010.lmo.objnml-bd010.lmo.obj.metanml-bd011.lmo.mtlnml-bd011.lmo.mtl.metanml-bd011.lmo.objnml-bd011.lmo.obj.metanml-bd012.lmo.mtlnml-bd012.lmo.mtl.metanml-bd012.lmo.objnml-bd012.lmo.obj.metanml-bd013.lmo.mtlnml-bd013.lmo.mtl.metanml-bd013.lmo.objnml-bd013.lmo.obj.metanml-bd014.lmo.mtlnml-bd014.lmo.mtl.metanml-bd014.lmo.objnml-bd014.lmo.obj.metanml-bd015.lmo.mtlnml-bd015.lmo.mtl.metanml-bd015.lmo.objnml-bd015.lmo.obj.metanml-bd016.lmo.mtlnml-bd016.lmo.mtl.metanml-bd016.lmo.objnml-bd016.lmo.obj.metanml-bd017.lmo.mtlnml-bd017.lmo.mtl.metanml-bd017.lmo.objnml-bd017.lmo.obj.metanml-bd018.lmo.mtlnml-bd018.lmo.mtl.metanml-bd018.lmo.objnml-bd018.lmo.obj.metanml-bd019.lmo.mtlnml-bd019.lmo.mtl.metanml-bd019.lmo.objnml-bd019.lmo.obj.metanml-bd020.lmo.mtlnml-bd020.lmo.mtl.metanml-bd020.lmo.objnml-bd020.lmo.obj.metanml-bd021.lmo.mtlnml-bd021.lmo.mtl.metanml-bd021.lmo.objnml-bd021.lmo.obj.metanml-bd022.lmo.mtlnml-bd022.lmo.mtl.metanml-bd022.lmo.objnml-bd022.lmo.obj.metanml-bd023.lmo.mtlnml-bd023.lmo.mtl.metanml-bd023.lmo.objnml-bd023.lmo.obj.metanml-bd024.lmo.mtlnml-bd024.lmo.mtl.metanml-bd024.lmo.objnml-bd024.lmo.obj.metanml-bd025.lmo.mtlnml-bd025.lmo.mtl.metanml-bd025.lmo.objnml-bd025.lmo.obj.metanml-bd026.lmo.mtlnml-bd026.lmo.mtl.metanml-bd026.lmo.objnml-bd026.lmo.obj.metanml-bd027.lmo.mtlnml-bd027.lmo.mtl.metanml-bd027.lmo.objnml-bd027.lmo.obj.metanml-bd028.lmo.mtlnml-bd028.lmo.mtl.metanml-bd028.lmo.objnml-bd028.lmo.obj.metanml-bd029.lmo.mtlnml-bd029.lmo.mtl.metanml-bd029.lmo.objnml-bd029.lmo.obj.metanml-bd030.lmo.mtlnml-bd030.lmo.mtl.metanml-bd030.lmo.objnml-bd030.lmo.obj.metanml-bd031.lmo.mtlnml-bd031.lmo.mtl.metanml-bd031.lmo.objnml-bd031.lmo.obj.metanml-bd032.lmo.mtlnml-bd032.lmo.mtl.metanml-bd032.lmo.objnml-bd032.lmo.obj.metanml-bd033.lmo.mtlnml-bd033.lmo.mtl.metanml-bd033.lmo.objnml-bd033.lmo.obj.metanml-bd034.lmo.mtlnml-bd034.lmo.mtl.metanml-bd034.lmo.objnml-bd034.lmo.obj.metanml-bd035.lmo.mtlnml-bd035.lmo.mtl.metanml-bd035.lmo.objnml-bd035.lmo.obj.metanml-bd036.lmo.mtlnml-bd036.lmo.mtl.metanml-bd036.lmo.objnml-bd036.lmo.obj.metanml-bd037.lmo.mtlnml-bd037.lmo.mtl.metanml-bd037.lmo.objnml-bd037.lmo.obj.metanml-bd038.lmo.mtlnml-bd038.lmo.mtl.metanml-bd038.lmo.objnml-bd038.lmo.obj.metanml-bd039.lmo.mtlnml-bd039.lmo.mtl.metanml-bd039.lmo.objnml-bd039.lmo.obj.metanml-bd040.lmo.mtlnml-bd040.lmo.mtl.metanml-bd040.lmo.objnml-bd040.lmo.obj.metanml-bd041.lmo.mtlnml-bd041.lmo.mtl.metanml-bd041.lmo.objnml-bd041.lmo.obj.metanml-bd042.lmo.mtlnml-bd042.lmo.mtl.metanml-bd042.lmo.objnml-bd042.lmo.obj.metanml-bd043.lmo.mtlnml-bd043.lmo.mtl.metanml-bd043.lmo.objnml-bd043.lmo.obj.metanml-bd044.lmo.mtlnml-bd044.lmo.mtl.metanml-bd044.lmo.objnml-bd044.lmo.obj.metanml-bd045.lmo.mtlnml-bd045.lmo.mtl.metanml-bd045.lmo.objnml-bd045.lmo.obj.metanml-bd046.lmo.mtlnml-bd046.lmo.mtl.metanml-bd046.lmo.objnml-bd046.lmo.obj.metanml-bd047.lmo.mtlnml-bd047.lmo.mtl.metanml-bd047.lmo.objnml-bd047.lmo.obj.metanml-bd048.lmo.mtlnml-bd048.lmo.mtl.metanml-bd048.lmo.objnml-bd048.lmo.obj.metanml-bd049.lmo.mtlnml-bd049.lmo.mtl.metanml-bd049.lmo.objnml-bd049.lmo.obj.metanml-bd050.lmo.mtlnml-bd050.lmo.mtl.metanml-bd050.lmo.objnml-bd050.lmo.obj.metanml-bd051.lmo.mtlnml-bd051.lmo.mtl.metanml-bd051.lmo.objnml-bd051.lmo.obj.metanml-bd052.lmo.mtlnml-bd052.lmo.mtl.metanml-bd052.lmo.objnml-bd052.lmo.obj.metanml-bd053.lmo.mtlnml-bd053.lmo.mtl.metanml-bd053.lmo.objnml-bd053.lmo.obj.metanml-bd054.lmo.mtlnml-bd054.lmo.mtl.metanml-bd054.lmo.objnml-bd054.lmo.obj.metanml-bd055.lmo.mtlnml-bd055.lmo.mtl.metanml-bd055.lmo.objnml-bd055.lmo.obj.metanml-bd056.lmo.mtlnml-bd056.lmo.mtl.metanml-bd056.lmo.objnml-bd056.lmo.obj.metanml-bd057.lmo.mtlnml-bd057.lmo.mtl.metanml-bd057.lmo.objnml-bd057.lmo.obj.metanml-bd058.lmo.mtlnml-bd058.lmo.mtl.metanml-bd058.lmo.objnml-bd058.lmo.obj.metanml-bd059.lmo.mtlnml-bd059.lmo.mtl.metanml-bd059.lmo.objnml-bd059.lmo.obj.metanml-bd060.lmo.mtlnml-bd060.lmo.mtl.metanml-bd060.lmo.objnml-bd060.lmo.obj.metanml-bd061.lmo.mtlnml-bd061.lmo.mtl.metanml-bd061.lmo.objnml-bd061.lmo.obj.metanml-bd062.lmo.mtlnml-bd062.lmo.mtl.metanml-bd062.lmo.objnml-bd062.lmo.obj.metanml-bd063.lmo.mtlnml-bd063.lmo.mtl.metanml-bd063.lmo.objnml-bd063.lmo.obj.metanml-bd064.lmo.mtlnml-bd064.lmo.mtl.metanml-bd064.lmo.objnml-bd064.lmo.obj.metanml-bd065.lmo.mtlnml-bd065.lmo.mtl.metanml-bd065.lmo.objnml-bd065.lmo.obj.metanml-bd066.lmo.mtlnml-bd066.lmo.mtl.metanml-bd066.lmo.objnml-bd066.lmo.obj.metanml-bd067.lmo.mtlnml-bd067.lmo.mtl.metanml-bd067.lmo.objnml-bd067.lmo.obj.metanml-bd068.lmo.mtlnml-bd068.lmo.mtl.metanml-bd068.lmo.objnml-bd068.lmo.obj.metanml-bd069.lmo.mtlnml-bd069.lmo.mtl.metanml-bd069.lmo.objnml-bd069.lmo.obj.metanml-bd070.lmo.mtlnml-bd070.lmo.mtl.metanml-bd070.lmo.objnml-bd070.lmo.obj.metanml-bd071.lmo.mtlnml-bd071.lmo.mtl.metanml-bd071.lmo.objnml-bd071.lmo.obj.metanml-bd072.lmo.mtlnml-bd072.lmo.mtl.metanml-bd072.lmo.objnml-bd072.lmo.obj.metanml-bd073.lmo.mtlnml-bd073.lmo.mtl.metanml-bd073.lmo.objnml-bd073.lmo.obj.metanml-bd074.lmo.mtlnml-bd074.lmo.mtl.metanml-bd074.lmo.objnml-bd074.lmo.obj.metanml-bd075.lmo.mtlnml-bd075.lmo.mtl.metanml-bd075.lmo.objnml-bd075.lmo.obj.metanml-bd076.lmo.mtlnml-bd076.lmo.mtl.metanml-bd076.lmo.objnml-bd076.lmo.obj.metanml-bd077.lmo.mtlnml-bd077.lmo.mtl.metanml-bd077.lmo.objnml-bd077.lmo.obj.metanml-bd078.lmo.mtlnml-bd078.lmo.mtl.metanml-bd078.lmo.objnml-bd078.lmo.obj.metanml-bd079.lmo.mtlnml-bd079.lmo.mtl.metanml-bd079.lmo.objnml-bd079.lmo.obj.metanml-bd080.lmo.mtlnml-bd080.lmo.mtl.metanml-bd080.lmo.objnml-bd080.lmo.obj.metanml-bd081.lmo.mtlnml-bd081.lmo.mtl.metanml-bd081.lmo.objnml-bd081.lmo.obj.metanml-bd082.lmo.mtlnml-bd082.lmo.mtl.metanml-bd082.lmo.objnml-bd082.lmo.obj.metanml-bd083.lmo.mtlnml-bd083.lmo.mtl.metanml-bd083.lmo.objnml-bd083.lmo.obj.metanml-bd084.lmo.mtlnml-bd084.lmo.mtl.metanml-bd084.lmo.objnml-bd084.lmo.obj.metanml-bd085.lmo.mtlnml-bd085.lmo.mtl.metanml-bd085.lmo.objnml-bd085.lmo.obj.metanml-bd086.lmo.mtlnml-bd086.lmo.mtl.metanml-bd086.lmo.objnml-bd086.lmo.obj.metanml-bd087.lmo.mtlnml-bd087.lmo.mtl.metanml-bd087.lmo.objnml-bd087.lmo.obj.metanml-bd088.lmo.mtlnml-bd088.lmo.mtl.metanml-bd088.lmo.objnml-bd088.lmo.obj.metanml-bd089.lmo.mtlnml-bd089.lmo.mtl.metanml-bd089.lmo.objnml-bd089.lmo.obj.metanml-bd090.lmo.mtlnml-bd090.lmo.mtl.metanml-bd090.lmo.objnml-bd090.lmo.obj.metanml-bd091.lmo.mtlnml-bd091.lmo.mtl.metanml-bd091.lmo.objnml-bd091.lmo.obj.metanml-bd092.lmo.mtlnml-bd092.lmo.mtl.metanml-bd092.lmo.objnml-bd092.lmo.obj.metanml-bd093.lmo.mtlnml-bd093.lmo.mtl.metanml-bd093.lmo.objnml-bd093.lmo.obj.metanml-bd094.lmo.mtlnml-bd094.lmo.mtl.metanml-bd094.lmo.objnml-bd094.lmo.obj.metanml-bd095.lmo.mtlnml-bd095.lmo.mtl.metanml-bd095.lmo.objnml-bd095.lmo.obj.metanml-bd096.lmo.mtlnml-bd096.lmo.mtl.metanml-bd096.lmo.objnml-bd096.lmo.obj.metanml-bd097.lmo.mtlnml-bd097.lmo.mtl.metanml-bd097.lmo.objnml-bd097.lmo.obj.metanml-bd098.lmo.mtlnml-bd098.lmo.mtl.metanml-bd098.lmo.objnml-bd098.lmo.obj.metanml-bd099.lmo.mtlnml-bd099.lmo.mtl.metanml-bd099.lmo.objnml-bd099.lmo.obj.metanml-bd100.lmo.mtlnml-bd100.lmo.mtl.metanml-bd100.lmo.objnml-bd100.lmo.obj.metanml-bd101.lmo.mtlnml-bd101.lmo.mtl.metanml-bd101.lmo.objnml-bd101.lmo.obj.metanml-bd102.lmo.mtlnml-bd102.lmo.mtl.metanml-bd102.lmo.objnml-bd102.lmo.obj.metanml-bd103.lmo.mtlnml-bd103.lmo.mtl.metanml-bd103.lmo.objnml-bd103.lmo.obj.metanml-bd104.lmo.mtlnml-bd104.lmo.mtl.metanml-bd104.lmo.objnml-bd104.lmo.obj.metanml-bd105.lmo.mtlnml-bd105.lmo.mtl.metanml-bd105.lmo.objnml-bd105.lmo.obj.metanml-bd106.lmo.mtlnml-bd106.lmo.mtl.metanml-bd106.lmo.objnml-bd106.lmo.obj.metanml-bd107.lmo.mtlnml-bd107.lmo.mtl.metanml-bd107.lmo.objnml-bd107.lmo.obj.metanml-bd108.lmo.mtlnml-bd108.lmo.mtl.metanml-bd108.lmo.objnml-bd108.lmo.obj.metanml-bd109.lmo.mtlnml-bd109.lmo.mtl.metanml-bd109.lmo.objnml-bd109.lmo.obj.metanml-bd110.lmo.mtlnml-bd110.lmo.mtl.metanml-bd110.lmo.objnml-bd110.lmo.obj.metanml-bd111.lmo.mtlnml-bd111.lmo.mtl.metanml-bd111.lmo.objnml-bd111.lmo.obj.metanml-bd112.lmo.mtlnml-bd112.lmo.mtl.metanml-bd112.lmo.objnml-bd112.lmo.obj.metanml-bd113.lmo.mtlnml-bd113.lmo.mtl.metanml-bd113.lmo.objnml-bd113.lmo.obj.metanml-bd114.lmo.mtlnml-bd114.lmo.mtl.metanml-bd114.lmo.objnml-bd114.lmo.obj.metanml-bd115.lmo.mtlnml-bd115.lmo.mtl.metanml-bd115.lmo.objnml-bd115.lmo.obj.metanml-bd116.lmo.mtlnml-bd116.lmo.mtl.metanml-bd116.lmo.objnml-bd116.lmo.obj.metanml-bd117.lmo.mtlnml-bd117.lmo.mtl.metanml-bd117.lmo.objnml-bd117.lmo.obj.metanml-bd118.lmo.mtlnml-bd118.lmo.mtl.metanml-bd118.lmo.objnml-bd118.lmo.obj.metanml-bd119.lmo.mtlnml-bd119.lmo.mtl.metanml-bd119.lmo.objnml-bd119.lmo.obj.metanml-bd120.lmo.mtlnml-bd120.lmo.mtl.metanml-bd120.lmo.objnml-bd120.lmo.obj.metanml-bd121.lmo.mtlnml-bd121.lmo.mtl.metanml-bd121.lmo.objnml-bd121.lmo.obj.metanml-bd122.lmo.mtlnml-bd122.lmo.mtl.metanml-bd122.lmo.objnml-bd122.lmo.obj.metanml-bd123.lmo.mtlnml-bd123.lmo.mtl.metanml-bd123.lmo.objnml-bd123.lmo.obj.metanml-bd124.lmo.mtlnml-bd124.lmo.mtl.metanml-bd124.lmo.objnml-bd124.lmo.obj.metanml-bd125.lmo.mtlnml-bd125.lmo.mtl.metanml-bd125.lmo.objnml-bd125.lmo.obj.metanml-bd126.lmo.mtlnml-bd126.lmo.mtl.metanml-bd126.lmo.objnml-bd126.lmo.obj.metanml-bd127.lmo.mtlnml-bd127.lmo.mtl.metanml-bd127.lmo.objnml-bd127.lmo.obj.metanml-bd128-01.lmo.mtlnml-bd128-01.lmo.mtl.metanml-bd128-01.lmo.objnml-bd128-01.lmo.obj.metanml-bd128-02.lmo.mtlnml-bd128-02.lmo.mtl.metanml-bd128-02.lmo.objnml-bd128-02.lmo.obj.metanml-bd128-03.lmo.mtlnml-bd128-03.lmo.mtl.metanml-bd128-03.lmo.objnml-bd128-03.lmo.obj.metanml-bd128-04.lmo.mtlnml-bd128-04.lmo.mtl.metanml-bd128-04.lmo.objnml-bd128-04.lmo.obj.metanml-bd129.lmo.mtlnml-bd129.lmo.mtl.metanml-bd129.lmo.objnml-bd129.lmo.obj.metanml-bd130.lmo.mtlnml-bd130.lmo.mtl.metanml-bd130.lmo.objnml-bd130.lmo.obj.metanml-bd131.lmo.mtlnml-bd131.lmo.mtl.metanml-bd131.lmo.objnml-bd131.lmo.obj.metanml-bd132.lmo.mtlnml-bd132.lmo.mtl.metanml-bd132.lmo.objnml-bd132.lmo.obj.metanml-bd133.lmo.mtlnml-bd133.lmo.mtl.metanml-bd133.lmo.objnml-bd133.lmo.obj.metanml-bd134.lmo.mtlnml-bd134.lmo.mtl.metanml-bd134.lmo.objnml-bd134.lmo.obj.metanml-bd135.lmo.mtlnml-bd135.lmo.mtl.metanml-bd135.lmo.objnml-bd135.lmo.obj.metanml-bd136.lmo.mtlnml-bd136.lmo.mtl.metanml-bd136.lmo.objnml-bd136.lmo.obj.metanml-bd137.lmo.mtlnml-bd137.lmo.mtl.metanml-bd137.lmo.objnml-bd137.lmo.obj.metanml-bd138.lmo.mtlnml-bd138.lmo.mtl.metanml-bd138.lmo.objnml-bd138.lmo.obj.metanml-bd139.lmo.mtlnml-bd139.lmo.mtl.metanml-bd139.lmo.objnml-bd139.lmo.obj.metanml-bd140.lmo.mtlnml-bd140.lmo.mtl.metanml-bd140.lmo.objnml-bd140.lmo.obj.metanml-bd141.lmo.mtlnml-bd141.lmo.mtl.metanml-bd141.lmo.objnml-bd141.lmo.obj.metanml-bd142.lmo.mtlnml-bd142.lmo.mtl.metanml-bd142.lmo.objnml-bd142.lmo.obj.metanml-bd143.lmo.mtlnml-bd143.lmo.mtl.metanml-bd143.lmo.objnml-bd143.lmo.obj.metanml-bd144.lmo.mtlnml-bd144.lmo.mtl.metanml-bd144.lmo.objnml-bd144.lmo.obj.metanml-bd145.lmo.mtlnml-bd145.lmo.mtl.metanml-bd145.lmo.objnml-bd145.lmo.obj.metanml-bd146.lmo.mtlnml-bd146.lmo.mtl.metanml-bd146.lmo.objnml-bd146.lmo.obj.metanml-bd147.lmo.mtlnml-bd147.lmo.mtl.metanml-bd147.lmo.objnml-bd147.lmo.obj.metanml-bd148-01.lmo.mtlnml-bd148-01.lmo.mtl.metanml-bd148-01.lmo.objnml-bd148-01.lmo.obj.metanml-bd148-02.lmo.mtlnml-bd148-02.lmo.mtl.metanml-bd148-02.lmo.objnml-bd148-02.lmo.obj.metanml-bd149.lmo.mtlnml-bd149.lmo.mtl.metanml-bd149.lmo.objnml-bd149.lmo.obj.metanml-bd150.lmo.mtlnml-bd150.lmo.mtl.metanml-bd150.lmo.objnml-bd150.lmo.obj.metanml-bd151.lmo.mtlnml-bd151.lmo.mtl.metanml-bd151.lmo.objnml-bd151.lmo.obj.metanml-bd152.lmo.mtlnml-bd152.lmo.mtl.metanml-bd152.lmo.objnml-bd152.lmo.obj.metanml-bd153.lmo.mtlnml-bd153.lmo.mtl.metanml-bd153.lmo.objnml-bd153.lmo.obj.metanml-bd154.lmo.mtlnml-bd154.lmo.mtl.metanml-bd154.lmo.objnml-bd154.lmo.obj.metanml-bd155.lmo.mtlnml-bd155.lmo.mtl.metanml-bd155.lmo.objnml-bd155.lmo.obj.metanml-bd156.lmo.mtlnml-bd156.lmo.mtl.metanml-bd156.lmo.objnml-bd156.lmo.obj.metanml-bd157.lmo.mtlnml-bd157.lmo.mtl.metanml-bd157.lmo.objnml-bd157.lmo.obj.metanml-bd158.lmo.mtlnml-bd158.lmo.mtl.metanml-bd158.lmo.objnml-bd158.lmo.obj.metanml-bd159.lmo.mtlnml-bd159.lmo.mtl.metanml-bd159.lmo.objnml-bd159.lmo.obj.metanml-bd160.lmo.mtlnml-bd160.lmo.mtl.metanml-bd160.lmo.objnml-bd160.lmo.obj.metanml-bd161.lmo.mtlnml-bd161.lmo.mtl.metanml-bd161.lmo.objnml-bd161.lmo.obj.metanml-bd162.lmo.mtlnml-bd162.lmo.mtl.metanml-bd162.lmo.objnml-bd162.lmo.obj.metanml-bd163.lmo.mtlnml-bd163.lmo.mtl.metanml-bd163.lmo.objnml-bd163.lmo.obj.metanml-bd164.lmo.mtlnml-bd164.lmo.mtl.metanml-bd164.lmo.objnml-bd164.lmo.obj.metanml-bd165.lmo.mtlnml-bd165.lmo.mtl.metanml-bd165.lmo.objnml-bd165.lmo.obj.metanml-bd166.lmo.mtlnml-bd166.lmo.mtl.metanml-bd166.lmo.objnml-bd166.lmo.obj.metanml-bd167.lmo.mtlnml-bd167.lmo.mtl.metanml-bd167.lmo.objnml-bd167.lmo.obj.metanml-bd168.lmo.mtlnml-bd168.lmo.mtl.metanml-bd168.lmo.objnml-bd168.lmo.obj.metanml-bd169.lmo.mtlnml-bd169.lmo.mtl.metanml-bd169.lmo.objnml-bd169.lmo.obj.metanml-bd170.lmo.mtlnml-bd170.lmo.mtl.metanml-bd170.lmo.objnml-bd170.lmo.obj.metanml-bd171.lmo.mtlnml-bd171.lmo.mtl.metanml-bd171.lmo.objnml-bd171.lmo.obj.metanml-bd172.lmo.mtlnml-bd172.lmo.mtl.metanml-bd172.lmo.objnml-bd172.lmo.obj.metanml-bd173.lmo.mtlnml-bd173.lmo.mtl.metanml-bd173.lmo.objnml-bd173.lmo.obj.metanml-bd174.lmo.mtlnml-bd174.lmo.mtl.metanml-bd174.lmo.objnml-bd174.lmo.obj.metanml-bd175.lmo.mtlnml-bd175.lmo.mtl.metanml-bd175.lmo.objnml-bd175.lmo.obj.metanml-bd176.lmo.mtlnml-bd176.lmo.mtl.metanml-bd176.lmo.objnml-bd176.lmo.obj.metanml-bd177.lmo.mtlnml-bd177.lmo.mtl.metanml-bd177.lmo.objnml-bd177.lmo.obj.metanml-bd178.lmo.mtlnml-bd178.lmo.mtl.metanml-bd178.lmo.objnml-bd178.lmo.obj.metanml-bd179.lmo.mtlnml-bd179.lmo.mtl.metanml-bd179.lmo.objnml-bd179.lmo.obj.metanml-bd180.lmo.mtlnml-bd180.lmo.mtl.metanml-bd180.lmo.objnml-bd180.lmo.obj.metanml-bd181.lmo.mtlnml-bd181.lmo.mtl.metanml-bd181.lmo.objnml-bd181.lmo.obj.metanml-bd182.lmo.mtlnml-bd182.lmo.mtl.metanml-bd182.lmo.objnml-bd182.lmo.obj.metanml-bd183.lmo.mtlnml-bd183.lmo.mtl.metanml-bd183.lmo.objnml-bd183.lmo.obj.metanml-bd184.lmo.mtlnml-bd184.lmo.mtl.metanml-bd184.lmo.objnml-bd184.lmo.obj.metanml-bd185.lmo.mtlnml-bd185.lmo.mtl.metanml-bd185.lmo.objnml-bd185.lmo.obj.metanml-bd186.lmo.mtlnml-bd186.lmo.mtl.metanml-bd186.lmo.objnml-bd186.lmo.obj.metanml-bd187.lmo.mtlnml-bd187.lmo.mtl.metanml-bd187.lmo.objnml-bd187.lmo.obj.metanml-bd188.lmo.mtlnml-bd188.lmo.mtl.metanml-bd188.lmo.objnml-bd188.lmo.obj.metanml-bd189.lmo.mtlnml-bd189.lmo.mtl.metanml-bd189.lmo.objnml-bd189.lmo.obj.metanml-bd190.lmo.mtlnml-bd190.lmo.mtl.metanml-bd190.lmo.objnml-bd190.lmo.obj.metanml-bd191.lmo.mtlnml-bd191.lmo.mtl.metanml-bd191.lmo.objnml-bd191.lmo.obj.metanml-bd192.lmo.mtlnml-bd192.lmo.mtl.metanml-bd192.lmo.objnml-bd192.lmo.obj.metanml-bd193.lmo.mtlnml-bd193.lmo.mtl.metanml-bd193.lmo.objnml-bd193.lmo.obj.metanml-bd194.lmo.mtlnml-bd194.lmo.mtl.metanml-bd194.lmo.objnml-bd194.lmo.obj.metanml-bd195.lmo.mtlnml-bd195.lmo.mtl.metanml-bd195.lmo.objnml-bd195.lmo.obj.metanml-bd196.lmo.mtlnml-bd196.lmo.mtl.metanml-bd196.lmo.objnml-bd196.lmo.obj.metanml-bd197.lmo.mtlnml-bd197.lmo.mtl.metanml-bd197.lmo.objnml-bd197.lmo.obj.metanml-bd198.lmo.mtlnml-bd198.lmo.mtl.metanml-bd198.lmo.objnml-bd198.lmo.obj.metanml-bd199.lmo.mtlnml-bd199.lmo.mtl.metanml-bd199.lmo.objnml-bd199.lmo.obj.metanml-bd200.lmo.mtlnml-bd200.lmo.mtl.metanml-bd200.lmo.objnml-bd200.lmo.obj.metanml-bd201.lmo.mtlnml-bd201.lmo.mtl.metanml-bd201.lmo.objnml-bd201.lmo.obj.metanml-bd202.lmo.mtlnml-bd202.lmo.mtl.metanml-bd202.lmo.objnml-bd202.lmo.obj.metanml-bd203.lmo.mtlnml-bd203.lmo.mtl.metanml-bd203.lmo.objnml-bd203.lmo.obj.metanml-bd204.lmo.mtlnml-bd204.lmo.mtl.metanml-bd204.lmo.objnml-bd204.lmo.obj.metanml-bd205.lmo.mtlnml-bd205.lmo.mtl.metanml-bd205.lmo.objnml-bd205.lmo.obj.metanml-bd206.lmo.mtlnml-bd206.lmo.mtl.metanml-bd206.lmo.objnml-bd206.lmo.obj.metanml-bd207.lmo.mtlnml-bd207.lmo.mtl.metanml-bd207.lmo.objnml-bd207.lmo.obj.metanml-bd208.lmo.mtlnml-bd208.lmo.mtl.metanml-bd208.lmo.objnml-bd208.lmo.obj.metanml-bd209.lmo.mtlnml-bd209.lmo.mtl.metanml-bd209.lmo.objnml-bd209.lmo.obj.metanml-bd210.lmo.mtlnml-bd210.lmo.mtl.metanml-bd210.lmo.objnml-bd210.lmo.obj.metanml-bd211.lmo.mtlnml-bd211.lmo.mtl.metanml-bd211.lmo.objnml-bd211.lmo.obj.metanml-bd212.lmo.mtlnml-bd212.lmo.mtl.metanml-bd212.lmo.objnml-bd212.lmo.obj.metanml-bd213.lmo.mtlnml-bd213.lmo.mtl.metanml-bd213.lmo.objnml-bd213.lmo.obj.metanml-bd214.lmo.mtlnml-bd214.lmo.mtl.metanml-bd214.lmo.objnml-bd214.lmo.obj.metanml-bd215.lmo.mtlnml-bd215.lmo.mtl.metanml-bd215.lmo.objnml-bd215.lmo.obj.metanml-bd216.lmo.mtlnml-bd216.lmo.mtl.metanml-bd216.lmo.objnml-bd216.lmo.obj.metanml-bd217.lmo.mtlnml-bd217.lmo.mtl.metanml-bd217.lmo.objnml-bd217.lmo.obj.metanml-bd218.lmo.mtlnml-bd218.lmo.mtl.metanml-bd218.lmo.objnml-bd218.lmo.obj.metanml-bd219.lmo.mtlnml-bd219.lmo.mtl.metanml-bd219.lmo.objnml-bd219.lmo.obj.metanml-bd220.lmo.mtlnml-bd220.lmo.mtl.metanml-bd220.lmo.objnml-bd220.lmo.obj.metanml-bd221.lmo.mtlnml-bd221.lmo.mtl.metanml-bd221.lmo.objnml-bd221.lmo.obj.metanml-bd222.lmo.mtlnml-bd222.lmo.mtl.metanml-bd222.lmo.objnml-bd222.lmo.obj.metasbm.lmo.mtlsbm.lmo.mtl.metasbm.lmo.objsbm.lmo.obj.metasky_bd01.lmo.mtlsky_bd01.lmo.mtl.metasky_bd01.lmo.objsky_bd01.lmo.obj.metasl-bd001.lmo.mtlsl-bd001.lmo.mtl.metasl-bd001.lmo.objsl-bd001.lmo.obj.metasl-bd003.lmo.mtlsl-bd003.lmo.mtl.metasl-bd003.lmo.objsl-bd003.lmo.obj.metasl-bd004.lmo.mtlsl-bd004.lmo.mtl.metasl-bd004.lmo.objsl-bd004.lmo.obj.metasl-bd005.lmo.mtlsl-bd005.lmo.mtl.metasl-bd005.lmo.objsl-bd005.lmo.obj.metasl-bd006.lmo.mtlsl-bd006.lmo.mtl.metasl-bd006.lmo.objsl-bd006.lmo.obj.metasl-bd007.lmo.mtlsl-bd007.lmo.mtl.metasl-bd007.lmo.objsl-bd007.lmo.obj.metasl-bd008.lmo.mtlsl-bd008.lmo.mtl.metasl-bd008.lmo.objsl-bd008.lmo.obj.metasl-bd009.lmo.mtlsl-bd009.lmo.mtl.metasl-bd009.lmo.objsl-bd009.lmo.obj.metasl-bd010.lmo.mtlsl-bd010.lmo.mtl.metasl-bd010.lmo.objsl-bd010.lmo.obj.metasl-bd011.lmo.mtlsl-bd011.lmo.mtl.metasl-bd011.lmo.objsl-bd011.lmo.obj.metasl-bd012.lmo.mtlsl-bd012.lmo.mtl.metasl-bd012.lmo.objsl-bd012.lmo.obj.metasl-bd013.lmo.mtlsl-bd013.lmo.mtl.metasl-bd013.lmo.objsl-bd013.lmo.obj.metasl-bd014-01.lmo.mtlsl-bd014-01.lmo.mtl.metasl-bd014-01.lmo.objsl-bd014-01.lmo.obj.metasl-bd014-02.lmo.mtlsl-bd014-02.lmo.mtl.metasl-bd014-02.lmo.objsl-bd014-02.lmo.obj.metasl-bd014-03.lmo.mtlsl-bd014-03.lmo.mtl.metasl-bd014-03.lmo.objsl-bd014-03.lmo.obj.metasl-bd014-04.lmo.mtlsl-bd014-04.lmo.mtl.metasl-bd014-04.lmo.objsl-bd014-04.lmo.obj.metasl-bd014-05.lmo.mtlsl-bd014-05.lmo.mtl.metasl-bd014-05.lmo.objsl-bd014-05.lmo.obj.metasl-bd015.lmo.mtlsl-bd015.lmo.mtl.metasl-bd015.lmo.objsl-bd015.lmo.obj.metasl-bd017-01.lmo.mtlsl-bd017-01.lmo.mtl.metasl-bd017-01.lmo.objsl-bd017-01.lmo.obj.metasl-bd017-02.lmo.mtlsl-bd017-02.lmo.mtl.metasl-bd017-02.lmo.objsl-bd017-02.lmo.obj.metasl-bd017-03.lmo.mtlsl-bd017-03.lmo.mtl.metasl-bd017-03.lmo.objsl-bd017-03.lmo.obj.metasl-bd019.lmo.mtlsl-bd019.lmo.mtl.metasl-bd019.lmo.objsl-bd019.lmo.obj.metasl-bd020.lmo.mtlsl-bd020.lmo.mtl.metasl-bd020.lmo.objsl-bd020.lmo.obj.metasl-bd021.lmo.mtlsl-bd021.lmo.mtl.metasl-bd021.lmo.objsl-bd021.lmo.obj.metasl-bd025.lmo.mtlsl-bd025.lmo.mtl.metasl-bd025.lmo.objsl-bd025.lmo.obj.metasl-bd026-01.lmo.mtlsl-bd026-01.lmo.mtl.metasl-bd026-01.lmo.objsl-bd026-01.lmo.obj.metasl-bd026-02.lmo.mtlsl-bd026-02.lmo.mtl.metasl-bd026-02.lmo.objsl-bd026-02.lmo.obj.metasl-bd026-03.lmo.mtlsl-bd026-03.lmo.mtl.metasl-bd026-03.lmo.objsl-bd026-03.lmo.obj.metasl-bd026-04.lmo.mtlsl-bd026-04.lmo.mtl.metasl-bd026-04.lmo.objsl-bd026-04.lmo.obj.metasl-bd026-05.lmo.mtlsl-bd026-05.lmo.mtl.metasl-bd026-05.lmo.objsl-bd026-05.lmo.obj.metasl-bd026-06.lmo.mtlsl-bd026-06.lmo.mtl.metasl-bd026-06.lmo.objsl-bd026-06.lmo.obj.metasl-bd026-07.lmo.mtlsl-bd026-07.lmo.mtl.metasl-bd026-07.lmo.objsl-bd026-07.lmo.obj.metasl-bd026-08.lmo.mtlsl-bd026-08.lmo.mtl.metasl-bd026-08.lmo.objsl-bd026-08.lmo.obj.metasl-bd026-09.lmo.mtlsl-bd026-09.lmo.mtl.metasl-bd026-09.lmo.objsl-bd026-09.lmo.obj.metasl-bd028-01.lmo.mtlsl-bd028-01.lmo.mtl.metasl-bd028-01.lmo.objsl-bd028-01.lmo.obj.metasl-bd028-02.lmo.mtlsl-bd028-02.lmo.mtl.metasl-bd028-02.lmo.objsl-bd028-02.lmo.obj.metasl-bd028-03.lmo.mtlsl-bd028-03.lmo.mtl.metasl-bd028-03.lmo.objsl-bd028-03.lmo.obj.metasl-bd028-04.lmo.mtlsl-bd028-04.lmo.mtl.metasl-bd028-04.lmo.objsl-bd028-04.lmo.obj.metasl-bd030.lmo.mtlsl-bd030.lmo.mtl.metasl-bd030.lmo.objsl-bd030.lmo.obj.metasl-bd031.lmo.mtlsl-bd031.lmo.mtl.metasl-bd031.lmo.objsl-bd031.lmo.obj.metasl-bd032-01.lmo.mtlsl-bd032-01.lmo.mtl.metasl-bd032-01.lmo.objsl-bd032-01.lmo.obj.metasl-bd032-02.lmo.mtlsl-bd032-02.lmo.mtl.metasl-bd032-02.lmo.objsl-bd032-02.lmo.obj.metasl-bd032-03.lmo.mtlsl-bd032-03.lmo.mtl.metasl-bd032-03.lmo.objsl-bd032-03.lmo.obj.metasl-bd032.lmo.mtlsl-bd032.lmo.mtl.metasl-bd032.lmo.objsl-bd032.lmo.obj.metasl-bd033.lmo.mtlsl-bd033.lmo.mtl.metasl-bd033.lmo.objsl-bd033.lmo.obj.metasl-bd034.lmo.mtlsl-bd034.lmo.mtl.metasl-bd034.lmo.objsl-bd034.lmo.obj.metasl-bd035.lmo.mtlsl-bd035.lmo.mtl.metasl-bd035.lmo.objsl-bd035.lmo.obj.metasl-bd036.lmo.mtlsl-bd036.lmo.mtl.metasl-bd036.lmo.objsl-bd036.lmo.obj.metasl-bd037.lmo.mtlsl-bd037.lmo.mtl.metasl-bd037.lmo.objsl-bd037.lmo.obj.metasl-bd038.lmo.mtlsl-bd038.lmo.mtl.metasl-bd038.lmo.objsl-bd038.lmo.obj.metasl-bd039.lmo.mtlsl-bd039.lmo.mtl.metasl-bd039.lmo.objsl-bd039.lmo.obj.metasl-bd040.lmo.mtlsl-bd040.lmo.mtl.metasl-bd040.lmo.objsl-bd040.lmo.obj.metasl-bd041.lmo.mtlsl-bd041.lmo.mtl.metasl-bd041.lmo.objsl-bd041.lmo.obj.metasl-bd042.lmo.mtlsl-bd042.lmo.mtl.metasl-bd042.lmo.objsl-bd042.lmo.obj.metasl-bd043.lmo.mtlsl-bd043.lmo.mtl.metasl-bd043.lmo.objsl-bd043.lmo.obj.metasl-bd044.lmo.mtlsl-bd044.lmo.mtl.metasl-bd044.lmo.objsl-bd044.lmo.obj.metasw_louti.lmo.mtlsw_louti.lmo.mtl.metasw_louti.lmo.objsw_louti.lmo.obj.metasw_louti2.lmo.mtlsw_louti2.lmo.mtl.metasw_louti2.lmo.objsw_louti2.lmo.obj.metasw_ta.lmo.mtlsw_ta.lmo.mtl.metasw_ta.lmo.objsw_ta.lmo.obj.metasw_weiqiang.lmo.mtlsw_weiqiang.lmo.mtl.metasw_weiqiang.lmo.objsw_weiqiang.lmo.obj.metasw_yabian.lmo.mtlsw_yabian.lmo.mtl.metasw_yabian.lmo.objsw_yabian.lmo.obj.metatsrj_bataiguizi.lmo.mtltsrj_bataiguizi.lmo.mtl.metatsrj_bataiguizi.lmo.objtsrj_bataiguizi.lmo.obj.metatsrj_bataizhuozi.lmo.mtltsrj_bataizhuozi.lmo.mtl.metatsrj_bataizhuozi.lmo.objtsrj_bataizhuozi.lmo.obj.metatsrj_caideng.lmo.mtltsrj_caideng.lmo.mtl.metatsrj_caideng.lmo.objtsrj_caideng.lmo.obj.metatsrj_caidengpian.lmo.mtltsrj_caidengpian.lmo.mtl.metatsrj_caidengpian.lmo.objtsrj_caidengpian.lmo.obj.metatsrj_caidengpian1.lmo.mtltsrj_caidengpian1.lmo.mtl.metatsrj_caidengpian1.lmo.objtsrj_caidengpian1.lmo.obj.metatsrj_caidengpian1x.lmo.mtltsrj_caidengpian1x.lmo.mtl.metatsrj_caidengpian1x.lmo.objtsrj_caidengpian1x.lmo.obj.metatsrj_caidengpian2.lmo.mtltsrj_caidengpian2.lmo.mtl.metatsrj_caidengpian2.lmo.objtsrj_caidengpian2.lmo.obj.metatsrj_caidengpian2x.lmo.mtltsrj_caidengpian2x.lmo.mtl.metatsrj_caidengpian2x.lmo.objtsrj_caidengpian2x.lmo.obj.metatsrj_caidengpian3.lmo.mtltsrj_caidengpian3.lmo.mtl.metatsrj_caidengpian3.lmo.objtsrj_caidengpian3.lmo.obj.metatsrj_caidengpian3x.lmo.mtltsrj_caidengpian3x.lmo.mtl.metatsrj_caidengpian3x.lmo.objtsrj_caidengpian3x.lmo.obj.metatsrj_caidengpian4.lmo.mtltsrj_caidengpian4.lmo.mtl.metatsrj_caidengpian4.lmo.objtsrj_caidengpian4.lmo.obj.metatsrj_caidengpian4x.lmo.mtltsrj_caidengpian4x.lmo.mtl.metatsrj_caidengpian4x.lmo.objtsrj_caidengpian4x.lmo.obj.metatsrj_guopen01.lmo.mtltsrj_guopen01.lmo.mtl.metatsrj_guopen01.lmo.objtsrj_guopen01.lmo.obj.metatsrj_guopen02.lmo.mtltsrj_guopen02.lmo.mtl.metatsrj_guopen02.lmo.objtsrj_guopen02.lmo.obj.metatsrj_jiuping01.lmo.mtltsrj_jiuping01.lmo.mtl.metatsrj_jiuping01.lmo.objtsrj_jiuping01.lmo.obj.metatsrj_jiuping02.lmo.mtltsrj_jiuping02.lmo.mtl.metatsrj_jiuping02.lmo.objtsrj_jiuping02.lmo.obj.metatsrj_jiuping03.lmo.mtltsrj_jiuping03.lmo.mtl.metatsrj_jiuping03.lmo.objtsrj_jiuping03.lmo.obj.metatsrj_make.lmo.mtltsrj_make.lmo.mtl.metatsrj_make.lmo.objtsrj_make.lmo.obj.metatsrj_wjbayi01.lmo.mtltsrj_wjbayi01.lmo.mtl.metatsrj_wjbayi01.lmo.objtsrj_wjbayi01.lmo.obj.metatsrj_yinxiang.lmo.mtltsrj_yinxiang.lmo.mtl.metatsrj_yinxiang.lmo.objtsrj_yinxiang.lmo.obj.metawjchaji001.lmo.mtlwjchaji001.lmo.mtl.metawjchaji001.lmo.objwjchaji001.lmo.obj.metawjditanq001.lmo.mtlwjditanq001.lmo.mtl.metawjditanq001.lmo.objwjditanq001.lmo.obj.metawjfangzhuo001.lmo.mtlwjfangzhuo001.lmo.mtl.metawjfangzhuo001.lmo.objwjfangzhuo001.lmo.obj.metawjhuaq001.lmo.mtlwjhuaq001.lmo.mtl.metawjhuaq001.lmo.objwjhuaq001.lmo.obj.metawjhuaq002.lmo.mtlwjhuaq002.lmo.mtl.metawjhuaq002.lmo.objwjhuaq002.lmo.obj.metawjhuaq003.lmo.mtlwjhuaq003.lmo.mtl.metawjhuaq003.lmo.objwjhuaq003.lmo.obj.metawjhuaq004.lmo.mtlwjhuaq004.lmo.mtl.metawjhuaq004.lmo.objwjhuaq004.lmo.obj.metawjqiangtiq001.lmo.mtlwjqiangtiq001.lmo.mtl.metawjqiangtiq001.lmo.objwjqiangtiq001.lmo.obj.metawjqiangtiq002.lmo.mtlwjqiangtiq002.lmo.mtl.metawjqiangtiq002.lmo.objwjqiangtiq002.lmo.obj.metawjqiangtiq003.lmo.mtlwjqiangtiq003.lmo.mtl.metawjqiangtiq003.lmo.objwjqiangtiq003.lmo.obj.metawjqiangtiq004.lmo.mtlwjqiangtiq004.lmo.mtl.metawjqiangtiq004.lmo.objwjqiangtiq004.lmo.obj.metawjqiangtiq005.lmo.mtlwjqiangtiq005.lmo.mtl.metawjqiangtiq005.lmo.objwjqiangtiq005.lmo.obj.metawjshafa001.lmo.mtlwjshafa001.lmo.mtl.metawjshafa001.lmo.objwjshafa001.lmo.obj.metawjshafa002.lmo.mtlwjshafa002.lmo.mtl.metawjshafa002.lmo.objwjshafa002.lmo.obj.metawjshafa003.lmo.mtlwjshafa003.lmo.mtl.metawjshafa003.lmo.objwjshafa003.lmo.obj.metawjwutai001.lmo.mtlwjwutai001.lmo.mtl.metawjwutai001.lmo.objwjwutai001.lmo.obj.metawjwutai002.lmo.mtlwjwutai002.lmo.mtl.metawjwutai002.lmo.objwjwutai002.lmo.obj.metawjwutai003.lmo.mtlwjwutai003.lmo.mtl.metawjwutai003.lmo.objwjwutai003.lmo.obj.metawjwutai004.lmo.mtlwjwutai004.lmo.mtl.metawjwutai004.lmo.objwjwutai004.lmo.obj.metawjwutai005.lmo.mtlwjwutai005.lmo.mtl.metawjwutai005.lmo.objwjwutai005.lmo.obj.metawjwutai006.lmo.mtlwjwutai006.lmo.mtl.metawjwutai006.lmo.objwjwutai006.lmo.obj.metawjyizi001.lmo.mtlwjyizi001.lmo.mtl.metawjyizi001.lmo.objwjyizi001.lmo.obj.metawjzhuozi001.lmo.mtlwjzhuozi001.lmo.mtl.metawjzhuozi001.lmo.objwjzhuozi001.lmo.obj.metawjzhuziq001.lmo.mtlwjzhuziq001.lmo.mtl.metawjzhuziq001.lmo.objwjzhuziq001.lmo.obj.metaxmas_caidai.lmo.mtlxmas_caidai.lmo.mtl.metaxmas_caidai.lmo.objxmas_caidai.lmo.obj.metaxmas_henban.lmo.mtlxmas_henban.lmo.mtl.metaxmas_henban.lmo.objxmas_henban.lmo.obj.metaxmas_hengfu.lmo.mtlxmas_hengfu.lmo.mtl.metaxmas_hengfu.lmo.objxmas_hengfu.lmo.obj.metays_ditan.lmo.mtlys_ditan.lmo.mtl.metays_ditan.lmo.objys_ditan.lmo.obj.metays_jiaotang.lmo.mtlys_jiaotang.lmo.mtl.metays_jiaotang.lmo.objys_jiaotang.lmo.obj.metayu_bd01.lmo.mtlyu_bd01.lmo.mtl.metayu_bd01.lmo.objyu_bd01.lmo.obj.metayyyy001.lmo.mtlyyyy001.lmo.mtl.metayyyy001.lmo.objyyyy001.lmo.obj.metayyyy002.lmo.mtlyyyy002.lmo.mtl.metayyyy002.lmo.objyyyy002.lmo.obj.metayyyy003.lmo.mtlyyyy003.lmo.mtl.metayyyy003.lmo.objyyyy003.lmo.obj.metayyyy004.lmo.mtlyyyy004.lmo.mtl.metayyyy004.lmo.objyyyy004.lmo.obj.metayyyy005.lmo.mtlyyyy005.lmo.mtl.metayyyy005.lmo.objyyyy005.lmo.obj.metayyyy006.lmo.mtlyyyy006.lmo.mtl.metayyyy006.lmo.objyyyy006.lmo.obj.metayyyy007.lmo.mtlyyyy007.lmo.mtl.metayyyy007.lmo.objyyyy007.lmo.obj.metayyyy080.lmo.mtlyyyy080.lmo.mtl.metayyyy080.lmo.objyyyy080.lmo.obj.meta
exportedtexture.meta
exportedtexture
0001_01.bmp0001_01.bmp.meta0002_01.dds0002_01.dds.meta010001.bmp010001.bmp.meta010002.bmp010002.bmp.meta010003.bmp010003.bmp.meta010004.bmp010004.bmp.meta010004.dds010004.dds.meta010005.bmp010005.bmp.meta010006.bmp010006.bmp.meta010007.bmp010007.bmp.meta010008.bmp010008.bmp.meta010009.bmp010009.bmp.meta010010.bmp010010.bmp.meta010011.bmp010011.bmp.meta010012.bmp010012.bmp.meta010013.bmp010013.bmp.meta010013.dds010013.dds.meta010014.bmp010014.bmp.meta010015.bmp010015.bmp.meta010016.bmp010016.bmp.meta010017.bmp010017.bmp.meta010018.bmp010018.bmp.meta010019.bmp010019.bmp.meta010020.bmp010020.bmp.meta010020.dds010020.dds.meta010021.bmp010021.bmp.meta010021.dds010021.dds.meta010022.bmp010022.bmp.meta010023.bmp010023.bmp.meta010024.bmp010024.bmp.meta010025.bmp010025.bmp.meta010025.dds010025.dds.meta010026.bmp010026.bmp.meta010026.dds010026.dds.meta010027.bmp010027.bmp.meta010027.dds010027.dds.meta010028.bmp010028.bmp.meta010029.bmp010029.bmp.meta010030.bmp010030.bmp.meta010031.bmp010031.bmp.meta010032.bmp010032.bmp.meta010033.bmp010033.bmp.meta010034.bmp010034.bmp.meta010035.bmp010035.bmp.meta010036.bmp010036.bmp.meta010037.bmp010037.bmp.meta010038.bmp010038.bmp.meta010039.bmp010039.bmp.meta010040.bmp010040.bmp.meta010041.bmp010041.bmp.meta010042.bmp010042.bmp.meta010043.bmp010043.bmp.meta010044.bmp010044.bmp.meta010045.bmp010045.bmp.meta010046.bmp010046.bmp.meta010047.bmp010047.bmp.meta010048.bmp010048.bmp.meta010049.bmp010049.bmp.meta010050.bmp010050.bmp.meta010051.bmp010051.bmp.meta010052.bmp010052.bmp.meta010053.bmp010053.bmp.meta010054.bmp010054.bmp.meta010055.bmp010055.bmp.meta010056.bmp010056.bmp.meta010057.bmp010057.bmp.meta010058.bmp010058.bmp.meta010059.bmp010059.bmp.meta010060.bmp010060.bmp.meta010061.bmp010061.bmp.meta010062.bmp010062.bmp.meta010063.bmp010063.bmp.meta010064.bmp010064.bmp.meta010065.bmp010065.bmp.meta010066.bmp010066.bmp.meta010067.bmp010067.bmp.meta010068.bmp010068.bmp.meta010069.bmp010069.bmp.meta010070.bmp010070.bmp.meta010071.bmp010071.bmp.meta010072.bmp010072.bmp.meta010073.bmp010073.bmp.meta010074.bmp010074.bmp.meta010075.bmp010075.bmp.meta010076.bmp010076.bmp.meta010076_01.bmp010076_01.bmp.meta010077.bmp010077.bmp.meta010078.BMP010078.BMP.meta010079.bmp010079.bmp.meta010080.bmp010080.bmp.meta010081.bmp010081.bmp.meta010082.bmp010082.bmp.meta010083.bmp010083.bmp.meta010084.bmp010084.bmp.meta010085.bmp010085.bmp.meta010086.bmp010086.bmp.meta010087.bmp010087.bmp.meta010088.bmp010088.bmp.meta010089.bmp010089.bmp.meta010090.bmp010090.bmp.meta010091.bmp010091.bmp.meta010092.bmp010092.bmp.meta010093.bmp010093.bmp.meta010094.bmp010094.bmp.meta010095.bmp010095.bmp.meta010096.bmp010096.bmp.meta010097.bmp010097.bmp.meta010098.bmp010098.bmp.meta010099.bmp010099.bmp.meta010100.bmp010100.bmp.meta010101.bmp010101.bmp.meta010102.bmp010102.bmp.meta010103.bmp010103.bmp.meta010104.bmp010104.bmp.meta010105.bmp010105.bmp.meta010106.BMP010106.BMP.meta010107.BMP010107.BMP.meta010108.BMP010108.BMP.meta010109.BMP010109.BMP.meta010110.bmp010110.bmp.meta010111.bmp010111.bmp.meta010112.bmp010112.bmp.meta010113.bmp010113.bmp.meta010114.bmp010114.bmp.meta010115.bmp010115.bmp.meta010116.bmp010116.bmp.meta010117.bmp010117.bmp.meta010118.bmp010118.bmp.meta010119.bmp010119.bmp.meta010120.bmp010120.bmp.meta010121.bmp010121.bmp.meta010122.bmp010122.bmp.meta010123.bmp010123.bmp.meta010124.bmp010124.bmp.meta010125.bmp010125.bmp.meta010126.bmp010126.bmp.meta010127.bmp010127.bmp.meta010128.bmp010128.bmp.meta010129.bmp010129.bmp.meta010130.BMP010130.BMP.meta010131.BMP010131.BMP.meta010132.BMP010132.BMP.meta010133.BMP010133.BMP.meta010134.bmp010134.bmp.meta010135.BMP010135.BMP.meta010136.bmp010136.bmp.meta010137.bmp010137.bmp.meta010138.bmp010138.bmp.meta010139.bmp010139.bmp.meta010140.bmp010140.bmp.meta010141.bmp010141.bmp.meta010142.bmp010142.bmp.meta010143.bmp010143.bmp.meta010144.bmp010144.bmp.meta010145.bmp010145.bmp.meta010146.bmp010146.bmp.meta010147.bmp010147.bmp.meta010148.bmp010148.bmp.meta010149.bmp010149.bmp.meta010150.bmp010150.bmp.meta010151.bmp010151.bmp.meta010152.bmp010152.bmp.meta010153.bmp010153.bmp.meta010154.bmp010154.bmp.meta010155.bmp010155.bmp.meta010156.bmp010156.bmp.meta010157.bmp010157.bmp.meta010158.bmp010158.bmp.meta010158.dds010158.dds.meta010159.bmp010159.bmp.meta010159.dds010159.dds.meta010160.bmp010160.bmp.meta010160.dds010160.dds.meta010161.bmp010161.bmp.meta010162.bmp010162.bmp.meta010163.bmp010163.bmp.meta010164.bmp010164.bmp.meta010165.bmp010165.bmp.meta010166.bmp010166.bmp.meta010167.bmp010167.bmp.meta010168.bmp010168.bmp.meta010169.bmp010169.bmp.meta010170.bmp010170.bmp.meta010171.bmp010171.bmp.meta010172.bmp010172.bmp.meta010173.bmp010173.bmp.meta010174.bmp010174.bmp.meta010175.bmp010175.bmp.meta010176.bmp010176.bmp.meta010177.bmp010177.bmp.meta010178.bmp010178.bmp.meta010179.bmp010179.bmp.meta010180.bmp010180.bmp.meta010181.bmp010181.bmp.meta010182.bmp010182.bmp.meta010183.bmp010183.bmp.meta010184.bmp010184.bmp.meta010185.bmp010185.bmp.meta010186.bmp010186.bmp.meta010187.bmp010187.bmp.meta010188.bmp010188.bmp.meta010189.bmp010189.bmp.meta010190.bmp010190.bmp.meta010191.bmp010191.bmp.meta010192.bmp010192.bmp.meta010193.bmp010193.bmp.meta010194.bmp010194.bmp.meta010195.bmp010195.bmp.meta010196.bmp010196.bmp.meta010197.bmp010197.bmp.meta010198.bmp010198.bmp.meta010199.bmp010199.bmp.meta010199.dds010199.dds.meta010200.bmp010200.bmp.meta010200.dds010200.dds.meta010201.bmp010201.bmp.meta010202.bmp010202.bmp.meta010203.bmp010203.bmp.meta010204.bmp010204.bmp.meta010205.bmp010205.bmp.meta010206.bmp010206.bmp.meta010207.bmp010207.bmp.meta010208.bmp010208.bmp.meta010209.bmp010209.bmp.meta010210.bmp010210.bmp.meta010211.bmp010211.bmp.meta010212.bmp010212.bmp.meta010213.bmp010213.bmp.meta010214.bmp010214.bmp.meta010215.bmp010215.bmp.meta010216.bmp010216.bmp.meta010217.bmp010217.bmp.meta010218.bmp010218.bmp.meta010219.bmp010219.bmp.meta010220.bmp010220.bmp.meta010221.bmp010221.bmp.meta010222.bmp010222.bmp.meta010223.bmp010223.bmp.meta010224.bmp010224.bmp.meta010225.bmp010225.bmp.meta010226.bmp010226.bmp.meta010227.bmp010227.bmp.meta010228.bmp010228.bmp.meta010229.bmp010229.bmp.meta010230.bmp010230.bmp.meta010231.bmp010231.bmp.meta010232.bmp010232.bmp.meta010233.bmp010233.bmp.meta010234.bmp010234.bmp.meta010235.bmp010235.bmp.meta010236.bmp010236.bmp.meta010237.bmp010237.bmp.meta010238.bmp010238.bmp.meta010239.bmp010239.bmp.meta010240.bmp010240.bmp.meta010241.bmp010241.bmp.meta010242.bmp010242.bmp.meta010243.bmp010243.bmp.meta010244.bmp010244.bmp.meta010247.dds010247.dds.meta010248.bmp010248.bmp.meta010249.bmp010249.bmp.meta010250.bmp010250.bmp.meta010251.bmp010251.bmp.meta010252.bmp010252.bmp.meta010252.dds010252.dds.meta010253.BMP010253.BMP.meta010254.BMP010254.BMP.meta010255.bmp010255.bmp.meta010256.bmp010256.bmp.meta010257.BMP010257.BMP.meta010258.BMP010258.BMP.meta010259.BMP010259.BMP.meta010260.BMP010260.BMP.meta010260.dds010260.dds.meta010261.BMP010261.BMP.meta010261.dds010261.dds.meta010263.bmp010263.bmp.meta010264.BMP010264.BMP.meta010265.BMP010265.BMP.meta010266.BMP010266.BMP.meta010267.dds010267.dds.meta010268.dds010268.dds.meta010269.dds010269.dds.meta010270.dds010270.dds.meta010271.bmp010271.bmp.meta010272.bmp010272.bmp.meta010273.dds010273.dds.meta010274.dds010274.dds.meta010275.dds010275.dds.meta010276.BMP010276.BMP.meta010277.BMP010277.BMP.meta010278.bmp010278.bmp.meta010279.bmp010279.bmp.meta010280.bmp010280.bmp.meta010281.bmp010281.bmp.meta010282.BMP010282.BMP.meta010283.BMP010283.BMP.meta010284.bmp010284.bmp.meta010284.dds010284.dds.meta010285.bmp010285.bmp.meta010286.bmp010286.bmp.meta010287.BMP010287.BMP.meta010288.BMP010288.BMP.meta010289.BMP010289.BMP.meta010290.BMP010290.BMP.meta010291.BMP010291.BMP.meta010292.bmp010292.bmp.meta010293.bmp010293.bmp.meta010294.BMP010294.BMP.meta010295.bmp010295.bmp.meta010296.bmp010296.bmp.meta010297.bmp010297.bmp.meta010298.bmp010298.bmp.meta010299.BMP010299.BMP.meta010300.bmp010300.bmp.meta010301.dds010301.dds.meta010302.dds010302.dds.meta010303.dds010303.dds.meta010304.dds010304.dds.meta010305.dds010305.dds.meta010306.bmp010306.bmp.meta010307.bmp010307.bmp.meta01nml-bd202_01.dds01nml-bd202_01.dds.meta01nml-bd204_01.dds01nml-bd204_01.dds.meta020001.bmp020001.bmp.meta020003.bmp020003.bmp.meta020004.bmp020004.bmp.meta020005.bmp020005.bmp.meta020005.dds020005.dds.meta020006.bmp020006.bmp.meta020007.bmp020007.bmp.meta020008.bmp020008.bmp.meta020010.bmp020010.bmp.meta020011.bmp020011.bmp.meta020012.bmp020012.bmp.meta020012.dds020012.dds.meta020013.bmp020013.bmp.meta020014.bmp020014.bmp.meta020017.bmp020017.bmp.meta020018.bmp020018.bmp.meta020021.bmp020021.bmp.meta020023.bmp020023.bmp.meta020023.dds020023.dds.meta020024.BMP020024.BMP.meta020025.bmp020025.bmp.meta020026.bmp020026.bmp.meta020027.bmp020027.bmp.meta020028.bmp020028.bmp.meta020028.dds020028.dds.meta020029.BMP020029.BMP.meta020030.bmp020030.bmp.meta020031.bmp020031.bmp.meta020034.bmp020034.bmp.meta020034.dds020034.dds.meta020040.bmp020040.bmp.meta020040.dds020040.dds.meta020041.BMP020041.BMP.meta020042.bmp020042.bmp.meta020043.bmp020043.bmp.meta020044.bmp020044.bmp.meta020045.bmp020045.bmp.meta020046.bmp020046.bmp.meta020047.bmp020047.bmp.meta020048.bmp020048.bmp.meta020049.bmp020049.bmp.meta020050.bmp020050.bmp.meta020055.bmp020055.bmp.meta020056.dds020056.dds.meta020057.bmp020057.bmp.meta020058.bmp020058.bmp.meta020059.bmp020059.bmp.meta020059.dds020059.dds.meta020060.bmp020060.bmp.meta020060.dds020060.dds.meta020061.dds020061.dds.meta020062.BMP020062.BMP.meta020064.bmp020064.bmp.meta020065.bmp020065.bmp.meta020066.bmp020066.bmp.meta020067.bmp020067.bmp.meta020068.bmp020068.bmp.meta020070.BMP020070.BMP.meta020071.bmp020071.bmp.meta020072.BMP020072.BMP.meta020073.BMP020073.BMP.meta020074.bmp020074.bmp.meta020075.BMP020075.BMP.meta020076.BMP020076.BMP.meta020077.bmp020077.bmp.meta020078.BMP020078.BMP.meta020078.dds020078.dds.meta020079.bmp020079.bmp.meta020079.dds020079.dds.meta020080.bmp020080.bmp.meta020081.bmp020081.bmp.meta020082.bmp020082.bmp.meta020083.bmp020083.bmp.meta020084.bmp020084.bmp.meta020085.bmp020085.bmp.meta020086.bmp020086.bmp.meta020087.bmp020087.bmp.meta020088.bmp020088.bmp.meta020089.bmp020089.bmp.meta020090.bmp020090.bmp.meta020091.BMP020091.BMP.meta020093.bmp020093.bmp.meta020094.bmp020094.bmp.meta020095.bmp020095.bmp.meta020096.bmp020096.bmp.meta020097.bmp020097.bmp.meta020098.bmp020098.bmp.meta020099.bmp020099.bmp.meta020100.BMP020100.BMP.meta020101.BMP020101.BMP.meta020102.bmp020102.bmp.meta020103.bmp020103.bmp.meta020104.bmp020104.bmp.meta020105.bmp020105.bmp.meta020106.bmp020106.bmp.meta020107.bmp020107.bmp.meta020108.bmp020108.bmp.meta020109.bmp020109.bmp.meta020110.bmp020110.bmp.meta020111.bmp020111.bmp.meta020112.bmp020112.bmp.meta020113.bmp020113.bmp.meta020114.bmp020114.bmp.meta020115.bmp020115.bmp.meta020116.bmp020116.bmp.meta020117.BMP020117.BMP.meta020118.BMP020118.BMP.meta020119.BMP020119.BMP.meta020120.bmp020120.bmp.meta020121.BMP020121.BMP.meta020122.bmp020122.bmp.meta020123.bmp020123.bmp.meta020124.bmp020124.bmp.meta020125.bmp020125.bmp.meta020125.dds020125.dds.meta020126.bmp020126.bmp.meta020127.bmp020127.bmp.meta020128.bmp020128.bmp.meta020129.BMP020129.BMP.meta020130.bmp020130.bmp.meta020131.bmp020131.bmp.meta020132.bmp020132.bmp.meta020133.BMP020133.BMP.meta020134.BMP020134.BMP.meta020135.BMP020135.BMP.meta020136.BMP020136.BMP.meta020137.BMP020137.BMP.meta020138.BMP020138.BMP.meta020139.BMP020139.BMP.meta020140.BMP020140.BMP.meta020141.BMP020141.BMP.meta020144.BMP020144.BMP.meta020145.bmp020145.bmp.meta020146.BMP020146.BMP.meta020147.bmp020147.bmp.meta020148.BMP020148.BMP.meta020149.BMP020149.BMP.meta020150.bmp020150.bmp.meta020151.bmp020151.bmp.meta020152.bmp020152.bmp.meta020153.bmp020153.bmp.meta020154.bmp020154.bmp.meta020155.bmp020155.bmp.meta020156.bmp020156.bmp.meta020157.BMP020157.BMP.meta020158.bmp020158.bmp.meta020158.dds020158.dds.meta020159.bmp020159.bmp.meta020159.dds020159.dds.meta020160.bmp020160.bmp.meta020161.bmp020161.bmp.meta020162.bmp020162.bmp.meta020162.dds020162.dds.meta020163.bmp020163.bmp.meta020163.dds020163.dds.meta020164.bmp020164.bmp.meta020165.bmp020165.bmp.meta020166.bmp020166.bmp.meta020167.bmp020167.bmp.meta020168.BMP020168.BMP.meta020169.bmp020169.bmp.meta020170.BMP020170.BMP.meta020171.BMP020171.BMP.meta020172.bmp020172.bmp.meta020173.bmp020173.bmp.meta020174.BMP020174.BMP.meta020175.bmp020175.bmp.meta020176.bmp020176.bmp.meta020177.bmp020177.bmp.meta020178.bmp020178.bmp.meta020179.bmp020179.bmp.meta020180.BMP020180.BMP.meta020181.BMP020181.BMP.meta020182.bmp020182.bmp.meta020183.bmp020183.bmp.meta020184.bmp020184.bmp.meta020185.bmp020185.bmp.meta020186.bmp020186.bmp.meta020187.bmp020187.bmp.meta020189.bmp020189.bmp.meta020190.bmp020190.bmp.meta020191.bmp020191.bmp.meta020192.bmp020192.bmp.meta020193.bmp020193.bmp.meta020194.bmp020194.bmp.meta020195.BMP020195.BMP.meta020196.BMP020196.BMP.meta020197.BMP020197.BMP.meta020198.bmp020198.bmp.meta020199.BMP020199.BMP.meta020200.bmp020200.bmp.meta020201.bmp020201.bmp.meta020202.bmp020202.bmp.meta020203.bmp020203.bmp.meta020204.bmp020204.bmp.meta020204.dds020204.dds.meta020205.bmp020205.bmp.meta020205.dds020205.dds.meta020206.bmp020206.bmp.meta020207.bmp020207.bmp.meta020207.dds020207.dds.meta020208.BMP020208.BMP.meta020209.BMP020209.BMP.meta020210.BMP020210.BMP.meta020211.BMP020211.BMP.meta020212.bmp020212.bmp.meta020213.bmp020213.bmp.meta020214.bmp020214.bmp.meta020215.bmp020215.bmp.meta020216.bmp020216.bmp.meta020217.bmp020217.bmp.meta020218.BMP020218.BMP.meta020219.BMP020219.BMP.meta020220.BMP020220.BMP.meta020221.BMP020221.BMP.meta020222.bmp020222.bmp.meta020223.bmp020223.bmp.meta020224.bmp020224.bmp.meta020225.bmp020225.bmp.meta020226.BMP020226.BMP.meta020227.BMP020227.BMP.meta020228.BMP020228.BMP.meta020229.BMP020229.BMP.meta020230.BMP020230.BMP.meta020231.BMP020231.BMP.meta020232.BMP020232.BMP.meta020233.BMP020233.BMP.meta020234.bmp020234.bmp.meta020235.bmp020235.bmp.meta020236.bmp020236.bmp.meta020237.bmp020237.bmp.meta020238.bmp020238.bmp.meta020239.bmp020239.bmp.meta020240.BMP020240.BMP.meta020241.BMP020241.BMP.meta020241.dds020241.dds.meta020242.dds020242.dds.meta020243.dds020243.dds.meta020244.dds020244.dds.meta020245.dds020245.dds.meta020246.dds020246.dds.meta020247.dds020247.dds.meta020248.dds020248.dds.meta020249.dds020249.dds.meta020250.dds020250.dds.meta020251.dds020251.dds.meta020252.BMP020252.BMP.meta020253.BMP020253.BMP.meta020253.dds020253.dds.meta020254.BMP020254.BMP.meta020255.BMP020255.BMP.meta020256.BMP020256.BMP.meta020257.dds020257.dds.meta020258.dds020258.dds.meta020260.dds020260.dds.meta020262.dds020262.dds.meta02ccbd077_01.dds02ccbd077_01.dds.meta02ccbd_03.dds02ccbd_03.dds.meta02hlcx03.dds02hlcx03.dds.meta02mf-bd01_010.dds02mf-bd01_010.dds.meta02mf-bd01_011.dds02mf-bd01_011.dds.meta02mf-bd01_01a.dds02mf-bd01_01a.dds.meta02mf-bd01_02.dds02mf-bd01_02.dds.meta02mf-bd01_04.dds02mf-bd01_04.dds.meta02mf-bd01_05.dds02mf-bd01_05.dds.meta02mf-bd01_06.dds02mf-bd01_06.dds.meta02mf-bd01_07.dds02mf-bd01_07.dds.meta02mf-bd01_08.dds02mf-bd01_08.dds.meta02mf-bd01_09.dds02mf-bd01_09.dds.meta030001.bmp030001.bmp.meta030002.bmp030002.bmp.meta030003.bmp030003.bmp.meta030004.bmp030004.bmp.meta030014.bmp030014.bmp.meta030021.dds030021.dds.meta030022.dds030022.dds.meta040001.DDS040001.DDS.meta040002.DDS040002.DDS.meta040003.DDS040003.DDS.meta040004.DDS040004.DDS.meta040005.DDS040005.DDS.meta040006.DDS040006.DDS.meta040007.DDS040007.DDS.meta040008.DDS040008.DDS.meta040009.DDS040009.DDS.meta040010.DDS040010.DDS.meta040011.DDS040011.DDS.meta040012.DDS040012.DDS.meta040013.DDS040013.DDS.meta040014.dds040014.dds.meta040015.dds040015.dds.meta040016.DDS040016.DDS.meta040017.dds040017.dds.meta040018.dds040018.dds.meta040019.dds040019.dds.meta040020.dds040020.dds.meta040021.DDS040021.DDS.meta040022.DDS040022.DDS.meta040023.DDS040023.DDS.meta040027.DDS040027.DDS.meta040028.DDS040028.DDS.meta040029.DDS040029.DDS.meta040030.DDS040030.DDS.meta040031.DDS040031.DDS.meta040032.DDS040032.DDS.meta040033.DDS040033.DDS.meta040034.dds040034.dds.meta040035.dds040035.dds.meta040036.DDS040036.DDS.meta040037.DDS040037.DDS.meta040038.DDS040038.DDS.meta040039.DDS040039.DDS.meta040040.DDS040040.DDS.meta040041.dds040041.dds.meta040042.DDS040042.DDS.meta040043.dds040043.dds.meta040044.dds040044.dds.meta040045.dds040045.dds.meta040046.dds040046.dds.meta040047.dds040047.dds.meta040048.dds040048.dds.meta040049.dds040049.dds.meta040050.dds040050.dds.meta040052.dds040052.dds.meta040053.dds040053.dds.meta040054.dds040054.dds.meta040055.dds040055.dds.meta040056.dds040056.dds.meta040057.dds040057.dds.meta040058.DDS040058.DDS.meta040059.DDS040059.DDS.meta040060.dds040060.dds.meta040061.dds040061.dds.meta040062.dds040062.dds.meta040063.dds040063.dds.meta040064.dds040064.dds.meta040065.dds040065.dds.meta040066.dds040066.dds.meta040067.dds040067.dds.meta040068.DDS040068.DDS.meta040069.DDS040069.DDS.meta050001.dds050001.dds.meta050002.dds050002.dds.meta050003.dds050003.dds.meta050004.dds050004.dds.meta050005.dds050005.dds.meta050006.dds050006.dds.meta050007.dds050007.dds.meta050011.bmp050011.bmp.meta050011.dds050011.dds.meta050012.bmp050012.bmp.meta050012.dds050012.dds.meta050013.dds050013.dds.meta050014.bmp050014.bmp.meta050014.dds050014.dds.meta050015.dds050015.dds.meta050019.dds050019.dds.meta07_hdw_hualan2.dds07_hdw_hualan2.dds.metaBot_001.ddsBot_001.dds.metaBot_002.ddsBot_002.dds.metaBot_003.ddsBot_003.dds.metaDXSD01.ddsDXSD01.dds.metaDXSD02.ddsDXSD02.dds.metaDXSD03.ddsDXSD03.dds.metaDXSD04.ddsDXSD04.dds.metaDXSDZW01.ddsDXSDZW01.dds.metaDXSDZW02.ddsDXSDZW02.dds.metaFB_AYMG3_qiangtietu_0006.ddsFB_AYMG3_qiangtietu_0006.dds.metaFB_BSFB_chuan_0004.ddsFB_BSFB_chuan_0004.dds.metaFB_DDLD_taizi_tietu_04.ddsFB_DDLD_taizi_tietu_04.dds.metaFB_LYMK_baozuo_01.ddsFB_LYMK_baozuo_01.dds.metaFB_LYMK_baozuo_02.ddsFB_LYMK_baozuo_02.dds.metaFB_LYMK_diaosu_01.ddsFB_LYMK_diaosu_01.dds.metaFB_LYMK_diaosu_02.ddsFB_LYMK_diaosu_02.dds.metaFB_LYMK_diaosu_03.ddsFB_LYMK_diaosu_03.dds.metaFB_LYMK_rukou_01.ddsFB_LYMK_rukou_01.dds.metaFB_LYMK_rukou_02.ddsFB_LYMK_rukou_02.dds.metaFB_LYMK_rukou_03.ddsFB_LYMK_rukou_03.dds.metaFB_LYMK_rukou_04.ddsFB_LYMK_rukou_04.dds.metaFB_TT3_jianbian_01.ddsFB_TT3_jianbian_01.dds.metaFB_ZJSM_tietu_0001.ddsFB_ZJSM_tietu_0001.dds.metaFB_ZJSM_tietu_0002.ddsFB_ZJSM_tietu_0002.dds.metaFB_ZJSM_tietu_0003.ddsFB_ZJSM_tietu_0003.dds.metaFB_ZJSM_tietu_0004.ddsFB_ZJSM_tietu_0004.dds.metaFB_ZJSM_tietu_0005.ddsFB_ZJSM_tietu_0005.dds.metaFB_ZJSM_tietu_0006.ddsFB_ZJSM_tietu_0006.dds.metaFB_ZJSM_tietu_0007.ddsFB_ZJSM_tietu_0007.dds.metaFB_ZJSM_tietu_0008.ddsFB_ZJSM_tietu_0008.dds.metaFB_tt-2_changjingtietu_04.ddsFB_tt-2_changjingtietu_04.dds.metaFB_tt-2_changjingtietu_06.ddsFB_tt-2_changjingtietu_06.dds.metaFB_tt-2_changjingtietu_07.ddsFB_tt-2_changjingtietu_07.dds.metaFB_tt-2_changjingtietu_08.ddsFB_tt-2_changjingtietu_08.dds.metaFB_tt-2_changjingtietu_10.ddsFB_tt-2_changjingtietu_10.dds.metaFB_ttt3_diaoxiang_0001.tgaFB_ttt3_diaoxiang_0001.tga.metaFB_ttt3_diaoxiang_0002.tgaFB_ttt3_diaoxiang_0002.tga.metaFB_ttt3_louti_0002.ddsFB_ttt3_louti_0002.dds.metaFB_ttt3_penquan_0001.ddsFB_ttt3_penquan_0001.dds.metaFB_ttt3_penquan_0002.ddsFB_ttt3_penquan_0002.dds.metaFB_ttt3_qiang_0001.ddsFB_ttt3_qiang_0001.dds.metaFB_ttt3_qiang_0002.ddsFB_ttt3_qiang_0002.dds.metaFB_ttt3_qiang_0003.ddsFB_ttt3_qiang_0003.dds.metaFB_ttt3_qiang_0004.ddsFB_ttt3_qiang_0004.dds.metaFB_ttt3_qiang_0005.ddsFB_ttt3_qiang_0005.dds.metaFB_ttt3_qiang_0006.ddsFB_ttt3_qiang_0006.dds.metaFB_ttt3_qiang_0007.ddsFB_ttt3_qiang_0007.dds.metaFB_ttt3_qiang_0008.ddsFB_ttt3_qiang_0008.dds.metaFB_ttt3_zhuzi_0001.ddsFB_ttt3_zhuzi_0001.dds.metaKyjj0101.ddsKyjj0101.dds.metaKyjj0121.ddsKyjj0121.dds.metaKyjj0131.ddsKyjj0131.dds.metaKyjj0501.ddsKyjj0501.dds.metaKyjj0521.ddsKyjj0521.dds.metaKyjj0701.ddsKyjj0701.dds.metaKyjj0702.ddsKyjj0702.dds.metaKyjj0703.ddsKyjj0703.dds.metaKyjj0704.ddsKyjj0704.dds.metaMY_GROUNDTRANSITION.ddsMY_GROUNDTRANSITION.dds.metaMap_FSLY_diaoxiang_0001.ddsMap_FSLY_diaoxiang_0001.dds.metaMap_FSLY_diaoxiang_0002.ddsMap_FSLY_diaoxiang_0002.dds.metaMap_FSLY_yewaijianzhuteitu_06.ddsMap_FSLY_yewaijianzhuteitu_06.dds.metaMap_HMSL_baobian_0003.ddsMap_HMSL_baobian_0003.dds.metaMap_HMSL_baobian_0004.ddsMap_HMSL_baobian_0004.dds.metaMap_HMSL_taizi_0004.ddsMap_HMSL_taizi_0004.dds.metaMap_HMSL_zhujianzhutietu_0012.ddsMap_HMSL_zhujianzhutietu_0012.dds.metaMap_LYMK_qiang_0002.ddsMap_LYMK_qiang_0002.dds.metaam_002.tgaam_002.tga.metac002.ddsc002.dds.metac003.ddsc003.dds.metac004.ddsc004.dds.metac005.ddsc005.dds.metadxsdgu01.ddsdxsdgu01.dds.metadxsdrk0201.ddsdxsdrk0201.dds.metadxsdrk0202.ddsdxsdrk0202.dds.metahdmgrk001.ddshdmgrk001.dds.metahdsd01.ddshdsd01.dds.metahdsd02.ddshdsd02.dds.metahdsd03.ddshdsd03.dds.metahdsd04.ddshdsd04.dds.metahdsdhc01.ddshdsdhc01.dds.metahdwblg001.ddshdwblg001.dds.metahdwjsj001.ddshdwjsj001.dds.metaheilong01.ddsheilong01.dds.metaheilong02.ddsheilong02.dds.metahl001.ddshl001.dds.metahl002.ddshl002.dds.metahl003.ddshl003.dds.metahl004.ddshl004.dds.metahl005.ddshl005.dds.metahl006.ddshl006.dds.metahl007.ddshl007.dds.metahl017.tgahl017.tga.metahlbzc001.ddshlbzc001.dds.metahlbzc002.ddshlbzc002.dds.metahlbzc003.ddshlbzc003.dds.metahlbzc004.ddshlbzc004.dds.metahlbzc005.ddshlbzc005.dds.metahlcx0201.ddshlcx0201.dds.metahlcx0202.ddshlcx0202.dds.metajtsn01.DDSjtsn01.DDS.metajtsn02.DDSjtsn02.DDS.metajtsn03.DDSjtsn03.DDS.metajtsn04.DDSjtsn04.DDS.metakxs_001.ddskxs_001.dds.metakyjj0705.ddskyjj0705.dds.metakyjj0706.ddskyjj0706.dds.metakyjj0707.ddskyjj0707.dds.metakyjjbd0201.ddskyjjbd0201.dds.metakyjjbd0301.ddskyjjbd0301.dds.metakyjjbd0311.ddskyjjbd0311.dds.metakyjjbd0401.ddskyjjbd0401.dds.metakyjjbd0601.ddskyjjbd0601.dds.metakyjjbd0611.ddskyjjbd0611.dds.metalogin03.bmplogin03.bmp.metalogin04.bmplogin04.bmp.metalogin06.bmplogin06.bmp.metalogin08.bmplogin08.bmp.metalogin10.bmplogin10.bmp.metalogin100.DDSlogin100.DDS.metalogin11.bmplogin11.bmp.metalogin12.bmplogin12.bmp.metalogin123.DDSlogin123.DDS.metalogin13.bmplogin13.bmp.metalogin15.BMPlogin15.BMP.metalogin17.bmplogin17.bmp.metalogin21.bmplogin21.bmp.metalogin21.ddslogin21.dds.metalogin22.bmplogin22.bmp.metalogin23.bmplogin23.bmp.metalogin24.bmplogin24.bmp.metalogin25.tgalogin25.tga.metalogin26.TGAlogin26.TGA.metalogin26.ddslogin26.dds.metalogin27.tgalogin27.tga.metalogin28.TGAlogin28.TGA.metalogin30.BMPlogin30.BMP.metalogin31.bmplogin31.bmp.metalogin32.bmplogin32.bmp.metalogin51.ddslogin51.dds.metalogin54.ddslogin54.dds.metalogin55.ddslogin55.dds.metalogin56.ddslogin56.dds.metalogin59.ddslogin59.dds.metalogin60.ddslogin60.dds.metalogin61.ddslogin61.dds.metalogin62.tgalogin62.tga.metalogin63.ddslogin63.dds.metalogin64.ddslogin64.dds.metalogin65.ddslogin65.dds.metalogin66.ddslogin66.dds.metalogin67.ddslogin67.dds.metalogin68.ddslogin68.dds.metalogin69.ddslogin69.dds.metalogin98.ddslogin98.dds.metamap.bmpmap.bmp.metamap.ddsmap.dds.metamap_FB_SYLX_rukou_0001_04.ddsmap_FB_SYLX_rukou_0001_04.dds.metamap_zhql3_diaoxiang_0101.tgamap_zhql3_diaoxiang_0101.tga.metamap_zhql3_diaoxiang_0102.tgamap_zhql3_diaoxiang_0102.tga.metaocean_h.01.bmpocean_h.01.bmp.metarsej_batai3.ddsrsej_batai3.dds.metasbm.ddssbm.dds.metashu.DDSshu.DDS.metasky021.ddssky021.dds.metasw_louti.ddssw_louti.dds.metasw_louti2.ddssw_louti2.dds.metasw_louti2_1.ddssw_louti2_1.dds.metasw_ta.ddssw_ta.dds.metasw_weiqiang.ddssw_weiqiang.dds.metat0002_01.ddst0002_01.dds.metatsrj_batai.ddstsrj_batai.dds.metatsrj_batai2.ddstsrj_batai2.dds.metatsrj_bataiditan.ddstsrj_bataiditan.dds.metatsrj_bataijiuping.ddstsrj_bataijiuping.dds.metatsrj_bayi01.ddstsrj_bayi01.dds.metatsrj_beitou.ddstsrj_beitou.dds.metatsrj_caideng.ddstsrj_caideng.dds.metatsrj_caidengpian.ddstsrj_caidengpian.dds.metatsrj_caisejiase.ddstsrj_caisejiase.dds.metatsrj_jiase.ddstsrj_jiase.dds.metatsrj_make.ddstsrj_make.dds.metatsrj_xingkong.ddstsrj_xingkong.dds.metatsrj_yinxiang.DDStsrj_yinxiang.DDS.metawjditanq001.ddswjditanq001.dds.metawjfangzhuo001.ddswjfangzhuo001.dds.metawjhuaq001.ddswjhuaq001.dds.metawjqiangtiq001.ddswjqiangtiq001.dds.metawjqiangtiq001.tgawjqiangtiq001.tga.metawjqiangtiq002.ddswjqiangtiq002.dds.metawjqiangtiq002.tgawjqiangtiq002.tga.metawjqiangtiq003.ddswjqiangtiq003.dds.metawjshafa001.ddswjshafa001.dds.metawjwutai001.ddswjwutai001.dds.metawjyizi001.ddswjyizi001.dds.metawjyizi001.tgawjyizi001.tga.metaxmas_hengfu.ddsxmas_hengfu.dds.metays_ditan.ddsys_ditan.dds.metaysjiaotang01.ddsysjiaotang01.dds.metaysjiaotang02.ddsysjiaotang02.dds.metaysjiaotang03.ddsysjiaotang03.dds.metaysjiaotang04.ddsysjiaotang04.dds.meta
原始導出模型.7z原始導出模型.7z.meta
Sandbox.meta
Sandbox
Scenes.meta
Scenes
Scripts.meta
Scripts
StreamingAssets.meta
StreamingAssets
Map.meta
Map
07xmas.map07xmas.map.meta07xmas.obj07xmas.obj.meta07xmas2.map07xmas2.map.meta07xmas2.obj07xmas2.obj.metaabandonedcity.mapabandonedcity.map.metaabandonedcity.objabandonedcity.obj.metaabandonedcity2.mapabandonedcity2.map.metaabandonedcity2.objabandonedcity2.obj.metaabandonedcity3.mapabandonedcity3.map.metaabandonedcity3.objabandonedcity3.obj.metabinglang2.mapbinglang2.map.metabinglang2.objbinglang2.obj.metadarkblue.mapdarkblue.map.metadarkblue.objdarkblue.obj.metadarkswamp.mapdarkswamp.map.metadarkswamp.objdarkswamp.obj.metaeastgoaf.mapeastgoaf.map.metaeastgoaf.objeastgoaf.obj.metagarner 1.mapgarner 1.map.metagarner 1.objgarner 1.obj.metagarner.mapgarner.map.metagarner.objgarner.obj.metagarner.rbogarner.rbo.metagarner2.mapgarner2.map.metagarner2.objgarner2.obj.metagarner_raw.mapgarner_raw.map.metagarner_raw.objgarner_raw.obj.metagarner_test.mapgarner_test.map.metagarner_test.objgarner_test.obj.metaguildwar.mapguildwar.map.metaguildwar.objguildwar.obj.metaguildwar2.mapguildwar2.map.metaguildwar2.objguildwar2.obj.metahell.maphell.map.metahell.objhell.obj.metahell2.maphell2.map.metahell2.objhell2.obj.metahell3.maphell3.map.metahell3.objhell3.obj.metahell4.maphell4.map.metahell4.objhell4.obj.metahell5.maphell5.map.metahell5.objhell5.obj.metajialebi.mapjialebi.map.metajialebi.objjialebi.obj.metaleiting2.mapleiting2.map.metaleiting2.objleiting2.obj.metalonetower.maplonetower.map.metalonetower.objlonetower.obj.metamagicsea.mapmagicsea.map.metamagicsea.objmagicsea.obj.metaprisonisland.mapprisonisland.map.metaprisonisland.objprisonisland.obj.metapuzzleworld.mappuzzleworld.map.metapuzzleworld.objpuzzleworld.obj.metapuzzleworld2.mappuzzleworld2.map.metapuzzleworld2.objpuzzleworld2.obj.metasdBoss.mapsdBoss.map.metasdBoss.objsdBoss.obj.metasecretgarden.mapsecretgarden.map.metasecretgarden.objsecretgarden.obj.metashalan2.mapshalan2.map.metashalan2.objshalan2.obj.metateampk.mapteampk.map.metateampk.objteampk.obj.metayschurch.mapyschurch.map.metayschurch.objyschurch.obj.metayschurch.rboyschurch.rbo.meta
garner.mapgarner.map.metagarner.objgarner.obj.meta
TerrainUVBlendShader 1.shaderTerrainUVBlendShader 1.shader.metaTerrainUVBlendShader.shaderTerrainUVBlendShader.shader.metaTestAssets.meta
TestAssets
TestTerrainShader 1.shaderTestTerrainShader 1.shader.metaTestTerrainShader.shaderTestTerrainShader.shader.metaUniversalRenderPipelineGlobalSettings.assetUniversalRenderPipelineGlobalSettings.asset.metaUnlit_NewUnlitTerrainShader.matUnlit_NewUnlitTerrainShader.mat.metaWaterWorks.meta
WaterWorks
total_seamless.tgatotal_seamless.tga.meta
Packages
ProjectSettings
UserSettings

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: a2ba8588f45692f4ea2fa5afa9faf434
folderAsset: yes
timeCreated: 1481126944
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,336 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using UnityEngine;
namespace AmplifyShaderEditor
{
public class ActionData
{
public virtual void ExecuteForward() { }
public virtual void ExecuteReverse() { }
}
// NODES
// Create node
public class CreateNodeActionData : ActionData
{
private int m_nodeId;
private System.Type m_nodeType;
private Vector2 m_nodePos;
public CreateNodeActionData( ParentNode node )
{
m_nodeId = node.UniqueId;
m_nodePos = node.Vec2Position;
m_nodeType = node.GetType();
}
public CreateNodeActionData( int nodeId, System.Type nodeType, Vector2 nodePos )
{
m_nodeId = nodeId;
m_nodePos = nodePos;
m_nodeType = nodeType;
}
public override void ExecuteForward()
{
UIUtils.CreateNode( m_nodeType, false, m_nodePos, m_nodeId );
}
public override void ExecuteReverse()
{
UIUtils.DestroyNode( m_nodeId );
}
public override string ToString()
{
return "Create Node - Type: " + m_nodeType + " Node: " + m_nodeId + " Position: " + m_nodePos;
}
}
// Destroy node
public class DestroyNodeActionData : ActionData
{
private int m_nodeId;
private System.Type m_nodeType;
private Vector2 m_nodePos;
public DestroyNodeActionData( ParentNode node )
{
m_nodeId = node.UniqueId;
m_nodePos = node.Vec2Position;
m_nodeType = node.GetType();
}
public DestroyNodeActionData( int nodeId, System.Type nodeType, Vector2 nodePos )
{
m_nodeId = nodeId;
m_nodePos = nodePos;
m_nodeType = nodeType;
}
public override void ExecuteForward()
{
UIUtils.DestroyNode( m_nodeId );
}
public override void ExecuteReverse()
{
UIUtils.CreateNode( m_nodeType, false, m_nodePos, m_nodeId );
}
public override string ToString()
{
return "Destroy Node - Type: " + m_nodeType + " Node: " + m_nodeId + " Position: " + m_nodePos;
}
}
// Move node
public class MoveNodeActionData : ActionData
{
private int m_nodeId;
private Vector2 m_nodeInitalPos;
private Vector2 m_nodeFinalPos;
public MoveNodeActionData( int nodeId, Vector2 nodeInitialPos, Vector2 nodeFinalPos )
{
m_nodeId = nodeId;
m_nodeInitalPos = nodeInitialPos;
m_nodeFinalPos = nodeFinalPos;
}
public override void ExecuteForward()
{
ParentNode node = UIUtils.GetNode( m_nodeId );
if ( node != null )
node.Vec2Position = m_nodeFinalPos;
}
public override void ExecuteReverse()
{
ParentNode node = UIUtils.GetNode( m_nodeId );
if ( node != null )
node.Vec2Position = m_nodeInitalPos;
}
public override string ToString()
{
return "Move Node - Node: " + m_nodeId + " Initial Position: " + m_nodeInitalPos + " Final Position: " + m_nodeFinalPos;
}
}
// CONNECTIONS
// Create connection
public class CreateConnectionActionData : ActionData
{
private int m_inputNodeId;
private int m_inputPortId;
private int m_outputNodeId;
private int m_outputPortId;
public CreateConnectionActionData( int inputNodeId, int inputPortId, int outputNodeId, int outputPortId )
{
m_inputNodeId = inputNodeId;
m_inputPortId = inputPortId;
m_outputNodeId = outputNodeId;
m_outputPortId = outputPortId;
}
public override void ExecuteForward()
{
UIUtils.ConnectInputToOutput( m_inputNodeId, m_inputPortId, m_outputNodeId, m_outputPortId );
}
public override void ExecuteReverse()
{
UIUtils.DeleteConnection( true, m_inputNodeId, m_inputPortId, false, true );
}
public override string ToString()
{
return "Create Connection Node - Input Node: " + m_inputNodeId + " Input Port: " + m_inputPortId + " Output Node: " + m_outputNodeId + " Output Port: " + m_outputPortId;
}
}
// Destroy connection
public class DestroyConnectionActionData : ActionData
{
private int m_inputNodeId;
private int m_inputPortId;
private int m_outputNodeId;
private int m_outputPortId;
public DestroyConnectionActionData( int inputNodeId, int inputPortId, int outputNodeId, int outputPortId )
{
m_inputNodeId = inputNodeId;
m_inputPortId = inputPortId;
m_outputNodeId = outputNodeId;
m_outputPortId = outputPortId;
}
public override void ExecuteForward()
{
UIUtils.DeleteConnection( true, m_inputNodeId, m_inputPortId, false, true );
}
public override void ExecuteReverse()
{
UIUtils.ConnectInputToOutput( m_inputNodeId, m_inputPortId, m_outputNodeId, m_outputPortId );
}
public override string ToString()
{
return "Destroy Connection Node - Input Node: " + m_inputNodeId + " Input Port: " + m_inputPortId + " Output Node: " + m_outputNodeId + " Output Port: " + m_outputPortId;
}
}
// Move connection
public class MoveInputConnectionActionData : ActionData
{
private int m_oldInputNodeId;
private int m_oldInputNodePortId;
private int m_newInputNodeId;
private int m_newInputNodePortId;
private int m_outputNodeId;
private int m_outputPortId;
public MoveInputConnectionActionData( int oldInputNodeId, int oldInputPortId, int newInputNodeId, int newInputPortId, int outputNodeId, int outputPortId )
{
m_oldInputNodeId = oldInputNodeId;
m_oldInputNodePortId = oldInputPortId;
m_newInputNodeId = newInputNodeId;
m_newInputNodePortId = newInputPortId;
m_outputNodeId = outputNodeId;
m_outputPortId = outputPortId;
}
public override void ExecuteForward()
{
UIUtils.DeleteConnection( true, m_oldInputNodeId, m_oldInputNodePortId, false, true );
UIUtils.ConnectInputToOutput( m_newInputNodeId, m_newInputNodePortId, m_outputNodeId, m_outputPortId );
}
public override void ExecuteReverse()
{
base.ExecuteReverse();
UIUtils.DeleteConnection( true, m_newInputNodeId, m_newInputNodePortId, false, true );
UIUtils.ConnectInputToOutput( m_oldInputNodeId, m_oldInputNodePortId, m_outputNodeId, m_outputPortId );
}
public override string ToString()
{
return "Move Input Connection Node - Old Input Node: " + m_oldInputNodeId + " Old Input Port: " + m_oldInputNodePortId + " New Input Node: " + m_newInputNodeId + " New Input Port: " + m_newInputNodePortId + " Output Node: " + m_outputNodeId + " Output Port: " + m_outputPortId;
}
}
public class MoveOutputConnectionActionData : ActionData
{
private int m_inputNodeId;
private int m_inputPortId;
private int m_newOutputNodeId;
private int m_newOutputPortId;
private int m_oldOutputNodeId;
private int m_oldOutputPortId;
public MoveOutputConnectionActionData( int inputNodeId, int inputPortId, int newOutputNodeId, int newOutputPortId, int oldOutputNodeId, int oldOutputPortId )
{
m_inputNodeId = inputNodeId;
m_inputPortId = inputPortId;
m_newOutputNodeId = newOutputNodeId;
m_newOutputPortId = newOutputPortId;
m_oldOutputNodeId = oldOutputNodeId;
m_oldOutputPortId = oldOutputPortId;
}
public override void ExecuteForward()
{
UIUtils.DeleteConnection( false, m_oldOutputNodeId, m_oldOutputNodeId, false, true );
UIUtils.ConnectInputToOutput( m_inputNodeId, m_inputPortId, m_newOutputNodeId, m_newOutputPortId );
}
public override void ExecuteReverse()
{
base.ExecuteReverse();
UIUtils.DeleteConnection( false, m_newOutputNodeId, m_newOutputPortId, false, true );
UIUtils.ConnectInputToOutput( m_inputNodeId, m_inputPortId, m_oldOutputNodeId, m_oldOutputPortId );
}
public override string ToString()
{
return "Move Input Connection Node - Input Node: " + m_inputNodeId + " Input Port: " + m_inputPortId + " Old Output Node: " + m_oldOutputNodeId + " Old Output Port: " + m_oldOutputPortId + " New Output Node: " + m_newOutputNodeId + " New Output Port: " + m_newOutputPortId;
}
}
public class CreateNewGraphActionData : ActionData
{
private string m_name;
public CreateNewGraphActionData( string name )
{
m_name = name;
}
public override void ExecuteForward()
{
UIUtils.CreateNewGraph( m_name );
}
}
public class ChangeNodePropertiesActionData : ActionData
{
private string m_originalProperties;
private string m_newProperties;
private int m_nodeId;
public ChangeNodePropertiesActionData( ParentNode node, string originalProperties )
{
m_nodeId = node.UniqueId;
m_originalProperties = originalProperties;
m_newProperties = string.Empty;
string trash = string.Empty;
node.WriteToString( ref m_newProperties, ref trash );
}
public ChangeNodePropertiesActionData( int nodeId, string originalProperties )
{
m_nodeId = nodeId;
m_originalProperties = originalProperties;
m_newProperties = string.Empty;
string trash = string.Empty;
UIUtils.GetNode( nodeId ).WriteToString( ref m_newProperties, ref trash );
}
public override void ExecuteForward()
{
string[] properties = m_newProperties.Split( IOUtils.FIELD_SEPARATOR );
UIUtils.GetNode( m_nodeId ).ReadFromString( ref properties );
}
public override void ExecuteReverse()
{
string[] properties = m_originalProperties.Split( IOUtils.FIELD_SEPARATOR );
UIUtils.GetNode( m_nodeId ).ReadFromString( ref properties );
}
public override string ToString()
{
return "Change Node Propertie - Node: " + m_nodeId + "\nOriginal Properties:\n" + m_originalProperties + "\nNew Properties:\n" + m_newProperties;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 29204f353101f46439a93f1c503d3197
timeCreated: 1481126954
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,58 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System.Collections.Generic;
namespace AmplifyShaderEditor
{
public class ActionLog
{
private int m_maxCount;
private int m_index;
private List<ActionData> m_sequence;
public ActionLog(int maxCount)
{
m_maxCount = maxCount;
m_index = 0;
m_sequence = new List<ActionData>();
}
public void AddToLog(ActionData actionData)
{
if (m_sequence.Count > m_maxCount)
{
m_sequence.RemoveAt(0);
}
m_sequence.Add(actionData);
m_index = m_sequence.Count - 1;
}
public void UndoLastAction()
{
if ( m_index > -1 && m_index < m_sequence.Count )
m_sequence[m_index--].ExecuteReverse();
}
public void RedoLastAction()
{
if (m_index < (m_sequence.Count - 1))
m_sequence[++m_index].ExecuteForward();
}
public void ClearLog()
{
m_sequence.Clear();
m_index = 0;
}
public void Destroy()
{
m_sequence.Clear();
m_sequence = null;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: bc089a69595d8994cb89946a919517c2
timeCreated: 1481126958
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,39 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System.Collections.Generic;
namespace AmplifyShaderEditor
{
public class ActionSequence
{
private string m_name;
private List<ActionData> m_sequence;
public ActionSequence( string name )
{
m_name = name;
m_sequence = new List<ActionData>();
}
public void AddToSequence( ActionData actionData )
{
m_sequence.Add( actionData );
}
public void Execute()
{
for ( int i = 0; i < m_sequence.Count; i++ )
{
m_sequence[ i ].ExecuteForward();
}
}
public void Destroy()
{
m_sequence.Clear();
m_sequence = null;
}
public string Name { get { return m_name; } }
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 43bd963fa46ee9c4680dacff1d8dc0b9
timeCreated: 1481126955
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,674 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using System.Collections.Generic;
namespace AmplifyShaderEditor
{
public struct Constants
{
/*public readonly static string[] CustomASEStandardArgsMacros =
{
"#if defined(SHADER_API_D3D11) || defined(SHADER_API_XBOXONE) || defined(UNITY_COMPILER_HLSLCC)//ASE Args Macros",
"#define ASE_TEXTURE2D_ARGS(textureName) Texture2D textureName, SamplerState sampler##textureName",
"#define ASE_TEXTURE3D_ARGS(textureName) Texture3D textureName, SamplerState sampler##textureName",
"#define ASE_TEXTURECUBE_ARGS(textureName) TextureCube textureName, SamplerState sampler##textureName",
"#define ASE_TEXTURE2D_PARAMS(textureName) textureName, sampler##textureName",
"#define ASE_TEXTURE3D_PARAMS(textureName) textureName, sampler##textureName",
"#define ASE_TEXTURECUBE_PARAMS(textureName) textureName, sampler##textureName",
"#define ASE_TEXTURE2D_ARRAY_PARAMS(textureName) textureName, sampler##textureName",
"#else//ASE Args Macros",
"#define ASE_TEXTURE2D_ARGS(textureName) sampler2D textureName",
"#define ASE_TEXTURE3D_ARGS(textureName) sampler3D textureName",
"#define ASE_TEXTURECUBE_ARGS(textureName) samplerCUBE textureName",
"#define ASE_TEXTURE2D_PARAMS(textureName) textureName",
"#define ASE_TEXTURE3D_PARAMS(textureName) textureName",
"#define ASE_TEXTURECUBE_PARAMS(textureName) textureName",
"#define ASE_TEXTURE2D_ARRAY_PARAMS(textureName) textureName",
"#endif//ASE Args Macros\n"
};
public readonly static string[] CustomASEDeclararionMacros =
{
"#define ASE_TEXTURE2D(textureName) {0}2D(textureName)",
"#define ASE_TEXTURE2D_ARRAY(textureName) {0}2D_ARRAY(textureName)",
"#define ASE_TEXTURE3D(textureName) {0}3D(textureName)",
"#define ASE_TEXTURECUBE(textureName) {0}CUBE(textureName)\n"
};
public readonly static string[] CustomASEStandarSamplingMacrosHelper =
{
"#if defined(SHADER_API_D3D11) || defined(SHADER_API_XBOXONE) || defined(UNITY_COMPILER_HLSLCC)//ASE Sampling Macros",
"#else//ASE Sampling Macros",
"#endif//ASE Sampling Macros\n"
};*/
/*public readonly static string[] CustomASESamplingMacros =
{
"#define ASE_SAMPLE_TEXTURE2D(textureName,{0}coords) {1}2D{2}(textureName,{0}coords)",
"#define ASE_SAMPLE_TEXTURE2D_LOD(textureName, {0}coord2, lod) {1}2D{2}_LOD(textureName, {0}coord2, lod)",
"#define ASE_SAMPLE_TEXTURE2D_BIAS(textureName,{0}coord2, bias) {1}2D{2}_BIAS(textureName,{0}coord2, bias)",
"#define ASE_SAMPLE_TEXTURE2D_GRAD(textureName,{0}coord2, dpdx, dpdy) {1}2D{2}_GRAD(textureName,{0}coord2, dpdx, dpdy)",
"#define ASE_SAMPLE_TEXTURE3D(textureName,{0}coord3) {1}3D{2}(textureName,{0}coord3)",
"#define ASE_SAMPLE_TEXTURE3D_LOD(textureName,{0}coord3, lod) {1}3D{2}_LOD(textureName,{0}coord3, lod)",
"#define ASE_SAMPLE_TEXTURE3D_BIAS(textureName,{0}coord3, bias) {1}3D{2}_BIAS(textureName,{0}coord3, bias)",
"#define ASE_SAMPLE_TEXTURE3D_GRAD(textureName,{0}coord3, dpdx, dpdy) {1}3D{2}_GRAD(textureName,{0}coord3, dpdx, dpdy)",
"#define ASE_SAMPLE_TEXTURECUBE(textureName,{0}coord3) {1}CUBE{2}(textureName,{0}coord3)",
"#define ASE_SAMPLE_TEXTURECUBE_LOD(textureName,{0}coord3, lod) {1}CUBE{2}_LOD(textureName,{0}coord3, lod)",
"#define ASE_SAMPLE_TEXTURECUBE_BIAS(textureName,{0}coord3, bias) {1}CUBE{2}_BIAS(textureName,{0}coord3, bias)\n"
};*/
// SRP
/*public readonly static string[] CustomASESRPArgsMacros =
{
"#define ASE_TEXTURE2D_ARGS(textureName) TEXTURE2D(textureName), SAMPLER(textureName)",
"#define ASE_TEXTURE3D_ARGS(textureName) TEXTURE3D(textureName), SAMPLER(textureName)",
"#define ASE_TEXTURECUBE_ARGS(textureName) TEXTURECUBE(textureName), SAMPLER(textureName)",
"#define ASE_TEXTURE2D_PARAMS(textureName) textureName, sampler##textureName",
"#define ASE_TEXTURE3D_PARAMS(textureName) textureName, sampler##textureName",
"#define ASE_TEXTURECUBE_PARAMS(textureName) textureName, sampler##textureName",
"#define ASE_TEXTURE2D_ARRAY_PARAMS(textureName) textureName, sampler##textureName\n"
};*/
public readonly static RenderTextureFormat PreviewFormat = RenderTextureFormat.ARGBFloat;
public readonly static int PreviewSize = 128;
public readonly static List<string> UnityNativeInspectors = new List<string>
{
"Rendering.HighDefinition.LightingShaderGraphGUI",
"Rendering.HighDefinition.HDUnlitGUI",
"UnityEditor.Rendering.HighDefinition.HDLitGUI",
"UnityEditor.ShaderGraph.PBRMasterGUI",
"UnityEditor.Rendering.HighDefinition.DecalGUI",
"UnityEditor.Rendering.HighDefinition.FabricGUI",
"UnityEditor.Experimental.Rendering.HDPipeline.HDLitGUI",
"Rendering.HighDefinition.DecalGUI",
"Rendering.HighDefinition.LitShaderGraphGUI",
"Rendering.HighDefinition.DecalShaderGraphGUI",
"UnityEditor.ShaderGraphUnlitGUI",
"UnityEditor.ShaderGraphLitGUI",
"UnityEditor.Rendering.Universal.DecalShaderGraphGUI"
};
public readonly static Dictionary<string, string> CustomInspectorHD7To10 = new Dictionary<string, string>
{
{ "UnityEditor.Rendering.HighDefinition.DecalGUI","Rendering.HighDefinition.DecalGUI"},
{ "UnityEditor.Rendering.HighDefinition.FabricGUI","Rendering.HighDefinition.LightingShaderGraphGUI"},
{ "UnityEditor.Rendering.HighDefinition.HDLitGUI","Rendering.HighDefinition.LitShaderGraphGUI"},
{ "UnityEditor.Experimental.Rendering.HDPipeline.HDLitGUI","Rendering.HighDefinition.LitShaderGraphGUI"},
};
public readonly static Dictionary<string , string> CustomInspectorURP10To12 = new Dictionary<string , string>
{
{ "UnityEditor.ShaderGraph.PBRMasterGUI","UnityEditor.ShaderGraphLitGUI"},
};
public readonly static Dictionary<string , string> CustomInspectorHDLegacyTo11 = new Dictionary<string , string>
{
{ "UnityEditor.Rendering.HighDefinition.DecalGUI","Rendering.HighDefinition.DecalShaderGraphGUI"},
{ "Rendering.HighDefinition.DecalGUI","Rendering.HighDefinition.DecalShaderGraphGUI"},
{ "UnityEditor.Rendering.HighDefinition.FabricGUI","Rendering.HighDefinition.LightingShaderGraphGUI"},
{ "UnityEditor.Rendering.HighDefinition.HDLitGUI","Rendering.HighDefinition.LitShaderGraphGUI"},
{ "UnityEditor.Experimental.Rendering.HDPipeline.HDLitGUI","Rendering.HighDefinition.LitShaderGraphGUI"},
};
public readonly static string CustomASEStandardSamplerParams = "#define ASE_TEXTURE_PARAMS(textureName) textureName\n";
public readonly static string[] CustomASESRPTextureArrayMacros =
{
"#define ASE_TEXTURE2D_ARRAY_ARGS(textureName) TEXTURE2D_ARRAY_ARGS(textureName,sampler##textureName)\n" ,
"#define ASE_TEXTURE2D_ARRAY_PARAM(textureName) TEXTURE2D_ARRAY_PARAM(textureName,sampler##textureName)\n" ,
"#define ASE_SAMPLE_TEXTURE2D_ARRAY(textureName, coord3) textureName.Sample(sampler##textureName, coord3)",
"#define ASE_SAMPLE_TEXTURE2D_ARRAY_LOD(textureName, coord3, lod) textureName.SampleLevel(sampler##textureName, coord3, lod)"
};
public readonly static string CustomASESRPSamplerParams = "#define ASE_TEXTURE_PARAMS(textureName) textureName, sampler##textureName\n";
public readonly static string[] CustomSRPSamplingMacros =
{
"#if defined(SHADER_API_D3D11) || defined(SHADER_API_XBOXONE) || defined(UNITY_COMPILER_HLSLCC) || defined(SHADER_API_PSSL) || (defined(SHADER_TARGET_SURFACE_ANALYSIS) && !defined(SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER))//3D SRP MACROS",
"#define SAMPLE_TEXTURE3D_GRAD(textureName, samplerName, coord3, dpdx, dpdy) textureName.SampleGrad(samplerName, coord3, dpdx, dpdy)",
"#define SAMPLE_TEXTURE3D_BIAS(textureName, samplerName, coord3, bias) textureName.SampleBias(samplerName, coord3, bias)",
"#else//3D SRP MACROS",
"#define SAMPLE_TEXTURE3D_GRAD(textureName, samplerName, coord3, dpdx, dpdy) SAMPLE_TEXTURE3D(textureName, samplerName, coord3)",
"#define SAMPLE_TEXTURE3D_BIAS(textureName, samplerName, coord3, bias) SAMPLE_TEXTURE3D(textureName, samplerName, coord3)",
"#endif//3D SRP MACROS\n"
};
public readonly static Dictionary<TextureType, string> TexDeclarationSRPMacros = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"TEXTURE2D({0}); SAMPLER(sampler{0});"},
{ TextureType.Texture3D,"TEXTURE3D({0}); SAMPLER(sampler{0});"},
{ TextureType.Cube,"TEXTURECUBE({0}); SAMPLER(sampler{0});"},
{ TextureType.Texture2DArray,"TEXTURE2D_ARRAY({0}); SAMPLER(sampler{0});"},
};
public readonly static Dictionary<TextureType, string> SamplerDeclarationSRPMacros = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"SAMPLER(sampler{0});"},
{ TextureType.Texture3D,"SAMPLER(sampler{0});"},
{ TextureType.Cube,"SAMPLER(sampler{0});"},
{ TextureType.Texture2DArray,"SAMPLER(sampler{0});"},
};
public readonly static Dictionary<TextureType, string> TexDeclarationNoSamplerSRPMacros = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"TEXTURE2D({0})"},
{ TextureType.Texture3D,"TEXTURE3D({0})"},
{ TextureType.Cube,"TEXTURECUBE({0})"},
{ TextureType.Texture2DArray,"TEXTURE2D_ARRAY({0})"},
};
public readonly static Dictionary<TextureType, string> TexSampleSRPMacros = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"SAMPLE_TEXTURE2D{0}( {1}, {2}, {3} )"},
{ TextureType.Texture3D,"SAMPLE_TEXTURE3D{0}( {1}, {2}, {3} )"},
{ TextureType.Cube,"SAMPLE_TEXTURECUBE{0}( {1}, {2}, {3} )"},
{ TextureType.Texture2DArray,"SAMPLE_TEXTURE2D_ARRAY{0}( {1}, {2}, {3} )"},
};
public readonly static Dictionary<TextureType, string> TexParams = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"ASE_TEXTURE2D_PARAMS({0})"},
{ TextureType.Texture3D,"ASE_TEXTURE3D_PARAMS({0})"},
{ TextureType.Cube,"ASE_TEXTURECUBE_PARAMS({0})"},
{ TextureType.Texture2DArray,"ASE_TEXTURE2D_ARRAY_PARAMS({0})"},
};
public readonly static Dictionary<WirePortDataType, TextureType> WireToTexture = new Dictionary<WirePortDataType, TextureType>
{
{ WirePortDataType.SAMPLER1D,TextureType.Texture1D},
{ WirePortDataType.SAMPLER2D,TextureType.Texture2D},
{ WirePortDataType.SAMPLER3D,TextureType.Texture3D},
{ WirePortDataType.SAMPLERCUBE,TextureType.Cube},
{ WirePortDataType.SAMPLER2DARRAY,TextureType.Texture2DArray},
};
public readonly static Dictionary<TextureType, WirePortDataType> TextureToWire = new Dictionary<TextureType, WirePortDataType>
{
{ TextureType.Texture1D,WirePortDataType.SAMPLER1D},
{ TextureType.Texture2D,WirePortDataType.SAMPLER2D},
{ TextureType.Texture3D, WirePortDataType.SAMPLER3D},
{ TextureType.Cube,WirePortDataType.SAMPLERCUBE},
{ TextureType.Texture2DArray,WirePortDataType.SAMPLER2DARRAY},
{ TextureType.ProceduralTexture,WirePortDataType.SAMPLER2D},
};
public readonly static string SamplingMacrosDirective = "#define ASE_USING_SAMPLING_MACROS 1";
// STANDARD
public readonly static string[] CustomASEStandarSamplingMacrosHelper =
{
"#if defined(SHADER_API_D3D11) || defined(SHADER_API_XBOXONE) || defined(UNITY_COMPILER_HLSLCC) || defined(SHADER_API_PSSL) || (defined(SHADER_TARGET_SURFACE_ANALYSIS) && !defined(SHADER_TARGET_SURFACE_ANALYSIS_MOJOSHADER))//ASE Sampler Macros",
"#else//ASE Sampling Macros",
"#endif//ASE Sampling Macros\n"
};
public readonly static string[] CustomASEArraySamplingMacrosRecent =
{
"#define UNITY_SAMPLE_TEX2DARRAY(tex,coord) tex.Sample(sampler##tex,coord)",
"#define UNITY_SAMPLE_TEX2DARRAY_LOD(tex,coord,lod) tex.SampleLevel(sampler##tex,coord, lod)",
"#define UNITY_SAMPLE_TEX2DARRAY_BIAS(tex,coord,bias) tex.SampleBias(sampler##tex,coord,bias)",
"#define UNITY_SAMPLE_TEX2DARRAY_GRAD(tex,coord,ddx,ddy) tex.SampleGrad(sampler##tex,coord,ddx,ddy)",
};
public readonly static string[] CustomASEArraySamplingMacrosOlder =
{
"#define UNITY_SAMPLE_TEX2DARRAY(tex,coord) tex2DArray(tex,coord)",
"#define UNITY_SAMPLE_TEX2DARRAY_LOD(tex,coord,lod) tex2DArraylod(tex, float4(coord,lod))",
"#define UNITY_SAMPLE_TEX2DARRAY_BIAS(tex,coord,bias) tex2DArray(tex,coord)",
"#define UNITY_SAMPLE_TEX2DARRAY_GRAD(tex,coord,ddx,ddy) tex2DArray(tex,coord)",
};
public readonly static string[] CustomASEStandarSamplingMacrosRecent =
{
"#define SAMPLE_TEXTURE2D(tex,samplerTex,coord) tex.Sample(samplerTex,coord)",
"#define SAMPLE_TEXTURE2D_LOD(tex,samplerTex,coord,lod) tex.SampleLevel(samplerTex,coord, lod)",
"#define SAMPLE_TEXTURE2D_BIAS(tex,samplerTex,coord,bias) tex.SampleBias(samplerTex,coord,bias)",
"#define SAMPLE_TEXTURE2D_GRAD(tex,samplerTex,coord,ddx,ddy) tex.SampleGrad(samplerTex,coord,ddx,ddy)",
"#define SAMPLE_TEXTURE3D(tex,samplerTex,coord) tex.Sample(samplerTex,coord)",
"#define SAMPLE_TEXTURE3D_LOD(tex,samplerTex,coord,lod) tex.SampleLevel(samplerTex,coord, lod)",
"#define SAMPLE_TEXTURE3D_BIAS(tex,samplerTex,coord,bias) tex.SampleBias(samplerTex,coord,bias)",
"#define SAMPLE_TEXTURE3D_GRAD(tex,samplerTex,coord,ddx,ddy) tex.SampleGrad(samplerTex,coord,ddx,ddy)",
"#define SAMPLE_TEXTURECUBE(tex,samplerTex,coord) tex.Sample(samplerTex,coord)",
"#define SAMPLE_TEXTURECUBE_LOD(tex,samplerTex,coord,lod) tex.SampleLevel(samplerTex,coord, lod)",
"#define SAMPLE_TEXTURECUBE_BIAS(tex,samplerTex,coord,bias) tex.SampleBias(samplerTex,coord,bias)",
"#define SAMPLE_TEXTURECUBE_GRAD(tex,samplerTex,coord,ddx,ddy) tex.SampleGrad(samplerTex,coord,ddx,ddy)",
"#define SAMPLE_TEXTURE2D_ARRAY(tex,samplerTex,coord) tex.Sample(samplerTex,coord)",
"#define SAMPLE_TEXTURE2D_ARRAY_LOD(tex,samplerTex,coord,lod) tex.SampleLevel(samplerTex,coord, lod)",
"#define SAMPLE_TEXTURE2D_ARRAY_BIAS(tex,samplerTex,coord,bias) tex.SampleBias(samplerTex,coord,bias)",
"#define SAMPLE_TEXTURE2D_ARRAY_GRAD(tex,samplerTex,coord,ddx,ddy) tex.SampleGrad(samplerTex,coord,ddx,ddy)",
};
public readonly static string[] CustomASEStandarSamplingMacrosOlder =
{
"#define SAMPLE_TEXTURE2D(tex,samplerTex,coord) tex2D(tex,coord)",
"#define SAMPLE_TEXTURE2D_LOD(tex,samplerTex,coord,lod) tex2Dlod(tex,float4(coord,0,lod))",
"#define SAMPLE_TEXTURE2D_BIAS(tex,samplerTex,coord,bias) tex2Dbias(tex,float4(coord,0,bias))",
"#define SAMPLE_TEXTURE2D_GRAD(tex,samplerTex,coord,ddx,ddy) tex2Dgrad(tex,coord,ddx,ddy)",
"#define SAMPLE_TEXTURE3D(tex,samplerTex,coord) tex3D(tex,coord)",
"#define SAMPLE_TEXTURE3D_LOD(tex,samplerTex,coord,lod) tex3Dlod(tex,float4(coord,lod))",
"#define SAMPLE_TEXTURE3D_BIAS(tex,samplerTex,coord,bias) tex3D(tex,coord)",
"#define SAMPLE_TEXTURE3D_GRAD(tex,samplerTex,coord,ddx,ddy) tex3D(tex,coord)",
"#define SAMPLE_TEXTURECUBE(tex,samplertex,coord) texCUBE(tex,coord)",
"#define SAMPLE_TEXTURECUBE_LOD(tex,samplertex,coord,lod) texCUBElod (tex,half4(coord,lod))",
"#define SAMPLE_TEXTURECUBE_BIAS(tex,samplertex,coord,bias) texCUBE(tex,coord)",
"#define SAMPLE_TEXTURECUBE_GRAD(tex,samplertex,coord,ddx,ddy) texCUBE(tex,coord)",
"#define SAMPLE_TEXTURE2D_ARRAY(tex,samplertex,coord) tex2DArray(tex,coord)",
"#define SAMPLE_TEXTURE2D_ARRAY_LOD(tex,samplertex,coord,lod) tex2DArraylod(tex, float4(coord,lod))",
"#define SAMPLE_TEXTURE2D_ARRAY_BIAS(tex,samplerTex,coord,bias) tex2DArray(tex,coord)",
"#define SAMPLE_TEXTURE2D_ARRAY_GRAD(tex,samplerTex,coord,ddx,ddy) tex2DArray(tex,coord)",
};
public readonly static string[] CustomArraySamplingMacros =
{
"#if defined(UNITY_COMPILER_HLSL2GLSL) || defined(SHADER_TARGET_SURFACE_ANALYSIS)//ASE Array Sampler Macros",
"#define ASE_SAMPLE_TEX2DARRAY_GRAD(tex,coord,dx,dy) UNITY_SAMPLE_TEX2DARRAY (tex,coord)",
"#else//ASE Array Sampler Macros",
"#define ASE_SAMPLE_TEX2DARRAY_GRAD(tex,coord,dx,dy) tex.SampleGrad (sampler##tex,coord,dx,dy)",
"#endif//ASE Array Sampler Macros\n"
};
public readonly static Dictionary<TextureType, string> TexDeclarationStandardMacros = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"UNITY_DECLARE_TEX2D({0});"},
{ TextureType.Texture3D,"UNITY_DECLARE_TEX3D({0});"},
{ TextureType.Cube,"UNITY_DECLARE_TEXCUBE({0});"},
{ TextureType.Texture2DArray,"UNITY_DECLARE_TEX2DARRAY({0});"}
};
public readonly static Dictionary<TextureType, string> TexDeclarationNoSamplerStandardMacros = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"UNITY_DECLARE_TEX2D_NOSAMPLER({0})"},
{ TextureType.Texture3D,"UNITY_DECLARE_TEX3D_NOSAMPLER({0})"},
{ TextureType.Cube,"UNITY_DECLARE_TEXCUBE_NOSAMPLER({0})"},
{ TextureType.Texture2DArray,"UNITY_DECLARE_TEX2DARRAY_NOSAMPLER({0})"}
};
public readonly static Dictionary<TextureType, string> TexSampleStandardMacros = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"UNITY_SAMPLE_TEX2D{0}( {1}, {3} )"},
{ TextureType.Texture3D,"UNITY_SAMPLE_TEX3D{0}( {1}, {3} )"},
{ TextureType.Cube,"UNITY_SAMPLE_TEXCUBE{0}( {1}, {3} )"},
{ TextureType.Texture2DArray,"UNITY_SAMPLE_TEX2DARRAY{0}( {1}, {3} )"}
};
public readonly static Dictionary<TextureType, string> TexSampleSamplerStandardMacros = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"SAMPLE_TEXTURE2D{0}( {1}, {2}, {3} )"},
{ TextureType.Texture3D,"SAMPLE_TEXTURE3D{0}( {1}, {2}, {3} )"},
{ TextureType.Cube,"SAMPLE_TEXTURECUBE{0}( {1}, {2}, {3} )"},
{ TextureType.Texture2DArray,"SAMPLE_TEXTURE2D_ARRAY{0}( {1}, {2}, {3} )"}
};
public readonly static Dictionary<TextureType, string> TexSampleStandard = new Dictionary<TextureType, string>
{
{ TextureType.Texture2D,"tex2D{0}( {1}, {2} )"},
{ TextureType.Texture3D,"tex3D{0}( {1}, {2} )"},
{ TextureType.Cube,"texCUBE{0}( {1}, {2} )"},
{ TextureType.Texture2DArray,"tex2DArray{0}( {1}, {2} )"}
};
public readonly static char LineFeedSeparator = '$';
public readonly static char SemiColonSeparator = '@';
public readonly static string AppDataFullName = "appdata_full";
public readonly static string CustomAppDataFullName = "appdata_full_custom";
public readonly static string CustomAppDataFullBody =
"\n\t\tstruct appdata_full_custom\n" +
"\t\t{\n" +
"\t\t\tfloat4 vertex : POSITION;\n" +
"\t\t\tfloat4 tangent : TANGENT;\n" +
"\t\t\tfloat3 normal : NORMAL;\n" +
"\t\t\tfloat4 texcoord : TEXCOORD0;\n" +
"\t\t\tfloat4 texcoord1 : TEXCOORD1;\n" +
"\t\t\tfloat4 texcoord2 : TEXCOORD2;\n" +
"\t\t\tfloat4 texcoord3 : TEXCOORD3;\n" +
"\t\t\tfloat4 color : COLOR;\n" +
"\t\t\tUNITY_VERTEX_INPUT_INSTANCE_ID\n";
public readonly static string IncludeFormat = "#include \"{0}\"";
public readonly static string PragmaFormat = "#pragma {0}";
public readonly static string DefineFormat = "#define {0}";
public readonly static string RenderTypeHelperStr = "RenderType";
public readonly static string RenderQueueHelperStr = "Queue";
public readonly static string DisableBatchingHelperStr = "DisableBatching";
public readonly static string DefaultShaderName = "New Amplify Shader";
public readonly static string UndoReplaceMasterNodeId = "Replacing Master Node";
public readonly static string UnityLightingLib = "Lighting.cginc";
public readonly static string UnityAutoLightLib = "AutoLight.cginc";
public readonly static string UnityBRDFLib = "UnityStandardBRDF.cginc";
public readonly static string LocalValueDecWithoutIdent = "{0} {1} = {2};";
public readonly static string CustomTypeLocalValueDecWithoutIdent = "{0} {1} =({0}){2};";
public readonly static string LocalValueDefWithoutIdent = "{0} {1} {2};";
public readonly static string TilingOffsetFormat = "{0} * {1} + {2}";
public static string InvalidPostProcessDatapath = "__DELETED_GUID_Trash";
//TEMPLATES
public static float PlusMinusButtonLayoutWidth = 15;
public static float NodeButtonSizeX = 16;
public static float NodeButtonSizeY = 16;
public static float NodeButtonDeltaX = 5;
public static float NodeButtonDeltaY = 11;
public readonly static string SafeNormalizeInfoStr = "With Safe Normalize division by 0 is prevented over the normalize operation at the expense of additional instructions on shader.";
public readonly static string ReservedPropertyNameStr = "Property name '{0}' is reserved and cannot be used";
public readonly static string NumericPropertyNameStr = "Property name '{0}' is numeric thus cannot be used";
public readonly static string DeprecatedMessageStr = "Node '{0}' is deprecated. Use node '{1}' instead.";
public readonly static string DeprecatedNoAlternativeMessageStr = "Node '{0}' is deprecated and should be removed.";
public readonly static string UndoChangePropertyTypeNodesId = "Changing Property Types";
public readonly static string UndoChangeTypeNodesId = "Changing Nodes Types";
public readonly static string UndoMoveNodesId = "Moving Nodes";
public readonly static string UndoRegisterFullGrapId = "Register Graph";
public readonly static string UndoAddNodeToCommentaryId = "Add node to Commentary";
public readonly static string UndoRemoveNodeFromCommentaryId = "Remove node from Commentary";
public readonly static string UndoCreateDynamicPortId = "Create Dynamic Port";
public readonly static string UndoDeleteDynamicPortId = "Destroy Dynamic Port";
public readonly static string UndoRegisterNodeId = "Register Object";
public readonly static string UndoUnregisterNodeId = "Unregister Object";
public readonly static string UndoCreateNodeId = "Create Object";
public readonly static string UndoPasteNodeId = "Paste Object";
public readonly static string UndoDeleteNodeId = "Destroy Object";
public readonly static string UndoDeleteConnectionId = "Destroy Connection";
public readonly static string UndoCreateConnectionId = "Create Connection";
public readonly static float MenuDragSpeed = -0.5f;
public readonly static string DefaultCustomInspector = "AmplifyShaderEditor.MaterialInspector";
public readonly static string OldCustomInspector = "ASEMaterialInspector";
public readonly static string ReferenceTypeStr = "Mode";
public readonly static string AvailableReferenceStr = "Reference";
public readonly static string InstancePostfixStr = " (Reference) ";
public readonly static string ASEMenuName = "Amplify Shader";
public readonly static string LodCrossFadeOption2017 = "dithercrossfade";
public readonly static string UnityShaderVariables = "UnityShaderVariables.cginc";
public readonly static string UnityCgLibFuncs = "UnityCG.cginc";
public readonly static string UnityStandardUtilsLibFuncs = "UnityStandardUtils.cginc";
public readonly static string UnityPBSLightingLib = "UnityPBSLighting.cginc";
public readonly static string UnityDeferredLightLib = "UnityDeferredLibrary.cginc";
public readonly static string ATSharedLibGUID = "ba242738c4be3324aa88d126f7cc19f9";
public readonly static string CameraDepthTextureValue = "UNITY_DECLARE_DEPTH_TEXTURE( _CameraDepthTexture );";
//public readonly static string CameraDepthTextureSRPVar = "TEXTURE2D(_CameraDepthTexture);";
//public readonly static string CameraDepthTextureSRPSampler = "SAMPLER(sampler_CameraDepthTexture);";
public readonly static string CameraDepthTextureLWEnabler = "REQUIRE_DEPTH_TEXTURE 1";
public readonly static string CameraDepthTextureTexelSize = "uniform float4 _CameraDepthTexture_TexelSize;";
public readonly static string InstanceIdMacro = "UNITY_VERTEX_INPUT_INSTANCE_ID";
public readonly static string InstanceIdVariable = "UNITY_GET_INSTANCE_ID({0})";
public readonly static string HelpURL = "http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor";
//public readonly static string NodeCommonUrl = "http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Nodes#";
//public readonly static string CommunityNodeCommonUrl = "http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/Community_Nodes#";
public readonly static string NodeCommonUrl = "http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/";
public readonly static string CommunityNodeCommonUrl = "http://wiki.amplify.pt/index.php?title=Unity_Products:Amplify_Shader_Editor/";
public readonly static Color InfiniteLoopColor = Color.red;
public readonly static Color DefaultCategoryColor = new Color( 0.26f, 0.35f, 0.44f, 1.0f );
public readonly static Color NodeBodyColor = new Color( 1f, 1f, 1f, 1.0f );
public readonly static Color ModeTextColor = new Color( 1f, 1f, 1f, 0.25f );
public readonly static Color ModeIconColor = new Color( 1f, 1f, 1f, 0.75f );
public readonly static Color PortTextColor = new Color( 1f, 1f, 1f, 0.5f );
public readonly static Color PortLockedTextColor = new Color( 1f, 1f, 1f, 0.35f );
public readonly static Color BoxSelectionColor = new Color( 0.5f, 0.75f, 1f, 0.33f );
public readonly static Color SpecialRegisterLocalVarSelectionColor = new Color( 0.27f, 0.52f, 1.0f, 1f );
public readonly static Color SpecialGetLocalVarSelectionColor = new Color( 0.2f, 0.8f, 0.4f, 1f );
public readonly static Color NodeSelectedColor = new Color( 0.85f, 0.56f, 0f, 1f );
public readonly static Color NodeDefaultColor = new Color( 1f, 1f, 1f, 1f );
public readonly static Color NodeConnectedColor = new Color( 1.0f, 1f, 0.0f, 1f );
public readonly static Color NodeErrorColor = new Color( 1f, 0.5f, 0.5f, 1f );
public readonly static string NoSpecifiedCategoryStr = "<None>";
public readonly static int MINIMIZE_WINDOW_LOCK_SIZE = 630;
public readonly static int FoldoutMouseId = 0; // Left Mouse Button
public readonly static float SNAP_SQR_DIST = 200f;
public readonly static int INVALID_NODE_ID = -1;
public readonly static float WIRE_WIDTH = 7f;
public readonly static float WIRE_CONTROL_POINT_DIST = 0.7f;
public readonly static float WIRE_CONTROL_POINT_DIST_INV = 1.7f;
public readonly static float IconsLeftRightMargin = 5f;
public readonly static float PropertyPickerWidth = 16f;
public readonly static float PropertyPickerHeight = 16f;
public readonly static float PreviewExpanderWidth = 16f;
public readonly static float PreviewExpanderHeight = 16f;
public readonly static float TextFieldFontSize = 11f;
public readonly static float DefaultFontSize = 14f;
public readonly static float DefaultTitleFontSize = 12f;
public readonly static float PropertiesTitleFontSize = 11f;
public readonly static float MessageFontSize = 40f;
public readonly static float SelectedObjectFontSize = 30f;
public readonly static float PORT_X_ADJUST = 10;
public readonly static float PORT_INITIAL_X = 10;
public readonly static float PORT_INITIAL_Y = 41;
public readonly static float INPUT_PORT_DELTA_Y = 7;
public readonly static float PORT_TO_LABEL_SPACE_X = 4;
public readonly static float NODE_HEADER_HEIGHT = 32;
public readonly static float NODE_HEADER_EXTRA_HEIGHT = 0;
public readonly static float NODE_HEADER_LEFTRIGHT_MARGIN = 10;
public readonly static float MULTIPLE_SELECION_BOX_ALPHA = 0.5f;
public readonly static float RMB_CLICK_DELTA_TIME = 0.1f;
public readonly static float RMB_SCREEN_DIST = 10f;
public readonly static float CAMERA_MAX_ZOOM = 2f;
public readonly static float CAMERA_MIN_ZOOM = 1f;
public readonly static float CAMERA_ZOOM_SPEED = 0.1f;
public readonly static float ALT_CAMERA_ZOOM_SPEED = -0.05f;
public readonly static object INVALID_VALUE = null;
public readonly static float HORIZONTAL_TANGENT_SIZE = 100f;
public readonly static float OUTSIDE_WIRE_MARGIN = 5f;
public readonly static string SubTitleNameFormatStr = "Name( {0} )";
public readonly static string SubTitleSpaceFormatStr = "Space( {0} )";
public readonly static string SubTitleTypeFormatStr = "Type( {0} )";
public readonly static string SubTitleModeFormatStr = "Mode( {0} )";
public readonly static string SubTitleValueFormatStr = "Value( {0} )";
public readonly static string SubTitleConstFormatStr = "Const( {0} )";
public readonly static string SubTitleVarNameFormatStr = "Var( {0} )";
public readonly static string SubTitleRefNameFormatStr = "Ref( {0} )";
public readonly static string SubTitleCurrentFormatStr = "Current( {0} )";
public readonly static string CodeWrapper = "( {0} )";
public readonly static string InlineCodeWrapper = "{{\n{0}\n}}";
public readonly static string NodesDumpFormat = "{0}:,{1},{2}\n";
public readonly static string TagFormat = " \"{0}\" = \"{1}\"";
public readonly static string LocalVarIdentation = "\t\t\t";
public readonly static string SimpleLocalValueDec = LocalVarIdentation + "{0} {1};\n";
public readonly static string LocalValueDec = LocalVarIdentation + LocalValueDecWithoutIdent + '\n';
public readonly static string LocalValueDef = LocalVarIdentation + "{0} = {1};\n";
public readonly static string CastHelper = "({0}).{1}";
public readonly static string PropertyLocalVarDec = "{0} {1} = {0}({2});";
public readonly static string[] UniformDec = { "uniform {0} {1};", "{0} {1};" };
public readonly static string PropertyValueLabel = "Value( {0} )";
public readonly static string ConstantsValueLabel = "Const( {0} )";
public readonly static string PropertyFloatFormatLabel = "0.###";
public readonly static string PropertyBigFloatFormatLabel = "0.###e+0";
public readonly static string PropertyIntFormatLabel = "0";
public readonly static string PropertyBigIntFormatLabel = "0e+0";
public readonly static string PropertyVectorFormatLabel = "0.##";
public readonly static string PropertyBigVectorFormatLabel = "0.##e+0";
public readonly static string PropertyMatrixFormatLabel = "0.#";
public readonly static string PropertyBigMatrixFormatLabel = "0.#e+0";
public readonly static string NoPropertiesLabel = "No assigned properties";
public readonly static string ValueLabel = "Value";
public readonly static string DefaultValueLabel = "Default Value";
public readonly static string MaterialValueLabel = "Material Value";
public readonly static GUIContent DefaultValueLabelContent = new GUIContent( "Default Value" );
public readonly static GUIContent MaterialValueLabelContent = new GUIContent( "Material Value" );
public readonly static string InputVarStr = "i";//"input";
public readonly static string OutputVarStr = "o";//"output";
public readonly static string CustomLightOutputVarStr = "s";
public readonly static string CustomLightStructStr = "Custom";
public readonly static string VertexShaderOutputStr = "o";
public readonly static string VertexShaderInputStr = "v";//"vertexData";
public readonly static string VertexDataFunc = "vertexDataFunc";
public readonly static string VirtualCoordNameStr = "vcoord";
public readonly static string VertexVecNameStr = "vertexVec";
public readonly static string VertexVecDecStr = "float3 " + VertexVecNameStr;
public readonly static string VertexVecVertStr = VertexShaderOutputStr + "." + VertexVecNameStr;
public readonly static string NormalVecNameStr = "normalVec";
public readonly static string NormalVecDecStr = "float3 " + NormalVecNameStr;
public readonly static string NormalVecFragStr = InputVarStr + "." + NormalVecNameStr;
public readonly static string NormalVecVertStr = VertexShaderOutputStr + "." + NormalVecNameStr;
public readonly static string IncidentVecNameStr = "incidentVec";
public readonly static string IncidentVecDecStr = "float3 " + IncidentVecNameStr;
public readonly static string IncidentVecDefStr = VertexShaderOutputStr + "." + IncidentVecNameStr + " = normalize( " + VertexVecNameStr + " - _WorldSpaceCameraPos.xyz)";
public readonly static string IncidentVecFragStr = InputVarStr + "." + IncidentVecNameStr;
public readonly static string IncidentVecVertStr = VertexShaderOutputStr + "." + IncidentVecNameStr;
public readonly static string WorldNormalLocalDecStr = "WorldNormalVector( " + Constants.InputVarStr + " , {0}( 0,0,1 ))";
public readonly static string IsFrontFacingVariable = "ASEIsFrontFacing";
public readonly static string IsFrontFacingInput = "half ASEIsFrontFacing : SV_IsFrontFacing";
public readonly static string IsFrontFacingInputVFACE = "half ASEIsFrontFacing : VFACE";
public readonly static string ColorVariable = "vertexColor";
public readonly static string ColorInput = "float4 vertexColor : COLOR";
public readonly static string NoStringValue = "None";
public readonly static string EmptyPortValue = " ";
public readonly static string[] OverallInvalidChars = { "\r", "\n", "\\", " ", ".", ">", ",", "<", "\'", "\"", ";", ":", "[", "{", "]", "}","|", "=", "+", "`", "~", "/", "?", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-" };
public readonly static string[] RegisterInvalidChars = { "\r", "\n", "\\", ".", ">", ",", "<", "\'", "\"", ";", ":", "[", "{", "]", "}", "|", "=", "+", "`", "~", "?", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-" };
public readonly static string[] ShaderInvalidChars = { "\r", "\n", "\\", "\'", "\"", };
public readonly static string[] EnumInvalidChars = { "\r", "\n", "\\", ".", ">", ",", "<", "\'", "\"", ";", ":", "[", "{", "]", "}", "=", "+", "`", "~", "/", "?", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-" };
public readonly static string[] AttrInvalidChars = { "\r", "\n", "\\", ">", "<", "\'", "\"", ";", ":", "[", "{", "]", "}", "=", "+", "`", "~", "/", "?", "!", "@", "#", "$", "%", "^", "&", "*" };
public readonly static string[] HeaderInvalidChars = { "\r", "\n", "\\", ">", ",", "<", "\'", "\"", ";", ":", "[", "{", "]", "}", "=", "+", "`", "~", "/", "?", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-" };
public readonly static string[] WikiInvalidChars = { "#", "<", ">", "[", "]", "|", "{", "}", "%", "+", "?", "\\", "/", ",", ";", "." };
public readonly static string[,] UrlReplacementStringValues =
{
{ " = ", "Equals" },
{ " == ", "Equals" },
{ " != ", "NotEqual" },
{ " \u2260 ", "NotEqual" },
{ " > ", "Greater" },
{ " \u2265 " , "GreaterOrEqual" },
{ " >= ", "GreaterOrEqual" },
{ " < ", "Less" },
{ " \u2264 ", "LessOrEqual" },
{ " <= ", "LessOrEqual" },
{ " ", "_" },
{ "[", string.Empty },
{ "]", string.Empty }
};
public readonly static int UrlReplacementStringValuesLen = UrlReplacementStringValues.Length / 2;
public readonly static string[,] ReplacementStringValues =
{
{ " = ", "Equals" },
{ " == ", "Equals" },
{ " != ", "NotEqual" },
{ " \u2260 ", "NotEqual" },
{ " > ", "Greater" },
{ " \u2265 ", "GreaterOrEqual" },
{ " >= ", "GreaterOrEqual" },
{ " < ", "Less" },
{ " \u2264 ", "LessOrEqual" },
{ " <= ", "LessOrEqual" }
};
public readonly static int ReplacementStringValuesLen = ReplacementStringValues.Length / 2;
public readonly static string InternalData = "INTERNAL_DATA";
public readonly static string NoMaterialStr = "None";
public readonly static string OptionalParametersSep = " ";
public readonly static string NodeUndoId = "NODE_UNDO_ID";
public readonly static string NodeCreateUndoId = "NODE_CREATE_UNDO_ID";
public readonly static string NodeDestroyUndoId = "NODE_DESTROY_UNDO_ID";
// Custom node tags
//[InPortBegin:Id:Type:Name:InPortEnd]
public readonly static string CNIP = "#IP";
public readonly static float FLOAT_DRAW_HEIGHT_FIELD_SIZE = 16f;
public readonly static float FLOAT_DRAW_WIDTH_FIELD_SIZE = 45f;
public readonly static float FLOAT_WIDTH_SPACING = 3f;
public readonly static Color LockedPortColor = new Color( 0.3f, 0.3f, 0.3f, 0.5f );
public readonly static int[] AvailableUVChannels = { 0, 1, 2, 3, 4, 5, 6, 7 };
public readonly static string[] AvailableUVChannelsStr = { "0", "1", "2", "3", "4", "5", "6", "7"};
public readonly static string AvailableUVChannelLabel = "UV Channel";
public readonly static int[] AvailableUVSets = { 0, 1, 2, 3, 4, 5, 6, 7 };
public readonly static string[] AvailableUVSetsStr = { "0", "1", "2", "3","4", "5", "6", "7" };
public readonly static string AvailableUVSetsLabel = "UV Set";
public readonly static int[] AvailableUVSizes = { 2, 3, 4 };
public readonly static string[] AvailableUVSizesStr = { "Float 2", "Float 3", "Float 4" };
public readonly static string AvailableUVSizesLabel = "Coord Size";
public readonly static string LineSeparator = "________________________________";
public readonly static Vector2 CopyPasteDeltaPos = new Vector2( 40, 40 );
public readonly static string[] VectorSuffixes = { ".x", ".y", ".z", ".w" };
public readonly static string[] ColorSuffixes = { ".r", ".g", ".b", ".a" };
public const string InternalDataLabelStr = "Internal Data";
public const string AttributesLaberStr = "Attributes";
public const string ParameterLabelStr = "Parameters";
public static readonly string[] ReferenceArrayLabels = { "Object", "Reference" };
public static readonly string[] ChannelNamesVector = { "X", "Y", "Z", "W" };
public static readonly string[] ChannelNamesColor = { "R", "G", "B", "A" };
public static readonly string SamplerFormat = "sampler{0}";
public static readonly string SamplerDeclFormat = "SamplerState {0}";
public static readonly string SamplerDeclSRPFormat = "SAMPLER({0})";
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: d833dd0968f913f449477da6bcd56b48
timeCreated: 1481126959
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 2206c4bd7f3d18643a6a3452b0c070d1
folderAsset: yes
timeCreated: 1522769470
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,39 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System;
using AmplifyShaderEditor;
namespace AmplifyShaderEditor
{
public class ASEEndDecorator : MaterialPropertyDrawer
{
bool m_applyNext = false;
public override void OnGUI( Rect position, MaterialProperty prop, String label, MaterialEditor editor )
{
if( prop.applyPropertyCallback == null )
prop.applyPropertyCallback = Testc;
if( GUI.changed || m_applyNext )
{
m_applyNext = false;
Material mat = editor.target as Material;
UIUtils.CopyValuesFromMaterial( mat );
}
}
bool Testc( MaterialProperty prop, int changeMask, object previousValue )
{
m_applyNext = true;
return false;
}
public override float GetPropertyHeight( MaterialProperty prop, string label, MaterialEditor editor )
{
return 0;
}
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fdf2e52babbbbf040b3b9f6df50243f3
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,296 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
//
// Donated by BinaryCats
// https://forum.unity.com/threads/best-tool-asset-store-award-amplify-shader-editor-node-based-shader-creation-tool.430959/page-60#post-3414465
//////////////////////
// README / HOW TO USE
//////////////////////
// Examples:
//
// Floats:
//
// x Equals value
// EditableIf( _float1, Equalto, 1)
// This will allow the value to be edited, if the property _float1 is equal to 1. (_float1==1)
// Note: NotEqualTo is also a valid argument which will do the opposite of this example.EditableIf(_float1, NotEqualTo, 1) (NotEqualTo != 1)
//
// x Greater than value
// EditableIf(_Float1,GreaterThan,1)
// This will allow the value to be edited if the property _float1 is Greater than 1. (_float1>1)
//
// x Greater Than Or Equal to value
// EditableIf(_Float1,GreaterThanOrEqualTo,1)
// This will allow the value to be edited if the property _float1 is Greater than or equal to 1. (_float1>=1)
//
//
// x Less Than value
// EditableIf(_Float1,LessThan,1)
// This will allow the value to be edited if the property _float1 is Less than 1. (_float1<1)
//
// x Less Than Or Equal to value
// EditableIf(_Float1,LessThanOrEqualTo,1)
// This will allow the value to be edited if the property _float1 is Less than or equal to 1. (_float1<=1)
//
//
// Colour:
//
// x Equals r,g,b,a
// EditableIf(_Color0,EqualTo,255,255,255,255)
// This will allow the value to be edited, if the property _Color0 R,G,B and A value all Equal 255. (_Color0.R==255 && _Color0.G==255 & _Color0.B == 255 && _Color0.A == 255)
//
// x Equals alpha
// EditableIf(_Color0,EqualTo,null,null,null,255)
// This will allow the value to be edited, if the property _Color0 Alpha value is Equal to 255. (_Color0.A == 255)
//
// a Greater than blue
// EditableIf(_Color0,GreaterThan,null,null,125)
// This will allow the value to be edited, if the property _Color0 Blue value is Greater Than 125. (_Color0.B > 125)
// Note: as I do not want to check the Red or Green Values, i have entered "null" for the parameter
// Note: I have not inputted a value to check for Alpha, as i do not want to check it. Simularly, if I wanted to Only check the Red Value I could have used EditableIf(_Color0,GreaterThan,125)
//
// Like wise with floats GreaterThanOrEqualTo, LessThan, LessThanOrEqualTo
//
// Vector:
// Vector Checks work the same as colour checks
//
// Texture:
// x Does Not have a Texture
// EditableIf(_TextureSample0,Equals,null)
// This will allow the value to be edited, if the property _TextureSample0 does NOT have a texture
//
// x Does have a Texture
// EditableIf(_TextureSample0,NotEqualTo,null)
// This will allow the value to be edited, if the property _TextureSample0 does have a texture
using UnityEngine;
using UnityEditor;
using System;
namespace AmplifyShaderEditor
{
public enum ComparisonOperators
{
EqualTo, NotEqualTo, GreaterThan, LessThan, EqualsOrGreaterThan, EqualsOrLessThan, ContainsFlags,
DoesNotContainsFlags
}
public class EditableIf : MaterialPropertyDrawer
{
ComparisonOperators op;
string FieldName = "";
object ExpectedValue;
bool InputError;
public EditableIf()
{
InputError = true;
}
public EditableIf( object fieldname, object comparison, object expectedvalue )
{
if ( expectedvalue.ToString().ToLower() == "true" )
{
expectedvalue = ( System.Single )1;
}
else if ( expectedvalue.ToString().ToLower() == "false" )
{
expectedvalue = ( System.Single )0;
}
Init( fieldname, comparison, expectedvalue );
}
public EditableIf( object fieldname, object comparison, object expectedvaluex, object expectedvaluey )
{
float? x = expectedvaluex as float?;
float? y = expectedvaluey as float?;
float? z = float.NegativeInfinity;
float? w = float.NegativeInfinity;
x = GetVectorValue( x );
y = GetVectorValue( y );
Init( fieldname, comparison, new Vector4( x.Value, y.Value, z.Value, w.Value ) );
}
public EditableIf( object fieldname, object comparison, object expectedvaluex, object expectedvaluey, object expectedvaluez )
{
float? x = expectedvaluex as float?;
float? y = expectedvaluey as float?;
float? z = expectedvaluez as float?;
float? w = float.NegativeInfinity;
x = GetVectorValue( x );
y = GetVectorValue( y );
z = GetVectorValue( z );
Init( fieldname, comparison, new Vector4( x.Value, y.Value, z.Value, w.Value ) );
}
public EditableIf( object fieldname, object comparison, object expectedvaluex, object expectedvaluey, object expectedvaluez, object expectedvaluew )
{
var x = expectedvaluex as float?;
var y = expectedvaluey as float?;
var z = expectedvaluez as float?;
var w = expectedvaluew as float?;
x = GetVectorValue( x );
y = GetVectorValue( y );
z = GetVectorValue( z );
w = GetVectorValue( w );
Init( fieldname, comparison, new Vector4( x.Value, y.Value, z.Value, w.Value ) );
}
private void Init( object fieldname, object comparison, object expectedvalue )
{
FieldName = fieldname.ToString();
var names = Enum.GetNames( typeof( ComparisonOperators ) );
var name = comparison.ToString().ToLower().Replace( " ", "" );
for ( int i = 0; i < names.Length; i++ )
{
if ( names[ i ].ToLower() == name )
{
op = ( ComparisonOperators )i;
break;
}
}
ExpectedValue = expectedvalue;
}
private static float? GetVectorValue( float? x )
{
if ( x.HasValue == false )
{
x = float.NegativeInfinity;
}
return x;
}
// Draw the property inside the given rect
public override void OnGUI( Rect position, MaterialProperty prop, String label, MaterialEditor editor )
{
if ( InputError )
{
EditorGUI.LabelField( position, "EditableIf Attribute Error: Input parameters are invalid!" );
return;
}
var LHSprop = MaterialEditor.GetMaterialProperty( prop.targets, FieldName );
if ( string.IsNullOrEmpty( LHSprop.name ) )
{
LHSprop = MaterialEditor.GetMaterialProperty( prop.targets, "_" + FieldName.Replace( " ", "" ) );
if ( string.IsNullOrEmpty( LHSprop.name ) )
{
EditorGUI.LabelField( position, "EditableIf Attribute Error: " + FieldName + " Does not exist!" );
return;
}
}
object LHSVal = null;
bool test = false;
switch ( LHSprop.type )
{
case MaterialProperty.PropType.Color:
case MaterialProperty.PropType.Vector:
LHSVal = LHSprop.type == MaterialProperty.PropType.Color ? ( Vector4 )LHSprop.colorValue : LHSprop.vectorValue;
var v4 = ExpectedValue as Vector4?;
v4 = v4.HasValue ? v4 : new Vector4( ( System.Single )ExpectedValue, float.NegativeInfinity, float.NegativeInfinity, float.NegativeInfinity );
if ( LHSprop.type == MaterialProperty.PropType.Color )
{
test = VectorCheck( ( Vector4 )LHSVal, op, v4 / 255 );
}
else
test = VectorCheck( ( Vector4 )LHSVal, op, v4 );
break;
case MaterialProperty.PropType.Range:
case MaterialProperty.PropType.Float:
LHSVal = LHSprop.floatValue;
test = ( Check( LHSVal, op, ExpectedValue ) );
break;
case MaterialProperty.PropType.Texture:
LHSVal = LHSprop.textureValue;
test = ( CheckObject( LHSVal, op, ExpectedValue ) );
break;
}
GUI.enabled = test;
editor.DefaultShaderProperty( position, prop, label );
GUI.enabled = true;
}
private bool VectorCheck( Vector4 LHS, ComparisonOperators op, object expectedValue )
{
var RHS = ( Vector4 )expectedValue;
if ( RHS.x != float.NegativeInfinity )
{
if ( !Check( LHS.x, op, RHS.x ) )
return false;
}
if ( RHS.y != float.NegativeInfinity )
{
if ( !Check( LHS.y, op, RHS.y ) )
return false;
}
if ( RHS.z != float.NegativeInfinity )
{
if ( !Check( LHS.z, op, RHS.z ) )
return false;
}
if ( RHS.w != float.NegativeInfinity )
{
if ( !Check( LHS.w, op, RHS.w ) )
return false;
}
return true;
}
protected bool Check( object LHS, ComparisonOperators op, object RHS )
{
if ( !( LHS is IComparable ) || !( RHS is IComparable ) )
throw new Exception( "Check using non basic type" );
switch ( op )
{
case ComparisonOperators.EqualTo:
return ( ( IComparable )LHS ).CompareTo( RHS ) == 0;
case ComparisonOperators.NotEqualTo:
return ( ( IComparable )LHS ).CompareTo( RHS ) != 0;
case ComparisonOperators.EqualsOrGreaterThan:
return ( ( IComparable )LHS ).CompareTo( RHS ) >= 0;
case ComparisonOperators.EqualsOrLessThan:
return ( ( IComparable )LHS ).CompareTo( RHS ) <= 0;
case ComparisonOperators.GreaterThan:
return ( ( IComparable )LHS ).CompareTo( RHS ) > 0;
case ComparisonOperators.LessThan:
return ( ( IComparable )LHS ).CompareTo( RHS ) < 0;
case ComparisonOperators.ContainsFlags:
return ( ( int )LHS & ( int )RHS ) != 0; // Dont trust LHS values, it has been casted to a char and then to an int again, first bit will be the sign
case ComparisonOperators.DoesNotContainsFlags:
return ( ( ( int )LHS & ( int )RHS ) == ( int )LHS ); // Dont trust LHS values, it has been casted to a char and then to an int again, first bit will be the sign
default:
break;
}
return false;
}
private bool CheckObject( object LHS, ComparisonOperators comparasonOperator, object RHS )
{
switch ( comparasonOperator )
{
case ComparisonOperators.EqualTo:
return ( LHS == null );
case ComparisonOperators.NotEqualTo:
return ( LHS != null );
}
return true;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 7a5504a2b7d04a846978416748dc6e0a
timeCreated: 1520330108
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,29 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System;
namespace AmplifyShaderEditor
{
public class NoKeywordToggle : MaterialPropertyDrawer
{
public override void OnGUI( Rect position, MaterialProperty prop, String label, MaterialEditor editor )
{
bool value = ( prop.floatValue != 0.0f );
EditorGUI.BeginChangeCheck();
{
EditorGUI.showMixedValue = prop.hasMixedValue;
value = EditorGUI.Toggle( position, label, value );
EditorGUI.showMixedValue = false;
}
if ( EditorGUI.EndChangeCheck() )
{
prop.floatValue = value ? 1.0f : 0.0f;
}
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: e1a000d43a26286499b39a7571e5c61b
timeCreated: 1605540234
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,39 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System;
namespace AmplifyShaderEditor
{
public class RemapSliders : MaterialPropertyDrawer
{
public override void OnGUI( Rect position, MaterialProperty prop, String label, MaterialEditor editor )
{
EditorGUI.BeginChangeCheck();
Vector4 value = prop.vectorValue;
EditorGUI.showMixedValue = prop.hasMixedValue;
var cacheLabel = EditorGUIUtility.labelWidth;
var cacheField = EditorGUIUtility.fieldWidth;
if ( cacheField <= 64 )
{
float total = position.width;
EditorGUIUtility.labelWidth = Mathf.Ceil( 0.45f * total ) - 30;
EditorGUIUtility.fieldWidth = Mathf.Ceil( 0.55f * total ) + 30;
}
EditorGUI.MinMaxSlider( position, label, ref value.x, ref value.y, 0, 1 );
EditorGUIUtility.labelWidth = cacheLabel;
EditorGUIUtility.fieldWidth = cacheField;
EditorGUI.showMixedValue = false;
if ( EditorGUI.EndChangeCheck() )
{
prop.vectorValue = value;
}
}
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 314af1bcecbba6c4d92cbb5843c221ba
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,39 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System;
namespace AmplifyShaderEditor
{
public class RemapSlidersFull : MaterialPropertyDrawer
{
public override void OnGUI( Rect position, MaterialProperty prop, String label, MaterialEditor editor )
{
EditorGUI.BeginChangeCheck();
Vector4 value = prop.vectorValue;
EditorGUI.showMixedValue = prop.hasMixedValue;
var cacheLabel = EditorGUIUtility.labelWidth;
var cacheField = EditorGUIUtility.fieldWidth;
if ( cacheField <= 64 )
{
float total = position.width;
EditorGUIUtility.labelWidth = Mathf.Ceil( 0.45f * total ) - 30;
EditorGUIUtility.fieldWidth = Mathf.Ceil( 0.55f * total ) + 30;
}
EditorGUI.MinMaxSlider( position, label, ref value.x, ref value.y, value.z, value.w );
EditorGUIUtility.labelWidth = cacheLabel;
EditorGUIUtility.fieldWidth = cacheField;
EditorGUI.showMixedValue = false;
if ( EditorGUI.EndChangeCheck() )
{
prop.vectorValue = value;
}
}
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 9a724dcf5c5ddef40bcef06f0b2c8ec0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,26 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System;
namespace AmplifyShaderEditor
{
public class SingleLineTexture : MaterialPropertyDrawer
{
public override void OnGUI( Rect position, MaterialProperty prop, String label, MaterialEditor editor )
{
EditorGUI.BeginChangeCheck();
EditorGUI.showMixedValue = prop.hasMixedValue;
Texture value = editor.TexturePropertyMiniThumbnail( position, prop, label, string.Empty );
EditorGUI.showMixedValue = false;
if( EditorGUI.EndChangeCheck() )
{
prop.textureValue = value;
}
}
}
}

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 85da32683d237ac4f8665251e2ac38dc
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,17 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEditor;
using UnityEditor.ProjectWindowCallback;
namespace AmplifyShaderEditor
{
public class DoCreateFunction : EndNameEditAction
{
public override void Action( int instanceId, string pathName, string resourceFile )
{
UnityEngine.Object obj = EditorUtility.InstanceIDToObject( instanceId );
AssetDatabase.CreateAsset( obj, AssetDatabase.GenerateUniqueAssetPath( pathName ) );
AmplifyShaderEditorWindow.LoadShaderFunctionToASE( (AmplifyShaderFunction)obj, false );
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 3f2c950b0ed192943b7484f6b551965f
timeCreated: 1493906087
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,48 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using UnityEditor.ProjectWindowCallback;
using System.IO;
namespace AmplifyShaderEditor
{
public class DoCreateStandardShader : EndNameEditAction
{
public override void Action( int instanceId, string pathName, string resourceFile )
{
string uniquePath = AssetDatabase.GenerateUniqueAssetPath( pathName );
string shaderName = Path.GetFileName( uniquePath );
if( IOUtils.AllOpenedWindows.Count > 0 )
{
EditorWindow openedWindow = AmplifyShaderEditorWindow.GetWindow<AmplifyShaderEditorWindow>();
AmplifyShaderEditorWindow currentWindow = AmplifyShaderEditorWindow.CreateTab();
WindowHelper.AddTab( openedWindow, currentWindow );
UIUtils.CurrentWindow = currentWindow;
}
else
{
AmplifyShaderEditorWindow currentWindow = AmplifyShaderEditorWindow.OpenWindow( shaderName, UIUtils.ShaderIcon );
UIUtils.CurrentWindow = currentWindow;
}
Shader shader = UIUtils.CreateNewEmpty( uniquePath, shaderName );
ProjectWindowUtil.ShowCreatedAsset( shader );
}
}
public class DoCreateTemplateShader : EndNameEditAction
{
public override void Action( int instanceId, string pathName, string resourceFile )
{
string uniquePath = AssetDatabase.GenerateUniqueAssetPath( pathName );
string shaderName = Path.GetFileName( uniquePath );
if( !string.IsNullOrEmpty( UIUtils.NewTemplateGUID ) )
{
Shader shader = AmplifyShaderEditorWindow.CreateNewTemplateShader( UIUtils.NewTemplateGUID, uniquePath, shaderName );
ProjectWindowUtil.ShowCreatedAsset( shader );
}
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 2cfa7290f61ad684f99f8d81328ad52c
timeCreated: 1573664425
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,67 @@
using UnityEditor;
namespace AmplifyShaderEditor
{
[System.Serializable]
public class OptionsWindow
{
private AmplifyShaderEditorWindow m_parentWindow = null;
private bool m_coloredPorts = true;
private bool m_multiLinePorts = true;
private const string MultiLineId = "MultiLinePortsDefault";
private const string ColorPortId = "ColoredPortsDefault";
public OptionsWindow( AmplifyShaderEditorWindow parentWindow )
{
m_parentWindow = parentWindow;
//Load ();
}
public void Init()
{
Load();
}
public void Destroy()
{
Save();
}
public void Save()
{
EditorPrefs.SetBool( ColorPortId, ColoredPorts );
EditorPrefs.SetBool( MultiLineId, m_multiLinePorts );
}
public void Load()
{
ColoredPorts = EditorPrefs.GetBool( ColorPortId, true );
m_multiLinePorts = EditorPrefs.GetBool( MultiLineId, true );
}
public bool ColoredPorts
{
get { return m_coloredPorts; }
set
{
if ( m_coloredPorts != value )
EditorPrefs.SetBool( ColorPortId, value );
m_coloredPorts = value;
}
}
public bool MultiLinePorts
{
get { return m_multiLinePorts; }
set
{
if ( m_multiLinePorts != value )
EditorPrefs.SetBool( MultiLineId, value );
m_multiLinePorts = value;
}
}
public AmplifyShaderEditorWindow ParentWindow { get { return m_parentWindow; } set { m_parentWindow = value; } }
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 44cb06bc7bfe6e84aa8b5e8b702eb2dd
timeCreated: 1481126955
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 52f451731ec183e43ab18f0896f7172a
folderAsset: yes
timeCreated: 1481126944
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,283 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
namespace AmplifyShaderEditor
{
public class NodeGrid
{
private bool m_debugGrid = false;
private const float GRID_SIZE_X = 16;
private const float GRID_SIZE_Y = 16;
private const float GRID_AREA_X = 64;
private const float GRID_AREA_Y = 64;
private Dictionary<int, Dictionary<int, List<ParentNode>>> m_grid;
private int m_xMin = int.MaxValue;
private int m_yMin = int.MaxValue;
private int m_xMax = int.MinValue;
private int m_yMax = int.MinValue;
public NodeGrid()
{
m_grid = new Dictionary<int, Dictionary<int, List<ParentNode>>>();
}
public void AddNodeToGrid( ParentNode node )
{
Rect pos = node.Position;
if ( Mathf.Abs( pos.width ) < 0.001f || Mathf.Abs( pos.height ) < 0.001f )
{
return;
}
float initialXf = pos.x / GRID_SIZE_X;
float initialYf = pos.y / GRID_SIZE_Y;
int endX = Mathf.CeilToInt( initialXf + pos.width / GRID_SIZE_X );
int endY = Mathf.CeilToInt( initialYf + pos.height / GRID_SIZE_Y );
int initialX = Mathf.FloorToInt( initialXf );
int initialY = Mathf.FloorToInt( initialYf );
if ( initialX < m_xMin )
{
m_xMin = initialX;
}
if ( initialY < m_yMin )
{
m_yMin = initialY;
}
if ( endX > m_xMax )
{
m_xMax = endX;
}
if ( endY > m_yMax )
{
m_yMax = endY;
}
for ( int x = initialX; x < endX; x += 1 )
{
for ( int y = initialY; y < endY; y += 1 )
{
if ( !m_grid.ContainsKey( x ) )
{
m_grid.Add( x, new Dictionary<int, List<ParentNode>>() );
}
if ( !m_grid[ x ].ContainsKey( y ) )
{
m_grid[ x ].Add( y, new List<ParentNode>() );
}
m_grid[ x ][ y ].Add( node );
}
}
node.IsOnGrid = true;
//DebugLimits();
}
public void RemoveNodeFromGrid( ParentNode node, bool useCachedPos )
{
Rect pos = useCachedPos ? node.CachedPos : node.Position;
if ( Mathf.Abs( pos.width ) < 0.001f || Mathf.Abs( pos.height ) < 0.001f )
{
return;
}
float initialXf = pos.x / GRID_SIZE_X;
float initialYf = pos.y / GRID_SIZE_Y;
int endX = Mathf.CeilToInt( initialXf + pos.width / GRID_SIZE_X );
int endY = Mathf.CeilToInt( initialYf + pos.height / GRID_SIZE_Y );
int initialX = Mathf.FloorToInt( initialXf );
int initialY = Mathf.FloorToInt( initialYf );
bool testLimits = false;
int xMinCount = 0;
int xMaxCount = 0;
int yMinCount = 0;
int yMaxCount = 0;
for ( int x = initialX; x < endX; x += 1 )
{
for ( int y = initialY; y < endY; y += 1 )
{
if ( m_grid.ContainsKey( x ) )
{
if ( m_grid[ x ].ContainsKey( y ) )
{
m_grid[ x ][ y ].Remove( node );
node.IsOnGrid = false;
if ( initialX == m_xMin && x == initialX )
{
testLimits = true;
if ( m_grid[ x ][ y ].Count != 0 )
{
xMinCount += 1;
}
}
if ( endX == m_xMax && x == endX )
{
testLimits = true;
if ( m_grid[ x ][ y ].Count != 0 )
{
xMaxCount += 1;
}
}
if ( initialY == m_yMin && y == initialY )
{
testLimits = true;
if ( m_grid[ x ][ y ].Count != 0 )
{
yMinCount += 1;
}
}
if ( endY == m_yMax && y == endY )
{
testLimits = true;
if ( m_grid[ x ][ y ].Count != 0 )
{
yMaxCount += 1;
}
}
}
}
}
}
if ( testLimits )
{
if ( xMinCount == 0 || xMaxCount == 0 || yMinCount == 0 || yMaxCount == 0 )
{
m_xMin = int.MaxValue;
m_yMin = int.MaxValue;
m_xMax = int.MinValue;
m_yMax = int.MinValue;
foreach ( KeyValuePair<int, Dictionary<int, List<ParentNode>>> entryX in m_grid )
{
foreach ( KeyValuePair<int, List<ParentNode>> entryY in entryX.Value )
{
if ( entryY.Value.Count > 0 )
{
if ( entryX.Key < m_xMin )
{
m_xMin = entryX.Key;
}
if ( entryY.Key < m_yMin )
{
m_yMin = entryY.Key;
}
if ( entryX.Key > m_xMax )
{
m_xMax = entryX.Key;
}
if ( entryY.Key > m_yMax )
{
m_yMax = entryY.Key;
}
}
}
}
// The += 1 is to maintain consistence with AddNodeToGrid() ceil op on max values
m_xMax += 1;
m_yMax += 1;
}
}
//DebugLimits();
}
public void DebugLimits()
{
Debug.Log( "[ " + m_xMin + " , " + m_yMin + " ] " + "[ " + m_xMax + " , " + m_yMax + " ] " );
}
//pos must be the transformed mouse position to local canvas coordinates
public List<ParentNode> GetNodesOn( Vector2 pos )
{
int x = Mathf.FloorToInt( pos.x / GRID_SIZE_X );
int y = Mathf.FloorToInt( pos.y / GRID_SIZE_Y );
if ( m_grid.ContainsKey( x ) )
{
if ( m_grid[ x ].ContainsKey( y ) )
{
return m_grid[ x ][ y ];
}
}
return null;
}
public List<ParentNode> GetNodesOn( int x, int y )
{
if ( m_grid.ContainsKey( x ) )
{
if ( m_grid[ x ].ContainsKey( y ) )
{
return m_grid[ x ][ y ];
}
}
return null;
}
public void DrawGrid( DrawInfo drawInfo )
{
if ( m_debugGrid )
{
Handles.CircleHandleCap( 0, drawInfo.InvertedZoom * ( new Vector3( drawInfo.CameraOffset.x, drawInfo.CameraOffset.y, 0f ) ), Quaternion.identity, 5,EventType.Layout );
for ( int x = -( int ) GRID_AREA_X; x < GRID_AREA_X; x += ( int ) GRID_SIZE_X )
{
Handles.DrawLine( drawInfo.InvertedZoom * ( new Vector3( x + drawInfo.CameraOffset.x, drawInfo.CameraOffset.y - GRID_AREA_Y, 0 ) ), drawInfo.InvertedZoom * ( new Vector3( drawInfo.CameraOffset.x + x, drawInfo.CameraOffset.y + GRID_AREA_Y, 0 ) ) );
}
for ( int y = -( int ) GRID_AREA_Y; y < GRID_AREA_X; y += ( int ) GRID_SIZE_Y )
{
Handles.DrawLine( drawInfo.InvertedZoom * ( new Vector3( drawInfo.CameraOffset.x - GRID_AREA_X, drawInfo.CameraOffset.y + y, 0 ) ), drawInfo.InvertedZoom * ( new Vector3( drawInfo.CameraOffset.x + GRID_AREA_X, drawInfo.CameraOffset.y + y, 0 ) ) );
}
}
}
public void Destroy()
{
foreach ( KeyValuePair<int, Dictionary<int, List<ParentNode>>> entryX in m_grid )
{
foreach ( KeyValuePair<int, List<ParentNode>> entryY in entryX.Value )
{
entryY.Value.Clear();
}
entryX.Value.Clear();
}
m_grid.Clear();
}
public float MaxNodeDist
{
get { return Mathf.Max( ( m_xMax - m_xMin )*GRID_SIZE_X, ( m_yMax - m_yMin )*GRID_SIZE_Y ); }
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6344917ce0eed6b43840632b98a2ed57
timeCreated: 1481126956
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 0b814c2a3cbebc047a566a92ed9d4340
timeCreated: 1481126953
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 3b28c70161e2aec4787239fba546bd25
folderAsset: yes
timeCreated: 1481126944
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c8bcac0d66f920e49803925a85beb0ed
timeCreated: 1481126959
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,221 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System;
namespace AmplifyShaderEditor
{
[Serializable]
public class AmplifyShaderFunction : ScriptableObject
{
[SerializeField]
private string m_functionInfo = string.Empty;
public string FunctionInfo
{
get { return m_functionInfo; }
set { m_functionInfo = value; }
}
[SerializeField]
private string m_functionName = string.Empty;
public string FunctionName
{
get { if( m_functionName.Length == 0 ) return name; else return m_functionName; }
set { m_functionName = value; }
}
[SerializeField]
[TextArea( 5, 15 )]
private string m_description = string.Empty;
public string Description
{
get { return m_description; }
set { m_description = value; }
}
[SerializeField]
private AdditionalIncludesHelper m_additionalIncludes = new AdditionalIncludesHelper();
//public AdditionalIncludesHelper AdditionalIncludes
//{
// get { return m_additionalIncludes; }
// set { m_additionalIncludes = value; }
//}
[SerializeField]
private AdditionalPragmasHelper m_additionalPragmas = new AdditionalPragmasHelper();
//public AdditionalPragmasHelper AdditionalPragmas
//{
// get { return m_additionalPragmas; }
// set { m_additionalPragmas = value; }
//}
[SerializeField]
private TemplateAdditionalDirectivesHelper m_additionalDirectives = new TemplateAdditionalDirectivesHelper( " Additional Directives" );
public TemplateAdditionalDirectivesHelper AdditionalDirectives
{
get { return m_additionalDirectives; }
set { m_additionalDirectives = value; }
}
[SerializeField]
private FunctionNodeCategories m_nodeCategory = FunctionNodeCategories.Functions;
public FunctionNodeCategories NodeCategory
{
get { return m_nodeCategory; }
set { m_nodeCategory = value; }
}
public enum HeaderStyle
{
Default,
Category,
Custom
}
[SerializeField]
private HeaderStyle m_headerStyle = HeaderStyle.Default;
public HeaderStyle Header
{
get { return m_headerStyle; }
set { m_headerStyle = value; }
}
[SerializeField]
private Color m_headerColor = new Color( 1.00f, 0.4f, 0.0f, 1.0f );
public Color HeaderColor
{
get { return m_headerColor; }
set { m_headerColor = value; }
}
[SerializeField]
private string m_customNodeCategory = string.Empty;
public string CustomNodeCategory
{
get
{
if( m_nodeCategory == FunctionNodeCategories.Custom )
{
if( string.IsNullOrEmpty( m_customNodeCategory ) )
return "Functions";
else
return m_customNodeCategory;
}
else
{
return UIUtils.CategoryPresets[ (int)m_nodeCategory ];
//return new SerializedObject( this ).FindProperty( "m_nodeCategory" ).enumDisplayNames[ (int)m_nodeCategory ];
}
}
}
[SerializeField]
private PreviewLocation m_previewPosition = PreviewLocation.Auto;
public PreviewLocation PreviewPosition
{
get { return m_previewPosition; }
set { m_previewPosition = value; }
}
[SerializeField]
private bool m_hidden = false;
public bool Hidden
{
get { return m_hidden; }
set { m_hidden = value; }
}
[SerializeField]
private string m_url = string.Empty;
public string URL
{
get { return m_url; }
set { m_url = value; }
}
public void UpdateDirectivesList()
{
m_additionalDirectives.CleanNullDirectives();
m_additionalDirectives.UpdateDirectivesFromSaveItems();
if( m_additionalIncludes.IncludeList.Count > 0 )
{
m_additionalDirectives.AddItems( AdditionalLineType.Include, m_additionalIncludes.IncludeList );
m_additionalIncludes.IncludeList.Clear();
}
if( m_additionalPragmas.PragmaList.Count > 0 )
{
m_additionalDirectives.AddItems( AdditionalLineType.Pragma, m_additionalPragmas.PragmaList );
m_additionalPragmas.PragmaList.Clear();
}
}
public void ResetDirectivesOrigin()
{
//if( UIUtils.CurrentShaderVersion() < 16807 )
// Although the correct version was 1.6.7 rev 07 this issue was only detected on v1.7.1. rev 00
// So to avoid potential incorrect saves over shader functions, I decided to broaden up the version range
if( UIUtils.CurrentShaderVersion() < 17101 )
{
m_additionalDirectives.ResetDirectivesOrigin();
}
}
}
public class ShaderFunctionDetector : AssetPostprocessor
{
static void OnPostprocessAllAssets( string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths )
{
if( UIUtils.CurrentWindow == null )
return;
bool markForRefresh = false;
AmplifyShaderFunction function = null;
for( int i = 0; i < importedAssets.Length; i++ )
{
function = AssetDatabase.LoadAssetAtPath<AmplifyShaderFunction>( importedAssets[ i ] );
if( function != null )
{
markForRefresh = true;
break;
}
}
if( deletedAssets.Length > 0 )
markForRefresh = true;
for( int i = 0; i < movedAssets.Length; i++ )
{
function = AssetDatabase.LoadAssetAtPath<AmplifyShaderFunction>( movedAssets[ i ] );
if( function != null )
{
markForRefresh = true;
break;
}
}
for( int i = 0; i < movedFromAssetPaths.Length; i++ )
{
function = AssetDatabase.LoadAssetAtPath<AmplifyShaderFunction>( movedFromAssetPaths[ i ] );
if( function != null )
{
markForRefresh = true;
break;
}
}
if( markForRefresh )
{
markForRefresh = false;
if( function != null )
{
IOUtils.UpdateSFandRefreshWindows( function );
}
UIUtils.CurrentWindow.LateRefreshAvailableNodes();
}
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 78b2425a2284af743826c689403a4924
timeCreated: 1492703397
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: 50be8291f9514914aa55c66c49da67cf, type: 3}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,164 @@
using UnityEngine;
using UnityEditor;
using System;
using System.Text.RegularExpressions;
using System.IO;
using System.Collections.Generic;
namespace AmplifyShaderEditor
{
[CustomEditor( typeof( AmplifyShaderFunction ) )]
public class AmplifyShaderFunctionEditor : Editor
{
class FunctionDependency
{
public string AssetName;
public string AssetPath;
public FunctionDependency(string name, string path)
{
AssetName = name;
AssetPath = path;
}
}
AmplifyShaderFunction m_target;
List<FunctionDependency> m_dependencies = new List<FunctionDependency>();
void OnEnable()
{
m_target = ( target as AmplifyShaderFunction );
}
public override void OnInspectorGUI()
{
//base.OnInspectorGUI();
//base.serializedObject.Update();
if( GUILayout.Button( "Open in Shader Editor" ) )
{
ASEPackageManagerHelper.SetupLateShaderFunction( m_target );
}
//EditorGUILayout.Separator();
//m_target.FunctionInfo = EditorGUILayout.TextArea( m_target.FunctionInfo );
if( m_target.Description.Length > 0 )
{
EditorGUILayout.HelpBox( m_target.Description, MessageType.Info );
}
EditorGUILayout.Space();
if( GUILayout.Button( "Search Direct Dependencies" ) )
{
m_dependencies.Clear();
string guid = AssetDatabase.AssetPathToGUID( AssetDatabase.GetAssetPath( m_target ) );
string[] allSFs = AssetDatabase.FindAssets( "t:AmplifyShaderFunction", null );
foreach( string guid1 in allSFs )
{
string sfPath = AssetDatabase.GUIDToAssetPath( guid1 );
bool found = SearchForGUID( guid, sfPath );
if( found )
{
//string n = Regex.Replace( sfPath, @"(\.\w+|[\w\d\/]+\/)", "" );
string n = Regex.Replace( sfPath, @"[\w\d\/]+\/", "" );
m_dependencies.Add(new FunctionDependency( n, sfPath ) );
}
}
string[] allSHs = AssetDatabase.FindAssets( "t:Shader", null );
foreach( string guid1 in allSHs )
{
string shPath = AssetDatabase.GUIDToAssetPath( guid1 );
bool found = SearchForGUID( guid, shPath );
if( found )
{
string n = Regex.Replace( shPath, @"[\w\d\/]+\/", "" );
m_dependencies.Add( new FunctionDependency( n, shPath ) );
}
}
}
EditorGUILayout.Space();
for( int i = 0; i < m_dependencies.Count; i++ )
{
EditorGUILayout.BeginHorizontal();
if( GUILayout.Button( m_dependencies[ i ].AssetName, "minibuttonleft" ) )
{
SelectAtPath( m_dependencies[ i ].AssetPath );
}
if( GUILayout.Button( "edit", "minibuttonright", GUILayout.Width(100) ) )
{
if( m_dependencies[ i ].AssetName.EndsWith( ".asset" ) )
{
var obj = AssetDatabase.LoadAssetAtPath<AmplifyShaderFunction>( m_dependencies[ i ].AssetPath );
AmplifyShaderEditorWindow.LoadShaderFunctionToASE( obj, false );
}
else
{
var obj = AssetDatabase.LoadAssetAtPath<Shader>( m_dependencies[ i ].AssetPath );
AmplifyShaderEditorWindow.ConvertShaderToASE( obj );
}
}
EditorGUILayout.EndHorizontal();
}
if( m_dependencies.Count > 0 )
{
List<string> assetPaths = new List<string>();
for( int i = 0; i < m_dependencies.Count; i++ )
{
assetPaths.Add( m_dependencies[ i ].AssetPath );
}
if( GUILayout.Button( "Open and Save All" ) )
{
bool doit = EditorUtility.DisplayDialog( "Open and Save All", "This will try to open all shader function and shaders that use this shader function and save them in quick succession, this may irreversibly break your files if something goes wrong. Are you sure you want to try?", "Yes, I'll take the risk", "No, I'll do it myself" );
if( doit )
AmplifyShaderEditorWindow.LoadAndSaveList( assetPaths.ToArray() );
}
}
}
public void SelectAtPath( string path )
{
var obj = AssetDatabase.LoadAssetAtPath<UnityEngine.Object>( path );
EditorGUIUtility.PingObject( obj );
}
public static bool SearchForGUID( string guid, string pathName )
{
bool result = false;
int count = 0;
if( !string.IsNullOrEmpty( pathName ) && File.Exists( pathName ) )
{
StreamReader fileReader = null;
try
{
fileReader = new StreamReader( pathName );
string line;
int index = -1;
while( ( line = fileReader.ReadLine() ) != null )
{
index = line.IndexOf( guid );
count++;
if( index > -1 )
{
result = true;
break;
}
}
}
catch( Exception e )
{
Debug.LogException( e );
}
finally
{
if( fileReader != null )
fileReader.Close();
}
}
return result;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 8b2d6d1320661374db53aeb8057312b2
timeCreated: 1491909065
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,94 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
namespace AmplifyShaderEditor
{
public enum AutoPanLocation
{
TOP = 0,
BOTTOM,
LEFT,
RIGHT
}
public class AutoPanData
{
private Rect m_area;
private float m_size;
private Vector2 m_velocity;
private GUIStyle m_style;
private Color m_color = new Color( 1f, 0f, 0f, 0.5f );
private AutoPanLocation m_location;
private float m_adjustWidth = 0;
private float m_adjustInitialX = 0;
public AutoPanData( AutoPanLocation location, float size, Vector2 vel )
{
m_area = new Rect();
m_size = size;
m_velocity = vel;
m_location = location;
}
public bool CheckArea( Vector2 mousePosition, Rect window, bool draw )
{
float totalSize = m_size + m_adjustWidth;
switch ( m_location )
{
case AutoPanLocation.TOP:
{
m_area.x = m_adjustInitialX;
m_area.y = 0;
m_area.width = window.width;
m_area.height = totalSize;
}
break;
case AutoPanLocation.BOTTOM:
{
m_area.x = m_adjustInitialX;
m_area.y = window.height - totalSize;
m_area.width = window.width;
m_area.height = totalSize;
}
break;
case AutoPanLocation.LEFT:
{
m_area.x = m_adjustInitialX;
m_area.y = 0;
m_area.width = totalSize;
m_area.height = window.height;
}
break;
case AutoPanLocation.RIGHT:
{
m_area.x = m_adjustInitialX + window.width - totalSize;
m_area.y = 0;
m_area.width = totalSize;
m_area.height = window.height;
}
break;
}
if ( draw )
{
if ( m_style == null )
{
m_style = UIUtils.Box;
}
Color bufferedColor = GUI.color;
GUI.color = m_color;
GUI.Label( m_area, string.Empty, m_style );
GUI.color = bufferedColor;
}
return m_area.Contains( mousePosition );
}
public float AdjustWidth { set { m_adjustWidth = value; } }
public float AdjustInitialX { set { m_adjustInitialX = value; } }
public Vector2 Velocity { get { return m_velocity; } }
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 711db07e8265cb740940568c4bc7345f
timeCreated: 1481126956
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,262 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using UnityEngine;
using System.Collections.Generic;
using UnityEditor;
namespace AmplifyShaderEditor
{
public class ClipboardData
{
public string Data = string.Empty;
public string Connections = string.Empty;
public int OldNodeId = -1;
public int NewNodeId = -1;
public ClipboardData( string data, string connections, int oldNodeId )
{
Data = data;
Connections = connections;
OldNodeId = oldNodeId;
}
public override string ToString()
{
return Data + IOUtils.CLIPBOARD_DATA_SEPARATOR + Connections + IOUtils.CLIPBOARD_DATA_SEPARATOR + OldNodeId + IOUtils.CLIPBOARD_DATA_SEPARATOR + NewNodeId;
}
}
public class Clipboard
{
public const string ClipboardId = "AMPLIFY_CLIPBOARD_ID";
private readonly string[] ClipboardTagId = { "#CLIP_ITEM#" };
private List<ClipboardData> m_clipboardStrData;
private Dictionary<int, ClipboardData> m_clipboardAuxData;
private Dictionary<string, ClipboardData> m_multiPassMasterNodeData;
public Clipboard()
{
m_clipboardStrData = new List<ClipboardData>();
m_clipboardAuxData = new Dictionary<int, ClipboardData>();
m_multiPassMasterNodeData = new Dictionary<string, ClipboardData>();
}
public void ResetMultipassNodesData()
{
m_multiPassMasterNodeData.Clear();
}
public void AddMultiPassNodesToClipboard( List<TemplateMultiPassMasterNode> masterNodes, bool resetList, int lodId )
{
if( resetList )
m_multiPassMasterNodeData.Clear();
int templatesAmount = masterNodes.Count;
for( int i = 0; i < templatesAmount; i++ )
{
if( !masterNodes[ i ].InvalidNode )
{
string data = string.Empty;
string connection = string.Empty;
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
masterNodes[ i ].FullWriteToString( ref data, ref connection );
System.Threading.Thread.CurrentThread.CurrentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture;
ClipboardData clipboardData = new ClipboardData( data, connection, masterNodes[ i ].UniqueId );
m_multiPassMasterNodeData.Add( masterNodes[ i ].PassUniqueName + lodId, clipboardData );
}
}
}
public void GetMultiPassNodesFromClipboard( List<TemplateMultiPassMasterNode> masterNodes, int lodId )
{
int templatesAmount = masterNodes.Count;
for( int i = 0; i < templatesAmount; i++ )
{
string clipboardDataId = masterNodes[ i ].PassUniqueName + lodId;
if( m_multiPassMasterNodeData.ContainsKey( clipboardDataId ) )
{
ClipboardData nodeData = m_multiPassMasterNodeData[ clipboardDataId ];
string[] nodeParams = nodeData.Data.Split( IOUtils.FIELD_SEPARATOR );
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.InvariantCulture;
masterNodes[ i ].FullReadFromString( ref nodeParams );
System.Threading.Thread.CurrentThread.CurrentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture;
}
}
for( int i = 0; i < templatesAmount; i++ )
{
string clipboardDataId = masterNodes[ i ].PassUniqueName + lodId;
if( m_multiPassMasterNodeData.ContainsKey( clipboardDataId ) )
{
masterNodes[ i ].SetReadOptions();
masterNodes[ i ].ForceOptionsRefresh();
}
}
}
public void AddToClipboard( List<ParentNode> selectedNodes , Vector3 initialPosition, ParentGraph graph )
{
//m_clipboardStrData.Clear();
//m_clipboardAuxData.Clear();
string clipboardData = IOUtils.Vector3ToString( initialPosition ) + ClipboardTagId[ 0 ];
int masterNodeId = UIUtils.CurrentWindow.CurrentGraph.CurrentMasterNodeId;
int count = selectedNodes.Count;
for ( int i = 0; i < count; i++ )
{
if ( UIUtils.CurrentWindow.IsShaderFunctionWindow || !graph.IsMasterNode( selectedNodes[ i ] ))
{
string nodeData = string.Empty;
string connections = string.Empty;
selectedNodes[ i ].ClipboardFullWriteToString( ref nodeData, ref connections );
clipboardData += nodeData;
if ( !string.IsNullOrEmpty( connections ) )
{
connections = connections.Substring( 0, connections.Length - 1 );
clipboardData += "\n" + connections;
}
if ( i < count - 1 )
clipboardData += ClipboardTagId[ 0 ];
//ClipboardData data = new ClipboardData( nodeData, connections, selectedNodes[ i ].UniqueId );
//m_clipboardStrData.Add( data );
//m_clipboardAuxData.Add( selectedNodes[ i ].UniqueId, data );
}
}
if ( !string.IsNullOrEmpty( clipboardData ) )
{
EditorPrefs.SetString( ClipboardId, clipboardData );
}
//for ( int i = 0; i < selectedNodes.Count; i++ )
//{
// if ( selectedNodes[ i ].UniqueId != masterNodeId )
// {
// WireNode wireNode = selectedNodes[ i ] as WireNode;
// if ( wireNode != null )
// {
// if ( !IsNodeChainValid( selectedNodes[ i ], true ) || !IsNodeChainValid( selectedNodes[ i ], false ) )
// {
// UnityEngine.Debug.Log( "found invalid wire port" );
// }
// }
// }
//}
}
public Vector3 GetDataFromEditorPrefs()
{
Vector3 initialPos = Vector3.zero;
m_clipboardStrData.Clear();
m_clipboardAuxData.Clear();
string clipboardData = EditorPrefs.GetString( ClipboardId, string.Empty );
if ( !string.IsNullOrEmpty( clipboardData ) )
{
string[] clipboardDataArray = clipboardData.Split( ClipboardTagId, StringSplitOptions.None );
initialPos = IOUtils.StringToVector3( clipboardDataArray[0] );
for ( int i = 1; i < clipboardDataArray.Length; i++ )
{
if ( !string.IsNullOrEmpty( clipboardDataArray[ i ] ) )
{
int wiresIndex = clipboardDataArray[ i ].IndexOf( IOUtils.LINE_TERMINATOR );
string nodeData = string.Empty;
string connections = string.Empty;
if ( wiresIndex < 0 )
{
nodeData = clipboardDataArray[ i ];
}
else
{
nodeData = clipboardDataArray[ i ].Substring( 0, wiresIndex );
connections = clipboardDataArray[ i ].Substring( wiresIndex + 1 );
}
string[] nodeDataArr = nodeData.Split( IOUtils.FIELD_SEPARATOR );
if ( nodeDataArr.Length > 2 )
{
int nodeId = Convert.ToInt32( nodeDataArr[ 2 ] );
ClipboardData data = new ClipboardData( nodeData, connections, nodeId );
m_clipboardStrData.Add( data );
m_clipboardAuxData.Add( nodeId, data );
}
}
}
}
return initialPos;
}
public bool IsNodeChainValid( ParentNode currentNode, bool forward )
{
WireNode wireNode = currentNode as WireNode;
if ( wireNode == null )
{
return m_clipboardAuxData.ContainsKey( currentNode.UniqueId );
}
if ( forward )
{
if ( wireNode.InputPorts[ 0 ].ExternalReferences.Count > 0 )
{
int nodeId = wireNode.InputPorts[ 0 ].ExternalReferences[ 0 ].NodeId;
if ( m_clipboardAuxData.ContainsKey( nodeId ) )
{
return IsNodeChainValid( UIUtils.GetNode( nodeId ), forward );
}
}
}
else
{
int nodeId = wireNode.OutputPorts[ 0 ].ExternalReferences[ 0 ].NodeId;
if ( m_clipboardAuxData.ContainsKey( nodeId ) )
{
return IsNodeChainValid( UIUtils.GetNode( nodeId ), forward );
}
}
return false;
}
public void GenerateFullString()
{
string data = string.Empty;
for ( int i = 0; i < m_clipboardStrData.Count; i++ )
{
data += m_clipboardStrData[ i ].ToString();
if ( i < m_clipboardStrData.Count - 1 )
{
data += IOUtils.LINE_TERMINATOR;
}
}
}
public void ClearClipboard()
{
m_clipboardStrData.Clear();
m_clipboardAuxData.Clear();
m_multiPassMasterNodeData.Clear();
}
public ClipboardData GetClipboardData( int oldNodeId )
{
if ( m_clipboardAuxData.ContainsKey( oldNodeId ) )
return m_clipboardAuxData[ oldNodeId ];
return null;
}
public int GeNewNodeId( int oldNodeId )
{
if ( m_clipboardAuxData.ContainsKey( oldNodeId ) )
return m_clipboardAuxData[ oldNodeId ].NewNodeId;
return -1;
}
public List<ClipboardData> CurrentClipboardStrData
{
get { return m_clipboardStrData; }
}
public bool HasCachedMasterNodes { get { return m_multiPassMasterNodeData.Count > 0; } }
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 8850a8c4f3ca99f42bbf602c671ffb7f
timeCreated: 1481126957
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,120 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEditor;
using UnityEngine;
namespace AmplifyShaderEditor
{
public class ConfirmationWindow
{
public delegate ShaderLoadResult OnConfirmationSelected( bool value, Shader shader, Material material );
public event OnConfirmationSelected OnConfirmationSelectedEvt;
private const string m_yesStr = "Yes";
private const string m_noStr = "No";
private bool m_isActive = false;
private string m_currentMessage;
private GUIStyle m_areaStyle;
private GUIContent m_content;
private GUIStyle m_buttonStyle;
private GUIStyle m_labelStyle;
private Shader m_shader;
private Material m_material;
private Rect m_area;
private bool m_autoDeactivate = true;
public ConfirmationWindow( float x, float y, float width, float height )
{
m_content = new GUIContent( GUIContent.none );
m_area = new Rect( x, y, width, height );
}
public void Destroy()
{
m_shader = null;
OnConfirmationSelectedEvt = null;
}
public void ActivateConfirmation( Shader shader, Material material, string message, OnConfirmationSelected evt, bool autoDeactivate = true )
{
OnConfirmationSelectedEvt = evt;
m_currentMessage = message;
m_shader = shader;
m_material = material;
m_autoDeactivate = autoDeactivate;
m_isActive = true;
}
public void OnGUI()
{
if ( m_areaStyle == null )
{
m_areaStyle = new GUIStyle( UIUtils.TextArea );
m_areaStyle.stretchHeight = true;
m_areaStyle.stretchWidth = true;
m_areaStyle.fontSize = ( int ) Constants.DefaultTitleFontSize;
}
if ( m_buttonStyle == null )
{
m_buttonStyle = UIUtils.Button;
}
if ( m_labelStyle == null )
{
m_labelStyle = new GUIStyle( UIUtils.Label );
m_labelStyle.alignment = TextAnchor.MiddleCenter;
m_labelStyle.wordWrap = true;
}
m_area.x = ( int ) ( 0.5f * UIUtils.CurrentWindow.CameraInfo.width );
m_area.y = ( int ) ( 0.5f * UIUtils.CurrentWindow.CameraInfo.height );
GUILayout.BeginArea( m_area, m_content, m_areaStyle );
{
EditorGUILayout.BeginVertical();
{
EditorGUILayout.Separator();
EditorGUILayout.LabelField( m_currentMessage, m_labelStyle );
EditorGUILayout.Separator();
EditorGUILayout.Separator();
EditorGUILayout.BeginHorizontal();
{
if ( GUILayout.Button( m_yesStr, m_buttonStyle ) )
{
if ( OnConfirmationSelectedEvt != null )
OnConfirmationSelectedEvt( true, m_shader, m_material );
if ( m_autoDeactivate )
Deactivate();
}
if ( GUILayout.Button( m_noStr, m_buttonStyle ) )
{
if ( OnConfirmationSelectedEvt != null )
OnConfirmationSelectedEvt( false, m_shader, m_material );
if ( m_autoDeactivate )
Deactivate();
}
}
EditorGUILayout.EndHorizontal();
}
EditorGUILayout.EndVertical();
}
GUILayout.EndArea();
}
public void Deactivate()
{
m_isActive = false;
OnConfirmationSelectedEvt = null;
}
public bool IsActive { get { return m_isActive; } }
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 291cb40a04f835a4d89037cf3053c6a3
timeCreated: 1481126954
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,309 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
namespace AmplifyShaderEditor
{
[System.Serializable]
public class Toast
{
public MessageSeverity ItemType;
public string ItemMessage;
public double ItemTime;
public int ItemOwnerId;
public Toast( MessageSeverity itemType, string itemMessage, double itemTime,int itemOwnerId )
{
ItemType = itemType;
ItemMessage = itemMessage;
ItemTime = itemTime;
ItemOwnerId = itemOwnerId;
}
}
public class ConsoleLogWindow
{
public const int MAXWIDTH = 500;
public const float FADETIME = 7;
private readonly GUIContent m_boxToggleContent = new GUIContent( "\u2261", "Toggle Message Box" );
private readonly GUIContent m_clearContent = new GUIContent( "\u00D7", "Clear Messages" );
protected AmplifyShaderEditorWindow m_parentWindow = null;
// needs to be serialized
private Vector2 m_currentScrollPos;
int lastCall = -1;
public ConsoleLogWindow( AmplifyShaderEditorWindow parentWindow )
{
m_parentWindow = parentWindow;
}
public void AddMessage( MessageSeverity itemType, string itemMessage , int itemOwnerId )
{
var toast = new Toast( itemType, itemMessage, Time.realtimeSinceStartup, itemOwnerId );
m_parentWindow.Messages.Insert( 0, toast );
m_currentScrollPos.y = Mathf.Infinity;
if( !m_parentWindow.MaximizeMessages )
lastCall = Mathf.Max( (int)itemType, lastCall );
GUIContent gc = new GUIContent( m_parentWindow.Messages.Count + ": " + itemMessage );
float maxWidth = m_parentWindow.MaxMsgWidth;
maxWidth = Mathf.Max( UIUtils.ConsoleLogLabel.CalcSize( gc ).x + 16, maxWidth );
maxWidth = Mathf.Min( maxWidth, MAXWIDTH );
m_parentWindow.MaxMsgWidth = maxWidth;
}
public void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus, float rightSide )
{
EventType currentEventType = Event.current.type;
var messages = m_parentWindow.Messages;
var maximize = m_parentWindow.MaximizeMessages;
Rect button = parentPosition;
button.width = 22;
button.height = 22;
button.x = parentPosition.x + parentPosition.width - button.width - rightSide - 8;
button.y = parentPosition.y + parentPosition.height - button.height - ( m_parentWindow.CurrentSelection == ASESelectionMode.Material ? 52 : 8 );
Rect toolbarArea = button;
toolbarArea.y -= 5;
if( maximize )
{
toolbarArea.xMin -= m_parentWindow.MaxMsgWidth;
toolbarArea.yMin -= 66;
}
toolbarArea.x -= 6;
bool needsRepaint = false;
if( maximize )
{
GUIStyle labelStyle = UIUtils.ConsoleLogLabel;
toolbarArea.y -= 16 + 8;
GUILayout.BeginArea( toolbarArea, UIUtils.ConsoleLogMessage );
EditorGUILayout.BeginVertical();
m_currentScrollPos = EditorGUILayout.BeginScrollView( m_currentScrollPos );
{
int count = messages.Count;
for( int i = count - 1; i >= 0; i-- )
{
switch( messages[ i ].ItemType )
{
case MessageSeverity.Error:
labelStyle.normal.textColor = Color.red;
break;
case MessageSeverity.Warning:
labelStyle.normal.textColor = Color.yellow;
break;
default:
case MessageSeverity.Normal:
labelStyle.normal.textColor = Color.white;
break;
}
if( messages[ i ].ItemOwnerId < 0 )
{
if( Event.current.control && Event.current.shift )
{
if( GUILayout.Button( ( count - i ) + ": " + messages[ i ].ItemMessage, labelStyle ) )
{
if( Event.current.button == 1 )
{
EditorGUIUtility.systemCopyBuffer = messages[ i ].ItemMessage;
}
}
}
else
{
GUILayout.Label( ( count - i ) + ": " + messages[ i ].ItemMessage, labelStyle );
}
}
else
{
if( GUILayout.Button( ( count - i ) + ": " + messages[ i ].ItemMessage, labelStyle ) )
{
UIUtils.CurrentWindow.FocusOnNode( messages[ i ].ItemOwnerId, 1, true );
if( Event.current.button == 1 )
{
EditorGUIUtility.systemCopyBuffer = messages[ i ].ItemMessage;
}
}
}
}
}
EditorGUILayout.EndScrollView();
EditorGUILayout.EndVertical();
GUILayout.EndArea();
}
else
{
// draw toaster
int count = messages.Count;
Rect rect = toolbarArea;
rect.xMin -= 200;
float startFade = FADETIME - 1;
for( int i = 0; i < count; i++ )
{
GUIStyle msgstyle = UIUtils.ConsoleLogMessage;
float delta = (float)(Time.realtimeSinceStartup - messages[ i ].ItemTime);
if( delta > FADETIME )
continue;
if( delta < 0.1f )
{
msgstyle.normal.textColor = Color.cyan;
}
else if( delta < startFade )
{
switch( messages[ i ].ItemType )
{
case MessageSeverity.Error:
msgstyle.normal.textColor = Color.red;
break;
case MessageSeverity.Warning:
msgstyle.normal.textColor = Color.yellow;
break;
default:
case MessageSeverity.Normal:
msgstyle.normal.textColor = Color.white;
break;
}
}
else
{
switch( messages[ i ].ItemType )
{
case MessageSeverity.Error:
msgstyle.normal.textColor = new Color( 1, 0, 0, FADETIME - delta );
break;
case MessageSeverity.Warning:
msgstyle.normal.textColor = new Color( 1, 1, 0, FADETIME - delta );
break;
default:
case MessageSeverity.Normal:
msgstyle.normal.textColor = new Color( 1, 1, 1, FADETIME - delta );
break;
}
}
needsRepaint = true;
GUIContent gc = new GUIContent( messages[ i ].ItemMessage );
var sizes = msgstyle.CalcSize( gc );
rect.xMin -= sizes.x - rect.width;
rect.height = sizes.y;
rect.y -= rect.height + 2;
if( messages[ i ].ItemOwnerId < 0 )
{
GUI.Label( rect, gc, msgstyle );
}
else
{
if( GUI.Button( rect, gc, msgstyle ))
{
UIUtils.CurrentWindow.FocusOnNode( messages[ i ].ItemOwnerId, 1, true );
if( Event.current.button == 1 )
{
EditorGUIUtility.systemCopyBuffer = messages[ i ].ItemMessage;
}
}
}
}
}
//GUI.color = cached;
if( needsRepaint )
m_parentWindow.MarkToRepaint();
GUIStyle style = UIUtils.ConsoleLogCircle;
button.size = Vector2.one * 16;
switch( lastCall )
{
case 0:
style.normal.textColor = Color.cyan;
break;
case 1:
style.normal.textColor = Color.yellow;
break;
case 2:
style.normal.textColor = Color.red;
break;
default:
style.normal.textColor = new Color( 1, 1, 1, 0.5f );
break;
}
if( GUI.Button( button, m_boxToggleContent, style ) )
{
maximize = !maximize;
m_parentWindow.MaximizeMessages = maximize;
m_currentScrollPos.y = Mathf.Infinity;
lastCall = -1;
}
style.normal.textColor = new Color( 1, 1, 1, 0.5f );
//GUI.color = cached;
button.x -= button.width + 2;
if( maximize && GUI.Button( button, m_clearContent, style ) )
{
if( messages.Count == 0 )
{
maximize = false;
m_parentWindow.MaximizeMessages = maximize;
}
ClearMessages();
}
button.width += button.width + 2;
bool mouseOnTop = button.Contains( mousePosition );
if( currentEventType == EventType.MouseMove && mouseOnTop )
m_parentWindow.MarkToRepaint();
if( DebugConsoleWindow.DeveloperMode )
{
if( Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Alpha1 )
{
UIUtils.ShowMessage( "This is an info message\nwith two lines" );
}
if( Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Alpha2 )
{
UIUtils.ShowMessage( "This is a warning message", MessageSeverity.Warning );
}
if( Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Alpha3 )
{
UIUtils.ShowMessage( "THIS IS AN ERROR MESSAGE!!", MessageSeverity.Error );
}
}
}
public void ClearMessages()
{
m_parentWindow.Messages.Clear();
m_parentWindow.MaxMsgWidth = MAXWIDTH;
}
public void Toggle()
{
}
public void Destroy()
{
m_parentWindow = null;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: ed706353a579cbb46b300406107108b1
timeCreated: 1506345180
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,81 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using UnityEngine;
namespace AmplifyShaderEditor
{
public class ContextMenuItem
{
private const string PALETTE_NAME_MOD_STR = " ";
private string m_paletteName;
private string m_name;
private string m_tags;
private string m_category;
private string m_description;
private System.Type m_type;
private GUIContent m_guiContent;
private string m_nameWithShortcut;
private AmplifyShaderFunction m_function;
private NodeAttributes m_nodeAttributes;
public ContextMenuItem( NodeAttributes nodeAttributes, System.Type type, string name, string tags, string category, string description, AmplifyShaderFunction function, KeyCode shortcut )
{
m_nodeAttributes = nodeAttributes;
m_name = name;
m_tags = name + ( string.IsNullOrEmpty( tags ) ? "" : " " + tags );
m_tags = m_tags.ToLower();
m_nameWithShortcut = shortcut != KeyCode.None ? ( name + " [ " + UIUtils.KeyCodeToString( shortcut ) + " ]" ) : name;
m_paletteName = PALETTE_NAME_MOD_STR + m_name;
m_type = type;
m_category = category;
m_description = description;
m_function = function;
m_guiContent = new GUIContent( m_nameWithShortcut, m_description );
}
public int CompareTo( ContextMenuItem item , bool useWeights )
{
if ( useWeights && NodeAttributes.SortOrderPriority > -1 && item.NodeAttributes.SortOrderPriority > -1 )
{
if ( NodeAttributes.SortOrderPriority > item.NodeAttributes.SortOrderPriority )
{
return 1;
}
else if ( NodeAttributes.SortOrderPriority == item.NodeAttributes.SortOrderPriority )
{
return m_name.CompareTo( item.Name );
}
else
{
return -1;
}
}
return m_name.CompareTo( item.Name );
}
public string PaletteName { get { return m_paletteName; } }
public string Name { get { return m_name; } }
public string Tags { get { return m_tags; } }
public string NameWithShortcut { get { return m_nameWithShortcut; } }
public string Category { get { return m_category; } }
public string Description { get { return m_description; } }
public AmplifyShaderFunction Function { get { return m_function; } }
public System.Type NodeType { get { return m_type; } }
public GUIContent ItemUIContent { get { return m_guiContent; } }
public NodeAttributes NodeAttributes { get { return m_nodeAttributes; } }
public override string ToString()
{
return m_name + ":" + m_category + ":" + m_description;
}
public void Destroy()
{
m_guiContent = null;
m_nodeAttributes = null;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 417f409230c530b468b8ab67dd6e3b8b
timeCreated: 1481126955
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,53 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
//using UnityEditor;
//using UnityEngine;
//namespace AmplifyShaderEditor
//{
// //EditorGUIUtility.GetBuiltinSkin(EditorSkin.Inspector)
// // this might be a bit nonsense since I could use the GetBuiltinSkin directly but this way will bea easier to change to some custom visuals on some near future
// [System.Serializable]
// public class CustomStylesContainer
// {
// public GUIStyle FoldoutStyle
// {
// get { return EditorStyles.foldout; }
// }
// public GUIStyle Label
// {
// get { return GUI.skin.label; }
// }
// public GUIStyle Button
// {
// get { return GUI.skin.button; }
// }
// public GUIStyle TextArea
// {
// get { return GUI.skin.textArea; }
// }
// public GUIStyle Toggle
// {
// get { return GUI.skin.toggle; }
// }
// public GUIStyle Window
// {
// get { return GUI.skin.window; }
// }
// public GUIStyle Textfield
// {
// get { return GUI.skin.textField; }
// }
// public GUIStyle Box
// {
// get { return GUI.skin.box; }
// }
// }
//}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 79d0d783b532b474192b191547bee1c1
timeCreated: 1481126957
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,213 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
//#define ASE_CONSOLE_WINDOW
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using System.IO;
namespace AmplifyShaderEditor
{
public sealed class DebugConsoleWindow : EditorWindow
{
private const float WindowSizeX = 250;
private const float WindowSizeY = 250;
private const float WindowPosX = 5;
private const float WindowPosY = 5;
private Rect m_availableArea;
private bool m_wikiAreaFoldout = true;
private bool m_miscAreaFoldout = true;
private Vector2 m_currentScrollPos;
private int m_minURLNode = 0;
private int m_maxURLNode = -1;
private string m_root = string.Empty;
#if ASE_CONSOLE_WINDOW
public readonly static bool DeveloperMode = true;
public static bool UseShaderPanelsInfo = true;
[MenuItem( "Window/Amplify Shader Editor/Open Debug Console" )]
static void OpenMainShaderGraph()
{
OpenWindow();
}
[MenuItem( "Window/Amplify Shader Editor/Create Template Menu Items" )]
public static void CreateTemplateMenuItems()
{
UIUtils.CurrentWindow.TemplatesManagerInstance.CreateTemplateMenuItems();
}
#else
public readonly static bool DeveloperMode = false;
public static bool UseShaderPanelsInfo = false;
#endif
public static DebugConsoleWindow OpenWindow()
{
if ( DeveloperMode )
{
DebugConsoleWindow currentWindow = ( DebugConsoleWindow ) DebugConsoleWindow.GetWindow( typeof( DebugConsoleWindow ), false, "ASE Debug Console" );
currentWindow.titleContent.tooltip = "Debug Options for ASE. Intented only for ASE development team";
currentWindow.minSize = new Vector2( WindowSizeX, WindowSizeY );
currentWindow.maxSize = new Vector2( WindowSizeX, 2 * WindowSizeY ); ;
currentWindow.wantsMouseMove = true;
return currentWindow;
}
return null;
}
private void OnEnable()
{
m_root = Application.dataPath + "/../NodesInfo/";
if( !Directory.Exists( m_root ) )
Directory.CreateDirectory( m_root );
}
void OnGUI()
{
m_availableArea = new Rect( WindowPosX, WindowPosY, position.width - 2 * WindowPosX, position.height - 2 * WindowPosY );
GUILayout.BeginArea( m_availableArea );
{
m_currentScrollPos = EditorGUILayout.BeginScrollView( m_currentScrollPos, GUILayout.Width( 0 ), GUILayout.Height( 0 ) );
{
EditorGUILayout.BeginVertical();
{
AmplifyShaderEditorWindow window = UIUtils.CurrentWindow;
if ( window != null )
{
EditorGUILayout.Separator();
NodeUtils.DrawPropertyGroup( ref m_wikiAreaFoldout, "Wiki Helper", ShowWikiHelperFunctions );
EditorGUILayout.Separator();
NodeUtils.DrawPropertyGroup( ref m_miscAreaFoldout, "Misc", ShowMiscFuntions );
EditorGUILayout.Separator();
}
else
{
EditorGUILayout.LabelField( "Please open an ASE window to access debug options" );
}
}
EditorGUILayout.EndVertical();
}
EditorGUILayout.EndScrollView();
}
GUILayout.EndArea();
}
void ShowWikiHelperFunctions()
{
AmplifyShaderEditorWindow window = UIUtils.CurrentWindow;
EditorGUILayout.Separator();
if ( GUILayout.Button( "Nodes Screen Shots" ) )
{
window.CurrentNodeExporterUtils.ActivateAutoScreenShot( m_root+"Shots/" ,0,-1 );
}
GUILayout.BeginHorizontal();
if( GUILayout.Button( "Nodes URLs" ) )
{
window.CurrentNodeExporterUtils.ActivateNodesURL( m_minURLNode, m_maxURLNode );
}
m_minURLNode = EditorGUILayout.IntField( m_minURLNode );
m_maxURLNode = EditorGUILayout.IntField( m_maxURLNode );
GUILayout.EndHorizontal();
EditorGUILayout.Separator();
if( GUILayout.Button( "Nodes CSV Export" ) )
{
window.CurrentNodeExporterUtils.GenerateNodesCSV( m_root );
}
EditorGUILayout.Separator();
if( GUILayout.Button( "Nodes Undo Test" ) )
{
window.CurrentNodeExporterUtils.ActivateAutoUndo();
}
EditorGUILayout.Separator();
if ( GUILayout.Button( "Nodes Info" ) )
{
window.CurrentPaletteWindow.DumpAvailableNodes( false, m_root );
window.CurrentPaletteWindow.DumpAvailableNodes( true, m_root );
}
EditorGUILayout.Separator();
if ( GUILayout.Button( "Shortcuts Info" ) )
{
window.ShortcutManagerInstance.DumpShortcutsToDisk( Application.dataPath + "/../NodesInfo/" );
}
}
void ShowMiscFuntions()
{
AmplifyShaderEditorWindow window = UIUtils.CurrentWindow;
if ( GUILayout.Button( "Force Example Shader Compilation" ) )
{
UIUtils.ForceExampleShaderCompilation();
}
EditorGUILayout.Separator();
if ( GUILayout.Button( "Refresh Available Nodes" ) )
{
window.RefreshAvaibleNodes();
}
EditorGUILayout.Separator();
if ( GUILayout.Button( "Dump Uniform Names" ) )
{
//window.CurrentPaletteWindow.NewList()
window.DuplicatePrevBufferInstance.DumpUniformNames();
}
EditorGUILayout.Separator();
if ( GUILayout.Button( "Force Palette Update" ) )
{
Debug.Log( UIUtils.CurrentWindow.IsShaderFunctionWindow );
window.CurrentPaletteWindow.ForceUpdate = true;
}
EditorGUILayout.Separator();
if( GUILayout.Button( "Detect Infinite Loops" ) )
{
if( window.IsShaderFunctionWindow )
{
Debug.Log( "Starting infinite loop detection over shader functions" );
List<FunctionOutput> nodes = window.OutsideGraph.FunctionOutputNodes.NodesList;
for( int i = 0; i < nodes.Count; i++ )
{
UIUtils.DetectNodeLoopsFrom( nodes[ i ], new Dictionary<int, int>() );
}
}
else
{
if( window.OutsideGraph.MultiPassMasterNodes.Count > 0 )
{
Debug.Log( "Starting infinite loop detection over shader from template" );
List<TemplateMultiPassMasterNode> nodes = window.OutsideGraph.MultiPassMasterNodes.NodesList;
for( int i = 0; i < nodes.Count; i++ )
{
UIUtils.DetectNodeLoopsFrom( nodes[ i ], new Dictionary<int, int>() );
}
}
else
{
Debug.Log( "Starting infinite loop detection over standard shader" );
UIUtils.DetectNodeLoopsFrom( window.OutsideGraph.CurrentMasterNode, new Dictionary<int, int>() );
}
}
Debug.Log( "End infinite loop detection" );
}
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 52308890136cd7746a5a073c9be8f028
timeCreated: 1487850100
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,47 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEditor;
using UnityEngine;
namespace AmplifyShaderEditor
{
public class DragAndDropTool
{
public delegate void OnValidDropObject(params UnityEngine.Object[] draggedObjs );
public event OnValidDropObject OnValidDropObjectEvt;
public void Destroy()
{
OnValidDropObjectEvt = null;
}
public void TestDragAndDrop( Rect dropArea )
{
Event currentEvent = Event.current;
EventType currentEventType = currentEvent.type;
switch (currentEventType)
{
case EventType.DragUpdated:
case EventType.DragPerform:
{
if (!dropArea.Contains(currentEvent.mousePosition))
return;
DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
if (currentEvent.type == EventType.DragPerform)
{
DragAndDrop.AcceptDrag();
if (OnValidDropObjectEvt != null)
{
OnValidDropObjectEvt(DragAndDrop.objectReferences);
}
}
}break;
//case EventType.DragExited:DragAndDrop.PrepareStartDrag();break;
}
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 41c9bd09aea1377459c7e62910711c22
timeCreated: 1481126955
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,375 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using System.Collections.Generic;
using UnityEngine;
namespace AmplifyShaderEditor
{
[Serializable]
public class DuplicatePreventionBuffer
{
private const string VectorNameStr = "Vector ";
private const string TextureSampleNameStr = "Texture Sample ";
private const string MatrixNameStr = "Matrix ";
private const string IntNameStr = "Int ";
private const string FloatNameStr = "Float ";
private const string ColorNameStr = "Color ";
[SerializeField]
private int[] m_availableUVChannelsArray = { -1, -1, -1, -1 };
private string[] m_availableUVChannelsNamesArray = { "null",
"null",
"null",
"null" };
private Dictionary<string, int> m_availablePropertyNames = new Dictionary<string, int>();
private Dictionary<string, int> m_availableUniformNames = new Dictionary<string, int>();
private Dictionary<string, int> m_availableLocalVariableNames = new Dictionary<string, int>();
public void ReleaseAllUVChannels()
{
for ( int i = 0; i < m_availableUVChannelsArray.Length; i++ )
{
m_availableUVChannelsArray[ i ] = -1;
}
}
public bool RegisterUVChannel( int nodeId, int channelId, string name )
{
if ( channelId < 0 ||
channelId > ( m_availableUVChannelsArray.Length - 1 ) ||
m_availableUVChannelsArray[ channelId ] >= 0 )
{
return false;
}
m_availableUVChannelsArray[ channelId ] = nodeId;
m_availableUVChannelsNamesArray[ channelId ] = name;
return true;
}
public bool ReleaseUVChannel( int nodeId, int channelId )
{
if ( channelId < 0 ||
channelId > ( m_availableUVChannelsArray.Length - 1 ) )
{
return false;
}
if ( m_availableUVChannelsArray[ channelId ] == nodeId )
{
m_availableUVChannelsArray[ channelId ] = -1;
return true;
}
return false;
}
public int RegisterFirstAvailableChannel( int nodeId , string name)
{
for ( int i = 0; i < m_availableUVChannelsArray.Length; i++ )
{
if ( m_availableUVChannelsArray[ i ] == -1 )
{
m_availableUVChannelsArray[ i ] = nodeId;
m_availableUVChannelsNamesArray[ i ] = name;
return i;
}
}
return -1;
}
public bool IsChannelAvailable( int channelId )
{
if ( channelId < 0 ||
channelId > ( m_availableUVChannelsArray.Length - 1 ) )
{
return false;
}
return ( m_availableUVChannelsArray[ channelId ] < 0 );
}
public int GetFirstOccupiedChannel()
{
for ( int i = 0; i < 4; i++ )
{
if ( m_availableUVChannelsArray[ i ] > -1 )
return i;
}
return -1;
}
public string GetChannelName( int channelId )
{
if ( channelId < 0 ||
channelId > ( m_availableUVChannelsArray.Length - 1 ) )
{
return string.Empty;
}
return m_availableUVChannelsNamesArray[ channelId ] ;
}
public void SetChannelName( int channelId , string name )
{
if ( channelId < 0 ||
channelId > ( m_availableUVChannelsArray.Length - 1 ) )
{
return;
}
m_availableUVChannelsNamesArray[ channelId ] = name;
}
public bool RegisterLocalVariableName( int nodeId, string name )
{
if ( name.Length == 0 )
return false;
if ( m_availableLocalVariableNames.ContainsKey( name ) )
{
if ( m_availableLocalVariableNames[ name ] > -1 )
{
return false;
}
else
{
m_availableLocalVariableNames[ name ] = nodeId;
return true;
}
}
m_availableLocalVariableNames.Add( name, nodeId );
return true;
}
public int CheckUniformNameOwner( string name )
{
if ( name.Length == 0 )
return -1;
if ( m_availableUniformNames.ContainsKey( name ) )
{
return m_availableUniformNames[ name ];
}
return -1;
}
public bool RegisterUniformName( int nodeId, string name )
{
if ( name.Length == 0 )
return false;
if ( m_availableUniformNames.ContainsKey( name ) )
{
if ( m_availableUniformNames[ name ] > -1 )
{
return false;
}
else
{
m_availableUniformNames[ name ] = nodeId;
return true;
}
}
m_availableUniformNames.Add( name, nodeId );
return true;
}
public void DumpUniformNames()
{
string val = "CONTENTS\n";
foreach ( KeyValuePair<string, int> kvp in m_availableUniformNames )
{
val += ( "key " + kvp.Key + " : value " + kvp.Value + "\n" );
}
}
public void DumpLocalVariableNames()
{
string val = "CONTENTS\n";
foreach ( KeyValuePair<string, int> kvp in m_availableLocalVariableNames )
{
val += ( "key " + kvp.Key + " : value " + kvp.Value + "\n" );
}
}
public bool ReleaseUniformName( int nodeId, string name )
{
if ( !string.IsNullOrEmpty(name) && name.Length == 0 )
return false;
if ( m_availableUniformNames.ContainsKey( name ) )
{
if ( m_availableUniformNames[ name ] == nodeId )
{
m_availableUniformNames.Remove( name );
return true;
}
}
return false;
}
public bool ReleaseLocalVariableName( int nodeId, string name )
{
if ( name.Length == 0 )
return false;
if ( m_availableLocalVariableNames.ContainsKey( name ) )
{
if ( m_availableLocalVariableNames[ name ] == nodeId )
{
m_availableLocalVariableNames.Remove( name );
return true;
}
}
return false;
}
public void ReleaseAllUniformNames()
{
m_availableUniformNames.Clear();
}
public void ReleaseAllLocalVariableNames()
{
m_availableLocalVariableNames.Clear();
}
public void GetFirstAvailableName( int nodeId, WirePortDataType type , out string outProperty , out string outInspector, bool useCustomPrefix = false, string customPrefix = null)
{
string name = string.Empty;
if ( useCustomPrefix && customPrefix != null )
{
name = customPrefix;
}
else
{
switch ( type )
{
case WirePortDataType.OBJECT:
case WirePortDataType.FLOAT:
{
name = FloatNameStr;
}
break;
case WirePortDataType.INT:
{
name = IntNameStr;
}
break;
case WirePortDataType.FLOAT2:
case WirePortDataType.FLOAT3:
case WirePortDataType.FLOAT4:
{
name = VectorNameStr;
}
break;
case WirePortDataType.FLOAT3x3:
case WirePortDataType.FLOAT4x4:
{
name = MatrixNameStr;
}
break;
case WirePortDataType.COLOR:
{
name = ColorNameStr;
}
break;
}
}
int count = 0;
bool foundName = false;
while ( !foundName )
{
string inspectorName = name + count;
string propertyName = UIUtils.GeneratePropertyName( inspectorName , PropertyType.Property );
if ( IsUniformNameAvailable( propertyName ) )
{
outInspector = inspectorName;
outProperty = propertyName;
RegisterUniformName( nodeId, propertyName );
return;
}
count += 1;
}
outProperty = string.Empty;
outInspector = string.Empty;
UIUtils.ShowMessage( "Could not find a valid name " + MessageSeverity.Warning );
}
public bool IsUniformNameAvailable( string name )
{
if ( m_availableUniformNames.ContainsKey( name ) && m_availableUniformNames[ name ] > -1 )
return false;
return true;
}
public bool IsLocalvariableNameAvailable( string name )
{
if ( m_availableLocalVariableNames.ContainsKey( name ) && m_availableLocalVariableNames[ name ] > -1 )
return false;
return true;
}
public bool GetPropertyName( int nodeId, string name )
{
if ( m_availablePropertyNames.ContainsKey( name ) )
{
if ( m_availablePropertyNames[ name ] > -1 )
{
return false;
}
else
{
m_availablePropertyNames[ name ] = nodeId;
return true;
}
}
m_availablePropertyNames.Add( name, nodeId );
return true;
}
public bool ReleasePropertyName( int nodeId, string name )
{
if ( m_availablePropertyNames.ContainsKey( name ) )
{
if ( m_availablePropertyNames[ name ] == nodeId )
{
m_availablePropertyNames[ name ] = -1;
return true;
}
}
return false;
}
public void ReleaseAllPropertyNames()
{
m_availablePropertyNames.Clear();
}
public bool IsPropertyNameAvailable( string name )
{
if ( m_availablePropertyNames.ContainsKey( name ) && m_availablePropertyNames[ name ] > -1 )
return false;
return true;
}
public void ReleaseAllData()
{
ReleaseAllUVChannels();
ReleaseAllUniformNames();
ReleaseAllPropertyNames();
ReleaseAllLocalVariableNames();
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a4cfbb4204c63ca4e8f7cec73f6b3ef8
timeCreated: 1481126958
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,396 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System;
using System.Text;
using System.Linq;
using System.Collections.Generic;
using System.Reflection;
namespace AmplifyShaderEditor
{
public class ShortcutKeyData
{
public bool IsPressed;
public System.Type NodeType;
public string Name;
public ShortcutKeyData( System.Type type, string name )
{
NodeType = type;
Name = name;
IsPressed = false;
}
}
public class GraphContextMenu
{
private List<ContextMenuItem> m_items;
private List<ContextMenuItem> m_itemFunctions;
private Dictionary<System.Type, NodeAttributes> m_itemsDict;
private Dictionary<System.Type, NodeAttributes> m_deprecatedItemsDict;
private Dictionary<System.Type, System.Type> m_castTypes;
private Dictionary<KeyCode, ShortcutKeyData> m_shortcutTypes;
private KeyCode m_lastKeyPressed;
private ParentGraph m_currentGraph;
private bool m_correctlyLoaded = false;
public GraphContextMenu( ParentGraph currentGraph )
{
m_currentGraph = currentGraph;
m_correctlyLoaded = RefreshNodes( currentGraph );
}
public bool RefreshNodes( ParentGraph currentGraph )
{
if( m_items != null )
{
m_items.Clear();
m_items = null;
}
if( m_itemFunctions != null )
{
m_itemFunctions.Clear();
m_itemFunctions = null;
}
m_items = new List<ContextMenuItem>();
m_itemFunctions = new List<ContextMenuItem>();
if( m_itemsDict != null )
m_itemsDict.Clear();
m_itemsDict = new Dictionary<System.Type, NodeAttributes>();
if( m_deprecatedItemsDict != null )
m_deprecatedItemsDict.Clear();
m_deprecatedItemsDict = new Dictionary<System.Type, NodeAttributes>();
if( m_castTypes != null )
m_castTypes.Clear();
m_castTypes = new Dictionary<System.Type, System.Type>();
if( m_shortcutTypes != null )
m_shortcutTypes.Clear();
m_shortcutTypes = new Dictionary<KeyCode, ShortcutKeyData>();
m_lastKeyPressed = KeyCode.None;
// Fetch all available nodes by their attributes
try
{
//IEnumerable<System.Type> availableTypes = AppDomain.CurrentDomain.GetAssemblies().ToList().SelectMany( type => type.GetTypes() );
var mainAssembly = Assembly.GetExecutingAssembly();
Type[] availableTypes = IOUtils.GetTypesInNamespace( mainAssembly, "AmplifyShaderEditor" );
try
{
var editorAssembly = Assembly.Load( "Assembly-CSharp-Editor" );
if( mainAssembly != editorAssembly )
{
Type[] extraTypes = IOUtils.GetTypesInNamespace( editorAssembly, "AmplifyShaderEditor" );
availableTypes = availableTypes.Concat<Type>( extraTypes ).ToArray();
}
}
catch( Exception )
{
// quiet catch because we don't care if it fails to find the assembly, we'll just skip it
}
Type[] asmdefTypes = IOUtils.GetAssemblyTypesArray();
if( asmdefTypes != null && asmdefTypes.Length > 0 )
{
availableTypes = availableTypes.Concat<Type>( asmdefTypes ).ToArray();
}
foreach( System.Type type in availableTypes )
{
if( !m_itemsDict.ContainsKey( type ) )
{
foreach( NodeAttributes attribute in Attribute.GetCustomAttributes( type ).OfType<NodeAttributes>() )
{
if( attribute.Available && !attribute.Deprecated )
{
//if ( !UIUtils.CurrentWindow.IsShaderFunctionWindow && attribute.AvailableInFunctionsOnly )
// continue;
if( !UIUtils.HasColorCategory( attribute.Category ) )
{
if( !String.IsNullOrEmpty( attribute.CustomCategoryColor ) )
{
try
{
Color color = new Color();
ColorUtility.TryParseHtmlString( attribute.CustomCategoryColor , out color );
UIUtils.AddColorCategory( attribute.Category , color );
}
catch( Exception e )
{
Debug.LogException( e );
UIUtils.AddColorCategory( attribute.Category , Constants.DefaultCategoryColor );
}
}
//else
//{
// UIUtils.AddColorCategory( attribute.Category, Constants.DefaultCategoryColor );
//}
}
if( attribute.CastType != null && attribute.CastType.Length > 0 && type != null )
{
for( int i = 0 ; i < attribute.CastType.Length ; i++ )
{
m_castTypes.Add( attribute.CastType[ i ] , type );
}
}
if( attribute.ShortcutKey != KeyCode.None && type != null )
m_shortcutTypes.Add( attribute.ShortcutKey , new ShortcutKeyData( type , attribute.Name ) );
ContextMenuItem newItem = new ContextMenuItem( attribute , type , attribute.Name , attribute.Tags , attribute.Category , attribute.Description , null , attribute.ShortcutKey );
if( UIUtils.GetNodeAvailabilityInBitArray( attribute.NodeAvailabilityFlags , NodeAvailability.SurfaceShader ) )
m_items.Add( newItem );
else if( UIUtils.GetNodeAvailabilityInBitArray( attribute.NodeAvailabilityFlags , currentGraph.ParentWindow.CurrentNodeAvailability ) )
m_items.Add( newItem );
else if( UIUtils.GetNodeAvailabilityInBitArray( attribute.NodeAvailabilityFlags , currentGraph.CurrentCanvasMode ) )
m_items.Add( newItem );
m_itemsDict.Add( type , attribute );
m_itemFunctions.Add( newItem );
}
else
{
if( !m_deprecatedItemsDict.ContainsKey(type))
m_deprecatedItemsDict.Add( type , attribute );
}
}
}
}
}
catch( ReflectionTypeLoadException exception )
{
Debug.LogException( exception );
return false;
}
string[] guids = AssetDatabase.FindAssets( "t:AmplifyShaderFunction" );
List<AmplifyShaderFunction> allFunctions = new List<AmplifyShaderFunction>();
for( int i = 0; i < guids.Length; i++ )
{
allFunctions.Add( AssetDatabase.LoadAssetAtPath<AmplifyShaderFunction>( AssetDatabase.GUIDToAssetPath( guids[ i ] ) ) );
}
int functionCount = allFunctions.Count;
if( functionCount > 0 )
{
m_castTypes.Add( typeof( AmplifyShaderFunction ), typeof( FunctionNode ) );
}
for( int i = 0; i < functionCount; i++ )
{
if( !allFunctions[ i ].Hidden )
{
NodeAttributes attribute = new NodeAttributes( allFunctions[ i ].FunctionName, allFunctions[ i ].CustomNodeCategory, allFunctions[ i ].Description, KeyCode.None, true, 0, int.MaxValue, typeof( AmplifyShaderFunction ) );
System.Type type = typeof( FunctionNode );
ContextMenuItem newItem = new ContextMenuItem( attribute, type, AddSpacesToSentence( attribute.Name ), attribute.Tags, attribute.Category, attribute.Description, allFunctions[ i ], attribute.ShortcutKey );
m_items.Add( newItem );
m_itemFunctions.Add( newItem );
}
}
//Sort out the final list by name
m_items.Sort( ( x, y ) => x.Category.CompareTo( y.Category ) );
m_itemFunctions.Sort( ( x, y ) => x.Category.CompareTo( y.Category ) );
return true;
}
public void Destroy()
{
for( int i = 0; i < m_items.Count; i++ )
{
m_items[ i ].Destroy();
}
for( int i = 0; i < m_itemFunctions.Count; i++ )
{
if( m_itemFunctions[ i ] != null )
m_itemFunctions[ i ].Destroy();
}
m_items.Clear();
m_items = null;
m_itemFunctions.Clear();
m_itemFunctions = null;
m_itemsDict.Clear();
m_itemsDict = null;
m_deprecatedItemsDict.Clear();
m_deprecatedItemsDict = null;
m_castTypes.Clear();
m_castTypes = null;
m_shortcutTypes.Clear();
m_shortcutTypes = null;
}
public static string AddSpacesToSentence( string text )
{
if( string.IsNullOrEmpty( text ) )
return string.Empty;
bool lastIsUpper = char.IsUpper( text, 0 );
bool lastIsLetter = char.IsLetter( text, 0 );
StringBuilder title = new StringBuilder();
title.Append( text[ 0 ] );
for( int i = 1; i < text.Length; i++ )
{
bool currIsUpper = char.IsUpper( text, i );
bool currIsLetter = char.IsLetter( text, i );
if( currIsUpper && !lastIsUpper && lastIsLetter )
{
title.Append( " " );
}
// if current is a number and previous is a letter we space it (ie: Rotation2D = Rotation 2D)
if( lastIsLetter && char.IsNumber( text, i ) )
{
title.Append( " " );
}
// if previous is upper, current is upper and the next two following are lower then we space it (ie: UVDistortion = UV Distortion)
if( i < text.Length - 1 )
{
bool nextIsLower = char.IsLower( text, i + 1 ) && char.IsLetter( text, i + 1 );
bool lastIsLower = i < text.Length - 2 ? char.IsLower( text, i + 2 ) && char.IsLetter( text, i + 2 ) : false;
if( lastIsUpper && currIsUpper && currIsLetter && nextIsLower && lastIsLower )
{
title.Append( " " );
}
}
lastIsUpper = currIsUpper;
lastIsLetter = currIsLetter;
title.Append( text[ i ] );
}
return title.ToString();
}
public NodeAttributes GetNodeAttributesForType( System.Type type )
{
if( type == null )
{
Debug.LogError( "Invalid type detected" );
return null;
}
if( m_itemsDict.ContainsKey( type ) )
return m_itemsDict[ type ];
return null;
}
public NodeAttributes GetDeprecatedNodeAttributesForType( System.Type type )
{
if( m_deprecatedItemsDict.ContainsKey( type ) )
return m_deprecatedItemsDict[ type ];
return null;
}
public void UpdateKeyPress( KeyCode key )
{
if( key == KeyCode.None )
return;
m_lastKeyPressed = key;
if( m_shortcutTypes.ContainsKey( key ) )
{
m_shortcutTypes[ key ].IsPressed = true;
}
}
public void UpdateKeyReleased( KeyCode key )
{
if( key == KeyCode.None )
return;
if( m_shortcutTypes.ContainsKey( key ) )
{
m_shortcutTypes[ key ].IsPressed = false;
}
}
public void ResetShortcutKeyStates()
{
foreach( KeyValuePair<KeyCode, ShortcutKeyData> kvp in m_shortcutTypes )
{
kvp.Value.IsPressed = false;
}
}
public ParentNode CreateNodeFromCastType( System.Type type )
{
if( m_castTypes.ContainsKey( type ) )
{
ParentNode newNode = (ParentNode)ScriptableObject.CreateInstance( m_castTypes[ type ] );
return newNode;
}
return null;
}
public ParentNode CreateNodeFromShortcutKey()
{
if( m_lastKeyPressed == KeyCode.None )
return null;
if( m_shortcutTypes.ContainsKey( m_lastKeyPressed ) && m_shortcutTypes[ m_lastKeyPressed ].IsPressed )
{
ParentNode newNode = (ParentNode)ScriptableObject.CreateInstance( m_shortcutTypes[ m_lastKeyPressed ].NodeType );
return newNode;
}
return null;
}
public bool CheckShortcutKey()
{
if( m_lastKeyPressed == KeyCode.None )
return false;
if( m_shortcutTypes.ContainsKey( m_lastKeyPressed ) && m_shortcutTypes[ m_lastKeyPressed ].IsPressed )
{
return true;
}
return false;
}
public List<ContextMenuItem> MenuItems
{
get
{
if( m_currentGraph.ParentWindow.IsShaderFunctionWindow )
return m_itemFunctions;
else
return m_items;
}
}
public List<ContextMenuItem> ItemFunctions { get { return m_itemFunctions; } }
public KeyCode LastKeyPressed
{
get { return m_lastKeyPressed; }
}
public Dictionary<KeyCode, ShortcutKeyData> NodeShortcuts { get { return m_shortcutTypes; } }
public bool CorrectlyLoaded { get { return m_correctlyLoaded; } }
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5c34fc95a1ddd7d42bc74151061035f4
timeCreated: 1481126956
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,448 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
namespace AmplifyShaderEditor
{
public enum MenuAnchor
{
TOP_LEFT = 0,
TOP_CENTER,
TOP_RIGHT,
MIDDLE_LEFT,
MIDDLE_CENTER,
MIDDLE_RIGHT,
BOTTOM_LEFT,
BOTTOM_CENTER,
BOTTOM_RIGHT,
NONE
}
public enum MenuAutoSize
{
MATCH_VERTICAL = 0,
MATCH_HORIZONTAL,
NONE
}
public class MenuParent
{
protected AmplifyShaderEditorWindow m_parentWindow = null;
protected const float MinimizeButtonXSpacing = 5;
protected const float MinimizeButtonYSpacing = 5.5f;
protected const float ResizeAreaWidth = 5;
protected const float MinimizeCollisionAdjust = 5;
protected GUIStyle m_style;
protected GUIContent m_content;
protected Rect m_maximizedArea;
protected Rect m_transformedArea;
protected Rect m_resizeArea;
protected MenuAnchor m_anchor;
protected MenuAutoSize m_autoSize;
protected bool m_isActive = true;
protected bool m_isMaximized = true;
protected bool m_lockOnMinimize = false;
protected bool m_preLockState = false;
protected Rect m_minimizedArea;
protected Rect m_minimizeButtonPos;
protected float m_realWidth;
protected GUIStyle m_empty = new GUIStyle();
protected float m_resizeDelta;
protected bool m_isResizing = false;
protected bool m_resizable = false;
protected GUIStyle m_resizeAreaStyle;
protected bool m_isMouseInside = false;
protected Vector2 m_currentScrollPos;
public MenuParent( AmplifyShaderEditorWindow parentWindow, float x, float y, float width, float height, string name, MenuAnchor anchor = MenuAnchor.NONE, MenuAutoSize autoSize = MenuAutoSize.NONE )
{
m_parentWindow = parentWindow;
m_anchor = anchor;
m_autoSize = autoSize;
m_maximizedArea = new Rect( x, y, width, height );
m_content = new GUIContent( GUIContent.none );
m_content.text = name;
m_transformedArea = new Rect();
m_resizeArea = new Rect();
m_resizeArea.width = ResizeAreaWidth;
m_resizeAreaStyle = GUIStyle.none;
m_currentScrollPos = Vector2.zero;
}
public void SetMinimizedArea( float x, float y, float width, float height )
{
m_minimizedArea = new Rect( x, y, width, height );
}
protected void InitDraw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId )
{
if ( m_style == null )
{
m_style = new GUIStyle( UIUtils.TextArea );
m_style.normal.background = m_style.normal.scaledBackgrounds[ 0 ];
m_style.normal.scaledBackgrounds = null;
m_style.border = new RectOffset( 4, 4, 4, 4 );
m_style.stretchHeight = true;
m_style.stretchWidth = true;
m_style.fontSize = ( int ) Constants.DefaultTitleFontSize;
m_style.fontStyle = FontStyle.Normal;
Texture minimizeTex = UIUtils.GetCustomStyle( CustomStyle.MaximizeButton ).normal.background;
m_minimizeButtonPos = new Rect( 0, 0, minimizeTex.width, minimizeTex.height );
}
Rect currentArea = m_isMaximized ? m_maximizedArea : m_minimizedArea;
if ( m_isMaximized )
{
if ( m_resizable )
{
if ( m_isResizing )
{
if ( m_anchor == MenuAnchor.TOP_LEFT )
m_resizeDelta = ( ParentWindow.CurrentEvent.mousePosition.x - m_maximizedArea.width );
else if ( m_anchor == MenuAnchor.TOP_RIGHT )
m_resizeDelta = ParentWindow.CurrentEvent.mousePosition.x - ( parentPosition.width - m_maximizedArea.width);
}
}
m_realWidth = m_maximizedArea.width;
if ( m_resizable )
{
if ( m_anchor == MenuAnchor.TOP_LEFT )
{
currentArea.width += m_resizeDelta;
m_realWidth += m_resizeDelta;
}
else if ( m_anchor == MenuAnchor.TOP_RIGHT )
{
currentArea.width -= m_resizeDelta;
m_realWidth -= m_resizeDelta;
}
}
}
else
{
if ( currentArea.x < 0 )
{
m_realWidth = currentArea.width + currentArea.x;
}
else if ( ( currentArea.x + currentArea.width ) > parentPosition.width )
{
m_realWidth = parentPosition.width - currentArea.x;
}
if ( m_realWidth < 0 )
m_realWidth = 0;
}
switch ( m_anchor )
{
case MenuAnchor.TOP_LEFT:
{
m_transformedArea.x = currentArea.x;
m_transformedArea.y = currentArea.y;
if ( m_isMaximized )
{
m_minimizeButtonPos.x = m_transformedArea.x + m_transformedArea.width - m_minimizeButtonPos.width - MinimizeButtonXSpacing;
m_minimizeButtonPos.y = m_transformedArea.y + MinimizeButtonYSpacing;
m_resizeArea.x = m_transformedArea.x + m_transformedArea.width;
m_resizeArea.y = m_minimizeButtonPos.y;
m_resizeArea.height = m_transformedArea.height;
}
else
{
float width = ( m_transformedArea.width - m_transformedArea.x );
m_minimizeButtonPos.x = m_transformedArea.x + width * 0.5f - m_minimizeButtonPos.width * 0.5f;
m_minimizeButtonPos.y = m_transformedArea.height * 0.5f - m_minimizeButtonPos.height * 0.5f;
}
}
break;
case MenuAnchor.TOP_CENTER:
{
m_transformedArea.x = parentPosition.width * 0.5f + currentArea.x;
m_transformedArea.y = currentArea.y;
}
break;
case MenuAnchor.TOP_RIGHT:
{
m_transformedArea.x = parentPosition.width - currentArea.x - currentArea.width;
m_transformedArea.y = currentArea.y;
if ( m_isMaximized )
{
m_minimizeButtonPos.x = m_transformedArea.x + MinimizeButtonXSpacing;
m_minimizeButtonPos.y = m_transformedArea.y + MinimizeButtonYSpacing;
m_resizeArea.x = m_transformedArea.x - ResizeAreaWidth;
m_resizeArea.y = m_minimizeButtonPos.y;
m_resizeArea.height = m_transformedArea.height;
}
else
{
float width = ( parentPosition.width - m_transformedArea.x );
m_minimizeButtonPos.x = m_transformedArea.x + width * 0.5f - m_minimizeButtonPos.width * 0.5f;
m_minimizeButtonPos.y = m_transformedArea.height * 0.5f - m_minimizeButtonPos.height * 0.5f;
}
}
break;
case MenuAnchor.MIDDLE_LEFT:
{
m_transformedArea.x = currentArea.x;
m_transformedArea.y = parentPosition.height * 0.5f + currentArea.y;
}
break;
case MenuAnchor.MIDDLE_CENTER:
{
m_transformedArea.x = parentPosition.width * 0.5f + currentArea.x;
m_transformedArea.y = parentPosition.height * 0.5f + currentArea.y;
}
break;
case MenuAnchor.MIDDLE_RIGHT:
{
m_transformedArea.x = parentPosition.width - currentArea.x - currentArea.width;
m_transformedArea.y = parentPosition.height * 0.5f + currentArea.y;
}
break;
case MenuAnchor.BOTTOM_LEFT:
{
m_transformedArea.x = currentArea.x;
m_transformedArea.y = parentPosition.height - currentArea.y - currentArea.height;
}
break;
case MenuAnchor.BOTTOM_CENTER:
{
m_transformedArea.x = parentPosition.width * 0.5f + currentArea.x;
m_transformedArea.y = parentPosition.height - currentArea.y - currentArea.height;
}
break;
case MenuAnchor.BOTTOM_RIGHT:
{
m_transformedArea.x = parentPosition.width - currentArea.x - currentArea.width;
m_transformedArea.y = parentPosition.height - currentArea.y - currentArea.height;
}
break;
case MenuAnchor.NONE:
{
m_transformedArea.x = currentArea.x;
m_transformedArea.y = currentArea.y;
}
break;
}
switch ( m_autoSize )
{
case MenuAutoSize.MATCH_HORIZONTAL:
{
m_transformedArea.width = parentPosition.width - m_transformedArea.x;
m_transformedArea.height = currentArea.height;
}
break;
case MenuAutoSize.MATCH_VERTICAL:
{
m_transformedArea.width = currentArea.width;
m_transformedArea.height = parentPosition.height - m_transformedArea.y;
}
break;
case MenuAutoSize.NONE:
{
m_transformedArea.width = currentArea.width;
m_transformedArea.height = currentArea.height;
}
break;
}
}
public virtual void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus )
{
InitDraw( parentPosition, mousePosition, mouseButtonId );
if ( ParentWindow.CurrentEvent.type == EventType.MouseDrag && ParentWindow.CurrentEvent.button > 0 /*catches both middle and right mouse button*/ )
{
m_isMouseInside = IsInside( mousePosition );
if ( m_isMouseInside )
{
m_currentScrollPos.x += Constants.MenuDragSpeed * ParentWindow.CurrentEvent.delta.x;
if ( m_currentScrollPos.x < 0 )
m_currentScrollPos.x = 0;
m_currentScrollPos.y += Constants.MenuDragSpeed * ParentWindow.CurrentEvent.delta.y;
if ( m_currentScrollPos.y < 0 )
m_currentScrollPos.y = 0;
}
}
}
public void PostDraw()
{
if ( !m_isMaximized )
{
m_transformedArea.height = 35;
GUI.Label( m_transformedArea, m_content, m_style );
}
Color colorBuffer = GUI.color;
GUI.color = EditorGUIUtility.isProSkin ? Color.white : Color.black;
bool guiEnabledBuffer = GUI.enabled;
GUI.enabled = !m_lockOnMinimize;
Rect buttonArea = m_minimizeButtonPos;
buttonArea.x -= MinimizeCollisionAdjust;
buttonArea.width += 2 * MinimizeCollisionAdjust;
buttonArea.y -= MinimizeCollisionAdjust;
buttonArea.height += 2 * MinimizeCollisionAdjust;
if ( m_parentWindow.CameraDrawInfo.CurrentEventType == EventType.Repaint )
GUI.Label( m_minimizeButtonPos, string.Empty, UIUtils.GetCustomStyle( m_isMaximized ? CustomStyle.MinimizeButton : CustomStyle.MaximizeButton ) );
if( m_parentWindow.CameraDrawInfo.CurrentEventType == EventType.MouseDown && buttonArea.Contains( m_parentWindow.CameraDrawInfo.MousePosition ) )
//if ( GUI.Button( buttonArea, string.Empty, m_empty ) )
{
m_isMaximized = !m_isMaximized;
m_resizeDelta = 0;
}
if ( m_resizable && m_isMaximized )
{
EditorGUIUtility.AddCursorRect( m_resizeArea, MouseCursor.ResizeHorizontal );
if ( !m_isResizing && GUI.RepeatButton( m_resizeArea, string.Empty, m_resizeAreaStyle ) )
{
m_isResizing = true;
}
else
{
if ( m_isResizing )
{
if ( ParentWindow.CurrentEvent.isMouse && ParentWindow.CurrentEvent.type != EventType.MouseDrag )
{
m_isResizing = false;
}
}
}
if ( m_realWidth < buttonArea.width )
{
// Auto-minimize
m_isMaximized = false;
m_resizeDelta = 0;
m_isResizing = false;
}
else
{
float halfSizeWindow = 0.5f * ParentWindow.position.width;
if ( m_realWidth > halfSizeWindow )
{
m_realWidth = 0.5f * ParentWindow.position.width;
if ( m_resizeDelta > 0 )
{
m_resizeDelta = m_realWidth - m_maximizedArea.width;
}
else
{
m_resizeDelta = m_maximizedArea.width - m_realWidth;
}
}
}
}
GUI.enabled = guiEnabledBuffer;
GUI.color = colorBuffer;
}
public void OnLostFocus()
{
if ( m_isResizing )
{
m_isResizing = false;
}
}
virtual public void Destroy()
{
m_empty = null;
m_resizeAreaStyle = null;
}
public float InitialX
{
get { return m_maximizedArea.x; }
set { m_maximizedArea.x = value; }
}
public float Width
{
get { return m_maximizedArea.width; }
set { m_maximizedArea.width = value; }
}
public float RealWidth
{
get { return m_realWidth; }
}
public float Height
{
get { return m_maximizedArea.height; }
set { m_maximizedArea.height = value; }
}
public Rect Size
{
get { return m_maximizedArea; }
}
public virtual bool IsInside( Vector2 position )
{
if ( !m_isActive )
return false;
return m_transformedArea.Contains( position );
}
public bool IsMaximized
{
get { return m_isMaximized; }
set { m_isMaximized = value; }
}
public Rect TransformedArea
{
get { return m_transformedArea; }
}
public bool Resizable { set { m_resizable = value; } }
public bool IsResizing { get { return m_isResizing; } }
public bool LockOnMinimize
{
set
{
if ( m_lockOnMinimize == value )
return;
m_lockOnMinimize = value;
if ( value )
{
m_preLockState = m_isMaximized;
m_isMaximized = false;
}
else
{
m_isMaximized = m_preLockState;
}
}
}
public bool IsActive
{
get { return m_isActive; }
}
public AmplifyShaderEditorWindow ParentWindow { get { return m_parentWindow; } set { m_parentWindow = value; } }
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 5d535d3799a3ef547aea607fdc8b947b
timeCreated: 1481126956
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,569 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
using UnityEditorInternal;
namespace AmplifyShaderEditor
{
public sealed class NodeParametersWindow : MenuParent
{
private int m_lastSelectedNode = -1;
private const string TitleStr = "Node Properties";
private GUIStyle m_nodePropertiesStyle;
private GUIContent m_dummyContent = new GUIContent();
private GUIStyle m_propertyAdjustment;
private ReorderableList m_functionInputsReordableList = null;
private int m_functionInputsLastCount = 0;
private ReorderableList m_functionSwitchesReordableList = null;
private int m_functionSwitchesLastCount = 0;
private ReorderableList m_functionOutputsReordableList = null;
private int m_functionOutputsLastCount = 0;
private ReorderableList m_propertyReordableList = null;
private int m_lastCount = 0;
private bool m_forceUpdate = false;
[SerializeField]
private List<PropertyNode> m_propertyReordableNodes = new List<PropertyNode>();
// width and height are between [0,1] and represent a percentage of the total screen area
public NodeParametersWindow( AmplifyShaderEditorWindow parentWindow ) : base( parentWindow, 0, 0, 285, 0, string.Empty, MenuAnchor.TOP_LEFT, MenuAutoSize.MATCH_VERTICAL )
{
SetMinimizedArea( -225, 0, 260, 0 );
}
public void OnShaderFunctionLoad()
{
m_functionInputsReordableList = null;
m_functionSwitchesReordableList = null;
m_functionOutputsReordableList = null;
}
public bool Draw( Rect parentPosition, ParentNode selectedNode, Vector2 mousePosition, int mouseButtonId, bool hasKeyboardFocus )
{
bool changeCheck = false;
base.Draw( parentPosition, mousePosition, mouseButtonId, hasKeyboardFocus );
if ( m_nodePropertiesStyle == null )
{
m_nodePropertiesStyle = UIUtils.GetCustomStyle( CustomStyle.NodePropertiesTitle );
m_nodePropertiesStyle.normal.textColor = m_nodePropertiesStyle.active.textColor = EditorGUIUtility.isProSkin ? new Color( 1f, 1f, 1f ) : new Color( 0f, 0f, 0f );
}
if ( m_isMaximized )
{
KeyCode key = Event.current.keyCode;
if ( m_isMouseInside || hasKeyboardFocus )
{
if ( key == ShortcutsManager.ScrollUpKey )
{
m_currentScrollPos.y -= 10;
if ( m_currentScrollPos.y < 0 )
{
m_currentScrollPos.y = 0;
}
Event.current.Use();
}
if ( key == ShortcutsManager.ScrollDownKey )
{
m_currentScrollPos.y += 10;
Event.current.Use();
}
}
if( m_forceUpdate )
{
if( m_propertyReordableList != null )
m_propertyReordableList.ReleaseKeyboardFocus();
m_propertyReordableList = null;
if ( m_functionInputsReordableList != null )
m_functionInputsReordableList.ReleaseKeyboardFocus();
m_functionInputsReordableList = null;
if( m_functionSwitchesReordableList != null )
m_functionSwitchesReordableList.ReleaseKeyboardFocus();
m_functionSwitchesReordableList = null;
if ( m_functionOutputsReordableList != null )
m_functionOutputsReordableList.ReleaseKeyboardFocus();
m_functionOutputsReordableList = null;
m_forceUpdate = false;
}
GUILayout.BeginArea( m_transformedArea, m_content, m_style );
{
//Draw selected node parameters
if ( selectedNode != null )
{
// this hack is need because without it the several FloatFields/Textfields/... would show wrong values ( different from the ones they were assigned to show )
if ( m_lastSelectedNode != selectedNode.UniqueId )
{
m_lastSelectedNode = selectedNode.UniqueId;
GUI.FocusControl( "" );
}
EditorGUILayout.BeginVertical();
{
EditorGUILayout.Separator();
if ( selectedNode.UniqueId == ParentWindow.CurrentGraph.CurrentMasterNodeId )
{
m_dummyContent.text = "Output Node";
}
else
{
if ( selectedNode.Attributes != null )
{
m_dummyContent.text = selectedNode.Attributes.Name;
}
else if ( selectedNode is CommentaryNode )
{
m_dummyContent.text = "Commentary";
}
else
{
m_dummyContent.text = TitleStr;
}
}
EditorGUILayout.LabelField( m_dummyContent, m_nodePropertiesStyle );
EditorGUILayout.Separator();
//UIUtils.RecordObject( selectedNode , "Changing properties on node " + selectedNode.UniqueId);
m_currentScrollPos = EditorGUILayout.BeginScrollView( m_currentScrollPos, GUILayout.Width( 0 ), GUILayout.Height( 0 ) );
float labelWidth = EditorGUIUtility.labelWidth;
//if( selectedNode.TextLabelWidth > 0 )
// EditorGUIUtility.labelWidth = selectedNode.TextLabelWidth;
//else
EditorGUIUtility.labelWidth = TransformedArea.width * 0.42f;
changeCheck = selectedNode.SafeDrawProperties();
EditorGUIUtility.labelWidth = labelWidth;
EditorGUILayout.EndScrollView();
}
EditorGUILayout.EndVertical();
if ( changeCheck )
{
if ( selectedNode.ConnStatus == NodeConnectionStatus.Connected )
ParentWindow.SetSaveIsDirty();
}
}
else
{
//Draw Graph Params
EditorGUILayout.BeginVertical();
{
EditorGUILayout.Separator();
EditorGUILayout.LabelField( "Graph Properties", m_nodePropertiesStyle );
EditorGUILayout.Separator();
m_currentScrollPos = EditorGUILayout.BeginScrollView( m_currentScrollPos, GUILayout.Width( 0 ), GUILayout.Height( 0 ) );
float labelWidth = EditorGUIUtility.labelWidth;
EditorGUIUtility.labelWidth = 90;
bool generalIsVisible = m_parentWindow.InnerWindowVariables.ExpandedGeneralShaderOptions;
NodeUtils.DrawPropertyGroup( ref generalIsVisible, " General", DrawGeneralFunction );
m_parentWindow.InnerWindowVariables.ExpandedGeneralShaderOptions = generalIsVisible;
AmplifyShaderFunction function = ParentWindow.CurrentGraph.CurrentShaderFunction;
if( function != null )
{
//function.AdditionalIncludes.Draw( ParentWindow.CurrentGraph.CurrentOutputNode );
//function.AdditionalPragmas.Draw( ParentWindow.CurrentGraph.CurrentOutputNode );
function.AdditionalDirectives.Draw( ParentWindow.CurrentGraph.CurrentOutputNode );
}
bool inputIsVisible = m_parentWindow.InnerWindowVariables.ExpandedFunctionInputs;
NodeUtils.DrawPropertyGroup( ref inputIsVisible, " Function Inputs", DrawFunctionInputs );
m_parentWindow.InnerWindowVariables.ExpandedFunctionInputs = inputIsVisible;
bool swicthIsVisible = m_parentWindow.InnerWindowVariables.ExpandedFunctionSwitches;
NodeUtils.DrawPropertyGroup( ref swicthIsVisible, " Function Switches", DrawFunctionSwitches );
m_parentWindow.InnerWindowVariables.ExpandedFunctionSwitches = swicthIsVisible;
bool outputIsVisible = m_parentWindow.InnerWindowVariables.ExpandedFunctionOutputs;
NodeUtils.DrawPropertyGroup( ref outputIsVisible, " Function Outputs", DrawFunctionOutputs );
m_parentWindow.InnerWindowVariables.ExpandedFunctionOutputs = outputIsVisible;
bool properties = ParentWindow.InnerWindowVariables.ExpandedProperties;
NodeUtils.DrawPropertyGroup( ref properties, " Material Properties", DrawFunctionProperties );
ParentWindow.InnerWindowVariables.ExpandedProperties = properties;
EditorGUIUtility.labelWidth = labelWidth;
EditorGUILayout.EndScrollView();
}
EditorGUILayout.EndVertical();
}
}
// Close window area
GUILayout.EndArea();
}
PostDraw();
return changeCheck;
}
public void DrawGeneralFunction()
{
AmplifyShaderFunction function = ParentWindow.CurrentGraph.CurrentShaderFunction;
if ( function == null )
return;
float cacheWidth = EditorGUIUtility.labelWidth;
EditorGUIUtility.labelWidth = 115;
SerializedObject serializedObject = new UnityEditor.SerializedObject( function );
if ( serializedObject != null )
{
SerializedProperty temo = serializedObject.FindProperty( "m_description" );
EditorGUILayout.PropertyField( temo, new GUIContent( " Description" ) );
SerializedProperty url = serializedObject.FindProperty( "m_url" );
EditorGUILayout.PropertyField( url , new GUIContent( "Custom URL" ) );
SerializedProperty cat = serializedObject.FindProperty( "m_nodeCategory" );
SerializedProperty ppos = serializedObject.FindProperty( "m_previewPosition" );
EditorGUILayout.PropertyField( ppos, new GUIContent( "Preview Position" ) );
cat.intValue = ParentWindow.CurrentGraph.CurrentOutputNode.EditorGUILayoutPopup( "Category", cat.intValue, UIUtils.CategoryPresets );
if( cat.enumValueIndex == 0 )
{
SerializedProperty custCat = serializedObject.FindProperty( "m_customNodeCategory" );
EditorGUILayout.PropertyField( custCat, new GUIContent( "Custom" ) );
}
SerializedProperty hidden = serializedObject.FindProperty( "m_hidden" );
EditorGUILayout.PropertyField( hidden, new GUIContent( "Hidden" ) );
SerializedProperty customHeader = serializedObject.FindProperty( "m_headerStyle" );
EditorGUILayout.PropertyField( customHeader, new GUIContent( "Header Style" ) );
if ( customHeader.intValue == ( int )AmplifyShaderFunction.HeaderStyle.Custom )
{
SerializedProperty headerColor = serializedObject.FindProperty( "m_headerColor" );
EditorGUILayout.PropertyField( headerColor, new GUIContent( "Header Color" ) );
}
serializedObject.ApplyModifiedProperties();
}
EditorGUIUtility.labelWidth = cacheWidth;
}
public void DrawFunctionInputs()
{
List<FunctionInput> functionInputNodes = UIUtils.FunctionInputList();
if ( m_functionInputsReordableList == null || functionInputNodes.Count != m_functionInputsLastCount )
{
functionInputNodes.Sort( ( x, y ) => { return x.OrderIndex.CompareTo( y.OrderIndex ); } );
m_functionInputsReordableList = new ReorderableList( functionInputNodes, typeof( FunctionInput ), true, false, false, false );
m_functionInputsReordableList.headerHeight = 0;
m_functionInputsReordableList.footerHeight = 0;
m_functionInputsReordableList.showDefaultBackground = false;
m_functionInputsReordableList.drawElementCallback = ( Rect rect, int index, bool isActive, bool isFocused ) =>
{
EditorGUI.LabelField( rect, functionInputNodes[ index ].InputName );
};
m_functionInputsReordableList.onChangedCallback = ( list ) =>
{
//for ( int i = 0; i < functionInputNodes.Count; i++ )
//{
// functionInputNodes[ i ].OrderIndex = i;
//}
ForceInputReorder( ref functionInputNodes );
};
m_functionInputsLastCount = m_functionInputsReordableList.count;
}
if ( m_functionInputsReordableList != null )
{
if ( m_propertyAdjustment == null )
{
m_propertyAdjustment = new GUIStyle();
m_propertyAdjustment.padding.left = 17;
}
EditorGUILayout.BeginVertical( m_propertyAdjustment );
m_functionInputsReordableList.DoLayoutList();
EditorGUILayout.EndVertical();
}
}
public void ForceInputReorder( ref List<FunctionInput> functionInputNodes )
{
for( int i = 0; i < functionInputNodes.Count; i++ )
{
functionInputNodes[ i ].OrderIndex = i;
}
}
public void DrawFunctionSwitches()
{
List<FunctionSwitch> functionSwitchNodes = UIUtils.FunctionSwitchList();
if( m_functionSwitchesReordableList == null || functionSwitchNodes.Count != m_functionSwitchesLastCount )
{
functionSwitchNodes.Sort( ( x, y ) => { return x.OrderIndex.CompareTo( y.OrderIndex ); } );
UIUtils.UpdateFunctionSwitchArr();
m_functionSwitchesReordableList = new ReorderableList( functionSwitchNodes, typeof( FunctionSwitch ), true, false, false, false );
m_functionSwitchesReordableList.headerHeight = 0;
m_functionSwitchesReordableList.footerHeight = 0;
m_functionSwitchesReordableList.showDefaultBackground = false;
m_functionSwitchesReordableList.drawElementCallback = ( Rect rect, int index, bool isActive, bool isFocused ) =>
{
EditorGUI.LabelField( rect, functionSwitchNodes[ index ].OptionLabel );
};
m_functionSwitchesReordableList.onChangedCallback = ( list ) =>
{
ForceSwitchesReorder(ref functionSwitchNodes );
};
m_functionSwitchesLastCount = m_functionSwitchesReordableList.count;
}
if( m_functionSwitchesReordableList != null )
{
if( m_propertyAdjustment == null )
{
m_propertyAdjustment = new GUIStyle();
m_propertyAdjustment.padding.left = 17;
}
EditorGUILayout.BeginVertical( m_propertyAdjustment );
m_functionSwitchesReordableList.DoLayoutList();
EditorGUILayout.EndVertical();
}
}
public void ForceSwitchesReorder( ref List<FunctionSwitch> functionSwitchNodes )
{
for( int i = 0; i < functionSwitchNodes.Count; i++ )
{
functionSwitchNodes[ i ].OrderIndex = i;
}
UIUtils.UpdateFunctionSwitchArr();
}
public void DrawFunctionOutputs()
{
List<FunctionOutput> functionOutputNodes = UIUtils.FunctionOutputList();
if ( m_functionOutputsReordableList == null || functionOutputNodes.Count != m_functionOutputsLastCount )
{
functionOutputNodes.Sort( ( x, y ) => { return x.OrderIndex.CompareTo( y.OrderIndex ); } );
m_functionOutputsReordableList = new ReorderableList( functionOutputNodes, typeof( FunctionOutput ), true, false, false, false );
m_functionOutputsReordableList.headerHeight = 0;
m_functionOutputsReordableList.footerHeight = 0;
m_functionOutputsReordableList.showDefaultBackground = false;
m_functionOutputsReordableList.drawElementCallback = ( Rect rect, int index, bool isActive, bool isFocused ) =>
{
EditorGUI.LabelField( rect, functionOutputNodes[ index ].OutputName );
};
m_functionOutputsReordableList.onChangedCallback = ( list ) =>
{
for ( int i = 0; i < functionOutputNodes.Count; i++ )
{
functionOutputNodes[ i ].OrderIndex = i;
}
};
m_functionOutputsLastCount = m_functionOutputsReordableList.count;
}
if ( m_functionOutputsReordableList != null )
{
if ( m_propertyAdjustment == null )
{
m_propertyAdjustment = new GUIStyle();
m_propertyAdjustment.padding.left = 17;
}
EditorGUILayout.BeginVertical( m_propertyAdjustment );
m_functionOutputsReordableList.DoLayoutList();
EditorGUILayout.EndVertical();
}
}
private void RefreshVisibleList( ref List<PropertyNode> allNodes )
{
// temp reference for lambda expression
List<PropertyNode> nodes = allNodes;
m_propertyReordableNodes.Clear();
for( int i = 0; i < nodes.Count; i++ )
{
ReordenatorNode rnode = nodes[ i ] as ReordenatorNode;
if( ( rnode == null || !rnode.IsInside ) && ( !m_propertyReordableNodes.Exists( x => x.PropertyName.Equals( nodes[ i ].PropertyName ) ) ) )
m_propertyReordableNodes.Add( nodes[ i ] );
}
m_propertyReordableNodes.Sort( ( x, y ) => { return x.OrderIndex.CompareTo( y.OrderIndex ); } );
}
public void DrawFunctionProperties()
{
List<PropertyNode> nodes = UIUtils.PropertyNodesList();
if( nodes.Count != m_lastCount )
{
RefreshVisibleList( ref nodes );
m_lastCount = nodes.Count;
}
if( m_propertyReordableList == null )
{
m_propertyReordableList = new ReorderableList( m_propertyReordableNodes, typeof( PropertyNode ), true, false, false, false )
{
headerHeight = 0,
footerHeight = 0,
showDefaultBackground = false,
drawElementCallback = ( Rect rect, int index, bool isActive, bool isFocused ) =>
{
var first = rect;
first.width *= 0.60f;
EditorGUI.LabelField( first, m_propertyReordableNodes[ index ].PropertyInspectorName );
var second = rect;
second.width *= 0.4f;
second.x += first.width;
if( GUI.Button( second, m_propertyReordableNodes[ index ].PropertyName, new GUIStyle( "AssetLabel Partial" ) ) )
{
UIUtils.FocusOnNode( m_propertyReordableNodes[ index ], 1, false );
}
},
onReorderCallback = ( list ) =>
{
ReorderList( ref nodes );
}
};
ReorderList( ref nodes );
}
if( m_propertyReordableList != null )
{
if( m_propertyAdjustment == null )
{
m_propertyAdjustment = new GUIStyle();
m_propertyAdjustment.padding.left = 17;
}
EditorGUILayout.BeginVertical( m_propertyAdjustment );
m_propertyReordableList.DoLayoutList();
EditorGUILayout.EndVertical();
}
}
public void ForceReordering()
{
List<PropertyNode> nodes = UIUtils.PropertyNodesList();
ReorderList( ref nodes );
List<FunctionInput> functionInputNodes = UIUtils.FunctionInputList();
ForceInputReorder( ref functionInputNodes );
List<FunctionSwitch> functionSwitchNodes = UIUtils.FunctionSwitchList();
ForceSwitchesReorder( ref functionSwitchNodes );
//RecursiveLog();
}
private void RecursiveLog()
{
List<PropertyNode> nodes = UIUtils.PropertyNodesList();
nodes.Sort( ( x, y ) => { return x.OrderIndex.CompareTo( y.OrderIndex ); } );
for( int i = 0; i < nodes.Count; i++ )
{
if( ( nodes[ i ] is ReordenatorNode ) )
( nodes[ i ] as ReordenatorNode ).RecursiveLog();
else
Debug.Log( nodes[ i ].OrderIndex + " " + nodes[ i ].PropertyName );
}
}
private void ReorderList( ref List<PropertyNode> nodes )
{
// clear lock list before reordering because of multiple sf being used
for( int i = 0; i < nodes.Count; i++ )
{
ReordenatorNode rnode = nodes[ i ] as ReordenatorNode;
if ( rnode != null )
rnode.RecursiveClear();
}
int propoffset = 0;
int count = 0;
for ( int i = 0; i < m_propertyReordableNodes.Count; i++ )
{
ReordenatorNode renode = m_propertyReordableNodes[ i ] as ReordenatorNode;
if ( renode != null )
{
if ( !renode.IsInside )
{
m_propertyReordableNodes[ i ].OrderIndex = count + propoffset;
if ( renode.PropertyListCount > 0 )
{
propoffset += renode.RecursiveCount();
// the same reordenator can exist multiple times, apply ordering to all of them
for( int j = 0; j < nodes.Count; j++ )
{
ReordenatorNode pnode = ( nodes[ j ] as ReordenatorNode );
if ( pnode != null && pnode.PropertyName.Equals( renode.PropertyName ) )
{
pnode.OrderIndex = renode.RawOrderIndex;
pnode.RecursiveSetOrderOffset( renode.RawOrderIndex, true );
}
}
}
else
{
count++;
}
}
else
{
m_propertyReordableNodes[ i ].OrderIndex = 0;
}
}
else
{
m_propertyReordableNodes[ i ].OrderIndex = count + propoffset;
count++;
}
}
}
public override void Destroy()
{
base.Destroy();
m_functionInputsReordableList = null;
m_functionOutputsReordableList = null;
m_propertyReordableList = null;
}
public bool ForceUpdate
{
get { return m_forceUpdate; }
set { m_forceUpdate = value; }
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: d09f21096aa7c9f438e91a6e7f2621fb
timeCreated: 1481126959
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,56 @@
using UnityEngine;
namespace AmplifyShaderEditor
{
public class NodeWireReferencesUtils
{
public WireReference InputPortReference = new WireReference();
public WireReference SwitchPortReference = new WireReference();
public WireReference OutputPortReference = new WireReference();
public Vector2 SnapPosition = Vector2.zero;
public bool SnapEnabled = false;
public WireReference SnapPort = new WireReference();
public bool ValidReferences()
{
return ( InputPortReference.IsValid || OutputPortReference.IsValid );
}
public void InvalidateReferences()
{
InputPortReference.Invalidate();
OutputPortReference.Invalidate();
SnapPort.Invalidate();
SnapEnabled = false;
}
public void SetOutputReference( int nodeId, int portId, WirePortDataType dataType, bool typeLocked )
{
if( InputPortReference.IsValid )
InputPortReference.Invalidate();
OutputPortReference.SetReference( nodeId, portId, dataType, typeLocked );
}
public void SetInputReference( int nodeId, int portId, WirePortDataType dataType, bool typeLocked )
{
if( OutputPortReference.IsValid )
OutputPortReference.Invalidate();
InputPortReference.SetReference( nodeId, portId, dataType, typeLocked );
}
public void ActivateSnap( Vector2 position, WirePort port )
{
SnapPort.SetReference( port );
SnapEnabled = true;
SnapPosition = position;
}
public void DeactivateSnap()
{
SnapEnabled = false;
SnapPort.Invalidate();
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: bfbc736093c900c418a7668e3003663a
timeCreated: 1500289690
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: a89b03eb735b82a4da19a8381846935f
folderAsset: yes
timeCreated: 1481126946
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,101 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using System.Collections.Generic;
using System;
namespace AmplifyShaderEditor
{
public sealed class ContextPalette : PaletteParent
{
private Vector3 m_position;
private Vector2 m_startDropPosition;
public ContextPalette( AmplifyShaderEditorWindow parentWindow ) : base( parentWindow, 0, 0, 250, 250, string.Empty, MenuAnchor.NONE, MenuAutoSize.NONE )
{
m_isActive = false;
OnPaletteNodeCreateEvt += OnOptionSelected;
m_searchFilterControl += "CONTEXTPALETTE";
}
public override void OnEnterPressed(int index = 0)
{
if ( m_searchFilter.Length > 0 && m_currentItems.Count > 0 )
{
FireNodeCreateEvent( m_currentItems[ index ].NodeType, m_currentItems[ index ].Name, m_currentItems[ index ].Function );
}
else
{
Disable();
}
}
public override void OnEscapePressed()
{
Disable();
if ( m_parentWindow.WireReferenceUtils.ValidReferences() )
{
m_parentWindow.WireReferenceUtils.InvalidateReferences();
}
}
public override void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus )
{
//if ( !_isActive )
// return;
if ( Event.current.type == EventType.MouseDown && !IsInside( Event.current.mousePosition ) )
{
Disable();
return;
}
base.Draw( parentPosition, mousePosition, mouseButtonId, hasKeyboadFocus );
}
public void Show( Vector2 position, Rect cameraInfo )
{
m_startDropPosition = position;
m_maximizedArea.x = ( position.x + m_maximizedArea.width ) > cameraInfo.width ? ( cameraInfo.width - 1.1f * m_maximizedArea.width ) : position.x;
m_maximizedArea.y = ( position.y + m_maximizedArea.height ) > cameraInfo.height ? ( cameraInfo.height - 1.1f * m_maximizedArea.height ) : position.y;
m_position = new Vector3( m_maximizedArea.x, m_maximizedArea.y, 0f );
m_isActive = true;
m_focusOnSearch = true;
}
// This override is removing focus from our window ... need to figure out a workaround before re-using it
//public override bool CheckButton( GUIContent content, GUIStyle style, int buttonId )
//{
// if ( buttonId != m_validButtonId )
// return false;
// return GUILayout.Button( content, style );
//}
void OnOptionSelected( System.Type type, string name, AmplifyShaderFunction function )
{
Disable();
}
public void Disable()
{
m_isActive = false;
}
public Vector2 StartDropPosition
{
get { return m_startDropPosition; }
}
public Vector3 CurrentPosition
{
get { return m_position; }
}
public Vector2 CurrentPosition2D
{
get { return new Vector2( m_position.x, m_position.y ); }
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 15597b146a1fc154abd63ac75cffb73f
timeCreated: 1481126953
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,573 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using System.Collections.Generic;
using UnityEditor;
using System;
using System.Text.RegularExpressions;
namespace AmplifyShaderEditor
{
public class PaletteFilterData
{
public bool Visible;
public bool HasCommunityData;
public List<ContextMenuItem> Contents;
public PaletteFilterData( bool visible )
{
Visible = visible;
Contents = new List<ContextMenuItem>();
}
}
public class PaletteParent : MenuParent
{
private const float ItemSize = 18;
public delegate void OnPaletteNodeCreate( System.Type type, string name, AmplifyShaderFunction function );
public event OnPaletteNodeCreate OnPaletteNodeCreateEvt;
private string m_searchFilterStr = "Search";
protected string m_searchFilterControl = "SHADERNAMETEXTFIELDCONTROLNAME";
protected bool m_focusOnSearch = false;
protected bool m_defaultCategoryVisible = false;
//protected List<ContextMenuItem> m_allItems;
protected List<ContextMenuItem> m_currentItems;
protected Dictionary<string, PaletteFilterData> m_currentCategories;
private bool m_forceUpdate = true;
protected string m_searchFilter = string.Empty;
private float m_searchLabelSize = -1;
private GUIStyle m_buttonStyle;
private GUIStyle m_foldoutStyle;
protected bool m_previousWindowIsFunction = false;
protected int m_validButtonId = 0;
protected int m_initialSeparatorAmount = 1;
private Vector2 m_currScrollBarDims = new Vector2( 1, 1 );
public PaletteParent( AmplifyShaderEditorWindow parentWindow, float x, float y, float width, float height, string name, MenuAnchor anchor = MenuAnchor.NONE, MenuAutoSize autoSize = MenuAutoSize.NONE ) : base( parentWindow, x, y, width, height, name, anchor, autoSize )
{
m_searchFilter = string.Empty;
m_currentCategories = new Dictionary<string, PaletteFilterData>();
//m_allItems = items;
m_currentItems = new List<ContextMenuItem>();
}
public virtual void OnEnterPressed( int index = 0 ) { }
public virtual void OnEscapePressed() { }
public void FireNodeCreateEvent( System.Type type, string name, AmplifyShaderFunction function )
{
OnPaletteNodeCreateEvt( type, name, function );
}
public override void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus )
{
base.Draw( parentPosition, mousePosition, mouseButtonId, hasKeyboadFocus );
if( m_previousWindowIsFunction != ParentWindow.IsShaderFunctionWindow )
{
m_forceUpdate = true;
}
m_previousWindowIsFunction = ParentWindow.IsShaderFunctionWindow;
List<ContextMenuItem> allItems = ParentWindow.ContextMenuInstance.MenuItems;
if( m_searchLabelSize < 0 )
{
m_searchLabelSize = GUI.skin.label.CalcSize( new GUIContent( m_searchFilterStr ) ).x;
}
if( m_foldoutStyle == null )
{
m_foldoutStyle = new GUIStyle( GUI.skin.GetStyle( "foldout" ) );
m_foldoutStyle.fontStyle = FontStyle.Bold;
}
if( m_buttonStyle == null )
{
m_buttonStyle = UIUtils.Label;
}
Event currenEvent = Event.current;
GUILayout.BeginArea( m_transformedArea, m_content, m_style );
{
for( int i = 0; i < m_initialSeparatorAmount; i++ )
{
EditorGUILayout.Separator();
}
if( currenEvent.type == EventType.KeyDown )
{
KeyCode key = currenEvent.keyCode;
//if ( key == KeyCode.Return || key == KeyCode.KeypadEnter )
// OnEnterPressed();
if( ( currenEvent.keyCode == KeyCode.KeypadEnter || currenEvent.keyCode == KeyCode.Return ) && currenEvent.type == EventType.KeyDown )
{
int index = m_currentItems.FindIndex( x => GUI.GetNameOfFocusedControl().Equals( x.ItemUIContent.text + m_resizable ) );
if( index > -1 )
OnEnterPressed( index );
else
OnEnterPressed();
}
if( key == KeyCode.Escape )
OnEscapePressed();
if( m_isMouseInside || hasKeyboadFocus )
{
if( key == ShortcutsManager.ScrollUpKey )
{
m_currentScrollPos.y -= 10;
if( m_currentScrollPos.y < 0 )
{
m_currentScrollPos.y = 0;
}
currenEvent.Use();
}
if( key == ShortcutsManager.ScrollDownKey )
{
m_currentScrollPos.y += 10;
currenEvent.Use();
}
}
}
float width = EditorGUIUtility.labelWidth;
EditorGUIUtility.labelWidth = m_searchLabelSize;
EditorGUI.BeginChangeCheck();
{
GUI.SetNextControlName( m_searchFilterControl + m_resizable );
m_searchFilter = EditorGUILayout.TextField( m_searchFilterStr, m_searchFilter );
if( m_focusOnSearch )
{
m_focusOnSearch = false;
EditorGUI.FocusTextInControl( m_searchFilterControl + m_resizable );
}
}
if( EditorGUI.EndChangeCheck() )
m_forceUpdate = true;
EditorGUIUtility.labelWidth = width;
bool usingSearchFilter = ( m_searchFilter.Length == 0 );
m_currScrollBarDims.x = m_transformedArea.width;
m_currScrollBarDims.y = m_transformedArea.height - 2 - 16 - 2 - 7 * m_initialSeparatorAmount - 2;
m_currentScrollPos = EditorGUILayout.BeginScrollView( m_currentScrollPos/*, GUILayout.Width( 242 ), GUILayout.Height( 250 - 2 - 16 - 2 - 7 - 2) */);
{
if( m_forceUpdate )
{
m_forceUpdate = false;
//m_currentItems.Clear();
m_currentCategories.Clear();
if( usingSearchFilter )
{
for( int i = 0; i < allItems.Count; i++ )
{
//m_currentItems.Add( allItems[ i ] );
if( !m_currentCategories.ContainsKey( allItems[ i ].Category ) )
{
m_currentCategories.Add( allItems[ i ].Category, new PaletteFilterData( m_defaultCategoryVisible ) );
//m_currentCategories[ allItems[ i ].Category ].HasCommunityData = allItems[ i ].NodeAttributes.FromCommunity || m_currentCategories[ allItems[ i ].Category ].HasCommunityData;
}
m_currentCategories[ allItems[ i ].Category ].Contents.Add( allItems[ i ] );
}
}
else
{
for( int i = 0; i < allItems.Count; i++ )
{
var searchList = m_searchFilter.Trim( ' ' ).ToLower().Split(' ');
int matchesFound = 0;
for( int k = 0; k < searchList.Length; k++ )
{
MatchCollection wordmatch = Regex.Matches( allItems[ i ].Tags, "\\b"+searchList[ k ] );
if( wordmatch.Count > 0 )
matchesFound++;
else
break;
}
if( searchList.Length == matchesFound )
{
//m_currentItems.Add( allItems[ i ] );
if( !m_currentCategories.ContainsKey( allItems[ i ].Category ) )
{
m_currentCategories.Add( allItems[ i ].Category, new PaletteFilterData( m_defaultCategoryVisible ) );
//m_currentCategories[ allItems[ i ].Category ].HasCommunityData = allItems[ i ].NodeAttributes.FromCommunity || m_currentCategories[ allItems[ i ].Category ].HasCommunityData;
}
m_currentCategories[ allItems[ i ].Category ].Contents.Add( allItems[ i ] );
}
}
}
var categoryEnumerator = m_currentCategories.GetEnumerator();
while( categoryEnumerator.MoveNext() )
{
categoryEnumerator.Current.Value.Contents.Sort( ( x, y ) => x.CompareTo( y, usingSearchFilter ) );
}
//sort current list respecting categories
m_currentItems.Clear();
foreach( var item in m_currentCategories )
{
for( int i = 0; i < item.Value.Contents.Count; i++ )
{
m_currentItems.Add( item.Value.Contents[ i ] );
}
}
}
string watching = string.Empty;
// unselect the main search field so it can focus list elements next
if( ( currenEvent.keyCode == KeyCode.DownArrow || currenEvent.keyCode == KeyCode.UpArrow ) && m_searchFilter.Length > 0 )
{
if( GUI.GetNameOfFocusedControl().Equals( m_searchFilterControl + m_resizable ) )
{
EditorGUI.FocusTextInControl( null );
}
}
if( currenEvent.keyCode == KeyCode.DownArrow && currenEvent.type == EventType.KeyDown )
{
currenEvent.Use();
int nextIndex = m_currentItems.FindIndex( x => GUI.GetNameOfFocusedControl().Equals( x.ItemUIContent.text + m_resizable ) ) + 1;
if( nextIndex == m_currentItems.Count )
nextIndex = 0;
watching = m_currentItems[ nextIndex ].ItemUIContent.text + m_resizable;
GUI.FocusControl( watching );
}
if( currenEvent.keyCode == KeyCode.UpArrow && currenEvent.type == EventType.KeyDown )
{
currenEvent.Use();
int nextIndex = m_currentItems.FindIndex( x => GUI.GetNameOfFocusedControl().Equals( x.ItemUIContent.text + m_resizable ) ) - 1;
if( nextIndex < 0 )
nextIndex = m_currentItems.Count - 1;
watching = m_currentItems[ nextIndex ].ItemUIContent.text + m_resizable;
GUI.FocusControl( watching );
}
if( currenEvent.keyCode == KeyCode.Tab )
{
ContextMenuItem item = m_currentItems.Find( x => GUI.GetNameOfFocusedControl().Equals( x.ItemUIContent.text + m_resizable ) );
if( item != null )
{
watching = item.ItemUIContent.text + m_resizable;
}
}
float currPos = 0;
var enumerator = m_currentCategories.GetEnumerator();
float cache = EditorGUIUtility.labelWidth;
while( enumerator.MoveNext() )
{
var current = enumerator.Current;
bool visible = GUILayout.Toggle( current.Value.Visible, current.Key, m_foldoutStyle );
if( m_validButtonId == mouseButtonId )
{
current.Value.Visible = visible;
}
currPos += ItemSize;
if( m_searchFilter.Length > 0 || current.Value.Visible )
{
for( int i = 0; i < current.Value.Contents.Count; i++ )
{
//if ( !IsItemVisible( currPos ) )
//{
// // Invisible
// GUILayout.Space( ItemSize );
//}
//else
{
currPos += ItemSize;
// Visible
EditorGUILayout.BeginHorizontal();
GUILayout.Space( 16 );
//if ( m_isMouseInside )
//{
// //GUI.SetNextControlName( current.Value.Contents[ i ].ItemUIContent.text );
// if ( CheckButton( current.Value.Contents[ i ].ItemUIContent, m_buttonStyle, mouseButtonId ) )
// {
// int controlID = GUIUtility.GetControlID( FocusType.Passive );
// GUIUtility.hotControl = controlID;
// OnPaletteNodeCreateEvt( current.Value.Contents[ i ].NodeType, current.Value.Contents[ i ].Name, current.Value.Contents[ i ].Function );
// }
//}
//else
{
Rect thisRect = EditorGUILayout.GetControlRect( false, 16f, EditorStyles.label );
//if ( m_resizable )
{
if( GUI.RepeatButton( thisRect, string.Empty, EditorStyles.label ) )
{
int controlID = GUIUtility.GetControlID( FocusType.Passive );
GUIUtility.hotControl = controlID;
OnPaletteNodeCreateEvt( current.Value.Contents[ i ].NodeType, current.Value.Contents[ i ].Name, current.Value.Contents[ i ].Function );
//unfocus to make it focus the next text field correctly
GUI.FocusControl( null );
}
}
GUI.SetNextControlName( current.Value.Contents[ i ].ItemUIContent.text + m_resizable );
//EditorGUI.SelectableLabel( thisRect, current.Value.Contents[ i ].ItemUIContent.text, EditorStyles.label );
//float cache = EditorGUIUtility.labelWidth;
EditorGUIUtility.labelWidth = thisRect.width;
EditorGUI.Toggle( thisRect, current.Value.Contents[ i ].ItemUIContent.text, false, EditorStyles.label );
EditorGUIUtility.labelWidth = cache;
if( watching == current.Value.Contents[ i ].ItemUIContent.text + m_resizable )
{
bool boundBottom = currPos - m_currentScrollPos.y > m_currScrollBarDims.y;
bool boundTop = currPos - m_currentScrollPos.y - 4 <= 0;
if( boundBottom )
m_currentScrollPos.y = currPos - m_currScrollBarDims.y + 2;
else if( boundTop )
m_currentScrollPos.y = currPos - 18;
//else if ( boundBottom && !downDirection )
// m_currentScrollPos.y = currPos - m_currScrollBarDims.y + 2;
//else if ( boundTop && downDirection )
// m_currentScrollPos.y = currPos - 18;
}
}
EditorGUILayout.EndHorizontal();
}
//currPos += ItemSize;
}
}
}
EditorGUIUtility.labelWidth = cache;
}
EditorGUILayout.EndScrollView();
}
GUILayout.EndArea();
}
public void CheckCommunityNodes()
{
var enumerator = m_currentCategories.GetEnumerator();
while( enumerator.MoveNext() )
{
var current = enumerator.Current;
current.Value.HasCommunityData = false;
int count = current.Value.Contents.Count;
for( int i = 0; i < count; i++ )
{
if( current.Value.Contents[ i ].NodeAttributes.FromCommunity )
{
current.Value.HasCommunityData = true;
break;
}
}
}
}
public void DumpAvailableNodes( bool fromCommunity, string pathname )
{
string noTOCHeader = "__NOTOC__\n";
string nodesHeader = "== Available Node Categories ==\n";
string InitialCategoriesFormat = "[[#{0}|{0}]]<br>\n";
string InitialCategories = string.Empty;
string CurrentCategoryFormat = "\n== {0} ==\n\n";
//string NodesFootFormat = "[[Unity Products:Amplify Shader Editor/{0} | Learn More]] -\n[[#Top|Back to Categories]]\n";
string NodesFootFormatSep = "[[#Top|Back to Top]]\n----\n";
string OverallFoot = "[[Category:Nodes]]";
string NodeInfoBeginFormat = "<div class=\"nodecard\">\n";
string nodeInfoBodyFormat = "{{| id=\"{2}\" class=\"wikitable\" |\n" +
"|- \n" +
"| <div>[[Unity Products:Amplify Shader Editor/{1}|<img class=\"responsive-img\" src=\"http://amplify.pt/Nodes/{0}.jpg\">]]</div>\n" +
"<div>\n" +
"{{| style=\"width: 100%; height: 150px;\"\n" +
"|-\n" +
"| [[Unity Products:Amplify Shader Editor/{1}|'''{2}''']]\n" +
"|- style=\"vertical-align:top; height: 100%;\" |\n" +
"|<p class=\"cardtext\">{3}</p>\n" +
"|- style=\"text-align:right;\" |\n" +
"|{4}[[Unity Products:Amplify Shader Editor/{1} | Learn More]]\n" +
"|}}</div>\n" +
"|}}\n";
string NodeInfoEndFormat = "</div>\n";
//string NodeInfoBeginFormat = "<span style=\"color:#c00;display:block;\">This page is under construction!</span>\n\n";
//string nodeInfoBodyFormat = "<img style=\"float:left; margin-right:10px;\" src=\"http://amplify.pt/Nodes/{0}.jpg\">\n[[Unity Products:Amplify Shader Editor/{1}|'''{2}''']]\n\n{3}";
//string NodeInfoEndFormat = "\n\n[[Unity_Products:Amplify_Shader_Editor/Nodes | Back to Node List ]]\n[[Category:Nodes]][[Category:{0}]]\n\n\n";
//string NodeInfoBeginFormat = "{| cellpadding=\"10\"\n";
//string nodeInfoBodyFormat = "|- style=\"vertical-align:top;\"\n| http://amplify.pt/Nodes/{0}.jpg\n| [[Unity Products:Amplify Shader Editor/{1} | <span style=\"font-size: 120%;\"><span id=\"{2}\"></span>'''{2}'''<span> ]] <br> {3}\n";
//string NodeInfoEndFormat = "|}\n";
string nodesInfo = string.Empty;
BuildFullList( true );
CheckCommunityNodes();
var enumerator = m_currentCategories.GetEnumerator();
while( enumerator.MoveNext() )
{
var current = enumerator.Current;
if( fromCommunity && current.Value.HasCommunityData || !fromCommunity )
{
InitialCategories += string.Format( InitialCategoriesFormat, current.Key );
nodesInfo += string.Format( CurrentCategoryFormat, current.Key );
int count = current.Value.Contents.Count;
for( int i = 0; i < count; i++ )
{
if( ( fromCommunity && current.Value.Contents[ i ].NodeAttributes.FromCommunity )
|| !fromCommunity
//|| ( !fromCommunity && !current.Value.Contents[ i ].NodeAttributes.FromCommunity )
)
{
string nodeFullName = current.Value.Contents[ i ].Name;
string pictureFilename = UIUtils.ReplaceInvalidStrings( nodeFullName );
string pageFilename = UIUtils.RemoveWikiInvalidCharacters( pictureFilename );
pictureFilename = UIUtils.RemoveInvalidCharacters( pictureFilename );
string nodeDescription = current.Value.Contents[ i ].ItemUIContent.tooltip;
string communityText = string.Empty;
if( current.Value.Contents[ i ].NodeAttributes.FromCommunity )
communityText = "<small class=\"cardauthor\">( originally by "+ current.Value.Contents[ i ].NodeAttributes.Community + " )</small> ";
string nodeInfoBody = string.Format( nodeInfoBodyFormat, pictureFilename, pageFilename, nodeFullName, nodeDescription, communityText );
//string nodeInfoFoot = string.Format( NodesFootFormat, pageFilename );
nodesInfo += ( NodeInfoBeginFormat + nodeInfoBody + NodeInfoEndFormat );
//nodesInfo += ( NodeInfoBeginFormat + nodeInfoBody + string.Format( NodeInfoEndFormat, current.Key ) );
//if ( i != ( count - 1 ) )
//{
// nodesInfo += NodesFootFormatSep;
//}
}
}
nodesInfo += NodesFootFormatSep;
}
}
string finalText = noTOCHeader + nodesHeader + InitialCategories + nodesInfo + OverallFoot;
if( !System.IO.Directory.Exists( pathname ) )
{
System.IO.Directory.CreateDirectory( pathname );
}
// Save file
string nodesPathname = pathname + ( fromCommunity ? "AvailableNodesFromCommunity.txt" : "AvailableNodes.txt" );
Debug.Log( " Creating nodes file at " + nodesPathname );
IOUtils.SaveTextfileToDisk( finalText, nodesPathname, false );
BuildFullList( false );
}
public virtual bool CheckButton( GUIContent content, GUIStyle style, int buttonId )
{
if( buttonId != m_validButtonId )
{
GUILayout.Label( content, style );
return false;
}
return GUILayout.RepeatButton( content, style );
}
public void FillList( ref List<ContextMenuItem> list, bool forceAllItems )
{
List<ContextMenuItem> allList = forceAllItems ? ParentWindow.ContextMenuInstance.ItemFunctions : ParentWindow.ContextMenuInstance.MenuItems;
list.Clear();
int count = allList.Count;
for( int i = 0; i < count; i++ )
{
list.Add( allList[ i ] );
}
}
public Dictionary<string, PaletteFilterData> BuildFullList( bool forceAllNodes = false )
{
//Only need to build if search filter is active and list is set according to it
if( m_searchFilter.Length > 0 || !m_isActive || m_currentCategories.Count == 0 )
{
m_currentItems.Clear();
m_currentCategories.Clear();
List<ContextMenuItem> allItems = forceAllNodes ? ParentWindow.ContextMenuInstance.ItemFunctions : ParentWindow.ContextMenuInstance.MenuItems;
for( int i = 0; i < allItems.Count; i++ )
{
if( allItems[ i ].Name.IndexOf( m_searchFilter, StringComparison.InvariantCultureIgnoreCase ) >= 0 ||
allItems[ i ].Category.IndexOf( m_searchFilter, StringComparison.InvariantCultureIgnoreCase ) >= 0
)
{
m_currentItems.Add( allItems[ i ] );
if( !m_currentCategories.ContainsKey( allItems[ i ].Category ) )
{
m_currentCategories.Add( allItems[ i ].Category, new PaletteFilterData( m_defaultCategoryVisible ) );
//m_currentCategories[ allItems[ i ].Category ].HasCommunityData = allItems[ i ].NodeAttributes.FromCommunity || m_currentCategories[ allItems[ i ].Category ].HasCommunityData;
}
m_currentCategories[ allItems[ i ].Category ].Contents.Add( allItems[ i ] );
}
}
var categoryEnumerator = m_currentCategories.GetEnumerator();
while( categoryEnumerator.MoveNext() )
{
categoryEnumerator.Current.Value.Contents.Sort( ( x, y ) => x.CompareTo( y, false ) );
}
//mark to force update and take search filter into account
m_forceUpdate = true;
}
return m_currentCategories;
}
private bool IsItemVisible( float currPos )
{
if( ( currPos < m_currentScrollPos.y && ( currPos + ItemSize ) < m_currentScrollPos.y ) ||
( currPos > ( m_currentScrollPos.y + m_currScrollBarDims.y ) &&
( currPos + ItemSize ) > ( m_currentScrollPos.y + m_currScrollBarDims.y ) ) )
{
return false;
}
return true;
}
public override void Destroy()
{
base.Destroy();
//m_allItems = null;
m_currentItems.Clear();
m_currentItems = null;
m_currentCategories.Clear();
m_currentCategories = null;
OnPaletteNodeCreateEvt = null;
m_buttonStyle = null;
m_foldoutStyle = null;
}
//public void Clear() {
// m_allItems.Clear();
// m_allItems = new List<ContextMenuItem>();
//}
public bool ForceUpdate { get { return m_forceUpdate; } set { m_forceUpdate = value; } }
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: df4c2f840dca60a4cb118325ce2febfa
timeCreated: 1481126959
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,73 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
namespace AmplifyShaderEditor
{
public class PalettePopUp
{
private const int DeltaX = 5;
private Rect m_areaSettings;
private Vector2 m_mouseDeltaPos = new Vector2( 10, -10 );
private bool m_isActive = false;
private GUIContent m_content;
private GUIStyle m_style;
private GUIStyle m_fontStyle;
private GUIContent m_labelContent;
public PalettePopUp()
{
m_content = new GUIContent( GUIContent.none );
m_areaSettings = new Rect( 0, 0, 100, 30 );
m_labelContent = new GUIContent( "Test Label" );
}
public void Activate( string label )
{
m_labelContent.text = label;
m_areaSettings.width = -1;
m_isActive = true;
}
public void Deactivate()
{
m_isActive = false;
}
public void Draw( Vector2 mousePos )
{
if ( m_style == null )
{
m_style = UIUtils.TextArea;
}
if ( m_fontStyle == null )
{
m_fontStyle = new GUIStyle( UIUtils.Label );
m_fontStyle.fontSize = 15;
}
if ( m_areaSettings.width < 0 )
{
m_areaSettings.width = m_fontStyle.CalcSize( m_labelContent ).x + 2 * DeltaX;
}
m_areaSettings.position = mousePos + m_mouseDeltaPos;
GUI.Label( m_areaSettings, m_content, m_style );
m_areaSettings.position += new Vector2( DeltaX,DeltaX);
GUI.Label( m_areaSettings, m_labelContent, m_fontStyle );
}
public void Destroy()
{
m_content = null;
m_style = null;
}
public bool IsActive
{
get { return m_isActive; }
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: bc4f137f15efe1d42b7bcbf984ec1545
timeCreated: 1481126958
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,33 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System.Collections.Generic;
using UnityEngine;
namespace AmplifyShaderEditor
{
public sealed class PaletteWindow : PaletteParent
{
public PaletteWindow( AmplifyShaderEditorWindow parentWindow ) : base( parentWindow, 0, 0, 250, 0, string.Empty, MenuAnchor.TOP_RIGHT, MenuAutoSize.MATCH_VERTICAL )
{
m_searchFilterControl += "PALETTEWINDOW";
m_initialSeparatorAmount = 4;
SetMinimizedArea( -225, 0, 260, 0 );
}
public override void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus )
{
if ( m_isMaximized )
{
base.Draw( parentPosition, mousePosition, mouseButtonId, hasKeyboadFocus );
}
else
{
InitDraw( parentPosition, mousePosition, mouseButtonId );
}
PostDraw();
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 63408b264ef8cb346a5ce9e559a5ed22
timeCreated: 1481126956
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,469 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEditor;
using UnityEngine;
using System.Collections.Generic;
namespace AmplifyShaderEditor
{
class NodeDescriptionInfo
{
public bool FoldoutValue;
public string Category;
public string[,] Contents;
}
public sealed class PortLegendInfo : EditorWindow
{
private const string NoASEWindowWarning = "Please Open the ASE to get access to shortcut info";
private const float PixelSeparator = 5;
private const string EditorShortcutsTitle = "Editor Shortcuts";
private const string MenuShortcutsTitle = "Menu Shortcuts";
private const string NodesShortcutsTitle = "Nodes Shortcuts";
private const string PortShortcutsTitle = "Port Shortcuts";
private const string PortLegendTitle = "Port Legend";
private const string NodesDescTitle = "Node Info";
private const string CompatibleAssetsTitle = "Compatible Assets";
private const string KeyboardUsageTemplate = "[{0}] - {1}";
private const string m_lockedStr = "Locked Port";
private const float WindowSizeX = 350;
private const float WindowSizeY = 300;
private const float WindowPosX = 5;
private const float WindowPosY = 5;
private int TitleLabelWidth = 150;
private Rect m_availableArea;
private bool m_portAreaFoldout = true;
private bool m_editorShortcutAreaFoldout = true;
private bool m_menuShortcutAreaFoldout = true;
private bool m_nodesShortcutAreaFoldout = true;
private bool m_nodesDescriptionAreaFoldout = true;
private bool m_compatibleAssetsFoldout = true;
private Vector2 m_currentScrollPos;
private GUIStyle m_portStyle;
private GUIStyle m_labelStyleBold;
private GUIStyle m_labelStyle;
private GUIStyle m_nodeInfoLabelStyleBold;
private GUIStyle m_nodeInfoLabelStyle;
private GUIStyle m_nodeInfoFoldoutStyle;
private GUIContent m_content = new GUIContent( "Helper", "Shows helper info for ASE users" );
private bool m_init = true;
private List<ShortcutItem> m_editorShortcuts = null;
private List<ShortcutItem> m_nodesShortcuts = null;
private List<NodeDescriptionInfo> m_nodeDescriptionsInfo = null;
private List<string[]> m_compatibleAssetsInfo = null;
public static PortLegendInfo OpenWindow()
{
PortLegendInfo currentWindow = ( PortLegendInfo ) PortLegendInfo.GetWindow( typeof( PortLegendInfo ), false );
currentWindow.minSize = new Vector2( WindowSizeX, WindowSizeY );
currentWindow.maxSize = new Vector2( WindowSizeX * 2, 2 * WindowSizeY ); ;
currentWindow.wantsMouseMove = true;
return currentWindow;
}
public void Init()
{
m_init = false;
wantsMouseMove = false;
titleContent = m_content;
m_portStyle = new GUIStyle( UIUtils.GetCustomStyle( CustomStyle.PortEmptyIcon ) );
m_portStyle.alignment = TextAnchor.MiddleLeft;
m_portStyle.imagePosition = ImagePosition.ImageOnly;
m_portStyle.margin = new RectOffset( 5, 0, 5, 0 );
m_labelStyleBold = new GUIStyle( UIUtils.InputPortLabel );
m_labelStyleBold.fontStyle = FontStyle.Bold;
m_labelStyleBold.fontSize = ( int ) ( Constants.TextFieldFontSize );
m_labelStyle = new GUIStyle( UIUtils.InputPortLabel );
m_labelStyle.clipping = TextClipping.Overflow;
m_labelStyle.imagePosition = ImagePosition.TextOnly;
m_labelStyle.contentOffset = new Vector2( -10, 0 );
m_labelStyle.fontSize = ( int ) ( Constants.TextFieldFontSize );
m_nodeInfoLabelStyleBold = new GUIStyle( UIUtils.InputPortLabel );
m_nodeInfoLabelStyleBold.fontStyle = FontStyle.Bold;
m_nodeInfoLabelStyleBold.fontSize = ( int ) ( Constants.TextFieldFontSize );
m_nodeInfoLabelStyle = new GUIStyle( UIUtils.InputPortLabel );
m_nodeInfoLabelStyle.clipping = TextClipping.Clip;
m_nodeInfoLabelStyle.imagePosition = ImagePosition.TextOnly;
m_nodeInfoLabelStyle.fontSize = ( int ) ( Constants.TextFieldFontSize );
m_nodeInfoFoldoutStyle = new GUIStyle( ( GUIStyle ) "foldout" );
m_nodeInfoFoldoutStyle.fontStyle = FontStyle.Bold;
if ( !EditorGUIUtility.isProSkin )
{
m_labelStyleBold.normal.textColor = m_labelStyle.normal.textColor = Color.black;
m_nodeInfoLabelStyleBold.normal.textColor = m_labelStyle.normal.textColor = Color.black;
m_nodeInfoLabelStyle.normal.textColor = m_labelStyle.normal.textColor = Color.black;
}
m_availableArea = new Rect( WindowPosX, WindowPosY, WindowSizeX - 2 * WindowPosX, WindowSizeY - 2 * WindowPosY );
}
void DrawPort( WirePortDataType type )
{
EditorGUILayout.BeginHorizontal();
{
GUI.color = UIUtils.GetColorForDataType( type, false );
GUILayout.Box( string.Empty, m_portStyle, GUILayout.Width( UIUtils.PortsSize.x ), GUILayout.Height( UIUtils.PortsSize.y ) );
GUI.color = Color.white;
EditorGUILayout.LabelField( UIUtils.GetNameForDataType( type ), m_labelStyle );
}
EditorGUILayout.EndHorizontal();
EditorGUILayout.Separator();
}
void OnGUI()
{
if ( !UIUtils.Initialized || UIUtils.CurrentWindow == null )
{
EditorGUILayout.LabelField( NoASEWindowWarning );
return;
}
if ( m_init )
{
Init();
}
TitleLabelWidth = (int)(this.position.width * 0.42f);
KeyCode key = Event.current.keyCode;
if ( key == ShortcutsManager.ScrollUpKey )
{
m_currentScrollPos.y -= 10;
if ( m_currentScrollPos.y < 0 )
{
m_currentScrollPos.y = 0;
}
Event.current.Use();
}
if ( key == ShortcutsManager.ScrollDownKey )
{
m_currentScrollPos.y += 10;
Event.current.Use();
}
if ( Event.current.type == EventType.MouseDrag && Event.current.button > 0 )
{
m_currentScrollPos.x += Constants.MenuDragSpeed * Event.current.delta.x;
if ( m_currentScrollPos.x < 0 )
{
m_currentScrollPos.x = 0;
}
m_currentScrollPos.y += Constants.MenuDragSpeed * Event.current.delta.y;
if ( m_currentScrollPos.y < 0 )
{
m_currentScrollPos.y = 0;
}
}
m_availableArea = new Rect( WindowPosX, WindowPosY, position.width - 2 * WindowPosX, position.height - 2 * WindowPosY );
GUILayout.BeginArea( m_availableArea );
{
if ( GUILayout.Button( "Wiki Page" ) )
{
Application.OpenURL( Constants.HelpURL );
}
m_currentScrollPos = GUILayout.BeginScrollView( m_currentScrollPos );
{
EditorGUILayout.BeginVertical();
{
NodeUtils.DrawPropertyGroup( ref m_portAreaFoldout, PortLegendTitle, DrawPortInfo );
float currLabelWidth = EditorGUIUtility.labelWidth;
EditorGUIUtility.labelWidth = 1;
NodeUtils.DrawPropertyGroup( ref m_editorShortcutAreaFoldout, EditorShortcutsTitle, DrawEditorShortcuts );
NodeUtils.DrawPropertyGroup( ref m_menuShortcutAreaFoldout, MenuShortcutsTitle, DrawMenuShortcuts );
NodeUtils.DrawPropertyGroup( ref m_nodesShortcutAreaFoldout, NodesShortcutsTitle, DrawNodesShortcuts );
NodeUtils.DrawPropertyGroup( ref m_compatibleAssetsFoldout, CompatibleAssetsTitle, DrawCompatibleAssets );
NodeUtils.DrawPropertyGroup( ref m_nodesDescriptionAreaFoldout, NodesDescTitle, DrawNodeDescriptions );
EditorGUIUtility.labelWidth = currLabelWidth;
}
EditorGUILayout.EndVertical();
}
GUILayout.EndScrollView();
}
GUILayout.EndArea();
}
void DrawPortInfo()
{
Color originalColor = GUI.color;
DrawPort( WirePortDataType.OBJECT );
DrawPort( WirePortDataType.INT );
DrawPort( WirePortDataType.FLOAT );
DrawPort( WirePortDataType.FLOAT2 );
DrawPort( WirePortDataType.FLOAT3 );
DrawPort( WirePortDataType.FLOAT4 );
DrawPort( WirePortDataType.COLOR );
DrawPort( WirePortDataType.SAMPLER2D );
DrawPort( WirePortDataType.FLOAT3x3 );
DrawPort( WirePortDataType.FLOAT4x4 );
EditorGUILayout.BeginHorizontal();
{
GUI.color = Constants.LockedPortColor;
GUILayout.Box( string.Empty, m_portStyle, GUILayout.Width( UIUtils.PortsSize.x ), GUILayout.Height( UIUtils.PortsSize.y ) );
GUI.color = Color.white;
EditorGUILayout.LabelField( m_lockedStr, m_labelStyle );
}
EditorGUILayout.EndHorizontal();
GUI.color = originalColor;
}
public void DrawEditorShortcuts()
{
AmplifyShaderEditorWindow window = UIUtils.CurrentWindow;
if ( window != null )
{
if ( m_editorShortcuts == null )
{
m_editorShortcuts = window.ShortcutManagerInstance.AvailableEditorShortcutsList;
}
EditorGUI.indentLevel--;
int count = m_editorShortcuts.Count;
for ( int i = 0; i < count; i++ )
{
DrawItem( m_editorShortcuts[ i ].Name, m_editorShortcuts[ i ].Description );
}
DrawItem( "Q", "Alternative Pan modifier" );
DrawItem( "Ctrl + F", "Find nodes" );
DrawItem( "LMB Drag", "Box selection" );
DrawItem( "MMB/RMB Drag", "Camera pan" );
DrawItem( "Alt + MMB/RMB Drag", "Zoom graph" );
DrawItem( "Shift/Ctrl + Node Select", "Add/Remove from selection" );
DrawItem( "Shift + Node Drag", "Node move with offset" );
DrawItem( "Ctrl + Node Drag", "Node move with snap" );
DrawItem( "MMB/RMB + Drag Panel", "Scroll panel" );
DrawItem( "Alt + LMB Drag", "Additive box selection" );
DrawItem( "Alt + Shift + Drag", "Subtractive box selection" );
DrawItem( "Alt + Node Drag", "Auto-(Dis)Connect node on existing wire connection" );
EditorGUI.indentLevel++;
}
else
{
EditorGUILayout.LabelField( NoASEWindowWarning );
}
}
public void DrawMenuShortcuts()
{
AmplifyShaderEditorWindow window = UIUtils.CurrentWindow;
if ( window != null )
{
EditorGUI.indentLevel--;
DrawItem( ShortcutsManager.ScrollUpKey.ToString(), "Scroll Up Menu" );
DrawItem( ShortcutsManager.ScrollDownKey.ToString(), "Scroll Down Menu" );
DrawItem( "RMB Drag", "Scroll Menu" );
EditorGUI.indentLevel++;
}
else
{
EditorGUILayout.LabelField( NoASEWindowWarning );
}
}
void DrawItem( string name, string description )
{
GUILayout.BeginHorizontal();
GUILayout.Label( name, m_labelStyleBold , GUILayout.Width( TitleLabelWidth ) );
GUILayout.Label( description, m_labelStyle );
GUILayout.EndHorizontal();
GUILayout.Space( PixelSeparator );
}
public void DrawNodesShortcuts()
{
AmplifyShaderEditorWindow window = UIUtils.CurrentWindow;
if ( window != null )
{
if ( m_nodesShortcuts == null || m_nodesShortcuts.Count == 0 )
{
m_nodesShortcuts = window.ShortcutManagerInstance.AvailableNodesShortcutsList;
}
EditorGUI.indentLevel--;
int count = m_nodesShortcuts.Count;
for ( int i = 0; i < count; i++ )
{
DrawItem( m_nodesShortcuts[ i ].Name, m_nodesShortcuts[ i ].Description );
}
EditorGUI.indentLevel++;
}
else
{
EditorGUILayout.LabelField( NoASEWindowWarning );
}
}
string CreateCompatibilityString( string source )
{
string[] split = source.Split( '.' );
if ( split != null && split.Length > 1 )
{
return split[ 1 ];
}
else
{
return source;
}
}
public void DrawCompatibleAssets()
{
AmplifyShaderEditorWindow window = UIUtils.CurrentWindow;
if ( window != null )
{
if ( m_compatibleAssetsInfo == null )
{
m_compatibleAssetsInfo = new List<string[]>();
List<ContextMenuItem> items = window.ContextMenuInstance.MenuItems;
int count = items.Count;
for ( int i = 0; i < count; i++ )
{
if ( items[ i ].NodeAttributes != null && items[ i ].NodeAttributes.CastType != null )
{
string types = string.Empty;
if ( items[ i ].NodeAttributes.CastType.Length > 1 )
{
for ( int j = 0; j < items[ i ].NodeAttributes.CastType.Length; j++ )
{
types += CreateCompatibilityString( items[ i ].NodeAttributes.CastType[ j ].ToString() );
if ( j < items[ i ].NodeAttributes.CastType.Length - 1 )
{
types += ", ";
}
}
}
else
{
types = CreateCompatibilityString( items[ i ].NodeAttributes.CastType[ 0 ].ToString() );
}
m_compatibleAssetsInfo.Add( new string[] { items[ i ].NodeAttributes.Name + ": ", types } );
}
}
}
EditorGUI.indentLevel--;
int nodeCount = m_compatibleAssetsInfo.Count;
for ( int j = 0; j < nodeCount; j++ )
{
DrawItem( m_compatibleAssetsInfo[ j ][ 0 ], m_compatibleAssetsInfo[ j ][ 1 ] );
}
EditorGUI.indentLevel++;
}
else
{
EditorGUILayout.LabelField( NoASEWindowWarning );
}
}
public void DrawNodeDescriptions()
{
AmplifyShaderEditorWindow window = UIUtils.CurrentWindow;
if ( window != null )
{
if ( m_nodeDescriptionsInfo == null )
{
//fetch node info
m_nodeDescriptionsInfo = new List<NodeDescriptionInfo>();
Dictionary<string, PaletteFilterData> nodeData = window.CurrentPaletteWindow.BuildFullList();
var enumerator = nodeData.GetEnumerator();
while ( enumerator.MoveNext() )
{
List<ContextMenuItem> nodes = enumerator.Current.Value.Contents;
int count = nodes.Count;
NodeDescriptionInfo currInfo = new NodeDescriptionInfo();
currInfo.Contents = new string[ count, 2 ];
currInfo.Category = enumerator.Current.Key;
for ( int i = 0; i < count; i++ )
{
currInfo.Contents[ i, 0 ] = nodes[ i ].Name + ':';
currInfo.Contents[ i, 1 ] = nodes[ i ].Description;
}
m_nodeDescriptionsInfo.Add( currInfo );
}
}
//draw
{
GUILayout.Space( 5 );
int count = m_nodeDescriptionsInfo.Count;
EditorGUI.indentLevel--;
for ( int i = 0; i < count; i++ )
{
m_nodeDescriptionsInfo[ i ].FoldoutValue = EditorGUILayout.Foldout( m_nodeDescriptionsInfo[ i ].FoldoutValue, m_nodeDescriptionsInfo[ i ].Category, m_nodeInfoFoldoutStyle );
if ( m_nodeDescriptionsInfo[ i ].FoldoutValue )
{
EditorGUI.indentLevel++;
int nodeCount = m_nodeDescriptionsInfo[ i ].Contents.GetLength( 0 );
for ( int j = 0; j < nodeCount; j++ )
{
GUILayout.Label( m_nodeDescriptionsInfo[ i ].Contents[ j, 0 ], m_nodeInfoLabelStyleBold );
GUILayout.Label( m_nodeDescriptionsInfo[ i ].Contents[ j, 1 ], m_nodeInfoLabelStyle );
GUILayout.Space( PixelSeparator );
}
EditorGUI.indentLevel--;
}
GUILayout.Space( PixelSeparator );
}
EditorGUI.indentLevel++;
}
}
else
{
EditorGUILayout.LabelField( NoASEWindowWarning );
}
}
private void OnDestroy()
{
m_nodesShortcuts = null;
m_editorShortcuts = null;
m_portStyle = null;
m_labelStyle = null;
m_labelStyleBold = null;
m_nodeInfoLabelStyle = null;
m_nodeInfoLabelStyleBold = null;
m_nodeInfoFoldoutStyle = null;
m_init = false;
if ( m_nodeDescriptionsInfo != null )
{
m_nodeDescriptionsInfo.Clear();
m_nodeDescriptionsInfo = null;
}
if( m_compatibleAssetsInfo != null )
{
m_compatibleAssetsInfo.Clear();
m_compatibleAssetsInfo = null;
}
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 20dad8f4196f0e643a9c56d1202e74dc
timeCreated: 1481126954
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,40 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
namespace AmplifyShaderEditor
{
// Catch when scene is saved (Ctr+S) and also save ase shader
public class SceneSaveCallback : UnityEditor.AssetModificationProcessor
{
private const string UnityStr = ".unity";
static string[] OnWillSaveAssets( string[] paths )
{
if( !Preferences.User.UpdateOnSceneSave )
return paths;
bool canSave = false;
if ( paths.Length == 0 )
{
canSave = true;
}
else
{
for ( int i = 0; i < paths.Length; i++ )
{
// Only save shader when saving scenes
if ( !string.IsNullOrEmpty( paths[ i ] ) && paths[ i ].Contains( UnityStr ) )
{
canSave = true;
break;
}
}
}
if ( canSave && UIUtils.CurrentWindow )
UIUtils.CurrentWindow.SetCtrlSCallback( false );
return paths;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 708e90c98affcb04aa2fcfedf4329a7c
timeCreated: 1481126956
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,192 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
namespace AmplifyShaderEditor
{
public sealed class ShaderEditorModeWindow : MenuParent
{
private static readonly Color OverallColorOn = new Color( 1f, 1f, 1f, 0.9f );
private static readonly Color OverallColorOff = new Color( 1f, 1f, 1f, 0.3f );
private static readonly Color FontColorOff = new Color( 1f, 1f, 1f, 0.4f );
private const float DeltaY = 15;
private const float DeltaX = 10;
private const float CollSizeX = 180;
private const float CollSizeY = 70;
//private static string MatFormat = "<size=20>MATERIAL</size>\n{0}";
//private static string ShaderFormat = "<size=20>SHADER</size>\n{0}";
//private const string CurrMatStr = "MATERIAL";
//private const string CurrShaderStr = "SHADER";
private const string NoMaterialStr = "No Material";
private const string NoShaderStr = "No Shader";
private bool m_init = true;
private string m_previousShaderName = string.Empty;
private string m_previousMaterialName = string.Empty;
private string m_previousShaderFunctionName = string.Empty;
private Vector2 m_auxVector2;
private GUIContent m_leftAuxContent = new GUIContent();
private GUIContent m_rightAuxContent = new GUIContent();
private GUIStyle m_leftButtonStyle = null;
private GUIStyle m_rightButtonStyle = null;
private Rect m_leftButtonRect;
private Rect m_rightButtonRect;
public ShaderEditorModeWindow( AmplifyShaderEditorWindow parentWindow ) : base( parentWindow, 0, 0, 0, 0, "ShaderEditorModeWindow", MenuAnchor.BOTTOM_CENTER, MenuAutoSize.NONE ) { }
public void ConfigStyle( GUIStyle style )
{
style.normal.textColor = FontColorOff;
style.hover.textColor = FontColorOff;
style.active.textColor = FontColorOff;
style.focused.textColor = FontColorOff;
style.onNormal.textColor = FontColorOff;
style.onHover.textColor = FontColorOff;
style.onActive.textColor = FontColorOff;
style.onFocused.textColor = FontColorOff;
}
public void Draw( Rect graphArea, Vector2 mousePos, Shader currentShader, Material currentMaterial, float usableArea, float leftPos, float rightPos /*, bool showLastSelection*/ )
{
EventType currentEventType = Event.current.type;
if( !( currentEventType == EventType.Repaint || currentEventType == EventType.MouseDown || currentEventType == EventType.MouseMove ) )
return;
if ( m_init )
{
m_init = false;
GUIStyle shaderModeTitle = UIUtils.GetCustomStyle( CustomStyle.ShaderModeTitle );
GUIStyle shaderModeNoShader = UIUtils.GetCustomStyle( CustomStyle.ShaderModeNoShader );
GUIStyle materialModeTitle = UIUtils.GetCustomStyle( CustomStyle.MaterialModeTitle );
GUIStyle shaderNoMaterialModeTitle = UIUtils.GetCustomStyle( CustomStyle.ShaderNoMaterialModeTitle );
ConfigStyle( shaderModeTitle );
ConfigStyle( shaderModeNoShader );
ConfigStyle( materialModeTitle );
ConfigStyle( shaderNoMaterialModeTitle );
}
Color buffereredColor = GUI.color;
MasterNode currentMasterNode = ParentWindow.CurrentGraph.CurrentMasterNode;
// Shader Mode
if ( currentMasterNode != null )
{
m_leftButtonStyle = UIUtils.GetCustomStyle( currentShader == null ? CustomStyle.ShaderModeNoShader : CustomStyle.ShaderModeTitle );
m_leftButtonRect = graphArea;
m_leftButtonRect.x = 10 + leftPos;
m_leftButtonRect.y += m_leftButtonRect.height - 38 - 15;
string shaderName = ( currentShader != null ) ? ( currentShader.name ) : NoShaderStr;
if ( m_previousShaderName != shaderName )
{
m_previousShaderName = shaderName;
m_leftAuxContent.text = "<size=20>SHADER</size>\n" + shaderName;
}
m_auxVector2 = m_leftButtonStyle.CalcSize( m_leftAuxContent );
m_leftButtonRect.width = m_auxVector2.x + 30 + 4;
m_leftButtonRect.height = 38;
bool mouseOnTop = m_leftButtonRect.Contains( mousePos );
GUI.color = mouseOnTop ? OverallColorOn : OverallColorOff;
GUI.Label( m_leftButtonRect, m_leftAuxContent, m_leftButtonStyle );
if( currentEventType == EventType.MouseMove && mouseOnTop )
m_parentWindow.MarkToRepaint();
if ( currentEventType == EventType.MouseDown && mouseOnTop && currentShader != null )
{
Event.current.Use();
Selection.activeObject = currentShader;
EditorGUIUtility.PingObject( Selection.activeObject );
}
// Material Mode
if ( currentMaterial != null )
{
m_rightButtonStyle = UIUtils.GetCustomStyle( CustomStyle.MaterialModeTitle );
m_rightButtonRect = graphArea;
string matName = ( currentMaterial != null ) ? ( currentMaterial.name ) : NoMaterialStr;
if ( m_previousMaterialName != matName )
{
m_previousMaterialName = matName;
m_rightAuxContent.text = "<size=20>MATERIAL</size>\n" + matName;
}
m_auxVector2 = m_rightButtonStyle.CalcSize( m_rightAuxContent );
m_rightButtonRect.width = m_auxVector2.x + 30 + 4;
m_rightButtonRect.height = 38;
m_rightButtonRect.x = graphArea.xMax - m_rightButtonRect.width - rightPos - 10;
m_rightButtonRect.y = graphArea.yMax - 38 - 15;
bool mouseOnTopRight = m_rightButtonRect.Contains( mousePos );
GUI.color = mouseOnTopRight ? OverallColorOn : OverallColorOff;
GUI.Label( m_rightButtonRect, m_rightAuxContent, m_rightButtonStyle );
if( currentEventType == EventType.MouseMove && mouseOnTopRight )
m_parentWindow.MarkToRepaint();
if ( currentEventType == EventType.MouseDown && mouseOnTopRight )
{
Event.current.Use();
Selection.activeObject = currentMaterial;
EditorGUIUtility.PingObject( Selection.activeObject );
}
}
}
// Shader Function
else if ( currentMasterNode == null && ParentWindow.CurrentGraph.CurrentOutputNode != null )
{
m_leftButtonStyle = UIUtils.GetCustomStyle( CustomStyle.ShaderFunctionMode );
m_leftButtonRect = graphArea;
m_leftButtonRect.x = 10 + leftPos;
m_leftButtonRect.y += m_leftButtonRect.height - 38 - 15;
string functionName = ( ParentWindow.CurrentGraph.CurrentShaderFunction != null ) ? ( ParentWindow.CurrentGraph.CurrentShaderFunction.name ) : "No Shader Function";
if ( m_previousShaderFunctionName != functionName )
{
m_previousShaderFunctionName = functionName;
m_leftAuxContent.text = "<size=20>SHADER FUNCTION</size>\n" + functionName;
}
m_auxVector2 = m_leftButtonStyle.CalcSize( m_leftAuxContent );
m_leftButtonRect.width = m_auxVector2.x + 30 + 4;
m_leftButtonRect.height = 38;
bool mouseOnTop = m_leftButtonRect.Contains( mousePos );
GUI.color = mouseOnTop ? OverallColorOn : OverallColorOff;
GUI.Label( m_leftButtonRect, m_leftAuxContent, m_leftButtonStyle );
if ( currentEventType == EventType.MouseDown && mouseOnTop && ParentWindow.CurrentGraph.CurrentShaderFunction != null )
{
Event.current.Use();
Selection.activeObject = ParentWindow.CurrentGraph.CurrentShaderFunction;
EditorGUIUtility.PingObject( Selection.activeObject );
}
}
GUI.color = buffereredColor;
}
public override void Destroy()
{
base.Destroy();
m_leftAuxContent = null;
m_rightAuxContent = null;
m_leftButtonStyle = null;
m_rightButtonStyle = null;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 672d96e3a4f68d44f9456d2fc53d4d73
timeCreated: 1481126956
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,91 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEditor;
using System.Collections.Generic;
using System;
using UnityEngine;
namespace AmplifyShaderEditor
{
[Serializable]
public class ShaderLibrary : EditorWindow
{
private const string SHADER_LIB_FILE = "/AmplifyShaderEditor/Resources/ShaderLibrary/ShaderLibrary.txt";
private bool m_init = false;
private Vector2 m_scrollPos = new Vector2();
[SerializeField]
private List<string> m_shaders = new List<string>();
void Init()
{
m_init = true;
string list = IOUtils.LoadTextFileFromDisk( Application.dataPath + SHADER_LIB_FILE );
if ( String.IsNullOrEmpty( list ) )
return;
string[] listArr = list.Split( IOUtils.FIELD_SEPARATOR );
for ( int i = 0; i < listArr.Length; i++ )
{
m_shaders.Add( listArr[ i ] );
}
UIUtils.MainSkin.customStyles[ 10 ].active.background = Texture2D.whiteTexture;
UIUtils.MainSkin.customStyles[ 6 ].fixedHeight = UIUtils.MainSkin.customStyles[ 6 ].normal.background.height;
UIUtils.MainSkin.customStyles[ 6 ].fixedWidth = UIUtils.MainSkin.customStyles[ 6 ].normal.background.width;
UIUtils.MainSkin.customStyles[ 7 ].fixedHeight = UIUtils.MainSkin.customStyles[ 7 ].normal.background.height;
UIUtils.MainSkin.customStyles[ 7 ].fixedWidth = UIUtils.MainSkin.customStyles[ 7 ].normal.background.width;
UIUtils.MainSkin.customStyles[ 8 ].fixedHeight = UIUtils.MainSkin.customStyles[ 8 ].normal.background.height;
UIUtils.MainSkin.customStyles[ 8 ].fixedWidth = UIUtils.MainSkin.customStyles[ 8 ].normal.background.width;
UIUtils.MainSkin.customStyles[ 9 ].fixedHeight = UIUtils.MainSkin.customStyles[ 9 ].normal.background.height;
UIUtils.MainSkin.customStyles[ 9 ].fixedWidth = UIUtils.MainSkin.customStyles[ 9 ].normal.background.width;
}
void OnGUI()
{
if ( !m_init )
{
Init();
}
Rect availableArea = position;
availableArea.y = 100f;
availableArea.x = 0.05f * availableArea.width;
availableArea.height *= 0.5f;
availableArea.width *= 0.9f;
EditorGUILayout.BeginVertical();
{
EditorGUILayout.LabelField( "Shader Library", UIUtils.MainSkin.customStyles[ 5 ] );
GUILayout.Space( 10 );
EditorGUILayout.BeginHorizontal();
{
GUILayout.Space( 0.05f * position.width );
GUILayout.Button( string.Empty, UIUtils.MainSkin.customStyles[ 8 ] );
GUILayout.Button( string.Empty, UIUtils.MainSkin.customStyles[ 9 ] );
GUILayout.Space( 0.8f*position.width );
GUILayout.Button( string.Empty, UIUtils.MainSkin.customStyles[ 7 ] );
GUILayout.Button( string.Empty, UIUtils.MainSkin.customStyles[ 6 ] );
}
EditorGUILayout.EndHorizontal();
GUILayout.BeginArea( availableArea );
m_scrollPos = EditorGUILayout.BeginScrollView( m_scrollPos, UIUtils.MainSkin.box );
{
for ( int i = 0; i < m_shaders.Count; i++ )
{
GUILayout.Button( m_shaders[ i ], UIUtils.MainSkin.customStyles[ 10 ] );
}
}
EditorGUILayout.EndScrollView();
GUILayout.EndArea();
}
EditorGUILayout.EndVertical();
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: cbdd03f297692584391b9dc0625a80ed
timeCreated: 1481126959
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 3857a2f02c659104fa6f0fe94cfe00dd
folderAsset: yes
timeCreated: 1481126945
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,249 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
namespace AmplifyShaderEditor
{
public sealed class ToolsMenuButton : ToolsMenuButtonParent
{
public delegate void ToolButtonPressed( ToolButtonType type );
public event ToolButtonPressed ToolButtonPressedEvt;
private Rect m_buttonArea;
private List<Texture2D> m_buttonTexture;
private string m_buttonTexturePath;
private ToolButtonType m_buttonType;
private GUIStyle m_style;
private bool m_enabled = true;
private bool m_drawOnFunction = true;
private List<string> m_cachedStates;
private int m_bufferedState = -1;
private string m_bufferedTooltip = string.Empty;
public ToolsMenuButton( AmplifyShaderEditorWindow parentWindow, ToolButtonType type, float x, float y, float width, float height, string texturePath, string text, string tooltip, float buttonSpacing = -1, bool drawOnFunction = true ) : base( parentWindow, text, tooltip, buttonSpacing )
{
m_buttonArea = new Rect( x, y, width, height );
m_buttonType = type;
m_buttonTexturePath = texturePath;
m_cachedStates = new List<string>();
m_drawOnFunction = drawOnFunction;
}
public void AddState( string state )
{
m_cachedStates.Add( state );
}
public override void Destroy()
{
ToolButtonPressedEvt = null;
if ( m_buttonTexture != null )
{
for ( int i = 0; i < m_buttonTexture.Count; i++ )
{
Resources.UnloadAsset( m_buttonTexture[ i ] );
}
m_buttonTexture.Clear();
}
m_buttonTexture = null;
}
protected override void Init()
{
base.Init();
if ( m_buttonTexture == null )
{
m_buttonTexturePath = AssetDatabase.GUIDToAssetPath( m_buttonTexturePath );
m_buttonTexture = new List<Texture2D>();
m_buttonTexture.Add( AssetDatabase.LoadAssetAtPath( m_buttonTexturePath, typeof( Texture2D ) ) as Texture2D );
}
if ( m_cachedStates.Count > 0 )
{
for ( int i = 0; i < m_cachedStates.Count; i++ )
{
m_cachedStates[ i ] = AssetDatabase.GUIDToAssetPath( m_cachedStates[ i ] );
m_buttonTexture.Add( AssetDatabase.LoadAssetAtPath( m_cachedStates[ i ], typeof( Texture2D ) ) as Texture2D );
}
m_cachedStates.Clear();
}
if ( m_style == null )
{
m_style = new GUIStyle( /*UIUtils.Button*/ GUIStyle.none );
m_style.normal.background = m_buttonTexture[ 0 ];
m_style.hover.background = m_buttonTexture[ 0 ];
m_style.hover.textColor = m_style.normal.textColor;
m_style.active.background = m_buttonTexture[ 0 ];
m_style.active.textColor = m_style.normal.textColor;
m_style.onNormal.background = m_buttonTexture[ 0 ];
m_style.onNormal.textColor = m_style.normal.textColor;
m_style.onHover.background = m_buttonTexture[ 0 ];
m_style.onHover.textColor = m_style.normal.textColor;
m_style.onActive.background = m_buttonTexture[ 0 ];
m_style.onActive.textColor = m_style.normal.textColor;
m_style.clipping = TextClipping.Overflow;
m_style.fontStyle = FontStyle.Bold;
m_style.alignment = TextAnchor.LowerCenter;
m_style.contentOffset = new Vector2( 0, 15 );
m_style.fontSize = 10;
bool resizeFromTexture = false;
if ( m_buttonArea.width > 0 )
{
m_style.fixedWidth = m_buttonArea.width;
}
else
{
resizeFromTexture = true;
}
if ( m_buttonArea.height > 0 )
{
m_style.fixedHeight = m_buttonArea.height;
}
else
{
resizeFromTexture = true;
}
if ( resizeFromTexture )
{
m_buttonArea.width = m_style.fixedWidth = m_buttonTexture[ 0 ].width;
m_buttonArea.height = m_style.fixedHeight = m_buttonTexture[ 0 ].height;
}
}
}
public override void Draw()
{
base.Draw();
bool guiEnabledBuffer = GUI.enabled;
GUI.enabled = m_enabled;
if ( GUILayout.Button( m_content, m_style ) && ToolButtonPressedEvt != null )
{
ToolButtonPressedEvt( m_buttonType );
}
GUI.enabled = guiEnabledBuffer;
}
public override void Draw( float x, float y )
{
if ( !(m_parentWindow.CameraDrawInfo.CurrentEventType == EventType.MouseDown || m_parentWindow.CameraDrawInfo.CurrentEventType == EventType.Repaint ) )
return;
if ( m_parentWindow.CurrentGraph.CurrentMasterNode == null && !m_drawOnFunction)
return;
base.Draw( x, y );
if ( m_bufferedState > -1 )
{
if ( string.IsNullOrEmpty( m_bufferedTooltip ) )
{
SetStateOnButton( m_bufferedState );
}
else
{
SetStateOnButton( m_bufferedState, m_bufferedTooltip );
}
m_bufferedState = -1;
m_bufferedTooltip = string.Empty;
}
m_buttonArea.x = x;
m_buttonArea.y = y;
if ( m_parentWindow.CameraDrawInfo.CurrentEventType == EventType.MouseDown && m_buttonArea.Contains( m_parentWindow.CameraDrawInfo.MousePosition ) && ToolButtonPressedEvt != null )
{
ToolButtonPressedEvt( m_buttonType );
Event.current.Use();
m_parentWindow.CameraDrawInfo.CurrentEventType = EventType.Used;
}
else if ( m_parentWindow.CameraDrawInfo.CurrentEventType == EventType.Repaint )
{
GUI.Label( m_buttonArea, m_content, m_style );
}
//if ( GUI.Button( m_buttonArea, m_content, m_style ) && ToolButtonPressedEvt != null )
//{
// ToolButtonPressedEvt( m_buttonType );
//}
}
public override void Draw( Vector2 pos )
{
Draw( pos.x, pos.y );
}
public override void SetStateOnButton( int state, string tooltip )
{
if ( m_buttonTexture == null || m_style == null )
{
m_bufferedState = state;
m_bufferedTooltip = tooltip;
return;
}
if ( state < 0 || state >= m_buttonTexture.Count )
{
return;
}
base.SetStateOnButton( state, tooltip );
m_style.normal.background = m_buttonTexture[ state ];
m_style.hover.background = m_buttonTexture[ state ];
m_style.active.background = m_buttonTexture[ state ];
m_style.onNormal.background = m_buttonTexture[ state ];
m_style.onHover.background = m_buttonTexture[ state ];
m_style.onActive.background = m_buttonTexture[ state ];
}
public override void SetStateOnButton( int state )
{
if ( m_buttonTexture == null || m_style == null )
{
m_bufferedState = state;
return;
}
if ( state < 0 || state >= m_buttonTexture.Count )
{
return;
}
base.SetStateOnButton( state );
m_style.normal.background = m_buttonTexture[ state ];
m_style.hover.background = m_buttonTexture[ state ];
m_style.active.background = m_buttonTexture[ state ];
m_style.onNormal.background = m_buttonTexture[ state ];
m_style.onHover.background = m_buttonTexture[ state ];
m_style.onActive.background = m_buttonTexture[ state ];
}
public bool IsInside( Vector2 pos )
{
return m_buttonArea.Contains( pos );
}
public bool Enabled
{
get { return m_enabled; }
set { m_enabled = value; }
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 890f4ed5c9f62af43bda6584705fa0be
timeCreated: 1481126957
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,75 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
namespace AmplifyShaderEditor
{
public class ToolsMenuButtonParent
{
protected AmplifyShaderEditorWindow m_parentWindow = null;
private float m_buttonSpacing = 10;
private int m_currentState = 0;
private bool m_isInitialized = false;
protected GUIContent m_content;
public ToolsMenuButtonParent( AmplifyShaderEditorWindow parentWindow, string text, string tooltip, float buttonSpacing )
{
m_parentWindow = parentWindow;
m_content = new GUIContent( text, tooltip );
if ( buttonSpacing > 0 )
m_buttonSpacing = buttonSpacing;
}
public virtual void Draw()
{
if ( !m_isInitialized )
{
Init();
}
//GUILayout.Space( m_buttonSpacing );
}
public virtual void Draw( Vector2 pos )
{
Draw( pos.x, pos.y );
}
public virtual void Draw( float x ,float y )
{
if ( !m_isInitialized )
{
Init();
}
}
protected virtual void Init()
{
m_isInitialized = false;
}
public virtual void SetStateOnButton( int state, string tooltip )
{
m_currentState = state;
m_content.tooltip = tooltip;
}
public virtual void SetStateOnButton( int state )
{
m_currentState = state;
}
public virtual void Destroy() { }
public float ButtonSpacing
{
get { return m_buttonSpacing; }
}
public int CurrentState
{
get { return m_currentState; }
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a3bf3644c2c2fbb4fa0dd8b86effc6e1
timeCreated: 1481126958
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,41 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
namespace AmplifyShaderEditor
{
public sealed class ToolsMenuButtonSep : ToolsMenuButtonParent
{
private Color m_splitterColor = EditorGUIUtility.isProSkin ? new Color( 0.157f, 0.157f, 0.157f ) : new Color( 0.5f, 0.5f, 0.5f );
[SerializeField]
private GUIStyle m_sepStyle;
public ToolsMenuButtonSep( AmplifyShaderEditorWindow parentWindow = null, string text = null, string tooltip = null, float buttonSpacing = -1 ) : base( parentWindow, text, tooltip, buttonSpacing ) { }
public override void Draw()
{
base.Draw();
if ( m_sepStyle == null )
{
m_sepStyle = new GUIStyle();
m_sepStyle.normal.background = Texture2D.whiteTexture;
m_sepStyle.hover.background = Texture2D.whiteTexture;
m_sepStyle.active.background = Texture2D.whiteTexture;
m_sepStyle.onNormal.background = Texture2D.whiteTexture;
m_sepStyle.onHover.background = Texture2D.whiteTexture;
m_sepStyle.onActive.background = Texture2D.whiteTexture;
m_sepStyle.stretchHeight = true;
}
Color originalColor = GUI.color;
GUI.color = m_splitterColor;
GUILayout.Box( string.Empty, m_sepStyle, GUILayout.MaxWidth( 2 ), GUILayout.ExpandHeight( true ) );
GUI.color = originalColor;
}
public override void Destroy()
{
m_sepStyle = null;
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b4c65a9d96791c34eb587cea9662161f
timeCreated: 1481126958
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,632 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using UnityEngine;
using UnityEditor;
using System;
using System.Collections.Generic;
namespace AmplifyShaderEditor
{
public enum ToolButtonType
{
Update = 0,
Live,
OpenSourceCode,
CleanUnusedNodes,
//SelectShader,
New,
Open,
Save,
Library,
Options,
Help,
MasterNode,
FocusOnMasterNode,
FocusOnSelection,
ShowInfoWindow,
ShowTipsWindow,
ShowConsole,
TakeScreenshot,
Share
}
public enum ToolbarType
{
File,
Help
}
public class ToolbarMenuTab
{
private Rect m_tabArea;
private GenericMenu m_tabMenu;
public ToolbarMenuTab( float x, float y, float width, float height )
{
m_tabMenu = new GenericMenu();
m_tabArea = new Rect( x, y, width, height );
}
public void ShowMenu()
{
m_tabMenu.DropDown( m_tabArea );
}
public void AddItem( string itemName, GenericMenu.MenuFunction callback )
{
m_tabMenu.AddItem( new GUIContent( itemName ), false, callback );
}
}
[Serializable]
public sealed class ToolsWindow : MenuParent
{
private static readonly Color RightIconsColorOff = new Color( 1f, 1f, 1f, 0.8f );
private static readonly Color LeftIconsColorOff = new Color( 1f, 1f, 1f, 0.5f );
private static readonly Color RightIconsColorOn = new Color( 1f, 1f, 1f, 1.0f );
private static readonly Color LeftIconsColorOn = new Color( 1f, 1f, 1f, 0.8f );
private const float TabY = 9;
private const float TabX = 5;
private const string ShaderFileTitleStr = "Current Shader";
private const string FileToolbarStr = "File";
private const string HelpToolbarStr = "Help";
private const string LiveShaderStr = "Live Shader";
private const string LoadOnSelectionStr = "Load on selection";
private const string CurrentObjectStr = "Current Object: ";
public ToolsMenuButton.ToolButtonPressed ToolButtonPressedEvt;
//private GUIStyle m_toolbarButtonStyle;
private GUIStyle m_toggleStyle;
private GUIStyle m_borderStyle;
// left
private ToolsMenuButton m_updateButton;
private ToolsMenuButton m_liveButton;
private ToolsMenuButton m_openSourceCodeButton;
//middle right
private ToolsMenuButton m_cleanUnusedNodesButton;
private ToolsMenuButton m_focusOnMasterNodeButton;
private ToolsMenuButton m_focusOnSelectionButton;
// right
private ToolsMenuButton m_shareButton;
private ToolsMenuButton m_takeScreenshotButton;
private ToolsMenuButton m_showInfoWindowButton;
// hidden
private ToolsMenuButton m_showTipsWindowButton;
private ToolsMenuButton m_showConsoleWindowButton;
//Used for collision detection to invalidate inputs on graph area
private Rect m_areaLeft = new Rect( 0, 0, 140, 40 );
private Rect m_areaRight = new Rect( 0, 0, 75, 40 );
private Rect m_boxRect;
private Rect m_borderRect;
public const double InactivityRefreshTime = 0.25;
private int m_currentSelected = 0;
//Search Bar
private const string SearchBarId = "ASE_SEARCH_BAR";
private bool m_searchBarVisible = false;
private bool m_selectSearchBarTextfield = false;
private bool m_refreshSearchResultList = false;
private Rect m_searchBarSize;
private string m_searchBarValue = string.Empty;
private List<ParentNode> m_searchResultNodes = new List<ParentNode>();
// width and height are between [0,1] and represent a percentage of the total screen area
public ToolsWindow( AmplifyShaderEditorWindow parentWindow ) : base( parentWindow, 0, 0, 0, 64, "Tools", MenuAnchor.TOP_LEFT, MenuAutoSize.NONE )
{
m_updateButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.Update, 0, 0, -1, -1, IOUtils.UpdateOutdatedGUID, string.Empty, "Create and apply shader to material.", 5 );
m_updateButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_updateButton.AddState( IOUtils.UpdateOFFGUID );
m_updateButton.AddState( IOUtils.UpdateUpToDatedGUID );
m_liveButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.Live, 0, 0, -1, -1, IOUtils.LiveOffGUID, string.Empty, "Automatically saves shader when canvas is changed.", 50 );
m_liveButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_liveButton.AddState( IOUtils.LiveOnGUID );
m_liveButton.AddState( IOUtils.LivePendingGUID );
//ToolsMenuButton cleanUnusedNodesButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.CleanUnusedNodes, 0, 0, -1, -1, IOUtils.CleanupOFFGUID, string.Empty, "Remove all nodes not connected to the master node.", 77 );
//cleanUnusedNodesButton.ToolButtonPressedEvt += OnButtonPressedEvent;
//cleanUnusedNodesButton.AddState( IOUtils.CleanUpOnGUID );
//m_list[ ( int ) ToolButtonType.CleanUnusedNodes ] = cleanUnusedNodesButton;
m_openSourceCodeButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.OpenSourceCode, 0, 0, -1, -1, IOUtils.OpenSourceCodeOFFGUID, string.Empty, "Open shader file in your default shader editor.", 80, false );
m_openSourceCodeButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_openSourceCodeButton.AddState( IOUtils.OpenSourceCodeONGUID );
// middle right
m_cleanUnusedNodesButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.CleanUnusedNodes, 0, 0, -1, -1, IOUtils.CleanupOFFGUID, string.Empty, "Remove all nodes not connected to the master node.", 77 );
m_cleanUnusedNodesButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_cleanUnusedNodesButton.AddState( IOUtils.CleanUpOnGUID );
m_focusOnMasterNodeButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.FocusOnMasterNode, 0, 0, -1, -1, IOUtils.FocusNodeGUID, string.Empty, "Focus on active master node.", -1, false );
m_focusOnMasterNodeButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_focusOnSelectionButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.FocusOnSelection, 0, 0, -1, -1, IOUtils.FitViewGUID, string.Empty, "Focus on selection or fit to screen if none selected." );
m_focusOnSelectionButton.ToolButtonPressedEvt += OnButtonPressedEvent;
// right
m_shareButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.Share, 0, 0, -1, -1, IOUtils.ShareOFFGUID, string.Empty, "Share selection", 100 );
m_shareButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_shareButton.AddState( IOUtils.ShareONGUID );
m_takeScreenshotButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.TakeScreenshot, 0, 0, -1, -1, IOUtils.TakeScreenshotOFFGUID, string.Empty, "Take ScreenShot (WINDOWS ONLY).", 100 );
m_takeScreenshotButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_takeScreenshotButton.AddState( IOUtils.TakeScreenshotONGUID );
m_showInfoWindowButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.ShowInfoWindow, 0, 0, -1, -1, IOUtils.ShowInfoWindowGUID, string.Empty, "Open Helper Window." );
m_showInfoWindowButton.ToolButtonPressedEvt += OnButtonPressedEvent;
// hidden
m_showTipsWindowButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.ShowTipsWindow, 0, 0, -1, -1, IOUtils.ShowTipsWindowGUID, string.Empty, "Open Quick Tips!" );
m_showTipsWindowButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_showConsoleWindowButton = new ToolsMenuButton( m_parentWindow, ToolButtonType.ShowConsole, 0, 0, -1, -1, IOUtils.ShowConsoleWindowGUID, string.Empty, "Show internal console", 74 );
m_showConsoleWindowButton.ToolButtonPressedEvt += OnButtonPressedEvent;
m_showConsoleWindowButton.AddState( IOUtils.ShowConsoleWindowGUID );
m_searchBarSize = new Rect( 0, TabY + 4, 110, 60 );
}
void OnShowPortLegend()
{
ParentWindow.ShowPortInfo();
}
override public void Destroy()
{
base.Destroy();
//for ( int i = 0; i < m_list.Length; i++ )
//{
// m_list[ i ].Destroy();
//}
//m_list = null;
m_searchResultNodes.Clear();
m_searchResultNodes = null;
m_updateButton.Destroy();
m_updateButton = null;
m_liveButton.Destroy();
m_liveButton = null;
m_openSourceCodeButton.Destroy();
m_openSourceCodeButton = null;
m_focusOnMasterNodeButton.Destroy();
m_focusOnMasterNodeButton = null;
m_focusOnSelectionButton.Destroy();
m_focusOnSelectionButton = null;
m_showInfoWindowButton.Destroy();
m_showInfoWindowButton = null;
m_takeScreenshotButton.Destroy();
m_takeScreenshotButton = null;
m_shareButton.Destroy();
m_shareButton = null;
m_showTipsWindowButton.Destroy();
m_showTipsWindowButton = null;
m_cleanUnusedNodesButton.Destroy();
m_cleanUnusedNodesButton = null;
m_showConsoleWindowButton.Destroy();
m_showConsoleWindowButton = null;
}
void OnButtonPressedEvent( ToolButtonType type )
{
if ( ToolButtonPressedEvt != null )
ToolButtonPressedEvt( type );
}
public override void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus )
{
base.Draw( parentPosition, mousePosition, mouseButtonId, hasKeyboadFocus );
Color bufferedColor = GUI.color;
m_areaLeft.x = m_transformedArea.x + TabX;
m_areaRight.x = m_transformedArea.x + m_transformedArea.width - 75 - TabX;
//if ( m_toolbarButtonStyle == null )
//{
// m_toolbarButtonStyle = new GUIStyle( UIUtils.Button );
// m_toolbarButtonStyle.fixedWidth = 100;
//}
if ( m_toggleStyle == null )
{
m_toggleStyle = UIUtils.Toggle;
}
//for ( int i = 0; i < m_list.Length; i++ )
//{
// GUI.color = m_list[ i ].IsInside( mousePosition ) ? LeftIconsColorOn : LeftIconsColorOff;
// m_list[ i ].Draw( TabX + m_transformedArea.x + m_list[ i ].ButtonSpacing, TabY );
//}
GUI.color = m_updateButton.IsInside( mousePosition ) ? LeftIconsColorOn : LeftIconsColorOff;
m_updateButton.Draw( TabX + m_transformedArea.x + m_updateButton.ButtonSpacing, TabY );
GUI.color = m_liveButton.IsInside( mousePosition ) ? LeftIconsColorOn : LeftIconsColorOff;
m_liveButton.Draw( TabX + m_transformedArea.x + m_liveButton.ButtonSpacing, TabY );
GUI.color = m_openSourceCodeButton.IsInside( mousePosition ) ? LeftIconsColorOn : LeftIconsColorOff;
m_openSourceCodeButton.Draw( TabX + m_transformedArea.x + m_openSourceCodeButton.ButtonSpacing, TabY );
if ( m_searchBarVisible )
{
m_searchBarSize.x = m_transformedArea.x + m_transformedArea.width - 320 - TabX;
string currentFocus = GUI.GetNameOfFocusedControl();
if ( Event.current.type == EventType.KeyDown )
{
KeyCode keyCode = Event.current.keyCode;
if ( Event.current.shift )
{
if ( keyCode == KeyCode.F3 ||
( ( keyCode == KeyCode.KeypadEnter || keyCode == KeyCode.Return ) &&
( currentFocus.Equals( SearchBarId ) || string.IsNullOrEmpty( currentFocus ) ) ) )
SelectPrevious();
}
else
{
if ( keyCode == KeyCode.F3 ||
( ( keyCode == KeyCode.KeypadEnter || keyCode == KeyCode.Return ) &&
( currentFocus.Equals( SearchBarId ) || string.IsNullOrEmpty( currentFocus ) ) ) )
SelectNext();
}
}
if( currentFocus.Equals( SearchBarId ) || ( m_parentWindow.CameraDrawInfo.CurrentEventType == EventType.MouseDown && m_searchBarSize.Contains( m_parentWindow.CameraDrawInfo.MousePosition ) ) || m_selectSearchBarTextfield )
{
EditorGUI.BeginChangeCheck();
{
GUI.SetNextControlName( SearchBarId );
m_searchBarValue = EditorGUI.TextField( m_searchBarSize, m_searchBarValue, UIUtils.ToolbarSearchTextfield );
}
if ( EditorGUI.EndChangeCheck() )
{
m_refreshSearchResultList = true;
}
} else
{
GUI.Label( m_searchBarSize, m_searchBarValue, UIUtils.ToolbarSearchTextfield );
}
m_searchBarSize.x += m_searchBarSize.width;
if ( m_parentWindow.CameraDrawInfo.CurrentEventType == EventType.MouseDown && m_searchBarSize.Contains( m_parentWindow.CameraDrawInfo.MousePosition ) )
{
if ( string.IsNullOrEmpty( m_searchBarValue ) )
{
m_searchBarVisible = false;
m_refreshSearchResultList = false;
}
else
{
m_searchBarValue = string.Empty;
m_searchResultNodes.Clear();
m_currentSelected = -1;
}
}
GUI.Label( m_searchBarSize, string.Empty, UIUtils.ToolbarSearchCancelButton );
if ( Event.current.isKey && Event.current.keyCode == KeyCode.Escape )
{
m_searchBarVisible = false;
m_refreshSearchResultList = false;
GUI.FocusControl( null );
m_selectSearchBarTextfield = false;
}
if ( m_refreshSearchResultList && ( m_parentWindow.CurrentInactiveTime > InactivityRefreshTime ) )
{
RefreshList();
}
}
if ( m_selectSearchBarTextfield )
{
m_selectSearchBarTextfield = false;
EditorGUI.FocusTextInControl( SearchBarId );
//GUI.FocusControl( SearchBarId );
}
//if ( Event.current.control && Event.current.isKey && Event.current.keyCode == KeyCode.F && Event.current.type == EventType.KeyDown )
if( m_parentWindow.CurrentCommandName.Equals("Find") )
{
if ( !m_searchBarVisible )
{
m_searchBarVisible = true;
m_refreshSearchResultList = false;
}
m_selectSearchBarTextfield = true;
}
GUI.color = m_shareButton.IsInside( mousePosition ) ? RightIconsColorOn : RightIconsColorOff;
m_shareButton.Draw( m_transformedArea.x + m_transformedArea.width - 195 - TabX, TabY );
GUI.color = m_takeScreenshotButton.IsInside( mousePosition ) ? RightIconsColorOn : RightIconsColorOff;
m_takeScreenshotButton.Draw( m_transformedArea.x + m_transformedArea.width - 165 - TabX, TabY );
GUI.color = m_focusOnSelectionButton.IsInside( mousePosition ) ? RightIconsColorOn : RightIconsColorOff;
m_focusOnSelectionButton.Draw( m_transformedArea.x + m_transformedArea.width - 120 - TabX, TabY );
GUI.color = m_focusOnMasterNodeButton.IsInside( mousePosition ) ? RightIconsColorOn : RightIconsColorOff;
m_focusOnMasterNodeButton.Draw( m_transformedArea.x + m_transformedArea.width - 85 - TabX, TabY );
GUI.color = m_cleanUnusedNodesButton.IsInside( mousePosition ) ? RightIconsColorOn : RightIconsColorOff;
m_cleanUnusedNodesButton.Draw( m_transformedArea.x + m_transformedArea.width - 50 - TabX, TabY );
GUI.color = m_showInfoWindowButton.IsInside( mousePosition ) ? RightIconsColorOn : RightIconsColorOff;
m_showInfoWindowButton.Draw( m_transformedArea.x + m_transformedArea.width - 25 - TabX, TabY );
//GUI.color = m_showTipsWindowButton.IsInside( mousePosition ) ? RightIconsColorOn : RightIconsColorOff;
//m_showTipsWindowButton.Draw( m_transformedArea.x + m_transformedArea.width - 190 - TabX, TabY );
//GUI.color = m_showConsoleWindowButton.IsInside( mousePosition ) ? RightIconsColorOn : RightIconsColorOff;
//m_showConsoleWindowButton.Draw( m_transformedArea.x + m_transformedArea.width - 195 - TabX, TabY );
GUI.color = bufferedColor;
}
public void OnNodeRemovedFromGraph( ParentNode node )
{
m_searchResultNodes.Remove( node );
}
int m_previousNodeCount = 0;
void RefreshList()
{
m_refreshSearchResultList = false;
m_currentSelected = -1;
m_searchResultNodes.Clear();
if ( !string.IsNullOrEmpty( m_searchBarValue ) )
{
List<ParentNode> nodes = m_parentWindow.CurrentGraph.AllNodes;
int count = nodes.Count;
m_previousNodeCount = count;
for ( int i = 0; i < count; i++ )
{
if ( nodes[ i ].CheckFindText( m_searchBarValue ) )
{
m_searchResultNodes.Add( nodes[ i ] );
}
}
}
}
void SelectNext()
{
if ( m_refreshSearchResultList || m_parentWindow.CurrentGraph.AllNodes.Count != m_previousNodeCount )
{
RefreshList();
}
if ( m_searchResultNodes.Count > 0 )
{
m_currentSelected = ( m_currentSelected + 1 ) % m_searchResultNodes.Count;
m_parentWindow.FocusOnNode( m_searchResultNodes[ m_currentSelected ], 1, true ,true);
}
}
void SelectPrevious()
{
if ( m_refreshSearchResultList || m_parentWindow.CurrentGraph.AllNodes.Count != m_previousNodeCount )
{
RefreshList();
}
if ( m_searchResultNodes.Count > 0 )
{
m_currentSelected = ( m_currentSelected > 1 ) ? ( m_currentSelected - 1 ) : ( m_searchResultNodes.Count - 1 );
m_parentWindow.FocusOnNode( m_searchResultNodes[ m_currentSelected ], 1, true );
}
}
public void SetStateOnButton( ToolButtonType button, int state, string tooltip )
{
switch ( button )
{
case ToolButtonType.New:
case ToolButtonType.Open:
case ToolButtonType.Save:
case ToolButtonType.Library:
case ToolButtonType.Options:
case ToolButtonType.Help:
case ToolButtonType.MasterNode: break;
case ToolButtonType.OpenSourceCode:
{
m_openSourceCodeButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.Update:
{
m_updateButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.Live:
{
m_liveButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.TakeScreenshot:
{
m_takeScreenshotButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.CleanUnusedNodes:
//case eToolButtonType.SelectShader:
{
m_cleanUnusedNodesButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.FocusOnMasterNode:
{
m_focusOnMasterNodeButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.FocusOnSelection:
{
m_focusOnSelectionButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.Share:
{
m_shareButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.ShowInfoWindow:
{
m_showInfoWindowButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.ShowTipsWindow:
{
m_showTipsWindowButton.SetStateOnButton( state, tooltip );
}
break;
case ToolButtonType.ShowConsole:
{
m_showConsoleWindowButton.SetStateOnButton( state, tooltip );
}
break;
}
}
public void SetStateOnButton( ToolButtonType button, int state )
{
switch ( button )
{
case ToolButtonType.New:
case ToolButtonType.Open:
case ToolButtonType.Save:
case ToolButtonType.Library:
case ToolButtonType.Options:
case ToolButtonType.Help:
case ToolButtonType.MasterNode: break;
case ToolButtonType.OpenSourceCode:
{
m_openSourceCodeButton.SetStateOnButton( state );
}
break;
case ToolButtonType.Update:
{
m_updateButton.SetStateOnButton( state );
}
break;
case ToolButtonType.Live:
{
m_liveButton.SetStateOnButton( state );
}
break;
case ToolButtonType.TakeScreenshot:
{
m_takeScreenshotButton.SetStateOnButton( state );
}
break;
case ToolButtonType.CleanUnusedNodes:
//case eToolButtonType.SelectShader:
{
m_cleanUnusedNodesButton.SetStateOnButton( state );
}
break;
case ToolButtonType.FocusOnMasterNode:
{
m_focusOnMasterNodeButton.SetStateOnButton( state );
}
break;
case ToolButtonType.FocusOnSelection:
{
m_focusOnSelectionButton.SetStateOnButton( state );
}
break;
case ToolButtonType.Share:
{
m_shareButton.SetStateOnButton( state );
}
break;
case ToolButtonType.ShowInfoWindow:
{
m_showInfoWindowButton.SetStateOnButton( state );
}
break;
case ToolButtonType.ShowTipsWindow:
{
m_showTipsWindowButton.SetStateOnButton( state );
}break;
case ToolButtonType.ShowConsole:
{
m_showConsoleWindowButton.SetStateOnButton( state );
}
break;
}
}
public void DrawShaderTitle( MenuParent nodeParametersWindow, MenuParent paletteWindow, float availableCanvasWidth, float graphAreaHeight, string shaderName )
{
float leftAdjust = nodeParametersWindow.IsMaximized ? nodeParametersWindow.RealWidth : 0;
float rightAdjust = paletteWindow.IsMaximized ? 0 : paletteWindow.RealWidth;
m_boxRect = new Rect( leftAdjust + rightAdjust, 0, availableCanvasWidth, 35 );
m_boxRect.x += paletteWindow.IsMaximized ? 0 : -paletteWindow.RealWidth;
m_boxRect.width += nodeParametersWindow.IsMaximized ? 0 : nodeParametersWindow.RealWidth;
m_boxRect.width += paletteWindow.IsMaximized ? 0 : paletteWindow.RealWidth;
m_borderRect = new Rect( m_boxRect );
m_borderRect.height = graphAreaHeight;
int extra = m_searchBarVisible ? (int)m_searchBarSize.width + 20: 0;
//m_boxRect.xMax -= ( paletteWindow.IsMaximized ? 195 : 230 ) + extra;
//m_boxRect.xMin += nodeParametersWindow.IsMaximized ? 95 : 145;
UIUtils.ToolbarMainTitle.padding.right = ( paletteWindow.IsMaximized ? 195 : 230 ) + extra;
UIUtils.ToolbarMainTitle.padding.left = nodeParametersWindow.IsMaximized ? 110 : 145;
if ( m_borderStyle == null )
{
m_borderStyle = ( ParentWindow.CurrentGraph.CurrentMasterNode == null ) ? UIUtils.GetCustomStyle( CustomStyle.ShaderFunctionBorder ) : UIUtils.GetCustomStyle( CustomStyle.ShaderBorder );
}
GUI.Label( m_borderRect, shaderName, m_borderStyle );
GUI.Label( m_boxRect, shaderName, UIUtils.ToolbarMainTitle );
}
public override bool IsInside( Vector2 position )
{
if ( !m_isActive )
return false;
return m_boxRect.Contains( position ) || m_areaLeft.Contains( position ) || m_areaRight.Contains( position );
}
public GUIStyle BorderStyle
{
get { return m_borderStyle; }
set { m_borderStyle = value; }
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: b1c1f3bedf849cb41a1648bf895bc0f7
timeCreated: 1481126958
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,9 @@
fileFormatVersion: 2
guid: 08d94054f82fc06498060596f83da0ba
folderAsset: yes
timeCreated: 1481126943
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,55 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using UnityEngine;
namespace AmplifyShaderEditor
{
[Serializable]
public class FallbackColor : IFallbackVars
{
[SerializeField]
private Color m_current;
[SerializeField]
private Color m_previous;
public FallbackColor()
{
m_current = new Color(0, 0, 0, 0);
m_previous = new Color(0, 0, 0, 0);
}
public FallbackColor(Color data)
{
m_current = data;
m_previous = data;
}
public void Revert()
{
Color aux = m_current;
m_current = m_previous;
m_previous = aux;
}
public Color Current
{
get
{
return m_current;
}
set
{
m_previous = m_current;
m_current = value;
}
}
public override string ToString()
{
return m_current.ToString();
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 8c6dccc523e2ad440a82edd582b84a45
timeCreated: 1481126957
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,56 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using UnityEngine;
namespace AmplifyShaderEditor
{
[Serializable]
public class FallbackFloat : IFallbackVars
{
[SerializeField]
private float m_current;
[SerializeField]
private float m_previous;
public FallbackFloat()
{
m_current = 0;
m_previous = 0;
}
public FallbackFloat( float data )
{
m_current = data;
m_previous = data;
}
public void Revert()
{
float aux = m_current;
m_current = m_previous;
m_previous = aux;
}
public float Current
{
get
{
return m_current;
}
set
{
m_previous = m_current;
m_current = value;
}
}
public override string ToString()
{
return m_current.ToString();
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: a957e66c7a41d6848966d526c9687347
timeCreated: 1481126958
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,56 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using UnityEngine;
namespace AmplifyShaderEditor
{
[Serializable]
public class FallbackInt : IFallbackVars
{
[SerializeField]
private int m_current;
[SerializeField]
private int m_previous;
public FallbackInt()
{
m_current = 0;
m_previous = 0;
}
public FallbackInt( int data )
{
m_current = data;
m_previous = data;
}
public void Revert()
{
int aux = m_current;
m_current = m_previous;
m_previous = aux;
}
public int Current
{
get
{
return m_current;
}
set
{
m_previous = m_current;
m_current = value;
}
}
public override string ToString()
{
return m_current.ToString();
}
}
}

@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 09c28ab321caf3b47839606e37d3cdd2
timeCreated: 1481126953
licenseType: Store
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

@ -0,0 +1,55 @@
// Amplify Shader Editor - Visual Shader Editing Tool
// Copyright (c) Amplify Creations, Lda <info@amplify.pt>
using System;
using UnityEngine;
namespace AmplifyShaderEditor
{
[Serializable]
public class FallbackMatrix4x4 : IFallbackVars
{
[SerializeField]
private Matrix4x4 m_current;
[SerializeField]
private Matrix4x4 m_previous;
public FallbackMatrix4x4()
{
m_current = new Matrix4x4();
m_previous = new Matrix4x4();
}
public FallbackMatrix4x4( Matrix4x4 data )
{
m_current = data;
m_previous = data;
}
public void Revert()
{
Matrix4x4 aux = m_current;
m_current = m_previous;
m_previous = aux;
}
public Matrix4x4 Current
{
get
{
return m_current;
}
set
{
m_previous = m_current;
m_current = value;
}
}
public override string ToString()
{
return m_current.ToString();
}
}
}

Some files were not shown because too many files have changed in this diff Show More