ScummVM API documentation
Collider2D.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22/*
23 * Copyright (C) 2006-2010 - Frictional Games
24 *
25 * This file is part of HPL1 Engine.
26 */
27
28#ifndef HPL_COLLIDER2D_H
29#define HPL_COLLIDER2D_H
30
31#include "hpl1/engine/math/MathTypes.h"
32#include "hpl1/engine/system/SystemTypes.h"
33
34namespace hpl {
35
36class cMesh2D;
37class cWorld2D;
38class cBody2D;
39class cCollideData2D;
40class cCollisionMesh2D;
41
43public:
44 cVector2f mvPushVec;
45 cVector2f mvPushPos;
46};
47
49public:
52
53 void SetWorld(cWorld2D *apWorld) { mpWorld = apWorld; }
54
60 tFlag CollideBody(cBody2D *apBody, cCollideData2D *apData);
61
68 tFlag CollideRect(cRect2f &aRect, tFlag alCollideFlags, cCollideData2D *apData);
69
70 tFlag CollideLine(const cVector2f &avStart, const cVector2f &avEnd, tFlag alCollideFlags,
71 cCollideData2D *apData);
72
73 cCollider2DDebug mDebug;
74
75private:
76 cWorld2D *mpWorld;
77
78 void SetCollideMesh(cCollisionMesh2D *apMesh, cRect2f &aRect);
79
80 bool Collide(cCollisionMesh2D *apMeshA, cCollisionMesh2D *apMeshB, cVector2f &avMTD);
81 bool AxisSeparateMeshes(cVector2f &avAxis, cCollisionMesh2D *apMeshA,
82 cCollisionMesh2D *apMeshB);
83 void CalculateInterval(const cVector2f &avAxis, cCollisionMesh2D *apMesh,
84 float &afMin, float &afMax);
85};
86
87} // namespace hpl
88
89#endif // HPL_COLLIDER2D_H
Definition: Body2D.h:49
Definition: CollideData2D.h:49
Definition: Collider2D.h:42
Definition: Collider2D.h:48
tFlag CollideBody(cBody2D *apBody, cCollideData2D *apData)
tFlag CollideRect(cRect2f &aRect, tFlag alCollideFlags, cCollideData2D *apData)
Definition: Mesh2d.h:51
Definition: World2D.h:64