Plasma Engine  2.0
Loading...
Searching...
No Matches
AnimationClipAsset.h
1#pragma once
2
3#include <EditorFramework/Assets/AssetDocumentGenerator.h>
4#include <EditorFramework/Assets/SimpleAssetDocument.h>
5#include <GuiFoundation/Widgets/CurveEditData.h>
6#include <GuiFoundation/Widgets/EventTrackEditData.h>
7
11class plSkeleton;
13
15{
16 using StorageType = plUInt8;
17
18 enum Enum
19 {
20 None,
21 Constant,
22 Custom,
23 // FromFeet,
24 // AvgFromFeet,
25
26 Default = None
27 };
28};
29
30PL_DECLARE_REFLECTABLE_TYPE(PL_NO_LINKAGE, plRootMotionSource);
31
33{
34 PL_ADD_DYNAMIC_REFLECTION(plAnimationClipAssetProperties, plReflectedClass);
35
36public:
39
40 plString m_sSourceFile;
41 plString m_sAnimationClipToExtract;
42 plDynamicArray<plString> m_AvailableClips;
43 bool m_bAdditive = false;
44 plUInt32 m_uiFirstFrame = 0;
45 plUInt32 m_uiNumFrames = 0;
46 plString m_sPreviewMesh;
47 plEnum<plRootMotionSource> m_RootMotionMode;
48 plVec3 m_vConstantRootMotion;
49
50 plEventTrackData m_EventTrack;
52 plString m_sJoint1;
53 plString m_sJoint2;
54
55 static void PropertyMetaStateEventHandler(plPropertyMetaStateEvent& e);
56};
57
59
60class plAnimationClipAssetDocument : public plSimpleAssetDocument<plAnimationClipAssetProperties>
61{
63
64public:
66
67 virtual void SetCommonAssetUiState(plCommonAssetUiState::Enum state, double value) override;
68 virtual double GetCommonAssetUiState(plCommonAssetUiState::Enum state) const override;
69
70 plUuid InsertEventTrackCpAt(plInt64 iTickX, const char* szValue);
71
72protected:
73 virtual plTransformStatus InternalTransformAsset(plStreamWriter& stream, plStringView sOutputTag, const plPlatformProfile* pAssetProfile, const plAssetFileHeader& AssetHeader, plBitflags<plTransformFlags> transformFlags) override;
75
76 void ExtractRootMotionFromFeet(plAnimationClipResourceDescriptor& anim, const plSkeleton& skeleton) const;
77 void MakeRootMotionConstantAverage(plAnimationClipResourceDescriptor& anim) const;
78private:
79 float m_fSimulationSpeed = 1.0f;
80};
81
83
85{
87
88public:
91
92 virtual void GetImportModes(plStringView sAbsInputFile, plDynamicArray<plAssetDocumentGenerator::ImportMode>& out_modes) const override;
93 virtual plStringView GetDocumentExtension() const override { return "plAnimationClipAsset"; }
94 virtual plStringView GetGeneratorGroup() const override { return "AnimationClipGroup"; }
95 virtual plStatus Generate(plStringView sInputFileAbs, plStringView sMode, plDynamicArray<plDocument*>& out_generatedDocuments) override;
96};
Definition AnimationClipAsset.h:85
virtual plStringView GetGeneratorGroup() const override
Allows to merge the import modes of multiple generators in the UI in one group.
Definition AnimationClipAsset.h:94
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 AnimationClipAsset.cpp:409
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 AnimationClipAsset.cpp:426
virtual plStringView GetDocumentExtension() const override
Returns the target asset document file extension.
Definition AnimationClipAsset.h:93
Definition AnimationClipAsset.h:61
virtual double GetCommonAssetUiState(plCommonAssetUiState::Enum state) const override
Override this to return custom values for a common asset state.
Definition AnimationClipAsset.cpp:89
virtual void SetCommonAssetUiState(plCommonAssetUiState::Enum state, double value) override
Override this to handle a change to a common asset state differently.
Definition AnimationClipAsset.cpp:74
virtual plTransformStatus InternalCreateThumbnail(const ThumbnailInfo &ThumbnailInfo) override
Override this function to generate a thumbnail. Only called if GetAssetFlags returns plAssetDocumentF...
Definition AnimationClipAsset.cpp:176
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 AnimationClipAsset.cpp:102
Definition AnimationClipAsset.h:33
The thumbnail info containing the hash of the file is appended to assets. The serialized size of this...
Definition AssetDocument.h:49
Provides functionality for importing files as asset documents.
Definition AssetDocumentGenerator.h:23
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 EventTrackEditData.h:25
Definition PlatformProfile.h:25
All classes that should be dynamically reflectable, need to be derived from this base class.
Definition DynamicRTTI.h:86
Definition SimpleAssetDocument.h:23
The skeleton class encapsulates the information about the joint structure for a model.
Definition Skeleton.h:75
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
This data type is the abstraction for 128-bit Uuid (also known as GUID) instances.
Definition Uuid.h:11
Definition AnimationClipResource.h:19
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
Event that is broadcast whenever information about how to present properties is required.
Definition PropertyMetaState.h:35
Definition AnimationClipAsset.h:15
An plResult with an additional message for the reason of failure.
Definition Status.h:12
Definition Declarations.h:114