From 235b565bb7c8c2ebe8500d5c72819ba46306863d Mon Sep 17 00:00:00 2001 From: greye Date: Sat, 10 Nov 2012 11:51:48 +0400 Subject: [PATCH] update main character model --- apps/openmw/mwrender/player.cpp | 3 +++ apps/openmw/mwworld/worldimp.cpp | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/apps/openmw/mwrender/player.cpp b/apps/openmw/mwrender/player.cpp index f2c313e14..857878811 100644 --- a/apps/openmw/mwrender/player.cpp +++ b/apps/openmw/mwrender/player.cpp @@ -310,6 +310,9 @@ namespace MWRender void Player::setAnimation(NpcAnimation *anim) { + if (mAnimation) { + delete mAnimation; + } mAnimation = anim; } diff --git a/apps/openmw/mwworld/worldimp.cpp b/apps/openmw/mwworld/worldimp.cpp index af5745744..616a0be39 100644 --- a/apps/openmw/mwworld/worldimp.cpp +++ b/apps/openmw/mwworld/worldimp.cpp @@ -801,7 +801,21 @@ namespace MWWorld const ESM::NPC *World::createRecord(const ESM::NPC &record) { - return mStore.insert(record); + bool update = false; + if (StringUtils::ciEqual(record.mId, "player")) { + const ESM::NPC *player = + mPlayer->getPlayer().get()->mBase; + + update = record.isMale() != player->isMale() || + !StringUtils::ciEqual(record.mRace, player->mRace) || + !StringUtils::ciEqual(record.mHead, player->mHead) || + !StringUtils::ciEqual(record.mHair, player->mHair); + } + const ESM::NPC *ret = mStore.insert(record); + if (update) { + mRendering->renderPlayer(mPlayer->getPlayer()); + } + return ret; } void World::playAnimationGroup (const MWWorld::Ptr& ptr, const std::string& groupName, int mode,