3 #include <Engine/RaEngine.hpp>
5 #include <Core/Geometry/Obb.hpp>
6 #include <Core/Geometry/Spline.hpp>
8 #include <Core/Utils/Color.hpp>
25 class AttribArrayDisplayable;
31 namespace DrawPrimitives {
32 using MeshPtr = std::shared_ptr<Mesh>;
33 using LineMeshPtr = std::shared_ptr<LineMesh>;
34 using AttribArrayDisplayablePtr = std::shared_ptr<AttribArrayDisplayable>;
38 RA_ENGINE_API Rendering::RenderObject*
Primitive( Scene::Component* comp,
const MeshPtr& mesh );
39 RA_ENGINE_API Rendering::RenderObject*
Primitive( Scene::Component* comp,
const LineMeshPtr& mesh );
40 RA_ENGINE_API Rendering::RenderObject*
Primitive( Scene::Component* comp,
41 const AttribArrayDisplayablePtr& mesh );
45 RA_ENGINE_API LineMeshPtr
Point(
const Core::Vector3& point,
46 const Core::Utils::Color& color,
47 Scalar scale = 0.1f );
50 RA_ENGINE_API LineMeshPtr
Line(
const Core::Vector3& a,
51 const Core::Vector3& b,
52 const Core::Utils::Color& color );
55 RA_ENGINE_API LineMeshPtr
Vector(
const Core::Vector3& start,
56 const Core::Vector3& v,
57 const Core::Utils::Color& color );
60 RA_ENGINE_API LineMeshPtr
Ray(
const Core::Ray& ray,
61 const Core::Utils::Color& color,
62 Scalar len = 1000_ra );
66 RA_ENGINE_API AttribArrayDisplayablePtr
Triangle(
const Core::Vector3& a,
67 const Core::Vector3& b,
68 const Core::Vector3& c,
69 const Core::Utils::Color& color,
73 RA_ENGINE_API MeshPtr
QuadStrip(
const Core::Vector3& a,
74 const Core::Vector3& x,
75 const Core::Vector3& y,
77 const Core::Utils::Color& color );
82 RA_ENGINE_API LineMeshPtr
Circle(
const Core::Vector3& center,
83 const Core::Vector3& normal,
86 const Core::Utils::Color& color );
91 RA_ENGINE_API LineMeshPtr
CircleArc(
const Core::Vector3& center,
92 const Core::Vector3& normal,
96 const Core::Utils::Color& color );
99 RA_ENGINE_API MeshPtr
Sphere(
const Core::Vector3& center,
101 const Core::Utils::Color& color );
107 const Core::Utils::Color& color,
108 bool generateTexCoord =
false );
111 RA_ENGINE_API MeshPtr
Capsule(
const Core::Vector3& p1,
112 const Core::Vector3& p2,
114 const Core::Utils::Color& color );
119 RA_ENGINE_API MeshPtr
Disk(
const Core::Vector3& center,
120 const Core::Vector3& normal,
123 const Core::Utils::Color& color );
127 RA_ENGINE_API LineMeshPtr
Normal(
const Core::Vector3& point,
128 const Core::Vector3& normal,
129 const Core::Utils::Color& color,
130 Scalar scale = 0.1f );
137 RA_ENGINE_API MeshPtr
Frame(
const Core::Transform& frameFromEntity, Scalar scale = 0.1f );
141 RA_ENGINE_API MeshPtr
Grid(
const Core::Vector3& center,
142 const Core::Vector3& x,
143 const Core::Vector3& y,
144 const Core::Utils::Color& color,
145 Scalar cellSize = 1.f,
149 RA_ENGINE_API MeshPtr
AABB(
const Core::Aabb& aabb,
const Core::Utils::Color& color );
152 RA_ENGINE_API MeshPtr
OBB(
const Core::Geometry::Obb& obb,
const Core::Utils::Color& color );
154 RA_ENGINE_API MeshPtr Spline(
const Core::Geometry::Spline<3, 3>& spline,
156 const Core::Utils::Color& color,
157 Scalar scale = 1.0f );
160 RA_ENGINE_API MeshPtr
LineStrip(
const Core::Vector3Array& vertices,
161 const Core::Vector4Array& colors );
MeshPtr Capsule(const Core::Vector3 &p1, const Core::Vector3 &p2, Scalar radius, const Core::Utils::Color &color)
Displays a capsule computed with given endpoints and radius.
LineMeshPtr Line(const Core::Vector3 &a, const Core::Vector3 &b, const Core::Utils::Color &color)
Displays given line.
LineMeshPtr CircleArc(const Core::Vector3 ¢er, const Core::Vector3 &normal, Scalar radius, Scalar angle, uint segments, const Core::Utils::Color &color)
LineMeshPtr Ray(const Core::Ray &ray, const Core::Utils::Color &color, Scalar len)
Displays given ray as a straight line.
MeshPtr ParametricSphere(const Core::Vector3 ¢er, Scalar radius, const Core::Utils::Color &color, bool generateTexCoord)
MeshPtr Disk(const Core::Vector3 ¢er, const Core::Vector3 &normal, Scalar radius, uint segments, const Core::Utils::Color &color)
AttribArrayDisplayablePtr Triangle(const Core::Vector3 &a, const Core::Vector3 &b, const Core::Vector3 &c, const Core::Utils::Color &color, bool fill)
MeshPtr AABB(const Core::Aabb &aabb, const Core::Utils::Color &color)
Display a wireframe AABB.
MeshPtr Frame(const Core::Transform &frameFromEntity, Scalar scale)
LineMeshPtr Vector(const Core::Vector3 &start, const Core::Vector3 &v, const Core::Utils::Color &color)
Displays given vector shown as an arrow originating from 'start'.
MeshPtr Grid(const Core::Vector3 ¢er, const Core::Vector3 &x, const Core::Vector3 &y, const Core::Utils::Color &color, Scalar cellSize, uint res)
MeshPtr LineStrip(const Core::Vector3Array &vertices, const Core::Vector4Array &colors)
Display a line strip.
LineMeshPtr Normal(const Core::Vector3 &point, const Core::Vector3 &normal, const Core::Utils::Color &color, Scalar scale)
MeshPtr Sphere(const Core::Vector3 ¢er, Scalar radius, const Core::Utils::Color &color)
Displays geodesic sphere computed with given center and radius.
LineMeshPtr Circle(const Core::Vector3 ¢er, const Core::Vector3 &normal, Scalar radius, uint segments, const Core::Utils::Color &color)
LineMeshPtr Point(const Core::Vector3 &point, const Core::Utils::Color &color, Scalar scale)
Displays given point shown as the crossing of 3 lines of length 'scale'.
Rendering::RenderObject * Primitive(Scene::Component *component, const MeshPtr &mesh)
MeshPtr OBB(const Obb &obb, const Core::Utils::Color &color)
Display a wireframe OBB.
MeshPtr QuadStrip(const Core::Vector3 &a, const Core::Vector3 &x, const Core::Vector3 &y, uint quads, const Core::Utils::Color &color)
Displays a strip of n quads, starting at A and with directions X and Y.