#include <list>
#include <set>
-inline void arrow_draw(const Vector3& origin, const Vector3& direction)
+inline void arrow_draw(const Vector3& origin, const Vector3& direction_forward, const Vector3& direction_left, const Vector3& direction_up)
{
- Vector3 up(0, 0, 1);
- Vector3 left(-direction[1], direction[0], 0);
+ Vector3 endpoint(vector3_added(origin, vector3_scaled(direction_forward, 32.0)));
- Vector3 endpoint(vector3_added(origin, vector3_scaled(direction, 32.0)));
-
- Vector3 tip1(vector3_added(vector3_added(endpoint, vector3_scaled(direction, -8.0)), vector3_scaled(up, -4.0)));
- Vector3 tip2(vector3_added(tip1, vector3_scaled(up, 8.0)));
- Vector3 tip3(vector3_added(vector3_added(endpoint, vector3_scaled(direction, -8.0)), vector3_scaled(left, -4.0)));
- Vector3 tip4(vector3_added(tip3, vector3_scaled(left, 8.0)));
+ Vector3 tip1(vector3_added(vector3_added(endpoint, vector3_scaled(direction_forward, -8.0)), vector3_scaled(direction_up, -4.0)));
+ Vector3 tip2(vector3_added(tip1, vector3_scaled(direction_up, 8.0)));
+ Vector3 tip3(vector3_added(vector3_added(endpoint, vector3_scaled(direction_forward, -8.0)), vector3_scaled(direction_left, -4.0)));
+ Vector3 tip4(vector3_added(tip3, vector3_scaled(direction_left, 8.0)));
glBegin (GL_LINES);
inline void aabb_draw_wire(const Vector3 points[8])
{
- typedef std::size_t index_t;
- index_t indices[24] = {
+ unsigned int indices[26] = {
0, 1, 1, 2, 2, 3, 3, 0,
4, 5, 5, 6, 6, 7, 7, 4,
0, 4, 1, 5, 2, 6, 3, 7,
+ // 0, 6, 1, 7, 2, 4, 3, 5 // X cross
+ 1, 7 // diagonal line (connect mins to maxs corner)
};
#if 1
glVertexPointer(3, GL_FLOAT, 0, points);
- glDrawElements(GL_LINES, sizeof(indices)/sizeof(index_t), GL_UNSIGNED_INT, indices);
+ glDrawElements(GL_LINES, sizeof(indices)/sizeof(indices[0]), GL_UNSIGNED_INT, indices);
#else
glBegin(GL_LINES);
- for(std::size_t i = 0; i < sizeof(indices)/sizeof(index_t); ++i)
+ for(std::size_t i = 0; i < sizeof(indices)/sizeof(indices[0]); ++i)
{
glVertex3fv(points[indices[i]]);
}