|
@@ -839,54 +839,50 @@ void GenericCAO::addToScene(scene::ISceneManager *smgr, |
|
|
setBillboardTextureMatrix(m_spritenode, |
|
|
txs, tys, 0, 0); |
|
|
} |
|
|
} |
|
|
else if(m_prop.visual == "upright_sprite") { |
|
|
} else if (m_prop.visual == "upright_sprite") { |
|
|
scene::SMesh *mesh = new scene::SMesh(); |
|
|
double dx = BS*m_prop.visual_size.X/2; |
|
|
double dy = BS*m_prop.visual_size.Y/2; |
|
|
{ // Front |
|
|
scene::IMeshBuffer *buf = new scene::SMeshBuffer(); |
|
|
double dx = BS * m_prop.visual_size.X / 2; |
|
|
double dy = BS * m_prop.visual_size.Y / 2; |
|
|
u8 li = m_last_light; |
|
|
video::SColor c(255,li,li,li); |
|
|
video::S3DVertex vertices[4] = |
|
|
{ |
|
|
video::S3DVertex(-dx,-dy,0, 0,0,0, c, 0,1), |
|
|
video::S3DVertex(dx,-dy,0, 0,0,0, c, 1,1), |
|
|
video::S3DVertex(dx,dy,0, 0,0,0, c, 1,0), |
|
|
video::S3DVertex(-dx,dy,0, 0,0,0, c, 0,0), |
|
|
}; |
|
|
u16 indices[] = {0,1,2,2,3,0}; |
|
|
buf->append(vertices, 4, indices, 6); |
|
|
// Set material |
|
|
buf->getMaterial().setFlag(video::EMF_LIGHTING, false); |
|
|
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false); |
|
|
buf->getMaterial().setFlag(video::EMF_FOG_ENABLE, true); |
|
|
buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; |
|
|
// Add to mesh |
|
|
mesh->addMeshBuffer(buf); |
|
|
buf->drop(); |
|
|
video::SColor c(255, li, li, li); |
|
|
|
|
|
{ // Front |
|
|
scene::IMeshBuffer *buf = new scene::SMeshBuffer(); |
|
|
video::S3DVertex vertices[4] = { |
|
|
video::S3DVertex(-dx, -dy, 0, 0,0,0, c, 1,1), |
|
|
video::S3DVertex( dx, -dy, 0, 0,0,0, c, 0,1), |
|
|
video::S3DVertex( dx, dy, 0, 0,0,0, c, 0,0), |
|
|
video::S3DVertex(-dx, dy, 0, 0,0,0, c, 1,0), |
|
|
}; |
|
|
u16 indices[] = {0,1,2,2,3,0}; |
|
|
buf->append(vertices, 4, indices, 6); |
|
|
// Set material |
|
|
buf->getMaterial().setFlag(video::EMF_LIGHTING, false); |
|
|
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false); |
|
|
buf->getMaterial().setFlag(video::EMF_FOG_ENABLE, true); |
|
|
buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL; |
|
|
// Add to mesh |
|
|
mesh->addMeshBuffer(buf); |
|
|
buf->drop(); |
|
|
} |
|
|
{ // Back |
|
|
scene::IMeshBuffer *buf = new scene::SMeshBuffer(); |
|
|
u8 li = m_last_light; |
|
|
video::SColor c(255,li,li,li); |
|
|
video::S3DVertex vertices[4] = |
|
|
{ |
|
|
video::S3DVertex(dx,-dy,0, 0,0,0, c, 1,1), |
|
|
video::S3DVertex(-dx,-dy,0, 0,0,0, c, 0,1), |
|
|
video::S3DVertex(-dx,dy,0, 0,0,0, c, 0,0), |
|
|
video::S3DVertex(dx,dy,0, 0,0,0, c, 1,0), |
|
|
}; |
|
|
u16 indices[] = {0,1,2,2,3,0}; |
|
|
buf->append(vertices, 4, indices, 6); |
|
|
// Set material |
|
|
buf->getMaterial().setFlag(video::EMF_LIGHTING, false); |
|
|
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false); |
|
|
buf->getMaterial().setFlag(video::EMF_FOG_ENABLE, true); |
|
|
buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; |
|
|
// Add to mesh |
|
|
mesh->addMeshBuffer(buf); |
|
|
buf->drop(); |
|
|
scene::IMeshBuffer *buf = new scene::SMeshBuffer(); |
|
|
video::S3DVertex vertices[4] = { |
|
|
video::S3DVertex( dx,-dy, 0, 0,0,0, c, 1,1), |
|
|
video::S3DVertex(-dx,-dy, 0, 0,0,0, c, 0,1), |
|
|
video::S3DVertex(-dx, dy, 0, 0,0,0, c, 0,0), |
|
|
video::S3DVertex( dx, dy, 0, 0,0,0, c, 1,0), |
|
|
}; |
|
|
u16 indices[] = {0,1,2,2,3,0}; |
|
|
buf->append(vertices, 4, indices, 6); |
|
|
// Set material |
|
|
buf->getMaterial().setFlag(video::EMF_LIGHTING, false); |
|
|
buf->getMaterial().setFlag(video::EMF_BILINEAR_FILTER, false); |
|
|
buf->getMaterial().setFlag(video::EMF_FOG_ENABLE, true); |
|
|
buf->getMaterial().MaterialType = video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF; |
|
|
// Add to mesh |
|
|
mesh->addMeshBuffer(buf); |
|
|
buf->drop(); |
|
|
} |
|
|
m_meshnode = smgr->addMeshSceneNode(mesh, NULL); |
|
|
m_meshnode->grab(); |
|
|