forked from mirror/openmw-tes3mp
Merge remote-tracking branch 'scrawl/button_fixes'
This commit is contained in:
commit
ce5d27b07b
22 changed files with 198 additions and 423 deletions
|
@ -104,7 +104,6 @@ set(OENGINE_OGRE
|
||||||
${LIBDIR}/openengine/ogre/renderer.cpp
|
${LIBDIR}/openengine/ogre/renderer.cpp
|
||||||
${LIBDIR}/openengine/ogre/fader.cpp
|
${LIBDIR}/openengine/ogre/fader.cpp
|
||||||
${LIBDIR}/openengine/ogre/imagerotate.cpp
|
${LIBDIR}/openengine/ogre/imagerotate.cpp
|
||||||
${LIBDIR}/openengine/ogre/atlas.cpp
|
|
||||||
${LIBDIR}/openengine/ogre/selectionbuffer.cpp
|
${LIBDIR}/openengine/ogre/selectionbuffer.cpp
|
||||||
)
|
)
|
||||||
set(OENGINE_GUI
|
set(OENGINE_GUI
|
||||||
|
|
|
@ -30,7 +30,7 @@ add_openmw_dir (mwgui
|
||||||
formatting inventorywindow container hud countdialog tradewindow settingswindow
|
formatting inventorywindow container hud countdialog tradewindow settingswindow
|
||||||
confirmationdialog alchemywindow referenceinterface spellwindow mainmenu quickkeysmenu
|
confirmationdialog alchemywindow referenceinterface spellwindow mainmenu quickkeysmenu
|
||||||
itemselection spellbuyingwindow loadingscreen levelupdialog waitdialog spellcreationdialog
|
itemselection spellbuyingwindow loadingscreen levelupdialog waitdialog spellcreationdialog
|
||||||
enchantingdialog trainingwindow travelwindow
|
enchantingdialog trainingwindow travelwindow imagebutton
|
||||||
)
|
)
|
||||||
|
|
||||||
add_openmw_dir (mwdialogue
|
add_openmw_dir (mwdialogue
|
||||||
|
|
|
@ -88,7 +88,7 @@ void BookWindow::setTakeButtonShow(bool show)
|
||||||
mTakeButton->setVisible(show);
|
mTakeButton->setVisible(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BookWindow::onCloseButtonClicked (MyGUI::Widget* _sender)
|
void BookWindow::onCloseButtonClicked (MyGUI::Widget* sender)
|
||||||
{
|
{
|
||||||
// no 3d sounds because the object could be in a container.
|
// no 3d sounds because the object could be in a container.
|
||||||
MWBase::Environment::get().getSoundManager()->playSound ("book close", 1.0, 1.0);
|
MWBase::Environment::get().getSoundManager()->playSound ("book close", 1.0, 1.0);
|
||||||
|
@ -96,7 +96,7 @@ void BookWindow::onCloseButtonClicked (MyGUI::Widget* _sender)
|
||||||
mWindowManager.removeGuiMode(GM_Book);
|
mWindowManager.removeGuiMode(GM_Book);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BookWindow::onTakeButtonClicked (MyGUI::Widget* _sender)
|
void BookWindow::onTakeButtonClicked (MyGUI::Widget* sender)
|
||||||
{
|
{
|
||||||
MWBase::Environment::get().getSoundManager()->playSound ("Item Book Up", 1.0, 1.0, MWBase::SoundManager::Play_NoTrack);
|
MWBase::Environment::get().getSoundManager()->playSound ("Item Book Up", 1.0, 1.0, MWBase::SoundManager::Play_NoTrack);
|
||||||
|
|
||||||
|
@ -106,7 +106,7 @@ void BookWindow::onTakeButtonClicked (MyGUI::Widget* _sender)
|
||||||
mWindowManager.removeGuiMode(GM_Book);
|
mWindowManager.removeGuiMode(GM_Book);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BookWindow::onNextPageButtonClicked (MyGUI::Widget* _sender)
|
void BookWindow::onNextPageButtonClicked (MyGUI::Widget* sender)
|
||||||
{
|
{
|
||||||
if ((mCurrentPage+1)*2 < mPages.size())
|
if ((mCurrentPage+1)*2 < mPages.size())
|
||||||
{
|
{
|
||||||
|
@ -118,7 +118,7 @@ void BookWindow::onNextPageButtonClicked (MyGUI::Widget* _sender)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void BookWindow::onPrevPageButtonClicked (MyGUI::Widget* _sender)
|
void BookWindow::onPrevPageButtonClicked (MyGUI::Widget* sender)
|
||||||
{
|
{
|
||||||
if (mCurrentPage > 0)
|
if (mCurrentPage > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,6 +5,8 @@
|
||||||
|
|
||||||
#include "../mwworld/ptr.hpp"
|
#include "../mwworld/ptr.hpp"
|
||||||
|
|
||||||
|
#include "imagebutton.hpp"
|
||||||
|
|
||||||
namespace MWGui
|
namespace MWGui
|
||||||
{
|
{
|
||||||
class BookWindow : public WindowBase
|
class BookWindow : public WindowBase
|
||||||
|
@ -16,19 +18,19 @@ namespace MWGui
|
||||||
void setTakeButtonShow(bool show);
|
void setTakeButtonShow(bool show);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void onNextPageButtonClicked (MyGUI::Widget* _sender);
|
void onNextPageButtonClicked (MyGUI::Widget* sender);
|
||||||
void onPrevPageButtonClicked (MyGUI::Widget* _sender);
|
void onPrevPageButtonClicked (MyGUI::Widget* sender);
|
||||||
void onCloseButtonClicked (MyGUI::Widget* _sender);
|
void onCloseButtonClicked (MyGUI::Widget* sender);
|
||||||
void onTakeButtonClicked (MyGUI::Widget* _sender);
|
void onTakeButtonClicked (MyGUI::Widget* sender);
|
||||||
|
|
||||||
void updatePages();
|
void updatePages();
|
||||||
void clearPages();
|
void clearPages();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MyGUI::Button* mCloseButton;
|
MWGui::ImageButton* mCloseButton;
|
||||||
MyGUI::Button* mTakeButton;
|
MWGui::ImageButton* mTakeButton;
|
||||||
MyGUI::Button* mNextPageButton;
|
MWGui::ImageButton* mNextPageButton;
|
||||||
MyGUI::Button* mPrevPageButton;
|
MWGui::ImageButton* mPrevPageButton;
|
||||||
MyGUI::TextBox* mLeftPageNumber;
|
MyGUI::TextBox* mLeftPageNumber;
|
||||||
MyGUI::TextBox* mRightPageNumber;
|
MyGUI::TextBox* mRightPageNumber;
|
||||||
MyGUI::Widget* mLeftPage;
|
MyGUI::Widget* mLeftPage;
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
|
|
||||||
#include <boost/filesystem.hpp>
|
#include <boost/filesystem.hpp>
|
||||||
#include <openengine/ogre/imagerotate.hpp>
|
#include <openengine/ogre/imagerotate.hpp>
|
||||||
#include <openengine/ogre/atlas.hpp>
|
|
||||||
|
|
||||||
#include <OgreResourceGroupManager.h>
|
#include <OgreResourceGroupManager.h>
|
||||||
#include <OgreRoot.h>
|
#include <OgreRoot.h>
|
||||||
|
@ -14,7 +13,4 @@ CursorReplace::CursorReplace()
|
||||||
OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_vresize.png", 90);
|
OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_vresize.png", 90);
|
||||||
OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_dresize1.png", -45);
|
OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_dresize1.png", -45);
|
||||||
OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_dresize2.png", 45);
|
OEngine::Render::ImageRotate::rotate("textures\\tx_cursormove.dds", "mwpointer_dresize2.png", 45);
|
||||||
|
|
||||||
OEngine::Render::Atlas::createFromFile("atlas1.cfg", "mwgui1", "textures\\");
|
|
||||||
OEngine::Render::Atlas::createFromFile("mainmenu.cfg", "mwgui2", "textures\\");
|
|
||||||
}
|
}
|
||||||
|
|
63
apps/openmw/mwgui/imagebutton.cpp
Normal file
63
apps/openmw/mwgui/imagebutton.cpp
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
#include "imagebutton.hpp"
|
||||||
|
|
||||||
|
#include <OgreTextureManager.h>
|
||||||
|
|
||||||
|
namespace MWGui
|
||||||
|
{
|
||||||
|
|
||||||
|
void ImageButton::setPropertyOverride(const std::string &_key, const std::string &_value)
|
||||||
|
{
|
||||||
|
if (_key == "ImageHighlighted")
|
||||||
|
mImageHighlighted = _value;
|
||||||
|
else if (_key == "ImagePushed")
|
||||||
|
mImagePushed = _value;
|
||||||
|
else if (_key == "ImageNormal")
|
||||||
|
{
|
||||||
|
if (mImageNormal == "")
|
||||||
|
{
|
||||||
|
setImageTexture(_value);
|
||||||
|
}
|
||||||
|
mImageNormal = _value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
ImageBox::setPropertyOverride(_key, _value);
|
||||||
|
}
|
||||||
|
void ImageButton::onMouseSetFocus(Widget* _old)
|
||||||
|
{
|
||||||
|
setImageTexture(mImageHighlighted);
|
||||||
|
ImageBox::onMouseSetFocus(_old);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImageButton::onMouseLostFocus(Widget* _new)
|
||||||
|
{
|
||||||
|
setImageTexture(mImageNormal);
|
||||||
|
ImageBox::onMouseLostFocus(_new);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImageButton::onMouseButtonPressed(int _left, int _top, MyGUI::MouseButton _id)
|
||||||
|
{
|
||||||
|
if (_id == MyGUI::MouseButton::Left)
|
||||||
|
setImageTexture(mImagePushed);
|
||||||
|
|
||||||
|
ImageBox::onMouseButtonPressed(_left, _top, _id);
|
||||||
|
}
|
||||||
|
|
||||||
|
MyGUI::IntSize ImageButton::getRequestedSize()
|
||||||
|
{
|
||||||
|
Ogre::TexturePtr texture = Ogre::TextureManager::getSingleton().getByName(mImageNormal);
|
||||||
|
if (texture.isNull())
|
||||||
|
{
|
||||||
|
std::cerr << "ImageButton: can't find " << mImageNormal << std::endl;
|
||||||
|
return MyGUI::IntSize(0,0);
|
||||||
|
}
|
||||||
|
return MyGUI::IntSize (texture->getWidth(), texture->getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImageButton::onMouseButtonReleased(int _left, int _top, MyGUI::MouseButton _id)
|
||||||
|
{
|
||||||
|
if (_id == MyGUI::MouseButton::Left)
|
||||||
|
setImageTexture(mImageHighlighted);
|
||||||
|
|
||||||
|
ImageBox::onMouseButtonReleased(_left, _top, _id);
|
||||||
|
}
|
||||||
|
}
|
33
apps/openmw/mwgui/imagebutton.hpp
Normal file
33
apps/openmw/mwgui/imagebutton.hpp
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
#ifndef MWGUI_IMAGEBUTTON_H
|
||||||
|
#define MWGUI_IMAGEBUTTON_H
|
||||||
|
|
||||||
|
#include "MyGUI_ImageBox.h"
|
||||||
|
|
||||||
|
namespace MWGui
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief allows using different image textures depending on the button state
|
||||||
|
*/
|
||||||
|
class ImageButton : public MyGUI::ImageBox
|
||||||
|
{
|
||||||
|
MYGUI_RTTI_DERIVED(ImageButton)
|
||||||
|
|
||||||
|
public:
|
||||||
|
MyGUI::IntSize getRequestedSize();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void setPropertyOverride(const std::string& _key, const std::string& _value);
|
||||||
|
virtual void onMouseLostFocus(MyGUI::Widget* _new);
|
||||||
|
virtual void onMouseSetFocus(MyGUI::Widget* _old);
|
||||||
|
virtual void onMouseButtonPressed(int _left, int _top, MyGUI::MouseButton _id);
|
||||||
|
virtual void onMouseButtonReleased(int _left, int _top, MyGUI::MouseButton _id);
|
||||||
|
|
||||||
|
std::string mImageHighlighted;
|
||||||
|
std::string mImageNormal;
|
||||||
|
std::string mImagePushed;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
|
@ -83,7 +83,6 @@ book formatText(std::string text,book mBook,int maxLine, int lineSize)
|
||||||
|
|
||||||
MWGui::JournalWindow::JournalWindow (MWBase::WindowManager& parWindowManager)
|
MWGui::JournalWindow::JournalWindow (MWBase::WindowManager& parWindowManager)
|
||||||
: WindowBase("openmw_journal.layout", parWindowManager)
|
: WindowBase("openmw_journal.layout", parWindowManager)
|
||||||
, mLastPos(0)
|
|
||||||
, mPageNumber(0)
|
, mPageNumber(0)
|
||||||
{
|
{
|
||||||
mMainWidget->setVisible(false);
|
mMainWidget->setVisible(false);
|
||||||
|
@ -177,7 +176,7 @@ void MWGui::JournalWindow::displayRightText(std::string text)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MWGui::JournalWindow::notifyNextPage(MyGUI::WidgetPtr _sender)
|
void MWGui::JournalWindow::notifyNextPage(MyGUI::Widget* _sender)
|
||||||
{
|
{
|
||||||
if(mPageNumber < int(mLeftPages.size())-1)
|
if(mPageNumber < int(mLeftPages.size())-1)
|
||||||
{
|
{
|
||||||
|
@ -189,7 +188,7 @@ void MWGui::JournalWindow::notifyNextPage(MyGUI::WidgetPtr _sender)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MWGui::JournalWindow::notifyPrevPage(MyGUI::WidgetPtr _sender)
|
void MWGui::JournalWindow::notifyPrevPage(MyGUI::Widget* _sender)
|
||||||
{
|
{
|
||||||
if(mPageNumber > 0)
|
if(mPageNumber > 0)
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
#include "window_base.hpp"
|
#include "window_base.hpp"
|
||||||
|
#include "imagebutton.hpp"
|
||||||
|
|
||||||
namespace MWGui
|
namespace MWGui
|
||||||
{
|
{
|
||||||
|
@ -25,18 +26,13 @@ namespace MWGui
|
||||||
/**
|
/**
|
||||||
*Called when next/prev button is used.
|
*Called when next/prev button is used.
|
||||||
*/
|
*/
|
||||||
void notifyNextPage(MyGUI::WidgetPtr _sender);
|
void notifyNextPage(MyGUI::Widget* _sender);
|
||||||
void notifyPrevPage(MyGUI::WidgetPtr _sender);
|
void notifyPrevPage(MyGUI::Widget* _sender);
|
||||||
|
|
||||||
static const int sLineHeight;
|
|
||||||
|
|
||||||
MyGUI::WidgetPtr mSkillAreaWidget, mSkillClientWidget;
|
|
||||||
MyGUI::ScrollBar* mSkillScrollerWidget;
|
|
||||||
int mLastPos, mClientHeight;
|
|
||||||
MyGUI::EditPtr mLeftTextWidget;
|
MyGUI::EditPtr mLeftTextWidget;
|
||||||
MyGUI::EditPtr mRightTextWidget;
|
MyGUI::EditPtr mRightTextWidget;
|
||||||
MyGUI::ButtonPtr mPrevBtn;
|
MWGui::ImageButton* mPrevBtn;
|
||||||
MyGUI::ButtonPtr mNextBtn;
|
MWGui::ImageButton* mNextBtn;
|
||||||
std::vector<std::string> mLeftPages;
|
std::vector<std::string> mLeftPages;
|
||||||
std::vector<std::string> mRightPages;
|
std::vector<std::string> mRightPages;
|
||||||
int mPageNumber; //store the number of the current left page
|
int mPageNumber; //store the number of the current left page
|
||||||
|
|
|
@ -20,65 +20,57 @@ namespace MWGui
|
||||||
{
|
{
|
||||||
setCoord(0,0,w,h);
|
setCoord(0,0,w,h);
|
||||||
|
|
||||||
int height = 64 * 3;
|
|
||||||
|
|
||||||
if (mButtonBox)
|
if (mButtonBox)
|
||||||
MyGUI::Gui::getInstance ().destroyWidget(mButtonBox);
|
MyGUI::Gui::getInstance ().destroyWidget(mButtonBox);
|
||||||
|
|
||||||
mButtonBox = mMainWidget->createWidget<MyGUI::Widget>("", MyGUI::IntCoord(w/2 - 64, h/2 - height/2, 128, height), MyGUI::Align::Default);
|
mButtonBox = mMainWidget->createWidget<MyGUI::Widget>("", MyGUI::IntCoord(0, 0, 0, 0), MyGUI::Align::Default);
|
||||||
int curH = 0;
|
int curH = 0;
|
||||||
|
|
||||||
mReturn = mButtonBox->createWidget<MyGUI::Button> ("ButtonImage", MyGUI::IntCoord(0, curH, 128, 64), MyGUI::Align::Default);
|
std::vector<std::string> buttons;
|
||||||
mReturn->setImageResource ("Menu_Return");
|
buttons.push_back("return");
|
||||||
mReturn->eventMouseButtonClick += MyGUI::newDelegate(this, &MainMenu::returnToGame);
|
//buttons.push_back("newgame");
|
||||||
curH += 64;
|
//buttons.push_back("loadgame");
|
||||||
|
//buttons.push_back("savegame");
|
||||||
|
buttons.push_back("options");
|
||||||
|
//buttons.push_back("credits");
|
||||||
|
buttons.push_back("exitgame");
|
||||||
|
|
||||||
|
int maxwidth = 0;
|
||||||
|
|
||||||
/*
|
mButtons.clear();
|
||||||
mNewGame = mButtonBox->createWidget<MyGUI::Button> ("ButtonImage", MyGUI::IntCoord(0, curH, 128, 64), MyGUI::Align::Default);
|
for (std::vector<std::string>::iterator it = buttons.begin(); it != buttons.end(); ++it)
|
||||||
mNewGame->setImageResource ("Menu_NewGame");
|
{
|
||||||
curH += 64;
|
MWGui::ImageButton* button = mButtonBox->createWidget<MWGui::ImageButton>
|
||||||
|
("ImageBox", MyGUI::IntCoord(0, curH, 0, 0), MyGUI::Align::Default);
|
||||||
|
button->setProperty("ImageHighlighted", "textures\\menu_" + *it + "_over.dds");
|
||||||
|
button->setProperty("ImageNormal", "textures\\menu_" + *it + ".dds");
|
||||||
|
button->setProperty("ImagePushed", "textures\\menu_" + *it + "_pressed.dds");
|
||||||
|
MyGUI::IntSize requested = button->getRequestedSize();
|
||||||
|
button->eventMouseButtonClick += MyGUI::newDelegate(this, &MainMenu::onButtonClicked);
|
||||||
|
mButtons[*it] = button;
|
||||||
|
curH += requested.height;
|
||||||
|
|
||||||
mLoadGame = mButtonBox->createWidget<MyGUI::Button> ("ButtonImage", MyGUI::IntCoord(0, curH, 128, 64), MyGUI::Align::Default);
|
if (requested.width > maxwidth)
|
||||||
mLoadGame->setImageResource ("Menu_LoadGame");
|
maxwidth = requested.width;
|
||||||
curH += 64;
|
}
|
||||||
|
for (std::map<std::string, MWGui::ImageButton*>::iterator it = mButtons.begin(); it != mButtons.end(); ++it)
|
||||||
|
{
|
||||||
|
MyGUI::IntSize requested = it->second->getRequestedSize();
|
||||||
|
it->second->setCoord((maxwidth-requested.width) / 2, it->second->getTop(), requested.width, requested.height);
|
||||||
|
}
|
||||||
|
|
||||||
|
mButtonBox->setCoord (w/2 - maxwidth/2, h/2 - curH/2, maxwidth, curH);
|
||||||
mSaveGame = mButtonBox->createWidget<MyGUI::Button> ("ButtonImage", MyGUI::IntCoord(0, curH, 128, 64), MyGUI::Align::Default);
|
|
||||||
mSaveGame->setImageResource ("Menu_SaveGame");
|
|
||||||
curH += 64;
|
|
||||||
*/
|
|
||||||
|
|
||||||
mOptions = mButtonBox->createWidget<MyGUI::Button> ("ButtonImage", MyGUI::IntCoord(0, curH, 128, 64), MyGUI::Align::Default);
|
|
||||||
mOptions->setImageResource ("Menu_Options");
|
|
||||||
mOptions->eventMouseButtonClick += MyGUI::newDelegate(this, &MainMenu::showOptions);
|
|
||||||
curH += 64;
|
|
||||||
|
|
||||||
/*
|
|
||||||
mCredits = mButtonBox->createWidget<MyGUI::Button> ("ButtonImage", MyGUI::IntCoord(0, curH, 128, 64), MyGUI::Align::Default);
|
|
||||||
mCredits->setImageResource ("Menu_Credits");
|
|
||||||
curH += 64;
|
|
||||||
*/
|
|
||||||
|
|
||||||
mExitGame = mButtonBox->createWidget<MyGUI::Button> ("ButtonImage", MyGUI::IntCoord(0, curH, 128, 64), MyGUI::Align::Default);
|
|
||||||
mExitGame->setImageResource ("Menu_ExitGame");
|
|
||||||
mExitGame->eventMouseButtonClick += MyGUI::newDelegate(this, &MainMenu::exitGame);
|
|
||||||
curH += 64;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainMenu::returnToGame(MyGUI::Widget* sender)
|
void MainMenu::onButtonClicked(MyGUI::Widget *sender)
|
||||||
{
|
{
|
||||||
MWBase::Environment::get().getWindowManager ()->removeGuiMode (GM_MainMenu);
|
if (sender == mButtons["return"])
|
||||||
}
|
MWBase::Environment::get().getWindowManager ()->removeGuiMode (GM_MainMenu);
|
||||||
|
else if (sender == mButtons["options"])
|
||||||
void MainMenu::showOptions(MyGUI::Widget* sender)
|
MWBase::Environment::get().getWindowManager ()->pushGuiMode (GM_Settings);
|
||||||
{
|
else if (sender == mButtons["exitgame"])
|
||||||
MWBase::Environment::get().getWindowManager ()->pushGuiMode (GM_Settings);
|
Ogre::Root::getSingleton ().queueEndRendering ();
|
||||||
}
|
|
||||||
|
|
||||||
void MainMenu::exitGame(MyGUI::Widget* sender)
|
|
||||||
{
|
|
||||||
Ogre::Root::getSingleton ().queueEndRendering ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#include <openengine/gui/layout.hpp>
|
#include <openengine/gui/layout.hpp>
|
||||||
|
|
||||||
|
#include "imagebutton.hpp"
|
||||||
|
|
||||||
namespace MWGui
|
namespace MWGui
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -11,19 +13,11 @@ namespace MWGui
|
||||||
void onResChange(int w, int h);
|
void onResChange(int w, int h);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MyGUI::Button* mReturn;
|
|
||||||
MyGUI::Button* mNewGame;
|
|
||||||
MyGUI::Button* mLoadGame;
|
|
||||||
MyGUI::Button* mSaveGame;
|
|
||||||
MyGUI::Button* mOptions;
|
|
||||||
MyGUI::Button* mCredits;
|
|
||||||
MyGUI::Button* mExitGame;
|
|
||||||
|
|
||||||
MyGUI::Widget* mButtonBox;
|
MyGUI::Widget* mButtonBox;
|
||||||
|
|
||||||
void returnToGame(MyGUI::Widget* sender);
|
std::map<std::string, MWGui::ImageButton*> mButtons;
|
||||||
void showOptions(MyGUI::Widget* sender);
|
|
||||||
void exitGame(MyGUI::Widget* sender);
|
void onButtonClicked (MyGUI::Widget* sender);
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define MWGUI_SCROLLWINDOW_H
|
#define MWGUI_SCROLLWINDOW_H
|
||||||
|
|
||||||
#include "window_base.hpp"
|
#include "window_base.hpp"
|
||||||
|
#include "imagebutton.hpp"
|
||||||
|
|
||||||
#include "../mwworld/ptr.hpp"
|
#include "../mwworld/ptr.hpp"
|
||||||
|
|
||||||
|
@ -20,8 +21,8 @@ namespace MWGui
|
||||||
void onTakeButtonClicked (MyGUI::Widget* _sender);
|
void onTakeButtonClicked (MyGUI::Widget* _sender);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
MyGUI::Button* mCloseButton;
|
MWGui::ImageButton* mCloseButton;
|
||||||
MyGUI::Button* mTakeButton;
|
MWGui::ImageButton* mTakeButton;
|
||||||
MyGUI::ScrollView* mTextView;
|
MyGUI::ScrollView* mTextView;
|
||||||
|
|
||||||
MWWorld::Ptr mScroll;
|
MWWorld::Ptr mScroll;
|
||||||
|
|
|
@ -51,6 +51,7 @@
|
||||||
#include "spellcreationdialog.hpp"
|
#include "spellcreationdialog.hpp"
|
||||||
#include "enchantingdialog.hpp"
|
#include "enchantingdialog.hpp"
|
||||||
#include "trainingwindow.hpp"
|
#include "trainingwindow.hpp"
|
||||||
|
#include "imagebutton.hpp"
|
||||||
|
|
||||||
using namespace MWGui;
|
using namespace MWGui;
|
||||||
|
|
||||||
|
@ -126,6 +127,7 @@ WindowManager::WindowManager(
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::VBox>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::VBox>("Widget");
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::AutoSizedTextBox>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::AutoSizedTextBox>("Widget");
|
||||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::AutoSizedButton>("Widget");
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::AutoSizedButton>("Widget");
|
||||||
|
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::ImageButton>("Widget");
|
||||||
|
|
||||||
MyGUI::LanguageManager::getInstance().eventRequestTag = MyGUI::newDelegate(this, &WindowManager::onRetrieveTag);
|
MyGUI::LanguageManager::getInstance().eventRequestTag = MyGUI::newDelegate(this, &WindowManager::onRetrieveTag);
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,6 @@ set(SDIR ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
set(DDIR ${OpenMW_BINARY_DIR}/resources/mygui)
|
set(DDIR ${OpenMW_BINARY_DIR}/resources/mygui)
|
||||||
|
|
||||||
set(MYGUI_FILES
|
set(MYGUI_FILES
|
||||||
atlas1.cfg
|
|
||||||
mainmenu.cfg
|
|
||||||
bigbars.png
|
bigbars.png
|
||||||
black.png
|
black.png
|
||||||
core.skin
|
core.skin
|
||||||
|
|
|
@ -1,51 +0,0 @@
|
||||||
[settings]
|
|
||||||
size_x = 512
|
|
||||||
size_y = 512
|
|
||||||
|
|
||||||
[tx_menubook_close_idle.dds]
|
|
||||||
x = 0
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[tx_menubook_close_over.dds]
|
|
||||||
x = 128
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[tx_menubook_close_pressed.dds]
|
|
||||||
x = 256
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[tx_menubook_take_idle.dds]
|
|
||||||
x = 384
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[tx_menubook_take_over.dds]
|
|
||||||
x = 0
|
|
||||||
y = 32
|
|
||||||
|
|
||||||
[tx_menubook_take_pressed.dds]
|
|
||||||
x = 128
|
|
||||||
y = 32
|
|
||||||
|
|
||||||
[tx_menubook_next_idle.dds]
|
|
||||||
x = 256
|
|
||||||
y = 32
|
|
||||||
|
|
||||||
[tx_menubook_next_over.dds]
|
|
||||||
x = 384
|
|
||||||
y = 32
|
|
||||||
|
|
||||||
[tx_menubook_next_pressed.dds]
|
|
||||||
x = 0
|
|
||||||
y = 64
|
|
||||||
|
|
||||||
[tx_menubook_prev_idle.dds]
|
|
||||||
x = 128
|
|
||||||
y = 64
|
|
||||||
|
|
||||||
[tx_menubook_prev_over.dds]
|
|
||||||
x = 256
|
|
||||||
y = 64
|
|
||||||
|
|
||||||
[tx_menubook_prev_pressed.dds]
|
|
||||||
x = 384
|
|
||||||
y = 64
|
|
|
@ -1,95 +0,0 @@
|
||||||
[settings]
|
|
||||||
size_x = 512
|
|
||||||
size_y = 512
|
|
||||||
|
|
||||||
|
|
||||||
[menu_newgame.dds]
|
|
||||||
x = 0
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[menu_newgame_pressed.dds]
|
|
||||||
x = 128
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[menu_newgame_over.dds]
|
|
||||||
x = 256
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
|
|
||||||
[menu_loadgame.dds]
|
|
||||||
x = 384
|
|
||||||
y = 0
|
|
||||||
|
|
||||||
[menu_loadgame_pressed.dds]
|
|
||||||
x = 0
|
|
||||||
y = 64
|
|
||||||
|
|
||||||
[menu_loadgame_over.dds]
|
|
||||||
x = 128
|
|
||||||
y = 64
|
|
||||||
|
|
||||||
|
|
||||||
[menu_options.dds]
|
|
||||||
x = 256
|
|
||||||
y = 64
|
|
||||||
|
|
||||||
[menu_options_pressed.dds]
|
|
||||||
x = 384
|
|
||||||
y = 64
|
|
||||||
|
|
||||||
[menu_options_over.dds]
|
|
||||||
x = 0
|
|
||||||
y = 128
|
|
||||||
|
|
||||||
|
|
||||||
[menu_credits.dds]
|
|
||||||
x = 128
|
|
||||||
y = 128
|
|
||||||
|
|
||||||
[menu_credits_pressed.dds]
|
|
||||||
x = 256
|
|
||||||
y = 128
|
|
||||||
|
|
||||||
[menu_credits_over.dds]
|
|
||||||
x = 384
|
|
||||||
y = 128
|
|
||||||
|
|
||||||
|
|
||||||
[menu_exitgame.dds]
|
|
||||||
x = 0
|
|
||||||
y = 192
|
|
||||||
|
|
||||||
[menu_exitgame_pressed.dds]
|
|
||||||
x = 128
|
|
||||||
y = 192
|
|
||||||
|
|
||||||
[menu_exitgame_over.dds]
|
|
||||||
x = 256
|
|
||||||
y = 192
|
|
||||||
|
|
||||||
|
|
||||||
[menu_savegame.dds]
|
|
||||||
x = 384
|
|
||||||
y = 192
|
|
||||||
|
|
||||||
[menu_savegame_pressed.dds]
|
|
||||||
x = 0
|
|
||||||
y = 256
|
|
||||||
|
|
||||||
[menu_savegame_over.dds]
|
|
||||||
x = 128
|
|
||||||
y = 256
|
|
||||||
|
|
||||||
|
|
||||||
[menu_return.dds]
|
|
||||||
x = 256
|
|
||||||
y = 256
|
|
||||||
|
|
||||||
[menu_return_pressed.dds]
|
|
||||||
x = 384
|
|
||||||
y = 256
|
|
||||||
|
|
||||||
[menu_return_over.dds]
|
|
||||||
x = 0
|
|
||||||
y = 320
|
|
||||||
|
|
|
@ -7,17 +7,25 @@
|
||||||
<Widget type="ImageBox" skin="ImageBox" position_real="0 0 1 1" align="Top|Right" name="BookImage">
|
<Widget type="ImageBox" skin="ImageBox" position_real="0 0 1 1" align="Top|Right" name="BookImage">
|
||||||
<Property key="ImageTexture" value="textures\tx_menubook.dds"/>
|
<Property key="ImageTexture" value="textures\tx_menubook.dds"/>
|
||||||
|
|
||||||
<Widget type="Button" skin="ButtonImage" position="251 220 57 24" name="NextPageBTN">
|
<Widget type="ImageButton" skin="ImageBox" position="251 220 128 32" name="NextPageBTN">
|
||||||
<Property key="ImageResource" value="MenuBook_Next"/>
|
<Property key="ImageHighlighted" value="textures\tx_menubook_next_over.dds"/>
|
||||||
|
<Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/>
|
||||||
|
<Property key="ImagePushed" value="textures\tx_menubook_next_pressed.dds"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="ButtonImage" position="165 220 96 24" name="PrevPageBTN">
|
<Widget type="ImageButton" skin="ImageBox" position="165 220 128 32" name="PrevPageBTN">
|
||||||
<Property key="ImageResource" value="MenuBook_Prev"/>
|
<Property key="ImageHighlighted" value="textures\tx_menubook_prev_over.dds"/>
|
||||||
|
<Property key="ImageNormal" value="textures\tx_menubook_prev_idle.dds"/>
|
||||||
|
<Property key="ImagePushed" value="textures\tx_menubook_prev_pressed.dds"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="ButtonImage" position="75 220 96 24" name="TakeButton">
|
<Widget type="ImageButton" skin="ImageBox" position="75 220 128 32" name="TakeButton">
|
||||||
<Property key="ImageResource" value="MenuBook_Take"/>
|
<Property key="ImageHighlighted" value="textures\tx_menubook_take_over.dds"/>
|
||||||
|
<Property key="ImageNormal" value="textures\tx_menubook_take_idle.dds"/>
|
||||||
|
<Property key="ImagePushed" value="textures\tx_menubook_take_pressed.dds"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="ButtonImage" position="360 220 96 24" name="CloseButton">
|
<Widget type="ImageButton" skin="ImageBox" position="360 220 128 32" name="CloseButton">
|
||||||
<Property key="ImageResource" value="MenuBook_Close"/>
|
<Property key="ImageHighlighted" value="textures\tx_menubook_close_over.dds"/>
|
||||||
|
<Property key="ImageNormal" value="textures\tx_menubook_close_idle.dds"/>
|
||||||
|
<Property key="ImagePushed" value="textures\tx_menubook_close_pressed.dds"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
<Widget type="TextBox" skin="NormalText" position="155 215 24 24" name="LeftPageNumber">
|
<Widget type="TextBox" skin="NormalText" position="155 215 24 24" name="LeftPageNumber">
|
||||||
|
|
|
@ -7,11 +7,15 @@
|
||||||
<Widget type="ImageBox" skin="ImageBox" position_real="0 0 1 1" align="Top|Right" name="JImage">
|
<Widget type="ImageBox" skin="ImageBox" position_real="0 0 1 1" align="Top|Right" name="JImage">
|
||||||
<Property key="ImageTexture" value="textures\tx_menubook.dds"/>
|
<Property key="ImageTexture" value="textures\tx_menubook.dds"/>
|
||||||
|
|
||||||
<Widget type="Button" skin="ButtonImage" position="370 220 57 24" name="NextPageBTN">
|
<Widget type="ImageButton" skin="ImageBox" position="370 220 128 32" name="NextPageBTN">
|
||||||
<Property key="ImageResource" value="MenuBook_Next"/>
|
<Property key="ImageHighlighted" value="textures\tx_menubook_next_over.dds"/>
|
||||||
|
<Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/>
|
||||||
|
<Property key="ImagePushed" value="textures\tx_menubook_next_pressed.dds"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="Button" skin="ButtonImage" position="80 220 96 24" name="PrevPageBTN">
|
<Widget type="ImageButton" skin="ImageBox" position="80 220 128 32" name="PrevPageBTN">
|
||||||
<Property key="ImageResource" value="MenuBook_Prev"/>
|
<Property key="ImageHighlighted" value="textures\tx_menubook_prev_over.dds"/>
|
||||||
|
<Property key="ImageNormal" value="textures\tx_menubook_prev_idle.dds"/>
|
||||||
|
<Property key="ImagePushed" value="textures\tx_menubook_prev_pressed.dds"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
<Widget type="EditBox" skin="MW_BookPage" position_real="0.15 0.1 0.3 0.75" name = "LeftText"/>
|
<Widget type="EditBox" skin="MW_BookPage" position_real="0.15 0.1 0.3 0.75" name = "LeftText"/>
|
||||||
<Widget type="EditBox" skin="MW_BookPage" position_real="0.55 0.1 0.3 0.75" name = "RightText"/>
|
<Widget type="EditBox" skin="MW_BookPage" position_real="0.55 0.1 0.3 0.75" name = "RightText"/>
|
||||||
|
|
|
@ -1,34 +1,4 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
<MyGUI type="Skin">
|
<MyGUI type="Skin">
|
||||||
<Skin name="ReturnButton" size="128 64" texture="textures\menu_return.dds">
|
|
||||||
<BasisSkin type="MainSkin" offset = "0 0 128 64">
|
|
||||||
<State name="normal" offset = "0 0 128 64"/>
|
|
||||||
</BasisSkin>
|
|
||||||
</Skin>
|
|
||||||
<Skin name="NewButton" size="128 64" texture="textures\menu_newgame.dds">
|
|
||||||
<BasisSkin type="MainSkin" offset = "0 0 128 64">
|
|
||||||
<State name="normal" offset = "0 0 128 64"/>
|
|
||||||
</BasisSkin>
|
|
||||||
</Skin>
|
|
||||||
<Skin name="SaveButton" size="128 64" texture="textures\menu_savegame.dds">
|
|
||||||
<BasisSkin type="MainSkin" offset = "0 0 128 64">
|
|
||||||
<State name="normal" offset = "0 0 128 64"/>
|
|
||||||
</BasisSkin>
|
|
||||||
</Skin>
|
|
||||||
<Skin name="LoadButton" size="128 64" texture="textures\menu_loadgame.dds">
|
|
||||||
<BasisSkin type="MainSkin" offset = "0 0 128 64">
|
|
||||||
<State name="normal" offset = "0 0 128 64"/>
|
|
||||||
</BasisSkin>
|
|
||||||
</Skin>
|
|
||||||
<Skin name="OptionsButton" size="128 64" texture="textures\menu_options.dds">
|
|
||||||
<BasisSkin type="MainSkin" offset = "0 0 128 64">
|
|
||||||
<State name="normal" offset = "0 0 128 64"/>
|
|
||||||
</BasisSkin>
|
|
||||||
</Skin>
|
|
||||||
<Skin name="ExitButton" size="128 64" texture="textures\menu_exitgame.dds">
|
|
||||||
<BasisSkin type="MainSkin" offset = "0 0 128 64">
|
|
||||||
<State name="normal" offset = "0 0 128 64"/>
|
|
||||||
</BasisSkin>
|
|
||||||
</Skin>
|
|
||||||
</MyGUI>
|
</MyGUI>
|
||||||
|
|
|
@ -7,12 +7,16 @@
|
||||||
<Widget type="ImageBox" skin="ImageBox" position_real="0 0 1 1" name="ScrollImage">
|
<Widget type="ImageBox" skin="ImageBox" position_real="0 0 1 1" name="ScrollImage">
|
||||||
<Property key="ImageTexture" value="textures\scroll.dds"/>
|
<Property key="ImageTexture" value="textures\scroll.dds"/>
|
||||||
|
|
||||||
<Widget type="Button" skin="ButtonImage" position="12 18 96 24" name="TakeButton">
|
<Widget type="ImageButton" skin="ImageBox" position="12 18 128 32" name="TakeButton">
|
||||||
<Property key="ImageResource" value="MenuBook_Take"/>
|
<Property key="ImageHighlighted" value="textures\tx_menubook_take_over.dds"/>
|
||||||
|
<Property key="ImageNormal" value="textures\tx_menubook_take_idle.dds"/>
|
||||||
|
<Property key="ImagePushed" value="textures\tx_menubook_take_pressed.dds"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
<Widget type="Button" skin="ButtonImage" position="418 24 96 24" name="CloseButton">
|
<Widget type="ImageButton" skin="ImageBox" position="418 24 128 32" name="CloseButton">
|
||||||
<Property key="ImageResource" value="MenuBook_Close"/>
|
<Property key="ImageHighlighted" value="textures\tx_menubook_close_over.dds"/>
|
||||||
|
<Property key="ImageNormal" value="textures\tx_menubook_close_idle.dds"/>
|
||||||
|
<Property key="ImagePushed" value="textures\tx_menubook_close_pressed.dds"/>
|
||||||
</Widget>
|
</Widget>
|
||||||
|
|
||||||
<Widget type="ScrollView" skin="MW_ScrollView" position="60 130 410 300" name="TextView">
|
<Widget type="ScrollView" skin="MW_ScrollView" position="60 130 410 300" name="TextView">
|
||||||
|
|
|
@ -1,113 +0,0 @@
|
||||||
#include "atlas.hpp"
|
|
||||||
|
|
||||||
#include <OgreRoot.h>
|
|
||||||
#include <OgreSceneManager.h>
|
|
||||||
#include <OgreImage.h>
|
|
||||||
#include <OgreTexture.h>
|
|
||||||
#include <OgreRenderTarget.h>
|
|
||||||
#include <OgreCamera.h>
|
|
||||||
#include <OgreTextureUnitState.h>
|
|
||||||
#include <OgreHardwarePixelBuffer.h>
|
|
||||||
#include <OgreConfigFile.h>
|
|
||||||
#include <OgreStringConverter.h>
|
|
||||||
|
|
||||||
using namespace Ogre;
|
|
||||||
using namespace OEngine::Render;
|
|
||||||
|
|
||||||
void Atlas::createFromFile (const std::string& filename, const std::string& textureName, const std::string& texturePrefix)
|
|
||||||
{
|
|
||||||
ConfigFile file;
|
|
||||||
file.load(filename, ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME, "\t:=", true);
|
|
||||||
|
|
||||||
Root* root = Ogre::Root::getSingletonPtr();
|
|
||||||
|
|
||||||
SceneManager* sceneMgr = root->createSceneManager(ST_GENERIC);
|
|
||||||
Camera* camera = sceneMgr->createCamera("AtlasCamera");
|
|
||||||
|
|
||||||
int width = StringConverter::parseInt(file.getSetting("size_x", "settings"));
|
|
||||||
int height = StringConverter::parseInt(file.getSetting("size_y", "settings"));
|
|
||||||
|
|
||||||
std::vector<Rectangle2D*> rectangles;
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
ConfigFile::SectionIterator seci = file.getSectionIterator();
|
|
||||||
while (seci.hasMoreElements())
|
|
||||||
{
|
|
||||||
Ogre::String sectionName = seci.peekNextKey();
|
|
||||||
seci.getNext();
|
|
||||||
|
|
||||||
if (sectionName == "settings" || sectionName == "")
|
|
||||||
continue;
|
|
||||||
|
|
||||||
MaterialPtr material = MaterialManager::getSingleton().create("AtlasMaterial" + StringConverter::toString(i), ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
|
|
||||||
material->getTechnique(0)->getPass(0)->setLightingEnabled(false);
|
|
||||||
material->getTechnique(0)->getPass(0)->setDepthCheckEnabled(false);
|
|
||||||
TextureUnitState* tus = material->getTechnique(0)->getPass(0)->createTextureUnitState(texturePrefix + sectionName);
|
|
||||||
tus->setTextureBorderColour(ColourValue(0, 0, 0, 0));
|
|
||||||
|
|
||||||
Rectangle2D* rect = new Rectangle2D(true);
|
|
||||||
rect->setMaterial("AtlasMaterial" + StringConverter::toString(i));
|
|
||||||
rect->setRenderQueueGroup(RENDER_QUEUE_BACKGROUND);
|
|
||||||
|
|
||||||
int x = StringConverter::parseInt(file.getSetting("x", sectionName));
|
|
||||||
int y = StringConverter::parseInt(file.getSetting("y", sectionName));
|
|
||||||
|
|
||||||
TexturePtr texture = TextureManager::getSingleton().getByName(texturePrefix + sectionName);
|
|
||||||
if (texture.isNull())
|
|
||||||
{
|
|
||||||
std::cerr << "OEngine::Render::Atlas: Can't find texture " << texturePrefix + sectionName << ", skipping..." << std::endl;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
int textureWidth = texture->getWidth();
|
|
||||||
int textureHeight = texture->getHeight();
|
|
||||||
|
|
||||||
float left = x/float(width) * 2 - 1;
|
|
||||||
float top = (1-(y/float(height))) * 2 - 1;
|
|
||||||
float right = ((x+textureWidth))/float(width) * 2 - 1;
|
|
||||||
float bottom = (1-((y+textureHeight)/float(height))) * 2 - 1;
|
|
||||||
rect->setCorners(left, top, right, bottom);
|
|
||||||
|
|
||||||
// Use infinite AAB to always stay visible
|
|
||||||
AxisAlignedBox aabInf;
|
|
||||||
aabInf.setInfinite();
|
|
||||||
rect->setBoundingBox(aabInf);
|
|
||||||
|
|
||||||
// Attach background to the scene
|
|
||||||
SceneNode* node = sceneMgr->getRootSceneNode()->createChildSceneNode();
|
|
||||||
node->attachObject(rect);
|
|
||||||
|
|
||||||
rectangles.push_back(rect);
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
TexturePtr destTexture = TextureManager::getSingleton().createManual(
|
|
||||||
textureName,
|
|
||||||
ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
|
|
||||||
TEX_TYPE_2D,
|
|
||||||
width, height,
|
|
||||||
0,
|
|
||||||
PF_FLOAT16_RGBA,
|
|
||||||
TU_RENDERTARGET);
|
|
||||||
|
|
||||||
RenderTarget* rtt = destTexture->getBuffer()->getRenderTarget();
|
|
||||||
rtt->setAutoUpdated(false);
|
|
||||||
Viewport* vp = rtt->addViewport(camera);
|
|
||||||
vp->setOverlaysEnabled(false);
|
|
||||||
vp->setShadowsEnabled(false);
|
|
||||||
vp->setBackgroundColour(ColourValue(0,0,0,0));
|
|
||||||
|
|
||||||
rtt->update();
|
|
||||||
|
|
||||||
// remove all the junk we've created
|
|
||||||
for (std::vector<Rectangle2D*>::iterator it=rectangles.begin();
|
|
||||||
it!=rectangles.end(); ++it)
|
|
||||||
{
|
|
||||||
delete (*it);
|
|
||||||
}
|
|
||||||
while (i > 0)
|
|
||||||
{
|
|
||||||
MaterialManager::getSingleton().remove("AtlasMaterial" + StringConverter::toString(i-1));
|
|
||||||
--i;
|
|
||||||
}
|
|
||||||
root->destroySceneManager(sceneMgr);
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
#ifndef OENGINE_OGRE_ATLAS_HPP
|
|
||||||
#define OENGINE_OGRE_ATLAS_HPP
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
namespace OEngine
|
|
||||||
{
|
|
||||||
namespace Render
|
|
||||||
{
|
|
||||||
|
|
||||||
/// \brief Creates a texture atlas at runtime
|
|
||||||
class Atlas
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/**
|
|
||||||
* @param absolute path to file that specifies layout of the texture (positions of the textures it contains)
|
|
||||||
* @param name of the destination texture to save to (in memory)
|
|
||||||
* @param texture directory prefix
|
|
||||||
*/
|
|
||||||
static void createFromFile (const std::string& filename, const std::string& textureName, const std::string& texturePrefix="textures\\");
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
Loading…
Reference in a new issue