Files
UnrealEngine/Engine/Source/Runtime/MovieScene/Public/EntitySystem/MovieSceneEntitySystemLinkerSharedExtension.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05: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