#include "GL_X3DTextureTransform2DNode.h" #include "X3D_X3DTextureTransform2DNode.h" #include using namespace std; namespace X3DTK { namespace GL { X3DTextureTransform2DNode::X3DTextureTransform2DNode() : X3DTextureTransformNode() { define(Recorder::getTypeName("X3DTextureTransform2DNode", "Texturing")); define(Recorder::getAttribute("transformMatrix", &X3DTextureTransform2DNode::_transformMatrix, MFFloat(16))); } X3DTextureTransform2DNode::~X3DTextureTransform2DNode() { } void X3DTextureTransform2DNode::setTransformMatrix(const MFFloat &transformMatrix) { _transformMatrix = transformMatrix; } void X3DTextureTransform2DNode::update() { if (x3dReference == 0) return; X3D::X3DTextureTransform2DNode *T = static_cast(x3dReference); SFVec3f translation(T->getTranslation().x, T->getTranslation().y, 0.0f); SFVec3f center(T->getCenter().x, T->getCenter().y, 0.0f); SFRotation rotation(0.0f, 0.0f, 1.0f, T->getRotation()); SFRotation scaleOrientation(0.0f, 0.0f, 1.0f, 0.0f); SFVec3f scale(T->getScale().x, T->getScale().y, 1.0f); SFMatrix34f transform(translation, center, rotation, scaleOrientation, scale); float *tmp = transform.toFloat16(); for (int i = 0; i < 16; ++i) _transformMatrix[i] = *(tmp + i); } } }