1 Index: plugins/model/model.cpp
2 ===================================================================
3 --- plugins/model/model.cpp (revision 193)
4 +++ plugins/model/model.cpp (working copy)
7 glVertexPointer(3, GL_FLOAT, sizeof(ArbitraryMeshVertex), &m_vertices.data()->vertex);
8 glDrawElements(GL_TRIANGLES, GLsizei(m_indices.size()), RenderIndexTypeID, m_indices.data());
11 + GLfloat modelview[16];
12 + glGetFloatv(GL_MODELVIEW_MATRIX, modelview); // I know this is slow as hell, but hey - we're in _DEBUG
13 + Matrix4 modelview_inv(
14 + modelview[0], modelview[1], modelview[2], modelview[3],
15 + modelview[4], modelview[5], modelview[6], modelview[7],
16 + modelview[8], modelview[9], modelview[10], modelview[11],
17 + modelview[12], modelview[13], modelview[14], modelview[15]);
18 + matrix4_full_invert(modelview_inv);
19 + Matrix4 modelview_inv_transposed = matrix4_transposed(modelview_inv);
23 for(Array<ArbitraryMeshVertex>::const_iterator i = m_vertices.begin(); i != m_vertices.end(); ++i)
25 - Vector3 normal = vector3_added(vertex3f_to_vector3((*i).vertex), vector3_scaled(normal3f_to_vector3((*i).normal), 8));
26 + Vector3 normal = normal3f_to_vector3((*i).normal);
27 + normal = matrix4_transformed_direction(modelview_inv, vector3_normalised(matrix4_transformed_direction(modelview_inv_transposed, normal))); // do some magic
28 + Vector3 normalTransformed = vector3_added(vertex3f_to_vector3((*i).vertex), vector3_scaled(normal, 8));
29 glVertex3fv(vertex3f_to_array((*i).vertex));
30 - glVertex3fv(vector3_to_array(normal));
31 + glVertex3fv(vector3_to_array(normalTransformed));