public static bool bake(MB3_MeshBakerCommon mom) { bool createdDummyTextureBakeResults = false; bool success = false; try{ if (mom.meshCombiner.outputOption == MB2_OutputOptions.bakeIntoSceneObject || mom.meshCombiner.outputOption == MB2_OutputOptions.bakeIntoPrefab) { success = MB3_MeshBakerEditorFunctions.BakeIntoCombined(mom, out createdDummyTextureBakeResults); } else { //bake meshes in place if (mom is MB3_MeshBaker) { if (MB3_MeshCombiner.EVAL_VERSION) { Debug.LogError("Bake Meshes In Place is disabled in the evaluation version."); } else { MB2_ValidationLevel vl = Application.isPlaying ? MB2_ValidationLevel.quick : MB2_ValidationLevel.robust; if (!MB3_MeshBakerRoot.DoCombinedValidate(mom, MB_ObjsToCombineTypes.prefabOnly, new MB3_EditorMethods(), vl)) { return(false); } List <GameObject> objsToMesh = mom.GetObjectsToCombine(); Mesh m = MB3_BakeInPlace.BakeMeshesInPlace((MB3_MeshCombinerSingle)((MB3_MeshBaker)mom).meshCombiner, objsToMesh, mom.bakeAssetsInPlaceFolderPath, updateProgressBar); if (m != null) { success = true; } } } else { Debug.LogError("Multi-mesh Baker components cannot be used for Bake In Place. Use an ordinary Mesh Baker object instead."); } } if (mom.clearBuffersAfterBake) { mom.meshCombiner.ClearBuffers(); } mom.meshCombiner.CheckIntegrity(); } catch (Exception e) { Debug.LogError(e); } finally { if (createdDummyTextureBakeResults) { GameObject.DestroyImmediate(mom.textureBakeResults); mom.textureBakeResults = null; } EditorUtility.ClearProgressBar(); } return(success); }
void bake(MB3_MeshBakerCommon mom) { try{ if (mom.meshCombiner.outputOption == MB2_OutputOptions.bakeIntoSceneObject) { MB3_MeshBakerEditorFunctions.BakeIntoCombined(mom); } else if (mom.meshCombiner.outputOption == MB2_OutputOptions.bakeIntoPrefab) { MB3_MeshBakerEditorFunctions.BakeIntoCombined(mom); } else { if (mom is MB3_MeshBaker) { if (MB3_MeshCombiner.EVAL_VERSION) { Debug.LogError("Bake Meshes In Place is disabled in the evaluation version."); } else { if (!MB3_MeshBakerRoot.DoCombinedValidate(mom, MB_ObjsToCombineTypes.prefabOnly, new MB3_EditorMethods())) { return; } List <GameObject> objsToMesh = mom.objsToMesh; if (mom.useObjsToMeshFromTexBaker && mom.GetComponent <MB3_TextureBaker>() != null) { objsToMesh = mom.GetComponent <MB3_TextureBaker>().objsToMesh; } MB3_BakeInPlace.BakeMeshesInPlace((MB3_MeshCombinerSingle)((MB3_MeshBaker)mom).meshCombiner, objsToMesh, mom.bakeAssetsInPlaceFolderPath, updateProgressBar); } } else { Debug.LogError("Multi-mesh Baker components cannot be used for Bake In Place. Use an ordinary Mesh Baker object instead."); } } } catch (Exception e) { Debug.LogError(e); } finally { EditorUtility.ClearProgressBar(); } }
void bake(MB3_MeshBakerCommon mom) { bool createdDummyTextureBakeResults = false; try{ if (mom.textureBakeResults == null) { if (_OkToCreateDummyTextureBakeResult(mom)) { createdDummyTextureBakeResults = true; List <GameObject> gos = mom.GetObjectsToCombine(); mom.textureBakeResults = MB2_TextureBakeResults.CreateForMaterialsOnRenderer(MB_Utility.GetRenderer(gos[0])); } } if (mom.meshCombiner.outputOption == MB2_OutputOptions.bakeIntoSceneObject) { MB3_MeshBakerEditorFunctions.BakeIntoCombined(mom); } else if (mom.meshCombiner.outputOption == MB2_OutputOptions.bakeIntoPrefab) { MB3_MeshBakerEditorFunctions.BakeIntoCombined(mom); } else { if (mom is MB3_MeshBaker) { if (MB3_MeshCombiner.EVAL_VERSION) { Debug.LogError("Bake Meshes In Place is disabled in the evaluation version."); } else { MB2_ValidationLevel vl = Application.isPlaying ? MB2_ValidationLevel.quick : MB2_ValidationLevel.robust; if (!MB3_MeshBakerRoot.DoCombinedValidate(mom, MB_ObjsToCombineTypes.prefabOnly, new MB3_EditorMethods(), vl)) { return; } List <GameObject> objsToMesh = mom.GetObjectsToCombine(); //objsToMesh = mom.GetComponent<MB3_TextureBaker>().GetObjectsToCombine(); MB3_BakeInPlace.BakeMeshesInPlace((MB3_MeshCombinerSingle)((MB3_MeshBaker)mom).meshCombiner, objsToMesh, mom.bakeAssetsInPlaceFolderPath, updateProgressBar); } } else { Debug.LogError("Multi-mesh Baker components cannot be used for Bake In Place. Use an ordinary Mesh Baker object instead."); } } if (mom.clearBuffersAfterBake) { mom.meshCombiner.ClearBuffers(); } } catch (Exception e) { Debug.LogError(e); } finally { if (createdDummyTextureBakeResults) { GameObject.DestroyImmediate(mom.textureBakeResults); mom.textureBakeResults = null; } EditorUtility.ClearProgressBar(); } }
void bake(MB3_MeshBakerCommon mom) { bool createdDummyTextureBakeResults = false; try{ if (mom.textureBakeResults == null) { if (_OkToCreateDummyTextureBakeResult(mom)) { createdDummyTextureBakeResults = true; MB2_TextureBakeResults tbr = (MB2_TextureBakeResults)ScriptableObject.CreateInstance(typeof(MB2_TextureBakeResults)); List <GameObject> gos = mom.GetObjectsToCombine(); Material[] ms = MB_Utility.GetGOMaterials(gos[0]); tbr.resultMaterial = ms[0]; tbr.fixOutOfBoundsUVs = false; tbr.materials = ms; tbr.resultMaterials = new MB_MultiMaterial[ms.Length]; if (ms.Length > 1) { tbr.prefabUVRects = new Rect[ms.Length]; for (int i = 0; i < ms.Length; i++) { tbr.prefabUVRects[i] = new Rect(0f, 0f, 1f, 1f); tbr.resultMaterials[i] = new MB_MultiMaterial(); List <Material> sourceMats = new List <Material>(); sourceMats.Add(ms[i]); tbr.resultMaterials[i].sourceMaterials = sourceMats; tbr.resultMaterials[i].combinedMaterial = ms[i]; } tbr.doMultiMaterial = true; } else { tbr.doMultiMaterial = false; tbr.prefabUVRects = new Rect[] { new Rect(0f, 0f, 1f, 1f) }; } mom.textureBakeResults = tbr; createdDummyTextureBakeResults = true; } } if (mom.meshCombiner.outputOption == MB2_OutputOptions.bakeIntoSceneObject) { MB3_MeshBakerEditorFunctions.BakeIntoCombined(mom); } else if (mom.meshCombiner.outputOption == MB2_OutputOptions.bakeIntoPrefab) { MB3_MeshBakerEditorFunctions.BakeIntoCombined(mom); } else { if (mom is MB3_MeshBaker) { if (MB3_MeshCombiner.EVAL_VERSION) { Debug.LogError("Bake Meshes In Place is disabled in the evaluation version."); } else { if (!MB3_MeshBakerRoot.DoCombinedValidate(mom, MB_ObjsToCombineTypes.prefabOnly, new MB3_EditorMethods())) { return; } List <GameObject> objsToMesh = mom.GetObjectsToCombine(); //objsToMesh = mom.GetComponent<MB3_TextureBaker>().GetObjectsToCombine(); MB3_BakeInPlace.BakeMeshesInPlace((MB3_MeshCombinerSingle)((MB3_MeshBaker)mom).meshCombiner, objsToMesh, mom.bakeAssetsInPlaceFolderPath, updateProgressBar); } } else { Debug.LogError("Multi-mesh Baker components cannot be used for Bake In Place. Use an ordinary Mesh Baker object instead."); } } if (mom.clearBuffersAfterBake) { mom.meshCombiner.ClearBuffers(); } } catch (Exception e) { Debug.LogError(e); } finally { if (createdDummyTextureBakeResults) { GameObject.DestroyImmediate(mom.textureBakeResults); mom.textureBakeResults = null; } EditorUtility.ClearProgressBar(); } }