-
Notifications
You must be signed in to change notification settings - Fork 0
/
arrow.hpp
45 lines (38 loc) · 902 Bytes
/
arrow.hpp
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
#ifndef INSULA_ARROW_HPP_INCLUDED
#define INSULA_ARROW_HPP_INCLUDED
#include "arrow_parameters_fwd.hpp"
#include "model/object.hpp"
#include "graphics/shader/object_fwd.hpp"
#include "graphics/camera/object_fwd.hpp"
#include "graphics/vec3.hpp"
#include "physics/vec3.hpp"
#include <sge/renderer/device_ptr.hpp>
#include <sge/renderer/texture_ptr.hpp>
#include <functional>
namespace insula
{
class arrow
{
public:
arrow(arrow const &) = delete;
arrow &operator=(arrow const &) = delete;
typedef
std::function<physics::vec3 ()>
position_function;
explicit
arrow(
arrow_parameters const &);
void
render();
~arrow();
private:
model::object model_;
sge::renderer::texture_ptr texture_;
graphics::shader::object &model_shader_;
sge::renderer::device_ptr renderer_;
graphics::camera::object &camera_;
position_function position_callback_;
graphics::vec3 const offset_;
};
}
#endif