Blender  V3.3
Classes | Macros
view3d_navigate_fly.c File Reference
#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)
 

Detailed Description

Interactive fly navigation modal operator (flying around in space).

Note
Similar logic to view3d_navigate_walk.c changes here may apply there too.

Definition in file view3d_navigate_fly.c.

Macro Definition Documentation

◆ FLY_ROTATE_FAC

#define FLY_ROTATE_FAC   10.0f /* more is faster */

◆ FLY_SMOOTH_FAC

#define FLY_SMOOTH_FAC   20.0f /* higher value less lag */

◆ FLY_ZUP_CORRECT_ACCEL

#define FLY_ZUP_CORRECT_ACCEL   0.05f /* increase upright momentum each step */

◆ FLY_ZUP_CORRECT_FAC

#define FLY_ZUP_CORRECT_FAC   0.1f /* amount to correct per step */

Typedef Documentation

◆ eFlyPanState

typedef enum eFlyPanState eFlyPanState

◆ FlyInfo

typedef struct FlyInfo FlyInfo

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
FLY_MODAL_CANCEL 
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 

Definition at line 56 of file view3d_navigate_fly.c.

◆ anonymous enum

anonymous enum
Enumerator
FLY_RUNNING 
FLY_CANCEL 
FLY_CONFIRM 

Definition at line 295 of file view3d_navigate_fly.c.

◆ eFlyPanState

Enumerator
FLY_AXISLOCK_STATE_OFF 
FLY_AXISLOCK_STATE_IDLE 
FLY_AXISLOCK_STATE_ACTIVE 

Definition at line 79 of file view3d_navigate_fly.c.

Function Documentation

◆ drawFlyPixel()

static void drawFlyPixel ( const struct bContext UNUSEDC,
ARegion UNUSEDregion,
void arg 
)
static

◆ fly_cancel()

static void fly_cancel ( bContext C,
wmOperator op 
)
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().

◆ fly_invoke()

static int fly_invoke ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ fly_modal()

static int fly_modal ( bContext C,
wmOperator op,
const wmEvent event 
)
static

◆ fly_modal_keymap()

void fly_modal_keymap ( wmKeyConfig keyconf)

◆ flyApply()

static int flyApply ( bContext C,
struct FlyInfo fly,
bool  is_confirm 
)
static

◆ flyEnd()

static int flyEnd ( bContext C,
FlyInfo fly 
)
static

◆ flyEvent()

static void flyEvent ( FlyInfo fly,
const wmEvent event 
)
static

◆ flyMoveCamera()

static void flyMoveCamera ( bContext C,
FlyInfo fly,
const bool  do_rotate,
const bool  do_translate,
const bool  is_confirm 
)
static

◆ initFlyInfo()

static bool initFlyInfo ( bContext C,
FlyInfo fly,
wmOperator op,
const wmEvent event 
)
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().

◆ VIEW3D_OT_fly()

void VIEW3D_OT_fly ( wmOperatorType ot)