Cogs.Core
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
Cogs::Core::SeaCurrentsComponent Struct Reference

Component for displaying surface currents based on the IHO S111 standard. More...

#include <SeaCurrentsComponent.h>

Inheritance diagram for Cogs::Core::SeaCurrentsComponent:
Cogs::ComponentModel::Component

Public Member Functions

bool isValid () const
 
- Public Member Functions inherited from Cogs::ComponentModel::Component
class EntitygetContainer () 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 ComponentgetComponent (const Reflection::Name &name) const
 
COGSFOUNDATION_API ComponentgetComponent (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::TypegetType () 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 Public Member Functions inherited from Cogs::ComponentModel::Component
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.
 

Detailed Description

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.

Member Function Documentation

◆ isValid()

bool Cogs::Core::SeaCurrentsComponent::isValid ( ) const

Definition at line 27 of file SeaCurrentsComponent.cpp.

◆ registerType()

void Cogs::Core::SeaCurrentsComponent::registerType ( )
static

Definition at line 5 of file SeaCurrentsComponent.cpp.

Member Data Documentation

◆ angles

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.

◆ ignorePriorities

bool Cogs::Core::SeaCurrentsComponent::ignorePriorities

Ignore priorities and draw all arrows.

Definition at line 41 of file SeaCurrentsComponent.h.

◆ positions

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.

◆ priorities

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.

◆ priorityLevel

int Cogs::Core::SeaCurrentsComponent::priorityLevel

Hide arrows with priority greater than this.

Definition at line 40 of file SeaCurrentsComponent.h.

◆ scale

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.

◆ scalingMode

ArrowScalingMode Cogs::Core::SeaCurrentsComponent::scalingMode

How the arrows scale with the speed of the currents.

Definition at line 42 of file SeaCurrentsComponent.h.

◆ speeds

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.


The documentation for this struct was generated from the following files: