Blender
V3.3
|
#include "DNA_object_types.h"
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BKE_context.h"
#include "BKE_lib_id.h"
#include "BKE_report.h"
#include "BLT_translation.h"
#include "WM_api.h"
#include "WM_types.h"
#include "ED_screen.h"
#include "ED_space_api.h"
#include "PIL_time.h"
#include "UI_interface.h"
#include "UI_resources.h"
#include "GPU_immediate.h"
#include "DEG_depsgraph.h"
#include "view3d_intern.h"
#include "view3d_navigate.h"
Go to the source code of this file.
Classes | |
struct | FlyInfo |
Macros | |
#define | FLY_ROTATE_FAC 10.0f /* more is faster */ |
#define | FLY_ZUP_CORRECT_FAC 0.1f /* amount to correct per step */ |
#define | FLY_ZUP_CORRECT_ACCEL 0.05f /* increase upright momentum each step */ |
#define | FLY_SMOOTH_FAC 20.0f /* higher value less lag */ |
Typedefs | |
Internal Fly Structs | |
typedef struct FlyInfo | FlyInfo |
Functions | |
Internal Fly Drawing | |
static int | flyApply (bContext *C, struct FlyInfo *fly, bool is_confirm) |
static void | drawFlyPixel (const struct bContext *UNUSED(C), ARegion *UNUSED(region), void *arg) |
Fly Operator | |
static int | fly_invoke (bContext *C, wmOperator *op, const wmEvent *event) |
static void | fly_cancel (bContext *C, wmOperator *op) |
static int | fly_modal (bContext *C, wmOperator *op, const wmEvent *event) |
void | VIEW3D_OT_fly (wmOperatorType *ot) |
Modal Key-map | |
enum | { FLY_MODAL_CANCEL = 1 , FLY_MODAL_CONFIRM , FLY_MODAL_ACCELERATE , FLY_MODAL_DECELERATE , FLY_MODAL_PAN_ENABLE , FLY_MODAL_PAN_DISABLE , FLY_MODAL_DIR_FORWARD , FLY_MODAL_DIR_BACKWARD , FLY_MODAL_DIR_LEFT , FLY_MODAL_DIR_RIGHT , FLY_MODAL_DIR_UP , FLY_MODAL_DIR_DOWN , FLY_MODAL_AXIS_LOCK_X , FLY_MODAL_AXIS_LOCK_Z , FLY_MODAL_PRECISION_ENABLE , FLY_MODAL_PRECISION_DISABLE , FLY_MODAL_FREELOOK_ENABLE , FLY_MODAL_FREELOOK_DISABLE , FLY_MODAL_SPEED } |
enum | eFlyPanState { FLY_AXISLOCK_STATE_OFF = 0 , FLY_AXISLOCK_STATE_IDLE = 1 , FLY_AXISLOCK_STATE_ACTIVE = 2 } |
typedef enum eFlyPanState | eFlyPanState |
void | fly_modal_keymap (wmKeyConfig *keyconf) |
Internal Fly Logic | |
enum | { FLY_RUNNING = 0 , FLY_CANCEL = 1 , FLY_CONFIRM = 2 } |
static bool | initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, const wmEvent *event) |
static int | flyEnd (bContext *C, FlyInfo *fly) |
static void | flyEvent (FlyInfo *fly, const wmEvent *event) |
static void | flyMoveCamera (bContext *C, FlyInfo *fly, const bool do_rotate, const bool do_translate, const bool is_confirm) |
Interactive fly navigation modal operator (flying around in space).
view3d_navigate_walk.c
changes here may apply there too. Definition in file view3d_navigate_fly.c.
#define FLY_ROTATE_FAC 10.0f /* more is faster */ |
#define FLY_SMOOTH_FAC 20.0f /* higher value less lag */ |
#define FLY_ZUP_CORRECT_ACCEL 0.05f /* increase upright momentum each step */ |
#define FLY_ZUP_CORRECT_FAC 0.1f /* amount to correct per step */ |
typedef enum eFlyPanState eFlyPanState |
anonymous enum |
Definition at line 56 of file view3d_navigate_fly.c.
anonymous enum |
Enumerator | |
---|---|
FLY_RUNNING | |
FLY_CANCEL | |
FLY_CONFIRM |
Definition at line 295 of file view3d_navigate_fly.c.
enum eFlyPanState |
Enumerator | |
---|---|
FLY_AXISLOCK_STATE_OFF | |
FLY_AXISLOCK_STATE_IDLE | |
FLY_AXISLOCK_STATE_ACTIVE |
Definition at line 79 of file view3d_navigate_fly.c.
|
static |
Definition at line 221 of file view3d_navigate_fly.c.
References FlyInfo::depsgraph, ED_view3d_calc_camera_border(), ED_view3d_cameracontrol_object_get(), GPU_COMP_F32, GPU_FETCH_FLOAT, GPU_PRIM_LINES, GPU_SHADER_2D_UNIFORM_COLOR, GPU_vertformat_attr_add(), FlyInfo::height, immBegin(), immBindBuiltinProgram(), immEnd(), immUnbindProgram(), immUniformThemeColor3(), immVertex2f(), immVertexFormat(), pos, FlyInfo::region, FlyInfo::rv3d, FlyInfo::scene, TH_VIEW_OVERLAY, FlyInfo::v3d, FlyInfo::v3d_camera_control, FlyInfo::width, x2, rctf::xmin, y1, and rctf::ymin.
Referenced by initFlyInfo().
|
static |
Definition at line 1068 of file view3d_navigate_fly.c.
References C, wmOperator::customdata, FLY_CANCEL, flyEnd(), NULL, and FlyInfo::state.
Referenced by VIEW3D_OT_fly().
|
static |
Definition at line 1043 of file view3d_navigate_fly.c.
References C, CTX_wm_region_view3d(), wmOperator::customdata, flyEvent(), initFlyInfo(), MEM_callocN, MEM_freeN, OPERATOR_CANCELLED, OPERATOR_RUNNING_MODAL, RV3D_LOCK_ANY_TRANSFORM, RV3D_LOCK_FLAGS, and WM_event_add_modal_handler().
Referenced by VIEW3D_OT_fly().
|
static |
Definition at line 1077 of file view3d_navigate_fly.c.
References C, CTX_wm_region(), wmOperator::customdata, wmEvent::customdata, ED_region_tag_redraw(), ED_view3d_camera_lock_undo_push(), ED_view3d_cameracontrol_object_get(), flyApply(), flyEnd(), flyEvent(), wmOperatorType::name, NC_OBJECT, ND_TRANSFORM, NDOF_MOTION, OPERATOR_FINISHED, OPERATOR_RUNNING_MODAL, RegionView3D::persp, FlyInfo::redraw, FlyInfo::rv3d, RV3D_CAMOB, FlyInfo::timer, TIMER, wmOperator::type, wmEvent::type, FlyInfo::v3d, FlyInfo::v3d_camera_control, and WM_event_add_notifier().
Referenced by VIEW3D_OT_fly().
void fly_modal_keymap | ( | wmKeyConfig * | keyconf | ) |
Definition at line 92 of file view3d_navigate_fly.c.
References FLY_MODAL_ACCELERATE, FLY_MODAL_AXIS_LOCK_X, FLY_MODAL_AXIS_LOCK_Z, FLY_MODAL_CANCEL, FLY_MODAL_CONFIRM, FLY_MODAL_DECELERATE, FLY_MODAL_DIR_BACKWARD, FLY_MODAL_DIR_DOWN, FLY_MODAL_DIR_FORWARD, FLY_MODAL_DIR_LEFT, FLY_MODAL_DIR_RIGHT, FLY_MODAL_DIR_UP, FLY_MODAL_FREELOOK_DISABLE, FLY_MODAL_FREELOOK_ENABLE, FLY_MODAL_PAN_DISABLE, FLY_MODAL_PAN_ENABLE, FLY_MODAL_PRECISION_DISABLE, FLY_MODAL_PRECISION_ENABLE, wmKeyMap::modal_items, NULL, WM_modalkeymap_assign(), WM_modalkeymap_ensure(), and WM_modalkeymap_find().
Referenced by view3d_keymap().
Definition at line 744 of file view3d_navigate_fly.c.
References add_v3_v3(), FlyInfo::axis, axis_angle_to_quat(), C, FlyInfo::center_mval, copy_m3_m4(), copy_v3_fl3(), copy_v3_v3(), FlyInfo::dvec_prev, fabsf, float(), FLY_AXISLOCK_STATE_ACTIVE, FLY_AXISLOCK_STATE_IDLE, FLY_AXISLOCK_STATE_OFF, FLY_ROTATE_FAC, FLY_SMOOTH_FAC, FLY_ZUP_CORRECT_ACCEL, FLY_ZUP_CORRECT_FAC, flyMoveCamera(), FlyInfo::grid, FlyInfo::height, interp_v3_v3v3(), min_ff(), mul_m3_v3(), mul_qt_qtqt(), mul_v3_fl(), FlyInfo::mval, negate_v3(), normalize_v3_v3(), RegionView3D::ofs, OPERATOR_FINISHED, FlyInfo::pan_view, RegionView3D::persp, PIL_check_seconds_timer(), FlyInfo::redraw, FlyInfo::rv3d, RV3D_CAMOB, FlyInfo::speed, FlyInfo::time_lastdraw, FlyInfo::use_freelook, FlyInfo::use_precision, RegionView3D::viewinv, RegionView3D::viewquat, FlyInfo::width, FlyInfo::xlock, FlyInfo::xlock_momentum, zero_v3(), FlyInfo::zlock, and FlyInfo::zlock_momentum.
Referenced by fly_modal(), and flyEnd().
Definition at line 415 of file view3d_navigate_fly.c.
References C, CTX_wm_manager(), CTX_wm_window(), FlyInfo::draw_handle_pixel, ED_region_draw_cb_exit(), ED_view3d_cameracontrol_release(), FLY_CANCEL, FLY_CONFIRM, FLY_RUNNING, flyApply(), MEM_freeN, OPERATOR_CANCELLED, OPERATOR_FINISHED, OPERATOR_RUNNING_MODAL, FlyInfo::region, RegionView3D::rflag, FlyInfo::rv3d, RV3D_NAVIGATING, FlyInfo::state, FlyInfo::timer, ARegion::type, FlyInfo::v3d_camera_control, and WM_event_remove_timer().
Referenced by fly_cancel(), and fly_modal().
Definition at line 466 of file view3d_navigate_fly.c.
References FlyInfo::axis, copy_v2_v2_int(), wmEvent::customdata, EVT_MODAL_MAP, fabsf, float(), FLY_AXISLOCK_STATE_ACTIVE, FLY_AXISLOCK_STATE_OFF, FLY_CANCEL, FLY_CONFIRM, FLY_MODAL_ACCELERATE, FLY_MODAL_AXIS_LOCK_X, FLY_MODAL_AXIS_LOCK_Z, FLY_MODAL_CANCEL, FLY_MODAL_CONFIRM, FLY_MODAL_DECELERATE, FLY_MODAL_DIR_BACKWARD, FLY_MODAL_DIR_DOWN, FLY_MODAL_DIR_FORWARD, FLY_MODAL_DIR_LEFT, FLY_MODAL_DIR_RIGHT, FLY_MODAL_DIR_UP, FLY_MODAL_FREELOOK_DISABLE, FLY_MODAL_FREELOOK_ENABLE, FLY_MODAL_PAN_DISABLE, FLY_MODAL_PAN_ENABLE, FLY_MODAL_PRECISION_DISABLE, FLY_MODAL_PRECISION_ENABLE, FLY_MODAL_SPEED, FlyInfo::grid, MEM_dupallocN, MEM_freeN, min_ff(), MOUSEMOVE, FlyInfo::mval, wmEvent::mval, NDOF_MOTION, NULL, P_FINISHING, P_IN_PROGRESS, P_STARTING, FlyInfo::pan_view, PIL_check_seconds_timer(), FlyInfo::redraw, FlyInfo::speed, FlyInfo::state, FlyInfo::time_lastdraw, FlyInfo::time_lastwheel, FlyInfo::timer, TIMER, wmEvent::type, FlyInfo::use_freelook, FlyInfo::use_precision, wmEvent::val, FlyInfo::xlock, FlyInfo::xlock_momentum, FlyInfo::zlock, and FlyInfo::zlock_momentum.
Referenced by fly_invoke(), and fly_modal().
|
static |
Definition at line 732 of file view3d_navigate_fly.c.
References FlyInfo::anim_playing, C, ED_view3d_cameracontrol_update(), and FlyInfo::v3d_camera_control.
Referenced by flyApply().
|
static |
Definition at line 301 of file view3d_navigate_fly.c.
References FlyInfo::anim_playing, FlyInfo::axis, BKE_id_is_editable(), BKE_report(), BLI_rctf_size_x(), BLI_rctf_size_y(), C, View3D::camera, FlyInfo::center_mval, Object::constraints, copy_m3_m4(), copy_v2_v2_int(), copy_v3_fl3(), CTX_data_expect_evaluated_depsgraph(), CTX_data_main(), CTX_data_scene(), CTX_wm_manager(), CTX_wm_region(), CTX_wm_region_view3d(), CTX_wm_view3d(), CTX_wm_window(), FlyInfo::depsgraph, FlyInfo::draw_handle_pixel, drawFlyPixel(), FlyInfo::dvec_prev, ED_region_draw_cb_activate(), ED_screen_animation_playing(), ED_view3d_calc_camera_border(), ED_view3d_cameracontrol_acquire(), ED_view3d_cameracontrol_object_get(), ED_view3d_offset_lock_check(), fabsf, ListBase::first, FLY_AXISLOCK_STATE_IDLE, FLY_AXISLOCK_STATE_OFF, FLY_RUNNING, FlyInfo::grid, FlyInfo::height, Object::id, mul_m3_v3(), FlyInfo::mval, wmEvent::mval, NULL, FlyInfo::pan_view, RegionView3D::persp, PIL_check_seconds_timer(), FlyInfo::redraw, FlyInfo::region, REGION_DRAW_POST_PIXEL, wmOperator::reports, RegionView3D::rflag, RPT_ERROR, FlyInfo::rv3d, RV3D_CAMOB, RV3D_NAVIGATING, RV3D_PERSP, FlyInfo::scene, FlyInfo::speed, FlyInfo::state, FlyInfo::time_lastdraw, FlyInfo::time_lastwheel, FlyInfo::timer, TIMER, ARegion::type, FlyInfo::use_freelook, FlyInfo::use_precision, FlyInfo::v3d, FlyInfo::v3d_camera_control, RegionView3D::viewinv, FlyInfo::width, ARegion::winrct, ARegion::winx, ARegion::winy, WM_cursor_warp(), WM_event_add_timer(), FlyInfo::xlock, FlyInfo::xlock_momentum, rcti::xmin, rctf::xmin, rcti::ymin, rctf::ymin, zero_v3(), FlyInfo::zlock, and FlyInfo::zlock_momentum.
Referenced by fly_invoke().
void VIEW3D_OT_fly | ( | wmOperatorType * | ot | ) |
Definition at line 1125 of file view3d_navigate_fly.c.
References wmOperatorType::cancel, wmOperatorType::description, ED_operator_region_view3d_active(), wmOperatorType::flag, fly_cancel(), fly_invoke(), fly_modal(), wmOperatorType::idname, wmOperatorType::invoke, wmOperatorType::modal, wmOperatorType::name, OPTYPE_BLOCKING, ot, and wmOperatorType::poll.
Referenced by view3d_operatortypes().