allow custom wrapper functions
[supertux.git] / src / object / scripted_object.cpp
index 82f72e9..6293881 100644 (file)
@@ -2,15 +2,15 @@
 
 #include <stdexcept>
 
-#include "scripted_object.h"
-#include "video/drawing_context.h"
-#include "sprite/sprite_manager.h"
-#include "resources.h"
-#include "object_factory.h"
-#include "math/vector.h"
+#include "scripted_object.hpp"
+#include "video/drawing_context.hpp"
+#include "sprite/sprite_manager.hpp"
+#include "resources.hpp"
+#include "object_factory.hpp"
+#include "math/vector.hpp"
 
 ScriptedObject::ScriptedObject(const lisp::Lisp& lisp)
-  : solid(true), physic_enabled(true), visible(true)
+  : solid(true), physic_enabled(true), visible(true), new_vel_set(false)
 {
   lisp.get("name", name);
   if(name == "")
@@ -69,7 +69,8 @@ ScriptedObject::get_pos_y()
 void
 ScriptedObject::set_velocity(float x, float y)
 {
-  physic.set_velocity(x, y);
+  new_vel = Vector(x, y);
+  new_vel_set = true;
 }
 
 float
@@ -115,11 +116,15 @@ ScriptedObject::get_name()
 }
 
 void
-ScriptedObject::action(float elapsed_time)
+ScriptedObject::update(float elapsed_time)
 {
   if(!physic_enabled)
     return;
 
+  if(new_vel_set) {
+    physic.set_velocity(new_vel.x, new_vel.y);
+    new_vel_set = false;
+  }
   movement = physic.get_movement(elapsed_time);
 }