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);
}
}