Files
UnrealEngineUWP/Engine/Plugins/Experimental/MeshModelingToolset/Source/ModelingComponents/Public/TargetInterfaces/DynamicMeshSource.h
Ryan Schmidt 6497a53181 ModelingComponents: Add DynamicMeshActor
- ADynamicMeshActor type has a UDynamicMeshComponent subobject (similar to StaticMeshActor)
- Add IPersistentDynamicMeshSource, a ToolTarget Interface for accessing a UDynamicMesh
- Add UDynamicMeshComponentToolTarget, a UToolTarget implementing the above as well as various standard interfaces, to allow Tools to operate on an external DynamicMeshComponent
- Update UE::ToolTarget:: helper functions that get/commit via DynamicMesh to handle IPersistentDynamicMeshSource directly, instead of going via existing MeshDescription/DynamicMesh interfaces. Add UE::ToolTarget::SetSourceObjectVisible() helper function.
- Add support for creating DynamicMeshActors in UCreateMeshObjectTypeProperties and UEditorModelingObjectsCreationAPI
- register UDynamicMeshComponentToolTargetFactory in ModelingToolsEditorMode
- Rename existing internal ADynamicMeshActor to AOldDynamicMeshActor. Does not appear to be in use and will be removed in a future CL.

#rb lonnie.li
#rnx
#jira none
#preflight 60d0effc367e6700014c2e89

[CL 16735093 by Ryan Schmidt in ue5-main branch]
2021-06-21 18:08:56 -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; }
};