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