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); } }
/// <summary> /// Creates a new instance of an <see cref="EntityComponent"/>. /// </summary> public static EntityComponent GetComponent(Entity parent, EntityComponentModel dataModel) { EnsureComponentCreatorsAreLoaded(); var parameters = new EntityComponentDataCreationStruct { Parent = parent, Data = dataModel.Data, Name = dataModel.Id }; Type componentType; if (_componentsByType.TryGetValue(dataModel.Id.ToLowerInvariant(), out componentType)) { return (EntityComponent)Activator.CreateInstance(componentType, parameters); } // fallback entity component: return new DataStorageEntityComponent(parameters); }
/// <summary> /// Creates a new instance of an <see cref="EntityComponent"/>. /// </summary> public static EntityComponent GetComponent(Entity parent, EntityComponentModel dataModel) { EnsureComponentCreatorsAreLoaded(); var parameters = new EntityComponentDataCreationStruct { Parent = parent, Data = dataModel.Data, Name = dataModel.Id }; Type componentType; if (_componentsByType.TryGetValue(dataModel.Id.ToLowerInvariant(), out componentType)) { return((EntityComponent)Activator.CreateInstance(componentType, parameters)); } // fallback entity component: return(new DataStorageEntityComponent(parameters)); }