#include "camera.h" // CameraModes
#include "wieldmesh.h"
#include "log.h"
+#include <algorithm>
class Settings;
struct ToolCapabilities;
return NULL;
}
-scene::IMeshSceneNode* GenericCAO::getMeshSceneNode()
-{
- return m_meshnode;
-}
-
scene::IAnimatedMeshSceneNode* GenericCAO::getAnimatedMeshSceneNode()
{
return m_animated_meshnode;
}
-WieldMeshSceneNode* GenericCAO::getWieldMeshSceneNode()
-{
- return m_wield_meshnode;
-}
-
-scene::IBillboardSceneNode* GenericCAO::getSpriteSceneNode()
-{
- return m_spritenode;
-}
-
void GenericCAO::setChildrenVisible(bool toset)
{
for (std::vector<u16>::size_type i = 0; i < m_children.size(); i++) {
void GenericCAO::step(float dtime, ClientEnvironment *env)
{
// Handel model of local player instantly to prevent lags
- if(m_is_local_player)
- {
+ if (m_is_local_player) {
LocalPlayer *player = m_env->getLocalPlayer();
-
- if (m_is_visible)
- {
+ if (m_is_visible) {
int old_anim = player->last_animation;
float old_anim_speed = player->last_animation_speed;
m_position = player->getPosition() + v3f(0,BS,0);
m_acceleration = v3f(0,0,0);
pos_translator.vect_show = m_position;
m_yaw = player->getYaw();
- PlayerControl controls = player->getPlayerControl();
+ const PlayerControl &controls = player->getPlayerControl();
bool walking = false;
if (controls.up || controls.down || controls.left || controls.right ||
m_client->checkLocalPrivilege("fly"))))
new_speed *= 1.5;
// slowdown speed if sneeking
- if(controls.sneak && walking)
+ if (controls.sneak && walking)
new_speed /= 2;
- if(walking && (controls.LMB || controls.RMB))
- {
+ if (walking && (controls.LMB || controls.RMB)) {
new_anim = player->local_animations[3];
player->last_animation = WD_ANIM;
} else if(walking) {
// Apply animations if input detected and not attached
// or set idle animation
- if ((new_anim.X + new_anim.Y) > 0 && !player->isAttached)
- {
+ if ((new_anim.X + new_anim.Y) > 0 && !player->isAttached) {
allow_update = true;
m_animation_range = new_anim;
m_animation_speed = new_speed;
} else {
player->last_animation = NO_ANIM;
- if (old_anim != NO_ANIM)
- {
+ if (old_anim != NO_ANIM) {
m_animation_range = player->local_animations[0];
updateAnimation();
}
}
}
-void GenericCAO::updateTextures(const std::string mod)
+void GenericCAO::updateTextures(std::string mod)
{
ITextureSource *tsrc = m_client->tsrc();
m_initial_tx_basepos_set = true;
m_tx_basepos = m_prop.initial_sprite_basepos;
}
+ if (m_is_local_player) {
+ LocalPlayer *player = m_env->getLocalPlayer();
+ player->makes_footstep_sound = m_prop.makes_footstep_sound;
+ }
if ((m_is_player && !m_is_local_player) && m_prop.nametag == "")
m_prop.nametag = m_name;
m_smgr, m_env, m_position,
m_prop.visual_size * BS);
m_env->addSimpleObject(simple);
- } else {
+ } else if (m_reset_textures_timer < 0) {
// TODO: Execute defined fast response
// Flashing shall suffice as there is no definition
m_reset_textures_timer = 0.05;
}
// TODO: Execute defined fast response
// Flashing shall suffice as there is no definition
- m_reset_textures_timer = 0.05;
- if(result.damage >= 2)
- m_reset_textures_timer += 0.05 * result.damage;
- updateTextures(m_current_texture_modifier + "^[brighten");
+ if (m_reset_textures_timer < 0) {
+ m_reset_textures_timer = 0.05;
+ if (result.damage >= 2)
+ m_reset_textures_timer += 0.05 * result.damage;
+ updateTextures(m_current_texture_modifier + "^[brighten");
+ }
}
return false;