// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "MuR/Ptr.h" #include "MuT/Node.h" #include "MuT/NodeMesh.h" #include "MuR/Mesh.h" #include "MuR/Skeleton.h" namespace mu { /** Node that morphs a base mesh with one or two weighted targets from a sequence. */ class MUTABLETOOLS_API NodeMeshReshape : public NodeMesh { public: Ptr BaseMesh; Ptr BaseShape; Ptr TargetShape; bool bReshapeVertices = true; bool bRecomputeNormals = false; bool bApplyLaplacian = false; bool bReshapeSkeleton = false; bool bReshapePhysicsVolumes = false; EVertexColorUsage ColorRChannelUsage = EVertexColorUsage::None; EVertexColorUsage ColorGChannelUsage = EVertexColorUsage::None; EVertexColorUsage ColorBChannelUsage = EVertexColorUsage::None; EVertexColorUsage ColorAChannelUsage = EVertexColorUsage::None; TArray BonesToDeform; TArray PhysicsToDeform; public: // Node Interface virtual const FNodeType* GetType() const override { return &StaticType; } static const FNodeType* GetStaticType() { return &StaticType; } protected: /** Forbidden. Manage with the Ptr<> template. */ ~NodeMeshReshape() {} private: static FNodeType StaticType; }; }