Plasma Engine  2.0
Loading...
Searching...
No Matches
SkeletonAsset.h
1#pragma once
2
3#include <EditorFramework/Assets/AssetDocumentGenerator.h>
4#include <EditorFramework/Assets/SimpleAssetDocument.h>
5#include <RendererCore/AnimationSystem/EditableSkeleton.h>
6
8
11
13{
14 enum Type
15 {
16 RenderStateChanged,
17 Transformed,
18 };
19
20 plSkeletonAssetDocument* m_pDocument = nullptr;
21 Type m_Type;
22};
23
24class plSkeletonAssetDocument : public plSimpleAssetDocument<plEditableSkeleton>
25{
27
28public:
31
32 static void PropertyMetaStateEventHandler(plPropertyMetaStateEvent& e);
33
34 plStatus WriteResource(plStreamWriter& inout_stream, const plEditableSkeleton& skeleton) const;
35
36 bool m_bIsTransforming = false;
37
38 virtual plManipulatorSearchStrategy GetManipulatorSearchStrategy() const override
39 {
40 return plManipulatorSearchStrategy::SelectedObject;
41 }
42
43 const plEvent<const plSkeletonAssetEvent&>& Events() const { return m_Events; }
44
45 void SetRenderBones(bool bEnable);
46 bool GetRenderBones() const { return m_bRenderBones; }
47
48 void SetRenderColliders(bool bEnable);
49 bool GetRenderColliders() const { return m_bRenderColliders; }
50
51 void SetRenderJoints(bool bEnable);
52 bool GetRenderJoints() const { return m_bRenderJoints; }
53
54 void SetRenderSwingLimits(bool bEnable);
55 bool GetRenderSwingLimits() const { return m_bRenderSwingLimits; }
56
57 void SetRenderTwistLimits(bool bEnable);
58 bool GetRenderTwistLimits() const { return m_bRenderTwistLimits; }
59
60 void SetRenderPreviewMesh(bool bEnable);
61 bool GetRenderPreviewMesh() const { return m_bRenderPreviewMesh; }
62
63protected:
64 virtual void UpdateAssetDocumentInfo(plAssetDocumentInfo* pInfo) const override;
65 virtual plTransformStatus InternalTransformAsset(plStreamWriter& stream, plStringView sOutputTag, const plPlatformProfile* pAssetProfile,
66 const plAssetFileHeader& AssetHeader, plBitflags<plTransformFlags> transformFlags) override;
67 virtual plTransformStatus InternalCreateThumbnail(const ThumbnailInfo& ThumbnailInfo) override;
68
69 const plEditableSkeleton* MergeWithNewSkeleton(plEditableSkeleton& newSkeleton);
70
72 bool m_bRenderBones = true;
73 bool m_bRenderColliders = true;
74 bool m_bRenderJoints = false; // currently not exposed
75 bool m_bRenderSwingLimits = true;
76 bool m_bRenderTwistLimits = true;
77 bool m_bRenderPreviewMesh = true;
78};
79
81
83{
85
86public:
89
90 virtual void GetImportModes(plStringView sAbsInputFile, plDynamicArray<plAssetDocumentGenerator::ImportMode>& out_modes) const override;
91 virtual plStringView GetDocumentExtension() const override { return "plSkeletonAsset"; }
92 virtual plStringView GetGeneratorGroup() const override { return "AnimationSkeletonGroup"; }
93 virtual plStatus Generate(plStringView sInputFileAbs, plStringView sMode, plDynamicArray<plDocument*>& out_generatedDocuments) override;
94};
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 EditableSkeleton.h:93
Definition Event.h:177
Definition PlatformProfile.h:25
Definition SimpleAssetDocument.h:23
Definition SkeletonAsset.h:83
virtual plStringView GetDocumentExtension() const override
Returns the target asset document file extension.
Definition SkeletonAsset.h:91
virtual plStringView GetGeneratorGroup() const override
Allows to merge the import modes of multiple generators in the UI in one group.
Definition SkeletonAsset.h:92
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 SkeletonAsset.cpp:448
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 SkeletonAsset.cpp:438
Definition SkeletonAsset.h:25
virtual void UpdateAssetDocumentInfo(plAssetDocumentInfo *pInfo) const override
Override this to add custom data (e.g. additional file dependencies) to the info struct.
Definition SkeletonAsset.cpp:235
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 SkeletonAsset.cpp:285
virtual plManipulatorSearchStrategy GetManipulatorSearchStrategy() const override
Needed by plManipulatorManager to know where to look for the manipulator attributes.
Definition SkeletonAsset.h:38
virtual plTransformStatus InternalCreateThumbnail(const ThumbnailInfo &ThumbnailInfo) override
Override this function to generate a thumbnail. Only called if GetAssetFlags returns plAssetDocumentF...
Definition SkeletonAsset.cpp:345
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
The plBitflags class allows you to work with type-safe bitflags.
Definition Bitflags.h:82
Event that is broadcast whenever information about how to present properties is required.
Definition PropertyMetaState.h:35
Definition SkeletonAsset.h:13
An plResult with an additional message for the reason of failure.
Definition Status.h:12
Definition Declarations.h:114