Cogs.Core
|
Component for displaying surface currents based on the IHO S111 standard. More...
#include <SeaCurrentsComponent.h>
Public Member Functions | |
bool | isValid () const |
![]() | |
class Entity * | getContainer () const |
Get the container currently owning this component instance. | |
void | setContainer (class Entity *container) |
Set the container owning this component instance. | |
template<typename ComponentType > | |
ComponentType * | getComponent () const |
COGSFOUNDATION_API Component * | getComponent (const Reflection::Name &name) const |
COGSFOUNDATION_API Component * | getComponent (const Reflection::TypeId &id) const |
template<typename ComponentType > | |
ComponentHandle | getComponentHandle () const |
COGSFOUNDATION_API ComponentHandle | getComponentHandle (const Reflection::Name &name) const |
COGSFOUNDATION_API ComponentHandle | getComponentHandle (const Reflection::TypeId &id) const |
void | setActive () |
Sets the component to the ComponentFlags::Active state. | |
bool | isActive () const |
Gets if the component is currently set to the ComponentFlags::Active state. | |
void | setChanged () |
Sets the component to the ComponentFlags::Changed state with carry. | |
void | setChangedTransient () |
Sets the component to the ComponentFlags::Changed state without carry. | |
void | setFieldChanged (const Reflection::FieldId fieldId) |
Sets the component to the ComponentFlags::Changed state without carry. | |
template<typename ClassType , typename FieldType > | |
void | setFieldChanged (FieldType ClassType::*field) |
Sets a flag indicating that the given field has changed. | |
void | setFieldChangedTransient (const Reflection::FieldId fieldId) |
Sets the component to the ComponentFlags::Changed state without carry. | |
bool | hasChanged () const |
bool | hasAnyfieldChanged () const |
Gets if any fields have been changed. | |
bool | hasFieldChanged (const Reflection::FieldId fieldId) const |
Gets if the field with the given id on this component instance has changed. | |
template<typename ClassType , typename FieldType > | |
bool | hasFieldChanged (FieldType ClassType::*field) const |
Gets if the given field has changed. | |
void | resetCarryChanged () |
Reset the CarryChanged flag. Called at start of redraw. See ComponentFlags::CarryChanged. | |
void | resetChanged () |
Resets the changed state of the component, respecting any carry state set. | |
template<typename ClassType , typename FieldType > | |
Reflection::FieldId | getFieldId (FieldType ClassType::*field) const |
Gets field ID of the given field. | |
void | resetFieldsChanged () |
Resets the state of all changed field flags. | |
void | resetFieldChanged (const Reflection::FieldId fieldId) |
Resets the changed state of the given fieldId. | |
template<typename ClassType , typename FieldType > | |
void | resetFieldChanged (FieldType ClassType::*field) |
Resets the changed state of the given field. | |
constexpr void | setFlags (const uint32_t flags) |
Override all flags of the Component, setting the given flags. | |
constexpr void | setFlag (const uint32_t flag) |
Set the given flags. Does not override the currently set flags. | |
constexpr void | unsetFlag (const uint32_t flag) |
Unset the given flag. Does not remove the status of other than the given flags. | |
constexpr bool | isSet (const uint32_t flag) const |
Checks if the given flag is set. Requires exact bit match if test of several bits. | |
constexpr void | setTypeId (const Reflection::TypeId typeId) |
Set the Reflection::TypeId of the component. | |
constexpr Reflection::TypeId | getTypeId () const |
Get the Reflection::TypeId of the component. | |
COGSFOUNDATION_API const Reflection::Type & | getType () const |
Get the full Reflection::Type of the component. | |
constexpr void | setIndex (const ComponentIndex index) |
Set the components pool index. For internal use only. | |
constexpr ComponentIndex | getIndex () const |
Get the components pool index. For internal use only. | |
constexpr void | setGeneration (uint16_t generation) |
Sets the component generation. | |
constexpr uint16_t | getGeneration () const |
Gets the component generation. | |
size_t | hash (size_t hashValue=Cogs::hash()) const |
Calculates a hash of this component's members. | |
Static Public Member Functions | |
static void | registerType () |
![]() | |
static COGSFOUNDATION_API void | registerType () |
Register the Component type in the global type database. | |
static COGSFOUNDATION_API Reflection::TypeId | getComponentTypeId (const StringView &name) |
Get the type id of the component type with the given name. | |
Public Attributes | |
float | scale = 1.0f |
Fixed scale applied to every arrow, in addition to any scaling for speed. | |
std::vector< glm::vec2 > | positions |
Position of each arrow in this component in world coordinates. | |
std::vector< float > | speeds |
Speed in knots of the current at each position. | |
std::vector< float > | angles |
Compass direction of the current at each position. | |
std::vector< int > | priorities |
Priority of each arrow. | |
int | priorityLevel |
Hide arrows with priority greater than this. | |
bool | ignorePriorities |
Ignore priorities and draw all arrows. | |
ArrowScalingMode | scalingMode |
How the arrows scale with the speed of the currents. | |
Component for displaying surface currents based on the IHO S111 standard.
The extension api has functions for reading S111 HDF5 data from file or memory. The values can also be set directly on the component using the component properties if S111 files are unavailable or impractical.
As the S111 standard is made for 2D map clients and is assuming a top down orthographic projection, there have been compromises. A fixed screen size for the arrows does not work when perspective projection is used, so this component is using a fixed world size instead. What a reasonable world size for the arrows should be is left to the applications, but for gridded datasets, setting the scale equal to the grid resolution is a reasonable starting point
Definition at line 34 of file SeaCurrentsComponent.h.
bool Cogs::Core::SeaCurrentsComponent::isValid | ( | ) | const |
Definition at line 27 of file SeaCurrentsComponent.cpp.
|
static |
Definition at line 5 of file SeaCurrentsComponent.cpp.
std::vector<float> Cogs::Core::SeaCurrentsComponent::angles |
Compass direction of the current at each position.
Assumed to be in degrees, clockwise and with 0=north
Definition at line 38 of file SeaCurrentsComponent.h.
bool Cogs::Core::SeaCurrentsComponent::ignorePriorities |
Ignore priorities and draw all arrows.
Definition at line 41 of file SeaCurrentsComponent.h.
std::vector<glm::vec2> Cogs::Core::SeaCurrentsComponent::positions |
Position of each arrow in this component in world coordinates.
Definition at line 36 of file SeaCurrentsComponent.h.
std::vector<int> Cogs::Core::SeaCurrentsComponent::priorities |
Priority of each arrow.
Used to hide arrows to prevent overcrowding.
Definition at line 39 of file SeaCurrentsComponent.h.
int Cogs::Core::SeaCurrentsComponent::priorityLevel |
Hide arrows with priority greater than this.
Definition at line 40 of file SeaCurrentsComponent.h.
float Cogs::Core::SeaCurrentsComponent::scale = 1.0f |
Fixed scale applied to every arrow, in addition to any scaling for speed.
For gridded data setting this equal to the grid resolution should give a reasonable result
Definition at line 35 of file SeaCurrentsComponent.h.
ArrowScalingMode Cogs::Core::SeaCurrentsComponent::scalingMode |
How the arrows scale with the speed of the currents.
Definition at line 42 of file SeaCurrentsComponent.h.
std::vector<float> Cogs::Core::SeaCurrentsComponent::speeds |
Speed in knots of the current at each position.
(This will define the colour and the size of each arrow.)
Definition at line 37 of file SeaCurrentsComponent.h.