Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2017-11-30 18:49:32 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-12-01 13:40:50 +0300
commit7270e8cc8f8fa3ec619c980b5d4967712ade0a43 (patch)
tree19a90fa4034b84784750fc44a7edc415953b0df6 /source/blender/depsgraph/intern/depsgraph_query.cc
parent59d3a17e3a378f3a4a45ca44e2106ac6763bd81b (diff)
Depsgraph: Move iterator to own implementation file
Diffstat (limited to 'source/blender/depsgraph/intern/depsgraph_query.cc')
-rw-r--r--source/blender/depsgraph/intern/depsgraph_query.cc165
1 files changed, 0 insertions, 165 deletions
diff --git a/source/blender/depsgraph/intern/depsgraph_query.cc b/source/blender/depsgraph/intern/depsgraph_query.cc
index 992097c9d31..6892bdaa178 100644
--- a/source/blender/depsgraph/intern/depsgraph_query.cc
+++ b/source/blender/depsgraph/intern/depsgraph_query.cc
@@ -34,11 +34,7 @@
extern "C" {
#include "BLI_utildefines.h"
-#include "BLI_ghash.h"
-#include "BLI_math.h"
-#include "BKE_anim.h"
#include "BKE_idcode.h"
-#include "BKE_layer.h"
#include "BKE_main.h"
#include "BLI_listbase.h"
} /* extern "C" */
@@ -50,11 +46,6 @@ extern "C" {
#include "DEG_depsgraph_query.h"
#include "intern/depsgraph_intern.h"
-#include "util/deg_util_foreach.h"
-
-#ifndef NDEBUG
-# include "intern/eval/deg_eval_copy_on_write.h"
-#endif
bool DEG_id_type_tagged(Main *bmain, short id_type)
{
@@ -122,159 +113,3 @@ ID *DEG_get_evaluated_id(struct Depsgraph *depsgraph, ID *id)
return id_node->id_cow;
}
-/* ************************ DEG ITERATORS ********************* */
-
-static bool deg_objects_dupli_iterator_next(BLI_Iterator *iter)
-{
- DEGOIterObjectData *data = (DEGOIterObjectData *)iter->data;
- while (data->dupli_object_next != NULL) {
- DupliObject *dob = data->dupli_object_next;
- Object *obd = dob->ob;
-
- data->dupli_object_next = data->dupli_object_next->next;
-
- /* Group duplis need to set ob matrices correct, for deform. so no_draw
- * is part handled.
- */
- if ((obd->transflag & OB_RENDER_DUPLI) == 0 && dob->no_draw) {
- continue;
- }
-
- if (obd->type == OB_MBALL) {
- continue;
- }
-
- data->dupli_object_current = dob;
-
- /* Temporary object to evaluate. */
- Object *dupli_parent = data->dupli_parent;
- Object *temp_dupli_object = &data->temp_dupli_object;
- *temp_dupli_object = *dob->ob;
- temp_dupli_object->select_color = dupli_parent->select_color;
- temp_dupli_object->base_flag = dupli_parent->base_flag | BASE_FROMDUPLI;
- temp_dupli_object->base_collection_properties =
- dupli_parent->base_collection_properties;
- copy_m4_m4(data->temp_dupli_object.obmat, dob->mat);
-
- iter->current = &data->temp_dupli_object;
- BLI_assert(
- DEG::deg_validate_copy_on_write_datablock(
- &data->temp_dupli_object.id));
- return true;
- }
-
- return false;
-}
-
-static void DEG_iterator_objects_step(BLI_Iterator *iter, DEG::IDDepsNode *id_node)
-{
- /* Reset the skip in case we are running from within a loop. */
- iter->skip = false;
-
- DEGOIterObjectData *data = (DEGOIterObjectData *)iter->data;
- const ID_Type id_type = GS(id_node->id_orig->name);
-
- if (id_type != ID_OB) {
- iter->skip = true;
- return;
- }
-
- switch (id_node->linked_state) {
- case DEG::DEG_ID_LINKED_DIRECTLY:
- break;
- case DEG::DEG_ID_LINKED_VIA_SET:
- if (data->flag & DEG_ITER_OBJECT_FLAG_SET) {
- break;
- }
- else {
- ATTR_FALLTHROUGH;
- }
- case DEG::DEG_ID_LINKED_INDIRECTLY:
- iter->skip = true;
- return;
- }
-
- Object *object = (Object *)id_node->id_cow;
- BLI_assert(DEG::deg_validate_copy_on_write_datablock(&object->id));
-
- if ((data->flag & DEG_ITER_OBJECT_FLAG_DUPLI) && (object->transflag & OB_DUPLI)) {
- data->dupli_parent = object;
- data->dupli_list = object_duplilist(&data->eval_ctx, data->scene, object);
- data->dupli_object_next = (DupliObject *)data->dupli_list->first;
- }
-
- iter->current = object;
-}
-
-void DEG_iterator_objects_begin(BLI_Iterator *iter, DEGOIterObjectData *data)
-{
- Depsgraph *depsgraph = data->graph;
- DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(depsgraph);
- const size_t num_id_nodes = deg_graph->id_nodes.size();
-
- if (num_id_nodes == 0) {
- iter->valid = false;
- return;
- }
-
- /* TODO(sergey): What evaluation type we want here? */
- DEG_evaluation_context_init(&data->eval_ctx, DAG_EVAL_RENDER);
- data->eval_ctx.view_layer = DEG_get_evaluated_view_layer(depsgraph);
-
- iter->data = data;
- data->dupli_parent = NULL;
- data->dupli_list = NULL;
- data->dupli_object_next = NULL;
- data->dupli_object_current = NULL;
- data->scene = DEG_get_evaluated_scene(depsgraph);
- data->id_node_index = 0;
- data->num_id_nodes = num_id_nodes;
-
- DEG::IDDepsNode *id_node = deg_graph->id_nodes[data->id_node_index];
- DEG_iterator_objects_step(iter, id_node);
-
- if (iter->skip) {
- DEG_iterator_objects_next(iter);
- }
-}
-
-void DEG_iterator_objects_next(BLI_Iterator *iter)
-{
- DEGOIterObjectData *data = (DEGOIterObjectData *)iter->data;
- Depsgraph *depsgraph = data->graph;
- DEG::Depsgraph *deg_graph = reinterpret_cast<DEG::Depsgraph *>(depsgraph);
- do {
- if (data->dupli_list) {
- if (deg_objects_dupli_iterator_next(iter)) {
- return;
- }
- else {
- free_object_duplilist(data->dupli_list);
- data->dupli_parent = NULL;
- data->dupli_list = NULL;
- data->dupli_object_next = NULL;
- data->dupli_object_current = NULL;
- }
- }
-
- ++data->id_node_index;
- if (data->id_node_index == data->num_id_nodes) {
- iter->valid = false;
- return;
- }
-
- DEG::IDDepsNode *id_node = deg_graph->id_nodes[data->id_node_index];
- DEG_iterator_objects_step(iter, id_node);
- } while (iter->skip);
-}
-
-void DEG_iterator_objects_end(BLI_Iterator *iter)
-{
-#ifndef NDEBUG
- DEGOIterObjectData *data = (DEGOIterObjectData *)iter->data;
- /* Force crash in case the iterator data is referenced and accessed down the line. (T51718) */
- memset(&data->temp_dupli_object, 0xff, sizeof(data->temp_dupli_object));
-#else
- (void) iter;
-#endif
-}