-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathColliderShapeDraw.cpp
More file actions
120 lines (90 loc) · 2.87 KB
/
ColliderShapeDraw.cpp
File metadata and controls
120 lines (90 loc) · 2.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "Circle.h"
#include "AABB.h"
#include "OBB.h"
#include "Capsule.h"
#include "Triangle.h"
#include "ConvexHull.h"
#include "ColliderShape.h"
#include "../DebugDraw.h"
void Circle::Draw()
{
auto color = _isCrossed ? ColorPalette::RED4 : ColorPalette::BLACK4;
DrawCircle(*_center, _radius, color, false);
}
void AABB::Draw()
{
auto color = _isCrossed ? ColorPalette::RED4 : ColorPalette::BLACK4;
DrawRectWithPoint(
static_cast<float>(GetMinX())
, static_cast<float>(GetMinY())
, static_cast<float>(GetMaxX())
, static_cast<float>(GetMaxY())
, color
, false);
DrawCircle(*_center, 3, color, true);
}
void OBB::Draw()
{
auto color = _isCrossed ? ColorPalette::RED4 : ColorPalette::BLACK4;
auto vertexes = GetVertexes();
DrawLine(vertexes[0], vertexes[1], color);
DrawLine(vertexes[1], vertexes[2], color);
DrawLine(vertexes[2], vertexes[3], color);
DrawLine(vertexes[3], vertexes[0], color);
DrawLine(*_center, *_center + _elemWidth, color);
DrawLine(*_center, *_center + _elemHeight, color);
DrawCircle(*_center, 3, color, true);
}
void Capsule::Draw()
{
auto color = _isCrossed ? ColorPalette::RED4 : ColorPalette::BLACK4;
auto edgeA = GetEdgeA();
auto edgeB = GetEdgeB();
DrawCircle(edgeA, _radius, color, false);
DrawCircle(edgeB, _radius, color, false);
Vector2D vertical = _direction;
vertical.Rotate(90);
vertical *= _radius / vertical.GetLength();
DrawLine(edgeB + vertical
, edgeA + vertical
, color);
DrawLine(edgeB - vertical
, edgeA - vertical
, color);
}
void Triangle::Draw()
{
auto color = _isCrossed ? ColorPalette::RED4 : ColorPalette::BLACK4;
auto vertexes = GetVertexes();
DrawLine(*vertexes[0], *vertexes[1], color);
DrawLine(*vertexes[1], *vertexes[2], color);
DrawLine(*vertexes[2], *vertexes[0], color);
/*
DrawLine( (*vertexes[0] + *vertexes[1]) * 0.5
, (*vertexes[0] + *vertexes[1]) * 0.5 + Vector2D::Cross((*vertexes[1] - *vertexes[0]), false), color);
*/
auto center = GetCenter();
DrawCircle(center, 3, ColorPalette::BLACK4, true);
//DrawLine(center, center + _verticalVecCache, ColorPalette::GREEN4);
}
void ConvexHull::Draw()
{
auto color = _isCrossed ? ColorPalette::RED4 : ColorPalette::BLACK4;
DrawLine( *(_vertexes.end() - 1), _vertexes[0], color);
for (size_t i = 1; i < _vertexes.size(); ++i)
{
DrawLine(_vertexes[i-1], _vertexes[i], color);
}
}
void ColliderShape::DrawAABB()
{
auto color = _isCrossed ? ColorPalette::RED4 : ColorPalette::BLACK4;
DrawRectWithPoint(
static_cast<int>(GetMinX())
, static_cast<int>(GetMinY())
, static_cast<int>(GetMaxX())
, static_cast<int>(GetMaxY())
, color
, false
);
}