Files
UnrealEngine/Engine/Source/Runtime/MovieScene/Public/EntitySystem/MovieSceneEntitySystemLinkerSharedExtension.h
2025-05-18 13:04:45 +08:00

38 lines
798 B
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "EntitySystem/MovieSceneEntitySystemLinker.h"
namespace UE
{
namespace MovieScene
{
/* */
template<typename ExtensionType>
struct TSharedEntitySystemLinkerExtension : public TSharedFromThis<ExtensionType>
{
protected:
explicit TSharedEntitySystemLinkerExtension(UMovieSceneEntitySystemLinker* Linker)
: WeakLinker(Linker)
{
Linker->AddExtension(ExtensionType::GetExtensionID(), static_cast<ExtensionType*>(this));
}
virtual ~TSharedEntitySystemLinkerExtension()
{
if (UMovieSceneEntitySystemLinker* Linker = WeakLinker.Get())
{
Linker->RemoveExtension(ExtensionType::GetExtensionID());
}
}
TWeakObjectPtr<UMovieSceneEntitySystemLinker> WeakLinker;
};
} // namespace MovieScene
} // namespace UE