/
redgpu
/
ezEngine
Обзор
Документация
Войти
/
redgpu
/
ezEngine
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
Code/EditorPlugins/Assets/EditorPluginAssets/AnimationClipAsset/AnimationClipAsset.h
125 строк
4 KB
Jan Krassnigg
Added support for custom curves to animation clips (#1901)
09 апр 2026, 22:09
Не верифицирован
09 апр 2026, 22:09
c7a8bae
Код
Авторство
О чём код?
#pragma once #include <EditorFramework/Assets/AssetDocumentGenerator.h> #include <EditorFramework/Assets/SimpleAssetDocument.h> #include <Foundation/Tracks/CurveEditData.h> #include <GuiFoundation/Widgets/EventTrackEditData.h> class ezAnimationClipAssetDocument; struct ezPropertyMetaStateEvent; ////////////////////////////////////////////////////////////////////////// struct ezRootMotionSource { using StorageType = ezUInt8; enum Enum { None, Constant, Default = None }; }; EZ_DECLARE_REFLECTABLE_TYPE(EZ_NO_LINKAGE, ezRootMotionSource); ////////////////////////////////////////////////////////////////////////// struct ezAdditiveAnimationReference { using StorageType = ezUInt8; enum Enum { FirstKeyFrame, LastKeyFrame, Default = FirstKeyFrame }; }; EZ_DECLARE_REFLECTABLE_TYPE(EZ_NO_LINKAGE, ezAdditiveAnimationReference); ////////////////////////////////////////////////////////////////////////// /// Stores a single named float curve for use in an animation clip. /// /// The color used for display in the editor is derived automatically from the name. class EZ_NO_LINKAGE ezAnimationClipCurveData : public ezReflectedClass { EZ_ADD_DYNAMIC_REFLECTION(ezAnimationClipCurveData, ezReflectedClass); public: ezString m_sName; ///< Identifies this curve across clips. Used to match values from multiple clips for blending. ezSingleCurveData m_Curve; ///< The curve data. Color is overridden at edit time based on m_sName. }; ////////////////////////////////////////////////////////////////////////// class ezAnimationClipAssetProperties : public ezReflectedClass { EZ_ADD_DYNAMIC_REFLECTION(ezAnimationClipAssetProperties, ezReflectedClass); public: ezAnimationClipAssetProperties(); ~ezAnimationClipAssetProperties(); ezString m_sSourceFile; ezString m_sAnimationClipToExtract; ezDynamicArray<ezString> m_AvailableClips; bool m_bAdditive = false; ezUInt32 m_uiFirstFrame = 0; ezUInt32 m_uiNumFrames = 0; ezString m_sPreviewMesh; ezString m_sPreviewAnim; ezEnum<ezRootMotionSource> m_RootMotionMode; ezEnum<ezAdditiveAnimationReference> m_AdditiveReference; ezVec3 m_vConstantRootMotion; float m_fConstantRootMotionLength = 0.0f; float m_fAnimationPositionScale = 1.0f; ezEventTrackData m_EventTrack; ezDynamicArray<ezAnimationClipCurveData> m_Curves; static void PropertyMetaStateEventHandler(ezPropertyMetaStateEvent& e); }; ////////////////////////////////////////////////////////////////////////// class ezAnimationClipAssetDocument : public ezSimpleAssetDocument<ezAnimationClipAssetProperties> { EZ_ADD_DYNAMIC_REFLECTION(ezAnimationClipAssetDocument, ezSimpleAssetDocument<ezAnimationClipAssetProperties>); public: ezAnimationClipAssetDocument(ezStringView sDocumentPath); virtual void SetCommonAssetUiState(ezCommonAssetUiState::Enum state, double value) override; virtual double GetCommonAssetUiState(ezCommonAssetUiState::Enum state) const override; ezUuid InsertEventTrackCpAt(ezInt64 iTickX, const char* szValue); protected: virtual ezTransformStatus InternalTransformAsset(ezStreamWriter& stream, ezStringView sOutputTag, const ezPlatformProfile* pAssetProfile, const ezAssetFileHeader& AssetHeader, ezBitflags<ezTransformFlags> transformFlags) override; virtual ezTransformStatus InternalCreateThumbnail(const ThumbnailInfo& ThumbnailInfo) override; private: float m_fSimulationSpeed = 1.0f; }; ////////////////////////////////////////////////////////////////////////// class ezAnimationClipAssetDocumentGenerator : public ezAssetDocumentGenerator { EZ_ADD_DYNAMIC_REFLECTION(ezAnimationClipAssetDocumentGenerator, ezAssetDocumentGenerator); public: ezAnimationClipAssetDocumentGenerator(); ~ezAnimationClipAssetDocumentGenerator(); virtual void GetImportModes(ezStringView sAbsInputFile, ezDynamicArray<ezAssetDocumentGenerator::ImportMode>& out_modes) const override; virtual ezStringView GetDocumentExtension() const override { return "ezAnimationClipAsset"; } virtual ezStringView GetGeneratorGroup() const override { return "Meshes"; } virtual ezStatus Generate(ezStringView sInputFileAbs, ezStringView sMode, ezDynamicArray<ezDocument*>& out_generatedDocuments) override; };