blob: 0f90768bbf29d155d5a921b361fcfb5e59d7b1c3 (
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
|
#include "camera-offset.hpp"
#include "tile-defs.hpp"
#include "shaders/tile-shader.hpp"
#include "compat/assert.hpp"
#include <Magnum/Math/Vector2.h>
namespace floormat {
static_assert(sizeof(short) == 2);
with_shifted_camera_offset::with_shifted_camera_offset(tile_shader& shader, short x, short y) :
_shader{shader},
_offset{shader.camera_offset()}
{
const auto offset = _offset + tile_shader::project({double(x)*TILE_MAX_DIM*dTILE_SIZE[0],
double(y)*TILE_MAX_DIM*dTILE_SIZE[1],
0});
_shader.set_camera_offset(offset);
}
with_shifted_camera_offset::~with_shifted_camera_offset()
{
_shader.set_camera_offset(_offset);
}
} // namespace floormat
|