Kaynağa Gözat

Add semantic axis constants

Daniele Bartolini 11 yıl önce
ebeveyn
işleme
b1a906142a
3 değiştirilmiş dosya ile 68 ekleme ve 0 silme
  1. 14 0
      docs/lua_api.txt
  2. 6 0
      engine/core/math/vector3.h
  3. 48 0
      engine/lua/lua_vector3.cpp

+ 14 - 0
docs/lua_api.txt

@@ -78,6 +78,20 @@ Vector3
 	**angle** (a, b) : float
 		Returns the angle between the vectors *a* and *b*.
 
+	**forward** () : Vector3
+
+	**backward** () : Vector3
+
+	**left** () : Vector3
+
+	**right** () : Vector3
+
+	**up** () : Vector3
+
+	**down** () : Vector3
+
+		Returns the corresponding semantic axis.
+
 Quaternion
 ----------
 

+ 6 - 0
engine/core/math/vector3.h

@@ -44,6 +44,12 @@ namespace vector3
 	const Vector3 XAXIS = Vector3(1, 0, 0);
 	const Vector3 YAXIS = Vector3(0, 1, 0);
 	const Vector3 ZAXIS = Vector3(0, 0, 1);
+	const Vector3 FORWARD = Vector3(0, 0, 1);
+	const Vector3 BACKWARD = Vector3(0, 0, -1);
+	const Vector3 LEFT = Vector3(-1, 0, 0);
+	const Vector3 RIGHT = Vector3(1, 0, 0);
+	const Vector3 UP = Vector3(0, 1, 0);
+	const Vector3 DOWN = Vector3(0, -1, 0);
 
 	/// Returns the dot product between the vectors @a a and @a b.
 	float dot(const Vector3& a, const Vector3& b);

+ 48 - 0
engine/lua/lua_vector3.cpp

@@ -167,6 +167,48 @@ static int vector3_angle(lua_State* L)
 	return 1;
 }
 
+static int vector3_forward(lua_State* L)
+{
+	LuaStack stack(L);
+	stack.push_vector3(vector3::FORWARD);
+	return 1;
+}
+
+static int vector3_backward(lua_State* L)
+{
+	LuaStack stack(L);
+	stack.push_vector3(vector3::BACKWARD);
+	return 1;
+}
+
+static int vector3_left(lua_State* L)
+{
+	LuaStack stack(L);
+	stack.push_vector3(vector3::LEFT);
+	return 1;
+}
+
+static int vector3_right(lua_State* L)
+{
+	LuaStack stack(L);
+	stack.push_vector3(vector3::RIGHT);
+	return 1;
+}
+
+static int vector3_up(lua_State* L)
+{
+	LuaStack stack(L);
+	stack.push_vector3(vector3::UP);
+	return 1;
+}
+
+static int vector3_down(lua_State* L)
+{
+	LuaStack stack(L);
+	stack.push_vector3(vector3::DOWN);
+	return 1;
+}
+
 static int vector2_new(lua_State* L)
 {
 	LuaStack stack(L);
@@ -204,6 +246,12 @@ void load_vector3(LuaEnvironment& env)
 	env.load_module_function("Vector3", "normalize",      vector3_normalize);
 	env.load_module_function("Vector3", "distance",       vector3_distance);
 	env.load_module_function("Vector3", "angle",          vector3_angle);
+	env.load_module_function("Vector3", "forward",        vector3_forward);
+	env.load_module_function("Vector3", "backward",       vector3_backward);
+	env.load_module_function("Vector3", "left",           vector3_left);
+	env.load_module_function("Vector3", "right",          vector3_right);
+	env.load_module_function("Vector3", "up",             vector3_up);
+	env.load_module_function("Vector3", "down",           vector3_down);
 
 	env.load_module_constructor("Vector3", vector3_ctor);