class QuadSceneNode : public irr::scene::ISceneNode
{
public :
QuadSceneNode(irr::scene::ISceneNode* parent, irr::scene::ISceneManager* mgr,
irr::s32 id = -1, irr::core::rectf size = irr::core::rectf(-1,-1,1,1))
: irr::scene::ISceneNode(parent, mgr, id)
{
m_material.Wireframe = false;
m_material.Lighting = false;
irr::core::position2df position(size.getCenter().X - (size.getSize()/2).Width, size.getCenter().Y - (size.getSize()/2).Height);
m_box = irr::core::aabbox3d<irr::f32>(position.X, position.Y, 0, position.X + size.getWidth(), position.Y + size.getHeight(), 0);
m_vertices[0] = irr::video::S3DVertex(position.X, position.Y + size.getHeight(),0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
m_vertices[1] = irr::video::S3DVertex(position.X + size.getWidth(), position.Y + size.getHeight(),0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
m_vertices[2] = irr::video::S3DVertex(position.X, position.Y,0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
m_vertices[3] = irr::video::S3DVertex(position.X + size.getWidth(), position.Y,0,0,0,0, irr::video::SColor(0,0,0,0), 0, 0);
m_material.BackfaceCulling = false;
}
virtual void OnRegisterSceneNode()
{
if(IsVisible)
SceneManager->registerNodeForRendering(this, irr::scene::ESNRP_SOLID);
ISceneNode::OnRegisterSceneNode();
}
void render()
{
irr::video::IVideoDriver* driver = SceneManager->getVideoDriver();
driver->setTransform(irr::video::ETS_WORLD, AbsoluteTransformation);
/*if (DebugDataVisible & scene::EDS_HALF_TRANSPARENCY)
mat.MaterialType = video::EMT_TRANSPARENT_ADD_COLOR;
else
driver->setMaterial(Mesh->getMeshBuffer(0)->getMaterial());
driver->setMaterial(mat);*/
driver->setMaterial(m_material);
irr::u16 indices[] = {0,1,2, 1,2,3};
driver->drawIndexedTriangleList(&m_vertices[0], 4, &indices[0], 2);
driver->draw3DBox(m_box, irr::video::SColor(255, 255, 255, 255));
driver->setTransform(irr::video::ETS_WORLD, AbsoluteTransformation);
}
const irr::core::aabbox3d<irr::f32>& getBoundingBox() const
{
return m_box;
}
irr::u32 getMaterialCount() const
{
return 1;
}
irr::video::SMaterial& getMaterial(irr::u32 i)
{
return m_material;
}
private :
irr::core::aabbox3d<irr::f32> m_box;
irr::video::SMaterial m_material;
irr::video::S3DVertex m_vertices[4];
};