Skip to content

Instantly share code, notes, and snippets.

@spotco
Created December 9, 2019 21:40
Show Gist options
  • Save spotco/2451d070ee0432bbcf9e4a0942e78e36 to your computer and use it in GitHub Desktop.
Save spotco/2451d070ee0432bbcf9e4a0942e78e36 to your computer and use it in GitHub Desktop.
SPTMP_DEBUG.cpp
namespace // SPTMP
{
int vasprintf(std::vector<char> &aStr, const char *pFormat, va_list ap)
{
int len = _vscprintf(pFormat, ap);
int retval = -1;
if ( len != -1 )
{
aStr.resize(len + 1);
retval = vsnprintf(aStr.data(), len + 1, pFormat, ap);
}
return retval;
}
std::string stdsprintf(const char *apFmt, ...)
{
std::vector<char> ret;
va_list ap;
va_start(ap, apFmt);
vasprintf(ret, apFmt, ap);
va_end(ap);
std::string str;
if (ret.size() > 0)
{
str = ret.data();
}
return str;
}
std::string nipoint3_to_str(const NiPoint3 &p)
{
return stdsprintf("(%.2f,%.2f,%.2f)",p.x,p.y,p.z);
}
std::string transform_to_str(const char* prefix, const NiTransform& t)
{
float ex,ey,ez;
bool orth = t.m_Rotate.ToEulerAnglesXYZ(ex,ey,ez);
float aa,ax,ay,az;
t.m_Rotate.ExtractAngleAndAxis(aa,ax,ay,az);
return stdsprintf("[%s] pos(%.5f,%.5f,%.5f) orth(%d) euler<%.5f,%.5f,%.5f> axisa[%.5f]<%.5f,%.5f,%.5f> scale(%.2f) ",
prefix,
t.m_Translate.x,t.m_Translate.y,t.m_Translate.z,
orth,
ex*RAD_TO_DEG,ey*RAD_TO_DEG,ez*RAD_TO_DEG,
aa*RAD_TO_DEG,ax,ay,az,
t.m_fScale
);
}
std::string transform_matrix(const char* prefix, const NiTransform& t)
{
XMFLOAT4 col0, col1, col2;
XMStoreFloat4(&col0, t.m_Rotate.QXMCol(0));
XMStoreFloat4(&col1, t.m_Rotate.QXMCol(1));
XMStoreFloat4(&col2, t.m_Rotate.QXMCol(2));
XMFLOAT4 translateScale;
XMStoreFloat4(&translateScale, t.QTranslateScale());
return stdsprintf("NiTransform[%s] Scale(%.5f)\n<%.2f,%.2f,%.2f,%.2f>\n<%.2f,%.2f,%.2f,%.2f>\n<%.2f,%.2f,%.2f,%.2f>\n<%.2f,%.2f,%.2f,%.2f>\n",
prefix, translateScale.w,
col0.x, col1.x, col2.x, translateScale.x,
col0.w, col1.y, col2.y, translateScale.y,
col0.z, col1.z, col2.z, translateScale.z,
col0.w, col1.w, col2.w, translateScale.w
);
}
std::string xmmatrix_matrix(char* prefix, const XMMATRIX &input)
{
XMFLOAT4 col0, col1, col2, translateScale;
XMStoreFloat4(&col0, input.r[0]);
XMStoreFloat4(&col1, input.r[1]);
XMStoreFloat4(&col2, input.r[2]);
XMStoreFloat4(&translateScale, input.r[3]);
float col0Scale = sqrt(col0.x * col0.x + col0.y * col0.y + col0.z * col0.z);
float col1Scale = sqrt(col1.x * col1.x + col1.y * col1.y + col1.z * col1.z);
float col2Scale = sqrt(col2.x * col2.x + col2.y * col2.y + col2.z * col2.z);
return stdsprintf("XMMATRIX[%s] Scale(%.5f,%.5f,%.5f)\n<%.2f,%.2f,%.2f,%.2f>\n<%.2f,%.2f,%.2f,%.2f>\n<%.2f,%.2f,%.2f,%.2f>\n<%.2f,%.2f,%.2f,%.2f>\n",
prefix, col0Scale, col1Scale, col2Scale,
col0.x, col1.x, col2.x, translateScale.x,
col0.y, col1.y, col2.y, translateScale.y,
col0.z, col1.z, col2.z, translateScale.z,
col0.w, col1.w, col2.w, translateScale.w
);
}
void sptmp_print(std::string msg)
{
for (uint32_t i = 0; i < msg.size(); i+= 1024)
{
std::string buf = msg.substr(i, 1024);
OutputDebugStringA(buf.c_str());
}
}
}
// --- END SPTMP
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment