Depsgraph: Add utility function to unlink relation from graph

This commit is contained in:
2017-12-20 16:15:55 +01:00
parent 1e236deab3
commit 5b1404f066
2 changed files with 20 additions and 1 deletions

View File

@@ -51,6 +51,7 @@ extern "C" {
#include "RNA_access.h"
}
#include <algorithm>
#include <cstring>
#include "DEG_depsgraph.h"
@@ -68,6 +69,14 @@ static DEG_EditorUpdateIDCb deg_editor_update_id_cb = NULL;
static DEG_EditorUpdateSceneCb deg_editor_update_scene_cb = NULL;
static DEG_EditorUpdateScenePreCb deg_editor_update_scene_pre_cb = NULL;
/* TODO(sergey): Find a better place for this. */
template <typename T>
static void remove_from_vector(vector<T> *vector, const T& value)
{
vector->erase(std::remove(vector->begin(), vector->end(), value),
vector->end());
}
Depsgraph::Depsgraph()
: time_source(NULL),
need_update(false),
@@ -391,7 +400,15 @@ DepsRelation::DepsRelation(DepsNode *from,
DepsRelation::~DepsRelation()
{
/* Sanity check. */
BLI_assert(this->from && this->to);
BLI_assert(from != NULL && to != NULL);
}
void DepsRelation::unlink()
{
/* Sanity check. */
BLI_assert(from != NULL && to != NULL);
remove_from_vector(&from->outlinks, this);
remove_from_vector(&to->inlinks, this);
}
/* Low level tagging -------------------------------------- */

View File

@@ -84,6 +84,8 @@ struct DepsRelation {
const char *description);
~DepsRelation();
void unlink();
};
/* ********* */