Ejemplo n.º 1
0
    /// <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);
    }
Ejemplo n.º 2
0
    public static void resetShardAssets(UnityEngine.Object obj)
    {
        CLSharedAssets sharedAsset = null;
        CLRoleAvata    avata       = null;

        if (obj != null && obj is GameObject)
        {
            // 没搞明白,执行到这里时,textureMgr已经为null了,因此再取一次
            sharedAsset = ((GameObject)obj).GetComponent <CLSharedAssets> ();
            avata       = ((GameObject)obj).GetComponent <CLRoleAvata> ();

            UIFont font = ((GameObject)obj).GetComponent <UIFont> ();
            if (font != null)
            {
                if (!string.IsNullOrEmpty(font.atlasName))
                {
                    font.atlas = CLUIInit.self.getAtlasByName(font.atlasName);
                    if (font.atlas)
                    {
                        font.material = font.atlas.spriteMaterial;
                    }
                }
            }
        }
        else if (obj != null && obj is Material)
        {
            CLMaterialPool.resetTexRef(ECLEditorUtl.getAssetName4Upgrade(obj), (Material)obj, null, null);
            sharedAsset = null;
        }
        else
        {
            sharedAsset = null;
        }

        bool isRefresh = false;

        if (avata != null)
        {
            avata.setDefaultMaterial();
            isRefresh = true;
        }
        if (sharedAsset != null)
        {
            sharedAsset.reset();
            sharedAsset.resetAssets();
            isRefresh = true;
        }
        if (isRefresh && obj is GameObject)
        {
            //string path = AssetDatabase.GetAssetPath (obj);
            //EditorUtility.SetDirty (obj);
            //AssetDatabase.WriteImportSettingsIfDirty (path);
            //AssetDatabase.ImportAsset (path);
            PrefabUtility.SavePrefabAsset(obj as GameObject);
        }
    }
Ejemplo n.º 3
0
    public static void cleanShardAssets(UnityEngine.Object obj)
    {
        CLSharedAssets sharedAsset = null;
        CLRoleAvata    avata       = null;

        if (obj is GameObject)
        {
            sharedAsset = ((GameObject)obj).GetComponent <CLSharedAssets> ();
            avata       = ((GameObject)obj).GetComponent <CLRoleAvata> ();
            if (AssetDatabase.GetAssetPath(obj).Contains("/other/model/"))
            {
                ECLEditorUtl.cleanModleMaterials(AssetDatabase.GetAssetPath(obj));
            }
            UIFont font = ((GameObject)obj).GetComponent <UIFont> ();
            if (font != null)
            {
                string spName = font.spriteName;
                font.atlas      = null;
                font.material   = null;
                font.spriteName = spName;
            }
        }
        else if (obj is Material)
        {
            CLMaterialPool.cleanTexRef(ECLEditorUtl.getAssetName4Upgrade(obj), (Material)obj);
            sharedAsset = null;
        }
        else
        {
            sharedAsset = null;
        }
        bool isRefresh = false;

        if (avata != null)
        {
            avata.cleanMaterial();
            isRefresh = true;
        }
        if (sharedAsset != null)
        {
            sharedAsset.cleanRefAssets();
            isRefresh = true;
        }
        if (isRefresh && obj is GameObject)
        {
            //			AssetDatabase.Refresh ();
            //string path = AssetDatabase.GetAssetPath (obj);
            //EditorUtility.SetDirty (obj);
            //AssetDatabase.WriteImportSettingsIfDirty (path);
            //AssetDatabase.ImportAsset (path);
            PrefabUtility.SavePrefabAsset(obj as GameObject);
        }
    }
Ejemplo n.º 4
0
    /// <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);
    }
Ejemplo n.º 5
0
    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);
    }