node/ui: limit amount of selectable nodes for performance
This commit is contained in:
@@ -697,13 +697,20 @@ void NodeParamView::QueueKeyframePositionUpdate()
|
|||||||
|
|
||||||
void NodeParamView::AddContext(Node *ctx)
|
void NodeParamView::AddContext(Node *ctx)
|
||||||
{
|
{
|
||||||
|
NodeParamViewContext *item = GetContextItemFromContext(ctx);
|
||||||
|
|
||||||
|
// TEMP: Creating many NPV items is EXTREMELY slow so limit to one item per context for now.
|
||||||
|
// I have a better solution in the works to use one UI for several nodes, but I haven't
|
||||||
|
// done it yet, and this can severely affect productivity.
|
||||||
|
if (item->GetContexts().size() == 1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Queued so that if any further work is done in connecting this node to the context, it'll be
|
// Queued so that if any further work is done in connecting this node to the context, it'll be
|
||||||
// done before our sorting function is called
|
// done before our sorting function is called
|
||||||
connect(ctx, &Node::NodeAddedToContext, this, &NodeParamView::NodeAddedToContext, Qt::QueuedConnection);
|
connect(ctx, &Node::NodeAddedToContext, this, &NodeParamView::NodeAddedToContext, Qt::QueuedConnection);
|
||||||
connect(ctx, &Node::NodeRemovedFromContext, this, &NodeParamView::NodeRemovedFromContext, Qt::QueuedConnection);
|
connect(ctx, &Node::NodeRemovedFromContext, this, &NodeParamView::NodeRemovedFromContext, Qt::QueuedConnection);
|
||||||
|
|
||||||
NodeParamViewContext *item = GetContextItemFromContext(ctx);
|
|
||||||
|
|
||||||
item->AddContext(ctx);
|
item->AddContext(ctx);
|
||||||
item->setVisible(true);
|
item->setVisible(true);
|
||||||
|
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
namespace olive {
|
namespace olive {
|
||||||
|
|
||||||
const double NodeView::kMinimumScale = 0.1;
|
const double NodeView::kMinimumScale = 0.1;
|
||||||
|
const int NodeView::kMaximumContexts = 10;
|
||||||
|
|
||||||
NodeView::NodeView(QWidget *parent) :
|
NodeView::NodeView(QWidget *parent) :
|
||||||
HandMovableView(parent),
|
HandMovableView(parent),
|
||||||
@@ -102,6 +103,10 @@ void NodeView::SetContexts(const QVector<Node*> &nodes)
|
|||||||
|
|
||||||
// Add contexts that are now in the list
|
// Add contexts that are now in the list
|
||||||
foreach (Node *n, nodes) {
|
foreach (Node *n, nodes) {
|
||||||
|
if (scene_.context_map().size() >= kMaximumContexts) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (!contexts_.contains(n)) {
|
if (!contexts_.contains(n)) {
|
||||||
AddContext(n);
|
AddContext(n);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -235,6 +235,8 @@ private:
|
|||||||
|
|
||||||
static const double kMinimumScale;
|
static const double kMinimumScale;
|
||||||
|
|
||||||
|
static const int kMaximumContexts;
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
/**
|
/**
|
||||||
* @brief Receiver for when the scene's selected items change
|
* @brief Receiver for when the scene's selected items change
|
||||||
|
|||||||
Reference in New Issue
Block a user