Blender
V4.3
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 "
BKE_context.hh
"
8
#include "
BKE_global.hh
"
9
#include "
BKE_main.hh
"
10
11
#include "
DEG_depsgraph.hh
"
12
13
#include "
RNA_access.hh
"
14
#include "
RNA_define.hh
"
15
16
#include "
geometry_intern.hh
"
17
18
namespace
blender::ed::geometry
{
19
20
static
int
geometry_randomization_invoke
(
bContext
*
C
,
wmOperator
*op,
const
wmEvent
*event)
21
{
22
RNA_boolean_set
(op->
ptr
,
"value"
,
G
.randomize_geometry_element_order);
23
return
WM_operator_props_popup
(
C
, op, event);
24
}
25
26
static
int
geometry_randomization_exec
(
bContext
*
C
,
wmOperator
*op)
27
{
28
Main
*bmain =
CTX_data_main
(
C
);
29
30
G
.randomize_geometry_element_order =
RNA_boolean_get
(op->
ptr
,
"value"
);
31
32
LISTBASE_FOREACH
(
Object
*,
object
, &bmain->
objects
) {
33
DEG_id_tag_update
(&
object
->id,
ID_RECALC_GEOMETRY
);
34
}
35
WM_event_add_notifier
(
C
,
NC_WINDOW
,
nullptr
);
36
return
OPERATOR_FINISHED
;
37
}
38
39
void
GEOMETRY_OT_geometry_randomization
(
wmOperatorType
*
ot
)
40
{
41
ot
->name =
"Set Geometry Randomization"
;
42
ot
->idname =
"GEOMETRY_OT_geometry_randomization"
;
43
ot
->description =
"Toggle geometry randomization for debugging purposes"
;
44
45
ot
->exec =
geometry_randomization_exec
;
46
ot
->invoke =
geometry_randomization_invoke
;
47
ot
->flag |=
OPTYPE_UNDO
|
OPTYPE_REGISTER
;
48
49
RNA_def_boolean
(
ot
->srna,
50
"value"
,
51
false
,
52
"Value"
,
53
"Randomize the order of geometry elements (e.g. vertices or edges) after some "
54
"operations where there are no guarantees about the order. This avoids "
55
"accidentally depending on something that may change in the future"
);
56
}
57
58
}
// namespace blender::ed::geometry
BKE_context.hh
CTX_data_main
Main * CTX_data_main(const bContext *C)
Definition
blenkernel/intern/context.cc:1095
BKE_global.hh
BKE_main.hh
LISTBASE_FOREACH
#define LISTBASE_FOREACH(type, var, list)
Definition
BLI_listbase.h:372
DEG_depsgraph.hh
DEG_id_tag_update
void DEG_id_tag_update(ID *id, unsigned int flags)
Definition
depsgraph_tag.cc:834
ID_RECALC_GEOMETRY
@ ID_RECALC_GEOMETRY
Definition
DNA_ID.h:1041
OPERATOR_FINISHED
@ OPERATOR_FINISHED
Definition
DNA_windowmanager_types.h:661
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:342
OPTYPE_UNDO
@ OPTYPE_UNDO
Definition
WM_types.hh:162
OPTYPE_REGISTER
@ OPTYPE_REGISTER
Definition
WM_types.hh:160
geometry_intern.hh
G
#define G(x, y, z)
blender::ed::geometry
Definition
geometry_attributes.cc:51
blender::ed::geometry::geometry_randomization_invoke
static int geometry_randomization_invoke(bContext *C, wmOperator *op, const wmEvent *event)
Definition
geometry_randomization.cc:20
blender::ed::geometry::geometry_randomization_exec
static int geometry_randomization_exec(bContext *C, wmOperator *op)
Definition
geometry_randomization.cc:26
blender::ed::geometry::GEOMETRY_OT_geometry_randomization
void GEOMETRY_OT_geometry_randomization(wmOperatorType *ot)
Definition
geometry_randomization.cc:39
blender::ed::object
Definition
ED_object.hh:43
RNA_boolean_set
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
Definition
rna_access.cc:5298
RNA_boolean_get
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
Definition
rna_access.cc:5287
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:3671
Main
Definition
BKE_main.hh:122
Main::objects
ListBase objects
Definition
BKE_main.hh:212
Object
Definition
DNA_object_types.h:193
bContext
Definition
blenkernel/intern/context.cc:61
wmEvent
Definition
WM_types.hh:718
wmOperatorType
Definition
WM_types.hh:988
wmOperator
Definition
DNA_windowmanager_types.h:623
wmOperator::ptr
struct PointerRNA * ptr
Definition
DNA_windowmanager_types.h:641
WM_event_add_notifier
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
Definition
wm_event_system.cc:387
ot
wmOperatorType * ot
Definition
wm_files.cc:4125
WM_operator_props_popup
int WM_operator_props_popup(bContext *C, wmOperator *op, const wmEvent *)
Definition
wm_operators.cc:1837
Generated on Sat Oct 4 2025 05:32:23 for Blender by
doxygen
1.14.0