Plasma Engine  2.0
Loading...
Searching...
No Matches
MeshImportUtils.h
1#pragma once
2
3#include <EditorPluginAssets/EditorPluginAssetsDLL.h>
4#include <EditorPluginAssets/Util/AssetUtils.h>
5#include <RendererCore/Meshes/MeshBufferUtils.h>
6
8
9namespace plModelImporter2
10{
11 class Importer;
12 enum class TextureSemantic : plInt8;
13} // namespace plModelImporter2
14
15namespace plMeshImportUtils
16{
17 PL_EDITORPLUGINASSETS_DLL plString ImportOrResolveTexture(const char* szImportSourceFolder, const char* szImportTargetFolder, const char* szTexturePath, plModelImporter2::TextureSemantic hint, bool bTextureClamp);
18
19 // PL_EDITORPLUGINASSETS_DLL void ImportMaterial(plMaterialAssetDocument* materialDocument, const plModelImporter::Material* material, const char* szImportSourceFolder, const char* szImportTargetFolder);
20
21 // PL_EDITORPLUGINASSETS_DLL void ImportMeshMaterials(const plModelImporter::Scene& scene, const plModelImporter::Mesh& mesh, plHybridArray<plMaterialResourceSlot, 8>& inout_MaterialSlots, const char* szImportSourceFolder, const char* szImportTargetFolder);
22
23 // PL_EDITORPLUGINASSETS_DLL void ImportMeshAssetMaterials(const char* szAssetDocument, const char* szMeshFile, bool bUseSubFolderForImportedMaterials, const plModelImporter::Scene& scene, const plModelImporter::Mesh& mesh, plHybridArray<plMaterialResourceSlot, 8>& inout_MaterialSlots);
24
25 // PL_EDITORPLUGINASSETS_DLL const plString GetResourceSlotProperty(const plHybridArray<plMaterialResourceSlot, 8>& materialSlots, plUInt32 uiSlot);
26
27 // PL_EDITORPLUGINASSETS_DLL void AddMeshToDescriptor(plMeshResourceDescriptor& meshDescriptor, const plModelImporter::Scene& scene, const plModelImporter::Mesh& mesh, const plHybridArray<plMaterialResourceSlot, 8>& materialSlots);
28
29 // PL_EDITORPLUGINASSETS_DLL void UpdateMaterialSlots(plStringView sDocumentPath, const plModelImporter::Scene& scene, const plModelImporter::Mesh& mesh, bool bImportMaterials, bool bUseSubFolderForImportedMaterials, const char* szMeshFile, plHybridArray<plMaterialResourceSlot, 8>& inout_MaterialSlots);
30
31 // PL_EDITORPLUGINASSETS_DLL void PrepareMeshForImport(plModelImporter::Mesh& mesh, bool bRecalculateNormals, plProgressRange& range);
32
33 // PL_EDITORPLUGINASSETS_DLL plStatus GenerateMeshBuffer(const plModelImporter::Mesh& mesh, plMeshResourceDescriptor& meshDescriptor, const plMat3& mTransformation, bool bInvertNormals, plMeshNormalPrecision::Enum normalPrecision, plMeshTexCoordPrecision::Enum texCoordPrecision, bool bSkinnedMesh);
34
35 // PL_EDITORPLUGINASSETS_DLL plStatus TryImportMesh(plSharedPtr<plModelImporter::Scene>& out_pScene, plModelImporter::Mesh*& out_pMesh, const char* szMeshFile, const char* szSubMeshName, const plMat3& mMeshTransform, bool bRecalculateNormals, bool bInvertNormals, plMeshNormalPrecision::Enum normalPrecision, plMeshTexCoordPrecision::Enum texCoordPrecision, plProgressRange& range, plMeshResourceDescriptor& meshDescriptor, bool bSkinnedMesh);
36
37 PL_EDITORPLUGINASSETS_DLL void SetMeshAssetMaterialSlots(plHybridArray<plMaterialResourceSlot, 8>& inout_materialSlots, const plModelImporter2::Importer* pImporter);
38 PL_EDITORPLUGINASSETS_DLL void CopyMeshAssetMaterialSlotToResource(plMeshResourceDescriptor& ref_desc, const plHybridArray<plMaterialResourceSlot, 8>& materialSlots);
39 PL_EDITORPLUGINASSETS_DLL void ImportMeshAssetMaterials(plHybridArray<plMaterialResourceSlot, 8>& inout_materialSlots, plStringView sDocumentDirectory, const plModelImporter2::Importer* pImporter);
40} // namespace plMeshImportUtils
A hybrid array uses in-place storage to handle the first few elements without any allocation....
Definition HybridArray.h:12
Definition MeshResourceDescriptor.h:9
Definition Importer.h:85
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34