Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/WolfireGames/overgrowth.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Math/vec4.h')
-rw-r--r--Source/Math/vec4.h200
1 files changed, 99 insertions, 101 deletions
diff --git a/Source/Math/vec4.h b/Source/Math/vec4.h
index fae5a41e..bf156686 100644
--- a/Source/Math/vec4.h
+++ b/Source/Math/vec4.h
@@ -26,109 +26,107 @@
#include <iostream>
-class vec4{
- public:
- float entries[4];
-
- inline float& operator[](const int which) {
- return entries[which];
- }
- inline const float& operator[](const int which) const {
- return entries[which];
- }
-
- inline explicit vec4() {
- entries[0] = 0.0f;
- entries[1] = 0.0f;
- entries[2] = 0.0f;
- entries[3] = 1.0f;
- }
-
- inline vec4(float val) {
- entries[0] = val;
- entries[1] = val;
- entries[2] = val;
- entries[3] = val;
- }
-
- inline vec4(float newx, float newy, float newz, float neww = 1.0f) {
- entries[0] = newx;
- entries[1] = newy;
- entries[2] = newz;
- entries[3] = neww;
- }
-
- inline vec4(const vec3 &vec, float val = 1.0f) {
- entries[0] = vec[0];
- entries[1] = vec[1];
- entries[2] = vec[2];
- entries[3] = val;
- }
-
- inline vec4& operator=(float param){
- entries[0]=param;
- entries[1]=param;
- entries[2]=param;
- entries[3]=param;
- return *this;
- }
-
- inline vec4& operator=(const vec4 &param){
- entries[0]=param.entries[0];
- entries[1]=param.entries[1];
- entries[2]=param.entries[2];
- entries[3]=param.entries[3];
- return *this;
- }
-
- inline vec4& operator=(const vec3 &param){
- entries[0]=param.entries[0];
- entries[1]=param.entries[1];
- entries[2]=param.entries[2];
- return *this;
- }
-
- inline const float& x() const { return entries[0]; }
- inline const float& y() const { return entries[1]; }
- inline const float& z() const { return entries[2]; }
- inline const float& w() const { return entries[3]; }
- inline const float& r() const { return entries[0]; }
- inline const float& g() const { return entries[1]; }
- inline const float& b() const { return entries[2]; }
- inline const float& a() const { return entries[3]; }
- inline const float& angle() const { return entries[3]; }
- inline float& x() { return entries[0]; }
- inline float& y() { return entries[1]; }
- inline float& z() { return entries[2]; }
- inline float& w() { return entries[3]; }
- inline float& r() { return entries[0]; }
- inline float& g() { return entries[1]; }
- inline float& b() { return entries[2]; }
- inline float& a() { return entries[3]; }
- inline float& angle() { return entries[3]; }
-
- inline vec2 xy() const {
- return vec2(entries[0], entries[1]);
- }
-
- inline vec3 xyz() const {
- return vec3(entries[0], entries[1], entries[2]);
- }
-
- inline void ToArray(float *array) const {
- array[0] = entries[0];
- array[1] = entries[1];
- array[2] = entries[2];
- array[3] = entries[3];
- }
- inline float *operator*()
- {
- return entries;
- }
+class vec4 {
+ public:
+ float entries[4];
+
+ inline float& operator[](const int which) {
+ return entries[which];
+ }
+ inline const float& operator[](const int which) const {
+ return entries[which];
+ }
+
+ inline explicit vec4() {
+ entries[0] = 0.0f;
+ entries[1] = 0.0f;
+ entries[2] = 0.0f;
+ entries[3] = 1.0f;
+ }
+
+ inline vec4(float val) {
+ entries[0] = val;
+ entries[1] = val;
+ entries[2] = val;
+ entries[3] = val;
+ }
+
+ inline vec4(float newx, float newy, float newz, float neww = 1.0f) {
+ entries[0] = newx;
+ entries[1] = newy;
+ entries[2] = newz;
+ entries[3] = neww;
+ }
+
+ inline vec4(const vec3& vec, float val = 1.0f) {
+ entries[0] = vec[0];
+ entries[1] = vec[1];
+ entries[2] = vec[2];
+ entries[3] = val;
+ }
+
+ inline vec4& operator=(float param) {
+ entries[0] = param;
+ entries[1] = param;
+ entries[2] = param;
+ entries[3] = param;
+ return *this;
+ }
+
+ inline vec4& operator=(const vec4& param) {
+ entries[0] = param.entries[0];
+ entries[1] = param.entries[1];
+ entries[2] = param.entries[2];
+ entries[3] = param.entries[3];
+ return *this;
+ }
+
+ inline vec4& operator=(const vec3& param) {
+ entries[0] = param.entries[0];
+ entries[1] = param.entries[1];
+ entries[2] = param.entries[2];
+ return *this;
+ }
+
+ inline const float& x() const { return entries[0]; }
+ inline const float& y() const { return entries[1]; }
+ inline const float& z() const { return entries[2]; }
+ inline const float& w() const { return entries[3]; }
+ inline const float& r() const { return entries[0]; }
+ inline const float& g() const { return entries[1]; }
+ inline const float& b() const { return entries[2]; }
+ inline const float& a() const { return entries[3]; }
+ inline const float& angle() const { return entries[3]; }
+ inline float& x() { return entries[0]; }
+ inline float& y() { return entries[1]; }
+ inline float& z() { return entries[2]; }
+ inline float& w() { return entries[3]; }
+ inline float& r() { return entries[0]; }
+ inline float& g() { return entries[1]; }
+ inline float& b() { return entries[2]; }
+ inline float& a() { return entries[3]; }
+ inline float& angle() { return entries[3]; }
+
+ inline vec2 xy() const {
+ return vec2(entries[0], entries[1]);
+ }
+
+ inline vec3 xyz() const {
+ return vec3(entries[0], entries[1], entries[2]);
+ }
+
+ inline void ToArray(float* array) const {
+ array[0] = entries[0];
+ array[1] = entries[1];
+ array[2] = entries[2];
+ array[3] = entries[3];
+ }
+ inline float* operator*() {
+ return entries;
+ }
};
-inline std::ostream& operator<<(std::ostream& os, const vec4& v )
-{
+inline std::ostream& operator<<(std::ostream& os, const vec4& v) {
os << "vec4(" << v[0] << "," << v[1] << "," << v[2] << "," << v[3] << ")";
return os;
}