mirror of
https://github.com/OpenMW/openmw.git
synced 2025-01-30 09:15:38 +00:00
Merge branch 'master' of https://github.com/zinnschlag/openmw into graphics
This commit is contained in:
commit
db9e49968e
19 changed files with 271 additions and 154 deletions
|
@ -660,6 +660,7 @@ if (NOT WIN32 AND NOT DPKG_PROGRAM AND NOT APPLE)
|
|||
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/omwlauncher" DESTINATION "${BINDIR}" )
|
||||
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/esmtool" DESTINATION "${BINDIR}" )
|
||||
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/mwiniimport" DESTINATION "${BINDIR}" )
|
||||
INSTALL(PROGRAMS "${OpenMW_BINARY_DIR}/opencs" DESTINATION "${BINDIR}" )
|
||||
|
||||
# Install icon and .desktop
|
||||
INSTALL(FILES "${OpenMW_SOURCE_DIR}/apps/launcher/resources/images/openmw.png" DESTINATION "${ICONDIR}")
|
||||
|
|
|
@ -30,7 +30,7 @@ add_openmw_dir (mwgui
|
|||
formatting inventorywindow container hud countdialog tradewindow settingswindow
|
||||
confirmationdialog alchemywindow referenceinterface spellwindow mainmenu quickkeysmenu
|
||||
itemselection spellbuyingwindow loadingscreen levelupdialog waitdialog spellcreationdialog
|
||||
enchantingdialog trainingwindow travelwindow imagebutton
|
||||
enchantingdialog trainingwindow travelwindow imagebutton exposedwindow
|
||||
)
|
||||
|
||||
add_openmw_dir (mwdialogue
|
||||
|
|
|
@ -215,7 +215,7 @@ void OMW::Engine::addMaster (const std::string& master)
|
|||
{
|
||||
mMaster.push_back(master);
|
||||
std::string &str = mMaster.back();
|
||||
|
||||
|
||||
// Append .esm if not already there
|
||||
std::string::size_type sep = str.find_last_of (".");
|
||||
if (sep == std::string::npos)
|
||||
|
@ -303,7 +303,7 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings)
|
|||
}
|
||||
|
||||
mOgre = new OEngine::Render::OgreRenderer;
|
||||
|
||||
|
||||
mOgre->configure(
|
||||
mCfgMgr.getLogPath().string(),
|
||||
renderSystem,
|
||||
|
@ -344,7 +344,8 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings)
|
|||
|
||||
//Load translation data
|
||||
mTranslationDataStorage.setEncoder(mEncoder);
|
||||
mTranslationDataStorage.loadTranslationData(mFileCollections, mMaster[0]);
|
||||
for (size_t i = 0; i < mMaster.size(); i++)
|
||||
mTranslationDataStorage.loadTranslationData(mFileCollections, mMaster[i]);
|
||||
|
||||
// Create window manager - this manages all the MW-specific GUI windows
|
||||
MWScript::registerExtensions (mExtensions);
|
||||
|
|
26
apps/openmw/mwgui/exposedwindow.cpp
Normal file
26
apps/openmw/mwgui/exposedwindow.cpp
Normal file
|
@ -0,0 +1,26 @@
|
|||
#include "exposedwindow.hpp"
|
||||
|
||||
#include "MyGUI_Window.h"
|
||||
|
||||
namespace MWGui
|
||||
{
|
||||
MyGUI::VectorWidgetPtr ExposedWindow::getSkinWidgetsByName (const std::string &name)
|
||||
{
|
||||
return MyGUI::Widget::getSkinWidgetsByName (name);
|
||||
}
|
||||
|
||||
MyGUI::Widget* ExposedWindow::getSkinWidget(const std::string & _name, bool _throw)
|
||||
{
|
||||
MyGUI::VectorWidgetPtr widgets = getSkinWidgetsByName (_name);
|
||||
|
||||
if (widgets.empty())
|
||||
{
|
||||
MYGUI_ASSERT( ! _throw, "widget name '" << _name << "' not found in skin of layout '" << getName() << "'");
|
||||
return nullptr;
|
||||
}
|
||||
else
|
||||
{
|
||||
return widgets[0];
|
||||
}
|
||||
}
|
||||
}
|
26
apps/openmw/mwgui/exposedwindow.hpp
Normal file
26
apps/openmw/mwgui/exposedwindow.hpp
Normal file
|
@ -0,0 +1,26 @@
|
|||
#ifndef MWGUI_EXPOSEDWINDOW_H
|
||||
#define MWGUI_EXPOSEDWINDOW_H
|
||||
|
||||
#include "MyGUI_Window.h"
|
||||
|
||||
namespace MWGui
|
||||
{
|
||||
|
||||
/**
|
||||
* @brief subclass to provide access to some Widget internals.
|
||||
*/
|
||||
class ExposedWindow : public MyGUI::Window
|
||||
{
|
||||
MYGUI_RTTI_DERIVED(ExposedWindow)
|
||||
|
||||
public:
|
||||
MyGUI::VectorWidgetPtr getSkinWidgetsByName (const std::string &name);
|
||||
|
||||
MyGUI::Widget* getSkinWidget(const std::string & _name, bool _throw = true);
|
||||
///< Get a widget defined in the inner skin of this window.
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
@ -2,32 +2,27 @@
|
|||
|
||||
#include "../mwbase/windowmanager.hpp"
|
||||
|
||||
#include "exposedwindow.hpp"
|
||||
|
||||
using namespace MWGui;
|
||||
|
||||
WindowPinnableBase::WindowPinnableBase(const std::string& parLayout, MWBase::WindowManager& parWindowManager)
|
||||
: WindowBase(parLayout, parWindowManager), mPinned(false), mVisible(false)
|
||||
{
|
||||
MyGUI::WindowPtr t = static_cast<MyGUI::WindowPtr>(mMainWidget);
|
||||
t->eventWindowButtonPressed += MyGUI::newDelegate(this, &WindowPinnableBase::onWindowButtonPressed);
|
||||
ExposedWindow* window = static_cast<ExposedWindow*>(mMainWidget);
|
||||
mPinButton = window->getSkinWidget ("Button");
|
||||
|
||||
mPinButton->eventMouseButtonClick += MyGUI::newDelegate(this, &WindowPinnableBase::onPinButtonClicked);
|
||||
}
|
||||
|
||||
void WindowPinnableBase::setVisible(bool b)
|
||||
void WindowPinnableBase::onPinButtonClicked(MyGUI::Widget* _sender)
|
||||
{
|
||||
// Pinned windows can not be hidden
|
||||
if (mPinned && !b)
|
||||
return;
|
||||
mPinned = !mPinned;
|
||||
|
||||
WindowBase::setVisible(b);
|
||||
mVisible = b;
|
||||
}
|
||||
|
||||
void WindowPinnableBase::onWindowButtonPressed(MyGUI::Window* sender, const std::string& eventName)
|
||||
{
|
||||
if ("PinToggle" == eventName)
|
||||
{
|
||||
mPinned = !mPinned;
|
||||
onPinToggled();
|
||||
}
|
||||
|
||||
eventDone(this);
|
||||
if (mPinned)
|
||||
mPinButton->changeWidgetSkin ("PinDown");
|
||||
else
|
||||
mPinButton->changeWidgetSkin ("PinUp");
|
||||
|
||||
onPinToggled();
|
||||
}
|
||||
|
|
|
@ -11,15 +11,15 @@ namespace MWGui
|
|||
{
|
||||
public:
|
||||
WindowPinnableBase(const std::string& parLayout, MWBase::WindowManager& parWindowManager);
|
||||
void setVisible(bool b);
|
||||
bool pinned() { return mPinned; }
|
||||
|
||||
private:
|
||||
void onWindowButtonPressed(MyGUI::Window* sender, const std::string& eventName);
|
||||
void onPinButtonClicked(MyGUI::Widget* _sender);
|
||||
|
||||
protected:
|
||||
virtual void onPinToggled() = 0;
|
||||
|
||||
MyGUI::Widget* mPinButton;
|
||||
bool mPinned;
|
||||
bool mVisible;
|
||||
};
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include "enchantingdialog.hpp"
|
||||
#include "trainingwindow.hpp"
|
||||
#include "imagebutton.hpp"
|
||||
#include "exposedwindow.hpp"
|
||||
|
||||
using namespace MWGui;
|
||||
|
||||
|
@ -128,6 +129,7 @@ WindowManager::WindowManager(
|
|||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::AutoSizedTextBox>("Widget");
|
||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::Widgets::AutoSizedButton>("Widget");
|
||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::ImageButton>("Widget");
|
||||
MyGUI::FactoryManager::getInstance().registerFactory<MWGui::ExposedWindow>("Widget");
|
||||
|
||||
MyGUI::LanguageManager::getInstance().eventRequestTag = MyGUI::newDelegate(this, &WindowManager::onRetrieveTag);
|
||||
|
||||
|
@ -310,9 +312,16 @@ void WindowManager::updateVisible()
|
|||
setSpellVisibility((mAllowed & GW_Magic) && !mSpellWindow->pinned());
|
||||
setHMSVisibility((mAllowed & GW_Stats) && !mStatsWindow->pinned());
|
||||
|
||||
// If in game mode, don't show anything.
|
||||
// If in game mode, show only the pinned windows
|
||||
if (gameMode)
|
||||
{
|
||||
mMap->setVisible(mMap->pinned());
|
||||
mStatsWindow->setVisible(mStatsWindow->pinned());
|
||||
mInventoryWindow->setVisible(mInventoryWindow->pinned());
|
||||
mSpellWindow->setVisible(mSpellWindow->pinned());
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
GuiMode mode = mGuiModes.back();
|
||||
|
||||
|
@ -327,6 +336,12 @@ void WindowManager::updateVisible()
|
|||
mSettingsWindow->setVisible(true);
|
||||
break;
|
||||
case GM_Console:
|
||||
// Show the pinned windows
|
||||
mMap->setVisible(mMap->pinned());
|
||||
mStatsWindow->setVisible(mStatsWindow->pinned());
|
||||
mInventoryWindow->setVisible(mInventoryWindow->pinned());
|
||||
mSpellWindow->setVisible(mSpellWindow->pinned());
|
||||
|
||||
mConsole->enable();
|
||||
break;
|
||||
case GM_Scroll:
|
||||
|
|
|
@ -23,9 +23,7 @@
|
|||
|
||||
#include "bsa_file.hpp"
|
||||
|
||||
//#include <stdexcept>
|
||||
//#include <cstdlib>
|
||||
//#include <cassert>
|
||||
#include <stdexcept>
|
||||
|
||||
#include "../files/constrainedfiledatastream.hpp"
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
//TODO: when threading is needed, enable these
|
||||
//#include <boost/mutex.hpp>
|
||||
//#include <boost/thread/locks.hpp>
|
||||
#include <boost/thread/locks.hpp>
|
||||
|
||||
namespace Nif
|
||||
{
|
||||
|
|
|
@ -43,25 +43,14 @@ http://www.gnu.org/licenses/ .
|
|||
|
||||
typedef unsigned char ubyte;
|
||||
|
||||
using namespace NifBullet;
|
||||
|
||||
namespace NifBullet
|
||||
{
|
||||
|
||||
ManualBulletShapeLoader::~ManualBulletShapeLoader()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
btQuaternion ManualBulletShapeLoader::getbtQuat(Ogre::Matrix3 const &m)
|
||||
{
|
||||
Ogre::Quaternion oquat(m);
|
||||
btQuaternion quat;
|
||||
quat.setW(oquat.w);
|
||||
quat.setX(oquat.x);
|
||||
quat.setY(oquat.y);
|
||||
quat.setZ(oquat.z);
|
||||
return quat;
|
||||
}
|
||||
|
||||
btVector3 ManualBulletShapeLoader::getbtVector(Ogre::Vector3 const &v)
|
||||
{
|
||||
return btVector3(v[0], v[1], v[2]);
|
||||
|
@ -90,7 +79,6 @@ void ManualBulletShapeLoader::loadResource(Ogre::Resource *resource)
|
|||
return;
|
||||
}
|
||||
|
||||
|
||||
// The first record is assumed to be the root node
|
||||
Nif::Record *r = nif.getRecord(0);
|
||||
assert(r != NULL);
|
||||
|
@ -106,13 +94,11 @@ void ManualBulletShapeLoader::loadResource(Ogre::Resource *resource)
|
|||
bool hasCollisionNode = hasRootCollisionNode(node);
|
||||
|
||||
//do a first pass
|
||||
handleNode(node,0,NULL,hasCollisionNode,false,false);
|
||||
handleNode(node,0,hasCollisionNode,false,false);
|
||||
|
||||
//if collide = false, then it does a second pass which create a shape for raycasting.
|
||||
if(cShape->mCollide == false)
|
||||
{
|
||||
handleNode(node,0,NULL,hasCollisionNode,false,true);
|
||||
}
|
||||
handleNode(node,0,hasCollisionNode,false,true);
|
||||
|
||||
//cShape->collide = hasCollisionNode&&cShape->collide;
|
||||
|
||||
|
@ -129,9 +115,9 @@ void ManualBulletShapeLoader::loadResource(Ogre::Resource *resource)
|
|||
delete m_meshInterface;
|
||||
}
|
||||
};
|
||||
|
||||
if(mBoundingBox != NULL)
|
||||
cShape->Shape = mBoundingBox;
|
||||
|
||||
else
|
||||
{
|
||||
currentShape = new TriangleMeshShape(mTriMesh,true);
|
||||
|
@ -141,34 +127,30 @@ void ManualBulletShapeLoader::loadResource(Ogre::Resource *resource)
|
|||
|
||||
bool ManualBulletShapeLoader::hasRootCollisionNode(Nif::Node const * node)
|
||||
{
|
||||
if (node->recType == Nif::RC_NiNode)
|
||||
if(node->recType == Nif::RC_RootCollisionNode)
|
||||
return true;
|
||||
|
||||
const Nif::NiNode *ninode = dynamic_cast<const Nif::NiNode*>(node);
|
||||
if(ninode)
|
||||
{
|
||||
Nif::NodeList &list = ((Nif::NiNode*)node)->children;
|
||||
int n = list.length();
|
||||
for (int i=0; i<n; i++)
|
||||
const Nif::NodeList &list = ninode->children;
|
||||
for(size_t i = 0;i < list.length();i++)
|
||||
{
|
||||
if (!list[i].empty())
|
||||
if(!list[i].empty())
|
||||
{
|
||||
if(hasRootCollisionNode(list[i].getPtr())) return true;;
|
||||
if(hasRootCollisionNode(list[i].getPtr()))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (node->recType == Nif::RC_NiTriShape)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if(node->recType == Nif::RC_RootCollisionNode)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void ManualBulletShapeLoader::handleNode(Nif::Node const *node, int flags,
|
||||
const Nif::Transformation *parentTrafo,bool hasCollisionNode,bool isCollisionNode,bool raycastingOnly)
|
||||
void ManualBulletShapeLoader::handleNode(const Nif::Node *node, int flags,
|
||||
bool hasCollisionNode, bool isCollisionNode,
|
||||
bool raycastingOnly)
|
||||
{
|
||||
|
||||
// Accumulate the flags from all the child nodes. This works for all
|
||||
// the flags we currently use, at least.
|
||||
flags |= node->flags;
|
||||
|
@ -209,70 +191,36 @@ void ManualBulletShapeLoader::handleNode(Nif::Node const *node, int flags,
|
|||
}
|
||||
}
|
||||
|
||||
Nif::Transformation childTrafo = node->trafo;
|
||||
|
||||
if (parentTrafo)
|
||||
{
|
||||
|
||||
// Get a non-const reference to the node's data, since we're
|
||||
// overwriting it. TODO: Is this necessary?
|
||||
|
||||
// For both position and rotation we have that:
|
||||
// final_vector = old_vector + old_rotation*new_vector*old_scale
|
||||
childTrafo.pos = parentTrafo->pos + parentTrafo->rotation*childTrafo.pos*parentTrafo->scale;
|
||||
|
||||
// Merge the rotations together
|
||||
childTrafo.rotation = parentTrafo->rotation * childTrafo.rotation;
|
||||
|
||||
// Scale
|
||||
childTrafo.scale *= parentTrafo->scale;
|
||||
|
||||
}
|
||||
|
||||
if(node->hasBounds)
|
||||
{
|
||||
|
||||
|
||||
btVector3 boxsize = getbtVector(node->boundXYZ);
|
||||
cShape->boxTranslation = node->boundPos;
|
||||
cShape->boxRotation = node->boundRot;
|
||||
|
||||
mBoundingBox = new btBoxShape(boxsize);
|
||||
mBoundingBox = new btBoxShape(getbtVector(node->boundXYZ));
|
||||
}
|
||||
|
||||
|
||||
// For NiNodes, loop through children
|
||||
if (node->recType == Nif::RC_NiNode)
|
||||
{
|
||||
Nif::NodeList const &list = ((Nif::NiNode const *)node)->children;
|
||||
int n = list.length();
|
||||
for (int i=0; i<n; i++)
|
||||
{
|
||||
if (!list[i].empty())
|
||||
{
|
||||
handleNode(list[i].getPtr(), flags,&childTrafo,hasCollisionNode,isCollisionNode,raycastingOnly);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (node->recType == Nif::RC_NiTriShape && (isCollisionNode || !hasCollisionNode))
|
||||
if(node->recType == Nif::RC_NiTriShape && (isCollisionNode || !hasCollisionNode))
|
||||
{
|
||||
cShape->mCollide = !(flags&0x800);
|
||||
handleNiTriShape(dynamic_cast<Nif::NiTriShape const *>(node), flags,childTrafo.rotation,childTrafo.pos,childTrafo.scale,raycastingOnly);
|
||||
handleNiTriShape(static_cast<const Nif::NiTriShape*>(node), flags, node->getWorldTransform(), raycastingOnly);
|
||||
}
|
||||
else if(node->recType == Nif::RC_RootCollisionNode)
|
||||
|
||||
// For NiNodes, loop through children
|
||||
const Nif::NiNode *ninode = dynamic_cast<const Nif::NiNode*>(node);
|
||||
if(ninode)
|
||||
{
|
||||
Nif::NodeList &list = ((Nif::NiNode*)node)->children;
|
||||
int n = list.length();
|
||||
for (int i=0; i<n; i++)
|
||||
isCollisionNode = isCollisionNode || (node->recType == Nif::RC_RootCollisionNode);
|
||||
|
||||
const Nif::NodeList &list = ninode->children;
|
||||
for(size_t i = 0;i < list.length();i++)
|
||||
{
|
||||
if (!list[i].empty())
|
||||
handleNode(list[i].getPtr(), flags,&childTrafo, hasCollisionNode,true,raycastingOnly);
|
||||
if(!list[i].empty())
|
||||
handleNode(list[i].getPtr(), flags, hasCollisionNode, isCollisionNode, raycastingOnly);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ManualBulletShapeLoader::handleNiTriShape(Nif::NiTriShape const *shape, int flags,Ogre::Matrix3 parentRot,Ogre::Vector3 parentPos,float parentScale,
|
||||
bool raycastingOnly)
|
||||
void ManualBulletShapeLoader::handleNiTriShape(const Nif::NiTriShape *shape, int flags, const Ogre::Matrix4 &transform,
|
||||
bool raycastingOnly)
|
||||
{
|
||||
assert(shape != NULL);
|
||||
|
||||
|
@ -296,18 +244,14 @@ void ManualBulletShapeLoader::handleNiTriShape(Nif::NiTriShape const *shape, int
|
|||
return;
|
||||
|
||||
|
||||
Nif::NiTriShapeData *data = shape->data.getPtr();
|
||||
|
||||
const Nif::NiTriShapeData *data = shape->data.getPtr();
|
||||
const std::vector<Ogre::Vector3> &vertices = data->vertices;
|
||||
const Ogre::Matrix3 &rot = shape->trafo.rotation;
|
||||
const Ogre::Vector3 &pos = shape->trafo.pos;
|
||||
float scale = shape->trafo.scale * parentScale;
|
||||
short* triangles = &data->triangles[0];
|
||||
const short *triangles = &data->triangles[0];
|
||||
for(size_t i = 0;i < data->triangles.size();i+=3)
|
||||
{
|
||||
Ogre::Vector3 b1 = pos + rot*vertices[triangles[i+0]]*scale;
|
||||
Ogre::Vector3 b2 = pos + rot*vertices[triangles[i+1]]*scale;
|
||||
Ogre::Vector3 b3 = pos + rot*vertices[triangles[i+2]]*scale;
|
||||
Ogre::Vector3 b1 = transform*vertices[triangles[i+0]];
|
||||
Ogre::Vector3 b2 = transform*vertices[triangles[i+1]];
|
||||
Ogre::Vector3 b3 = transform*vertices[triangles[i+2]];
|
||||
mTriMesh->addTriangle(btVector3(b1.x,b1.y,b1.z),btVector3(b2.x,b2.y,b2.z),btVector3(b3.x,b3.y,b3.z));
|
||||
}
|
||||
}
|
||||
|
@ -320,3 +264,5 @@ void ManualBulletShapeLoader::load(const std::string &name,const std::string &gr
|
|||
return;
|
||||
OEngine::Physic::BulletShapeManager::getSingleton().create(name,group,true,this);
|
||||
}
|
||||
|
||||
} // namespace NifBullet
|
||||
|
|
|
@ -51,19 +51,18 @@ namespace NifBullet
|
|||
class ManualBulletShapeLoader : public OEngine::Physic::BulletShapeLoader
|
||||
{
|
||||
public:
|
||||
|
||||
ManualBulletShapeLoader():resourceGroup("General"){}
|
||||
virtual ~ManualBulletShapeLoader();
|
||||
|
||||
void warn(std::string msg)
|
||||
void warn(const std::string &msg)
|
||||
{
|
||||
std::cerr << "NIFLoader: Warn:" << msg << "\n";
|
||||
}
|
||||
|
||||
void fail(std::string msg)
|
||||
void fail(const std::string &msg)
|
||||
{
|
||||
std::cerr << "NIFLoader: Fail: "<< msg << std::endl;
|
||||
assert(1);
|
||||
abort();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -79,31 +78,26 @@ public:
|
|||
void load(const std::string &name,const std::string &group);
|
||||
|
||||
private:
|
||||
btQuaternion getbtQuat(Ogre::Matrix3 const &m);
|
||||
|
||||
btVector3 getbtVector(Ogre::Vector3 const &v);
|
||||
|
||||
/**
|
||||
*Parse a node.
|
||||
*/
|
||||
void handleNode(Nif::Node const *node, int flags,
|
||||
const Nif::Transformation *trafo, bool hasCollisionNode,bool isCollisionNode,bool raycastingOnly);
|
||||
void handleNode(Nif::Node const *node, int flags, bool hasCollisionNode, bool isCollisionNode, bool raycastingOnly);
|
||||
|
||||
/**
|
||||
*Helper function
|
||||
*/
|
||||
bool hasRootCollisionNode(Nif::Node const * node);
|
||||
bool hasRootCollisionNode(const Nif::Node *node);
|
||||
|
||||
/**
|
||||
*convert a NiTriShape to a bullet trishape.
|
||||
*/
|
||||
void handleNiTriShape(Nif::NiTriShape const *shape, int flags,Ogre::Matrix3 parentRot,Ogre::Vector3 parentPos,float parentScales,bool raycastingOnly);
|
||||
void handleNiTriShape(const Nif::NiTriShape *shape, int flags, const Ogre::Matrix4 &transform, bool raycastingOnly);
|
||||
|
||||
std::string resourceName;
|
||||
std::string resourceGroup;
|
||||
|
||||
|
||||
|
||||
OEngine::Physic::BulletShape* cShape;//current shape
|
||||
btTriangleMesh *mTriMesh;
|
||||
btBoxShape *mBoundingBox;
|
||||
|
|
|
@ -16,6 +16,7 @@ Alexander Olofsson (Ace)
|
|||
Artem Kotsynyak (greye)
|
||||
athile
|
||||
BrotherBrick
|
||||
Chris Robinson
|
||||
Cory F. Cohen (cfcohen)
|
||||
Cris Mihalache (Mirceam)
|
||||
Douglas Diniz (Dgdiniz)
|
||||
|
|
|
@ -2,41 +2,45 @@
|
|||
|
||||
<MyGUI type="Layout">
|
||||
|
||||
<Widget type="Window" skin="" layer="Windows" align="Left|Top" position="0 0 512 256" name="_Main">
|
||||
<Widget type="Window" skin="" layer="Windows" align="Left|Top" position="0 0 565 390" name="_Main">
|
||||
|
||||
<Widget type="ImageBox" skin="ImageBox" position_real="0 0 1 1" align="Top|Right" name="BookImage">
|
||||
<Widget type="ImageBox" skin="ImageBox" position="0 0 565 390" align="Top|Right" name="JImage">
|
||||
<Property key="ImageTexture" value="textures\tx_menubook.dds"/>
|
||||
<Property key="ImageCoord" value="50 0 412 256"/>
|
||||
|
||||
<Widget type="ImageButton" skin="ImageBox" position="251 220 128 32" name="NextPageBTN">
|
||||
<Widget type="ImageButton" skin="ImageBox" position="300 350 48 32" name="NextPageBTN">
|
||||
<Property key="ImageCoord" value="0 0 48 32"/>
|
||||
<Property key="ImageHighlighted" value="textures\tx_menubook_next_over.dds"/>
|
||||
<Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/>
|
||||
<Property key="ImageNormal" value="textures\tx_menubook_next_idle.dds"/>
|
||||
<Property key="ImagePushed" value="textures\tx_menubook_next_pressed.dds"/>
|
||||
</Widget>
|
||||
<Widget type="ImageButton" skin="ImageBox" position="165 220 128 32" name="PrevPageBTN">
|
||||
<Widget type="ImageButton" skin="ImageBox" position="220 350 48 32" name="PrevPageBTN">
|
||||
<Property key="ImageCoord" value="0 0 48 32"/>
|
||||
<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 type="ImageButton" skin="ImageBox" position="75 220 128 32" name="TakeButton">
|
||||
<Widget type="ImageButton" skin="ImageBox" position="40 350 64 32" name="TakeButton">
|
||||
<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 type="ImageButton" skin="ImageBox" position="360 220 128 32" name="CloseButton">
|
||||
<Widget type="ImageButton" skin="ImageBox" position="475 350 48 32" name="CloseButton">
|
||||
<Property key="ImageCoord" value="0 0 48 32"/>
|
||||
<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 type="TextBox" skin="NormalText" position="155 215 24 24" name="LeftPageNumber">
|
||||
<Widget type="TextBox" skin="NormalText" position="150 350 32 16" name="LeftPageNumber">
|
||||
<Property key="TextColour" value="0 0 0"/>
|
||||
</Widget>
|
||||
<Widget type="TextBox" skin="NormalText" position="325 215 24 24" name="RightPageNumber">
|
||||
<Widget type="TextBox" skin="NormalText" position="410 350 32 16" name="RightPageNumber">
|
||||
<Property key="TextColour" value="0 0 0"/>
|
||||
</Widget>
|
||||
|
||||
<Widget type="Widget" skin="" position_real="0.15 0.1 0.3 0.75" name = "LeftPage"/>
|
||||
<Widget type="Widget" skin="" position_real="0.55 0.1 0.3 0.75" name = "RightPage"/>
|
||||
<Widget type="Widget" skin="" position="30 22 240 300" name = "LeftPage"/>
|
||||
<Widget type="Widget" skin="" position="300 22 240 300" name = "RightPage"/>
|
||||
</Widget>
|
||||
</Widget>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<MyGUI type="Layout">
|
||||
<Widget type="Window" skin="MW_Window_Pinnable" layer="Windows" position="0 0 600 300" name="_Main">
|
||||
<Widget type="ExposedWindow" skin="MW_Window_Pinnable" layer="Windows" position="0 0 600 300" name="_Main">
|
||||
|
||||
<Widget type="Widget" skin="" position="0 0 224 223" align="Left Top" name="LeftPane">
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<MyGUI type="Layout">
|
||||
<Widget type="Window" skin="MW_Window_Pinnable" layer="Windows" position="0 0 300 300" name="_Main">
|
||||
<Widget type="ExposedWindow" skin="MW_Window_Pinnable" layer="Windows" position="0 0 300 300" name="_Main">
|
||||
|
||||
<!-- Local map -->
|
||||
<Widget type="ScrollView" skin="MW_MapView" position="0 0 284 264" align="ALIGN_STRETCH" name="LocalMap">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<MyGUI type="Layout">
|
||||
<Widget type="Window" skin="MW_Window_Pinnable" layer="Windows" position="0 0 300 600" name="_Main">
|
||||
<Widget type="ExposedWindow" skin="MW_Window_Pinnable" layer="Windows" position="0 0 300 600" name="_Main">
|
||||
|
||||
<!-- Effect box-->
|
||||
<Widget type="Widget" skin="MW_Box" position="8 8 268 24" align="Left Top HStretch">
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<MyGUI type="Layout">
|
||||
<Widget type="Window" skin="MW_Window_Pinnable" layer="Windows" position="0 0 500 342" name="_Main">
|
||||
<Widget type="ExposedWindow" skin="MW_Window_Pinnable" layer="Windows" position="0 0 500 342" name="_Main">
|
||||
|
||||
<Widget type="Widget" skin="" name="LeftPane" position="0 0 220 342">
|
||||
|
||||
|
|
|
@ -8,6 +8,118 @@
|
|||
</BasisSkin>
|
||||
</Skin>
|
||||
|
||||
<!-- Define the borders for pin button (up) -->
|
||||
<Skin name="PU_B" size="12 2" texture="textures\menu_rightbuttonup_bottom.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 12 2">
|
||||
<State name="normal" offset = "0 0 12 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PU_BR" size="2 2" texture="textures\menu_rightbuttonup_bottom_right.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 2">
|
||||
<State name="normal" offset = "0 0 2 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PU_R" size="2 12" texture="textures\menu_rightbuttonup_right.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 12">
|
||||
<State name="normal" offset = "0 0 2 12"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PU_TR" size="2 2" texture="textures\menu_rightbuttonup_top_right.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 2">
|
||||
<State name="normal" offset = "0 0 2 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PU_T" size="12 2" texture="textures\menu_rightbuttonup_top.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 12 2">
|
||||
<State name="normal" offset = "0 0 12 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PU_TL" size="2 2" texture="textures\menu_rightbuttonup_top_left.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 2">
|
||||
<State name="normal" offset = "0 0 2 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PU_L" size="2 12" texture="textures\menu_rightbuttonup_left.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 12">
|
||||
<State name="normal" offset = "0 0 2 12"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PU_BL" size="2 2" texture="textures\menu_rightbuttonup_bottom_left.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 2">
|
||||
<State name="normal" offset = "0 0 2 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
|
||||
<!-- Define the borders for pin button (down) -->
|
||||
<Skin name="PD_B" size="12 2" texture="textures\menu_rightbuttondown_bottom.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 12 2">
|
||||
<State name="normal" offset = "0 0 12 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PD_BR" size="2 2" texture="textures\menu_rightbuttondown_bottom_right.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 2">
|
||||
<State name="normal" offset = "0 0 2 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PD_R" size="2 12" texture="textures\menu_rightbuttondown_right.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 12">
|
||||
<State name="normal" offset = "0 0 2 12"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PD_TR" size="2 2" texture="textures\menu_rightbuttondown_top_right.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 2">
|
||||
<State name="normal" offset = "0 0 2 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PD_T" size="12 2" texture="textures\menu_rightbuttondown_top.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 12 2">
|
||||
<State name="normal" offset = "0 0 12 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PD_TL" size="2 2" texture="textures\menu_rightbuttondown_top_left.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 2">
|
||||
<State name="normal" offset = "0 0 2 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PD_L" size="2 12" texture="textures\menu_rightbuttondown_left.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 12">
|
||||
<State name="normal" offset = "0 0 2 12"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
<Skin name="PD_BL" size="2 2" texture="textures\menu_rightbuttondown_bottom_left.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 2 2">
|
||||
<State name="normal" offset = "0 0 2 2"/>
|
||||
</BasisSkin>
|
||||
</Skin>
|
||||
|
||||
<!-- Define the pin button skin -->
|
||||
<Skin name = "PinUp" size = "19 19" texture="textures\menu_rightbuttonup_center.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 19 19">
|
||||
<State name="normal" offset = "0 0 19 19"/>
|
||||
</BasisSkin>
|
||||
<Child type="Widget" skin="PU_B" offset="2 17 15 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PU_BR" offset="17 17 2 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PU_R" offset="17 2 2 15" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PU_TR" offset="17 0 2 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PU_T" offset="2 0 15 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PU_TL" offset="0 0 2 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PU_L" offset="0 2 2 15" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PU_BL" offset="0 17 2 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
</Skin>
|
||||
<Skin name = "PinDown" size = "19 19" texture="textures\menu_rightbuttondown_center.dds">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 19 19">
|
||||
<State name="normal" offset = "0 0 19 19"/>
|
||||
</BasisSkin>
|
||||
<Child type="Widget" skin="PD_B" offset="2 17 15 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PD_BR" offset="17 17 2 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PD_R" offset="17 2 2 15" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PD_TR" offset="17 0 2 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PD_T" offset="2 0 15 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PD_TL" offset="0 0 2 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PD_L" offset="0 2 2 15" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
<Child type="Widget" skin="PD_BL" offset="0 17 2 2" align="ALIGN_HSTRETCH ALIGN_VSTRETCH"/>
|
||||
</Skin>
|
||||
|
||||
<!-- Defines a pure black background -->
|
||||
<Skin name = "DialogBG" size = "8 8" texture = "black.png">
|
||||
<BasisSkin type="MainSkin" offset = "0 0 8 8">
|
||||
|
@ -473,9 +585,7 @@
|
|||
<Property key="Scale" value = "1 1 0 0"/>
|
||||
</Child>
|
||||
|
||||
<Child type="Button" skin="BlackBG" offset="230 4 21 19" align="ALIGN_RIGHT ALIGN_TOP" name="Button">
|
||||
<Property key="Event" value="PinToggle"/>
|
||||
</Child>
|
||||
<Child type="Button" skin="PinUp" offset="232 4 19 19" align="ALIGN_RIGHT ALIGN_TOP" name="Button"/>
|
||||
</Skin>
|
||||
|
||||
<Skin name = "MW_Dialog" size = "256 54">
|
||||
|
|
Loading…
Reference in a new issue