Warning: you were redirected to the latest documentation corresponding to your major release ( 2022.1.16.8522 ). Should you wish to access your specific version's documentation, please download the offline documentation from the Audiokinetic Launcher and check the Offline Documentation option in Wwise Authoring.
Go to the documentation of this file.
46Â
#define AKVECTORS_PI (3.1415926535897932384626433832795f)
47Â
#define AKVECTORS_TWOPI (6.283185307179586476925286766559f)
48Â
#define AKVECTORS_PIOVERTWO (1.5707963267948966192313216916398f)
49Â
#define AKVECTORS_EPSILON (1.0e-38f) // epsilon value for fast log(0)
98Â p.
v[0] =
v[0] - b.
v[0];
99Â p.
v[1] =
v[1] - b.
v[1];
100Â p.
v[2] =
v[2] - b.
v[2];
101Â p.
v[3] =
v[3] - b.
v[3];
147Â
return !(((*(
AkUInt32*)&in_val) & 0x7fffffff) >= 0x7f800000);
150Â
static constexpr
AkReal32 POSITIVE_EPSILON = 0.00001f;
167Â
return !(((*(
AkUInt64*)&in_val) & 0x7fffffffffffffff) >= 0x7ff0000000000000);
170Â
static constexpr
AkReal64 POSITIVE_EPSILON = 0.000000000001f;
182Â
template<
typename TFromReal,
typename TToReal>
185Â out_to =
static_cast<TToReal
>(in_from);
199Â
template<
typename TReal>
209Â
template<
typename TDataType>
226Â
X(static_cast<TDataType>(0.0)),
227Â
Y(static_cast<TDataType>(0.0)),
228Â
Z(static_cast<TDataType>(0.0))
231Â
T3DVector(TDataType in_x, TDataType in_y, TDataType in_z) :
239Â
template<
typename TFromDataType>
291Â
template<
typename TVectorType>
331Â
X =
static_cast<TDataType
>(0.0);
332Â
Y =
static_cast<TDataType
>(0.0);
333Â
Z =
static_cast<TDataType
>(0.0);
340Â
return X == b.
X &&
Y == b.
Y &&
Z == b.
Z;
345Â
return X != b.
X ||
Y != b.
Y ||
Z != b.
Z;
350Â
return X < b.
X &&
Y < b.
Y &&
Z < b.
Z;
355Â
return X <= b.
X &&
Y <= b.
Y &&
Z <= b.
Z;
360Â
return X > b.
X &&
Y > b.
Y &&
Z > b.
Z;
365Â
return X >= b.
X &&
Y >= b.
Y &&
Z >= b.
Z;
379Â TDataType oneoverf =
static_cast<TDataType
>(1.0) / f;
424Â TDataType oneoverf =
static_cast<TDataType
>(1.0) / f;
523Â
const TDataType azimuth,
524Â
const TDataType elevation)
540Â
return (a.
X*b.
Y*c.
Z + a.
Y*b.
Z*c.
X + a.
Z*b.
X*c.
Y) -
541Â (a.
Z*b.
Y*c.
X + a.
Y*b.
X*c.
Z + a.
X*b.
Z*c.
Y);
556Â v.
X =
static_cast<TDataType
>(0.0); v.
Y =
static_cast<TDataType
>(0.0); v.
Z =
static_cast<TDataType
>(0.0);
565Â TDataType oneover_d =
static_cast<TDataType
>(1.0) / d;
571Â v.
X =
X * invA.
X +
Y * invB.
X +
Z * invC.
X;
572Â v.
Y =
X * invA.
Y +
Y * invB.
Y +
Z * invC.
Y;
573Â v.
Z =
X * invA.
Z +
Y * invB.
Z +
Z * invC.
Z;
583Â
if (l !=
static_cast<TDataType
>(0.0))
591Â
X =
static_cast<TDataType
>(0.0);
592Â
Y =
static_cast<TDataType
>(0.0);
593Â
Z =
static_cast<TDataType
>(0.0);
605Â
return X*v2.
X +
Y*v2.
Y +
Z*v2.
Z;
619Â uxv.
X = u.
Y*v.
Z - u.
Z*v.
Y;
620Â uxv.
Y = u.
Z*v.
X - u.
X*v.
Z;
621Â uxv.
Z = u.
X*v.
Y - u.
Y*v.
X;
647Â abs.
X = (TDataType)fabs(abs.
X);
648Â abs.
Y = (TDataType)fabs(abs.
Y);
649Â abs.
Z = (TDataType)fabs(abs.
Z);
666Â
template<
typename TDataType>
672Â
template<
typename TDataType>
695Â
template<
typename TDataType>
696Â
template<
typename TVectorType>
700Â v.X =
static_cast<typename TVectorType::data_type
>(X);
701Â v.Y =
static_cast<typename TVectorType::data_type
>(Y);
702Â v.Z =
static_cast<typename TVectorType::data_type
>(Z);
767Â
return b.
X ==
X && b.
Y ==
Y;
772Â
return b.
X !=
X && b.
Y !=
Y;
777Â
return sqrtf(
X*
X+
Y*
Y);
785Â
AkReal32 r = sqrtf( in_Cartesian.
X*in_Cartesian.
X + in_Cartesian.
Y*in_Cartesian.
Y + in_Cartesian.
Z*in_Cartesian.
Z);
788Â
X = atan2f(in_Cartesian.
Y, in_Cartesian.
X);
789Â
Y = asinf(in_Cartesian.
Z / r);
807Â v.
X = 0.0f; v.
Y = 0.0f;
818Â v.
X =
X * invA.
X +
Y * invB.
X;
819Â v.
Y =
X * invA.
Y +
Y * invB.
Y;
876Â
const AkReal32 POSITIVE_TEST_EPSILON = 0.00001f;
877Â
return X >= -POSITIVE_TEST_EPSILON &&
878Â
Y >= -POSITIVE_TEST_EPSILON;
889Â
static const int MAX_SIZE = 16;
900Â
for (
int i = 0; i < MAX_SIZE; i++)
908Â
for (
int i = 0; i < MAX_SIZE; i++)
931Â m(0, 0) = in_col0.
X;
932Â m(1, 0) = in_col0.
Y;
933Â m(2, 0) = in_col0.
Z;
935Â m(0, 1) = in_col1.
X;
936Â m(1, 1) = in_col1.
Y;
937Â m(2, 1) = in_col1.
Z;
939Â m(0, 2) = in_col2.
X;
940Â m(1, 2) = in_col2.
Y;
941Â m(2, 2) = in_col2.
Z;
950Â
for (
int i = 0; i < 3; i++)
952Â
for (
int j = 0; j < 3; j++)
962Â
return m_Data[column][row];
967Â
return m_Data[column][row];
981Â
Add(*
this, *
this, in_rhs);
987Â
#define ADD(i,j) out_res(i,j) = in_m0(i,j) + in_m1(i,j)
1004Â out_mat(0, 0) = in_f; out_mat(0, 1) = 0.f; out_mat(0, 2) = 0.f;
1005Â out_mat(1, 0) = 0.f; out_mat(1, 1) = in_f; out_mat(1, 2) = 0.f;
1006Â out_mat(2, 0) = 0.f; out_mat(2, 1) = 0.f; out_mat(2, 2) = in_f;
1012Â out_mat(0, 0) = 0.f; out_mat(0, 1) = -in_u.
Z; out_mat(0, 2) = in_u.
Y;
1013Â out_mat(1, 0) = in_u.
Z; out_mat(1, 1) = 0.f; out_mat(1, 2) = -in_u.
X;
1014Â out_mat(2, 0) = -in_u.
Y; out_mat(2, 1) = in_u.
X; out_mat(2, 2) = 0.f;
1019Â out_mat(0, 0) = in_v0.
X*in_v1.
X; out_mat(0, 1) = in_v0.
X*in_v1.
Y; out_mat(0, 2) = in_v0.
X*in_v1.
Z;
1020Â out_mat(1, 0) = in_v0.
Y*in_v1.
X; out_mat(1, 1) = in_v0.
Y*in_v1.
Y; out_mat(1, 2) = in_v0.
Y*in_v1.
Z;
1021Â out_mat(2, 0) = in_v0.
Z*in_v1.
X; out_mat(2, 1) = in_v0.
Z*in_v1.
Y; out_mat(2, 2) = in_v0.
Z*in_v1.
Z;
1026Â
Rotation(out_mat, sinf(in_angle), cosf(in_angle), in_axis);
1035Â outer *= (1.f - in_cos);
1065Â
AkReal32 trace = in_mat(0,0) + in_mat(1, 1) + in_mat(2, 2);
1068Â
AkReal32 srt = sqrtf(trace + 1.f);
1072Â q.
X = (in_mat(2, 1) - in_mat(1, 2)) * s;
1073Â q.
Y = (in_mat(0, 2) - in_mat(2, 0)) * s;
1074Â q.
Z = (in_mat(1, 0) - in_mat(0, 1)) * s;
1081Â
if (in_mat(1, 1) > in_mat(0, 0))
1083Â
if (in_mat(2, 2) > in_mat(i, i))
1089Â
AkReal32 s = sqrtf( in_mat(i, i) - in_mat(j, j) - in_mat(k, k) + 1.0f );
1090Â
AkReal32 t = (s == 0.f) ? 0.f : (0.5f / s);
1095Â qt[j] = (in_mat(j, i) + in_mat(i, j)) * t;
1096Â qt[k] = (in_mat(k, i) + in_mat(i, k)) * t;
1097Â qt[3] = (in_mat(k, j) - in_mat(j, k)) * t;
1123Â q.
W = cr * cp * cy + sr * sp * sy;
1124Â q.
X = sr * cp * cy - cr * sp * sy;
1125Â q.
Y = cr * sp * cy + sr * cp * sy;
1126Â q.
Z = cr * cp * sy - sr * sp * cy;
1135Â
AkReal32 sa = sinf(in_angle / 2.f);
1136Â q.
W = cosf(in_angle / 2.f);
1137Â q.
X = in_axis.
X * sa;
1138Â q.
Y = in_axis.
Y * sa;
1139Â q.
Z = in_axis.
Z * sa;
1146Â
return sqrtf(
W*
W +
X*
X +
Y*
Y +
Z*
Z );
1197Â
AkReal32 sqrt = sqrtf((1.f + dot) * 2.f);
1202Â
X = cross.
X * invs;
1203Â
Y = cross.
Y * invs;
1204Â
Z = cross.
Z * invs;
1213Â
AkReal32 cosHalfAngle = cosf(in_angle / 2.f);
1215Â
X = cosHalfAngle*in_axis.
X;
1216Â
Y = cosHalfAngle*in_axis.
Y;
1217Â
Z = cosHalfAngle*in_axis.
Z;
1251Â u * u.
Dot(in_v) * 2.f
1252Â + in_v * (
W *
W - u.
Dot(u))
1253Â + u.
Cross(in_v) *
W * 2.0f;
1282Â
mint(1.175494351e-38F),
1283Â
maxt(3.402823466e+38F)
1290Â
mint(1.175494351e-38F),
1291Â
maxt(3.402823466e+38F)
1335Â
AkReal32 distsqrd = ((P2 + V2*s) - (P1 + V1*t)).LengthSquared();
1338Â && distsqrd < 0.001
1341Â
#ifdef AKPORTALS_DEBUG
1360Â
#ifdef AKPORTALS_DEBUG
1396Â
AKASSERT(in_p1.
X < 100000 && in_p1.
X > -100000);
1397Â
AKASSERT(in_p1.
Y < 100000 && in_p1.
Y > -100000);
1398Â
AKASSERT(in_p1.
Z < 100000 && in_p1.
Z > -100000);
1400Â
AKASSERT(in_p2.
X < 100000 && in_p2.
X > -100000);
1401Â
AKASSERT(in_p2.
Y < 100000 && in_p2.
Y > -100000);
1402Â
AKASSERT(in_p2.
Z < 100000 && in_p2.
Z > -100000);
1404Â
AKASSERT(in_p4.
X < 100000 && in_p4.
X > -100000);
1405Â
AKASSERT(in_p4.
Y < 100000 && in_p4.
Y > -100000);
1406Â
AKASSERT(in_p4.
Z < 100000 && in_p4.
Z > -100000);
1416Â D = -(N.
X*p1.
X) - (N.
Y*p1.
Y) - (N.
Z*p1.
Z);
1419Â
#define EPSILON 0.01f
1430Â
Ak3DVector ray = in_Destination - in_Origin;
1440Â
if (dot < EPSILON && dot > -
EPSILON)
1442Â intersect = in_Origin;
1447Â out_Intersection = p1;
1460Â
if ((A*ray.
X + B*ray.
Y + C*ray.
Z) == 0.0f)
1463Â
AkReal32 t = -(A*in_Origin.X + B*in_Origin.Y + C*in_Origin.Z + D) / (A*ray.
X + B*ray.
Y + C*ray.
Z);
1464Â intersect =
Ak3DVector(in_Origin.X + ray.
X*t, in_Origin.Y + ray.
Y*t, in_Origin.Z + ray.
Z*t);
1465Â out_Intersection = intersect;
1471Â
AkReal32 t = -(A*in_Origin.X + B*in_Origin.Y + C*in_Origin.Z + D) / (A*ray.
X + B*ray.
Y + C*ray.
Z);
1474Â
if (t < -EPSILON || t >(rayLength +
EPSILON))
1477Â intersect =
Ak3DVector(in_Origin.X + ray.
X*t, in_Origin.Y + ray.
Y*t, in_Origin.Z + ray.
Z*t);
1478Â out_Intersection = intersect;
1483Â intersect =
Ak3DVector(in_Origin.X + ray.
X*t, in_Origin.Y + ray.
Y*t, in_Origin.Z + ray.
Z*t);
1512Â out_Intersection = intersect;
1524Â pointToPlane *= distance;
1526Â out_B = in_P + pointToPlane;
1550Â out_mat[0] = 1 - 2 * N.
X*N.
X; out_mat[1] = -2 * N.
X*N.
Y; out_mat[2] = -2 * N.
X*N.
Z; out_mat[3] = -2 * N.
X*d;
1551Â out_mat[0 + 4] = -2 * N.
X*N.
Y; out_mat[1 + 4] = 1 - 2 * N.
Y*N.
Y; out_mat[2 + 4] = -2 * N.
Y*N.
Z; out_mat[3 + 4] = -2 * N.
Y*d;
1552Â out_mat[0 + 8] = -2 * N.
X*N.
Z; out_mat[1 + 8] = -2 * N.
Y*N.
Z; out_mat[2 + 8] = 1 - 2 * N.
Z*N.
Z; out_mat[3 + 8] = -2 * N.
Z*d;
1553Â out_mat[0 + 12] = 0; out_mat[1 + 12] = 0; out_mat[2 + 12] = 0; out_mat[3 + 12] = 1;
1563Â out_Intrs.
count = 0;
1575Â
if (L.
Length() < 0.001f)
1606Â point.
Y = (N1.
Z*D2 - N2.
Z*D1) / L.
X;
1607Â point.
Z = (N2.
Y*D1 - N1.
Y*D2) / L.
X;
1611Â point.
X = (N1.
Z*D2 - N2.
Z*D1) / L.
Y;
1613Â point.
Z = (N2.
X*D1 - N1.
X*D2) / L.
Y;
1617Â point.
X = (N1.
Y*D2 - N2.
Y*D1) / L.
Z;
1618Â point.
Y = (N2.
X*D1 - N1.
X*D2) / L.
Z;
1637Â
#ifdef AKPORTALS_DEBUG
1661Â
#ifdef AKPORTALS_DEBUG
1673Â
if (cpt < 2 || cpt2 < 2)
1675Â
#ifdef AKPORTALS_DEBUG
1687Â
#ifdef AKPORTALS_DEBUG
1704Â out_Intrs.
points[0] = minPoint;
1705Â out_Intrs.
points[1] = maxPoint;
1706Â out_Intrs.
count = 2;
1755Â
template<
typename TReal>
1793Â
return in_Point >=
m_Min && in_Point <=
m_Max;
1847Â
AKASSERT(fabs(in_Front.
Dot(in_Up) - 0.f) < 0.001);
1849Â m_Center = in_center;
1850Â m_Extent = in_extent;
1854Â m_X = m_Z.
Cross(m_Y);
1860Â
return fabs(pt.
Dot(m_X)) <= m_Extent.
X && fabs(pt.
Dot(m_Y)) <= m_Extent.
Y && fabs(pt.
Dot(m_Z)) <= m_Extent.
Z;
1877Â
return size.
X * size.
Y * size.
Z;
1882Â
const AkBox& B)
const
1885Â
const AkBox& A = *
this;
1916Â
AkReal32 right = dpax + dpay + dpaz + dpbx + dpby + dpbz;
1918Â
return left > right;
1924Â out_aabb.
Update(m_Center + x);
1925Â out_aabb.
Update(m_Center - x);
1927Â out_aabb.
Update(m_Center + y);
1928Â out_aabb.
Update(m_Center - y);
1930Â out_aabb.
Update(m_Center + Z);
1931Â out_aabb.
Update(m_Center - Z);
AkMatrix3x3 & operator/=(const AkReal32 f)
AkForceInline T3DVector & operator*=(const TDataType f)
AkForceInline AkQuaternion & Normalize()
T3DVector< AkReal32 > Ak3DVector
bool FindIntersectionPoints(const AkPlane &in_PlaneB, AkIntersectionPoints &out_Intrs) const
T3DVector(const AkVector &in_vector)
AkReal32 DistPoint_to_Plane(Ak3DVector in_P, Ak3DVector &out_B) const
T3DVector(TDataType in_x, TDataType in_y, TDataType in_z)
AkForceInline T3DVector Abs() const
static AkReal64 ACos(AkReal64 in_value)
AkForceInline bool operator==(const T3DVector &b) const
AkForceInline bool IsWithin(const TBoundingBox &in_BB) const
AkForceInline Ak2DVector operator=(const Ak2DVector &b)
TBoundingBox< AkReal32 > AkBoundingBox
T3DVector< AkReal64 > Ak3DVector64
Ak3DVector PointAt(AkReal32 t) const
bool Intersect(Ak3DVector A, Ak3DVector B)
Ak4DVector operator-(const Ak4DVector &b) const
bool SeparatingAxisExists(const Ak3DVector &L, const AkBox &B) const
AkSafeConversion TTypeConverter
bool IsPointInBox(const Ak3DVector &in_Point) const
static AkReal64 Cos(AkReal64 in_value)
static bool IsFinite(AkReal64 in_val)
AkForceInline AkQuaternion Inverse() const
AkForceInline AkQuaternion operator*(const AkQuaternion &Q) const
Quaternion multiplication.
Ak4DVector & operator/=(const AkReal32 f)
Ak3DIntVector(AkInt32 x, AkInt32 y, AkInt32 z)
static AkQuaternion FromRotationMatrix(const AkMatrix3x3 &in_mat)
void SetPlane(Ak3DVector in_p1, Ak3DVector in_p2, Ak3DVector in_p4)
void OutputDebugMsg(const char *in_pszMsg)
Output a debug message on the console (Ansi string)
static AkForceInline void Diagonal(AkMatrix3x3 &out_mat, AkReal32 in_f)
T3DVector(TDataType in_scalar)
AkForceInline bool IsEmpty() const
T3DVector< AkReal32 > Ak3DVector32
static void Rotation(AkMatrix3x3 &out_mat, AkReal32 in_sin, AkReal32 in_cos, const Ak3DVector &in_axis)
AkForceInline bool operator==(const Ak2DVector &b) const
uint8_t AkUInt8
Unsigned 8-bit integer.
void UpdateBoundingBox(AkBoundingBox &out_aabb) const
static AkReal64 Sqrt(AkReal64 in_value)
Ak3DVector GetCenter() const
static AkForceInline TDataType Determinant(const T3DVector &a, const T3DVector &b, const T3DVector &c)
float AkReal32
32-bit floating point
Ak2DVector & operator/=(const AkReal32 f)
AkForceInline T3DVector LinearCombination(const T3DVector &A, const T3DVector &B, const T3DVector &C) const
static AkReal32 Sqrt(AkReal32 in_value)
int32_t AkInt32
Signed 32-bit integer.
static AkMatrix3x3 FromColumnVectors(const Ak3DVector &in_col0, const Ak3DVector &in_col1, const Ak3DVector &in_col2)
TBoundingBox Intersect(const TBoundingBox &in_BB) const
AkForceInline TDataType DotProduct(const T3DVector &v2) const
AkForceInline T3DVector operator-(const T3DVector &b) const
AkForceInline T3DVector & operator/=(const TDataType f)
AkForceInline T3DVector operator*(const T3DVector v2) const
#define AKVECTORS_PIOVERTWO
AkForceInline bool IsFinite() const
Ak4DVector & operator=(const Ak4DVector &b)
AkForceInline bool operator!=(const Ak2DVector &b) const
AkForceInline void Convert(AkReal64 &out_to, AkReal32 in_from)
AkForceInline bool IsAllPositive() const
AkForceInline AkReal32 Length() const
Ak3DVector GetSide() const
Ak2DVector(AkReal32 x, AkReal32 y)
static AkReal64 Sin(AkReal64 in_value)
AkForceInline AkMatrix3x3 & operator*=(const AkReal32 &in_f)
AkMatrix4x4 & operator=(AkReal32 *in_Data)
void Update(const TVectorType &in_point)
static AkQuaternion FromAngleAndAxis(AkReal32 in_angle, const Ak3DVector &in_axis)
AkForceInline TDataType LengthSquared() const
AkReal32 GetVolume() const
AkForceInline TDataType Dot(const T3DVector &v2) const
AkForceInline bool operator!=(const T3DVector &b) const
Ak2DVector operator-(const Ak2DVector &b) const
#define AKSIMD_GETELEMENT_V4F32(__vName, __num__)
Get the element at index num in vector __vName.
AkReal32 m_Data[MAX_SIZE]
AkForceInline T3DVector operator+(const TDataType f) const
AkForceInline T3DVector< TDataType > operator*(const TDataType f, const T3DVector< TDataType > &v)
#define AKASSERT(Condition)
AkForceInline T3DVector operator-(const TDataType f) const
static AkForceInline T3DVector Min(const T3DVector &A, const T3DVector &B)
AkForceInline T3DVector SphericalToCartesian(const TDataType azimuth, const TDataType elevation)
AkForceInline AKSIMD_V4F32 PointV4F32() const
static AkForceInline void OuterProduct(AkMatrix3x3 &out_mat, const Ak3DVector &in_v0, const Ak3DVector &in_v1)
AkForceInline void Convert(TReal &out_to, TReal in_from)
Ak3DVector GetFront() const
AkForceInline T3DVector operator+(const T3DVector &b) const
static AkForceInline void Add(AkMatrix3x3 &out_res, const AkMatrix3x3 &in_m0, const AkMatrix3x3 &in_m1)
AkMatrix4x4 & operator/=(const AkReal32 f)
TBoundingBox< AkReal64 > AkBoundingBox64
AkForceInline Ak3DVector UnrotateVector(const Ak3DVector32 &in_v) const
AkForceInline AkReal32 & operator()(const AkUInt32 row, const AkUInt32 column)
AkQuaternion(AkReal32 in_angle, const Ak3DVector &in_axis)
AkForceInline T3DVector< TDataType > operator/(const TDataType f, const T3DVector< TDataType > &v)
AkLine(Ak3DVector in_L, Ak3DVector in_P)
static AkQuaternion FromEulers(AkReal32 in_x, AkReal32 in_y, AkReal32 in_z)
double AkReal64
64-bit floating point
static AkForceInline void CrossProductMatrix(AkMatrix3x3 &out_mat, const Ak3DVector &in_u)
bool DoesRayIntersect(const Ak3DVector &in_Origin, const Ak3DVector &in_Destination, Ak3DVector &out_Intersection) const
AkForceInline Ak3DVector32 operator*(const Ak3DVector32 &in_v) const
AkForceInline bool operator<(const T3DVector &b) const
static AkReal32 Cos(AkReal32 in_value)
AkForceInline Ak2DVector NormalizeSpherical() const
AkForceInline bool IsWithin(const TVectorType &in_Point) const
uint64_t AkUInt64
Unsigned 64-bit integer.
AkForceInline void NormalizeSpherical()
static AkForceInline void Rotation(AkMatrix3x3 &out_mat, AkReal32 in_angle, const Ak3DVector &in_axis)
#define AKVECTORS_EPSILON
AkForceInline T3DVector Rotate180X_90Y() const
static AkReal32 Sin(AkReal32 in_value)
void Init(const Ak3DVector &in_center, const Ak3DVector &in_extent, const Ak3DVector &in_Front, const Ak3DVector &in_Up)
AkForceInline AkMatrix3x3 & operator+=(const AkMatrix3x3 &in_rhs)
AkForceInline bool IsValid() const
AkForceInline const AkReal32 & operator()(const AkUInt32 row, const AkUInt32 column) const
AkForceInline bool operator>=(const T3DVector &b) const
AkForceInline T3DVector operator/(const TDataType f) const
3D 64-bit vector. Intended as storage for world positions of sounds and objects, benefiting from 64-b...
AkForceInline Ak2DVector & CartesianToSpherical(const Ak3DVector &in_Cartesian)
AkPlane(Ak3DVector in_p1, Ak3DVector in_p2, Ak3DVector in_p4)
uint32_t AkUInt32
Unsigned 32-bit integer.
AkQuaternion(const Ak3DVector &in_v0, const Ak3DVector &in_v1)
static AkReal32 ACos(AkReal32 in_value)
AkForceInline T3DVector operator/(const T3DVector in_rhs) const
3D vector for some operations in 3D space. Typically intended only for localized calculations due to ...
Ak3DVector GetSize() const
T3DVector(const AKSIMD_V4F32 &in_v4f32)
AkForceInline bool IsAllPositive() const
AkForceInline TDataType HorizontalMax() const
AkForceInline void Convert(TToReal &out_to, TFromReal in_from)
AkForceInline TDataType L2_Norm() const
AkForceInline AkReal32 Length() const
AkForceInline T3DVector operator*(const TDataType f) const
static AkForceInline T3DVector Max(const T3DVector &A, const T3DVector &B)
void SetReflection(AkReal32 *out_mat) const
AkForceInline bool operator<=(const T3DVector &b) const
AkForceInline Ak3DVector operator*(const Ak3DVector &in_rhs) const
Ak4DVector(const AkVector &b)
AkForceInline T3DVector & Normalize()
Ak2DVector & operator*=(const AkReal32 f)
AkForceInline Ak3DVector RotateVector(const Ak3DVector32 &in_v) const
T3DVector(const T3DVector< TFromDataType > &in_vector)
AkForceInline T3DVector Cross(const T3DVector &v) const
AkForceInline Ak2DVector operator=(const AkSphericalCoord &b)
AkForceInline bool operator>(const T3DVector b) const
AkForceInline TDataType HorizontalMin() const
AkForceInline Ak2DVector LinearCombination(const Ak2DVector &A, const Ak2DVector &B) const
static bool IsFinite(AkReal32 in_val)
AkQuaternion(AkReal32 in_W, AkReal32 in_X, AkReal32 in_Y, AkReal32 in_Z)
AkForceInline TDataType Length() const
T3DVector(const AkVector64 &in_vector)
AkForceInline AKSIMD_V4F32 VectorV4F32() const
TBoundingBox(const TVectorType &in_min, const TVectorType &in_max)
Tell us about your project. We're here to help.
Register your project and we'll help you get started with no strings attached!
Get started with Wwise