mirror of
https://github.com/tribes2/engine.git
synced 2026-01-19 19:24:45 +00:00
151 lines
4.3 KiB
C++
151 lines
4.3 KiB
C++
//-----------------------------------------------------------------------------
|
|
// V12 Engine
|
|
//
|
|
// Copyright (c) 2001 GarageGames.Com
|
|
// Portions Copyright (c) 2001 by Sierra Online, Inc.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#include "Platform/platform.h"
|
|
#include "console/console.h"
|
|
#include "Math/mMathFn.h"
|
|
#include "Math/mRandom.h"
|
|
|
|
static const char *cSolveQuadratic(SimObject *, S32, const char **argv)
|
|
{
|
|
char * retBuffer = Con::getReturnBuffer(256);
|
|
F32 x[2];
|
|
U32 sol = mSolveQuadratic(dAtof(argv[1]), dAtof(argv[2]), dAtof(argv[3]), x);
|
|
dSprintf(retBuffer, 256, "%d %g %g", sol, x[0], x[1]);
|
|
return retBuffer;
|
|
}
|
|
|
|
static const char *cSolveCubic(SimObject *, S32, const char **argv)
|
|
{
|
|
char * retBuffer = Con::getReturnBuffer(256);
|
|
F32 x[3];
|
|
U32 sol = mSolveCubic(dAtof(argv[1]), dAtof(argv[2]), dAtof(argv[3]), dAtof(argv[4]), x);
|
|
dSprintf(retBuffer, 256, "%d %g %g %g", sol, x[0], x[1], x[2]);
|
|
return retBuffer;
|
|
}
|
|
|
|
static const char *cSolveQuartic(SimObject *, S32, const char **argv)
|
|
{
|
|
char * retBuffer = Con::getReturnBuffer(256);
|
|
F32 x[4];
|
|
U32 sol = mSolveQuartic(dAtof(argv[1]), dAtof(argv[2]), dAtof(argv[3]), dAtof(argv[4]), dAtof(argv[5]), x);
|
|
dSprintf(retBuffer, 256, "%d %g %g %g %g", sol, x[0], x[1], x[2], x[3]);
|
|
return retBuffer;
|
|
}
|
|
|
|
static S32 cFloor(SimObject *, S32, const char **argv)
|
|
{
|
|
return (S32)mFloor(dAtof(argv[1]));
|
|
}
|
|
|
|
static S32 cCeil(SimObject *, S32, const char **argv)
|
|
{
|
|
return (S32)mCeil(dAtof(argv[1]));
|
|
}
|
|
|
|
static const char * cFloatLength(SimObject *, S32, const char **argv)
|
|
{
|
|
char * outBuffer = Con::getReturnBuffer(256);
|
|
char fmtString[8] = "%.0f";
|
|
U32 precision = dAtoi(argv[2]);
|
|
if (precision > 9)
|
|
precision = 9;
|
|
fmtString[2] = '0' + precision;
|
|
|
|
dSprintf(outBuffer, 255, fmtString, dAtof(argv[1]));
|
|
return outBuffer;
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
static F32 cAbs(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mFabs(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cSqrt(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mSqrt(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cPow(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mPow(dAtof(argv[1]), dAtof(argv[2])));
|
|
}
|
|
|
|
static F32 cLog(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mLog(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cSin(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mSin(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cCos(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mCos(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cTan(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mTan(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cAsin(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mAsin(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cAcos(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mAcos(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cAtan(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mAtan(dAtof(argv[1]), dAtof(argv[2])));
|
|
}
|
|
|
|
static F32 cRadToDeg(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mRadToDeg(dAtof(argv[1])));
|
|
}
|
|
|
|
static F32 cDegToRad(SimObject *, S32, const char ** argv)
|
|
{
|
|
return(mDegToRad(dAtof(argv[1])));
|
|
}
|
|
|
|
//------------------------------------------------------------------------------
|
|
|
|
void MathConsoleInit()
|
|
{
|
|
Con::addCommand("mSolveQuadratic", cSolveQuadratic, "mSolveQuadratic(a,b,c)", 4, 4);
|
|
Con::addCommand("mSolveCubic", cSolveCubic, "mSolveCubic(a,b,c,d)", 5, 5);
|
|
Con::addCommand("mSolveQuartic", cSolveQuartic, "mSolveQuartic(a,b,c,d,e)", 6, 6);
|
|
|
|
Con::addCommand("mFloor", cFloor, "mFloor(float)", 2, 2);
|
|
Con::addCommand("mCeil", cCeil, "mCeil(float)", 2, 2);
|
|
Con::addCommand("mFloatLength", cFloatLength, "mFloatLength(float, numDecimals)", 3, 3);
|
|
|
|
//
|
|
Con::addCommand("mAbs", cAbs, "mAbs(float)", 2, 2);
|
|
Con::addCommand("mSqrt", cSqrt, "mSqrt(float)", 2, 2);
|
|
Con::addCommand("mPow", cPow, "mPow(float, float)", 3, 3);
|
|
Con::addCommand("mLog", cLog, "mLog(float)", 2, 2);
|
|
Con::addCommand("mSin", cSin, "mSin(float)", 2, 2);
|
|
Con::addCommand("mCos", cCos, "mCos(float)", 2, 2);
|
|
Con::addCommand("mTan", cTan, "mTan(float)", 2, 2);
|
|
Con::addCommand("mAsin", cAsin, "mAsin(float)", 2, 2);
|
|
Con::addCommand("mAcos", cAcos, "mAcos(float)", 2, 2);
|
|
Con::addCommand("mAtan", cAtan, "mAtan(float, float)", 3, 3);
|
|
Con::addCommand("mRadToDeg", cRadToDeg, "mRadToDeg(float)", 2, 2);
|
|
Con::addCommand("mDegToRad", cDegToRad, "mDegToRad(float)", 2, 2);
|
|
}
|