diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-06-07 19:32:27 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-06-09 02:15:17 +0300 |
commit | c1009af596a17e6be37d5c64746ae3b2c6b6dc7d (patch) | |
tree | a0a08e3a5f985c975c0c3a2cd1525ad23233f093 /source/blender | |
parent | 4df449edd51bd5602c0c7763ac4984b6de81e285 (diff) |
Probe: Add panel and "Add-menu" items.
Also revisits defaults.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/intern/probe.c | 3 | ||||
-rw-r--r-- | source/blender/editors/object/object_add.c | 62 | ||||
-rw-r--r-- | source/blender/editors/object/object_intern.h | 1 | ||||
-rw-r--r-- | source/blender/editors/object/object_ops.c | 1 |
4 files changed, 66 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/probe.c b/source/blender/blenkernel/intern/probe.c index 8f26ae9d8f7..5c7ecedddd7 100644 --- a/source/blender/blenkernel/intern/probe.c +++ b/source/blender/blenkernel/intern/probe.c @@ -44,7 +44,8 @@ void BKE_probe_init(Probe *probe) { BLI_assert(MEMCMP_STRUCT_OFS_IS_ZERO(probe, id)); - probe->dist = 1.5f; + probe->dist = 5.0f; + probe->falloff = 0.25f; } void *BKE_probe_add(Main *bmain, const char *name) diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 3c64117a2d8..f8f27f8785e 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -45,6 +45,7 @@ #include "DNA_object_fluidsim.h" #include "DNA_object_force.h" #include "DNA_object_types.h" +#include "DNA_probe_types.h" #include "DNA_scene_types.h" #include "DNA_vfont_types.h" #include "DNA_actuator_types.h" @@ -151,6 +152,14 @@ static EnumPropertyItem field_type_items[] = { {0, NULL, 0, NULL, NULL} }; +/* copy from rna_probe.c */ +static EnumPropertyItem probe_type_items[] = { + {PROBE_CAPTURE, "CAPTURE", ICON_FORCE_FORCE, "Capture", ""}, + {PROBE_PLANAR, "PLANAR", ICON_FORCE_FORCE, "Planar", ""}, + {PROBE_CUSTOM, "CUSTOM", ICON_FORCE_FORCE, "Custom", ""}, + {0, NULL, 0, NULL, NULL} +}; + /************************** Exported *****************************/ void ED_object_location_from_view(bContext *C, float loc[3]) @@ -500,6 +509,59 @@ void OBJECT_OT_add(wmOperatorType *ot) ED_object_add_generic_props(ot, true); } +/********************** Add Probe Operator **********************/ + +/* for object add operator */ +static int probe_add_exec(bContext *C, wmOperator *op) +{ + Object *ob; + Probe *probe; + int type; + bool enter_editmode; + unsigned int layer; + float loc[3], rot[3]; + float dia; + + WM_operator_view3d_unit_defaults(C, op); + if (!ED_object_add_generic_get_opts(C, op, 'Z', loc, rot, &enter_editmode, &layer, NULL)) + return OPERATOR_CANCELLED; + + type = RNA_enum_get(op->ptr, "type"); + dia = RNA_float_get(op->ptr, "radius"); + + const char *name = CTX_DATA_(BLT_I18NCONTEXT_ID_OBJECT, "Probe"); + ob = ED_object_add_type(C, OB_PROBE, name, loc, rot, false, layer); + BKE_object_obdata_size_init(ob, dia); + + probe = (Probe *)ob->data; + probe->type = type; + + DAG_relations_tag_update(CTX_data_main(C)); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_probe_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Add Probe"; + ot->description = "Add a probe object"; + ot->idname = "OBJECT_OT_probe_add"; + + /* api callbacks */ + ot->exec = probe_add_exec; + ot->poll = ED_operator_objectmode; + + /* flags */ + ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; + + /* properties */ + ot->prop = RNA_def_enum(ot->srna, "type", probe_type_items, 0, "Type", ""); + + ED_object_add_unit_props(ot); + ED_object_add_generic_props(ot, true); +} + /********************* Add Effector Operator ********************/ /* for object add operator */ diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index ed64f1c8ec1..a03bb17dc2a 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -112,6 +112,7 @@ void OBJECT_OT_metaball_add(struct wmOperatorType *ot); void OBJECT_OT_text_add(struct wmOperatorType *ot); void OBJECT_OT_armature_add(struct wmOperatorType *ot); void OBJECT_OT_empty_add(struct wmOperatorType *ot); +void OBJECT_OT_probe_add(struct wmOperatorType *ot); void OBJECT_OT_drop_named_image(struct wmOperatorType *ot); void OBJECT_OT_lamp_add(struct wmOperatorType *ot); void OBJECT_OT_effector_add(struct wmOperatorType *ot); diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index 5641f62ec7a..8e50db725e3 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -107,6 +107,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_text_add); WM_operatortype_append(OBJECT_OT_armature_add); WM_operatortype_append(OBJECT_OT_empty_add); + WM_operatortype_append(OBJECT_OT_probe_add); WM_operatortype_append(OBJECT_OT_drop_named_image); WM_operatortype_append(OBJECT_OT_lamp_add); WM_operatortype_append(OBJECT_OT_camera_add); |