Blender
V5.0
source
blender
editors
geometry
geometry_randomization.cc
Go to the documentation of this file.
1
/* SPDX-FileCopyrightText: 2023 Blender Authors
2
*
3
* SPDX-License-Identifier: GPL-2.0-or-later */
4
5
#include "
WM_api.hh
"
6
7
#include "
BLI_listbase.h
"
8
9
#include "
BKE_context.hh
"
10
#include "
BKE_global.hh
"
11
#include "
BKE_main.hh
"
12
13
#include "
DEG_depsgraph.hh
"
14
15
#include "
RNA_access.hh
"
16
#include "
RNA_define.hh
"
17
18
#include "
geometry_intern.hh
"
19
20
namespace
blender::ed::geometry
{
21
22
static
wmOperatorStatus
geometry_randomization_invoke
(
bContext
*
C
,
23
wmOperator
*op,
24
const
wmEvent
*event)
25
{
26
RNA_boolean_set
(op->
ptr
,
"value"
,
G
.randomize_geometry_element_order);
27
return
WM_operator_props_popup
(
C
, op, event);
28
}
29
30
static
wmOperatorStatus
geometry_randomization_exec
(
bContext
*
C
,
wmOperator
*op)
31
{
32
Main
*bmain =
CTX_data_main
(
C
);
33
34
G
.randomize_geometry_element_order =
RNA_boolean_get
(op->
ptr
,
"value"
);
35
36
LISTBASE_FOREACH
(
Object
*,
object
, &bmain->
objects
) {
37
DEG_id_tag_update
(&
object
->id,
ID_RECALC_GEOMETRY
);
38
}
39
WM_event_add_notifier
(
C
,
NC_WINDOW
,
nullptr
);
40
return
OPERATOR_FINISHED
;
41
}
42
43
void
GEOMETRY_OT_geometry_randomization
(
wmOperatorType
*
ot
)
44
{
45
ot
->name =
"Set Geometry Randomization"
;
46
ot
->idname =
"GEOMETRY_OT_geometry_randomization"
;
47
ot
->description =
"Toggle geometry randomization for debugging purposes"
;
48
49
ot
->exec =
geometry_randomization_exec
;
50
ot
->invoke =
geometry_randomization_invoke
;
51
ot
->flag |=
OPTYPE_UNDO
|
OPTYPE_REGISTER
;
52
53
RNA_def_boolean
(
ot
->srna,
54
"value"
,
55
false
,
56
"Value"
,
57
"Randomize the order of geometry elements (e.g. vertices or edges) after some "
58
"operations where there are no guarantees about the order. This avoids "
59
"accidentally depending on something that may change in the future"
);
60
}
61
62
}
// namespace blender::ed::geometry
BKE_context.hh
CTX_data_main
Main * CTX_data_main(const bContext *C)
Definition
blenkernel/intern/context.cc:1294
BKE_global.hh
BKE_main.hh
BLI_listbase.h
LISTBASE_FOREACH
#define LISTBASE_FOREACH(type, var, list)
Definition
BLI_listbase.h:363
DEG_depsgraph.hh
DEG_id_tag_update
void DEG_id_tag_update(ID *id, unsigned int flags)
Definition
depsgraph_tag.cc:827
ID_RECALC_GEOMETRY
@ ID_RECALC_GEOMETRY
Definition
DNA_ID.h:1074
wmOperatorStatus
wmOperatorStatus
Definition
DNA_windowmanager_enums.h:16
OPERATOR_FINISHED
@ OPERATOR_FINISHED
Definition
DNA_windowmanager_enums.h:19
RNA_access.hh
RNA_define.hh
C
#define C
Definition
RandGen.cpp:29
WM_api.hh
NC_WINDOW
#define NC_WINDOW
Definition
WM_types.hh:375
OPTYPE_UNDO
@ OPTYPE_UNDO
Definition
WM_types.hh:182
OPTYPE_REGISTER
@ OPTYPE_REGISTER
Definition
WM_types.hh:180
geometry_intern.hh
G
#define G(x, y, z)
blender::ed::geometry
Definition
geometry_attributes.cc:52
blender::ed::geometry::geometry_randomization_exec
static wmOperatorStatus geometry_randomization_exec(bContext *C, wmOperator *op)
Definition
geometry_randomization.cc:30
blender::ed::geometry::geometry_randomization_invoke
static wmOperatorStatus geometry_randomization_invoke(bContext *C, wmOperator *op, const wmEvent *event)
Definition
geometry_randomization.cc:22
blender::ed::geometry::GEOMETRY_OT_geometry_randomization
void GEOMETRY_OT_geometry_randomization(wmOperatorType *ot)
Definition
geometry_randomization.cc:43
blender::ed::object
Definition
ED_object.hh:48
RNA_boolean_set
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
Definition
rna_access.cc:5977
RNA_boolean_get
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
Definition
rna_access.cc:5966
RNA_def_boolean
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
Definition
rna_define.cc:4060
Main
Definition
BKE_main.hh:160
Main::objects
ListBase objects
Definition
BKE_main.hh:280
Object
Definition
DNA_object_types.h:191
bContext
Definition
blenkernel/intern/context.cc:63
wmEvent
Definition
WM_types.hh:753
wmOperatorType
Definition
WM_types.hh:1031
wmOperator
Definition
DNA_windowmanager_types.h:531
wmOperator::ptr
struct PointerRNA * ptr
Definition
DNA_windowmanager_types.h:549
WM_event_add_notifier
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
Definition
wm_event_system.cc:397
ot
wmOperatorType * ot
Definition
wm_files.cc:4237
WM_operator_props_popup
wmOperatorStatus WM_operator_props_popup(bContext *C, wmOperator *op, const wmEvent *)
Definition
wm_operators.cc:1882
Generated on
for Blender by
doxygen
1.16.1