/// <summary> /// Get all textures from a material /// </summary> /// <returns>The textures from material.</returns> /// <param name="mat">Mat.</param> public static bool getTexturesFromMaterial(Material mat, ref ArrayList propNames, ref ArrayList texNames, ref ArrayList texPaths) { bool ret = false; if (mat == null) { Debug.LogWarning("The mat is null"); return(ret); } Shader shader = mat.shader; string propName = ""; for (int i = 0; i < ShaderUtil.GetPropertyCount(shader); i++) { if (ShaderUtil.GetPropertyType(shader, i) == ShaderUtil.ShaderPropertyType.TexEnv) { propName = ShaderUtil.GetPropertyName(shader, i); Texture texture = mat.GetTexture(propName); if (texture != null) { ret = ECLEditorUtl.moveAsset4Upgrade(texture) || ret ? true : false; propNames.Add(propName); texNames.Add(ECLEditorUtl.getAssetName4Upgrade(texture)); texPaths.Add(ECLEditorUtl.getPathByObject(texture)); } } } return(ret); }
/// <summary> /// Gets the material reference. /// </summary> /// <returns><c>true</c>, 说明有新资源移动到开发目录 <c>false</c> otherwise.</returns> /// <param name="sharedAsset">Shared asset.</param> /// <param name="tr">Tr.</param> public static bool getMaterialRef(CLSharedAssets sharedAsset, Transform tr) { bool ret = false; bool ret1 = false; bool ret2 = false; bool ret3 = false; Renderer[] rds = tr.GetComponents <Renderer> (); Renderer rd = null; for (int r = 0; r < rds.Length; r++) { rd = rds [r]; if (rd == null) { continue; } if (rd.sharedMaterials != null && rd.sharedMaterials.Length > 0) { for (int i = 0; i < rd.sharedMaterials.Length; i++) { if (rd.sharedMaterials [i] == null) { continue; } Coolape.CLSharedAssets.CLMaterialInfor clMat = new Coolape.CLSharedAssets.CLMaterialInfor(); clMat.render = rd; clMat.index = i; ret1 = ECLEditorUtl.moveAsset4Upgrade(rd.sharedMaterials [i]) || ret1 ? true : false; string materialName = ECLEditorUtl.getAssetName4Upgrade(rd.sharedMaterials [i]); clMat.materialName = materialName; sharedAsset.materials.Add(clMat); // save to cfg file ArrayList propNames = new ArrayList(); ArrayList texNames = new ArrayList(); ArrayList texPaths = new ArrayList(); ret2 = ECLEditorUtl.getTexturesFromMaterial(rd.sharedMaterials [i], ref propNames, ref texNames, ref texPaths) || ret2 ? true : false; saveMaterialTexCfg(materialName, propNames, texNames, texPaths); } } } for (int i = 0; i < tr.childCount; i++) { ret3 = getMaterialRef(sharedAsset, tr.GetChild(i)) || ret3 ? true : false; } return(ret1 || ret2 || ret3); }
public static bool getMeshRef(CLSharedAssets sharedAsset, Transform tr) { bool ret = false; bool ret1 = false; bool ret2 = false; bool ret3 = false; MeshFilter[] mfs = tr.GetComponents <MeshFilter> (); Mesh mesh = null; for (int i = 0; i < mfs.Length; i++) { mesh = (mfs [i]).sharedMesh; if (mesh != null) { Coolape.CLSharedAssets.CLMeshInfor clMesh = new Coolape.CLSharedAssets.CLMeshInfor(); clMesh.meshFilter = mfs [i]; ret1 = ECLEditorUtl.moveAsset4Upgrade(mfs [i].sharedMesh) || ret1 ? true : false; string modelName = ECLEditorUtl.getAssetName4Upgrade(mfs [i].sharedMesh); ECLEditorUtl.cleanModleMaterials(modelName); clMesh.modelName = modelName; clMesh.meshName = mesh.name; sharedAsset.meshs.Add(clMesh); } } SkinnedMeshRenderer[] smrs = tr.GetComponents <SkinnedMeshRenderer> (); for (int i = 0; i < smrs.Length; i++) { mesh = (smrs [i]).sharedMesh; if (mesh != null) { Coolape.CLSharedAssets.CLMeshInfor clMesh = new Coolape.CLSharedAssets.CLMeshInfor(); clMesh.skinnedMesh = smrs [i]; ret2 = ECLEditorUtl.moveAsset4Upgrade(smrs [i].sharedMesh) || ret2 ? true : false; string modelName = ECLEditorUtl.getAssetName4Upgrade(smrs [i].sharedMesh); ECLEditorUtl.cleanModleMaterials(modelName); clMesh.modelName = modelName; clMesh.meshName = mesh.name; sharedAsset.meshs.Add(clMesh); } } Animator[] anis = tr.GetComponents <Animator> (); for (int i = 0; i < anis.Length; i++) { if (anis [i].avatar == null) { continue; } Coolape.CLSharedAssets.CLMeshInfor clMesh = new Coolape.CLSharedAssets.CLMeshInfor(); ret2 = ECLEditorUtl.moveAsset4Upgrade(anis [i].avatar) || ret2 ? true : false; string modelName = ECLEditorUtl.getAssetName4Upgrade(anis [i].avatar); clMesh.modelName = modelName; clMesh.animator = anis [i]; sharedAsset.meshs.Add(clMesh); } for (int i = 0; i < tr.childCount; i++) { ret3 = getMeshRef(sharedAsset, tr.GetChild(i)) || ret3 ? true : false; } return(ret1 || ret2 || ret3); }