Files
UnrealEngine/Engine/Plugins/Experimental/SceneState/Source/SceneStateEvent/Public/SceneStateEventSchemaHandle.h
2025-05-18 13:04:45 +08:00

51 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "UObject/SoftObjectPtr.h"
#include "SceneStateEventSchemaHandle.generated.h"
class USceneStateEventSchemaObject;
class UUserDefinedStruct;
struct FStructView;
/** Handle to an Event Schema */
USTRUCT(BlueprintType)
struct FSceneStateEventSchemaHandle
{
GENERATED_BODY()
/** Get the struct of the Event Schema. Can be null if it's an event with no parameters */
SCENESTATEEVENT_API UUserDefinedStruct* GetEventStruct() const;
/** Resolves the event schema soft object pointer */
SCENESTATEEVENT_API USceneStateEventSchemaObject* GetEventSchema() const;
/** Get the default data view of the Event Schema struct. Can be invalid if it's an event with no parameters */
SCENESTATEEVENT_API FStructView GetDefaultDataView() const;
bool operator==(const FSceneStateEventSchemaHandle& InOther) const
{
return EventSchema == InOther.EventSchema;
}
static FName GetEventSchemaPropertyName()
{
return GET_MEMBER_NAME_CHECKED(FSceneStateEventSchemaHandle, EventSchema);
}
static FName GetEventStructPropertyName()
{
return GET_MEMBER_NAME_CHECKED(FSceneStateEventSchemaHandle, EventStruct);
}
private:
/** Soft reference to the event schema */
UPROPERTY(EditAnywhere, Category="Event")
TSoftObjectPtr<USceneStateEventSchemaObject> EventSchema;
/** Hold a soft reference to the struct within the event schema, if the event schema has a valid struct */
UPROPERTY(EditAnywhere, Category="Event")
TSoftObjectPtr<UUserDefinedStruct> EventStruct;
};