aboutsummaryrefslogtreecommitdiff
path: root/dep/g3dlite/source/Vector3int32.cpp
diff options
context:
space:
mode:
authorjackpoz <giacomopoz@gmail.com>2014-08-22 16:58:23 +0200
committerjackpoz <giacomopoz@gmail.com>2014-08-22 21:00:56 +0200
commit5e8277e923c5545a15bae7c740ab6afaa597a59f (patch)
tree4cf5212c080588a7e868ee60134fc7fff51e400a /dep/g3dlite/source/Vector3int32.cpp
parenta63aa858dcb400eafb97eed1f590e34c27d934a4 (diff)
Core/Dependencies: Update G3D to v9.0 r4036
Diffstat (limited to 'dep/g3dlite/source/Vector3int32.cpp')
-rw-r--r--dep/g3dlite/source/Vector3int32.cpp83
1 files changed, 79 insertions, 4 deletions
diff --git a/dep/g3dlite/source/Vector3int32.cpp b/dep/g3dlite/source/Vector3int32.cpp
index 3bd8e9f2bc2..a4867ba01c0 100644
--- a/dep/g3dlite/source/Vector3int32.cpp
+++ b/dep/g3dlite/source/Vector3int32.cpp
@@ -4,7 +4,7 @@
@author Morgan McGuire, http://graphics.cs.williams.edu
@created 2008-07-01
- @edited 2008-07-01
+ @edited 2010-10-20
*/
#include "G3D/platform.h"
@@ -15,13 +15,76 @@
#include "G3D/BinaryInput.h"
#include "G3D/BinaryOutput.h"
#include "G3D/format.h"
+#include "G3D/Vector2int32.h"
+#include "G3D/Vector2int16.h"
+#include "G3D/Any.h"
namespace G3D {
+Vector3int32 iFloor(const Vector3& v) {
+ return Vector3int32(iFloor(v.x), iFloor(v.y), iFloor(v.z));
+}
+
+Vector3int32::Vector3int32(const Any& any) {
+ *this = Vector3int32();
+ any.verifyNameBeginsWith("Vector3int32", "Point3int32");
+
+ switch (any.type()) {
+ case Any::TABLE:
+
+ for (Any::AnyTable::Iterator it = any.table().begin(); it.isValid(); ++it) {
+ const std::string& key = toLower(it->key);
+
+ if (key == "x") {
+ x = it->value;
+ } else if (key == "y") {
+ y = it->value;
+ } else if (key == "z") {
+ z = it->value;
+ } else {
+ any.verify(false, "Illegal key: " + it->key);
+ }
+ }
+ break;
+
+ case Any::ARRAY:
+
+ (void)any.name();
+ if (any.size() == 1) {
+ x = y = z = any[0];
+ } else {
+ any.verifySize(3);
+ x = any[0];
+ y = any[1];
+ z = any[2];
+ }
+ break;
+
+ default:
+ any.verify(false, "Bad Vector3int32 constructor");
+ }
+}
+
+
+Any Vector3int32::toAny() const {
+ Any a(Any::ARRAY, "Vector3int32");
+ a.append(x, y, z);
+ return a;
+}
+
Vector3int32::Vector3int32(const class Vector3& v) {
- x = (int32)iFloor(v.x + 0.5);
- y = (int32)iFloor(v.y + 0.5);
- z = (int32)iFloor(v.z + 0.5);
+ x = (int32)(v.x + 0.5);
+ y = (int32)(v.y + 0.5);
+ z = (int32)(v.z + 0.5);
+}
+
+Vector3int32::Vector3int32(const class Vector2int32& v, int _z) : x(v.x), y(v.y), z(_z) {}
+
+Vector3int32::Vector3int32(const class Vector2int16& v, int _z) : x(v.x), y(v.y), z(_z) {}
+
+
+Vector3int32 Vector3int32::truncate(const class Vector3& v) {
+ return Vector3int32(int32(v.x), int32(v.y), int32(v.z));
}
@@ -54,4 +117,16 @@ std::string Vector3int32::toString() const {
return G3D::format("(%d, %d, %d)", x, y, z);
}
+//----------------------------------------------------------------------------
+// 2-char swizzles
+
+Vector2int32 Vector3int32::xx() const { return Vector2int32 (x, x); }
+Vector2int32 Vector3int32::yx() const { return Vector2int32 (y, x); }
+Vector2int32 Vector3int32::zx() const { return Vector2int32 (z, x); }
+Vector2int32 Vector3int32::xy() const { return Vector2int32 (x, y); }
+Vector2int32 Vector3int32::yy() const { return Vector2int32 (y, y); }
+Vector2int32 Vector3int32::zy() const { return Vector2int32 (z, y); }
+Vector2int32 Vector3int32::xz() const { return Vector2int32 (x, z); }
+Vector2int32 Vector3int32::yz() const { return Vector2int32 (y, z); }
+Vector2int32 Vector3int32::zz() const { return Vector2int32 (z, z); }
}