// Author: = Juan Carlos De Abreu (jcabreur@gmail.com)
//
// This file define a class inherent from ITransfromationNode that allow 
// translate a 'scene node'.
//
// An use of this class can be;
// SmartPointer<ISceneNode> translate_node = new TranslateNode(1, 0, 0);
// translate_node->apply();

#ifndef SCENE_TRANSFORMATION_TRANSLATE_NODE_H__
#define SCENE_TRANSFORMATION_TRANSLATE_NODE_H__

#include "../../../global.h"
#include "../transformation_node.h"

BEGIN_TEG_NAMESPACE();

class TranslateNode : public ITransformationNode {
 public:
  // TranslateNode constructors and destructor.
  TranslateNode();
  TranslateNode(float x, float y, float z);
  ~TranslateNode();

  // Method to apply the translate transformation.
  virtual void apply();

  // Method to make a TanslateNode copy.
  virtual SmartPointer<ISceneNode> copy();
  AUTO_SIZE();

 private:
  DISALLOW_COPY_AND_ASSIGN(TranslateNode);
};

END_TEG_NAMESPACE();

#endif  // SCENE_TRANSFORMATION_TRANSLATE_NODE_H__
