diff options
author | Sergeanur <s.anureev@yandex.ua> | 2020-11-14 21:13:32 +0100 |
---|---|---|
committer | Sergeanur <s.anureev@yandex.ua> | 2020-11-15 23:36:54 +0100 |
commit | 9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c (patch) | |
tree | 3dcbab653ba34fa1fdc273887bd377603c4ff4f2 /src/collision/ColTriangle.cpp | |
parent | car AI revision (diff) | |
download | re3-9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c.tar re3-9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c.tar.gz re3-9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c.tar.bz2 re3-9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c.tar.lz re3-9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c.tar.xz re3-9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c.tar.zst re3-9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c.zip |
Diffstat (limited to 'src/collision/ColTriangle.cpp')
-rw-r--r-- | src/collision/ColTriangle.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/collision/ColTriangle.cpp b/src/collision/ColTriangle.cpp new file mode 100644 index 00000000..843fb93f --- /dev/null +++ b/src/collision/ColTriangle.cpp @@ -0,0 +1,32 @@ +#include "common.h" +#include "ColTriangle.h" + +#ifdef VU_COLLISION +void +CColTrianglePlane::Set(const CVector &va, const CVector &vb, const CVector &vc) +{ + CVector norm = CrossProduct(vc-va, vb-va); + norm.Normalise(); + float d = DotProduct(norm, va); + normal.x = norm.x*4096.0f; + normal.y = norm.y*4096.0f; + normal.z = norm.z*4096.0f; + dist = d*128.0f; +} +#else +void +CColTrianglePlane::Set(const CVector &va, const CVector &vb, const CVector &vc) +{ + normal = CrossProduct(vc-va, vb-va); + normal.Normalise(); + dist = DotProduct(normal, va); + CVector an(Abs(normal.x), Abs(normal.y), Abs(normal.z)); + // find out largest component and its direction + if(an.x > an.y && an.x > an.z) + dir = normal.x < 0.0f ? DIR_X_NEG : DIR_X_POS; + else if(an.y > an.z) + dir = normal.y < 0.0f ? DIR_Y_NEG : DIR_Y_POS; + else + dir = normal.z < 0.0f ? DIR_Z_NEG : DIR_Z_POS; +} +#endif
\ No newline at end of file |