Replaced Ref and RefCounter with std::shared_ptr<>
[supertux.git] / src / object / bicycle_platform.cpp
index fd63365..4ff074e 100644 (file)
 #include "supertux/sector.hpp"
 
 BicyclePlatform::BicyclePlatform(const Reader& reader) :
-  MovingSprite(reader, LAYER_OBJECTS, COLGROUP_STATIC), 
+  MovingSprite(reader, LAYER_OBJECTS, COLGROUP_STATIC),
   master(0),
-  slave(0), 
-  radius(128), 
-  angle(0), 
-  angular_speed(0), 
+  slave(0),
+  center(),
+  radius(128),
+  angle(0),
+  angular_speed(0),
+  contacts(),
   momentum(0)
 {
   center = get_pos();
 }
 
-BicyclePlatform::BicyclePlatform(BicyclePlatform* master) :
-  MovingSprite(*master), 
-  master(master), 
-  slave(this), 
-  center(master->center), 
-  radius(master->radius), 
-  angle(master->angle + M_PI), 
-  angular_speed(0), 
+BicyclePlatform::BicyclePlatform(BicyclePlatform* master_) :
+  MovingSprite(*master_),
+  master(master_),
+  slave(this),
+  center(master->center),
+  radius(master->radius),
+  angle(master->angle + M_PI),
+  angular_speed(0),
+  contacts(),
   momentum(0)
 {
   set_pos(get_pos() + Vector(master->get_bbox().get_width(), 0));
@@ -50,7 +53,7 @@ BicyclePlatform::BicyclePlatform(BicyclePlatform* master) :
   master->slave = this;
 }
 
-BicyclePlatform::~BicyclePlatform() 
+BicyclePlatform::~BicyclePlatform()
 {
   if ((this == master) && (master)) {
     slave->master = 0;
@@ -89,7 +92,7 @@ void
 BicyclePlatform::update(float elapsed_time)
 {
   if (!slave) {
-    Sector::current()->add_object(new BicyclePlatform(this));
+    Sector::current()->add_object(std::make_shared<BicyclePlatform>(this));
     return;
   }
   if (!master) {
@@ -97,10 +100,10 @@ BicyclePlatform::update(float elapsed_time)
   }
   if (this == slave) {
     angle = master->angle + M_PI;
-    while (angle < 0) { angle += 2*M_PI; } 
-    while (angle > 2*M_PI) { angle -= 2*M_PI; } 
-    Vector dest = center + Vector(cosf(angle), sinf(angle)) * radius - (bbox.get_size() * 0.5);
-    movement = dest - get_pos();
+    while (angle < 0) { angle += 2*M_PI; }
+    while (angle > 2*M_PI) { angle -= 2*M_PI; }
+    Vector dest_ = center + Vector(cosf(angle), sinf(angle)) * radius - (bbox.get_size().as_vector() * 0.5);
+    movement = dest_ - get_pos();
   }
   if (this == master) {
     float momentum_diff = momentum - slave->momentum;
@@ -112,11 +115,11 @@ BicyclePlatform::update(float elapsed_time)
     angular_speed += (angular_momentum * elapsed_time) * M_PI;
     angular_speed *= 1 - elapsed_time * 0.2;
     angle += angular_speed * elapsed_time;
-    while (angle < 0) { angle += 2*M_PI; } 
-    while (angle > 2*M_PI) { angle -= 2*M_PI; } 
+    while (angle < 0) { angle += 2*M_PI; }
+    while (angle > 2*M_PI) { angle -= 2*M_PI; }
     angular_speed = std::min(std::max(angular_speed, static_cast<float>(-128*M_PI*elapsed_time)), static_cast<float>(128*M_PI*elapsed_time));
-    Vector dest = center + Vector(cosf(angle), sinf(angle)) * radius - (bbox.get_size() * 0.5);
-    movement = dest - get_pos();
+    Vector dest_ = center + Vector(cosf(angle), sinf(angle)) * radius - (bbox.get_size().as_vector() * 0.5);
+    movement = dest_ - get_pos();
 
     center += Vector(angular_speed, 0) * elapsed_time * 32;
     slave->center += Vector(angular_speed, 0) * elapsed_time * 32;
@@ -124,6 +127,4 @@ BicyclePlatform::update(float elapsed_time)
   }
 }
 
-IMPLEMENT_FACTORY(BicyclePlatform, "bicycle-platform");
-
 /* EOF */