Pārlūkot izejas kodu

improve LuaActor

mikymod 12 gadi atpakaļ
vecāks
revīzija
e8d411d6af
1 mainītis faili ar 69 papildinājumiem un 1 dzēšanām
  1. 69 1
      engine/lua/LuaActor.cpp

+ 69 - 1
engine/lua/LuaActor.cpp

@@ -35,10 +35,10 @@ namespace crown
 CE_EXPORT int actor_enable_gravity(lua_State* L)
 {
 	LuaStack stack(L);
-
 	Actor* actor = stack.get_actor(1);
 
 	actor->enable_gravity();
+
 	return 0;
 }
 
@@ -52,6 +52,28 @@ CE_EXPORT int actor_disable_gravity(lua_State* L)
 	return 0;
 }
 
+//-----------------------------------------------------------------------------
+CE_EXPORT int actor_enable_collision(lua_State* L)
+{
+	LuaStack stack(L);
+	Actor* actor = stack.get_actor(1);
+
+	actor->enable_collision();
+
+	return 0;
+}
+
+//-----------------------------------------------------------------------------
+CE_EXPORT int actor_disable_collision(lua_State* L)
+{
+	LuaStack stack(L);
+	Actor* actor = stack.get_actor(1);
+
+	actor->disable_collision();
+
+	return 0;
+}
+
 //-----------------------------------------------------------------------------
 CE_EXPORT int actor_is_static(lua_State* L)
 {
@@ -166,6 +188,47 @@ CE_EXPORT int actor_set_angular_velocity(lua_State* L)
 	return 0;
 }
 
+//-----------------------------------------------------------------------------
+CE_EXPORT int actor_add_impulse(lua_State* L)
+{
+	LuaStack stack(L);
+
+	Actor* actor = stack.get_actor(1);
+	const Vector3& impulse = stack.get_vector3(2);	
+
+	actor->add_impulse(impulse);
+
+	return 0;
+}
+
+//-----------------------------------------------------------------------------
+CE_EXPORT int actor_add_impulse_at(lua_State* L)
+{
+	LuaStack stack(L);
+
+	Actor* actor = stack.get_actor(1);
+	const Vector3& impulse = stack.get_vector3(2);
+	const Vector3& pos = stack.get_vector3(3);
+
+	actor->add_impulse_at(impulse, pos);
+
+	return 0;
+}
+
+//-----------------------------------------------------------------------------
+CE_EXPORT int actor_push(lua_State* L)
+{
+	LuaStack stack(L);
+
+	Actor* actor = stack.get_actor(1);
+	const Vector3& vel = stack.get_vector3(2);
+	const float mass = stack.get_float(3);
+
+	actor->push(vel, mass);
+
+	return 0;
+}
+
 //-----------------------------------------------------------------------------
 CE_EXPORT int actor_is_sleeping(lua_State* L)
 {
@@ -193,6 +256,8 @@ void load_actor(LuaEnvironment& env)
 {
 	env.load_module_function("Actor", "enable_gravity",			actor_enable_gravity);
 	env.load_module_function("Actor", "disable_gravity",		actor_disable_gravity);
+	env.load_module_function("Actor", "enable_collision",		actor_enable_collision);
+	env.load_module_function("Actor", "disable_collision",		actor_disable_collision);
 	env.load_module_function("Actor", "is_static",				actor_is_static);
 	env.load_module_function("Actor", "is_dynamic",				actor_is_dynamic);
 	env.load_module_function("Actor", "linear_damping",			actor_linear_damping);
@@ -203,6 +268,9 @@ void load_actor(LuaEnvironment& env)
 	env.load_module_function("Actor", "set_linear_velocity",	actor_set_linear_velocity);
 	env.load_module_function("Actor", "angular_velocity",		actor_angular_velocity);
 	env.load_module_function("Actor", "set_angular_velocity",	actor_set_angular_velocity);
+	env.load_module_function("Actor", "add_impulse",			actor_add_impulse);
+	env.load_module_function("Actor", "add_impulse_at",			actor_add_impulse_at);
+	env.load_module_function("Actor", "push",					actor_push);
 	env.load_module_function("Actor", "is_sleeping",			actor_is_sleeping);
 	env.load_module_function("Actor", "wake_up",				actor_wake_up);
 }