Merge pull request #8 from scrawl/first-person

First person fixes
This commit is contained in:
kcat 2013-07-14 10:08:10 -07:00
commit 2bdfc3000c
4 changed files with 11 additions and 5 deletions

View file

@ -73,7 +73,7 @@ Animation::~Animation()
void Animation::setObjectRoot(Ogre::SceneNode *node, const std::string &model, bool baseonly)
{
OgreAssert(mAnimSources.size() != 0, "Setting object root while animation sources are set!");
OgreAssert(mAnimSources.size() == 0, "Setting object root while animation sources are set!");
if(!mInsert)
mInsert = node->createChildSceneNode();

View file

@ -44,9 +44,14 @@ namespace MWRender
{
mSceneMgr = Ogre::Root::getSingleton().createSceneManager(Ogre::ST_GENERIC);
/// \todo Read the fallback values from INIImporter (Inventory:Directional*)
// This is a dummy light to turn off shadows without having to use a separate set of shaders
Ogre::Light* l = mSceneMgr->createLight();
l->setType (Ogre::Light::LT_DIRECTIONAL);
l->setDiffuseColour (Ogre::ColourValue(0,0,0));
/// \todo Read the fallback values from INIImporter (Inventory:Directional*)
l = mSceneMgr->createLight();
l->setType (Ogre::Light::LT_DIRECTIONAL);
l->setDirection (Ogre::Vector3(0.3, -0.7, 0.3));
l->setDiffuseColour (Ogre::ColourValue(1,1,1));

View file

@ -374,14 +374,12 @@ void NpcAnimation::updateParts(bool forceupdate)
NifOgre::ObjectList NpcAnimation::insertBoundedPart(const std::string &model, int group, const std::string &bonename)
{
NifOgre::ObjectList objects = NifOgre::Loader::createObjects(mSkelBase, bonename, mInsert, model);
setRenderProperties(objects, mVisibilityFlags, RQG_Main, RQG_Alpha);
setRenderProperties(objects, (mViewMode == VM_FirstPerson) ? RV_FirstPerson : mVisibilityFlags, RQG_Main, RQG_Alpha);
for(size_t i = 0;i < objects.mEntities.size();i++)
{
Ogre::Entity *ent = objects.mEntities[i];
ent->getUserObjectBindings().setUserAny(Ogre::Any(group));
if(mViewMode == VM_FirstPerson)
ent->setCastShadows(false);
}
for(size_t i = 0;i < objects.mParticles.size();i++)
objects.mParticles[i]->getUserObjectBindings().setUserAny(Ogre::Any(group));

View file

@ -59,6 +59,9 @@ enum VisibilityFlags
// overlays, we only want these on the main render target
RV_Overlay = 1024,
// First person meshes do not cast shadows
RV_FirstPerson = 2048,
RV_Map = RV_Terrain + RV_Statics + RV_StaticsSmall + RV_Misc + RV_Water
};