SUNENGINE 0.0.2
A simple and bright C++ game engine.
 
Loading...
Searching...
No Matches
Visualizer.h
1#ifndef Visualizer_H
2#define Visualizer_H
3
4#include "AzulCore.h"
5#include "VisualizerCommandBase.h"
6#include <list>
7
12class CollisionVolume;
14
23class Visualizer : public Align16
24{
25private:
26 friend class VisualizerAttorney;
27
31 static Visualizer* ptrInstance;
32
33 static Visualizer& Instance()
34 {
35 if (!ptrInstance)
36 ptrInstance = new Visualizer();
37 return *ptrInstance;
38 }
39
40 Visualizer();
41 Visualizer(const Visualizer&) = delete;
42 Visualizer& operator=(const Visualizer&) = delete;
44
48 static Vect DEFAULT_COLOR;
49
53 GraphicsObject_WireframeConstantColor* WFUnitSphere;
54
58 GraphicsObject_WireframeConstantColor* WFUnitBox;
59
63 std::list<VisualizerCommandBase*> visualizerList;
64
69
75 static void RenderBSphere(const CollisionVolumeBSphere& sphere, const Vect& color);
76
82 static void RenderAABB(const CollisionVolumeAABB& aabb, const Vect& color);
83
89 static void RenderOBB(const CollisionVolumeOBB& obb, const Vect& color);
90
96 static void RenderMinMax(const Vect& minPoint, const Vect& maxPoint, const Vect& color);
97
104 static void RenderLine(const Vect& start, const Vect& end, const Vect& color);
105
109 static void Render();
110
114 static void Delete();
115
116public:
117
123 static void ShowBSphere(const CollisionVolumeBSphere& sphere, const Vect& color = DEFAULT_COLOR);
124
130 static void ShowAABB(const CollisionVolumeAABB& aabb, const Vect& color = DEFAULT_COLOR);
131
137 static void ShowOBB(const CollisionVolumeOBB& obb, const Vect& color = DEFAULT_COLOR);
138
144 static void ShowCollisionVolume(const CollisionVolume& vol, const Vect& color = DEFAULT_COLOR);
145
151 static void ShowGroupAABB(const CollisionVolumeAABB& aabb, const Vect& color = DEFAULT_COLOR);
152
158 static void ShowMinMax(const Vect& minPoint, const Vect& maxPoint, const Vect& color = DEFAULT_COLOR);
159
166 static void ShowLine(const Vect& start, const Vect& end, const Vect& color = DEFAULT_COLOR);
167};
168
169#endif
Definition Framework.h:1558
Represents an axis-aligned bounding box (AABB) collision volume.
Definition CollisionVolumeAABB.h:23
Represents a bounding sphere collision volume.
Definition CollisionVolumeBSphere.h:14
Base class for collision volumes.
Definition CollisionVolume.h:19
Represents an Oriented Bounding Box (OBB) collision volume.
Definition CollisionVolumeOBB.h:23
Command to visualize a collision volume bounding sphere.
Definition VisualizerBSphereCommand.h:19
Manages a pool of visualizer commands for efficient reuse.
Definition VisualizerCommandPool.h:25
Visualizes collision volumes for debugging purposes.
Definition Visualizer.h:24
static void RenderAABB(const CollisionVolumeAABB &aabb, const Vect &color)
Renders an axis-aligned bounding box (AABB) with the specified color.
Definition Visualizer.cpp:85
VisualizerCommandPool * commandPool
Command pool for managing visualizer commands.
Definition Visualizer.h:68
static void RenderOBB(const CollisionVolumeOBB &obb, const Vect &color)
Renders an oriented bounding box (OBB) with the specified color.
Definition Visualizer.cpp:91
GraphicsObject_WireframeConstantColor * WFUnitSphere
Pointer to the wireframe constant color graphics object for unit sphere.
Definition Visualizer.h:53
static void Delete()
Deletes the Visualizer instance.
Definition Visualizer.cpp:38
static void RenderLine(const Vect &start, const Vect &end, const Vect &color)
Renders a line between two points with the specified color.
Definition Visualizer.cpp:103
static void ShowCollisionVolume(const CollisionVolume &vol, const Vect &color=DEFAULT_COLOR)
Shows a collision volume with the specified color.
Definition Visualizer.cpp:59
GraphicsObject_WireframeConstantColor * WFUnitBox
Pointer to the wireframe constant color graphics object for unit AABB.
Definition Visualizer.h:58
static void RenderMinMax(const Vect &minPoint, const Vect &maxPoint, const Vect &color)
Renders a collision volume with the specified color.
Definition Visualizer.cpp:97
static void ShowGroupAABB(const CollisionVolumeAABB &aabb, const Vect &color=DEFAULT_COLOR)
Shows a group of axis-aligned bounding boxes (AABBs) with the specified color.
Definition Visualizer.cpp:64
static Visualizer * ptrInstance
Pointer to the singleton instance of the Visualizer class.
Definition Visualizer.h:31
static void ShowLine(const Vect &start, const Vect &end, const Vect &color=DEFAULT_COLOR)
Shows a line between two points with the specified color.
Definition Visualizer.cpp:74
static Vect DEFAULT_COLOR
Default color for visualizing collision volumes.
Definition Visualizer.h:48
static void ShowAABB(const CollisionVolumeAABB &aabb, const Vect &color=DEFAULT_COLOR)
Shows an axis-aligned bounding box (AABB) with the specified color.
Definition Visualizer.cpp:49
std::list< VisualizerCommandBase * > visualizerList
List of collision visualizer commands to visualize.
Definition Visualizer.h:63
static void ShowOBB(const CollisionVolumeOBB &obb, const Vect &color=DEFAULT_COLOR)
Shows an oriented bounding box (OBB) with the specified color.
Definition Visualizer.cpp:54
static void Render()
Renders all visualized collision volumes.
Definition Visualizer.cpp:109
static void ShowMinMax(const Vect &minPoint, const Vect &maxPoint, const Vect &color=DEFAULT_COLOR)
Shows a group of oriented bounding boxes (OBBs) with the specified color.
Definition Visualizer.cpp:69
static void ShowBSphere(const CollisionVolumeBSphere &sphere, const Vect &color=DEFAULT_COLOR)
Shows a bounding sphere with the specified color.
Definition Visualizer.cpp:44
static void RenderBSphere(const CollisionVolumeBSphere &sphere, const Vect &color)
Renders a bounding sphere with the specified color.
Definition Visualizer.cpp:79