Blender  V3.3
object_ops.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2008 Blender Foundation. All rights reserved. */
3 
8 #include <math.h>
9 #include <stdlib.h>
10 
11 #include "DNA_object_types.h"
12 
13 #include "BKE_context.h"
14 
15 #include "RNA_access.h"
16 
17 #include "WM_api.h"
18 #include "WM_types.h"
19 
20 #include "ED_object.h"
21 
22 #include "object_intern.h"
23 
24 #include "MOD_gpencil_lineart.h"
25 
26 /* ************************** registration **********************************/
27 
29 {
39 
51 
53 
64 
68 
78 
84 
113 
139 
140  /* grease pencil modifiers */
149 
153 
154  /* grease pencil line art */
156 
157  /* Shader FX. */
164 
169 
194 
223 
231 
233 
236 
243 
249 
257 
263 
265 
269 
273 
276 
278 }
279 
281 {
283  wmOperatorTypeMacro *otmacro;
284 
285  ot = WM_operatortype_append_macro("OBJECT_OT_duplicate_move",
286  "Duplicate Objects",
287  "Duplicate the selected objects and move them",
289  if (ot) {
290  WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate");
291  otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
292  RNA_boolean_set(otmacro->ptr, "use_proportional_edit", false);
293  }
294 
296  "OBJECT_OT_duplicate_move_linked",
297  "Duplicate Linked",
298  "Duplicate the selected objects, but not their object data, and move them",
300  if (ot) {
301  otmacro = WM_operatortype_macro_define(ot, "OBJECT_OT_duplicate");
302  RNA_boolean_set(otmacro->ptr, "linked", true);
303  otmacro = WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate");
304  RNA_boolean_set(otmacro->ptr, "use_proportional_edit", false);
305  }
306 }
307 
309 {
311  return (!ob || ob->mode == OB_MODE_OBJECT);
312 }
313 
315 {
316  wmKeyMap *keymap;
317 
318  /* Objects, Regardless of Mode -------------------------------------------------- */
319  keymap = WM_keymap_ensure(keyconf, "Object Non-modal", 0, 0);
320 
321  /* Object Mode ---------------------------------------------------------------- */
322  /* NOTE: this keymap gets disabled in non-objectmode. */
323  keymap = WM_keymap_ensure(keyconf, "Object Mode", 0, 0);
324  keymap->poll = object_mode_poll;
325 }
struct Object * CTX_data_active_object(const bContext *C)
Definition: context.c:1353
@ OB_MODE_OBJECT
Object is a sort of wrapper for general info.
#define C
Definition: RandGen.cpp:25
@ OPTYPE_UNDO
Definition: WM_types.h:148
@ OPTYPE_REGISTER
Definition: WM_types.h:146
void WM_operatortypes_lineart(void)
Definition: lineart_ops.c:477
void OBJECT_OT_curves_empty_hair_add(wmOperatorType *ot)
Definition: object_add.cc:2124
void OBJECT_OT_drop_named_image(wmOperatorType *ot)
Definition: object_add.cc:1257
void OBJECT_OT_convert(wmOperatorType *ot)
Definition: object_add.cc:3510
void OBJECT_OT_speaker_add(wmOperatorType *ot)
Definition: object_add.cc:2010
void OBJECT_OT_transform_to_mouse(wmOperatorType *ot)
Definition: object_add.cc:3987
void OBJECT_OT_metaball_add(wmOperatorType *ot)
Definition: object_add.cc:1024
void OBJECT_OT_add_named(wmOperatorType *ot)
Definition: object_add.cc:3876
void OBJECT_OT_duplicate(wmOperatorType *ot)
Definition: object_add.cc:3761
void OBJECT_OT_effector_add(wmOperatorType *ot)
Definition: object_add.cc:889
void OBJECT_OT_light_add(wmOperatorType *ot)
Definition: object_add.cc:1619
void OBJECT_OT_delete(wmOperatorType *ot)
Definition: object_add.cc:2325
void OBJECT_OT_empty_add(wmOperatorType *ot)
Definition: object_add.cc:1187
void OBJECT_OT_lightprobe_add(wmOperatorType *ot)
Definition: object_add.cc:774
void OBJECT_OT_duplicates_make_real(wmOperatorType *ot)
Definition: object_add.cc:2713
void OBJECT_OT_text_add(wmOperatorType *ot)
Definition: object_add.cc:1073
void OBJECT_OT_add(wmOperatorType *ot)
Definition: object_add.cc:707
void OBJECT_OT_pointcloud_add(wmOperatorType *ot)
Definition: object_add.cc:2167
void OBJECT_OT_curves_random_add(wmOperatorType *ot)
Definition: object_add.cc:2052
void OBJECT_OT_collection_external_asset_drop(wmOperatorType *ot)
Definition: object_add.cc:1856
void OBJECT_OT_join(wmOperatorType *ot)
Definition: object_add.cc:4121
void OBJECT_OT_collection_instance_add(wmOperatorType *ot)
Definition: object_add.cc:1752
void OBJECT_OT_armature_add(wmOperatorType *ot)
Definition: object_add.cc:1142
void OBJECT_OT_camera_add(wmOperatorType *ot)
Definition: object_add.cc:949
void OBJECT_OT_join_shapes(wmOperatorType *ot)
Definition: object_add.cc:4186
void OBJECT_OT_gpencil_add(wmOperatorType *ot)
Definition: object_add.cc:1509
void OBJECT_OT_data_instance_add(wmOperatorType *ot)
Definition: object_add.cc:1943
void OBJECT_OT_bake_image(wmOperatorType *ot)
Definition: object_bake.c:651
void OBJECT_OT_bake(wmOperatorType *ot)
void COLLECTION_OT_create(wmOperatorType *ot)
void COLLECTION_OT_objects_remove(wmOperatorType *ot)
void OBJECT_OT_collection_link(wmOperatorType *ot)
void COLLECTION_OT_objects_remove_all(wmOperatorType *ot)
void OBJECT_OT_collection_unlink(wmOperatorType *ot)
void OBJECT_OT_collection_objects_select(wmOperatorType *ot)
void COLLECTION_OT_objects_remove_active(wmOperatorType *ot)
void OBJECT_OT_collection_add(wmOperatorType *ot)
void OBJECT_OT_collection_remove(wmOperatorType *ot)
void COLLECTION_OT_objects_add_active(wmOperatorType *ot)
void CONSTRAINT_OT_move_to_index(wmOperatorType *ot)
void OBJECT_OT_constraints_copy(wmOperatorType *ot)
void CONSTRAINT_OT_copy(wmOperatorType *ot)
void OBJECT_OT_constraint_add_with_targets(wmOperatorType *ot)
void CONSTRAINT_OT_delete(wmOperatorType *ot)
void CONSTRAINT_OT_stretchto_reset(wmOperatorType *ot)
void POSE_OT_constraints_copy(wmOperatorType *ot)
void CONSTRAINT_OT_copy_to_selected(wmOperatorType *ot)
void CONSTRAINT_OT_objectsolver_set_inverse(wmOperatorType *ot)
void OBJECT_OT_constraints_clear(wmOperatorType *ot)
void CONSTRAINT_OT_limitdistance_reset(wmOperatorType *ot)
void CONSTRAINT_OT_move_down(wmOperatorType *ot)
void POSE_OT_constraints_clear(wmOperatorType *ot)
void OBJECT_OT_constraint_add(wmOperatorType *ot)
void CONSTRAINT_OT_apply(wmOperatorType *ot)
void CONSTRAINT_OT_move_up(wmOperatorType *ot)
void POSE_OT_constraint_add_with_targets(wmOperatorType *ot)
void POSE_OT_constraint_add(wmOperatorType *ot)
void POSE_OT_ik_add(wmOperatorType *ot)
void POSE_OT_ik_clear(wmOperatorType *ot)
void CONSTRAINT_OT_followpath_path_animate(wmOperatorType *ot)
void CONSTRAINT_OT_childof_set_inverse(wmOperatorType *ot)
void CONSTRAINT_OT_objectsolver_clear_inverse(wmOperatorType *ot)
void CONSTRAINT_OT_childof_clear_inverse(wmOperatorType *ot)
void OBJECT_OT_datalayout_transfer(wmOperatorType *ot)
void OBJECT_OT_data_transfer(wmOperatorType *ot)
void OBJECT_OT_move_to_collection(wmOperatorType *ot)
Definition: object_edit.c:2073
void OBJECT_OT_mode_set_with_submode(wmOperatorType *ot)
Definition: object_edit.c:1785
void OBJECT_OT_hide_view_clear(wmOperatorType *ot)
Definition: object_edit.c:263
void OBJECT_OT_hide_collection(wmOperatorType *ot)
Definition: object_edit.c:444
void OBJECT_OT_paths_update(wmOperatorType *ot)
Definition: object_edit.c:1332
void OBJECT_OT_posemode_toggle(wmOperatorType *ot)
Definition: object_edit.c:1003
void OBJECT_OT_link_to_collection(wmOperatorType *ot)
Definition: object_edit.c:2112
void OBJECT_OT_hide_view_set(wmOperatorType *ot)
Definition: object_edit.c:321
void OBJECT_OT_paths_clear(wmOperatorType *ot)
Definition: object_edit.c:1448
void OBJECT_OT_forcefield_toggle(wmOperatorType *ot)
Definition: object_edit.c:1069
void OBJECT_OT_editmode_toggle(wmOperatorType *ot)
Definition: object_edit.c:912
void OBJECT_OT_shade_flat(wmOperatorType *ot)
Definition: object_edit.c:1571
void OBJECT_OT_paths_update_visible(wmOperatorType *ot)
Definition: object_edit.c:1373
void OBJECT_OT_shade_smooth(wmOperatorType *ot)
Definition: object_edit.c:1586
void OBJECT_OT_paths_calculate(wmOperatorType *ot)
Definition: object_edit.c:1260
void OBJECT_OT_mode_set(wmOperatorType *ot)
Definition: object_edit.c:1760
void OBJECT_OT_face_map_remove_from(struct wmOperatorType *ot)
void OBJECT_OT_face_map_remove(struct wmOperatorType *ot)
void OBJECT_OT_face_map_move(wmOperatorType *ot)
void OBJECT_OT_face_map_select(struct wmOperatorType *ot)
void OBJECT_OT_face_map_add(struct wmOperatorType *ot)
void OBJECT_OT_face_map_assign(struct wmOperatorType *ot)
void OBJECT_OT_face_map_deselect(struct wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_copy(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_add(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_move_up(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_move_down(wmOperatorType *ot)
void GPENCIL_OT_segment_move(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_copy_to_selected(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_move_to_index(wmOperatorType *ot)
void GPENCIL_OT_segment_add(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_remove(wmOperatorType *ot)
void GPENCIL_OT_segment_remove(wmOperatorType *ot)
void OBJECT_OT_gpencil_modifier_apply(wmOperatorType *ot)
void OBJECT_OT_hook_add_newob(wmOperatorType *ot)
Definition: object_hook.c:681
void OBJECT_OT_hook_recenter(wmOperatorType *ot)
Definition: object_hook.c:849
void OBJECT_OT_hook_assign(wmOperatorType *ot)
Definition: object_hook.c:910
void OBJECT_OT_hook_select(wmOperatorType *ot)
Definition: object_hook.c:957
void OBJECT_OT_hook_reset(wmOperatorType *ot)
Definition: object_hook.c:798
void OBJECT_OT_hook_add_selob(wmOperatorType *ot)
Definition: object_hook.c:642
void OBJECT_OT_hook_remove(wmOperatorType *ot)
Definition: object_hook.c:750
void OBJECT_OT_vertex_group_sort(struct wmOperatorType *ot)
void OBJECT_OT_make_local(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_copy_to_selected(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_clear(struct wmOperatorType *ot)
void TRANSFORM_OT_vertex_random(struct wmOperatorType *ot)
void OBJECT_OT_clear_override_library(struct wmOperatorType *ot)
void OBJECT_OT_location_clear(struct wmOperatorType *ot)
void OBJECT_OT_select_linked(struct wmOperatorType *ot)
void OBJECT_OT_transform_axis_target(struct wmOperatorType *ot)
void OBJECT_OT_multires_subdivide(struct wmOperatorType *ot)
void OBJECT_OT_multires_external_save(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_quantize(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_clean(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_fix(struct wmOperatorType *ot)
void OBJECT_OT_track_clear(struct wmOperatorType *ot)
void OBJECT_OT_quadriflow_remesh(struct wmOperatorType *ot)
void OBJECT_OT_explode_refresh(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_move_up(struct wmOperatorType *ot)
void OBJECT_OT_volume_import(struct wmOperatorType *ot)
void OBJECT_OT_scale_clear(struct wmOperatorType *ot)
void OBJECT_OT_laplaciandeform_bind(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_move_to_index(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_deselect(struct wmOperatorType *ot)
void OBJECT_OT_skin_root_mark(struct wmOperatorType *ot)
void OBJECT_OT_skin_radii_equalize(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_move(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_smooth(struct wmOperatorType *ot)
void OBJECT_OT_visual_transform_apply(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_mirror(struct wmOperatorType *ot)
void OBJECT_OT_multires_external_pack(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_limit_total(struct wmOperatorType *ot)
void OBJECT_OT_origin_set(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_move(struct wmOperatorType *ot)
void OBJECT_OT_reset_override_library(struct wmOperatorType *ot)
void OBJECT_OT_select_random(struct wmOperatorType *ot)
void OBJECT_OT_modifier_copy(struct wmOperatorType *ot)
void OBJECT_OT_transfer_mode(struct wmOperatorType *ot)
Definition: object_modes.c:511
void OBJECT_OT_select_more(struct wmOperatorType *ot)
void OBJECT_OT_parent_clear(struct wmOperatorType *ot)
void OBJECT_OT_modifier_apply_as_shapekey(wmOperatorType *ot)
void OBJECT_OT_vertex_group_select(struct wmOperatorType *ot)
void OBJECT_OT_modifier_remove(struct wmOperatorType *ot)
void OBJECT_OT_voxel_size_edit(struct wmOperatorType *ot)
void OBJECT_OT_parent_inverse_apply(wmOperatorType *ot)
void OBJECT_OT_vertex_group_remove(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_normalize_all(struct wmOperatorType *ot)
void OBJECT_OT_make_single_user(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_copy(struct wmOperatorType *ot)
void OBJECT_OT_make_links_scene(struct wmOperatorType *ot)
void OBJECT_OT_multires_higher_levels_delete(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_set_active(struct wmOperatorType *ot)
void OBJECT_OT_skin_armature_create(struct wmOperatorType *ot)
void OBJECT_OT_surfacedeform_bind(struct wmOperatorType *ot)
void OBJECT_OT_transform_apply(struct wmOperatorType *ot)
void OBJECT_OT_modifier_add(struct wmOperatorType *ot)
void OBJECT_OT_select_all(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_retime(struct wmOperatorType *ot)
void OBJECT_OT_origin_clear(struct wmOperatorType *ot)
void OBJECT_OT_correctivesmooth_bind(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_delete(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_normalize(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_copy(struct wmOperatorType *ot)
void OBJECT_OT_select_mirror(struct wmOperatorType *ot)
void OBJECT_OT_parent_set(struct wmOperatorType *ot)
void OBJECT_OT_modifier_convert(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_move_down(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_add(struct wmOperatorType *ot)
void OBJECT_OT_voxel_remesh(struct wmOperatorType *ot)
void OBJECT_OT_skin_loose_mark_clear(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_normalize_active_vertex(struct wmOperatorType *ot)
void OBJECT_OT_make_override_library(struct wmOperatorType *ot)
void OBJECT_OT_select_grouped(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_copy(struct wmOperatorType *ot)
void OBJECT_OT_geometry_node_tree_copy_assign(struct wmOperatorType *ot)
void OBJECT_OT_modifier_apply(struct wmOperatorType *ot)
void OBJECT_OT_modifier_set_active(struct wmOperatorType *ot)
void OBJECT_OT_shape_key_remove(struct wmOperatorType *ot)
void OBJECT_OT_modifier_move_up(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_levels(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_add(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_remove_from(struct wmOperatorType *ot)
void OBJECT_OT_modifier_copy_to_selected(struct wmOperatorType *ot)
void OBJECT_OT_rotation_clear(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_assign(struct wmOperatorType *ot)
void OBJECT_OT_select_by_type(struct wmOperatorType *ot)
void TRANSFORM_OT_vertex_warp(struct wmOperatorType *ot)
Definition: object_warp.c:243
void OBJECT_OT_modifier_move_down(struct wmOperatorType *ot)
void OBJECT_OT_multires_rebuild_subdiv(struct wmOperatorType *ot)
void OBJECT_OT_shaderfx_remove(struct wmOperatorType *ot)
void OBJECT_OT_parent_no_inverse_set(struct wmOperatorType *ot)
void OBJECT_OT_vertex_parent_set(struct wmOperatorType *ot)
void OBJECT_OT_select_same_collection(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_add(struct wmOperatorType *ot)
void OBJECT_OT_make_links_data(struct wmOperatorType *ot)
void OBJECT_OT_volume_add(struct wmOperatorType *ot)
Definition: object_volume.c:54
void OBJECT_OT_track_set(struct wmOperatorType *ot)
void OBJECT_OT_select_less(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_lock(struct wmOperatorType *ot)
void OBJECT_OT_unlink_data(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_set_active(struct wmOperatorType *ot)
void OBJECT_OT_vertex_weight_paste(struct wmOperatorType *ot)
void OBJECT_OT_ocean_bake(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_mirror(struct wmOperatorType *ot)
void OBJECT_OT_multires_reshape(struct wmOperatorType *ot)
void OBJECT_OT_modifier_move_to_index(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_assign_new(struct wmOperatorType *ot)
void OBJECT_OT_meshdeform_bind(struct wmOperatorType *ot)
void OBJECT_OT_vertex_group_invert(struct wmOperatorType *ot)
void OBJECT_OT_drop_named_material(struct wmOperatorType *ot)
void OBJECT_OT_geometry_nodes_input_attribute_toggle(struct wmOperatorType *ot)
void OBJECT_OT_multires_unsubdivide(struct wmOperatorType *ot)
void OBJECT_OT_multires_base_apply(struct wmOperatorType *ot)
void ED_operatortypes_object(void)
Definition: object_ops.c:28
void ED_keymap_object(wmKeyConfig *keyconf)
Definition: object_ops.c:314
void ED_operatormacros_object(void)
Definition: object_ops.c:280
static bool object_mode_poll(bContext *C)
Definition: object_ops.c:308
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
Definition: rna_access.c:4874
bool(* poll)(struct bContext *)
wmOperatorType * ot
Definition: wm_files.c:3479
wmKeyMap * WM_keymap_ensure(wmKeyConfig *keyconf, const char *idname, int spaceid, int regionid)
Definition: wm_keymap.c:852
wmOperatorType * WM_operatortype_append_macro(const char *idname, const char *name, const char *description, int flag)
wmOperatorTypeMacro * WM_operatortype_macro_define(wmOperatorType *ot, const char *idname)
void WM_operatortype_append(void(*opfunc)(wmOperatorType *))