2017-09-19 03:59:20 +00:00
|
|
|
#include "amuse/Listener.hpp"
|
|
|
|
|
|
|
|
namespace amuse
|
|
|
|
{
|
|
|
|
|
|
|
|
static void Cross(Vector3f& out, const Vector3f& a, const Vector3f& b)
|
|
|
|
{
|
|
|
|
out[0] = a[1] * b[2] - a[2] * b[1];
|
|
|
|
out[1] = a[2] * b[0] - a[0] * b[2];
|
|
|
|
out[2] = a[0] * b[1] - a[1] * b[0];
|
|
|
|
}
|
|
|
|
|
|
|
|
void Listener::setVectors(const float* pos, const float* dir, const float* heading, const float* up)
|
|
|
|
{
|
|
|
|
for (int i=0 ; i<3 ; ++i)
|
|
|
|
{
|
|
|
|
m_pos[i] = pos[i];
|
|
|
|
m_dir[i] = dir[i];
|
|
|
|
m_heading[i] = heading[i];
|
|
|
|
m_up[i] = up[i];
|
|
|
|
}
|
2017-09-20 09:22:46 +00:00
|
|
|
|
2017-09-19 03:59:20 +00:00
|
|
|
Normalize(m_heading);
|
|
|
|
Normalize(m_up);
|
|
|
|
Cross(m_right, m_heading, m_up);
|
|
|
|
Normalize(m_right);
|
2017-09-20 09:22:46 +00:00
|
|
|
|
|
|
|
m_dirty = true;
|
2017-09-19 03:59:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|