void BillboardLine::setColor( float r, float g, float b, float a ) { if ( a < 0.9998 ) { material_->getTechnique(0)->setSceneBlending( Ogre::SBT_TRANSPARENT_ALPHA ); material_->getTechnique(0)->setDepthWriteEnabled( false ); } else { material_->getTechnique(0)->setSceneBlending( Ogre::SBT_REPLACE ); material_->getTechnique(0)->setDepthWriteEnabled( true ); } color_ = Ogre::ColourValue( r, g, b, a ); for (uint32_t line = 0; line < num_lines_; ++line) { uint32_t element_count = num_elements_[line]; for ( uint32_t i = 0; i < element_count; ++i ) { Ogre::BillboardChain* c = chains_[line / lines_per_chain_]; Ogre::BillboardChain::Element e = c->getChainElement(line % lines_per_chain_, i); e.colour = color_; c->updateChainElement(line % lines_per_chain_, i, e); } } }
void BillboardLine::setLineWidth( float width ) { width_ = width; for (uint32_t line = 0; line < num_lines_; ++line) { uint32_t element_count = num_elements_[line]; for ( uint32_t i = 0; i < element_count; ++i ) { Ogre::BillboardChain* c = chains_[line / lines_per_chain_]; Ogre::BillboardChain::Element e = c->getChainElement(line % lines_per_chain_, i); e.width = width_; c->updateChainElement(line % lines_per_chain_, i, e); } } }