Plasma Engine  2.0
Loading...
Searching...
No Matches
TextureAsset.h
1#pragma once
2
3#include <EditorFramework/Assets/AssetDocumentGenerator.h>
4#include <EditorFramework/Assets/SimpleAssetDocument.h>
5#include <EditorPluginAssets/TextureAsset/TextureAssetObjects.h>
6
8
10{
11 using StorageType = plUInt8;
12
13 enum Enum
14 {
15 RGBA,
16 RGB,
17 Red,
18 Green,
19 Blue,
20 Alpha,
21
22 Default = RGBA
23 };
24};
25PL_DECLARE_REFLECTABLE_TYPE(PL_NO_LINKAGE, plTextureChannelMode);
26
27class plTextureAssetDocument : public plSimpleAssetDocument<plTextureAssetProperties>
28{
30
31public:
33
34 // for previewing purposes
35 plEnum<plTextureChannelMode> m_ChannelMode;
36 plInt32 m_iTextureLod; // -1 == regular sampling, >= 0 == sample that level
37 bool m_bIsRenderTarget = false;
38
39protected:
40 virtual void InitializeAfterLoading(bool bFirstTimeCreation) override;
41 virtual plTransformStatus InternalTransformAsset(plStreamWriter& stream, plStringView sOutputTag, const plPlatformProfile* pAssetProfile, const plAssetFileHeader& AssetHeader, plBitflags<plTransformFlags> transformFlags) override { return plStatus(PL_SUCCESS); }
42 virtual plTransformStatus InternalTransformAsset(const char* szTargetFile, plStringView sOutputTag, const plPlatformProfile* pAssetProfile, const plAssetFileHeader& AssetHeader, plBitflags<plTransformFlags> transformFlags) override;
43
44 plStatus RunTexConv(const char* szTargetFile, const plAssetFileHeader& AssetHeader, bool bUpdateThumbnail, const plTextureAssetProfileConfig* pAssetConfig);
45
46 virtual void UpdateAssetDocumentInfo(plAssetDocumentInfo* pInfo) const override;
47};
48
50
52{
54
55public:
58
59 enum class TextureType
60 {
61 Diffuse,
62 Normal,
63 Occlusion,
64 Roughness,
65 Metalness,
66 ORM,
67 Height,
68 HDR,
69 Linear,
70 };
71
72 virtual void GetImportModes(plStringView sAbsInputFile, plDynamicArray<plAssetDocumentGenerator::ImportMode>& out_modes) const override;
73 virtual plStringView GetDocumentExtension() const override { return "plTextureAsset"; }
74 virtual plStringView GetGeneratorGroup() const override { return "Images"; }
75 virtual plStatus Generate(plStringView sInputFileAbs, plStringView sMode, plDynamicArray<plDocument*>& out_generatedDocuments) override;
76
77 static TextureType DetermineTextureType(plStringView sFile);
78};
Provides functionality for importing files as asset documents.
Definition AssetDocumentGenerator.h:23
Definition AssetDocumentInfo.h:7
Simple class to handle asset file headers (the very first bytes in all transformed asset files)
Definition AssetFileHeader.h:8
Definition DynamicArray.h:81
Definition PlatformProfile.h:25
Definition SimpleAssetDocument.h:23
Interface for binary out (write) streams.
Definition Stream.h:107
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Definition TextureAsset.h:52
virtual void GetImportModes(plStringView sAbsInputFile, plDynamicArray< plAssetDocumentGenerator::ImportMode > &out_modes) const override
Used to fill out which import modes may be available for the given asset.
Definition TextureAsset.cpp:590
virtual plStringView GetDocumentExtension() const override
Returns the target asset document file extension.
Definition TextureAsset.h:73
virtual plStringView GetGeneratorGroup() const override
Allows to merge the import modes of multiple generators in the UI in one group.
Definition TextureAsset.h:74
virtual plStatus Generate(plStringView sInputFileAbs, plStringView sMode, plDynamicArray< plDocument * > &out_generatedDocuments) override
Tells the generator to create a new asset document with the chosen mode.
Definition TextureAsset.cpp:763
Definition TextureAsset.h:28
virtual void UpdateAssetDocumentInfo(plAssetDocumentInfo *pInfo) const override
Override this to add custom data (e.g. additional file dependencies) to the info struct.
Definition TextureAsset.cpp:350
virtual plTransformStatus InternalTransformAsset(plStreamWriter &stream, plStringView sOutputTag, const plPlatformProfile *pAssetProfile, const plAssetFileHeader &AssetHeader, plBitflags< plTransformFlags > transformFlags) override
Override this and write the transformed file for the given szOutputTag into the given stream.
Definition TextureAsset.h:41
Definition TextureAssetManager.h:8
The plBitflags class allows you to work with type-safe bitflags.
Definition Bitflags.h:82
A custom enum implementation that allows to define the underlying storage type to control its memory ...
Definition Enum.h:37
An plResult with an additional message for the reason of failure.
Definition Status.h:12
Definition TextureAsset.h:10
Definition Declarations.h:114