Instead of relying on them being included indirectly. Pull Request: https://projects.blender.org/blender/blender/pulls/134406
61 lines
1.7 KiB
C++
61 lines
1.7 KiB
C++
/* SPDX-FileCopyrightText: 2023 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#include "WM_api.hh"
|
|
|
|
#include "BLI_listbase.h"
|
|
|
|
#include "BKE_context.hh"
|
|
#include "BKE_global.hh"
|
|
#include "BKE_main.hh"
|
|
|
|
#include "DEG_depsgraph.hh"
|
|
|
|
#include "RNA_access.hh"
|
|
#include "RNA_define.hh"
|
|
|
|
#include "geometry_intern.hh"
|
|
|
|
namespace blender::ed::geometry {
|
|
|
|
static int geometry_randomization_invoke(bContext *C, wmOperator *op, const wmEvent *event)
|
|
{
|
|
RNA_boolean_set(op->ptr, "value", G.randomize_geometry_element_order);
|
|
return WM_operator_props_popup(C, op, event);
|
|
}
|
|
|
|
static int geometry_randomization_exec(bContext *C, wmOperator *op)
|
|
{
|
|
Main *bmain = CTX_data_main(C);
|
|
|
|
G.randomize_geometry_element_order = RNA_boolean_get(op->ptr, "value");
|
|
|
|
LISTBASE_FOREACH (Object *, object, &bmain->objects) {
|
|
DEG_id_tag_update(&object->id, ID_RECALC_GEOMETRY);
|
|
}
|
|
WM_event_add_notifier(C, NC_WINDOW, nullptr);
|
|
return OPERATOR_FINISHED;
|
|
}
|
|
|
|
void GEOMETRY_OT_geometry_randomization(wmOperatorType *ot)
|
|
{
|
|
ot->name = "Set Geometry Randomization";
|
|
ot->idname = "GEOMETRY_OT_geometry_randomization";
|
|
ot->description = "Toggle geometry randomization for debugging purposes";
|
|
|
|
ot->exec = geometry_randomization_exec;
|
|
ot->invoke = geometry_randomization_invoke;
|
|
ot->flag |= OPTYPE_UNDO | OPTYPE_REGISTER;
|
|
|
|
RNA_def_boolean(ot->srna,
|
|
"value",
|
|
false,
|
|
"Value",
|
|
"Randomize the order of geometry elements (e.g. vertices or edges) after some "
|
|
"operations where there are no guarantees about the order. This avoids "
|
|
"accidentally depending on something that may change in the future");
|
|
}
|
|
|
|
} // namespace blender::ed::geometry
|