dtCreateObject(&this->cc(), bcbox);
double ps_b = 0;
double ps_t = 0;
+ double ps_r = 0;
dtCreateObject(&ps_b, tbox);
dtCreateObject(&ps_t, tbox);
+ dtCreateObject(&ps_r, rbox);
dtDisableCaching();
dtSetDefaultResponse(do_nothing, DT_SIMPLE_RESPONSE, stdout);
// properly position objects
+ center_shift * sin(this->ps().heading()),
0
);
+ dtSelectObject(&ps_r);
+ dtLoadIdentity();
+ cc_q = Quaternion(-this->ps().heading(), 0, 0);
+ dtRotate(cc_q[X], cc_q[Y], cc_q[Z], cc_q[W]);
+ center_shift = 2 / 2 + 0.01;
+ double center_shift_angle = this->ps().heading();
+ center_shift_angle += (this->ps().right()) ? - M_PI / 2 : + M_PI / 2;
+ dtTranslate(
+ this->ps().x2()
+ + (this->ps().x3() - this->ps().x2()) / 2
+ + center_shift * cos(center_shift_angle),
+ this->ps().y2()
+ + (this->ps().y3() - this->ps().y2()) / 2
+ + center_shift * sin(center_shift_angle),
+ 0
+ );
// check collisions
bool collide = true;
if (dtTest() == 0)
dtDeleteObject(&this->cc());
dtDeleteObject(&ps_b);
dtDeleteObject(&ps_t);
+ dtDeleteObject(&ps_r);
dtDeleteShape(bcbox);
dtDeleteShape(tbox);
dtDeleteShape(rbox);