Add handling to RotationF's addRotation function to ensure formatted return

This commit is contained in:
Areloch 2021-09-28 18:17:49 -05:00
parent 8256aca65e
commit c5d5a91356
2 changed files with 19 additions and 4 deletions

View file

@ -325,14 +325,21 @@ TEST(Maths, RotationF_Calculations)
};
#endif
DefineEngineFunction(AddRotation, RotationF, (RotationF a, RotationF b), ,
DefineEngineFunction(AddRotation, RotationF, (RotationF a, RotationF b, const char* returnType), ("Euler"),
"Adds two rotations together.\n"
"@param a Rotation one."
"@param b Rotation two."
"@returns v sum of both rotations."
"@ingroup Math")
{
return a + b;
RotationF ret;
RotationF sum = a + b;
if (String(returnType) == String("Euler"))
ret.set(sum.asEulerF());
else
ret.set(sum.asAxisAngle());
return ret;
}
DefineEngineFunction(SubtractRotation, RotationF, (RotationF a, RotationF b), ,

View file

@ -620,8 +620,16 @@ ConsoleGetType(TypeRotationF)
static const U32 bufSize = 256;
char* returnBuffer = Con::getReturnBuffer(bufSize);
EulerF out = pt->asEulerF(RotationF::Degrees);
dSprintf(returnBuffer, bufSize, "%g %g %g", out.x, out.y, out.z);
if (pt->mRotationType == RotationF::Euler)
{
EulerF out = pt->asEulerF(RotationF::Degrees);
dSprintf(returnBuffer, bufSize, "%g %g %g", out.x, out.y, out.z);
}
else if (pt->mRotationType == RotationF::AxisAngle)
{
AngAxisF out = pt->asAxisAngle(RotationF::Degrees);
dSprintf(returnBuffer, bufSize, "%g %g %g %g", out.axis.x, out.axis.y, out.axis.z, out.angle);
}
return returnBuffer;
}