Files
alexei lebedev 2815323fbc [mutable] Moved the Mutable plugin out of Experimental status into Beta.
#jira UE-223488
#rb jordi.rovira
#tests Editor
#rnx

#virtualized

[CL 36035608 by alexei lebedev in ue5-main branch]
2024-09-05 07:16:19 -04:00

63 lines
1.6 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "HAL/Platform.h"
#include "MuR/Ptr.h"
#include "MuR/RefCounted.h"
#include "MuT/Node.h"
namespace mu
{
// Forward definitions
class NodeObject;
typedef Ptr<NodeObject> NodeObjectPtr;
typedef Ptr<const NodeObject> NodeObjectPtrConst;
//! %Base class for any node that outputs an object.
//! \ingroup model
class MUTABLETOOLS_API NodeObject : public Node
{
public:
//-----------------------------------------------------------------------------------------
// Node Interface
//-----------------------------------------------------------------------------------------
const FNodeType* GetType() const override;
static const FNodeType* GetStaticType();
//-----------------------------------------------------------------------------------------
// Own interface
//-----------------------------------------------------------------------------------------
//! Get the name of the object.
virtual const FString& GetName() const = 0;
//! Set the name of the object.
virtual void SetName( const FString& ) = 0;
//! Get the uid of the object.
virtual const FString& GetUid() const = 0;
//! Set the uid of the object.
virtual void SetUid( const FString& ) = 0;
//-----------------------------------------------------------------------------------------
// Interface pattern
//-----------------------------------------------------------------------------------------
class Private;
protected:
//! Forbidden. Manage with the Ptr<> template.
inline ~NodeObject() {}
};
}