00001
00006
00007 #ifndef KX_IPOTRANSFORM_H
00008 #define KX_IPOTRANSFORM_H
00009
00010 #include "MT_Transform.h"
00011
00012 class KX_IPOTransform {
00013 public:
00014 KX_IPOTransform() :
00015 m_position(0.0, 0.0, 0.0),
00016 m_eulerAngles(0.0, 0.0, 0.0),
00017 m_scaling(1.0, 1.0, 1.0),
00018 m_deltaPosition(0.0, 0.0, 0.0),
00019 m_deltaEulerAngles(0.0, 0.0, 0.0),
00020 m_deltaScaling(0.0, 0.0, 0.0)
00021 {}
00022
00023 MT_Transform GetTransform() const {
00024 return MT_Transform(m_position + m_deltaPosition,
00025 MT_Matrix3x3(m_eulerAngles + m_deltaEulerAngles,
00026 m_scaling + m_deltaScaling));
00027 }
00028
00029 MT_Point3& GetPosition() { return m_position; }
00030 MT_Vector3& GetEulerAngles() { return m_eulerAngles; }
00031 MT_Vector3& GetScaling() { return m_scaling; }
00032
00033 const MT_Point3& GetPosition() const { return m_position; }
00034 const MT_Vector3& GetEulerAngles() const { return m_eulerAngles; }
00035 const MT_Vector3& GetScaling() const { return m_scaling; }
00036
00037 MT_Vector3& GetDeltaPosition() { return m_deltaPosition; }
00038 MT_Vector3& GetDeltaEulerAngles() { return m_deltaEulerAngles; }
00039 MT_Vector3& GetDeltaScaling() { return m_deltaScaling; }
00040
00041 void SetPosition(const MT_Point3& pos) { m_position = pos; }
00042 void SetEulerAngles(const MT_Vector3& eul) { m_eulerAngles = eul; }
00043 void SetScaling(const MT_Vector3& scaling) { m_scaling = scaling; }
00044
00045 void ClearDeltaStuff() {
00046 m_deltaPosition.setValue(0.0, 0.0, 0.0);
00047 m_deltaEulerAngles.setValue(0.0, 0.0, 0.0);
00048 m_deltaScaling.setValue(0.0, 0.0, 0.0);
00049 }
00050
00051 protected:
00052 MT_Point3 m_position;
00053 MT_Vector3 m_eulerAngles;
00054 MT_Vector3 m_scaling;
00055 MT_Vector3 m_deltaPosition;
00056 MT_Vector3 m_deltaEulerAngles;
00057 MT_Vector3 m_deltaScaling;
00058 };
00059
00060 #endif
00061
00062
00063
00064