Files
UnrealEngineUWP/Engine/Source/Editor/AnimGraph/Public/IAnimBlueprintCompilerHandlerCollection.h
Thomas Sarkanen 8b3709fb28 Restricted anim BP compiler subsystem APIs
Removed direct access to currently compiling BP class to restrict unguarded mutation.
Const-corrected various accessors and overrides.
Moved UObject-based compiler subsystems to 'handlers' and removed UObject dependency.
Moved from set of virtual functions on subsystems/handlers to a restricted set of contexts passed to specific multicast delegates that handlers subscribe to.
Removed anim class subsystems.
Moved property access code to engine module (editor code is still in a plugin).
Fixed nativized builds where anim BPs have nativized/non-nativized classes in the hierarchy

#rb Dan.OConnor
#jira none

[CL 14278258 by Thomas Sarkanen in ue5-main branch]
2020-09-09 08:32:25 -04:00

32 lines
962 B
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "IAnimBlueprintCompilerHandler.h"
class FAnimBlueprintCompilerContext;
class IAnimBlueprintCompilerCreationContext;
class ANIMGRAPH_API IAnimBlueprintCompilerHandlerCollection
{
public:
virtual ~IAnimBlueprintCompilerHandlerCollection() {}
/** Register a named handler */
static void RegisterHandler(FName InName, TFunction<TUniquePtr<IAnimBlueprintCompilerHandler>(IAnimBlueprintCompilerCreationContext&)> InFunction);
/** Register a named handler */
static void UnregisterHandler(FName InName);
// Get a GetHandler of specified type with the specified name
template<typename THandlerClass>
THandlerClass* GetHandler(FName InName) const
{
return static_cast<THandlerClass*>(GetHandlerByName(InName));
}
protected:
// Get a GetHandler with the specified name
virtual IAnimBlueprintCompilerHandler* GetHandlerByName(FName InName) const = 0;
};