add missing files after merging
[blender.git] / source / gameengine / Ketsji / KX_IPOTransform.h
1 /*
2  * $Id$
3  *
4  * ***** BEGIN GPL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software Foundation,
18  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19  *
20  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
21  * All rights reserved.
22  *
23  * The Original Code is: all of this file.
24  *
25  * Contributor(s): none yet.
26  *
27  * ***** END GPL LICENSE BLOCK *****
28  */
29
30 /** \file KX_IPOTransform.h
31  *  \ingroup ketsji
32  *  \brief An abstract object you can move around in a 3d world, and has some logic
33  */
34
35 #ifndef KX_IPOTRANSFORM_H
36 #define KX_IPOTRANSFORM_H
37
38 #include "MT_Transform.h"
39
40 class KX_IPOTransform {
41 public:
42         KX_IPOTransform() :
43                 m_position(0.0, 0.0, 0.0),
44                 m_eulerAngles(0.0, 0.0, 0.0),
45                 m_scaling(1.0, 1.0, 1.0),
46                 m_deltaPosition(0.0, 0.0, 0.0),
47                 m_deltaEulerAngles(0.0, 0.0, 0.0),
48                 m_deltaScaling(0.0, 0.0, 0.0)
49                 {}
50
51         MT_Transform         GetTransform() const {
52                 return MT_Transform(m_position + m_deltaPosition,
53                                                         MT_Matrix3x3(m_eulerAngles + m_deltaEulerAngles,
54                                                                                  m_scaling + m_deltaScaling));
55         }
56
57         MT_Point3&               GetPosition()          { return m_position;    }
58         MT_Vector3&          GetEulerAngles()       { return m_eulerAngles;     }
59         MT_Vector3&          GetScaling()           { return m_scaling; }
60
61         const MT_Point3&         GetPosition()    const { return m_position;    }
62         const MT_Vector3&    GetEulerAngles() const { return m_eulerAngles;     }
63         const MT_Vector3&    GetScaling()     const { return m_scaling; }
64         
65         MT_Vector3&          GetDeltaPosition()     { return m_deltaPosition; }
66         MT_Vector3&          GetDeltaEulerAngles()  { return m_deltaEulerAngles; }
67         MT_Vector3&          GetDeltaScaling()      { return m_deltaScaling; }
68         
69         void SetPosition(const MT_Point3& pos)      { m_position = pos;         }
70         void SetEulerAngles(const MT_Vector3& eul)  { m_eulerAngles = eul;      }
71         void SetScaling(const MT_Vector3& scaling)  { m_scaling = scaling;      }
72         
73         void ClearDeltaStuff() { 
74                 m_deltaPosition.setValue(0.0, 0.0, 0.0);
75                 m_deltaEulerAngles.setValue(0.0, 0.0, 0.0);
76                 m_deltaScaling.setValue(0.0, 0.0, 0.0);
77         }
78
79 protected:
80         MT_Point3              m_position;
81         MT_Vector3             m_eulerAngles;
82         MT_Vector3             m_scaling;
83         MT_Vector3             m_deltaPosition;
84         MT_Vector3             m_deltaEulerAngles;
85         MT_Vector3             m_deltaScaling;
86 };
87
88 #endif
89