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:
authorCampbell Barton <ideasman42@gmail.com>2019-04-17 07:17:24 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-04-17 07:21:24 +0300
commite12c08e8d170b7ca40f204a5b0423c23a9fbc2c1 (patch)
tree8cf3453d12edb177a218ef8009357518ec6cab6a /source/blender/makesrna/intern/rna_depsgraph.c
parentb3dabc200a4b0399ec6b81f2ff2730d07b44fcaa (diff)
ClangFormat: apply to source, most of intern
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
Diffstat (limited to 'source/blender/makesrna/intern/rna_depsgraph.c')
-rw-r--r--source/blender/makesrna/intern/rna_depsgraph.c929
1 files changed, 490 insertions, 439 deletions
diff --git a/source/blender/makesrna/intern/rna_depsgraph.c b/source/blender/makesrna/intern/rna_depsgraph.c
index 8c2148896fd..3df4feba024 100644
--- a/source/blender/makesrna/intern/rna_depsgraph.c
+++ b/source/blender/makesrna/intern/rna_depsgraph.c
@@ -36,257 +36,259 @@
#ifdef RNA_RUNTIME
-#include "BLI_iterator.h"
-#include "BLI_math.h"
+# include "BLI_iterator.h"
+# include "BLI_math.h"
-#include "BKE_anim.h"
-#include "BKE_object.h"
+# include "BKE_anim.h"
+# include "BKE_object.h"
-#include "DEG_depsgraph_build.h"
-#include "DEG_depsgraph_debug.h"
-#include "DEG_depsgraph_query.h"
+# include "DEG_depsgraph_build.h"
+# include "DEG_depsgraph_debug.h"
+# include "DEG_depsgraph_query.h"
-#include "MEM_guardedalloc.h"
+# include "MEM_guardedalloc.h"
/* **************** Object Instance **************** */
static PointerRNA rna_DepsgraphObjectInstance_object_get(PointerRNA *ptr)
{
- BLI_Iterator *iterator = ptr->data;
- return rna_pointer_inherit_refine(ptr, &RNA_Object, iterator->current);
+ BLI_Iterator *iterator = ptr->data;
+ return rna_pointer_inherit_refine(ptr, &RNA_Object, iterator->current);
}
static int rna_DepsgraphObjectInstance_is_instance_get(PointerRNA *ptr)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- return (deg_iter->dupli_object_current != NULL);
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ return (deg_iter->dupli_object_current != NULL);
}
static PointerRNA rna_DepsgraphObjectInstance_instance_object_get(PointerRNA *ptr)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- Object *instance_object = NULL;
- if (deg_iter->dupli_object_current != NULL) {
- instance_object = deg_iter->dupli_object_current->ob;
- }
- return rna_pointer_inherit_refine(ptr, &RNA_Object, instance_object);
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ Object *instance_object = NULL;
+ if (deg_iter->dupli_object_current != NULL) {
+ instance_object = deg_iter->dupli_object_current->ob;
+ }
+ return rna_pointer_inherit_refine(ptr, &RNA_Object, instance_object);
}
static bool rna_DepsgraphObjectInstance_show_self_get(PointerRNA *ptr)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- int ob_visibility = BKE_object_visibility(iterator->current, deg_iter->eval_mode);
- return (ob_visibility & OB_VISIBLE_SELF) != 0;
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ int ob_visibility = BKE_object_visibility(iterator->current, deg_iter->eval_mode);
+ return (ob_visibility & OB_VISIBLE_SELF) != 0;
}
static bool rna_DepsgraphObjectInstance_show_particles_get(PointerRNA *ptr)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- int ob_visibility = BKE_object_visibility(iterator->current, deg_iter->eval_mode);
- return (ob_visibility & OB_VISIBLE_PARTICLES) != 0;
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ int ob_visibility = BKE_object_visibility(iterator->current, deg_iter->eval_mode);
+ return (ob_visibility & OB_VISIBLE_PARTICLES) != 0;
}
static PointerRNA rna_DepsgraphObjectInstance_parent_get(PointerRNA *ptr)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- Object *dupli_parent = NULL;
- if (deg_iter->dupli_object_current != NULL) {
- dupli_parent = deg_iter->dupli_parent;
- }
- return rna_pointer_inherit_refine(ptr, &RNA_Object, dupli_parent);
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ Object *dupli_parent = NULL;
+ if (deg_iter->dupli_object_current != NULL) {
+ dupli_parent = deg_iter->dupli_parent;
+ }
+ return rna_pointer_inherit_refine(ptr, &RNA_Object, dupli_parent);
}
static PointerRNA rna_DepsgraphObjectInstance_particle_system_get(PointerRNA *ptr)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- struct ParticleSystem *particle_system = NULL;
- if (deg_iter->dupli_object_current != NULL) {
- particle_system = deg_iter->dupli_object_current->particle_system;
- }
- return rna_pointer_inherit_refine(ptr, &RNA_ParticleSystem, particle_system);
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ struct ParticleSystem *particle_system = NULL;
+ if (deg_iter->dupli_object_current != NULL) {
+ particle_system = deg_iter->dupli_object_current->particle_system;
+ }
+ return rna_pointer_inherit_refine(ptr, &RNA_ParticleSystem, particle_system);
}
static void rna_DepsgraphObjectInstance_persistent_id_get(PointerRNA *ptr, int *persistent_id)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- if (deg_iter->dupli_object_current != NULL) {
- memcpy(persistent_id, deg_iter->dupli_object_current->persistent_id,
- sizeof(deg_iter->dupli_object_current->persistent_id));
- }
- else {
- memset(persistent_id, 0, sizeof(deg_iter->dupli_object_current->persistent_id));
- }
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ if (deg_iter->dupli_object_current != NULL) {
+ memcpy(persistent_id,
+ deg_iter->dupli_object_current->persistent_id,
+ sizeof(deg_iter->dupli_object_current->persistent_id));
+ }
+ else {
+ memset(persistent_id, 0, sizeof(deg_iter->dupli_object_current->persistent_id));
+ }
}
static unsigned int rna_DepsgraphObjectInstance_random_id_get(PointerRNA *ptr)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- if (deg_iter->dupli_object_current != NULL) {
- return deg_iter->dupli_object_current->random_id;
- }
- else {
- return 0;
- }
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ if (deg_iter->dupli_object_current != NULL) {
+ return deg_iter->dupli_object_current->random_id;
+ }
+ else {
+ return 0;
+ }
}
static void rna_DepsgraphObjectInstance_matrix_world_get(PointerRNA *ptr, float *mat)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- if (deg_iter->dupli_object_current != NULL) {
- copy_m4_m4((float(*)[4])mat, deg_iter->dupli_object_current->mat);
- }
- else {
- /* We can return actual object's matrix here, no reason to return identity matrix
- * when this is not actually an instance... */
- Object *ob = (Object *)iterator->current;
- copy_m4_m4((float(*)[4])mat, ob->obmat);
- }
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ if (deg_iter->dupli_object_current != NULL) {
+ copy_m4_m4((float(*)[4])mat, deg_iter->dupli_object_current->mat);
+ }
+ else {
+ /* We can return actual object's matrix here, no reason to return identity matrix
+ * when this is not actually an instance... */
+ Object *ob = (Object *)iterator->current;
+ copy_m4_m4((float(*)[4])mat, ob->obmat);
+ }
}
static void rna_DepsgraphObjectInstance_orco_get(PointerRNA *ptr, float *orco)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- if (deg_iter->dupli_object_current != NULL) {
- copy_v3_v3(orco, deg_iter->dupli_object_current->orco);
- }
- else {
- zero_v3(orco);
- }
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ if (deg_iter->dupli_object_current != NULL) {
+ copy_v3_v3(orco, deg_iter->dupli_object_current->orco);
+ }
+ else {
+ zero_v3(orco);
+ }
}
static void rna_DepsgraphObjectInstance_uv_get(PointerRNA *ptr, float *uv)
{
- BLI_Iterator *iterator = ptr->data;
- DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
- if (deg_iter->dupli_object_current != NULL) {
- copy_v2_v2(uv, deg_iter->dupli_object_current->uv);
- }
- else {
- zero_v2(uv);
- }
+ BLI_Iterator *iterator = ptr->data;
+ DEGObjectIterData *deg_iter = (DEGObjectIterData *)iterator->data;
+ if (deg_iter->dupli_object_current != NULL) {
+ copy_v2_v2(uv, deg_iter->dupli_object_current->uv);
+ }
+ else {
+ zero_v2(uv);
+ }
}
/* ******************** Sorted ***************** */
static int rna_Depsgraph_mode_get(PointerRNA *ptr)
{
- Depsgraph *depsgraph = ptr->data;
- return DEG_get_mode(depsgraph);
+ Depsgraph *depsgraph = ptr->data;
+ return DEG_get_mode(depsgraph);
}
/* ******************** Updates ***************** */
static PointerRNA rna_DepsgraphUpdate_id_get(PointerRNA *ptr)
{
- return rna_pointer_inherit_refine(ptr, &RNA_ID, ptr->data);
+ return rna_pointer_inherit_refine(ptr, &RNA_ID, ptr->data);
}
static bool rna_DepsgraphUpdate_is_updated_transform_get(PointerRNA *ptr)
{
- ID *id = ptr->data;
- return ((id->recalc & ID_RECALC_TRANSFORM) != 0);
+ ID *id = ptr->data;
+ return ((id->recalc & ID_RECALC_TRANSFORM) != 0);
}
static bool rna_DepsgraphUpdate_is_updated_geometry_get(PointerRNA *ptr)
{
- ID *id = ptr->data;
- if (id->recalc & ID_RECALC_GEOMETRY) {
- return true;
- }
- if (GS(id->name) != ID_OB) {
- return false;
- }
- Object *object = (Object *)id;
- ID *data = object->data;
- if (data == NULL) {
- return false;
- }
- return ((data->recalc & ID_RECALC_ALL) != 0);
+ ID *id = ptr->data;
+ if (id->recalc & ID_RECALC_GEOMETRY) {
+ return true;
+ }
+ if (GS(id->name) != ID_OB) {
+ return false;
+ }
+ Object *object = (Object *)id;
+ ID *data = object->data;
+ if (data == NULL) {
+ return false;
+ }
+ return ((data->recalc & ID_RECALC_ALL) != 0);
}
/* **************** Depsgraph **************** */
-static void rna_Depsgraph_debug_relations_graphviz(Depsgraph *depsgraph,
- const char *filename)
+static void rna_Depsgraph_debug_relations_graphviz(Depsgraph *depsgraph, const char *filename)
{
- FILE *f = fopen(filename, "w");
- if (f == NULL) {
- return;
- }
- DEG_debug_relations_graphviz(depsgraph, f, "Depsgraph");
- fclose(f);
+ FILE *f = fopen(filename, "w");
+ if (f == NULL) {
+ return;
+ }
+ DEG_debug_relations_graphviz(depsgraph, f, "Depsgraph");
+ fclose(f);
}
static void rna_Depsgraph_debug_stats_gnuplot(Depsgraph *depsgraph,
const char *filename,
const char *output_filename)
{
- FILE *f = fopen(filename, "w");
- if (f == NULL) {
- return;
- }
- DEG_debug_stats_gnuplot(depsgraph, f, "Timing Statistics", output_filename);
- fclose(f);
+ FILE *f = fopen(filename, "w");
+ if (f == NULL) {
+ return;
+ }
+ DEG_debug_stats_gnuplot(depsgraph, f, "Timing Statistics", output_filename);
+ fclose(f);
}
static void rna_Depsgraph_debug_tag_update(Depsgraph *depsgraph)
{
- DEG_graph_tag_relations_update(depsgraph);
+ DEG_graph_tag_relations_update(depsgraph);
}
static void rna_Depsgraph_debug_stats(Depsgraph *depsgraph, char *result)
{
- size_t outer, ops, rels;
- DEG_stats_simple(depsgraph, &outer, &ops, &rels);
- BLI_snprintf(result, STATS_MAX_SIZE,
- "Approx %lu Operations, %lu Relations, %lu Outer Nodes",
- ops, rels, outer);
+ size_t outer, ops, rels;
+ DEG_stats_simple(depsgraph, &outer, &ops, &rels);
+ BLI_snprintf(result,
+ STATS_MAX_SIZE,
+ "Approx %lu Operations, %lu Relations, %lu Outer Nodes",
+ ops,
+ rels,
+ outer);
}
/* Iteration over objects, simple version */
static void rna_Depsgraph_objects_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
- iter->internal.custom = MEM_callocN(sizeof(BLI_Iterator), __func__);
- DEGObjectIterData *data = MEM_callocN(sizeof(DEGObjectIterData), __func__);
+ iter->internal.custom = MEM_callocN(sizeof(BLI_Iterator), __func__);
+ DEGObjectIterData *data = MEM_callocN(sizeof(DEGObjectIterData), __func__);
- data->graph = (Depsgraph *)ptr->data;
- data->flag = DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY |
- DEG_ITER_OBJECT_FLAG_VISIBLE |
- DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET;
+ data->graph = (Depsgraph *)ptr->data;
+ data->flag = DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY | DEG_ITER_OBJECT_FLAG_VISIBLE |
+ DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET;
- ((BLI_Iterator *)iter->internal.custom)->valid = true;
- DEG_iterator_objects_begin(iter->internal.custom, data);
- iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
+ ((BLI_Iterator *)iter->internal.custom)->valid = true;
+ DEG_iterator_objects_begin(iter->internal.custom, data);
+ iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
}
static void rna_Depsgraph_objects_next(CollectionPropertyIterator *iter)
{
- DEG_iterator_objects_next(iter->internal.custom);
- iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
+ DEG_iterator_objects_next(iter->internal.custom);
+ iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
}
static void rna_Depsgraph_objects_end(CollectionPropertyIterator *iter)
{
- DEG_iterator_objects_end(iter->internal.custom);
- MEM_freeN(((BLI_Iterator *)iter->internal.custom)->data);
- MEM_freeN(iter->internal.custom);
+ DEG_iterator_objects_end(iter->internal.custom);
+ MEM_freeN(((BLI_Iterator *)iter->internal.custom)->data);
+ MEM_freeN(iter->internal.custom);
}
static PointerRNA rna_Depsgraph_objects_get(CollectionPropertyIterator *iter)
{
- Object *ob = ((BLI_Iterator *)iter->internal.custom)->current;
- return rna_pointer_inherit_refine(&iter->parent, &RNA_Object, ob);
+ Object *ob = ((BLI_Iterator *)iter->internal.custom)->current;
+ return rna_pointer_inherit_refine(&iter->parent, &RNA_Object, ob);
}
/* Iteration over objects, extended version
@@ -298,402 +300,451 @@ static PointerRNA rna_Depsgraph_objects_get(CollectionPropertyIterator *iter)
* This forces us to use that nasty ping-pong game between two sets of iterator data, so that previous one remains
* valid memory for python to access to. Yuck.
*/
-typedef struct RNA_Depsgraph_Instances_Iterator
-{
- BLI_Iterator iterators[2];
- DEGObjectIterData deg_data[2];
- DupliObject dupli_object_current[2];
- int counter;
+typedef struct RNA_Depsgraph_Instances_Iterator {
+ BLI_Iterator iterators[2];
+ DEGObjectIterData deg_data[2];
+ DupliObject dupli_object_current[2];
+ int counter;
} RNA_Depsgraph_Instances_Iterator;
static void rna_Depsgraph_object_instances_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
- RNA_Depsgraph_Instances_Iterator *di_it = iter->internal.custom = MEM_callocN(sizeof(*di_it), __func__);
+ RNA_Depsgraph_Instances_Iterator *di_it = iter->internal.custom = MEM_callocN(sizeof(*di_it),
+ __func__);
- DEGObjectIterData *data = &di_it->deg_data[0];
- data->graph = (Depsgraph *)ptr->data;
- data->flag = DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY |
- DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET |
- DEG_ITER_OBJECT_FLAG_VISIBLE |
- DEG_ITER_OBJECT_FLAG_DUPLI;
+ DEGObjectIterData *data = &di_it->deg_data[0];
+ data->graph = (Depsgraph *)ptr->data;
+ data->flag = DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY | DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET |
+ DEG_ITER_OBJECT_FLAG_VISIBLE | DEG_ITER_OBJECT_FLAG_DUPLI;
- di_it->iterators[0].valid = true;
- DEG_iterator_objects_begin(&di_it->iterators[0], data);
- iter->valid = di_it->iterators[0].valid;
+ di_it->iterators[0].valid = true;
+ DEG_iterator_objects_begin(&di_it->iterators[0], data);
+ iter->valid = di_it->iterators[0].valid;
}
static void rna_Depsgraph_object_instances_next(CollectionPropertyIterator *iter)
{
- RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)iter->internal.custom;
+ RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)
+ iter->internal.custom;
- /* We need to copy current iterator status to next one beeing worked on. */
- di_it->iterators[(di_it->counter + 1) % 2] = di_it->iterators[di_it->counter % 2];
- di_it->deg_data[(di_it->counter + 1) % 2] = di_it->deg_data[di_it->counter % 2];
- di_it->counter++;
+ /* We need to copy current iterator status to next one beeing worked on. */
+ di_it->iterators[(di_it->counter + 1) % 2] = di_it->iterators[di_it->counter % 2];
+ di_it->deg_data[(di_it->counter + 1) % 2] = di_it->deg_data[di_it->counter % 2];
+ di_it->counter++;
- di_it->iterators[di_it->counter % 2].data = &di_it->deg_data[di_it->counter % 2];
- DEG_iterator_objects_next(&di_it->iterators[di_it->counter % 2]);
- /* Dupli_object_current is also temp memory generated during the iterations,
- * it may be freed when last item has been iterated, so we have same issue as with the iterator itself:
- * we need to keep a local copy, which memory remains valid a bit longer, for python accesses to work. */
- if (di_it->deg_data[di_it->counter % 2].dupli_object_current != NULL) {
- di_it->dupli_object_current[di_it->counter % 2] = *di_it->deg_data[di_it->counter % 2].dupli_object_current;
- di_it->deg_data[di_it->counter % 2].dupli_object_current = &di_it->dupli_object_current[di_it->counter % 2];
- }
- iter->valid = di_it->iterators[di_it->counter % 2].valid;
+ di_it->iterators[di_it->counter % 2].data = &di_it->deg_data[di_it->counter % 2];
+ DEG_iterator_objects_next(&di_it->iterators[di_it->counter % 2]);
+ /* Dupli_object_current is also temp memory generated during the iterations,
+ * it may be freed when last item has been iterated, so we have same issue as with the iterator itself:
+ * we need to keep a local copy, which memory remains valid a bit longer, for python accesses to work. */
+ if (di_it->deg_data[di_it->counter % 2].dupli_object_current != NULL) {
+ di_it->dupli_object_current[di_it->counter % 2] =
+ *di_it->deg_data[di_it->counter % 2].dupli_object_current;
+ di_it->deg_data[di_it->counter % 2].dupli_object_current =
+ &di_it->dupli_object_current[di_it->counter % 2];
+ }
+ iter->valid = di_it->iterators[di_it->counter % 2].valid;
}
static void rna_Depsgraph_object_instances_end(CollectionPropertyIterator *iter)
{
- RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)iter->internal.custom;
- DEG_iterator_objects_end(&di_it->iterators[0]);
- DEG_iterator_objects_end(&di_it->iterators[1]);
- MEM_freeN(di_it);
+ RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)
+ iter->internal.custom;
+ DEG_iterator_objects_end(&di_it->iterators[0]);
+ DEG_iterator_objects_end(&di_it->iterators[1]);
+ MEM_freeN(di_it);
}
static PointerRNA rna_Depsgraph_object_instances_get(CollectionPropertyIterator *iter)
{
- RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)iter->internal.custom;
- BLI_Iterator *iterator = &di_it->iterators[di_it->counter % 2];
- return rna_pointer_inherit_refine(&iter->parent, &RNA_DepsgraphObjectInstance, iterator);
+ RNA_Depsgraph_Instances_Iterator *di_it = (RNA_Depsgraph_Instances_Iterator *)
+ iter->internal.custom;
+ BLI_Iterator *iterator = &di_it->iterators[di_it->counter % 2];
+ return rna_pointer_inherit_refine(&iter->parent, &RNA_DepsgraphObjectInstance, iterator);
}
/* Iteration over evaluated IDs */
static void rna_Depsgraph_ids_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
- iter->internal.custom = MEM_callocN(sizeof(BLI_Iterator), __func__);
- DEGIDIterData *data = MEM_callocN(sizeof(DEGIDIterData), __func__);
+ iter->internal.custom = MEM_callocN(sizeof(BLI_Iterator), __func__);
+ DEGIDIterData *data = MEM_callocN(sizeof(DEGIDIterData), __func__);
- data->graph = (Depsgraph *)ptr->data;
+ data->graph = (Depsgraph *)ptr->data;
- ((BLI_Iterator *)iter->internal.custom)->valid = true;
- DEG_iterator_ids_begin(iter->internal.custom, data);
- iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
+ ((BLI_Iterator *)iter->internal.custom)->valid = true;
+ DEG_iterator_ids_begin(iter->internal.custom, data);
+ iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
}
static void rna_Depsgraph_ids_next(CollectionPropertyIterator *iter)
{
- DEG_iterator_ids_next(iter->internal.custom);
- iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
+ DEG_iterator_ids_next(iter->internal.custom);
+ iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
}
static void rna_Depsgraph_ids_end(CollectionPropertyIterator *iter)
{
- DEG_iterator_ids_end(iter->internal.custom);
- MEM_freeN(((BLI_Iterator *)iter->internal.custom)->data);
- MEM_freeN(iter->internal.custom);
+ DEG_iterator_ids_end(iter->internal.custom);
+ MEM_freeN(((BLI_Iterator *)iter->internal.custom)->data);
+ MEM_freeN(iter->internal.custom);
}
static PointerRNA rna_Depsgraph_ids_get(CollectionPropertyIterator *iter)
{
- ID *id = ((BLI_Iterator *)iter->internal.custom)->current;
- return rna_pointer_inherit_refine(&iter->parent, &RNA_ID, id);
+ ID *id = ((BLI_Iterator *)iter->internal.custom)->current;
+ return rna_pointer_inherit_refine(&iter->parent, &RNA_ID, id);
}
static void rna_Depsgraph_updates_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
- iter->internal.custom = MEM_callocN(sizeof(BLI_Iterator), __func__);
- DEGIDIterData *data = MEM_callocN(sizeof(DEGIDIterData), __func__);
+ iter->internal.custom = MEM_callocN(sizeof(BLI_Iterator), __func__);
+ DEGIDIterData *data = MEM_callocN(sizeof(DEGIDIterData), __func__);
- data->graph = (Depsgraph *)ptr->data;
- data->only_updated = true;
+ data->graph = (Depsgraph *)ptr->data;
+ data->only_updated = true;
- ((BLI_Iterator *)iter->internal.custom)->valid = true;
- DEG_iterator_ids_begin(iter->internal.custom, data);
- iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
+ ((BLI_Iterator *)iter->internal.custom)->valid = true;
+ DEG_iterator_ids_begin(iter->internal.custom, data);
+ iter->valid = ((BLI_Iterator *)iter->internal.custom)->valid;
}
static PointerRNA rna_Depsgraph_updates_get(CollectionPropertyIterator *iter)
{
- ID *id = ((BLI_Iterator *)iter->internal.custom)->current;
- return rna_pointer_inherit_refine(&iter->parent, &RNA_DepsgraphUpdate, id);
+ ID *id = ((BLI_Iterator *)iter->internal.custom)->current;
+ return rna_pointer_inherit_refine(&iter->parent, &RNA_DepsgraphUpdate, id);
}
static ID *rna_Depsgraph_id_eval_get(Depsgraph *depsgraph, ID *id_orig)
{
- return DEG_get_evaluated_id(depsgraph, id_orig);
+ return DEG_get_evaluated_id(depsgraph, id_orig);
}
static bool rna_Depsgraph_id_type_updated(Depsgraph *depsgraph, int id_type)
{
- return DEG_id_type_updated(depsgraph, id_type);
+ return DEG_id_type_updated(depsgraph, id_type);
}
static PointerRNA rna_Depsgraph_scene_get(PointerRNA *ptr)
{
- Depsgraph *depsgraph = (Depsgraph *)ptr->data;
- Scene *scene = DEG_get_input_scene(depsgraph);
- return rna_pointer_inherit_refine(ptr, &RNA_Scene, scene);
+ Depsgraph *depsgraph = (Depsgraph *)ptr->data;
+ Scene *scene = DEG_get_input_scene(depsgraph);
+ return rna_pointer_inherit_refine(ptr, &RNA_Scene, scene);
}
static PointerRNA rna_Depsgraph_view_layer_get(PointerRNA *ptr)
{
- Depsgraph *depsgraph = (Depsgraph *)ptr->data;
- ViewLayer *view_layer = DEG_get_input_view_layer(depsgraph);
- return rna_pointer_inherit_refine(ptr, &RNA_ViewLayer, view_layer);
+ Depsgraph *depsgraph = (Depsgraph *)ptr->data;
+ ViewLayer *view_layer = DEG_get_input_view_layer(depsgraph);
+ return rna_pointer_inherit_refine(ptr, &RNA_ViewLayer, view_layer);
}
static PointerRNA rna_Depsgraph_scene_eval_get(PointerRNA *ptr)
{
- Depsgraph *depsgraph = (Depsgraph *)ptr->data;
- Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
- return rna_pointer_inherit_refine(ptr, &RNA_Scene, scene_eval);
+ Depsgraph *depsgraph = (Depsgraph *)ptr->data;
+ Scene *scene_eval = DEG_get_evaluated_scene(depsgraph);
+ return rna_pointer_inherit_refine(ptr, &RNA_Scene, scene_eval);
}
static PointerRNA rna_Depsgraph_view_layer_eval_get(PointerRNA *ptr)
{
- Depsgraph *depsgraph = (Depsgraph *)ptr->data;
- ViewLayer *view_layer_eval = DEG_get_evaluated_view_layer(depsgraph);
- return rna_pointer_inherit_refine(ptr, &RNA_ViewLayer, view_layer_eval);
+ Depsgraph *depsgraph = (Depsgraph *)ptr->data;
+ ViewLayer *view_layer_eval = DEG_get_evaluated_view_layer(depsgraph);
+ return rna_pointer_inherit_refine(ptr, &RNA_ViewLayer, view_layer_eval);
}
#else
static void rna_def_depsgraph_instance(BlenderRNA *brna)
{
- StructRNA *srna;
- PropertyRNA *prop;
-
- srna = RNA_def_struct(brna, "DepsgraphObjectInstance", NULL);
- RNA_def_struct_ui_text(srna, "Dependency Graph Object Instance",
- "Extended information about dependency graph object iterator "
- "(WARNING: all data here is *evaluated* one, not original .blend IDs...)");
-
- prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
- RNA_def_property_ui_text(prop, "Object", "Evaluated object the iterator points to");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_pointer_funcs(prop, "rna_DepsgraphObjectInstance_object_get", NULL, NULL, NULL);
-
- prop = RNA_def_property(srna, "show_self", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Show Self", "The object geometry itself should be visible in the render");
- RNA_def_property_boolean_funcs(prop, "rna_DepsgraphObjectInstance_show_self_get", NULL);
-
- prop = RNA_def_property(srna, "show_particles", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Show Particles", "Particles part of the object should be visible in the render");
- RNA_def_property_boolean_funcs(prop, "rna_DepsgraphObjectInstance_show_particles_get", NULL);
-
- prop = RNA_def_property(srna, "is_instance", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Is Instance", "Denotes if the object is generated by another object");
- RNA_def_property_boolean_funcs(prop, "rna_DepsgraphObjectInstance_is_instance_get", NULL);
-
- prop = RNA_def_property(srna, "instance_object", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
- RNA_def_property_ui_text(prop, "Instance Object", "Evaluated object which is being instanced by this iterator");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_pointer_funcs(prop, "rna_DepsgraphObjectInstance_instance_object_get", NULL, NULL, NULL);
-
- prop = RNA_def_property(srna, "parent", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
- RNA_def_property_ui_text(prop, "Parent", "If the object is an instance, the parent object that generated it");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_pointer_funcs(prop, "rna_DepsgraphObjectInstance_parent_get", NULL, NULL, NULL);
-
- prop = RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "ParticleSystem");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Particle System", "Evaluated particle system that this object was instanced from");
- RNA_def_property_pointer_funcs(prop, "rna_DepsgraphObjectInstance_particle_system_get", NULL, NULL, NULL);
-
- prop = RNA_def_property(srna, "persistent_id", PROP_INT, PROP_NONE);
- RNA_def_property_ui_text(prop, "Persistent ID",
- "Persistent identifier for inter-frame matching of objects with motion blur");
- RNA_def_property_array(prop, 2 * MAX_DUPLI_RECUR);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_int_funcs(prop, "rna_DepsgraphObjectInstance_persistent_id_get", NULL, NULL);
-
- prop = RNA_def_property(srna, "random_id", PROP_INT, PROP_UNSIGNED);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Dupli random id", "Random id for this instance, typically for randomized shading");
- RNA_def_property_int_funcs(prop, "rna_DepsgraphObjectInstance_random_id_get", NULL, NULL);
-
- prop = RNA_def_property(srna, "matrix_world", PROP_FLOAT, PROP_MATRIX);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_multi_array(prop, 2, rna_matrix_dimsize_4x4);
- RNA_def_property_ui_text(prop, "Generated Matrix", "Generated transform matrix in world space");
- RNA_def_property_float_funcs(prop, "rna_DepsgraphObjectInstance_matrix_world_get", NULL, NULL);
-
- prop = RNA_def_property(srna, "orco", PROP_FLOAT, PROP_TRANSLATION);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_array(prop, 3);
- RNA_def_property_ui_text(prop, "Generated Coordinates", "Generated coordinates in parent object space");
- RNA_def_property_float_funcs(prop, "rna_DepsgraphObjectInstance_orco_get", NULL, NULL);
-
- prop = RNA_def_property(srna, "uv", PROP_FLOAT, PROP_NONE);
- RNA_def_property_ui_text(prop, "UV Coordinates", "UV coordinates in parent object space");
- RNA_def_property_array(prop, 2);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_float_funcs(prop, "rna_DepsgraphObjectInstance_uv_get", NULL, NULL);
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna = RNA_def_struct(brna, "DepsgraphObjectInstance", NULL);
+ RNA_def_struct_ui_text(
+ srna,
+ "Dependency Graph Object Instance",
+ "Extended information about dependency graph object iterator "
+ "(WARNING: all data here is *evaluated* one, not original .blend IDs...)");
+
+ prop = RNA_def_property(srna, "object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_ui_text(prop, "Object", "Evaluated object the iterator points to");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_pointer_funcs(prop, "rna_DepsgraphObjectInstance_object_get", NULL, NULL, NULL);
+
+ prop = RNA_def_property(srna, "show_self", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_ui_text(
+ prop, "Show Self", "The object geometry itself should be visible in the render");
+ RNA_def_property_boolean_funcs(prop, "rna_DepsgraphObjectInstance_show_self_get", NULL);
+
+ prop = RNA_def_property(srna, "show_particles", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_ui_text(
+ prop, "Show Particles", "Particles part of the object should be visible in the render");
+ RNA_def_property_boolean_funcs(prop, "rna_DepsgraphObjectInstance_show_particles_get", NULL);
+
+ prop = RNA_def_property(srna, "is_instance", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_ui_text(
+ prop, "Is Instance", "Denotes if the object is generated by another object");
+ RNA_def_property_boolean_funcs(prop, "rna_DepsgraphObjectInstance_is_instance_get", NULL);
+
+ prop = RNA_def_property(srna, "instance_object", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_ui_text(
+ prop, "Instance Object", "Evaluated object which is being instanced by this iterator");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_pointer_funcs(
+ prop, "rna_DepsgraphObjectInstance_instance_object_get", NULL, NULL, NULL);
+
+ prop = RNA_def_property(srna, "parent", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_ui_text(
+ prop, "Parent", "If the object is an instance, the parent object that generated it");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_pointer_funcs(prop, "rna_DepsgraphObjectInstance_parent_get", NULL, NULL, NULL);
+
+ prop = RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ParticleSystem");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_ui_text(
+ prop, "Particle System", "Evaluated particle system that this object was instanced from");
+ RNA_def_property_pointer_funcs(
+ prop, "rna_DepsgraphObjectInstance_particle_system_get", NULL, NULL, NULL);
+
+ prop = RNA_def_property(srna, "persistent_id", PROP_INT, PROP_NONE);
+ RNA_def_property_ui_text(
+ prop,
+ "Persistent ID",
+ "Persistent identifier for inter-frame matching of objects with motion blur");
+ RNA_def_property_array(prop, 2 * MAX_DUPLI_RECUR);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_int_funcs(prop, "rna_DepsgraphObjectInstance_persistent_id_get", NULL, NULL);
+
+ prop = RNA_def_property(srna, "random_id", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_ui_text(
+ prop, "Dupli random id", "Random id for this instance, typically for randomized shading");
+ RNA_def_property_int_funcs(prop, "rna_DepsgraphObjectInstance_random_id_get", NULL, NULL);
+
+ prop = RNA_def_property(srna, "matrix_world", PROP_FLOAT, PROP_MATRIX);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_multi_array(prop, 2, rna_matrix_dimsize_4x4);
+ RNA_def_property_ui_text(prop, "Generated Matrix", "Generated transform matrix in world space");
+ RNA_def_property_float_funcs(prop, "rna_DepsgraphObjectInstance_matrix_world_get", NULL, NULL);
+
+ prop = RNA_def_property(srna, "orco", PROP_FLOAT, PROP_TRANSLATION);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_array(prop, 3);
+ RNA_def_property_ui_text(
+ prop, "Generated Coordinates", "Generated coordinates in parent object space");
+ RNA_def_property_float_funcs(prop, "rna_DepsgraphObjectInstance_orco_get", NULL, NULL);
+
+ prop = RNA_def_property(srna, "uv", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_ui_text(prop, "UV Coordinates", "UV coordinates in parent object space");
+ RNA_def_property_array(prop, 2);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_float_funcs(prop, "rna_DepsgraphObjectInstance_uv_get", NULL, NULL);
}
static void rna_def_depsgraph_update(BlenderRNA *brna)
{
- StructRNA *srna;
- PropertyRNA *prop;
+ StructRNA *srna;
+ PropertyRNA *prop;
- srna = RNA_def_struct(brna, "DepsgraphUpdate", NULL);
- RNA_def_struct_ui_text(srna, "Dependency Graph Update",
- "Information about ID that was updated");
+ srna = RNA_def_struct(brna, "DepsgraphUpdate", NULL);
+ RNA_def_struct_ui_text(srna, "Dependency Graph Update", "Information about ID that was updated");
- prop = RNA_def_property(srna, "id", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "ID");
- RNA_def_property_ui_text(prop, "ID", "Updated datablock");
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_pointer_funcs(prop, "rna_DepsgraphUpdate_id_get", NULL, NULL, NULL);
+ prop = RNA_def_property(srna, "id", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ID");
+ RNA_def_property_ui_text(prop, "ID", "Updated datablock");
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_pointer_funcs(prop, "rna_DepsgraphUpdate_id_get", NULL, NULL, NULL);
- /* Use term 'is_updated' instead of 'is_dirty' here because this is a signal
- * that users of the depsgraph may want to update their data (render engines for eg). */
+ /* Use term 'is_updated' instead of 'is_dirty' here because this is a signal
+ * that users of the depsgraph may want to update their data (render engines for eg). */
- prop = RNA_def_property(srna, "is_updated_transform", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Transform", "Object transformation is updated");
- RNA_def_property_boolean_funcs(prop, "rna_DepsgraphUpdate_is_updated_transform_get", NULL);
+ prop = RNA_def_property(srna, "is_updated_transform", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Transform", "Object transformation is updated");
+ RNA_def_property_boolean_funcs(prop, "rna_DepsgraphUpdate_is_updated_transform_get", NULL);
- prop = RNA_def_property(srna, "is_updated_geometry", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Geometry", "Object geometry is updated");
- RNA_def_property_boolean_funcs(prop, "rna_DepsgraphUpdate_is_updated_geometry_get", NULL);
+ prop = RNA_def_property(srna, "is_updated_geometry", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_ANIMATABLE | PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Geometry", "Object geometry is updated");
+ RNA_def_property_boolean_funcs(prop, "rna_DepsgraphUpdate_is_updated_geometry_get", NULL);
}
static void rna_def_depsgraph(BlenderRNA *brna)
{
- StructRNA *srna;
- FunctionRNA *func;
- PropertyRNA *parm;
- PropertyRNA *prop;
-
- static EnumPropertyItem enum_depsgraph_mode_items[] = {
- {DAG_EVAL_VIEWPORT, "VIEWPORT", 0, "Viewport", "Viewport non-rendered mode"},
- {DAG_EVAL_RENDER, "RENDER", 0, "Render", "Render"},
- {0, NULL, 0, NULL, NULL},
- };
-
- srna = RNA_def_struct(brna, "Depsgraph", NULL);
- RNA_def_struct_ui_text(srna, "Dependency Graph", "");
-
- prop = RNA_def_enum(srna, "mode", enum_depsgraph_mode_items, 0, "Mode", "Evaluation mode");
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_enum_funcs(prop, "rna_Depsgraph_mode_get", NULL, NULL);
-
- /* Debug helpers. */
-
- func = RNA_def_function(srna, "debug_relations_graphviz", "rna_Depsgraph_debug_relations_graphviz");
- parm = RNA_def_string_file_path(func, "filename", NULL, FILE_MAX, "File Name",
- "File in which to store graphviz debug output");
- RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
-
- func = RNA_def_function(srna, "debug_stats_gnuplot", "rna_Depsgraph_debug_stats_gnuplot");
- parm = RNA_def_string_file_path(func, "filename", NULL, FILE_MAX, "File Name",
- "File in which to store graphviz debug output");
- RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
- parm = RNA_def_string_file_path(func, "output_filename", NULL, FILE_MAX, "Output File Name",
- "File name where gnuplot script will save the result");
- RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
-
- func = RNA_def_function(srna, "debug_tag_update", "rna_Depsgraph_debug_tag_update");
-
- func = RNA_def_function(srna, "debug_stats", "rna_Depsgraph_debug_stats");
- RNA_def_function_ui_description(func, "Report the number of elements in the Dependency Graph");
- /* weak!, no way to return dynamic string type */
- parm = RNA_def_string(func, "result", NULL, STATS_MAX_SIZE, "result", "");
- RNA_def_parameter_flags(parm, PROP_THICK_WRAP, 0); /* needed for string return value */
- RNA_def_function_output(func, parm);
-
- /* Queries for original datablockls (the ones depsgraph is built for). */
-
- prop = RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Scene");
- RNA_def_property_pointer_funcs(prop, "rna_Depsgraph_scene_get", NULL, NULL, NULL);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Scene", "Original scene dependency graph is built for");
-
- prop = RNA_def_property(srna, "view_layer", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "ViewLayer");
- RNA_def_property_pointer_funcs(prop, "rna_Depsgraph_view_layer_get", NULL, NULL, NULL);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "View Layer", "Original view layer dependency graph is built for");
-
- /* Queries for evaluated datablockls (the ones depsgraph is evaluating). */
-
- func = RNA_def_function(srna, "id_eval_get", "rna_Depsgraph_id_eval_get");
- parm = RNA_def_pointer(func, "id", "ID", "", "Original ID to get evaluated complementary part for");
- RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
- parm = RNA_def_pointer(func, "id_eval", "ID", "", "Evaluated ID for the given original one");
- RNA_def_function_return(func, parm);
-
- func = RNA_def_function(srna, "id_type_updated", "rna_Depsgraph_id_type_updated");
- parm = RNA_def_enum(func, "id_type", rna_enum_id_type_items, 0, "ID Type", "");
- RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
- parm = RNA_def_boolean(func, "updated", false, "Updated", "True if any datablock with this type was added, updated or removed");
- RNA_def_function_return(func, parm);
-
- prop = RNA_def_property(srna, "scene_eval", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "Scene");
- RNA_def_property_pointer_funcs(prop, "rna_Depsgraph_scene_eval_get", NULL, NULL, NULL);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "Scene", "Original scene dependency graph is built for");
-
- prop = RNA_def_property(srna, "view_layer_eval", PROP_POINTER, PROP_NONE);
- RNA_def_property_struct_type(prop, "ViewLayer");
- RNA_def_property_pointer_funcs(prop, "rna_Depsgraph_view_layer_eval_get", NULL, NULL, NULL);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_ui_text(prop, "View Layer", "Original view layer dependency graph is built for");
-
- /* Iterators. */
-
- prop = RNA_def_property(srna, "ids", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_struct_type(prop, "ID");
- RNA_def_property_collection_funcs(prop,
- "rna_Depsgraph_ids_begin",
- "rna_Depsgraph_ids_next",
- "rna_Depsgraph_ids_end",
- "rna_Depsgraph_ids_get",
- NULL, NULL, NULL, NULL);
- RNA_def_property_ui_text(prop, "IDs", "All evaluated datablocks");
-
- prop = RNA_def_property(srna, "objects", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_struct_type(prop, "Object");
- RNA_def_property_collection_funcs(prop,
- "rna_Depsgraph_objects_begin",
- "rna_Depsgraph_objects_next",
- "rna_Depsgraph_objects_end",
- "rna_Depsgraph_objects_get",
- NULL, NULL, NULL, NULL);
- RNA_def_property_ui_text(prop, "Objects", "Evaluated objects in the dependency graph");
-
- prop = RNA_def_property(srna, "object_instances", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_struct_type(prop, "DepsgraphObjectInstance");
- RNA_def_property_collection_funcs(prop,
- "rna_Depsgraph_object_instances_begin",
- "rna_Depsgraph_object_instances_next",
- "rna_Depsgraph_object_instances_end",
- "rna_Depsgraph_object_instances_get",
- NULL, NULL, NULL, NULL);
- RNA_def_property_ui_text(prop, "Object Instances",
- "All object instances to display or render "
- "(WARNING: only use this as an iterator, never as a sequence, "
- "and do not keep any references to its items)");
-
- prop = RNA_def_property(srna, "updates", PROP_COLLECTION, PROP_NONE);
- RNA_def_property_struct_type(prop, "DepsgraphUpdate");
- RNA_def_property_collection_funcs(prop,
- "rna_Depsgraph_updates_begin",
- "rna_Depsgraph_ids_next",
- "rna_Depsgraph_ids_end",
- "rna_Depsgraph_updates_get",
- NULL, NULL, NULL, NULL);
- RNA_def_property_ui_text(prop, "Updates", "Updates to datablocks");
+ StructRNA *srna;
+ FunctionRNA *func;
+ PropertyRNA *parm;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem enum_depsgraph_mode_items[] = {
+ {DAG_EVAL_VIEWPORT, "VIEWPORT", 0, "Viewport", "Viewport non-rendered mode"},
+ {DAG_EVAL_RENDER, "RENDER", 0, "Render", "Render"},
+ {0, NULL, 0, NULL, NULL},
+ };
+
+ srna = RNA_def_struct(brna, "Depsgraph", NULL);
+ RNA_def_struct_ui_text(srna, "Dependency Graph", "");
+
+ prop = RNA_def_enum(srna, "mode", enum_depsgraph_mode_items, 0, "Mode", "Evaluation mode");
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_enum_funcs(prop, "rna_Depsgraph_mode_get", NULL, NULL);
+
+ /* Debug helpers. */
+
+ func = RNA_def_function(
+ srna, "debug_relations_graphviz", "rna_Depsgraph_debug_relations_graphviz");
+ parm = RNA_def_string_file_path(func,
+ "filename",
+ NULL,
+ FILE_MAX,
+ "File Name",
+ "File in which to store graphviz debug output");
+ RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+
+ func = RNA_def_function(srna, "debug_stats_gnuplot", "rna_Depsgraph_debug_stats_gnuplot");
+ parm = RNA_def_string_file_path(func,
+ "filename",
+ NULL,
+ FILE_MAX,
+ "File Name",
+ "File in which to store graphviz debug output");
+ RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+ parm = RNA_def_string_file_path(func,
+ "output_filename",
+ NULL,
+ FILE_MAX,
+ "Output File Name",
+ "File name where gnuplot script will save the result");
+ RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+
+ func = RNA_def_function(srna, "debug_tag_update", "rna_Depsgraph_debug_tag_update");
+
+ func = RNA_def_function(srna, "debug_stats", "rna_Depsgraph_debug_stats");
+ RNA_def_function_ui_description(func, "Report the number of elements in the Dependency Graph");
+ /* weak!, no way to return dynamic string type */
+ parm = RNA_def_string(func, "result", NULL, STATS_MAX_SIZE, "result", "");
+ RNA_def_parameter_flags(parm, PROP_THICK_WRAP, 0); /* needed for string return value */
+ RNA_def_function_output(func, parm);
+
+ /* Queries for original datablockls (the ones depsgraph is built for). */
+
+ prop = RNA_def_property(srna, "scene", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Scene");
+ RNA_def_property_pointer_funcs(prop, "rna_Depsgraph_scene_get", NULL, NULL, NULL);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Scene", "Original scene dependency graph is built for");
+
+ prop = RNA_def_property(srna, "view_layer", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ViewLayer");
+ RNA_def_property_pointer_funcs(prop, "rna_Depsgraph_view_layer_get", NULL, NULL, NULL);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(
+ prop, "View Layer", "Original view layer dependency graph is built for");
+
+ /* Queries for evaluated datablockls (the ones depsgraph is evaluating). */
+
+ func = RNA_def_function(srna, "id_eval_get", "rna_Depsgraph_id_eval_get");
+ parm = RNA_def_pointer(
+ func, "id", "ID", "", "Original ID to get evaluated complementary part for");
+ RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+ parm = RNA_def_pointer(func, "id_eval", "ID", "", "Evaluated ID for the given original one");
+ RNA_def_function_return(func, parm);
+
+ func = RNA_def_function(srna, "id_type_updated", "rna_Depsgraph_id_type_updated");
+ parm = RNA_def_enum(func, "id_type", rna_enum_id_type_items, 0, "ID Type", "");
+ RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+ parm = RNA_def_boolean(func,
+ "updated",
+ false,
+ "Updated",
+ "True if any datablock with this type was added, updated or removed");
+ RNA_def_function_return(func, parm);
+
+ prop = RNA_def_property(srna, "scene_eval", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Scene");
+ RNA_def_property_pointer_funcs(prop, "rna_Depsgraph_scene_eval_get", NULL, NULL, NULL);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(prop, "Scene", "Original scene dependency graph is built for");
+
+ prop = RNA_def_property(srna, "view_layer_eval", PROP_POINTER, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ViewLayer");
+ RNA_def_property_pointer_funcs(prop, "rna_Depsgraph_view_layer_eval_get", NULL, NULL, NULL);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_ui_text(
+ prop, "View Layer", "Original view layer dependency graph is built for");
+
+ /* Iterators. */
+
+ prop = RNA_def_property(srna, "ids", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_struct_type(prop, "ID");
+ RNA_def_property_collection_funcs(prop,
+ "rna_Depsgraph_ids_begin",
+ "rna_Depsgraph_ids_next",
+ "rna_Depsgraph_ids_end",
+ "rna_Depsgraph_ids_get",
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ RNA_def_property_ui_text(prop, "IDs", "All evaluated datablocks");
+
+ prop = RNA_def_property(srna, "objects", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_struct_type(prop, "Object");
+ RNA_def_property_collection_funcs(prop,
+ "rna_Depsgraph_objects_begin",
+ "rna_Depsgraph_objects_next",
+ "rna_Depsgraph_objects_end",
+ "rna_Depsgraph_objects_get",
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ RNA_def_property_ui_text(prop, "Objects", "Evaluated objects in the dependency graph");
+
+ prop = RNA_def_property(srna, "object_instances", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_struct_type(prop, "DepsgraphObjectInstance");
+ RNA_def_property_collection_funcs(prop,
+ "rna_Depsgraph_object_instances_begin",
+ "rna_Depsgraph_object_instances_next",
+ "rna_Depsgraph_object_instances_end",
+ "rna_Depsgraph_object_instances_get",
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ RNA_def_property_ui_text(prop,
+ "Object Instances",
+ "All object instances to display or render "
+ "(WARNING: only use this as an iterator, never as a sequence, "
+ "and do not keep any references to its items)");
+
+ prop = RNA_def_property(srna, "updates", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_struct_type(prop, "DepsgraphUpdate");
+ RNA_def_property_collection_funcs(prop,
+ "rna_Depsgraph_updates_begin",
+ "rna_Depsgraph_ids_next",
+ "rna_Depsgraph_ids_end",
+ "rna_Depsgraph_updates_get",
+ NULL,
+ NULL,
+ NULL,
+ NULL);
+ RNA_def_property_ui_text(prop, "Updates", "Updates to datablocks");
}
void RNA_def_depsgraph(BlenderRNA *brna)
{
- rna_def_depsgraph_instance(brna);
- rna_def_depsgraph_update(brna);
- rna_def_depsgraph(brna);
+ rna_def_depsgraph_instance(brna);
+ rna_def_depsgraph_update(brna);
+ rna_def_depsgraph(brna);
}
#endif