Files
michael balzer a49c74b915 MeshModelingToolset: Move ModelingOperators and ModelingOperatorsEditorOnly modules out of experimental plugin
#jira UETOOL-3823
#rb lonnie.li
#preflight 617b1aea5794a500014f544a

#ROBOMERGE-AUTHOR: michael.balzer
#ROBOMERGE-SOURCE: CL 17972239 in //UE5/Release-5.0/... via CL 17972248
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v885-17909292)
#ROBOMERGE[STARSHIP]: UE5-Main

[CL 17972256 by michael balzer in ue5-release-engine-test branch]
2021-10-28 19:47:45 -04:00

54 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "InteractiveToolChange.h"
#include "DynamicMeshSource.generated.h"
class UDynamicMesh;
class UDynamicMeshComponent;
UINTERFACE()
class MODELINGCOMPONENTS_API UPersistentDynamicMeshSource : public UInterface
{
GENERATED_BODY()
};
class MODELINGCOMPONENTS_API IPersistentDynamicMeshSource
{
GENERATED_BODY()
public:
/**
* @return a UDynamicMesh for this source.
*/
virtual UDynamicMesh* GetDynamicMeshContainer() = 0;
/**
* Commit a change to the UDynamicMesh. The assumption here is that the Change has already been applied to
* the UDynamicMesh returned by GetDynamicMeshContainer(). This function is used by Tools to provide that
* change to higher levels for storage in undo systems/etc (eg the Editor Transaction system)
*/
virtual void CommitDynamicMeshChange(TUniquePtr<FToolCommandChange> Change, const FText& ChangeMessage) = 0;
//
// optional
//
/**
* @return true if the UDynamicMesh comes from a UDynamicMeshComponent (or subclass)
*/
virtual bool HasDynamicMeshComponent() const { return false; }
/**
* @return the UDynamicMeshComponent that owns the source UDynamicMesh, if available
*/
virtual UDynamicMeshComponent* GetDynamicMeshComponent() { return nullptr; }
};