code refactoring
parent
785850ec43
commit
d2e34d6764
|
@ -50,7 +50,6 @@ void Object::scale(const Vec3D &s) {
|
||||||
void Object::rotate(const Vec3D &r) {
|
void Object::rotate(const Vec3D &r) {
|
||||||
_angle = _angle + r;
|
_angle = _angle + r;
|
||||||
|
|
||||||
// TODO: when you rotate body _angle is changed only for this body but all attached objects have incorrect _angle
|
|
||||||
Matrix4x4 rotationMatrix = Matrix4x4::RotationZ(r.z()) * Matrix4x4::RotationY(r.y()) * Matrix4x4::RotationX(r.z());
|
Matrix4x4 rotationMatrix = Matrix4x4::RotationZ(r.z()) * Matrix4x4::RotationY(r.y()) * Matrix4x4::RotationX(r.z());
|
||||||
transform(rotationMatrix);
|
transform(rotationMatrix);
|
||||||
}
|
}
|
||||||
|
@ -60,6 +59,8 @@ void Object::rotate(const Vec3D &v, double rv) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Object::rotateRelativePoint(const Vec3D &s, const Vec3D &r) {
|
void Object::rotateRelativePoint(const Vec3D &s, const Vec3D &r) {
|
||||||
|
_angle = _angle + r;
|
||||||
|
|
||||||
transformRelativePoint(s, Matrix4x4::Rotation(r));
|
transformRelativePoint(s, Matrix4x4::Rotation(r));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,13 @@ private:
|
||||||
std::map<ObjectNameTag, std::weak_ptr<Object>> _attachedObjects;
|
std::map<ObjectNameTag, std::weak_ptr<Object>> _attachedObjects;
|
||||||
|
|
||||||
Vec3D _position{0, 0, 0};
|
Vec3D _position{0, 0, 0};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Take into account when you rotate body,
|
||||||
|
* you change '_angle' only for this particular body,
|
||||||
|
* but not for attached objects! This way during rotation
|
||||||
|
* '_angle' stays the same for all attached objects.
|
||||||
|
*/
|
||||||
Vec3D _angle{0, 0, 0};
|
Vec3D _angle{0, 0, 0};
|
||||||
Vec3D _angleLeftUpLookAt{0, 0, 0};
|
Vec3D _angleLeftUpLookAt{0, 0, 0};
|
||||||
public:
|
public:
|
||||||
|
|
Loading…
Reference in New Issue