1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-02-19 16:39:41 +00:00

Move the last bits of code to createEntities

This commit is contained in:
Chris Robinson 2012-07-17 20:23:09 -07:00
parent 1c544682d5
commit 92546ca18d
3 changed files with 14 additions and 24 deletions

View file

@ -365,16 +365,10 @@ void NpcAnimation::updateParts()
std::vector<Ogre::Entity*> NpcAnimation::insertBoundedPart(const std::string &mesh, const std::string &bonename)
{
NifOgre::MeshPairList meshes = NIFLoader::load(mesh);
std::vector<Ogre::Entity*> parts;
for(size_t i = 0;i < meshes.size();i++)
{
parts.push_back(mRend.getScene()->createEntity(meshes[i].first->getName()));
Ogre::Entity *part = parts.back();
part->setVisibilityFlags(RV_Actors);
mEntityList.mSkelBase->attachObjectToBone(bonename, part);
}
NifOgre::EntityList entities = NIFLoader::createEntities(mInsert, mesh);
std::vector<Ogre::Entity*> &parts = entities.mEntities;
for(size_t i = 0;i < parts.size();i++)
parts[i]->setVisibilityFlags(RV_Actors);
return parts;
}

View file

@ -509,16 +509,14 @@ void SkyManager::create()
/// \todo sky_night_02.nif (available in Bloodmoon)
mAtmosphereNight = mRootNode->createChildSceneNode();
NifOgre::MeshPairList meshes = NifOgre::NIFLoader::load("meshes\\sky_night_01.nif");
for(size_t i = 0;i < meshes.size();i++)
NifOgre::EntityList entities = NifOgre::NIFLoader::createEntities(mAtmosphereNight, "meshes\\sky_night_01.nif");
for(size_t i = 0;i < entities.mEntities.size();i++)
{
Entity* night1_ent = mSceneMgr->createEntity(meshes[i].first->getName());
Entity* night1_ent = entities.mEntities[i];
night1_ent->setRenderQueueGroup(RQG_SkiesEarly+1);
night1_ent->setVisibilityFlags(RV_Sky);
night1_ent->setCastShadows(false);
mAtmosphereNight->attachObject(night1_ent);
for (unsigned int i=0; i<night1_ent->getNumSubEntities(); ++i)
{
MaterialPtr mp = night1_ent->getSubEntity(i)->getMaterial();
@ -589,17 +587,16 @@ void SkyManager::create()
fshader->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR);
mAtmosphereDay = mRootNode->createChildSceneNode();
meshes = NifOgre::NIFLoader::load("meshes\\sky_atmosphere.nif");
for(size_t i = 0;i < meshes.size();i++)
entities = NifOgre::NIFLoader::createEntities(mAtmosphereDay, "meshes\\sky_atmosphere.nif");
for(size_t i = 0;i < entities.mEntities.size();i++)
{
Entity* atmosphere_ent = mSceneMgr->createEntity(meshes[i].first->getName());
Entity* atmosphere_ent = entities.mEntities[i];
atmosphere_ent->setCastShadows(false);
ModVertexAlpha(atmosphere_ent, 0);
atmosphere_ent->setRenderQueueGroup(RQG_SkiesEarly);
atmosphere_ent->setVisibilityFlags(RV_Sky);
mAtmosphereDay->attachObject(atmosphere_ent);
mAtmosphereMaterial = atmosphere_ent->getSubEntity(0)->getMaterial();
mAtmosphereMaterial = mAtmosphereMaterial->clone("Atmosphere");
@ -677,13 +674,12 @@ void SkyManager::create()
mCloudFragmentShader->getDefaultParameters()->setNamedAutoConstant("emissive", GpuProgramParameters::ACT_SURFACE_EMISSIVE_COLOUR);
SceneNode* clouds_node = mRootNode->createChildSceneNode();
meshes = NifOgre::NIFLoader::load("meshes\\sky_clouds_01.nif");
for(size_t i = 0;i < meshes.size();i++)
entities = NifOgre::NIFLoader::createEntities(clouds_node, "meshes\\sky_clouds_01.nif");
for(size_t i = 0;i < entities.mEntities.size();i++)
{
Entity* clouds_ent = mSceneMgr->createEntity(meshes[i].first->getName());
Entity* clouds_ent = entities.mEntities[i];
clouds_ent->setVisibilityFlags(RV_Sky);
clouds_ent->setRenderQueueGroup(RQG_SkiesEarly+5);
clouds_node->attachObject(clouds_ent);
mCloudMaterial = clouds_ent->getSubEntity(0)->getMaterial();
mCloudMaterial = mCloudMaterial->clone("Clouds");

View file

@ -85,11 +85,11 @@ typedef std::vector< std::pair<Ogre::MeshPtr,std::string> > MeshPairList;
*/
class NIFLoader
{
public:
static MeshPairList load(const std::string &name,
Ogre::SkeletonPtr *skel=NULL,
const std::string &group="General");
public:
static EntityList createEntities(Ogre::SceneNode *parent,
const std::string &name,
const std::string &group="General");