summaryrefslogtreecommitdiffstatshomepage
path: root/3rdparty/bgfx/examples/common/debugdraw/debugdraw.h
blob: a52da4fbd850d8e457f3b7f7984ac7dd41024a88 (plain) (blame)
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
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
 * Copyright 2011-2017 Branimir Karadzic. All rights reserved.
 * License: https://github.com/bkaradzic/bgfx#license-bsd-2-clause
 */

#ifndef DEBUGDRAW_H_HEADER_GUARD
#define DEBUGDRAW_H_HEADER_GUARD

#include <bx/allocator.h>
#include "../bounds.h"

struct Axis
{
	enum Enum
	{
		X,
		Y,
		Z,

		Count
	};
};

struct SpriteHandle { uint16_t idx; };

inline bool isValid(SpriteHandle _handle) { return _handle.idx != UINT16_MAX; }

///
void ddInit(bool _depthTestLess = true, bx::AllocatorI* _allocator = NULL);

///
void ddShutdown();

///
SpriteHandle ddCreateSprite(uint16_t _width, uint16_t _height, const void* _data);

///
void ddDestroy(SpriteHandle _handle);

///
void ddBegin(uint8_t _viewId);

///
void ddEnd();

///
void ddPush();

///
void ddPop();

///
void ddSetState(bool _depthTest, bool _depthWrite, bool _clockwise);

///
void ddSetColor(uint32_t _abgr);

///
void ddSetLod(uint8_t _lod);

///
void ddSetWireframe(bool _wireframe);

///
void ddSetStipple(bool _stipple, float _scale = 1.0f, float _offset = 0.0f);

///
void ddSetSpin(float _spin);

///
void ddSetTransform(const void* _mtx);

///
void ddSetTranslate(float _x, float _y, float _z);

///
void ddMoveTo(float _x, float _y, float _z = 0.0f);

///
void ddMoveTo(const void* _pos);

///
void ddLineTo(float _x, float _y, float _z = 0.0f);

///
void ddLineTo(const void* _pos);

///
void ddClose();

///
void ddDraw(const Aabb& _aabb);

///
void ddDraw(const Cylinder& _cylinder);

///
void ddDraw(const Capsule& _capsule);

///
void ddDraw(const Disk& _disk);

///
void ddDraw(const Obb& _obb);

///
void ddDraw(const Sphere& _sphere);

///
void ddDraw(const Cone& _cone);

///
void ddDrawFrustum(const void* _viewProj);

///
void ddDrawArc(Axis::Enum _axis, float _x, float _y, float _z, float _radius, float _degrees);

///
void ddDrawCircle(const void* _normal, const void* _center, float _radius, float _weight = 0.0f);

///
void ddDrawCircle(Axis::Enum _axis, float _x, float _y, float _z, float _radius, float _weight = 0.0f);

///
void ddDrawQuad(const float* _normal, const float* _center, float _size);

///
void ddDrawQuad(SpriteHandle _handle, const float* _normal, const float* _center, float _size);

///
void ddDrawQuad(bgfx::TextureHandle _handle, const float* _normal, const float* _center, float _size);

///
void ddDrawCone(const void* _from, const void* _to, float _radius);

///
void ddDrawCylinder(const void* _from, const void* _to, float _radius);

///
void ddDrawCapsule(const void* _from, const void* _to, float _radius);

///
void ddDrawAxis(float _x, float _y, float _z, float _len = 1.0f, Axis::Enum _highlight = Axis::Count, float _thickness = 0.0f);

///
void ddDrawGrid(const void* _normal, const void* _center, uint32_t _size = 20, float _step = 1.0f);

///
void ddDrawGrid(Axis::Enum _axis, const void* _center, uint32_t _size = 20, float _step = 1.0f);

///
void ddDrawOrb(float _x, float _y, float _z, float _radius, Axis::Enum _highlight = Axis::Count);

#endif // DEBUGDRAW_H_HEADER_GUARD