Esempio n. 1
0
void OSGSmartBodyListener::OnCharacterCreate( const std::string & name, const std::string & objectClass )
{
#if 0	
	std::stringstream strstr;
	strstr << "../irrlicht-1.8.1/media/" << objectClass<< ".mesh";
	std::cout << "Getting mesh " << strstr.str() << std::endl;

	irr::scene::ISkinnedMesh* skinnedMesh = (irr::scene::ISkinnedMesh*)mSceneMgr->getMesh(strstr.str().c_str());

	if (!skinnedMesh)
	{
		LOG("Cannot find mesh named '%s", objectClass.c_str());
		return;
	}

	irr::scene::IAnimatedMeshSceneNode* node = mSceneMgr->addAnimatedMeshSceneNode( skinnedMesh, NULL, id );

	//must set to allow manual joint control
	node->setJointMode(irr::scene::EJUOR_CONTROL);

	irr::scene::IAnimatedMesh* animMesh  = node->getMesh();
	irr::scene::E_ANIMATED_MESH_TYPE type = animMesh->getMeshType();

	irr::core::array<irr::scene::ISkinnedMesh::SJoint*> jointssss  = skinnedMesh->getAllJoints();


	for(irr::u32 i = 1; i < jointssss.size(); i++)
	{
		//Clear all joint animation keys - model takes less space on disk
		jointssss[i]->PositionKeys.clear();
		jointssss[i]->RotationKeys.clear();
		jointssss[i]->ScaleKeys.clear();
	}



	(*map)[name] = id;
	id++;

	//set texture
	std::string textures[9];
	textures[0] = "../irrlicht-1.8.1/media/sinbad_body.tga";
	textures[1] = "../irrlicht-1.8.1/media/sinbad_body.tga";
	textures[2] = "../irrlicht-1.8.1/media/sinbad_clothes.tga";
	textures[3] = "../irrlicht-1.8.1/media/sinbad_body.tga";
	textures[4] = "../irrlicht-1.8.1/media/sinbad_sword.tga";
	textures[5] = "../irrlicht-1.8.1/media/sinbad_clothes.tga";
	textures[6] = "../irrlicht-1.8.1/media/sinbad_clothes.tga";
	textures[7] = "../irrlicht-1.8.1/media/sinbad_clothes.tga";
	textures[8] = "../irrlicht-1.8.1/media/irrlicht2_dn.jpg";
	node->getMaterial(8).setTexture(0,mSceneMgr->getVideoDriver()->getTexture("../irrlicht-1.8.1/media/irrlicht2_dn.jpg"));
	for (int t = 0; t < 8; t++)
	{
		std::cout << "Attempting to retrieve " << textures[t] << std::endl;
		node->getMaterial(t).setTexture(0,mSceneMgr->getVideoDriver()->getTexture(textures[t].c_str()));
	}

	node->setPosition(irr::core::vector3df(0,-80,0));


	node->addShadowVolumeSceneNode();

	//mSceneMgr->setShadowColor(irr::video::SColor(150,0,0,0));

	node->setScale(irr::core::vector3df(10,10,10));
	node->setMaterialFlag(irr::video::EMF_NORMALIZE_NORMALS , true);
#endif

}