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:
authorClément Foucault <foucault.clem@gmail.com>2017-06-07 19:32:27 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-06-09 02:15:17 +0300
commitc1009af596a17e6be37d5c64746ae3b2c6b6dc7d (patch)
treea0a08e3a5f985c975c0c3a2cd1525ad23233f093 /source/blender
parent4df449edd51bd5602c0c7763ac4984b6de81e285 (diff)
Probe: Add panel and "Add-menu" items.
Also revisits defaults.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/intern/probe.c3
-rw-r--r--source/blender/editors/object/object_add.c62
-rw-r--r--source/blender/editors/object/object_intern.h1
-rw-r--r--source/blender/editors/object/object_ops.c1
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);