Richard Boegli's CnC_Generals_Zero_Hour Fork WIP
This is documentation of Richard Boegil's Zero Hour Fork
 
Loading...
Searching...
No Matches
colmathfrustum.h
Go to the documentation of this file.
1/*
2** Command & Conquer Generals Zero Hour(tm)
3** Copyright 2025 Electronic Arts Inc.
4**
5** This program is free software: you can redistribute it and/or modify
6** it under the terms of the GNU General Public License as published by
7** the Free Software Foundation, either version 3 of the License, or
8** (at your option) any later version.
9**
10** This program is distributed in the hope that it will be useful,
11** but WITHOUT ANY WARRANTY; without even the implied warranty of
12** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13** GNU General Public License for more details.
14**
15** You should have received a copy of the GNU General Public License
16** along with this program. If not, see <http://www.gnu.org/licenses/>.
17*/
18
19/***********************************************************************************************
20 *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S ***
21 ***********************************************************************************************
22 * *
23 * Project Name : WWMath *
24 * *
25 * $Archive:: /Commando/Code/wwmath/colmathfrustum.h $*
26 * *
27 * Original Author:: Greg Hjelstrom *
28 * *
29 * $Author:: Jani_p $*
30 * *
31 * $Modtime:: 5/04/01 8:25p $*
32 * *
33 * $Revision:: 3 $*
34 * *
35 *---------------------------------------------------------------------------------------------*
36 * Functions: *
37 * CollisionMath::Overlap_Test -- test a frustum and an AABox for overlap *
38 * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39
40#if defined(_MSC_VER)
41#pragma once
42#endif
43
44#ifndef COLMATHFRUSTUM_H
45#define COLMATHFRUSTUM_H
46
47#include "always.h"
48#include "aabox.h"
49#include "vector3.h"
50#include "lineseg.h"
51#include "frustum.h"
52
53/*
54** Inline collision functions dealing with frustums
55*/
56
57/***********************************************************************************************
58 * CollisionMath::Overlap_Test -- test a frustum and an AABox for overlap *
59 * *
60 * INPUT: *
61 * *
62 * OUTPUT: *
63 * *
64 * WARNINGS: *
65 * *
66 * HISTORY: *
67 * 3/29/2000 gth : Created. *
68 *=============================================================================================*/
69inline
71CollisionMath::Overlap_Test(const FrustumClass & frustum,const AABoxClass & box,int & planes_passed)
72{
73 int mask = 0;
74
75 // TODO: doesn't catch all cases...
76 for (int i = 0; i < 6; i++) {
77
78 int plane_bit = (1<<i);
79
80 // only check this plane if we have to
81 if ((planes_passed & plane_bit) == 0) {
82
83 int result = CollisionMath::Overlap_Test(frustum.Planes[i],box);
84 if (result == OUTSIDE) {
85
86 return OUTSIDE;
87 } else if (result == INSIDE) {
88 planes_passed |= plane_bit;
89 }
90 mask |= result;
91
92 } else {
93
94 mask |= INSIDE;
95
96 }
97 }
98
99 if (mask == INSIDE) {
100 return INSIDE;
101 }
102 return OVERLAPPED;
103}
104
105#endif
static OverlapType Overlap_Test(const AAPlaneClass &plane, const Vector3 &point)
PlaneClass Planes[6]
Definition frustum.h:64