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