Blender V5.0
space_view3d.cc File Reference
#include <cstring>
#include "DNA_collection_types.h"
#include "DNA_defaults.h"
#include "DNA_gpencil_legacy_types.h"
#include "DNA_lightprobe_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_view3d_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_listbase.h"
#include "BLI_math_matrix.h"
#include "BLI_math_vector.h"
#include "BLI_string_utf8.h"
#include "BLI_utildefines.h"
#include "BKE_asset.hh"
#include "BKE_context.hh"
#include "BKE_global.hh"
#include "BKE_gpencil_legacy.h"
#include "BKE_idprop.hh"
#include "BKE_layer.hh"
#include "BKE_lib_id.hh"
#include "BKE_lib_query.hh"
#include "BKE_lib_remap.hh"
#include "BKE_library.hh"
#include "BKE_main.hh"
#include "BKE_object.hh"
#include "BKE_scene.hh"
#include "BKE_screen.hh"
#include "BKE_viewer_path.hh"
#include "ED_asset_shelf.hh"
#include "ED_geometry.hh"
#include "ED_info.hh"
#include "ED_object.hh"
#include "ED_outliner.hh"
#include "ED_render.hh"
#include "ED_screen.hh"
#include "ED_space_api.hh"
#include "ED_transform.hh"
#include "ED_undo.hh"
#include "GPU_matrix.hh"
#include "DRW_engine.hh"
#include "WM_api.hh"
#include "WM_message.hh"
#include "WM_toolsystem.hh"
#include "WM_types.hh"
#include "RNA_access.hh"
#include "UI_interface.hh"
#include "BLO_read_write.hh"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_build.hh"
#include "view3d_intern.hh"
#include "view3d_navigate.hh"

Go to the source code of this file.

Macros

#define DNA_DEPRECATED_ALLOW

Functions

bool ED_view3d_area_user_region (const ScrArea *area, const View3D *v3d, ARegion **r_region)
void ED_view3d_init_mats_rv3d (const Object *ob, RegionView3D *rv3d)
void ED_view3d_init_mats_rv3d_gl (const Object *ob, RegionView3D *rv3d)
void ED_view3d_clear_mats_rv3d (RegionView3D *rv3d)
void ED_view3d_check_mats_rv3d (RegionView3D *rv3d)
void ED_view3d_stop_render_preview (wmWindowManager *wm, ARegion *region)
void ED_view3d_shade_update (Main *bmain, View3D *v3d, ScrArea *area)
static SpaceLinkview3d_create (const ScrArea *, const Scene *scene)
static void view3d_free (SpaceLink *sl)
static void view3d_init (wmWindowManager *, ScrArea *)
static void view3d_exit (wmWindowManager *, ScrArea *area)
static SpaceLinkview3d_duplicate (SpaceLink *sl)
static void view3d_main_region_init (wmWindowManager *wm, ARegion *region)
static void view3d_main_region_exit (wmWindowManager *wm, ARegion *region)
static void view3d_widgets ()
static void view3d_main_region_free (ARegion *region)
static void * view3d_main_region_duplicate (void *poin)
static void view3d_main_region_listener (const wmRegionListenerParams *params)
static void view3d_main_region_message_subscribe (const wmRegionMessageSubscribeParams *params)
static void view3d_main_region_cursor (wmWindow *win, ScrArea *area, ARegion *region)
static void view3d_header_region_init (wmWindowManager *wm, ARegion *region)
static void view3d_header_region_draw (const bContext *C, ARegion *region)
static void view3d_header_region_listener (const wmRegionListenerParams *params)
static void view3d_header_region_message_subscribe (const wmRegionMessageSubscribeParams *params)
static void view3d_buttons_region_init (wmWindowManager *wm, ARegion *region)
void ED_view3d_buttons_region_layout_ex (const bContext *C, ARegion *region, const char *category_override)
static void view3d_buttons_region_layout (const bContext *C, ARegion *region)
static void view3d_buttons_region_listener (const wmRegionListenerParams *params)
static void view3d_tools_region_init (wmWindowManager *wm, ARegion *region)
static void view3d_tools_region_draw (const bContext *C, ARegion *region)
static void view3d_tools_header_region_draw (const bContext *C, ARegion *region)
static void view3d_asset_shelf_region_init (wmWindowManager *wm, ARegion *region)
static void space_view3d_listener (const wmSpaceTypeListenerParams *params)
static void space_view3d_refresh (const bContext *C, ScrArea *area)
static void view3d_id_remap_v3d_ob_centers (View3D *v3d, const blender::bke::id::IDRemapper &mappings)
static void view3d_id_remap_v3d (ScrArea *area, SpaceLink *slink, View3D *v3d, const blender::bke::id::IDRemapper &mappings, const bool is_local)
static void view3d_id_remap (ScrArea *area, SpaceLink *slink, const blender::bke::id::IDRemapper &mappings)
static void view3d_foreach_id (SpaceLink *space_link, LibraryForeachIDData *data)
static void view3d_space_blend_read_data (BlendDataReader *reader, SpaceLink *sl)
static void view3d_space_blend_write (BlendWriter *writer, SpaceLink *sl)
void ED_spacetype_view3d ()

Macro Definition Documentation

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 10 of file space_view3d.cc.

Function Documentation

◆ ED_spacetype_view3d()

void ED_spacetype_view3d ( )

Definition at line 1605 of file space_view3d.cc.

References BKE_spacetype_register(), BLI_addhead(), ARegionType::context, blender::ed::asset::shelf::context(), ARegionType::cursor, ARegionType::draw, ARegionType::duplicate, ED_area_do_mgs_subscribe_for_tool_header(), ED_area_do_mgs_subscribe_for_tool_ui(), ED_area_type_hud(), ED_KEYMAP_ASSET_SHELF, ED_KEYMAP_FOOTER, ED_KEYMAP_FRAMES, ED_KEYMAP_GIZMO, ED_KEYMAP_GPENCIL, ED_KEYMAP_HEADER, ED_KEYMAP_TOOL, ED_KEYMAP_UI, ED_KEYMAP_VIEW2D, ED_region_generic_panel_region_snap_size(), ED_region_generic_tools_region_message_subscribe(), ED_region_generic_tools_region_snap_size(), ED_region_panels_draw(), ARegionType::exit, ARegionType::free, blender::ed::asset::shelf::header_region(), blender::ed::asset::shelf::header_region_init(), blender::ed::asset::shelf::header_region_listen(), HEADERY, ARegionType::init, ARegionType::keymapflag, ARegionType::layout, ARegionType::listener, ARegionType::lock, MEM_callocN(), MEM_dupallocN(), ARegionType::message_subscribe, blender::ed::geometry::node_group_operator_assets_menu(), blender::ed::geometry::node_group_operator_assets_menu_unassigned(), ARegionType::on_poll_success, ARegionType::on_user_resize, ARegionType::poll, ARegionType::prefsizex, ARegionType::prefsizey, blender::ed::asset::shelf::region_draw(), REGION_DRAW_LOCK_ALL, blender::ed::asset::shelf::region_duplicate(), blender::ed::asset::shelf::region_free(), blender::ed::asset::shelf::region_layout(), blender::ed::asset::shelf::region_listen(), blender::ed::asset::shelf::region_message_subscribe(), blender::ed::asset::shelf::region_on_poll_success(), blender::ed::asset::shelf::region_on_user_resize(), blender::ed::asset::shelf::region_snap(), ARegionType::regionid, blender::ed::asset::shelf::regions_poll(), RGN_TYPE_ASSET_SHELF, RGN_TYPE_ASSET_SHELF_HEADER, RGN_TYPE_HEADER, RGN_TYPE_TOOL_HEADER, RGN_TYPE_TOOLS, RGN_TYPE_UI, RGN_TYPE_WINDOW, RGN_TYPE_XR, ARegionType::snap_size, SPACE_VIEW3D, space_view3d_listener(), space_view3d_refresh(), STRNCPY_UTF8, blender::ed::asset::shelf::types_register(), UI_SIDEBAR_PANEL_WIDTH, UI_TOOLBAR_WIDTH, view3d_asset_shelf_region_init(), view3d_buttons_region_init(), view3d_buttons_region_layout(), view3d_buttons_region_listener(), view3d_buttons_register(), view3d_context(), view3d_create(), view3d_dropboxes(), view3d_duplicate(), view3d_exit(), view3d_foreach_id(), view3d_free(), view3d_header_region_draw(), view3d_header_region_init(), view3d_header_region_listener(), view3d_header_region_message_subscribe(), view3d_id_remap(), view3d_init(), view3d_keymap(), view3d_main_region_cursor(), view3d_main_region_draw(), view3d_main_region_duplicate(), view3d_main_region_exit(), view3d_main_region_free(), view3d_main_region_init(), view3d_main_region_listener(), view3d_main_region_message_subscribe(), view3d_operatortypes(), view3d_space_blend_read_data(), view3d_space_blend_write(), view3d_tools_header_region_draw(), view3d_tools_region_draw(), view3d_tools_region_init(), view3d_widgets(), and WM_menutype_add().

Referenced by ED_spacetypes_init().

◆ ED_view3d_area_user_region()

bool ED_view3d_area_user_region ( const ScrArea * area,
const View3D * v3d,
ARegion ** r_region )

◆ ED_view3d_buttons_region_layout_ex()

◆ ED_view3d_check_mats_rv3d()

◆ ED_view3d_clear_mats_rv3d()

void ED_view3d_clear_mats_rv3d ( RegionView3D * rv3d)

Ensure we correctly initialize.

Definition at line 143 of file space_view3d.cc.

References RegionView3D::persmatob, RegionView3D::viewmatob, and zero_m4().

◆ ED_view3d_init_mats_rv3d()

void ED_view3d_init_mats_rv3d ( const Object * ob,
RegionView3D * rv3d )

Most of the time this isn't needed since you could assume the view matrix was set while drawing, however when functions like mesh_foreachScreenVert are called by selection tools, we can't be sure this object was the last.

for example, transparent objects are drawn after edit-mode and will cause the rv3d mat's to change and break selection.

'ED_view3d_init_mats_rv3d' should be called before view3d_project_short_clip and view3d_project_short_noclip in cases where these functions are not used during draw_object

Definition at line 122 of file space_view3d.cc.

References ED_view3d_clipping_local(), mul_m4_m4m4(), RegionView3D::persmat, RegionView3D::persmatob, RegionView3D::viewmat, and RegionView3D::viewmatob.

Referenced by armature_circle_select(), do_lasso_select_armature(), do_lasso_select_curve(), do_lasso_select_lattice(), do_lasso_select_mesh(), do_lasso_select_meta(), do_lasso_select_paintvert(), do_lasso_tag_pose(), do_lattice_box_select(), do_mesh_box_select(), do_nurbs_box_select(), do_paintvert_box_select(), ED_curve_editfont_select_pick(), ED_curve_pick_vert_ex(), ED_mesh_pick_vert(), ED_view3d_init_mats_rv3d_gl(), edbm_dupli_extrude_cursor_invoke(), EDBM_edge_find_nearest_ex(), EDBM_face_find_nearest_ex(), edbm_polybuild_delete_at_cursor_invoke(), edbm_polybuild_face_at_cursor_invoke(), edbm_polybuild_split_at_cursor_invoke(), edbm_polybuild_transform_at_cursor_invoke(), EDBM_project_snap_verts(), EDBM_vert_find_nearest_ex(), findnearestLattvert(), knifetool_modal(), lattice_circle_select(), mball_circle_select(), mesh_circle_select(), mouse_mesh_loop(), nurbscurve_circle_select(), paint_vertsel_circle_select(), paint_weight_gradient_exec(), paintface_select_loop(), pose_circle_select(), blender::ed::sculpt_paint::stroke_test_start(), vpaint_stroke_update_step(), weight_sample_group_invoke(), weight_sample_invoke(), and wpaint_stroke_update_step().

◆ ED_view3d_init_mats_rv3d_gl()

void ED_view3d_init_mats_rv3d_gl ( const Object * ob,
RegionView3D * rv3d )

Definition at line 132 of file space_view3d.cc.

References ED_view3d_init_mats_rv3d(), and GPU_matrix_mul.

◆ ED_view3d_shade_update()

◆ ED_view3d_stop_render_preview()

◆ space_view3d_listener()

◆ space_view3d_refresh()

◆ view3d_asset_shelf_region_init()

void view3d_asset_shelf_region_init ( wmWindowManager * wm,
ARegion * region )
static

◆ view3d_buttons_region_init()

◆ view3d_buttons_region_layout()

void view3d_buttons_region_layout ( const bContext * C,
ARegion * region )
static

Definition at line 1274 of file space_view3d.cc.

References C, and ED_view3d_buttons_region_layout_ex().

Referenced by ED_spacetype_view3d().

◆ view3d_buttons_region_listener()

◆ view3d_create()

◆ view3d_duplicate()

◆ view3d_exit()

void view3d_exit ( wmWindowManager * ,
ScrArea * area )
static

◆ view3d_foreach_id()

◆ view3d_free()

◆ view3d_header_region_draw()

void view3d_header_region_draw ( const bContext * C,
ARegion * region )
static

Definition at line 992 of file space_view3d.cc.

References C, and ED_region_header().

Referenced by ED_spacetype_view3d().

◆ view3d_header_region_init()

void view3d_header_region_init ( wmWindowManager * wm,
ARegion * region )
static

◆ view3d_header_region_listener()

◆ view3d_header_region_message_subscribe()

◆ view3d_id_remap()

◆ view3d_id_remap_v3d()

◆ view3d_id_remap_v3d_ob_centers()

void view3d_id_remap_v3d_ob_centers ( View3D * v3d,
const blender::bke::id::IDRemapper & mappings )
static

◆ view3d_init()

void view3d_init ( wmWindowManager * ,
ScrArea *  )
static

Definition at line 291 of file space_view3d.cc.

Referenced by ED_spacetype_view3d().

◆ view3d_main_region_cursor()

◆ view3d_main_region_duplicate()

void * view3d_main_region_duplicate ( void * poin)
static

◆ view3d_main_region_exit()

void view3d_main_region_exit ( wmWindowManager * wm,
ARegion * region )
static

Definition at line 467 of file space_view3d.cc.

References ED_view3d_stop_render_preview().

Referenced by ED_spacetype_view3d().

◆ view3d_main_region_free()

◆ view3d_main_region_init()

◆ view3d_main_region_listener()

void view3d_main_region_listener ( const wmRegionListenerParams * params)
static

Definition at line 561 of file space_view3d.cc.

References wmNotifier::action, ATTR_FALLTHROUGH, BKE_scene_get_depsgraph(), BKE_screen_view3d_sync(), View3D::camera, wmNotifier::category, Object::data, wmNotifier::data, depsgraph, ED_area_tag_refresh(), ED_region_tag_redraw(), ED_region_tag_redraw_cursor(), ED_render_view3d_update(), ELEM, ListBase::first, View3D::flag, View3D_Runtime::flag, View3D::flag2, G_MAIN, View3D::localvd, NA_ADDED, NA_EDITED, NA_REMOVED, NA_RENAME, NA_SELECTED, NC_ANIMATION, NC_BRUSH, NC_CAMERA, NC_GEOM, NC_GPENCIL, NC_GROUP, NC_ID, NC_IMAGE, NC_LAMP, NC_LIGHTPROBE, NC_MATERIAL, NC_MOVIECLIP, NC_NODE, NC_OBJECT, NC_SCENE, NC_SCREEN, NC_SPACE, NC_TEXTURE, NC_VIEWER_PATH, NC_WM, NC_WORKSPACE, NC_WORLD, ND_ANIMCHAN, ND_ANIMPLAY, ND_BONE_ACTIVE, ND_BONE_COLLECTION, ND_BONE_SELECT, ND_CONSTRAINT, ND_DATA, ND_DISPLAY, ND_DRAW, ND_DRAW_ANIMVIZ, ND_DRAW_RENDER_VIEWPORT, ND_FRAME, ND_KEYFRAME, ND_KEYFRAME_PROP, ND_KEYS, ND_LAYER, ND_LAYER_CONTENT, ND_LAYOUTBROWSE, ND_LAYOUTDELETE, ND_LAYOUTSET, ND_LIGHTING, ND_LIGHTING_DRAW, ND_LOD, ND_MARKERS, ND_MODE, ND_MODIFIER, ND_NLA, ND_NLA_ACTCHANGE, ND_NODE_GIZMO, ND_NODES, ND_OB_ACTIVE, ND_OB_SELECT, ND_OB_VISIBLE, ND_PARTICLE, ND_POINTCACHE, ND_POSE, ND_RENDER_OPTIONS, ND_SCENEBROWSE, ND_SELECT, ND_SHADERFX, ND_SHADING, ND_SHADING_DRAW, ND_SHADING_LINKS, ND_SKETCH, ND_SPACE_VIEW3D, ND_TRANSFORM, ND_UNDO, ND_VERTEX_GROUP, ND_WORLD, ND_WORLD_DRAW, ND_XR_DATA_CHANGED, NS_VIEW3D_GPU, NS_VIEW3D_SHADING, params, RegionView3D::persp, wmNotifier::reference, ARegion::regiondata, RegionView3D::rflag, ARegion::runtime, View3D::runtime, RV3D_CAMOB, RV3D_GPULIGHT_UPDATE, ScrArea::spacedata, wmNotifier::subtype, V3D_RUNTIME_LOCAL_MAYBE_EMPTY, V3D_SHOW_VIEWER, V3D_XR_SESSION_MIRROR, WM_gizmomap_tag_refresh(), and WM_window_get_active_view_layer().

Referenced by ED_spacetype_view3d().

◆ view3d_main_region_message_subscribe()

◆ view3d_space_blend_read_data()

◆ view3d_space_blend_write()

void view3d_space_blend_write ( BlendWriter * writer,
SpaceLink * sl )
static

◆ view3d_tools_header_region_draw()

void view3d_tools_header_region_draw ( const bContext * C,
ARegion * region )
static

◆ view3d_tools_region_draw()

void view3d_tools_region_draw ( const bContext * C,
ARegion * region )
static

◆ view3d_tools_region_init()

◆ view3d_widgets()