Files
UnrealEngine/Engine/Source/Editor/PropertyEditor/Public/IDetailKeyframeHandler.h
2025-05-18 13:04:45 +08:00

43 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
class IPropertyHandle;
/**
* Keyed Status of a Property, ordered by their precedence
* E.g. if a property is keyed in current and another frame, Keyed In Frame should take precedence
*/
enum class EPropertyKeyedStatus : uint8
{
/** Property not keyed, or not animated in current time */
NotKeyed,
/** Property is animated in the current time, but there's no key in current frame */
KeyedInOtherFrame,
/** For Top-level properties only -- some but not all the properties of the struct are keyed in Current Frame */
PartiallyKeyed,
/** Property (and all its sub-properties) are keyed in current frame */
KeyedInFrame,
};
class IDetailKeyframeHandler
{
public:
virtual ~IDetailKeyframeHandler(){}
virtual bool IsPropertyKeyable(const UClass* InObjectClass, const IPropertyHandle& PropertyHandle) const = 0;
virtual bool IsPropertyKeyingEnabled() const = 0;
virtual void OnKeyPropertyClicked(const IPropertyHandle& KeyedPropertyHandle) = 0;
virtual bool IsPropertyAnimated(const IPropertyHandle& PropertyHandle, UObject* ParentObject) const = 0;
virtual EPropertyKeyedStatus GetPropertyKeyedStatus(const IPropertyHandle& PropertyHandle) const { return EPropertyKeyedStatus::NotKeyed; }
};