1 /***************************************************************************
2                           Node.cpp  -  description
3                              -------------------
4     begin                : Wed Jan 26 2000
5     copyright            : (C) 2000 by Henrik Enqvist
6     email                : henqvist@excite.com
7  ***************************************************************************/
8 
9 #include "Private.h"
10 #include "Node.h"
11 
Node()12 Node::Node() {
13   m_mtxSrc = EMath::identityMatrix;
14   m_mtxTrans = EMath::identityMatrix;
15   m_vtxT.x = 0;
16   m_vtxT.y = 0;
17   m_vtxT.z = 0;
18   m_vtxR.x = 0;
19   m_vtxR.y = 0;
20   m_vtxR.z = 0;
21   m_vtxS.x = 1;
22   m_vtxS.y = 1;
23   m_vtxS.z = 1;
24 }
25 
~Node()26 Node::~Node() {
27 }
28 
setTransform(float tx,float ty,float tz,float rx,float ry,float rz)29 void Node::setTransform(float tx, float ty, float tz, float rx, float ry, float rz) {
30   m_vtxT.x = tx;
31   m_vtxT.y = ty;
32   m_vtxT.z = tz;
33   m_vtxR.x = rx;
34   m_vtxR.y = ry;
35   m_vtxR.z = rz;
36   EMath::getTransformationMatrix(m_mtxSrc, m_vtxT, m_vtxR, m_vtxS);
37 }
38 
addTransform(float tx,float ty,float tz,float rx,float ry,float rz)39 void Node::addTransform(float tx, float ty, float tz, float rx, float ry, float rz) {
40   m_vtxT.x += tx;
41   m_vtxT.y += ty;
42   m_vtxT.z += tz;
43   m_vtxR.x += rx;
44   m_vtxR.y += ry;
45   m_vtxR.z += rz;
46   EMath::getTransformationMatrix(m_mtxSrc, m_vtxT, m_vtxR, m_vtxS);
47 }
48 
setRotation(float x,float y,float z)49 void Node::setRotation(float x, float y, float z) {
50   m_vtxR.x = x;
51   m_vtxR.y = y;
52   m_vtxR.z = z;
53   EMath::getTransformationMatrix(m_mtxSrc, m_vtxT, m_vtxR, m_vtxS);
54 }
55 
getRotation(float & x,float & y,float & z)56 void Node::getRotation(float & x, float & y, float & z) {
57   x = m_vtxR.x;
58   y = m_vtxR.y;
59   z = m_vtxR.z;
60 }
61 
addRotation(float x,float y,float z)62 void Node::addRotation(float x, float y, float z) {
63   m_vtxR.x += x;
64   m_vtxR.y += y;
65   m_vtxR.z += z;
66   EMath::getTransformationMatrix(m_mtxSrc, m_vtxT, m_vtxR, m_vtxS);
67 }
68 
setScale(float x,float y,float z)69 void Node::setScale(float x, float y, float z) {
70   m_vtxS.x = x;
71   m_vtxS.y = y;
72   m_vtxS.z = z;
73   EMath::getTransformationMatrix(m_mtxSrc, m_vtxT, m_vtxR, m_vtxS);
74 }
75 
getScale(float & x,float & y,float & z)76 void Node::getScale(float & x, float & y, float & z) {
77   x = m_vtxS.x;
78   y = m_vtxS.y;
79   z = m_vtxS.z;
80 }
81 
addScale(float x,float y,float z)82 void Node::addScale(float x, float y, float z) {
83   m_vtxS.x += x;
84   m_vtxS.y += y;
85   m_vtxS.z += z;
86   EMath::getTransformationMatrix(m_mtxSrc, m_vtxT, m_vtxR, m_vtxS);
87 }
88 
setTranslation(float x,float y,float z)89 void Node::setTranslation(float x, float y, float z) {
90   m_vtxT.x = x;
91   m_vtxT.y = y;
92   m_vtxT.z = z;
93   m_mtxSrc.t[0] = x;
94   m_mtxSrc.t[1] = y;
95   m_mtxSrc.t[2] = z;
96 }
97 
getTranslation(float & x,float & y,float & z)98 void Node::getTranslation(float & x, float & y, float & z) {
99   x = m_vtxT.x;
100   y = m_vtxT.y;
101   z = m_vtxT.z;
102 }
103 
addTranslation(float x,float y,float z)104 void Node::addTranslation(float x, float y, float z) {
105   m_vtxT.x += x;
106   m_vtxT.y += y;
107   m_vtxT.z += z;
108   m_mtxSrc.t[0] = m_vtxT.x;
109   m_mtxSrc.t[1] = m_vtxT.y;
110   m_mtxSrc.t[2] = m_vtxT.z;
111 }
112