|
| 1 | +#include "stdafx.h" |
| 2 | +#include "overlay_ps_move_debug.h" |
| 3 | + |
| 4 | +namespace rsx |
| 5 | +{ |
| 6 | + namespace overlays |
| 7 | + { |
| 8 | + ps_move_debug_overlay::ps_move_debug_overlay() |
| 9 | + { |
| 10 | + m_frame.set_pos(0, 0); |
| 11 | + m_frame.set_size(300, 300); |
| 12 | + m_frame.back_color.r = 0.0f; |
| 13 | + m_frame.back_color.g = 0.0f; |
| 14 | + m_frame.back_color.b = 0.0f; |
| 15 | + m_frame.back_color.a = 1.0f; |
| 16 | + |
| 17 | + m_text_view.set_pos(10, 10); |
| 18 | + m_text_view.set_padding(0, 0, 0, 0); |
| 19 | + m_text_view.set_font("n023055ms.ttf", 6); |
| 20 | + m_text_view.align_text(overlay_element::text_align::left); |
| 21 | + m_text_view.fore_color = { 0.3f, 1.f, 0.3f, 1.f }; |
| 22 | + m_text_view.back_color.a = 0.f; |
| 23 | + } |
| 24 | + |
| 25 | + compiled_resource ps_move_debug_overlay::get_compiled() |
| 26 | + { |
| 27 | + if (!visible) |
| 28 | + { |
| 29 | + return {}; |
| 30 | + } |
| 31 | + |
| 32 | + auto result = m_frame.get_compiled(); |
| 33 | + result.add(m_text_view.get_compiled()); |
| 34 | + |
| 35 | + // Move cylinder so its center is at origin |
| 36 | + //glTranslatef(0, 0, 0.5f); |
| 37 | + |
| 38 | + // Apply quaternion rotation |
| 39 | + //QMatrix4x4 model; |
| 40 | + //model.rotate(QQuaternion(m_quaternion[3], m_quaternion[0], m_quaternion[1], m_quaternion[2])); |
| 41 | + //glMultMatrixf(model.constData()); |
| 42 | + |
| 43 | + // Move back to original position |
| 44 | + //glTranslatef(0, 0, -0.5f); |
| 45 | + |
| 46 | + // Draw controller body |
| 47 | + //glColor3ub(200, 200, 200); |
| 48 | + //drawCylinder(0.2f, 0.8f, 32); |
| 49 | + |
| 50 | + // Draw front sphere |
| 51 | + //glColor3f(m_rgb[0], m_rgb[1], m_rgb[2]); |
| 52 | + //glPushMatrix(); |
| 53 | + //glTranslatef(0, 0, 0.8f); // move to front |
| 54 | + //drawSphere(0.3f, 32, 32); |
| 55 | + //glPopMatrix(); |
| 56 | + |
| 57 | + // Draw button |
| 58 | + //glColor3ub(0, 0, 200); |
| 59 | + //glPushMatrix(); |
| 60 | + //glTranslatef(0, 0.2f, 0.4f); // slightly in front of the sphere |
| 61 | + //drawButton(0.08f, 0.05f, 16); |
| 62 | + //glPopMatrix(); |
| 63 | + |
| 64 | + return result; |
| 65 | + } |
| 66 | + |
| 67 | + void ps_move_debug_overlay::show(const ps_move_data& md, f32 r, f32 g, f32 b, f32 q0, f32 q1, f32 q2, f32 q3) |
| 68 | + { |
| 69 | + visible = true; |
| 70 | + |
| 71 | + if (m_rgb[0] == r && m_rgb[1] == g && m_rgb[2] == b && |
| 72 | + m_quaternion[0] == q0 && m_quaternion[1] == q1 && m_quaternion[2] == q2 && m_quaternion[3] == q3 && |
| 73 | + std::memcmp(static_cast<const void*>(&md), static_cast<const void*>(&m_move_data), sizeof(ps_move_data)) == 0) |
| 74 | + { |
| 75 | + return; |
| 76 | + } |
| 77 | + |
| 78 | + m_move_data = md; |
| 79 | + m_rgb = { r, g, b }; |
| 80 | + m_quaternion = { q0, q1, q2, q3 }; |
| 81 | + |
| 82 | + m_text_view.set_text(fmt::format( |
| 83 | + "> Quat X: %6.2f Gyro X: %6.2f Accel X: %6.2f Mag X: %6.2f\n" |
| 84 | + "> Quat Y: %6.2f Gyro Y: %6.2f Accel Y: %6.2f Mag Y: %6.2f\n" |
| 85 | + "> Quat Z: %6.2f Gyro Z: %6.2f Accel Z: %6.2f Mag Z: %6.2f\n" |
| 86 | + "> Quat W: %6.2f\n\n" |
| 87 | + "> World\n" |
| 88 | + "> Vel X: %9.2f\n" |
| 89 | + "> Vel Y: %9.2f\n" |
| 90 | + "> Vel Z: %9.2f\n" |
| 91 | + "> Acc X: %9.2f\n" |
| 92 | + "> Acc Y: %9.2f\n" |
| 93 | + "> Acc Z: %9.2f\n" |
| 94 | + "> AngVel X: %9.2f\n" |
| 95 | + "> AngVel Y: %9.2f\n" |
| 96 | + "> AngVel Z: %9.2f\n" |
| 97 | + "> AngAcc X: %9.2f\n" |
| 98 | + "> AngAcc Y: %9.2f\n" |
| 99 | + "> AngAcc Z: %9.2f" |
| 100 | + , |
| 101 | + m_quaternion[0], md.gyro[0], md.accelerometer[0], md.magnetometer[0], |
| 102 | + m_quaternion[1], md.gyro[1], md.accelerometer[1], md.magnetometer[1], |
| 103 | + m_quaternion[2], md.gyro[2], md.accelerometer[2], md.magnetometer[2], |
| 104 | + m_quaternion[3], |
| 105 | + md.vel_world[0], |
| 106 | + md.vel_world[1], |
| 107 | + md.vel_world[2], |
| 108 | + md.accel_world[0], |
| 109 | + md.accel_world[1], |
| 110 | + md.accel_world[2], |
| 111 | + md.angvel_world[0], |
| 112 | + md.angvel_world[1], |
| 113 | + md.angvel_world[2], |
| 114 | + md.angaccel_world[0], |
| 115 | + md.angaccel_world[1], |
| 116 | + md.angaccel_world[2] |
| 117 | + )); |
| 118 | + m_text_view.auto_resize(); |
| 119 | + |
| 120 | + refresh(); |
| 121 | + } |
| 122 | + } // namespace overlays |
| 123 | +} // namespace rsx |
0 commit comments