public void UpdateDetails() { int numberOfDetails = 0; if (details != null) { numberOfDetails = details.Length; } for (int i = 0; i < numberOfDetails; i++) { DestroyImmediate(details[i]); } if (data.plan == null) { return; } if (data.floorHeight == 0) { return; } if (data.details.Count == 0) { return; } if (detailMesh == null) { detailMesh = new DynamicMeshGenericMultiMaterialMesh(); } if (renderMode != renderModes.full) { return;//once data is cleared - asses if we want to rerender the details } details = BuildrBuildingDetails.Render(detailMesh, data); numberOfDetails = details.Length; for (int i = 0; i < numberOfDetails; i++) { details[i].transform.parent = transform; details[i].transform.localPosition = Vector3.zero; details[i].transform.localRotation = Quaternion.identity; } }
//returns the number of meshes private static int ExportDetails(BuildrData data) { DynamicMeshGenericMultiMaterialMesh DET_MESH = new DynamicMeshGenericMultiMaterialMesh(); BuildrDetailExportObject exportObject = BuildrBuildingDetails.Build(DET_MESH, data); int numberOfMeshes = exportObject.detailMeshes.Length; if (numberOfMeshes == 0) { return(0); } string textureName = data.exportFilename + ATLASED_SUFFIX + DETAIL_SUFFIX; string textureFileName = textureName + ".png"; string newDirectory = ROOT_FOLDER + data.exportFilename; File.WriteAllBytes(newDirectory + "/" + textureFileName, exportObject.texture.EncodeToPNG()); ExportMaterial[] exportTextures = new ExportMaterial[1]; ExportMaterial newTexture = new ExportMaterial(); newTexture.name = textureName; newTexture.filepath = textureFileName; newTexture.generated = true; exportTextures[0] = newTexture; for (int i = 0; i < numberOfMeshes; i++) { string DetailSuffixIndex = ((numberOfMeshes > 1) ? "_" + i : ""); string DetailFileName = data.exportFilename + DETAIL_SUFFIX + DetailSuffixIndex; string DetailFolder = ROOT_FOLDER + data.exportFilename + "/"; Export(DetailFileName, DetailFolder, data, exportObject.detailMeshes[i], exportTextures); } Texture2D.DestroyImmediate(exportObject.texture); return(numberOfMeshes); }