The Game Engine
1
Main Page
Related Pages
Classes
Files
File List
File Members
CollisionObject.h
Go to the documentation of this file.
1
#ifndef __COLLISIONOBJECT_H__
2
#define __COLLISIONOBJECT_H__
3
#include "
fns.h
"
4
#include <vector>
5
#include <string>
6
#include "
WorldObject.h
"
7
8
using
std::vector;
9
using
std::string;
10
11
// predeclared for build
12
class
WorldObject
;
13
20
class
CollisionObject
21
{
22
public
:
23
CollisionObject
(
string
n):
mPos
(0.0,0.0),
color
(0xFF00FF00),
name
(n) { };
24
Point2D
mPos
;
25
30
enum
CollisionObjectType
{
31
COLLISIONRECTANGLE
,
32
COLLISIONCIRCLE
,
33
COLLISIONSEGMENT
34
};
35
44
bool
checkCollisions
(
const
vector<CollisionObject*>& c,
const
Point2D
cPos,
const
Point2D
pos, vector<string> names = vector<string>());
45
53
virtual
pair<WorldObject*, CollisionObject*>
collision
(
const
CollisionObject
*c,
WorldObject
* wo,
WorldObject
* mObj)
const
= 0;
54
55
virtual
void
draw
(
const
Point2D
& pos) = 0;
60
virtual
CollisionObjectType
getType
()
const
= 0;
61
protected
:
62
string
name
;
63
Uint32
color
;
64
};
65
75
class
CollisionRectangle
:
public
CollisionObject
76
{
77
public
:
78
CollisionRectangle
(
string
n =
""
):
CollisionObject
(n),
width
(1.0),
height
(1.0) {};
79
CollisionRectangle
(
string
n,
Point2D
pt,
double
w,
double
h):
CollisionObject
(n),
width
(w),
height
(h) {
mPos
= pt;}
80
double
width
;
81
double
height
;
86
double
getLeft
();
90
double
getRight
();
94
double
getTop
();
98
double
getBottom
();
99
107
virtual
pair<WorldObject*, CollisionObject*>
collision
(
const
CollisionObject
*c,
WorldObject
* wo,
WorldObject
* mObj)
const
;
108
virtual
void
draw
(
const
Point2D
& pos);
113
virtual
CollisionObjectType
getType
()
const
{
return
COLLISIONRECTANGLE
; }
114
};
115
125
class
CollisionCircle
:
public
CollisionObject
126
{
127
public
:
128
CollisionCircle
(
string
n):
CollisionObject
(n){};
129
CollisionCircle
(
string
n,
Point2D
pt,
double
r):
CollisionObject
(n),
radius
(r) {
mPos
= pt; }
130
double
radius
;
138
pair<WorldObject*, CollisionObject*>
collision
(
const
CollisionRectangle
*c,
WorldObject
* wo,
WorldObject
* mObj)
const
;
139
147
virtual
pair<WorldObject*, CollisionObject*>
collision
(
const
CollisionObject
*c,
WorldObject
* wo,
WorldObject
* mObj)
const
;
148
149
virtual
void
draw
(
const
Point2D
& pos);
154
virtual
CollisionObjectType
getType
()
const
{
return
COLLISIONCIRCLE
; }
155
};
156
166
class
CollisionSegment
:
public
CollisionObject
167
{
168
public
:
169
CollisionSegment
(
string
n):
CollisionObject
(n){};
170
CollisionSegment
(
string
n,
Point2D
s,
Point2D
e):
CollisionObject
(n),
end
(e) {
mPos
= s;
calcNormal
(); }
172
Point2D
end
;
173
175
double
distance
;
176
178
Point2D
norm
;
179
181
bool
twoWay
;
182
186
void
calcNormal
();
187
195
pair<WorldObject*, CollisionObject*>
collision
(
const
CollisionRectangle
* c,
WorldObject
* wo,
WorldObject
* mObj)
const
;
196
204
pair<WorldObject*, CollisionObject*>
collision
(
const
CollisionCircle
* c,
WorldObject
* wo,
WorldObject
* mObj)
const
;
205
213
virtual
pair<WorldObject*, CollisionObject*>
collision
(
const
CollisionObject
*c,
WorldObject
* wo,
WorldObject
* mObj)
const
;
214
215
virtual
void
draw
(
const
Point2D
& pos);
220
virtual
CollisionObjectType
getType
()
const
{
return
COLLISIONSEGMENT
; }
221
};
222
#endif
CollisionObject.h
Generated on Tue Apr 16 2013 02:32:41 for The Game Engine by
1.8.3.1