@@ -45,13 +45,15 @@ typedef struct IRadientSceneAsset IRadientSceneAsset;
4545typedef struct IRadientSkeletonAsset IRadientSkeletonAsset ;
4646typedef struct IRadientSkinAsset IRadientSkinAsset ;
4747typedef struct IRadientSkeletonAnimationAsset IRadientSkeletonAnimationAsset ;
48+ typedef struct IRadientAnimationClipAsset IRadientAnimationClipAsset ;
4849typedef struct IRadientMorphTargetWeights IRadientMorphTargetWeights ;
4950typedef struct IDeviceContext IDeviceContext ;
5051
5152typedef struct RadientStandardMaterialDefinitionCreateInfo RadientStandardMaterialDefinitionCreateInfo ;
5253typedef struct RadientSkeletonDesc RadientSkeletonDesc ;
5354typedef struct RadientSkinDesc RadientSkinDesc ;
5455typedef struct RadientSkeletonAnimationDesc RadientSkeletonAnimationDesc ;
56+ typedef struct RadientAnimationClipDesc RadientAnimationClipDesc ;
5557typedef struct RadientMorphTargetCreateInfo RadientMorphTargetCreateInfo ;
5658typedef struct RadientMorphTargetDesc RadientMorphTargetDesc ;
5759
@@ -82,7 +84,10 @@ DILIGENT_TYPED_ENUM(RADIENT_ASSET_TYPE, Uint8)
8284 RADIENT_ASSET_TYPE_SKIN ,
8385
8486 /// Immutable animation clip targeting a skeleton hierarchy.
85- RADIENT_ASSET_TYPE_SKELETON_ANIMATION
87+ RADIENT_ASSET_TYPE_SKELETON_ANIMATION ,
88+
89+ /// Immutable, unbound animation clip.
90+ RADIENT_ASSET_TYPE_ANIMATION_CLIP
8691};
8792
8893/// Authored scene/model source format.
@@ -677,6 +682,27 @@ DILIGENT_BEGIN_INTERFACE(IRadientAssetManager, IObject)
677682 /// is executing.
678683 VIRTUAL RADIENT_STATUS METHOD (Stop )(THIS_
679684 IDeviceContext * pContext ) PURE ;
685+
686+ /// Creates an immutable, unbound animation clip.
687+ ///
688+ /// The manager validates structural and native-storage invariants and
689+ /// copies the name, descriptor tables, target names, keyframe times, and
690+ /// value bytes before returning. It does not resolve target schemas or
691+ /// validate property-specific value compatibility; those checks occur when
692+ /// the clip is bound to a runtime instance.
693+ ///
694+ /// \param [in] ClipDesc - Clip description to validate and copy. Its data
695+ /// only needs to remain valid for this call.
696+ /// \param [out] ppClip - Address of a null pointer that receives a strong
697+ /// reference on success. It remains null on failure.
698+ ///
699+ /// \return RADIENT_STATUS_OK on success, RADIENT_STATUS_INVALID_ARGUMENT
700+ /// for a malformed description or output pointer,
701+ /// RADIENT_STATUS_INVALID_OPERATION after Stop(), or
702+ /// RADIENT_STATUS_FAILED if storage creation fails.
703+ VIRTUAL RADIENT_STATUS METHOD (CreateAnimationClip )(THIS_
704+ const RadientAnimationClipDesc REF ClipDesc ,
705+ IRadientAnimationClipAsset * * ppClip ) PURE ;
680706};
681707DILIGENT_END_INTERFACE
682708
@@ -695,6 +721,7 @@ DILIGENT_END_INTERFACE
695721# define IRadientAssetManager_LoadScene (This , ...) CALL_IFACE_METHOD(RadientAssetManager, LoadScene, This, __VA_ARGS__)
696722# define IRadientAssetManager_WaitForAssetLoad (This , ...) CALL_IFACE_METHOD(RadientAssetManager, WaitForAssetLoad, This, __VA_ARGS__)
697723# define IRadientAssetManager_Stop (This , ...) CALL_IFACE_METHOD(RadientAssetManager, Stop, This, __VA_ARGS__)
724+ # define IRadientAssetManager_CreateAnimationClip (This , ...) CALL_IFACE_METHOD(RadientAssetManager, CreateAnimationClip, This, __VA_ARGS__)
698725
699726#endif
700727
0 commit comments