Browse Source

Merge pull request #5201 from Hinsbart/quat_op

Expose missing Quaternion operators.
Rémi Verschelde 9 years ago
parent
commit
60fa2b9815
1 changed files with 12 additions and 3 deletions
  1. 12 3
      core/variant_op.cpp

+ 12 - 3
core/variant_op.cpp

@@ -477,7 +477,7 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant&
 					DEFAULT_OP_FAIL(MATRIX32);
 					DEFAULT_OP_LOCALMEM(+,VECTOR3,Vector3);
 					DEFAULT_OP_FAIL(PLANE);
-					DEFAULT_OP_FAIL(QUAT);
+					DEFAULT_OP_LOCALMEM(+, QUAT, Quat);
 					DEFAULT_OP_FAIL(_AABB);
 					DEFAULT_OP_FAIL(MATRIX3);
 					DEFAULT_OP_FAIL(TRANSFORM);
@@ -535,7 +535,7 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant&
 				DEFAULT_OP_FAIL(MATRIX32);
 				DEFAULT_OP_LOCALMEM(-,VECTOR3,Vector3);
 				DEFAULT_OP_FAIL(PLANE);
-				DEFAULT_OP_FAIL(QUAT);
+				DEFAULT_OP_LOCALMEM(-, QUAT, Quat);
 				DEFAULT_OP_FAIL(_AABB);
 				DEFAULT_OP_FAIL(MATRIX3);
 				DEFAULT_OP_FAIL(TRANSFORM);
@@ -597,6 +597,9 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant&
 
 							_RETURN( *reinterpret_cast<const Quat*>(p_a._data._mem) * *reinterpret_cast<const Quat*>(p_b._data._mem) );
 						} break;
+						case REAL: {
+							_RETURN( *reinterpret_cast<const Quat*>(p_a._data._mem) * p_b._data._real);
+						} break;
 					};
 					r_valid=false;
 					return;
@@ -699,7 +702,13 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant&
 				DEFAULT_OP_FAIL(MATRIX32);
 				DEFAULT_OP_LOCALMEM_NUM(/,VECTOR3,Vector3);
 				DEFAULT_OP_FAIL(PLANE);
-				DEFAULT_OP_FAIL(QUAT);
+				case QUAT: {
+					if (p_b.type != REAL) {
+						r_valid = false;
+						return;
+					}
+					_RETURN( *reinterpret_cast<const Quat*>(p_a._data._mem) / p_b._data._real);
+				} break;
 				DEFAULT_OP_FAIL(_AABB);
 				DEFAULT_OP_FAIL(MATRIX3);
 				DEFAULT_OP_FAIL(TRANSFORM);