// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "PaperSprite.h" #include "ComponentAssetBroker.h" #include "PaperSpriteComponent.h" #include "PhysicsEngine/BodySetup.h" ////////////////////////////////////////////////////////////////////////// // FPaperSpriteAssetBroker class FPaperSpriteAssetBroker : public IComponentAssetBroker { public: UClass* GetSupportedAssetClass() override { return UPaperSprite::StaticClass(); } virtual bool AssignAssetToComponent(UActorComponent* InComponent, UObject* InAsset) override { if (UPaperSpriteComponent* RenderComponent = Cast(InComponent)) { UPaperSprite* Sprite = Cast(InAsset); if ((Sprite != nullptr) || (InAsset == nullptr)) { RenderComponent->SetSprite(Sprite); if (Sprite != nullptr && Sprite->BodySetup != nullptr) { RenderComponent->BodyInstance.CopyBodyInstancePropertiesFrom(&(Sprite->BodySetup->DefaultInstance)); } return true; } } return false; } virtual UObject* GetAssetFromComponent(UActorComponent* InComponent) override { if (UPaperSpriteComponent* RenderComponent = Cast(InComponent)) { return RenderComponent->GetSprite(); } return nullptr; } };