public string ExportAssetToModels(string sourceAssetPath) { var targetFilePath = Path.Combine(GetModelsPath(), Path.GetFileName(sourceAssetPath) ?? ""); if (!_exportedFilePaths.Contains(sourceAssetPath)) { File.Copy(sourceAssetPath, targetFilePath, true); _exportedFilePaths.Add(sourceAssetPath); } return Path.GetFileName(sourceAssetPath); }
private void MayAttachVisualModel(EntityModel entity, GameObject gameObject) { var meshRendererComponent = gameObject.GetComponent <MeshRenderer>(); var meshFilterComponent = gameObject.GetComponent <MeshFilter>(); if (meshFilterComponent == null || meshRendererComponent == null) { return; } entity.Id = gameObject.name; entity.IsStatic = gameObject.isStatic; var componentModel = new EntityComponentModel { Id = "VisualModel" }; var meshReferenceItem = new EntityComponentDataItemModel { Key = "MeshReference" }; componentModel.Data.Add(meshReferenceItem); entity.Components.Add(componentModel); var exportsModel = _exportType != ModelExportType.No; var path = AssetDatabase.GetAssetPath(meshFilterComponent.sharedMesh ?? meshFilterComponent.mesh); if (!string.IsNullOrEmpty(path) && exportsModel) { if (_exportType == ModelExportType.OriginalModelFile) { meshReferenceItem.Value = _filePathExporter.ExportAssetToModels(path); } else { meshReferenceItem.Value = ConvertModelToPmeshAndSaveToFolder(meshFilterComponent.sharedMesh ?? meshFilterComponent.mesh, meshRendererComponent.material, path); } } var texture = meshRendererComponent.sharedMaterial.mainTexture; var textureAssetPath = AssetDatabase.GetAssetPath(texture); if (!string.IsNullOrEmpty(textureAssetPath) && exportsModel) { _filePathExporter.ExportAssetToModels(textureAssetPath); } }