summaryrefslogtreecommitdiffstats
path: root/src/collision/ColTriangle.cpp
diff options
context:
space:
mode:
authorSergeanur <s.anureev@yandex.ua>2020-11-14 21:13:32 +0100
committerSergeanur <s.anureev@yandex.ua>2020-11-15 23:36:54 +0100
commit9bb8ebaa1011dc1dc70e3d5bf70c9a55c44b976c (patch)
tree3dcbab653ba34fa1fdc273887bd377603c4ff4f2 /src/collision/ColTriangle.cpp
parentcar AI revision (diff)
downloadre3-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.cpp32
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