@@ -1034,7 +1034,7 @@ void Client::Send(NetworkPacket* pkt)
1034
1034
m_con->Send (PEER_ID_SERVER, scf.channel , pkt, scf.reliable );
1035
1035
}
1036
1036
1037
- // Will fill up 12 + 12 + 4 + 4 + 4 + 1 + 1 + 1 bytes
1037
+ // Will fill up 12 + 12 + 4 + 4 + 4 + 1 + 1 + 1 + 4 + 4 bytes
1038
1038
void writePlayerPos (LocalPlayer *myplayer, ClientMap *clientMap, NetworkPacket *pkt, bool camera_inverted)
1039
1039
{
1040
1040
v3f pf = myplayer->getPosition () * 100 ;
@@ -1046,6 +1046,8 @@ void writePlayerPos(LocalPlayer *myplayer, ClientMap *clientMap, NetworkPacket *
1046
1046
u8 fov = std::fmin (255 .0f , clientMap->getCameraFov () * 80 .0f );
1047
1047
u8 wanted_range = std::fmin (255 .0f ,
1048
1048
std::ceil (clientMap->getWantedRange () * (1 .0f / MAP_BLOCKSIZE)));
1049
+ f32 movement_speed = myplayer->control .movement_speed ;
1050
+ f32 movement_dir = myplayer->control .movement_direction ;
1049
1051
1050
1052
v3s32 position (pf.X , pf.Y , pf.Z );
1051
1053
v3s32 speed (sf.X , sf.Y , sf.Z );
@@ -1060,10 +1062,13 @@ void writePlayerPos(LocalPlayer *myplayer, ClientMap *clientMap, NetworkPacket *
1060
1062
[12+12+4+4+4] u8 fov*80
1061
1063
[12+12+4+4+4+1] u8 ceil(wanted_range / MAP_BLOCKSIZE)
1062
1064
[12+12+4+4+4+1+1] u8 camera_inverted (bool)
1065
+ [12+12+4+4+4+1+1+1] f32 movement_speed
1066
+ [12+12+4+4+4+1+1+1+4] f32 movement_direction
1063
1067
*/
1064
1068
*pkt << position << speed << pitch << yaw << keyPressed;
1065
1069
*pkt << fov << wanted_range;
1066
1070
*pkt << camera_inverted;
1071
+ *pkt << movement_speed << movement_dir;
1067
1072
}
1068
1073
1069
1074
void Client::interact (InteractAction action, const PointedThing& pointed)
@@ -1397,6 +1402,8 @@ void Client::sendPlayerPos()
1397
1402
1398
1403
u32 keyPressed = player->control .getKeysPressed ();
1399
1404
bool camera_inverted = m_camera->getCameraMode () == CAMERA_MODE_THIRD_FRONT;
1405
+ f32 movement_speed = player->control .movement_speed ;
1406
+ f32 movement_dir = player->control .movement_direction ;
1400
1407
1401
1408
if (
1402
1409
player->last_position == player->getPosition () &&
@@ -1406,7 +1413,9 @@ void Client::sendPlayerPos()
1406
1413
player->last_keyPressed == keyPressed &&
1407
1414
player->last_camera_fov == camera_fov &&
1408
1415
player->last_camera_inverted == camera_inverted &&
1409
- player->last_wanted_range == wanted_range)
1416
+ player->last_wanted_range == wanted_range &&
1417
+ player->last_movement_speed == movement_speed &&
1418
+ player->last_movement_dir == movement_dir)
1410
1419
return ;
1411
1420
1412
1421
player->last_position = player->getPosition ();
@@ -1417,8 +1426,10 @@ void Client::sendPlayerPos()
1417
1426
player->last_camera_fov = camera_fov;
1418
1427
player->last_camera_inverted = camera_inverted;
1419
1428
player->last_wanted_range = wanted_range;
1429
+ player->last_movement_speed = movement_speed;
1430
+ player->last_movement_dir = movement_dir;
1420
1431
1421
- NetworkPacket pkt (TOSERVER_PLAYERPOS, 12 + 12 + 4 + 4 + 4 + 1 + 1 + 1 );
1432
+ NetworkPacket pkt (TOSERVER_PLAYERPOS, 12 + 12 + 4 + 4 + 4 + 1 + 1 + 1 + 4 + 4 );
1422
1433
1423
1434
writePlayerPos (player, &map, &pkt, camera_inverted);
1424
1435
0 commit comments