Page Menu
Home
Search
Configure Global Search
Log In
Files
F23105
fastAdd.patch
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Authored By
Alexander Trum (atrum)
Nov 13 2013, 5:10 PM
Size
4 KB
Subscribers
None
fastAdd.patch
View Options
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
Details
Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
19/b6/da44969a7461f27525a7cd752f0d
Event Timeline
Log In to Comment