Toast Engine
Loading...
Searching...
No Matches
debug_draw.hpp
1
4
5#pragma once
6
8
9#include <glm/glm.hpp>
10
11namespace toast {
12class Camera;
13}
14
15namespace assets {
16class Texture;
17class Mesh;
18}
19
20namespace debug {
21
22struct Billboard {
23 glm::vec3 position {0.0f};
24 float size = 1.0f;
25 glm::vec4 tint {1.0f};
27};
28
29struct Vertex {
30 glm::vec<3, float, glm::packed_highp> position;
31 glm::vec<4, float, glm::packed_highp> color;
32};
33
34static_assert(std::is_standard_layout_v<debug::Vertex>, "DebugVertex must be standard layout");
35
36struct Mesh {
37 glm::mat4 model {1.0f};
38 glm::vec4 tint {1.0f};
40};
41
42void TOAST_API drawSolidSphere(glm::vec3 center, float radius, glm::vec4 color);
43void TOAST_API drawShapeBox(const glm::mat4& transform, glm::vec4 color, bool fill);
44void TOAST_API drawCapsule(const glm::mat4& transform, float radius, float height, glm::vec4 color, bool fill);
45
46void TOAST_API drawOrientedBox(const glm::mat4& transform, const glm::vec3& extents, const glm::vec4& color);
47
48void TOAST_API drawLine(glm::vec3 a, glm::vec3 b, glm::vec4 color = {1.0f, 1.0f, 1.0f, 1.0f});
49void TOAST_API drawBox(glm::vec3 min, glm::vec3 max, glm::vec4 color = {1.0f, 1.0f, 1.0f, 1.0f});
50void TOAST_API drawSphere(glm::vec3 center, float radius, glm::vec4 color = {1.0f, 1.0f, 1.0f, 1.0f}, int segments = 24);
51void TOAST_API drawAxes(const glm::mat4& transform);
52
53void TOAST_API drawBillboard(
54 glm::vec3 world_position, float size, assets::Handle<assets::Texture> texture, glm::vec4 tint = {1.0f, 1.0f, 1.0f, 1.0f}
55);
56
57void TOAST_API
58 drawMesh(const assets::Handle<assets::Mesh>& mesh, const glm::mat4& transform, glm::vec4 tint = {1.0f, 1.0f, 1.0f, 1.0f});
59
60void TOAST_API drawMesh(toast::UID mesh, const glm::mat4& transform, glm::vec4 tint = {1.0f, 1.0f, 1.0f, 1.0f});
61
62void TOAST_API
63 drawBillboard(glm::vec3 world_position, float size, toast::UID texture, glm::vec4 tint = glm::vec4 {1.0f, 1.0f, 1.0f, 1.0f});
64
65void TOAST_API drawArrow(glm::vec3 from, glm::vec3 to, glm::vec4 color = {1.0f, 1.0f, 1.0f, 1.0f}, float head_size = 0.2f);
66
67void TOAST_API drawCone(
68 glm::vec3 apex, glm::vec3 direction, float length, float half_angle_degrees, glm::vec4 color = {1.0f, 1.0f, 1.0f, 1.0f},
69 int segments = 24
70);
71
72void TOAST_API
73 drawFrustum(const toast::Camera& camera, float aspect, glm::vec4 color = {1.0f, 1.0f, 0.0f, 1.0f}, float far_override = 0.0f);
74
75void TOAST_API drawFrustumFromMatrix(const glm::mat4& view_projection, glm::vec4 color = {1.0f, 1.0f, 0.0f, 1.0f});
76}
Type-safe smart pointer for assets.
Definition core_types.hpp:149
Definition mesh.hpp:66
Asset representing a texture, currently holding raw KTX2 bytes.
Definition texture.hpp:22
Definition camera.hpp:25
Base types for the asset system.
Definition debug_draw.hpp:22
Definition debug_draw.hpp:36
Definition debug_draw.hpp:29