Files
2025-05-18 13:04:45 +08:00

77 lines
1.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "MuR/Ptr.h"
#include "MuR/RefCounted.h"
#include "MuT/Node.h"
#include "MuT/NodeObject.h"
namespace mu
{
/** Node that creates a group of objects and describes how they are selected. */
class MUTABLETOOLS_API NodeObjectGroup : public NodeObject
{
public:
FString Name;
FString Uid;
//! Typed of child selection
typedef enum
{
//! All objects in the group will always be enabled, and no parameter will be generated.
CS_ALWAYS_ALL,
//! Only one children may be selected, but it is allowed to have none.
//! An enumeration parameter will be generated but it may have a null value
CS_ONE_OR_NONE,
//! One and only one children has to be selected at all times
//! An enumeraation parameter will be generated and it cannot be null
CS_ALWAYS_ONE,
//! Each child in the group can be enabled or disabled individually.
//! A boolean parameter will be generated for every child.
CS_TOGGLE_EACH
} EChildSelection;
EChildSelection Type;
TArray<Ptr<NodeObject>> Children;
//! Default value for CS_ONE_OR_NONE or CS_ALWAYS_ONE groups
//! the value is the index of the child option in the group
//! -1 is the value for the None option.
//! 0 is the first child whether or not the NONE option is present.
int32 DefaultValue;
public:
// Node Interface
virtual const FNodeType* GetType() const override { return &StaticType; }
static const FNodeType* GetStaticType() { return &StaticType; }
// NodeObject Interface
virtual const FString& GetName() const override;
virtual void SetName( const FString&) override;
virtual const FString& GetUid() const override;
virtual void SetUid( const FString&) override;
protected:
/** Forbidden. Manage with the Ptr<> template. */
~NodeObjectGroup() {}
private:
static FNodeType StaticType;
};
}