Как можно создать такую вкладку?
ImGui::CollapsingHeader(const char* label);
Это конечно все не точно, но может тебе даст направлениеКак изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)
Уп
// get player matrix
CMatrix matPed;
pPedSelf->GetMatrix(&matPed);
// tilt player upright
CVector rotationAxis = g_vecUpNormal;
rotationAxis.CrossProduct( &matPed.vUp );
float theta = ( matPed.vUp.DotProduct( &g_vecUpNormal ) );
if ( !near_zero(theta) )
{
matPed = matPed.Rotate( &rotationAxis, cos(theta) );
// normalize everything
matPed.vFront.Normalize();
matPed.vRight.Normalize();
matPed.vUp.Normalize();
// zero near zero
matPed.vFront.ZeroNearZero();
matPed.vRight.ZeroNearZero();
matPed.vUp.ZeroNearZero();
// set player matrix
pPedSelf->SetMatrix(&matPed);
CMatrix Rotate ( const CVector * param, float theta )
{
// Rotate the rotation matrix
double sin_t = sinf( theta ), cos_t = cosf( theta );
CMatrix mRotateMult;
// rotate X
mRotateMult.vRight.fX = (double) cos_t + ( 1.0f - cos_t ) * param->fX * param->fX;
mRotateMult.vRight.fY = (double) ( 1.0f - cos_t ) * param->fX * param->fY - sin_t * param->fZ;
mRotateMult.vRight.fZ = (double) ( 1.0f - cos_t ) * param->fX * param->fZ + sin_t * param->fY;
// rotate Y
mRotateMult.vFront.fX = (double) ( 1.0f - cos_t ) * param->fY * param->fX + sin_t * param->fZ;
mRotateMult.vFront.fY = (double) cos_t + ( 1.0f - cos_t ) * param->fY * param->fY;
mRotateMult.vFront.fZ = (double) ( 1.0f - cos_t ) * param->fY * param->fZ - sin_t * param->fX;
// rotate Z
mRotateMult.vUp.fX = (double) ( 1.0f - cos_t ) * param->fZ * param->fX - sin_t * param->fY;
mRotateMult.vUp.fY = (double) ( 1.0f - cos_t ) * param->fZ * param->fY + sin_t * param->fX;
mRotateMult.vUp.fZ = (double) cos_t + ( 1.0f - cos_t ) * param->fZ * param->fZ;
// multiply matrix
mRotateMult = mRotateMult * (*this);
// set vectors
mRotateMult.vPos = vPos;
// return
return mRotateMult;
}
Примерно даЭто конечно все не точно, но может тебе даст направление
Код:// get player matrix CMatrix matPed; pPedSelf->GetMatrix(&matPed); // tilt player upright CVector rotationAxis = g_vecUpNormal; rotationAxis.CrossProduct( &matPed.vUp ); float theta = ( matPed.vUp.DotProduct( &g_vecUpNormal ) ); if ( !near_zero(theta) ) { matPed = matPed.Rotate( &rotationAxis, cos(theta) ); // normalize everything matPed.vFront.Normalize(); matPed.vRight.Normalize(); matPed.vUp.Normalize(); // zero near zero matPed.vFront.ZeroNearZero(); matPed.vRight.ZeroNearZero(); matPed.vUp.ZeroNearZero(); // set player matrix pPedSelf->SetMatrix(&matPed);
Код:CMatrix Rotate ( const CVector * param, float theta ) { // Rotate the rotation matrix double sin_t = sinf( theta ), cos_t = cosf( theta ); CMatrix mRotateMult; // rotate X mRotateMult.vRight.fX = (double) cos_t + ( 1.0f - cos_t ) * param->fX * param->fX; mRotateMult.vRight.fY = (double) ( 1.0f - cos_t ) * param->fX * param->fY - sin_t * param->fZ; mRotateMult.vRight.fZ = (double) ( 1.0f - cos_t ) * param->fX * param->fZ + sin_t * param->fY; // rotate Y mRotateMult.vFront.fX = (double) ( 1.0f - cos_t ) * param->fY * param->fX + sin_t * param->fZ; mRotateMult.vFront.fY = (double) cos_t + ( 1.0f - cos_t ) * param->fY * param->fY; mRotateMult.vFront.fZ = (double) ( 1.0f - cos_t ) * param->fY * param->fZ - sin_t * param->fX; // rotate Z mRotateMult.vUp.fX = (double) ( 1.0f - cos_t ) * param->fZ * param->fX - sin_t * param->fY; mRotateMult.vUp.fY = (double) ( 1.0f - cos_t ) * param->fZ * param->fY + sin_t * param->fX; mRotateMult.vUp.fZ = (double) cos_t + ( 1.0f - cos_t ) * param->fZ * param->fZ; // multiply matrix mRotateMult = mRotateMult * (*this); // set vectors mRotateMult.vPos = vPos; // return return mRotateMult; }
Попробуй еще сам поковыряться в сурсах собейта. По сути можно найти функцию которая срабатывает на Backspace. Она разворачивает кар на 180 градусов. Видимо тебя это интересует
по какой из осей?Как изменить направление вектора по градусам? CVector
чтобы было примерно так
rotate_vec(Vector, 45)
Уп
право-лево, в сампе это вроде Xпо какой из осей?
ImGui::Columns(2,"name(любое)",false)ой, не правильно сформулировал вопрос, как сделать так, чтоб чекбоксы были в 2 столбика?
Вот тебе функция гонщика, вращающая XYправо-лево, в сампе это вроде X
А ваще, надо весь вектор повернуть
тебе надо tostring? to_string - C++ Reference(http://www.cplusplus.com/reference/string/to_string/)Как правильно числа записывать в const char *? Не совсем понимаю, а загуглить правильно не выходит
ImGui::Selectable(std::to_string(i), selected);
std::to_string(i).c_str()ImGui::Selectable(std::to_string(i), selected);
хмхмхм