Minetest  5.4.0
Camera Class Reference

#include <camera.h>

+ Collaboration diagram for Camera:

Public Member Functions

 Camera (MapDrawControl &draw_control, Client *client)
 
 ~Camera ()
 
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
 
void notifyFovChange ()
 
bool successfullyCreated (std::string &error_message)
 
void step (f32 dtime)
 
void update (LocalPlayer *player, f32 frametime, f32 busytime, f32 tool_reload_ratio)
 
void updateViewingRange ()
 
void setDigging (s32 button)
 
void wield (const ItemStack &item)
 
void drawWieldedTool (irr::core::matrix4 *translation=NULL)
 
void toggleCameraMode ()
 
void setCameraMode (CameraMode mode)
 
CameraMode getCameraMode ()
 
NametagaddNametag (scene::ISceneNode *parent_node, const std::string &text, video::SColor textcolor, Optional< video::SColor > bgcolor, const v3f &pos)
 
void removeNametag (Nametag *nametag)
 
void drawNametags ()
 
void addArmInertia (f32 player_yaw)
 

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_server_sent_fov = false
 
f32 m_curr_fov_degrees
 
f32 m_old_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_view_bobbing_fall = 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 = CAMERA_MODE_FIRST
 
f32 m_cache_fall_bobbing_amount
 
f32 m_cache_view_bobbing_amount
 
bool m_arm_inertia
 
std::list< Nametag * > m_nametags
 
bool m_show_nametag_backgrounds
 

Constructor & Destructor Documentation

◆ Camera()

Camera::Camera ( MapDrawControl draw_control,
Client client 
)

◆ ~Camera()

Camera::~Camera ( )

References 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 ( scene::ISceneNode *  parent_node,
const std::string &  text,
video::SColor  textcolor,
Optional< video::SColor >  bgcolor,
const v3f pos 
)

References m_nametags.

Referenced by GenericCAO::updateNametag().

+ Here is the caller graph for this function:

◆ drawNametags()

void Camera::drawNametags ( )

References BS, g_fontengine, RenderingEngine::get_video_driver(), FontEngine::getFont(), m_cameranode, m_nametags, m_show_nametag_backgrounds, translate_string(), unescape_translate(), and utf8_to_wide().

Referenced by RenderingCore::drawHUD().

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

◆ drawWieldedTool()

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

References m_cameranode, and m_wieldmgr.

Referenced by RenderingCore::draw3D().

+ Here is the caller graph for this function:

◆ getCameraMode()

CameraMode Camera::getCameraMode ( )
inline

References m_camera_mode.

Referenced by RenderingCore::drawPostFx(), LuaCamera::l_get_camera_mode(), LuaCamera::l_set_camera_mode(), Game::processPlayerInteraction(), GenericCAO::setAttachment(), Game::updateCamera(), Game::updateCameraOrientation(), Game::updateFrame(), and GenericCAO::updateMeshCulling().

+ Here is the caller graph for this function:

◆ getCameraNode()

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

References m_cameranode.

Referenced by RenderingCoreStereo::beforeDraw(), LuaCamera::l_get_aspect_ratio(), LuaCamera::l_get_fov(), Game::updateFrame(), and Game::updateSound().

+ Here is the caller graph for this function:

◆ getDirection()

v3f Camera::getDirection ( ) const
inline

References m_camera_direction.

Referenced by LuaCamera::l_get_look_dir(), Game::processPlayerInteraction(), Game::updateCamera(), Game::updateFrame(), and Game::updateSound().

+ 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(), Game::updateCamera(), and updateViewingRange().

+ Here is the caller graph for this function:

◆ getFovX()

f32 Camera::getFovX ( ) const
inline

References m_fov_x.

Referenced by LuaCamera::l_get_fov().

+ Here is the caller graph for this function:

◆ getFovY()

f32 Camera::getFovY ( ) const
inline

References m_fov_y.

Referenced by LuaCamera::l_get_fov().

+ Here is the caller graph for this function:

◆ getHeadPosition()

v3f Camera::getHeadPosition ( ) const
inline

References m_headnode.

Referenced by Game::processPlayerInteraction().

+ Here is the caller graph for this function:

◆ getOffset()

v3s16 Camera::getOffset ( ) const
inline

References m_camera_offset.

Referenced by RenderingCore::drawHUD(), GameGlobalShaderConstantSetter::onSetConstants(), Game::processPlayerInteraction(), Game::updateCamera(), Game::updateFrame(), and Game::updateSound().

+ Here is the caller graph for this function:

◆ getPosition()

v3f Camera::getPosition ( ) const
inline

References m_camera_position.

Referenced by LuaCamera::l_get_pos(), Game::processPlayerInteraction(), and Game::updateCamera().

+ Here is the caller graph for this function:

◆ notifyFovChange()

void Camera::notifyFovChange ( )

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

Referenced by Client::handleCommand_Fov().

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

◆ removeNametag()

void Camera::removeNametag ( Nametag nametag)

References m_nametags.

Referenced by GenericCAO::removeFromScene(), and GenericCAO::updateNametag().

+ Here is the caller graph for this function:

◆ 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.

Referenced by Game::handleDigging(), Game::handlePointingAtNode(), and Game::processPlayerInteraction().

+ Here is the caller graph for this function:

◆ step()

void Camera::step ( f32  dtime)

References MtEvent::CAMERA_PUNCH_LEFT, MtEvent::CAMERA_PUNCH_RIGHT, Client::getEventManager(), m_client, m_digging_anim, m_digging_button, m_view_bobbing_anim, m_view_bobbing_fall, m_view_bobbing_speed, m_view_bobbing_state, m_wield_change_timer, m_wield_item_next, m_wieldnode, my_modf(), MYMIN, MtEventManager::put(), WieldMeshSceneNode::setItem(), and MtEvent::VIEW_BOBBING_STEP.

Referenced by Game::updateCamera().

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

◆ successfullyCreated()

bool Camera::successfullyCreated ( std::string &  error_message)

References Client::getScript(), m_cameranode, m_client, m_headnode, m_playernode, m_wieldmgr, m_wieldnode, Client::modsLoaded(), and ClientScripting::on_camera_ready().

Referenced by Game::createClient().

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

◆ toggleCameraMode()

void Camera::toggleCameraMode ( )
inline

References CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT, and m_camera_mode.

Referenced by Game::updateCamera().

+ Here is the caller graph for this function:

◆ update()

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

References addArmInertia(), BS, LocalPlayer::camera_impact, CAMERA_MODE_FIRST, CAMERA_MODE_THIRD, CAMERA_MODE_THIRD_FRONT, CAMERA_OFFSET_STEP, Client::checkLocalPrivilege(), easeCurve(), Player::eye_offset_first, Player::eye_offset_third, floatToInt(), g_settings, NodeDefManager::get(), RenderingEngine::get_instance(), Settings::getBool(), ClientEnvironment::getClientMap(), Client::getEnv(), LocalPlayer::getEyeOffset(), Map::getNode(), LocalPlayer::getParent(), LocalPlayer::getPitch(), Player::getPlayerControl(), ClientActiveObject::getPosition(), LocalPlayer::getPosition(), Player::getSpeed(), 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_fall_bobbing_amount, 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_playernode, m_server_sent_fov, m_target_fov_degrees, m_transition_time, m_view_bobbing_anim, m_view_bobbing_fall, m_view_bobbing_speed, m_view_bobbing_state, m_wield_change_timer, m_wieldmesh_offset, m_wieldnode, my_modf(), MYMIN, IGameDef::ndef(), rangelim, WieldMeshSceneNode::setNodeLightColor(), LocalPlayer::swimming_vertical, LocalPlayer::touching_ground, updateViewingRange(), ContentFeatures::walkable, and PlayerControl::zoom.

Referenced by Game::updateCamera().

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

◆ updateViewingRange()

void Camera::updateViewingRange ( )

References adjustDist(), BS, g_settings, Settings::getFloat(), getFovMax(), m_cameranode, m_draw_control, MapDrawControl::range_all, rangelim, and MapDrawControl::wanted_range.

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)

References m_wield_change_timer, m_wield_item_next, ItemStack::metadata, and ItemStack::name.

Referenced by Game::updateFrame().

+ Here is the caller graph for this function:

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 Camera(), and update().

◆ m_aspect

f32 Camera::m_aspect = 1.0f
private

Referenced by update().

◆ m_cache_fall_bobbing_amount

f32 Camera::m_cache_fall_bobbing_amount
private

Referenced by Camera(), and update().

◆ m_cache_fov

f32 Camera::m_cache_fov
private

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

◆ m_cache_view_bobbing_amount

f32 Camera::m_cache_view_bobbing_amount
private

Referenced by Camera(), 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 = CAMERA_MODE_FIRST
private

◆ m_camera_offset

v3s16 Camera::m_camera_offset
private

Referenced by getOffset(), and update().

◆ m_camera_position

v3f Camera::m_camera_position
private

Referenced by getPosition(), and update().

◆ m_cameranode

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

◆ m_client

Client* Camera::m_client
private

◆ 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 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

◆ m_last_cam_pos

v2f Camera::m_last_cam_pos
private

Referenced by addArmInertia().

◆ m_nametags

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

◆ m_old_fov_degrees

f32 Camera::m_old_fov_degrees
private

Referenced by notifyFovChange().

◆ m_playernode

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

Referenced by Camera(), successfullyCreated(), 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 Camera(), and drawNametags().

◆ 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_fall

f32 Camera::m_view_bobbing_fall = 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

◆ m_wieldnode

WieldMeshSceneNode* Camera::m_wieldnode = nullptr
private

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