Luanti 5.16.0-dev
Loading...
Searching...
No Matches
Camera Class Reference

#include <camera.h>

Collaboration diagram for Camera:

Public Member Functions

 Camera (MapDrawControl &draw_control, Client *client, RenderingEngine *rendering_engine)
 ~Camera ()
void readSettings ()
scene::ICameraSceneNode * getCameraNode () const
v3f getPosition () const
v3f getHeadPosition () const
v3f getDirection () const
v3s16 getOffset () const
f32 getFovX () const
f32 getFovY () const
f32 getFovMax () const
auto getFrustumCuller () const
void notifyFovChange ()
void step (f32 dtime)
void update (LocalPlayer *player, f32 frametime, f32 tool_reload_ratio)
void updateOffset ()
void updateViewingRange ()
void setDigging (s32 button)
void wield (const ItemStack &item)
void drawWieldedTool (core::matrix4 *translation=NULL)
void toggleCameraMode ()
void setCameraMode (CameraMode mode)
CameraMode getCameraMode () const
NametagaddNametag (const Nametag &params)
void removeNametag (Nametag *nametag)
void drawNametags ()
void addArmInertia (f32 player_yaw)

Static Public Member Functions

static void settingChangedCallback (const std::string &name, void *data)

Private Member Functions

std::array< core::plane3d< f32 >, 4 > getFrustumCullPlanes () const

Private Attributes

scene::ISceneNode * m_playernode = nullptr
scene::ISceneNode * m_headnode = nullptr
scene::ICameraSceneNode * m_cameranode = nullptr
scene::ISceneManager * m_wieldmgr = nullptr
WieldMeshSceneNodem_wieldnode = nullptr
MapDrawControlm_draw_control
Clientm_client
f32 m_cache_fov
v3f m_camera_position
v3f m_camera_direction
v3s16 m_camera_offset
bool m_stepheight_smooth_active = false
bool m_server_sent_fov = false
f32 m_curr_fov_degrees
f32 m_target_fov_degrees
bool m_fov_transition_active = false
f32 m_fov_diff
f32 m_transition_time
v2f m_wieldmesh_offset = v2f(55.0f, -35.0f)
v2f m_arm_dir
v2f m_cam_vel
v2f m_cam_vel_old
v2f m_last_cam_pos
f32 m_aspect = 1.0f
f32 m_fov_x = 1.0f
f32 m_fov_y = 1.0f
f32 m_view_bobbing_anim = 0.0f
s32 m_view_bobbing_state = 0
f32 m_view_bobbing_speed = 0.0f
f32 m_digging_anim = 0.0f
s32 m_digging_button = -1
f32 m_wield_change_timer = 0.125f
ItemStack m_wield_item_next
CameraMode m_camera_mode
f32 m_cache_view_bobbing_amount
bool m_arm_inertia
std::vector< Nametag * > m_nametags
bool m_show_nametag_backgrounds
video::SColor m_player_light_color

Constructor & Destructor Documentation

◆ Camera()

Camera::Camera ( MapDrawControl & draw_control,
Client * client,
RenderingEngine * rendering_engine )

References CAMERA_MODE_FIRST, g_settings, RenderingEngine::get_scene_manager(), m_camera_mode, m_cameranode, m_client, m_draw_control, m_headnode, m_nametags, m_player_light_color, m_playernode, m_wieldmgr, m_wieldnode, readSettings(), setting_names, and settingChangedCallback().

Referenced by settingChangedCallback().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ~Camera()

Camera::~Camera ( )

References g_settings, and m_wieldmgr.

Member Function Documentation

◆ addArmInertia()

void Camera::addArmInertia ( f32 player_yaw)
inline

References dir(), m_arm_dir, m_cam_vel, m_cam_vel_old, m_camera_direction, m_last_cam_pos, m_wieldmesh_offset, rangelim(), WIELDMESH_AMPLITUDE_X, WIELDMESH_AMPLITUDE_Y, WIELDMESH_OFFSET_X, and WIELDMESH_OFFSET_Y.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ addNametag()

Nametag * Camera::addNametag ( const Nametag & params)

References m_nametags, and Nametag::parent_node.

◆ drawNametags()

void Camera::drawNametags ( )

References BS, FM_Unspecified, g_fontengine, RenderingEngine::get_video_driver(), m_cameranode, m_nametags, m_show_nametag_backgrounds, MYMIN, myround(), rangelim(), translate_string(), unescape_translate(), and utf8_to_wide().

Referenced by DrawHUD::run().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawWieldedTool()

void Camera::drawWieldedTool ( core::matrix4 * translation = NULL)

References m_cameranode, and m_wieldmgr.

Referenced by DrawWield::run().

Here is the caller graph for this function:

◆ getCameraMode()

CameraMode Camera::getCameraMode ( ) const
inline

References m_camera_mode.

Referenced by LuaCamera::l_get_camera_mode(), LuaCamera::l_set_camera_mode(), and MapPostFxStep::run().

Here is the caller graph for this function:

◆ getCameraNode()

scene::ICameraSceneNode * Camera::getCameraNode ( ) const
inline

References m_cameranode.

Referenced by DirectionalLight::createSplitMatrices(), LuaCamera::l_get_aspect_ratio(), LuaCamera::l_get_fov(), OffsetCameraStep::reset(), OffsetCameraStep::run(), and DirectionalLight::updateFrustum().

Here is the caller graph for this function:

◆ getDirection()

v3f Camera::getDirection ( ) const
inline

References m_camera_direction.

Referenced by DirectionalLight::createSplitMatrices(), and LuaCamera::l_get_look_dir().

Here is the caller graph for this function:

◆ getFovMax()

f32 Camera::getFovMax ( ) const
inline

References m_fov_x, m_fov_y, and MYMAX.

Referenced by LuaCamera::l_get_fov(), and updateViewingRange().

Here is the caller graph for this function:

◆ getFovX()

f32 Camera::getFovX ( ) const
inline

References m_fov_x.

Referenced by DirectionalLight::createSplitMatrices(), and LuaCamera::l_get_fov().

Here is the caller graph for this function:

◆ getFovY()

f32 Camera::getFovY ( ) const
inline

References m_fov_y.

Referenced by DirectionalLight::createSplitMatrices(), and LuaCamera::l_get_fov().

Here is the caller graph for this function:

◆ getFrustumCuller()

auto Camera::getFrustumCuller ( ) const
inline

References BS, getFrustumCullPlanes(), intToFloat(), and m_camera_offset.

Here is the call graph for this function:

◆ getFrustumCullPlanes()

std::array< core::plane3d< f32 >, 4 > Camera::getFrustumCullPlanes ( ) const
private

References m_cameranode.

Referenced by getFrustumCuller().

Here is the caller graph for this function:

◆ getHeadPosition()

v3f Camera::getHeadPosition ( ) const

References m_headnode.

◆ getOffset()

v3s16 Camera::getOffset ( ) const
inline

References m_camera_offset.

Referenced by DirectionalLight::createSplitMatrices(), and DrawHUD::run().

Here is the caller graph for this function:

◆ getPosition()

v3f Camera::getPosition ( ) const
inline

References m_camera_position.

Referenced by DirectionalLight::createSplitMatrices(), and LuaCamera::l_get_pos().

Here is the caller graph for this function:

◆ notifyFovChange()

void Camera::notifyFovChange ( )

References PlayerFovSpec::fov, Player::getFov(), PlayerFovSpec::is_multiplier, m_cache_fov, m_client, m_curr_fov_degrees, m_fov_diff, m_fov_transition_active, m_server_sent_fov, m_target_fov_degrees, m_transition_time, and PlayerFovSpec::transition_time.

Here is the call graph for this function:

◆ readSettings()

void Camera::readSettings ( )

References g_settings, m_arm_inertia, m_cache_fov, m_cache_view_bobbing_amount, and m_show_nametag_backgrounds.

Referenced by Camera(), and settingChangedCallback().

Here is the caller graph for this function:

◆ removeNametag()

void Camera::removeNametag ( Nametag * nametag)

References m_nametags.

◆ setCameraMode()

void Camera::setCameraMode ( CameraMode mode)
inline

References m_camera_mode.

Referenced by LuaCamera::l_set_camera_mode().

Here is the caller graph for this function:

◆ setDigging()

void Camera::setDigging ( s32 button)

References m_digging_button.

◆ settingChangedCallback()

void Camera::settingChangedCallback ( const std::string & name,
void * data )
static

References Camera(), and readSettings().

Referenced by Camera().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ step()

void Camera::step ( f32 dtime)

References MtEvent::CAMERA_PUNCH_LEFT, MtEvent::CAMERA_PUNCH_RIGHT, m_client, m_digging_anim, m_digging_button, m_player_light_color, m_view_bobbing_anim, m_view_bobbing_speed, m_view_bobbing_state, m_wield_change_timer, m_wield_item_next, m_wieldnode, my_modf(), MYMIN, step(), and MtEvent::VIEW_BOBBING_STEP.

Referenced by step().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ toggleCameraMode()

void Camera::toggleCameraMode ( )

◆ update()

void Camera::update ( LocalPlayer * player,
f32 frametime,
f32 tool_reload_ratio )

References addArmInertia(), BS, CAMERA_MODE_ANY, CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT, easeCurve(), Player::eye_offset_first, Player::eye_offset_third, Player::eye_offset_third_front, floatToInt(), g_settings, NodeDefManager::get(), LocalPlayer::getCAO(), LocalPlayer::getEyeOffset(), LocalPlayer::getParent(), LocalPlayer::getPitch(), Player::getPlayerControl(), ClientActiveObject::getPosition(), LocalPlayer::getPosition(), Player::getSpeed(), GenericCAO::getStepHeight(), RenderingEngine::getWindowSize(), LocalPlayer::getYaw(), LocalPlayer::getZoomFOV(), LocalPlayer::hurt_tilt_strength, LocalPlayer::hurt_tilt_timer, LocalPlayer::in_liquid, intToFloat(), LocalPlayer::is_climbing, LocalPlayer::light_color, m_arm_inertia, m_aspect, m_cache_fov, m_cache_view_bobbing_amount, m_camera_direction, m_camera_mode, m_camera_offset, m_camera_position, m_cameranode, m_client, m_curr_fov_degrees, m_digging_anim, m_digging_button, m_fov_diff, m_fov_transition_active, m_fov_x, m_fov_y, m_headnode, m_player_light_color, m_playernode, m_server_sent_fov, m_stepheight_smooth_active, m_target_fov_degrees, m_transition_time, m_view_bobbing_anim, m_view_bobbing_speed, m_view_bobbing_state, m_wield_change_timer, m_wieldmesh_offset, m_wieldnode, my_modf(), MYMIN, rangelim(), LocalPlayer::swimming_vertical, LocalPlayer::touching_ground, updateViewingRange(), ContentFeatures::walkable, and PlayerControl::zoom.

Here is the call graph for this function:

◆ updateOffset()

void Camera::updateOffset ( )

◆ updateViewingRange()

void Camera::updateViewingRange ( )

References adjustDist(), BS, g_settings, getFovMax(), m_cameranode, and m_draw_control.

Referenced by update().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ wield()

void Camera::wield ( const ItemStack & item)

Member Data Documentation

◆ m_arm_dir

v2f Camera::m_arm_dir
private

Referenced by addArmInertia().

◆ m_arm_inertia

bool Camera::m_arm_inertia
private

Referenced by readSettings(), and update().

◆ m_aspect

f32 Camera::m_aspect = 1.0f
private

Referenced by update().

◆ m_cache_fov

f32 Camera::m_cache_fov
private

◆ m_cache_view_bobbing_amount

f32 Camera::m_cache_view_bobbing_amount
private

Referenced by readSettings(), and update().

◆ m_cam_vel

v2f Camera::m_cam_vel
private

Referenced by addArmInertia().

◆ m_cam_vel_old

v2f Camera::m_cam_vel_old
private

Referenced by addArmInertia().

◆ m_camera_direction

v3f Camera::m_camera_direction
private

Referenced by addArmInertia(), getDirection(), and update().

◆ m_camera_mode

CameraMode Camera::m_camera_mode
private

◆ m_camera_offset

v3s16 Camera::m_camera_offset
private

◆ m_camera_position

v3f Camera::m_camera_position
private

Referenced by getPosition(), update(), and updateOffset().

◆ m_cameranode

scene::ICameraSceneNode* Camera::m_cameranode = nullptr
private

◆ m_client

Client* Camera::m_client
private

Referenced by Camera(), notifyFovChange(), step(), and update().

◆ m_curr_fov_degrees

f32 Camera::m_curr_fov_degrees
private

Referenced by notifyFovChange(), and update().

◆ m_digging_anim

f32 Camera::m_digging_anim = 0.0f
private

Referenced by step(), and update().

◆ m_digging_button

s32 Camera::m_digging_button = -1
private

Referenced by setDigging(), step(), and update().

◆ m_draw_control

MapDrawControl& Camera::m_draw_control
private

Referenced by Camera(), and updateViewingRange().

◆ m_fov_diff

f32 Camera::m_fov_diff
private

Referenced by notifyFovChange(), and update().

◆ m_fov_transition_active

bool Camera::m_fov_transition_active = false
private

Referenced by notifyFovChange(), and update().

◆ m_fov_x

f32 Camera::m_fov_x = 1.0f
private

Referenced by getFovMax(), getFovX(), and update().

◆ m_fov_y

f32 Camera::m_fov_y = 1.0f
private

Referenced by getFovMax(), getFovY(), and update().

◆ m_headnode

scene::ISceneNode* Camera::m_headnode = nullptr
private

Referenced by Camera(), getHeadPosition(), and update().

◆ m_last_cam_pos

v2f Camera::m_last_cam_pos
private

Referenced by addArmInertia().

◆ m_nametags

std::vector<Nametag*> Camera::m_nametags
private

◆ m_player_light_color

video::SColor Camera::m_player_light_color
private

Referenced by Camera(), step(), and update().

◆ m_playernode

scene::ISceneNode* Camera::m_playernode = nullptr
private

Referenced by Camera(), and update().

◆ m_server_sent_fov

bool Camera::m_server_sent_fov = false
private

Referenced by notifyFovChange(), and update().

◆ m_show_nametag_backgrounds

bool Camera::m_show_nametag_backgrounds
private

Referenced by drawNametags(), and readSettings().

◆ m_stepheight_smooth_active

bool Camera::m_stepheight_smooth_active = false
private

Referenced by update().

◆ m_target_fov_degrees

f32 Camera::m_target_fov_degrees
private

Referenced by notifyFovChange(), and update().

◆ m_transition_time

f32 Camera::m_transition_time
private

Referenced by notifyFovChange(), and update().

◆ m_view_bobbing_anim

f32 Camera::m_view_bobbing_anim = 0.0f
private

Referenced by step(), and update().

◆ m_view_bobbing_speed

f32 Camera::m_view_bobbing_speed = 0.0f
private

Referenced by step(), and update().

◆ m_view_bobbing_state

s32 Camera::m_view_bobbing_state = 0
private

Referenced by step(), and update().

◆ m_wield_change_timer

f32 Camera::m_wield_change_timer = 0.125f
private

Referenced by step(), update(), and wield().

◆ m_wield_item_next

ItemStack Camera::m_wield_item_next
private

Referenced by step(), and wield().

◆ m_wieldmesh_offset

v2f Camera::m_wieldmesh_offset = v2f(55.0f, -35.0f)
private

Referenced by addArmInertia(), and update().

◆ m_wieldmgr

scene::ISceneManager* Camera::m_wieldmgr = nullptr
private

Referenced by Camera(), ~Camera(), and drawWieldedTool().

◆ m_wieldnode

WieldMeshSceneNode* Camera::m_wieldnode = nullptr
private

Referenced by Camera(), step(), and update().


The documentation for this class was generated from the following files: