Files
test/source/blender/editors/geometry/geometry_randomization.cc
Brecht Van Lommel c7a33a62a2 Cleanup: Directly include DNA_userdef_types.h and BLI_listbase.h
Instead of relying on them being included indirectly.

Pull Request: https://projects.blender.org/blender/blender/pulls/134406
2025-02-12 23:01:08 +01:00

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