4#include "EntityDefinition.h"
5#include "Components/Core/DynamicComponent.h"
7#include "Resources/Resources.h"
10#include <glm/vec4.hpp>
19 struct BeamGroupComponent;
20 struct DataSetComponent;
24 enum class AnnotationType
30 enum class ConnectedTicksMode {
37 enum class AnnotationPosition {
44 static void registerType();
46 void initialize(
Context * context);
51 bool individualBeams =
false;
52 ConnectedTicksMode connectedTicks = ConnectedTicksMode::None;
53 AnnotationPosition annotationPosition = AnnotationPosition::Front;
54 bool showVesselCoordsys =
false;
55 bool showBoundingFrustum =
false;
56 bool showAABB =
false;
58 AnnotationType annotationType = AnnotationType::Range;
59 int numTickMarks = 10;
60 float tickLength = 0.2f;
61 std::string unit =
"";
62 float widthScaleAlongship = 1.f;
63 float widthScaleAthwartship = 1.f;
64 float depthStart = std::numeric_limits<float>::quiet_NaN();
65 float depthRange = std::numeric_limits<float>::quiet_NaN();
66 float verticalDepthMax = std::numeric_limits<float>::quiet_NaN();
72 uint32_t configGen = 0;
79 void createTickGeometryAndAnnotations(
Context* context,
80 const std::vector<float>& directionX,
81 const std::vector<float>& directionY,
82 const uint32_t minorCount,
83 const uint32_t majorCount,
84 const bool minorClosed,
87 void addAnnotations(std::vector<glm::vec3> &V,
88 std::vector<uint32_t> &indices,
89 size_t tickA,
size_t tickB,
float depthStep,
90 const std::vector<glm::vec3> &dirs,
91 const glm::vec3 & translation,
92 float maxDistance,
bool showTicks,
bool connectTicks);
94 void createBeamCenterGeometry(std::vector<glm::vec3>& V,
95 std::vector<uint32_t>& indices,
97 const std::vector<float>& directionX,
98 const std::vector<float>& directionY,
103 void createBeamExtentGeometry(std::vector<glm::vec3>& V,
104 std::vector<uint32_t>& indices,
106 const std::vector<float>& directionX,
107 const std::vector<float>& directionY,
114template<>
inline Cogs::StringView getName<Cogs::Core::EchoSounder::ConnectedTicksMode>() {
return "EchoConnectedTicksMode"; }
115template<>
inline Cogs::StringView getName<Cogs::Core::EchoSounder::AnnotationType>() {
return "EchoAnnotationType"; }
116template<>
inline Cogs::StringView getName<Cogs::Core::EchoSounder::AnnotationPosition>() {
return "EchoAnnotationPosition"; }
118template<>
inline Cogs::StringView getName<Cogs::Core::EchoSounder::PingOutlineComponent>() {
return "EchoPingOutlineComponent"; }
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Base class for components implementing dynamic behavior.
Provides a weakly referenced view over the contents of a string.
std::shared_ptr< ComponentModel::Entity > EntityPtr
Smart pointer for Entity access.
@ Front
Front face of primitives discarded before rasterization.
Contains all Cogs related functionality.