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

#ifndef SCENE_TRANSFORMATION_SCALE_NODE_H__
#define SCENE_TRANSFORMATION_SCALE_NODE_H__

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

BEGIN_TEG_NAMESPACE();

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

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

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

 private:
  DISALLOW_COPY_AND_ASSIGN(ScaleNode);
};

END_TEG_NAMESPACE();

#endif  // SCENE_TRANSFORMATION_SCALE_NODE_H__
