Nebula
Loading...
Searching...
No Matches
velocity.h
Go to the documentation of this file.
1#pragma once
2#include "core/types.h"
3#include "game/entity.h"
4#include "math/vec3.h"
5//------------------------------------------------------------------------------
6namespace Game
7{
8
9struct Velocity : public Math::vec3
10{
11 using Math::vec3::vec3;// default constructor
13 {
14 this->load(&v.x);
15 }
16
17 struct Traits;
18};
19
21{
22 using Math::vec3::vec3; // default constructor
24 {
25 this->load(&v.x);
26 }
27
28 struct Traits;
29};
30
31//------------------------------------------------------------------------------
35{
36 Traits() = delete;
37 using type = Velocity;
38 static constexpr auto name = "Velocity";
39 static constexpr auto fully_qualified_name = "Game.Velocity";
40 static constexpr size_t num_fields = 3;
41 static constexpr const char* field_names[num_fields] = {
42 "x",
43 "y",
44 "z"
45 };
46 static constexpr const char* field_typenames[num_fields] = {
47 "float",
48 "float",
49 "float"
50 };
51 using field_types = std::tuple<float, float, float>;
52 static constexpr size_t field_byte_offsets[num_fields] = {
53 offsetof(Velocity, x),
54 offsetof(Velocity, y),
55 offsetof(Velocity, z)
56 };
57};
58
59//------------------------------------------------------------------------------
63{
64 Traits() = delete;
66 static constexpr auto name = "AngularVelocity";
67 static constexpr auto fully_qualified_name = "Game.AngularVelocity";
68 static constexpr size_t num_fields = 3;
69 static constexpr const char* field_names[num_fields] = {
70 "x",
71 "y",
72 "z"
73 };
74 static constexpr const char* field_typenames[num_fields] = {
75 "float",
76 "float",
77 "float"
78 };
79 using field_types = std::tuple<float, float, float>;
80 static constexpr size_t field_byte_offsets[num_fields] = {
81 offsetof(AngularVelocity, x),
82 offsetof(AngularVelocity, y),
83 offsetof(AngularVelocity, z)
84 };
85};
86
87} // namespace Game
Definition orientation.h:7
Definition velocity.h:63
static constexpr size_t num_fields
Definition velocity.h:68
static constexpr auto name
Definition velocity.h:66
static constexpr size_t field_byte_offsets[num_fields]
Definition velocity.h:80
static constexpr const char * field_names[num_fields]
Definition velocity.h:69
static constexpr const char * field_typenames[num_fields]
Definition velocity.h:74
std::tuple< float, float, float > field_types
Definition velocity.h:79
static constexpr auto fully_qualified_name
Definition velocity.h:67
Definition velocity.h:21
AngularVelocity(Math::vec3 const &v)
Definition velocity.h:23
Definition velocity.h:35
static constexpr size_t num_fields
Definition velocity.h:40
static constexpr size_t field_byte_offsets[num_fields]
Definition velocity.h:52
static constexpr const char * field_names[num_fields]
Definition velocity.h:41
static constexpr auto fully_qualified_name
Definition velocity.h:39
static constexpr const char * field_typenames[num_fields]
Definition velocity.h:46
std::tuple< float, float, float > field_types
Definition velocity.h:51
static constexpr auto name
Definition velocity.h:38
Definition velocity.h:10
Velocity(Math::vec3 const &v)
Definition velocity.h:12
A 3D vector.
Definition vec3.h:39
float v[3]
Definition vec3.h:96
vec3()=default
default constructor, NOTE: does NOT setup components!
void load(const scalar *ptr)
load content from 16-byte-aligned memory
Definition vec3.h:161
float x
Definition vec3.h:93
float z
Definition vec3.h:93
float y
Definition vec3.h:93