Просмотр исходного кода

Add +, -, *, / operators to Vector2 too

Daniele Bartolini 12 лет назад
Родитель
Сommit
29c20e3605
1 измененных файлов с 40 добавлено и 5 удалено
  1. 40 5
      engine/lua/LuaEnvironment.cpp

+ 40 - 5
engine/lua/LuaEnvironment.cpp

@@ -37,6 +37,11 @@ OTHER DEALINGS IN THE SOFTWARE.
 namespace crown
 {
 
+extern int vector2_add(lua_State* L);
+extern int vector2_subtract(lua_State* L);
+extern int vector2_multiply(lua_State* L);
+extern int vector2_divide(lua_State* L);
+extern int vector2_negate(lua_State* L);
 extern int vector3_add(lua_State* L);
 extern int vector3_subtract(lua_State* L);
 extern int vector3_multiply(lua_State* L);
@@ -108,31 +113,61 @@ static int crown_lua_quaternion_call(lua_State* L)
 //-----------------------------------------------------------------------------
 static int crown_lua_lightuserdata_add(lua_State* L)
 {
-	return vector3_add(L);
+	LuaStack stack(L);
+
+	if (stack.is_vector3(1))
+	{
+		return vector3_add(L);
+	}
+	return vector2_add(L);
 }
 
 //-----------------------------------------------------------------------------
 static int crown_lua_lightuserdata_sub(lua_State* L)
 {
-	return vector3_subtract(L);
+	LuaStack stack(L);
+
+	if (stack.is_vector3(1))
+	{
+		return vector3_subtract(L);
+	}
+	return vector2_subtract(L);
 }
 
 //-----------------------------------------------------------------------------
 static int crown_lua_lightuserdata_mul(lua_State* L)
 {
-	return vector3_multiply(L);
+	LuaStack stack(L);
+
+	if (stack.is_vector3(1))
+	{
+		return vector3_multiply(L);
+	}
+	return vector2_multiply(L);
 }
 
 //-----------------------------------------------------------------------------
 static int crown_lua_lightuserdata_div(lua_State* L)
 {
-	return vector3_divide(L);
+	LuaStack stack(L);
+
+	if (stack.is_vector3(1))
+	{
+		return vector3_divide(L);
+	}
+	return vector2_divide(L);
 }
 
 //-----------------------------------------------------------------------------
 static int crown_lua_lightuserdata_unm(lua_State* L)
 {
-	return vector3_negate(L);
+	LuaStack stack(L);
+
+	if (stack.is_vector3(1))
+	{
+		return vector3_negate(L);
+	}
+	return vector2_negate(L);
 }
 
 //-----------------------------------------------------------------------------