mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-19 21:56:13 +00:00
Changed: #1193 Added menu entry reload textures.
This commit is contained in:
parent
99eddec26c
commit
ba31b1fcc2
6 changed files with 79 additions and 20 deletions
|
@ -227,6 +227,12 @@ public:
|
|||
{
|
||||
return _SWTList;
|
||||
}
|
||||
|
||||
/// Get game interface for manipulating Skeleton.
|
||||
NL3D::UInstance getInstance() const
|
||||
{
|
||||
return _Instance;
|
||||
}
|
||||
|
||||
/// Get game interface for manipulating Skeleton.
|
||||
NL3D::USkeleton getSkeleton() const
|
||||
|
|
|
@ -118,7 +118,7 @@ void CGraphicsViewport::resizeEvent(QResizeEvent *resizeEvent)
|
|||
Modules::objView().setSizeViewport(resizeEvent->size().width(), resizeEvent->size().height());
|
||||
}
|
||||
|
||||
#if defined(NL_OS_WINDOWS) || defined(NL_OS_MAC)
|
||||
#if defined(NL_OS_MAC)
|
||||
// Qt does not provide wheel events through winEvent() and macEvent() (but it
|
||||
// does through x11Event(), which is inconsistent...)
|
||||
// Workaround is to handle wheel events like implemented below.
|
||||
|
@ -148,7 +148,7 @@ void CGraphicsViewport::wheelEvent(QWheelEvent *event)
|
|||
Modules::objView().getDriver()->EventServer.postEvent(
|
||||
new NLMISC::CEventMouseWheel(-fX, fY, (NLMISC::TMouseButton)buttons, false, NULL));
|
||||
}
|
||||
#endif // defined(NL_OS_WINDOWS) || defined(NL_OS_MAC)
|
||||
#endif // defined(NL_OS_MAC)
|
||||
|
||||
|
||||
#if defined(NL_OS_WINDOWS)
|
||||
|
|
|
@ -80,7 +80,7 @@ private Q_SLOTS:
|
|||
protected:
|
||||
virtual void resizeEvent(QResizeEvent *resizeEvent);
|
||||
|
||||
#if defined(NL_OS_WINDOWS) || defined(NL_OS_MAC)
|
||||
#if defined(NL_OS_MAC)
|
||||
virtual void wheelEvent(QWheelEvent *event);
|
||||
#endif
|
||||
|
||||
|
|
|
@ -41,6 +41,9 @@
|
|||
#include <nel/3d/u_play_list_manager.h>
|
||||
#include <nel/3d/u_3d_mouse_listener.h>
|
||||
#include <nel/3d/u_instance_group.h>
|
||||
#include <nel/3d/material.h>
|
||||
#include <nel/3d/driver.h>
|
||||
#include <nel/3d/scene_user.h>
|
||||
#include <nel/3d/bloom_effect.h>
|
||||
|
||||
// Project includes
|
||||
|
@ -55,12 +58,14 @@ namespace NLQT
|
|||
{
|
||||
|
||||
CObjectViewer::CObjectViewer()
|
||||
: _Driver(NULL),
|
||||
_TextContext(NULL),
|
||||
: _IDriver(0),
|
||||
_CScene(0),
|
||||
_Driver(0),
|
||||
_Scene(0),
|
||||
_TextContext(0),
|
||||
_CameraFocal(75),
|
||||
_CurrentInstance(""),
|
||||
_BloomEffect(false),
|
||||
_Scene(0)
|
||||
_BloomEffect(false)
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -102,7 +107,7 @@ void CObjectViewer::init(nlWindow wnd, uint16 w, uint16 h)
|
|||
_Driver->enableLight(0);
|
||||
|
||||
// Create a scene
|
||||
_Scene = _Driver->createScene(true);
|
||||
_Scene = _Driver->createScene(false);
|
||||
|
||||
_PlayListManager = _Scene->createPlayListManager();
|
||||
|
||||
|
@ -134,6 +139,12 @@ void CObjectViewer::init(nlWindow wnd, uint16 w, uint16 h)
|
|||
NL3D::CBloomEffect::instance().init(!_Direct3D);
|
||||
NL3D::CBloomEffect::instance().setDensityBloom(Modules::config().getConfigFile().getVar("BloomDensity").asInt());
|
||||
NL3D::CBloomEffect::instance().setSquareBloom(Modules::config().getConfigFile().getVar("BloomSquare").asBool());
|
||||
|
||||
NL3D::CDriverUser *driver = dynamic_cast<NL3D::CDriverUser *>(Modules::objView().getDriver());
|
||||
_IDriver = driver->getDriver();
|
||||
|
||||
NL3D::CSceneUser *scene = dynamic_cast<NL3D::CSceneUser *>(Modules::objView().getScene());
|
||||
_CScene = &scene->getScene();
|
||||
}
|
||||
|
||||
void CObjectViewer::release()
|
||||
|
@ -146,7 +157,7 @@ void CObjectViewer::release()
|
|||
// release text context
|
||||
nlassert(_TextContext);
|
||||
_Driver->deleteTextContext(_TextContext);
|
||||
_TextContext = NULL;
|
||||
_TextContext = 0;
|
||||
|
||||
_Driver->delete3dMouseListener(_MouseListener);
|
||||
|
||||
|
@ -165,7 +176,7 @@ void CObjectViewer::release()
|
|||
nlassert(_Driver);
|
||||
_Driver->release();
|
||||
delete _Driver;
|
||||
_Driver = NULL;
|
||||
_Driver = 0;
|
||||
}
|
||||
|
||||
void CObjectViewer::updateInput()
|
||||
|
@ -180,7 +191,7 @@ void CObjectViewer::updateInput()
|
|||
void CObjectViewer::renderDriver()
|
||||
{
|
||||
// Render the scene.
|
||||
if((NL3D::CBloomEffect::instance().getDriver() != NULL) && (_BloomEffect))
|
||||
if((NL3D::CBloomEffect::instance().getDriver() != 0) && (_BloomEffect))
|
||||
{
|
||||
NL3D::CBloomEffect::instance().initBloom();
|
||||
}
|
||||
|
@ -192,7 +203,7 @@ void CObjectViewer::renderScene()
|
|||
// render the scene
|
||||
_Scene->render();
|
||||
|
||||
if((NL3D::CBloomEffect::instance().getDriver() != NULL) && (_BloomEffect))
|
||||
if((NL3D::CBloomEffect::instance().getDriver() != 0) && (_BloomEffect))
|
||||
{
|
||||
NL3D::CBloomEffect::instance().endBloom();
|
||||
NL3D::CBloomEffect::instance().endInterfacesDisplayBloom();
|
||||
|
@ -205,6 +216,38 @@ void CObjectViewer::renderDebug2D()
|
|||
|
||||
void CObjectViewer::reloadTextures()
|
||||
{
|
||||
// For each instances
|
||||
std::vector<std::string> listObjects;
|
||||
getListObjects(listObjects);
|
||||
|
||||
for (size_t i = 0; i < listObjects.size(); ++i)
|
||||
{
|
||||
// Get the shape
|
||||
NL3D::UInstance instance = getEntity(listObjects[i]).getInstance();
|
||||
|
||||
// For each material
|
||||
if (!instance.empty())
|
||||
{
|
||||
uint numMaterial = instance.getNumMaterials();
|
||||
uint mat;
|
||||
for (mat = 0; mat < numMaterial; mat++)
|
||||
{
|
||||
// Get the material
|
||||
NL3D::CMaterial *material = instance.getMaterial(mat).getObjectPtr();
|
||||
|
||||
// For each texture
|
||||
int tex;
|
||||
for (tex = 0; tex < NL3D::IDRV_MAT_MAXTEXTURES; tex++)
|
||||
{
|
||||
ITexture *texture = material->getTexture(tex);
|
||||
|
||||
// Touch it!
|
||||
if (texture)
|
||||
getIDriver()->invalidateShareTexture(*texture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CObjectViewer::resetCamera()
|
||||
|
@ -303,7 +346,7 @@ bool CObjectViewer::loadInstanceGroup(const std::string &igName)
|
|||
{
|
||||
CPath::addSearchPath (CFile::getPath(igName));
|
||||
UInstanceGroup *ig = UInstanceGroup::createInstanceGroup(igName);
|
||||
if (ig == NULL)
|
||||
if (ig == 0)
|
||||
return false;
|
||||
ig->addToScene(*_Scene, _Driver);
|
||||
ig->unfreezeHRC();
|
||||
|
|
|
@ -46,6 +46,8 @@ class UTextContext;
|
|||
class UPlayListManager;
|
||||
class U3dMouseListener;
|
||||
class UInstanceGroup;
|
||||
class CScene;
|
||||
class IDriver;
|
||||
}
|
||||
|
||||
namespace NLQT
|
||||
|
@ -186,13 +188,23 @@ public:
|
|||
{
|
||||
return _Driver;
|
||||
}
|
||||
|
||||
|
||||
NL3D::IDriver *getIDriver() const
|
||||
{
|
||||
return _IDriver;
|
||||
}
|
||||
|
||||
/// Get a game interface for scene.
|
||||
/// @return pointer to the scene.
|
||||
inline NL3D::UScene *getScene() const
|
||||
{
|
||||
return _Scene;
|
||||
}
|
||||
|
||||
NL3D::CScene *getCScene() const
|
||||
{
|
||||
return _CScene;
|
||||
}
|
||||
|
||||
/// Get a manager of playlist
|
||||
/// @return pointer to the UPlayListManager
|
||||
|
@ -231,6 +243,8 @@ private:
|
|||
void cfcbBloomEffect(NLMISC::CConfigFile::CVar &var);
|
||||
|
||||
NLMISC::CRGBA _BackgroundColor;
|
||||
NL3D::IDriver *_IDriver;
|
||||
NL3D::CScene *_CScene;
|
||||
|
||||
NL3D::UDriver *_Driver;
|
||||
NL3D::UScene *_Scene;
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
|
||||
// NeL includes
|
||||
#include <nel/3d/driver.h>
|
||||
#include <nel/3d/scene_user.h>
|
||||
#include <nel/3d/text_context_user.h>
|
||||
#include <nel/3d/scene.h>
|
||||
#include <nel/3d/particle_system_model.h>
|
||||
|
@ -57,11 +56,8 @@ CParticleEditor::~CParticleEditor(void)
|
|||
|
||||
void CParticleEditor::init()
|
||||
{
|
||||
NL3D::CDriverUser *driver = dynamic_cast<NL3D::CDriverUser *>(Modules::objView().getDriver());
|
||||
_Driver = driver->getDriver();
|
||||
|
||||
NL3D::CSceneUser *scene = dynamic_cast<NL3D::CSceneUser *>(Modules::objView().getScene());
|
||||
_Scene = &scene->getScene();
|
||||
_Driver = Modules::objView().getIDriver();
|
||||
_Scene = Modules::objView().getCScene();
|
||||
|
||||
NL3D::CTextContextUser *textContext = dynamic_cast<NL3D::CTextContextUser *>(Modules::objView().getTextContext());
|
||||
_FontManager = textContext->getTextContext().getFontManager();
|
||||
|
|
Loading…
Reference in a new issue