Merge branch 'experiment' of git+ssh://repo.or.cz/srv/git/glgame
[glgame.git] / src / hinge_obj.cpp
blobf51884eaab8353df82f41126ff4f8899fdca3803
1 #include "hinge_obj.h"
3 const Scalar hinge_obj::display_size = 0.06f;
5 void hinge_obj::Init_defaults()
8 mass = 0.01;
9 moment_inertia = 1.0;
10 fixed = false;
12 // удалять при деструкции не нужно - obj_Body следит за шарнирами тела
13 hinge = addBodyHingeFromCenter( Vector2D(0, 0) );
14 hinge->visible = false; // скроем шарнир, чтобы крестики не накладывались
19 hinge_obj::hinge_obj(Vector2D coord)
22 setCoords( &coord );
23 Init_defaults();
28 hinge_obj::hinge_obj(point_t point)
31 Vector2D coords;
32 coords.val.x = point.x;
33 coords.val.y = point.y;
34 setCoords( &coords );
35 Init_defaults();
39 hinge_obj::hinge_obj(Coord x, Coord y)
42 Vector2D coords;
43 coords.val.x = x;
44 coords.val.y = y;
45 setCoords( &coords );
46 Init_defaults();
51 hinge_obj::~hinge_obj()
55 void hinge_obj::display()
58 // force_point_obj::ShowDebugVector();
60 glColor3f(1.0,1.0,1.0);
62 glBegin( GL_LINES );
63 glVertex2f( -display_size, -display_size);
64 glVertex2f( display_size, display_size);
66 glVertex2f( -display_size, display_size);
67 glVertex2f( display_size, -display_size);
68 glEnd();
72 void hinge_obj::physics_forces_calculate()
75 // обычный незафиксированный движущийся шарнир
76 if(!fixed) {
78 // других внутренних сил на точку вроде не действует:
79 ApplyForce( g * mass ); // вес тела это сила тянущая его вниз
85 void hinge_obj::getDimensionsBox(Vector2D* v1, Vector2D* v2)
87 Vector2D g1(-display_size, -display_size);
88 Vector2D g2( display_size, display_size);
89 Vector2D::MergeVector( g1, v1, v2 );
90 Vector2D::MergeVector( g2, v1, v2 );