gwnavruntime/visualsystem/ivisualgeometry.h Source File

ivisualgeometry.h
Go to the documentation of this file.
1 /*
2 * Copyright 2016 Autodesk, Inc. All rights reserved.
3 * Use of this software is subject to the terms of the Autodesk license agreement and any attachments or Appendices thereto provided at the time of installation or download,
4 * or which otherwise accompanies this software in either electronic or hard copy form, or which is signed by you and accepted by Autodesk.
5 */
6 
7 #pragma once
8 
13 
14 namespace Kaim
15 {
16 
19 {
20 public:
21  VisualTriangle() {}
22  VisualTriangle(const Vec3f& A_, const Vec3f& B_, const Vec3f& C_, Color color) : A(A_), B(B_), C(C_), m_color(color) {}
23  Vec3f ComputeNormal() const { return CrossProduct(B - A, C - A).GetNormalized(); }
24  Vec3f A, B, C;
25  Color m_color;
26 };
27 
30 {
31 public:
32  VisualLine() {}
33  VisualLine(const Vec3f& A_, const Vec3f& B_, Color color) : A(A_), B(B_), m_color(color) {}
34  Vec3f A, B;
35  Color m_color;
36 };
37 
38 
41 {
42 public:
43  VisualText() : m_text(nullptr), m_byteCount(0) {}
44  VisualText(const char* text, KyUInt32 byteCount, const Vec3f& pos, Color color) : m_text(text), m_pos(pos), m_byteCount(byteCount), m_color(color) {}
45  const char* m_text; // be careful, VisualText does not own the m_text buffer
46  Vec3f m_pos;
47  KyUInt32 m_byteCount; // "abc" byteCount = 4
48  Color m_color;
49 };
50 
51 
56 {
57 public:
58  VisualGeometryPrimitiveCounts() { Clear(); }
59 
60  void Clear()
61  {
62  m_opaqueTriangleCount = 0;
63  m_transparentTriangleCount = 0;
64  m_lineCount = 0;
65  m_textCount = 0;
66  }
67 
68  KyUInt32 m_opaqueTriangleCount;
69  KyUInt32 m_transparentTriangleCount;
70  KyUInt32 m_lineCount;
71  KyUInt32 m_textCount;
72 };
73 
76 class IVisualGeometry : public RefCountBase<IVisualGeometry, MemStat_VisualSystem>
77 {
78 public:
79  IVisualGeometry() {}
80  virtual ~IVisualGeometry() {}
81 
86  virtual void DoBegin(const VisualGeometryPrimitiveCounts& primitiveCounts) = 0;
87 
90  virtual void DoPushTriangle(const VisualTriangle& triangle) = 0;
91  virtual void DoPushLine(const VisualLine& line) { KY_UNUSED(line); }
92  virtual void DoPushText(const VisualText& text) { KY_UNUSED(text); }
93 
95  virtual void DoEnd() = 0;
96 
97  // We may consider using this prototype instead of void DoPushLine(const VisualLine& line):
98  // void DoPushLine(const Vec3f& A, const Vec3f& B, Color color, KyFloat32 width)
99 };
100 
105 class IVisualGeometryFactory : public RefCountBase<IVisualGeometry, MemStat_VisualSystem>
106 {
107 public:
108  virtual ~IVisualGeometryFactory() {}
109  virtual Kaim::Ptr<IVisualGeometry> CreateIVisualGeometryForDatabase(KyUInt32 databaseIdx) = 0;
110  virtual void OnDatabaseClear(KyUInt32 databaseIdx) = 0;
111 };
112 
113 }
114 
std::uint32_t KyUInt32
uint32_t
Definition: types.h:29
Used in IVisualGeometry::DoPushLine(). Coordinates are Navigation (z-up, meters). ...
Definition: ivisualgeometry.h:29
Used in IVisualGeometry::DoPushTriangle(). Coordinates are Navigation (z-up, meters).
Definition: ivisualgeometry.h:18
IVisualGeometryFactory is an abstract base class for an object that accepts that can instantiate obje...
Definition: ivisualgeometry.h:105
VisualGeometryPrimitiveCounts is passed to IVisualGeometry::DoBegin(primitiveCounts) so that the IVis...
Definition: ivisualgeometry.h:55
Used in IVisualGeometry::DoPushText(). Coordinates are Navigation (z-up, meters). ...
Definition: ivisualgeometry.h:40
The Autodesk Navigation namespace.
Definition: gamekitcrowddispersion.cpp:17
RGBA color.
Definition: color.h:16
virtual void DoPushTriangle(const VisualTriangle &triangle)=0
DoPushXXX() functions parameters have Navigation (z-up, meters) coordinates.
virtual void DoEnd()=0
This method is called by the IVisualGeometryBuilder when the passing of triangles/lines/texts has fin...
virtual void DoBegin(const VisualGeometryPrimitiveCounts &primitiveCounts)=0
This method is called by the IVisualGeometryBuilder when it begins the process of passing triangles/l...
3d vector using 32bits floating points.
Definition: vec3f.h:16
IVisualGeometry is an abstract base class that displays Triangles, Lines, and Texts.
Definition: ivisualgeometry.h:76