{
//JMutexAutoLock envlock(m_env_mutex); //bulk comment-out
- Player *myplayer = m_env.getLocalPlayer();
+ LocalPlayer *myplayer = m_env.getLocalPlayer();
if(myplayer == NULL)
return;
-
+
+ // Save bandwidth by only updating position when something changed
+ if(myplayer->last_position == myplayer->getPosition() &&
+ myplayer->last_speed == myplayer->getSpeed() &&
+ myplayer->last_pitch == myplayer->getPitch() &&
+ myplayer->last_yaw == myplayer->getYaw() &&
+ myplayer->last_keyPressed == myplayer->keyPressed)
+ return;
+
+ myplayer->last_position = myplayer->getPosition();
+ myplayer->last_speed = myplayer->getSpeed();
+ myplayer->last_pitch = myplayer->getPitch();
+ myplayer->last_yaw = myplayer->getYaw();
+ myplayer->last_keyPressed = myplayer->keyPressed;
+
u16 our_peer_id;
{
//JMutexAutoLock lock(m_con_mutex); //bulk comment-out
Player(gamedef),
isAttached(false),
overridePosition(v3f(0,0,0)),
+ last_position(v3f(0,0,0)),
+ last_speed(v3f(0,0,0)),
+ last_pitch(0),
+ last_yaw(0),
+ last_keyPressed(0),
m_sneak_node(32767,32767,32767),
m_sneak_node_exists(false),
m_old_node_below(32767,32767,32767),
void applyControl(float dtime);
v3s16 getStandingNodePos();
+
+ // Used to check if anything changed and prevent sending packets if not
+ v3f last_position;
+ v3f last_speed;
+ float last_pitch;
+ float last_yaw;
+ unsigned int last_keyPressed;
+
private:
// This is used for determining the sneaking range
v3s16 m_sneak_node;
}
u32 keyPressed;
-
+
protected:
IGameDef *m_gamedef;