aboutsummaryrefslogtreecommitdiff
path: root/src/shared/net/proto.cc
blob: 1c954b16d0749efa9a98d82ea8cbd7b51c3e2e21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include "shared/net/proto.hh"

namespace shared {
namespace net {

shared::player get_player(const proto::player& packet) noexcept {
    return shared::player{
        .index = packet.index(),
        .commands = packet.commands(),
        .chunk_pos = {packet.chunk_pos().x(), packet.chunk_pos().z()},
        .local_pos = {packet.local_pos().x(), packet.local_pos().y(),
                      packet.local_pos().z()},
        .viewangles = {packet.viewangles().pitch(), packet.viewangles().yaw()},
        .velocity = {packet.velocity().x(), packet.velocity().y(),
                     packet.velocity().z()},
    };
}

void set_angles(proto::angles& proto_angles,
                const shared::math::angles& angles) noexcept {
    proto_angles.set_pitch(angles.pitch);
    proto_angles.set_yaw(angles.yaw);
}

void set_coords(proto::coords& proto_coords,
                const shared::math::coords& coords) noexcept {
    proto_coords.set_x(coords.x);
    proto_coords.set_z(coords.z);
}

void set_vec3(proto::vec3& proto_vec3, const glm::vec3& vec3) noexcept {
    proto_vec3.set_x(vec3.x);
    proto_vec3.set_y(vec3.y);
    proto_vec3.set_z(vec3.z);
}

void set_ivec3(proto::ivec3& proto_ivec3, const glm::ivec3& ivec3) noexcept {
    proto_ivec3.set_x(ivec3.x);
    proto_ivec3.set_y(ivec3.y);
    proto_ivec3.set_z(ivec3.z);
}

void set_player(proto::player& proto_player,
                const shared::player& player) noexcept {
    proto_player.set_index(player.index);
    proto_player.set_commands(player.commands);
    set_coords(*proto_player.mutable_chunk_pos(), player.chunk_pos);
    set_vec3(*proto_player.mutable_local_pos(), player.local_pos);
    set_angles(*proto_player.mutable_viewangles(), player.viewangles);
    set_vec3(*proto_player.mutable_velocity(), player.velocity);
}

} // namespace net

} // namespace shared