1 module prova.graphics.shapes.linemesh;
2 
3 import prova.graphics,
4        prova.math;
5 
6 ///
7 class LineMesh : Mesh
8 {
9   private Vector3 _start;
10   private Vector3 _end;
11 
12   ///
13   this()
14   {
15     this(Vector3(), Vector3());
16   }
17 
18   ///
19   this(Vector3 start, Vector3 end)
20   {
21     uint[] indexes = [0, 1];
22 
23     setIBO(indexes);
24     set(start, end);
25   }
26 
27   ///
28   @property Vector3 start()
29   {
30     return _start;
31   }
32 
33   ///
34   @property Vector3 end()
35   {
36     return _end;
37   }
38 
39   ///
40   void set(Vector3 start, Vector3 end)
41   {
42     float[] vertices = [
43       start.x, start.y, start.z,
44       end.x, end.y, end.z
45     ];
46 
47     setVBO(vertices, 3);
48 
49     _start = start;
50     _end = end;
51   }
52 
53   ///
54   void setStart(float x, float y, float z)
55   {
56     Vector3 start = Vector3(x, y, z);
57     set(start, _end);
58   }
59 
60   ///
61   void setStart(Vector3 start)
62   {
63     set(start, _end);
64   }
65 
66   ///
67   void setEnd(float x, float y, float z)
68   {
69     Vector3 end = Vector3(x, y, z);
70     set(_start, end);
71   }
72 
73   ///
74   void setEnd(Vector3 end)
75   {
76     set(_start, end);
77   }
78 }