Code: Select all
CVoxelSceneNode::CVoxelSceneNode(ISceneNode* parent, ISceneManager* mgr, s32 id)
: ISceneNode(parent, mgr, id)
{
material.Wireframe = false;
material.Lighting = false;
SColor voxelColor = SColor(255, 255, 0, 0);
vertices[0] = S3DVertex(-10, 10, 0,
0, 0, 0,
voxelColor,
0, 0);
vertices[1] = S3DVertex(10, 10, 0,
0, 0, 0,
voxelColor,
0, 0);
vertices[2] = S3DVertex(10, -10, 0,
0, 0, 0,
voxelColor,
0, 0);
vertices[3] = S3DVertex(-10, -10, 0,
0, 0, 0,
voxelColor,
0, 0);
bounds.reset(vertices[0].Pos);
for(s32 i = 1; i < 4; i++)
bounds.addInternalPoint(vertices[i].Pos);
}
void CVoxelSceneNode::OnRegisterSceneNode()
{
if(IsVisible)
SceneManager->registerNodeForRendering(this);
ISceneNode::OnRegisterSceneNode();
}
void CVoxelSceneNode::render()
{
u16 indices[] = {
0, 2, 3,
2, 1, 3,
1, 0, 3,
2, 0, 1};
IVideoDriver* driver = SceneManager->getVideoDriver();
driver->setMaterial(material);
driver->setTransform(ETS_WORLD, AbsoluteTransformation);
driver->drawVertexPrimitiveList(&vertices[0], 4, &indices[0], 1, EVT_STANDARD, EPT_QUADS, EIT_16BIT);
}