diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-02-09 14:02:41 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-07-17 02:42:13 +0300 |
commit | 74f7cdcf6bb8032b6bf8881007e0344366849859 (patch) | |
tree | a81d8b9238a89a89345b0cf7fb21bb73ca31178e /source/blender/editors/object/object_add.c | |
parent | ab9bd557added48a1f46b9624b874a40b46b71d3 (diff) |
Volume object datablock skeleton code.temp-volume-object
This only adds Shift+A > Volume object and displays a list of grid names
in a specified VDB file. Branch pushed for reference if someone other than
me wants to pick up this project.
Diffstat (limited to 'source/blender/editors/object/object_add.c')
-rw-r--r-- | source/blender/editors/object/object_add.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index e977dea6140..ffad5f0400b 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -90,6 +90,7 @@ #include "BKE_scene.h" #include "BKE_screen.h" #include "BKE_speaker.h" +#include "BKE_volume.h" #include "RNA_access.h" #include "RNA_define.h" @@ -1095,6 +1096,39 @@ void OBJECT_OT_speaker_add(wmOperatorType *ot) ED_object_add_generic_props(ot, true); } +/********************* Add Volume Operator ********************/ + +static int object_volume_add_exec(bContext *C, wmOperator *op) +{ + Object *ob; + unsigned int layer; + float loc[3], rot[3]; + + if (!ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, NULL, &layer, NULL)) + return OPERATOR_CANCELLED; + + ob = ED_object_add_type(C, OB_VOLUME, NULL, loc, rot, false, layer); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_volume_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Add volume"; + ot->description = "Add a volume object to the scene"; + ot->idname = "OBJECT_OT_volume_add"; + + /* api callbacks */ + ot->exec = object_volume_add_exec; + ot->poll = ED_operator_objectmode; + + /* flags */ + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; + + ED_object_add_generic_props(ot, true); +} + /**************************** Delete Object *************************/ static void object_delete_check_glsl_update(Object *ob) @@ -2182,6 +2216,15 @@ static Base *object_add_duplicate_internal(Main *bmain, Scene *scene, Base *base } id_us_min(id); } + case OB_VOLUME: + if (dupflag != 0) { + ID_NEW_REMAP_US2(obn->data) + else { + obn->data = ID_NEW_SET(obn->data, BKE_volume_copy(bmain, obn->data)); + didit = 1; + } + id_us_min(id); + } break; } |