// render // irr scenenode impl void CGameGrassSceneNode::render() { ISceneManager *smgr = getSceneManager(); IVideoDriver *driver = smgr->getVideoDriver(); #ifdef GSEDITOR CGameObject::EObjectState state = m_owner->getObjectState(); // draw bbox on select if ( state == CGameObject::Move || state == CGameObject::Review ) setDebugDataVisible( EDS_BBOX ); else setDebugDataVisible( 0 ); // call object draw m_owner->drawObject(); #endif // set world transform driver->setTransform( video::ETS_WORLD, getAbsoluteTransformation()); // set current material with config shader driver->setMaterial( m_Material); // draw mesh with grass shader int meshCount = m_mesh->getMeshBufferCount(); for ( int i = 0; i < meshCount; i++ ) driver->drawMeshBuffer(m_mesh->getMeshBuffer(i)); // draw bouding box if ( DebugDataVisible & scene::EDS_BBOX ) { driver->setTransform(video::ETS_WORLD, core::IdentityMatrix); video::SMaterial deb_m; deb_m.Lighting = false; driver->setMaterial(deb_m); core::aabbox3d<f32> tbox = m_mesh->getBoundingBox(); getAbsoluteTransformation().transformBoxEx(tbox); driver->draw3DBox( tbox, video::SColor(255,255,255,255)); } #ifdef GSEDITOR // draw move if ( state == CGameObject::Move || state == CGameObject::Rotation || state == CGameObject::Scale ) m_owner->drawFrontUpLeftVector(); if ( state == CGameObject::Rotation ) m_owner->drawCircleAroundObject(); #endif }