Page MenuHome

fastAdd.patch

fastAdd.patch

diff -ru ./blender/source/blender/editors/object/object_add.c ./blender_patched/source/blender/editors/object/object_add.c
--- ./blender/source/blender/editors/object/object_add.c 2012-07-19 18:12:42.000000000 +0200
+++ ./blender_patched/source/blender/editors/object/object_add.c 2013-02-01 16:25:12.877462594 +0100
@@ -199,6 +199,9 @@
RNA_def_property_flag(prop, PROP_HIDDEN|PROP_SKIP_SAVE);
}
+ prop = RNA_def_boolean(ot->srna, "add_fast", 0, "Fast Add", "Adds an object without recreating the dependency graph of the scene");
+ RNA_def_property_flag(prop, PROP_HIDDEN|PROP_SKIP_SAVE);
+
prop = RNA_def_float_vector_xyz(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location",
"Location for the newly added object", -FLT_MAX, FLT_MAX);
RNA_def_property_flag(prop, PROP_SKIP_SAVE);
@@ -249,6 +252,16 @@
return op->type->exec(C, op);
}
+int ED_object_add_generic_get_opts2(bContext *C, wmOperator *op, float *loc,
+ float *rot, int *enter_editmode, unsigned int *layer, int *is_view_aligned, int* add_fast) {
+ if (RNA_struct_find_property(op->ptr, "add_fast") && RNA_boolean_get(op->ptr, "add_fast")) {
+ *add_fast = TRUE;
+ } else {
+ *add_fast = FALSE;
+ }
+ return ED_object_add_generic_get_opts(C, op, loc, rot, enter_editmode, layer, is_view_aligned);
+}
+
int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc,
float *rot, int *enter_editmode, unsigned int *layer, int *is_view_aligned)
{
@@ -313,8 +326,8 @@
/* for object add primitive operators */
/* do not call undo push in this function (users of this function have to) */
-Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot,
- int enter_editmode, unsigned int layer)
+Object *ED_object_add_type2(bContext *C, int type, float *loc, float *rot,
+ int enter_editmode, unsigned int layer, int add_fast)
{
Main *bmain= CTX_data_main(C);
Scene *scene= CTX_data_scene(C);
@@ -334,7 +347,7 @@
ED_object_base_init_transform(C, BASACT, loc, rot);
DAG_id_type_tag(bmain, ID_OB);
- DAG_scene_sort(bmain, scene);
+ if (!add_fast) DAG_scene_sort(bmain, scene);
if (ob->data) {
ED_render_id_flush_update(bmain, ob->data);
}
@@ -347,17 +360,22 @@
return ob;
}
+Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot,
+ int enter_editmode, unsigned int layer) {
+ return ED_object_add_type2(C, type, loc, rot, enter_editmode, layer, FALSE);
+}
+
/* for object add operator */
static int object_add_exec(bContext *C, wmOperator *op)
{
- int enter_editmode;
+ int enter_editmode, add_fast;
unsigned int layer;
float loc[3], rot[3];
- if (!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
+ if (!ED_object_add_generic_get_opts2(C, op, loc, rot, &enter_editmode, &layer, NULL, &add_fast))
return OPERATOR_CANCELLED;
- ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer);
+ ED_object_add_type2(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer, add_fast);
return OPERATOR_FINISHED;
}
diff -ru ./blender/source/blender/editors/object/object_relations.c ./blender_patched/source/blender/editors/object/object_relations.c
--- ./blender/source/blender/editors/object/object_relations.c 2012-07-19 18:12:42.000000000 +0200
+++ ./blender_patched/source/blender/editors/object/object_relations.c 2013-02-01 16:29:57.468717201 +0100
@@ -673,6 +673,11 @@
Object *par= ED_object_active_context(C);
int partype= RNA_enum_get(op->ptr, "type");
int ok = 1;
+ int set_fast = FALSE;
+
+ if (RNA_struct_find_property(op->ptr, "set_fast") && RNA_boolean_get(op->ptr, "set_fast")) {
+ set_fast = TRUE;
+ }
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects)
{
@@ -686,7 +691,7 @@
if (!ok)
return OPERATOR_CANCELLED;
- DAG_scene_sort(bmain, scene);
+ if (!set_fast) DAG_scene_sort(bmain, scene);
DAG_ids_flush_update(bmain, 0);
WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, NULL);
WM_event_add_notifier(C, NC_OBJECT|ND_PARENT, NULL);
@@ -729,6 +734,8 @@
void OBJECT_OT_parent_set(wmOperatorType *ot)
{
+ PropertyRNA *prop;
+
/* identifiers */
ot->name = "Make Parent";
ot->description = "Set the object's parenting";
@@ -744,6 +751,9 @@
ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO;
RNA_def_enum(ot->srna, "type", prop_make_parent_types, 0, "Type", "");
+
+ prop = RNA_def_boolean(ot->srna, "set_fast", 0, "Fast Set", "Sets the parent without recreating the dependency graph of the scene");
+ RNA_def_property_flag(prop, PROP_HIDDEN|PROP_SKIP_SAVE);
}
/* ************ Make Parent Without Inverse Operator ******************* */

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
19/b6/da44969a7461f27525a7cd752f0d

Event Timeline