public static bool doCombinedValidate(MB2_MeshBakerRoot mom, MB_ObjsToCombineTypes objToCombineType, MB2_EditorMethodsInterface editorMethods){ if (mom.textureBakeResults == null){ Debug.LogError("Need to set Material Bake Result on " + mom); return false; } if (!(mom is MB2_TextureBaker)){ MB2_TextureBaker tb = mom.GetComponent<MB2_TextureBaker>(); if (tb != null && tb.textureBakeResults != mom.textureBakeResults){ Debug.LogWarning("Material Bake Result on this component is not the same as the Material Bake Result on the MB2_TextureBaker."); } } List<GameObject> objsToMesh = mom.GetObjectsToCombine(); for (int i = 0; i < objsToMesh.Count; i++){ GameObject go = objsToMesh[i]; if (go == null){ Debug.LogError("The list of objects to combine contains a null at position." + i + " Select and use [shift] delete to remove"); return false; } for (int j = i + 1; j < objsToMesh.Count; j++){ if (objsToMesh[i] == objsToMesh[j]){ Debug.LogError("The list of objects to combine contains duplicates."); return false; } } if (MB_Utility.GetGOMaterials(go) == null){ Debug.LogError("Object " + go + " in the list of objects to be combined does not have a material"); return false; } if (MB_Utility.GetMesh(go) == null){ Debug.LogError("Object " + go + " in the list of objects to be combined does not have a mesh"); return false; } } if (mom.textureBakeResults.doMultiMaterial){ if (!validateSubmeshOverlap(mom)){//only warns currently return false; } } List<GameObject> objs = objsToMesh; if (mom is MB2_MeshBaker){ MB2_TextureBaker tb = mom.GetComponent<MB2_TextureBaker>(); if (((MB2_MeshBaker)mom).useObjsToMeshFromTexBaker && tb != null) objs = tb.objsToMesh; if (objs == null || objs.Count == 0){ Debug.LogError("No meshes to combine. Please assign some meshes to combine."); return false; } if (mom is MB2_MeshBaker && ((MB2_MeshBaker)mom).renderType == MB_RenderType.skinnedMeshRenderer){ if (!editorMethods.ValidateSkinnedMeshes(objs)){ return false; } } } if (editorMethods != null){ editorMethods.CheckPrefabTypes(objToCombineType, objsToMesh); } return true; }
public static bool doCombinedValidate(MB2_MeshBakerRoot mom, MB_ObjsToCombineTypes objToCombineType) { // MB2_MeshBaker mom = (MB2_MeshBaker) target; if (mom.textureBakeResults == null) { Debug.LogError("Need to set textureBakeResults"); return(false); } if (!(mom is MB2_TextureBaker)) { MB2_TextureBaker tb = mom.GetComponent <MB2_TextureBaker>(); if (tb != null && tb.textureBakeResults != mom.textureBakeResults) { Debug.LogWarning("textureBakeResults on this component is not the same as the textureBakeResults on the MB2_TextureBaker."); } } List <GameObject> objsToMesh = mom.GetObjectsToCombine(); for (int i = 0; i < objsToMesh.Count; i++) { GameObject go = objsToMesh[i]; if (go == null) { Debug.LogError("The list of objects to combine contains nulls."); return(false); } for (int j = i + 1; j < objsToMesh.Count; j++) { if (objsToMesh[i] == objsToMesh[j]) { Debug.LogError("The list of objects to combine contains duplicates."); return(false); } } if (MB_Utility.GetGOMaterials(go) == null) { Debug.LogError("Object " + go + " in the list of objects to be combined does not have a material"); return(false); } if (MB_Utility.GetMesh(go) == null) { Debug.LogError("Object " + go + " in the list of objects to be combined does not have a mesh"); return(false); } } if (mom.textureBakeResults.doMultiMaterial) { if (!validateSubmeshOverlap(mom)) //only warns currently { return(false); } } List <GameObject> objs = objsToMesh; if (mom is MB2_MeshBaker) { MB2_TextureBaker tb = mom.GetComponent <MB2_TextureBaker>(); if (((MB2_MeshBaker)mom).useObjsToMeshFromTexBaker && tb != null) { objs = tb.objsToMesh; } if (objs == null || objs.Count == 0) { Debug.LogError("No meshes to combine. Please assign some meshes to combine."); return(false); } } #if UNITY_EDITOR for (int i = 0; i < objsToMesh.Count; i++) { UnityEditor.PrefabType pt = UnityEditor.PrefabUtility.GetPrefabType(objsToMesh[i]); if (pt == UnityEditor.PrefabType.None || pt == UnityEditor.PrefabType.PrefabInstance || pt == UnityEditor.PrefabType.ModelPrefabInstance || pt == UnityEditor.PrefabType.DisconnectedPrefabInstance || pt == UnityEditor.PrefabType.DisconnectedModelPrefabInstance) { // these are scene objects if (objToCombineType == MB_ObjsToCombineTypes.prefabOnly) { Debug.LogWarning("The list of objects to combine contains scene objects. You probably want prefabs." + objsToMesh[i] + " is a scene object"); } } else if (objToCombineType == MB_ObjsToCombineTypes.sceneObjOnly) { //these are prefabs Debug.LogWarning("The list of objects to combine contains prefab objects. You probably want scene objects." + objsToMesh[i] + " is a prefab object"); } } #endif return(true); }
public static bool doCombinedValidate(MB2_MeshBakerRoot mom, MB_ObjsToCombineTypes objToCombineType, MB2_EditorMethodsInterface editorMethods) { if (mom.textureBakeResults == null) { Debug.LogError("Need to set Material Bake Result on " + mom); return(false); } if (!(mom is MB2_TextureBaker)) { MB2_TextureBaker tb = mom.GetComponent <MB2_TextureBaker>(); if (tb != null && tb.textureBakeResults != mom.textureBakeResults) { Debug.LogWarning("Material Bake Result on this component is not the same as the Material Bake Result on the MB2_TextureBaker."); } } List <GameObject> objsToMesh = mom.GetObjectsToCombine(); for (int i = 0; i < objsToMesh.Count; i++) { GameObject go = objsToMesh[i]; if (go == null) { Debug.LogError("The list of objects to combine contains a null at position." + i + " Select and use [shift] delete to remove"); return(false); } for (int j = i + 1; j < objsToMesh.Count; j++) { if (objsToMesh[i] == objsToMesh[j]) { Debug.LogError("The list of objects to combine contains duplicates."); return(false); } } if (MB_Utility.GetGOMaterials(go) == null) { Debug.LogError("Object " + go + " in the list of objects to be combined does not have a material"); return(false); } if (MB_Utility.GetMesh(go) == null) { Debug.LogError("Object " + go + " in the list of objects to be combined does not have a mesh"); return(false); } } if (mom.textureBakeResults.doMultiMaterial) { if (!validateSubmeshOverlap(mom)) //only warns currently { return(false); } } List <GameObject> objs = objsToMesh; if (mom is MB2_MeshBaker) { MB2_TextureBaker tb = mom.GetComponent <MB2_TextureBaker>(); if (((MB2_MeshBaker)mom).useObjsToMeshFromTexBaker && tb != null) { objs = tb.objsToMesh; } if (objs == null || objs.Count == 0) { Debug.LogError("No meshes to combine. Please assign some meshes to combine."); return(false); } if (mom is MB2_MeshBaker && ((MB2_MeshBaker)mom).renderType == MB_RenderType.skinnedMeshRenderer) { if (!editorMethods.ValidateSkinnedMeshes(objs)) { return(false); } } } if (editorMethods != null) { editorMethods.CheckPrefabTypes(objToCombineType, objsToMesh); } return(true); }