Bläddra i källkod

fix LuaQuaternionBox

mikymod 12 år sedan
förälder
incheckning
e19a054f11
1 ändrade filer med 16 tillägg och 18 borttagningar
  1. 16 18
      engine/lua/LuaQuaternionBox.cpp

+ 16 - 18
engine/lua/LuaQuaternionBox.cpp

@@ -38,20 +38,19 @@ static int quaternionbox_new(lua_State* L)
 	LuaStack stack(L);
 
 	Quaternion q;
+	if (stack.num_args() == 1)
+	{
+		q = stack.get_quaternion(1);
+	}
 	if (stack.num_args() == 2)
 	{
-		const Vector3& v = stack.get_vector3(1);
-		q.x = v.x;
-		q.y = v.y;
-		q.z = v.z;
-		q.w = stack.get_float(2);
+		Quaternion quat(stack.get_vector3(1), stack.get_float(2));
+		q = quat;
 	}
 	else if (stack.num_args() == 4)
 	{
-		q.x = stack.get_float(1);
-		q.y = stack.get_float(2);
-		q.z = stack.get_float(3);
-		q.w = stack.get_float(4);
+		Quaternion quat(stack.get_float(1), stack.get_float(2),	stack.get_float(3),	stack.get_float(4));
+		q = quat;
 	}
 
 	stack.push_quaternionbox(q);
@@ -73,20 +72,19 @@ static int quaternionbox_store(lua_State* L)
 
 	Quaternion& q = stack.get_quaternionbox(1);
 	
+	if (stack.num_args() == 2)
+	{
+		q = stack.get_quaternion(2);
+	}
 	if (stack.num_args() == 3)
 	{
-		const Vector3& v = stack.get_vector3(1);
-		q.x = v.x;
-		q.y = v.y;
-		q.z = v.z;
-		q.w = stack.get_float(2);
+		Quaternion quat(stack.get_vector3(2), stack.get_float(3));
+		q = quat;
 	}
 	else if (stack.num_args() == 5)
 	{
-		q.x = stack.get_float(1);
-		q.y = stack.get_float(2);
-		q.z = stack.get_float(3);
-		q.w = stack.get_float(4);
+		Quaternion quat(stack.get_float(2), stack.get_float(3),	stack.get_float(4),	stack.get_float(5));
+		q = quat;
 	}
 	return 0;
 }