Merge branch 'master' into next

This commit is contained in:
Marc Zinnschlag 2012-09-24 10:14:09 +02:00
commit 5bdc7bcacf
3 changed files with 22 additions and 10 deletions

View file

@ -33,11 +33,6 @@ RaceDialog::RaceDialog(MWBase::WindowManager& parWindowManager)
setText("AppearanceT", mWindowManager.getGameSettingString("sRaceMenu1", "Appearance")); setText("AppearanceT", mWindowManager.getGameSettingString("sRaceMenu1", "Appearance"));
getWidget(mPreviewImage, "PreviewImage"); getWidget(mPreviewImage, "PreviewImage");
MWBase::Environment::get().getWorld ()->setupExternalRendering (mPreview);
mPreview.update (0);
mPreviewImage->setImageTexture ("CharacterHeadPreview");
getWidget(mHeadRotate, "HeadRotate"); getWidget(mHeadRotate, "HeadRotate");
mHeadRotate->setScrollRange(50); mHeadRotate->setScrollRange(50);
mHeadRotate->setScrollPosition(25); mHeadRotate->setScrollPosition(25);
@ -107,6 +102,12 @@ void RaceDialog::open()
updateRaces(); updateRaces();
updateSkills(); updateSkills();
updateSpellPowers(); updateSpellPowers();
mPreview = new MWRender::RaceSelectionPreview();
MWBase::Environment::get().getWorld ()->setupExternalRendering (*mPreview);
mPreview->update (0);
mPreviewImage->setImageTexture ("CharacterHeadPreview");
} }
@ -138,6 +139,12 @@ int wrap(int index, int max)
return index; return index;
} }
void RaceDialog::close()
{
delete mPreview;
mPreview = 0;
}
// widget controls // widget controls
void RaceDialog::onOkClicked(MyGUI::Widget* _sender) void RaceDialog::onOkClicked(MyGUI::Widget* _sender)
@ -154,7 +161,7 @@ void RaceDialog::onHeadRotate(MyGUI::ScrollBar*, size_t _position)
{ {
float angle = (float(_position) / 49.f - 0.5) * 3.14 * 2; float angle = (float(_position) / 49.f - 0.5) * 3.14 * 2;
float diff = angle - mCurrentAngle; float diff = angle - mCurrentAngle;
mPreview.update (diff); mPreview->update (diff);
mCurrentAngle += diff; mCurrentAngle += diff;
} }

View file

@ -46,6 +46,7 @@ namespace MWGui
void setNextButtonShow(bool shown); void setNextButtonShow(bool shown);
virtual void open(); virtual void open();
virtual void close();
// Events // Events
typedef MyGUI::delegates::CMultiDelegate0 EventHandle_Void; typedef MyGUI::delegates::CMultiDelegate0 EventHandle_Void;
@ -94,7 +95,7 @@ namespace MWGui
float mCurrentAngle; float mCurrentAngle;
MWRender::RaceSelectionPreview mPreview; MWRender::RaceSelectionPreview* mPreview;
}; };
} }
#endif #endif

View file

@ -25,6 +25,7 @@ namespace MWRender
, mPosition(position) , mPosition(position)
, mLookAt(lookAt) , mLookAt(lookAt)
, mCharacter(character) , mCharacter(character)
, mAnimation(NULL)
{ {
} }
@ -53,10 +54,13 @@ namespace MWRender
mCamera->setNearClipDistance (0.01); mCamera->setNearClipDistance (0.01);
mCamera->setFarClipDistance (1000); mCamera->setFarClipDistance (1000);
mTexture = Ogre::TextureManager::getSingleton().getByName (mName);
if (mTexture.isNull ())
mTexture = Ogre::TextureManager::getSingleton().createManual(mName, mTexture = Ogre::TextureManager::getSingleton().createManual(mName,
Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D, mSizeX, mSizeY, 0, Ogre::PF_A8R8G8B8, Ogre::TU_RENDERTARGET); Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D, mSizeX, mSizeY, 0, Ogre::PF_A8R8G8B8, Ogre::TU_RENDERTARGET);
mRenderTarget = mTexture->getBuffer()->getRenderTarget(); mRenderTarget = mTexture->getBuffer()->getRenderTarget();
mRenderTarget->removeAllViewports ();
mViewport = mRenderTarget->addViewport(mCamera); mViewport = mRenderTarget->addViewport(mCamera);
mViewport->setOverlaysEnabled(false); mViewport->setOverlaysEnabled(false);
mViewport->setBackgroundColour(Ogre::ColourValue(0, 0, 0, 0)); mViewport->setBackgroundColour(Ogre::ColourValue(0, 0, 0, 0));
@ -71,7 +75,7 @@ namespace MWRender
CharacterPreview::~CharacterPreview () CharacterPreview::~CharacterPreview ()
{ {
Ogre::TextureManager::getSingleton().remove(mName); //Ogre::TextureManager::getSingleton().remove(mName);
mSceneMgr->destroyCamera (mName); mSceneMgr->destroyCamera (mName);
delete mAnimation; delete mAnimation;
} }