OpenBarnyard
 
Loading...
Searching...
No Matches
TVector4.cpp
Go to the documentation of this file.
1#include "ToshiPCH.h"
2#include "TVector4.h"
3
5
6constinit const TVector4 TVector4::VEC_ZERO = TVector4( 0, 0, 0, 1 );
7constinit const TVector4 TVector4::VEC_POSX = TVector4( 1, 0, 0, 1 );
8constinit const TVector4 TVector4::VEC_POSY = TVector4( 0, 1, 0, 1 );
9constinit const TVector4 TVector4::VEC_POSZ = TVector4( 0, 0, 1, 1 );
10constinit const TVector4 TVector4::VEC_NEGX = TVector4( -1, 0, 0, 1 );
11constinit const TVector4 TVector4::VEC_NEGY = TVector4( 0, -1, 0, 1 );
12constinit const TVector4 TVector4::VEC_NEGZ = TVector4( 0, 0, -1, 1 );
13
14// $Barnyard: FUNCTION 006c7600
16{
17 TFLOAT fMagnitudeSq = MagnitudeSq();
18
19 if ( fMagnitudeSq != 0.0f )
20 {
21 TFLOAT fMultiplier = TMath::OneOverSqrt( fMagnitudeSq );
22 x *= fMultiplier;
23 y *= fMultiplier;
24 z *= fMultiplier;
25
26 return 1.0f / fMultiplier;
27 }
28
29 x = 0.0f;
30 y = 0.0f;
31 z = 1.0f;
32 return fMagnitudeSq;
33}
34
35// $Barnyard: FUNCTION 006c7590
37{
38 TFLOAT fMagnitudeSq = MagnitudeSq();
39
40 if ( fMagnitudeSq != 0.0f )
41 {
42 TFLOAT fMultiplier = TMath::OneOverSqrt( fMagnitudeSq );
43 x *= fMultiplier;
44 y *= fMultiplier;
45 z *= fMultiplier;
46 return;
47 }
48
49 x = 0.0f;
50 y = 0.0f;
51 z = 1.0f;
52}
53
54// $Barnyard: FUNCTION 006c7930
55void TVector4::ProjectNormalToPlane( const TVector4& vec, const TVector4& vec2 )
56{
57 TVector4 crossProduct;
58 crossProduct.CrossProduct( vec2, vec );
59 CrossProduct( crossProduct, vec2 );
60 Normalise();
61}
62
63// $Barnyard: FUNCTION 00544160
65{
67}
68
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
float TFLOAT
Definition Typedefs.h:4
TFORCEINLINE TFLOAT OneOverSqrt(TFLOAT a_fX)
Definition TMathInline.h:92
static const constinit TVector4 VEC_POSZ
Definition TVector4.h:361
static const constinit TVector4 VEC_ZERO
Definition TVector4.h:358
TFLOAT NormaliseMag()
Definition TVector4.cpp:15
void Normalise4()
Definition TVector4.cpp:64
void ProjectNormalToPlane(const TVector4 &vec, const TVector4 &vec2)
Definition TVector4.cpp:55
TFLOAT x
Definition TVector4.h:367
constexpr TVector4()=default
static const constinit TVector4 VEC_POSY
Definition TVector4.h:360
TFLOAT y
Definition TVector4.h:367
constexpr TFLOAT MagnitudeSq() const
Definition TVector4.h:279
static const constinit TVector4 VEC_NEGY
Definition TVector4.h:363
constexpr void Divide4(TFLOAT scalar)
Definition TVector4.h:146
void CrossProduct(const TVector4 &vec1, const TVector4 &vec2)
Definition TVector4.h:223
TFLOAT Magnitude4() const
Definition TVector4.h:278
static const constinit TVector4 VEC_NEGX
Definition TVector4.h:362
static const constinit TVector4 VEC_NEGZ
Definition TVector4.h:364
void Normalise()
Definition TVector4.cpp:36
TFLOAT z
Definition TVector4.h:367
static const constinit TVector4 VEC_POSX
Definition TVector4.h:359