minetest/irr/include/SVertexManipulator.h
2024-03-26 21:39:02 +01:00

45 lines
947 B
C++

// Copyright (C) 2009-2012 Christian Stehno
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in irrlicht.h
#pragma once
#include "matrix4.h"
#include "S3DVertex.h"
#include "SColor.h"
namespace irr
{
namespace scene
{
class IMesh;
class IMeshBuffer;
struct SMesh;
//! Interface for vertex manipulators.
/** You should derive your manipulator from this class if it shall be called for every vertex, getting as parameter just the vertex.
*/
struct IVertexManipulator
{
};
//! Vertex manipulator which scales the position of the vertex
class SVertexPositionScaleManipulator : public IVertexManipulator
{
public:
SVertexPositionScaleManipulator(const core::vector3df &factor) :
Factor(factor) {}
template <typename VType>
void operator()(VType &vertex) const
{
vertex.Pos *= Factor;
}
private:
core::vector3df Factor;
};
} // end namespace scene
} // end namespace irr