Merge pull request #599 from Areloch/FormattedAddRotation

Add handling to RotationF's addRotation function to ensure formatted return
This commit is contained in:
Brian Roberts 2021-10-03 17:06:48 -05:00 committed by GitHub
commit 91b192f163
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
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;
}