CViewRenderer no longer depends on the Driver global variable. Also got rid of the same dependencies in files which included that global from the CViewRenderer header.

--HG--
branch : gui-refactoring
hg/feature/sse2
dfighter1985 13 years ago
parent 38f215735c
commit c27ad72de6

@ -62,6 +62,7 @@
#include "ingame_database_manager.h"
#include "client_chat_manager.h"
#include "interface_v3/input_handler_manager.h"
#include "interface_v3/interface_manager.h"
//#include "crtdbg.h"
#include "sound_manager.h"
#include "net_manager.h"
@ -1074,6 +1075,8 @@ void prelogInit()
// resetTextContext ("bremenb.ttf", false);
resetTextContext ("ryzom.ttf", false);
CInterfaceManager::getInstance();
ProgressBar.setFontFactor(0.85f);
nmsg = "Loading background...";

@ -3920,6 +3920,7 @@ public:
virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */)
{
#ifdef NL_OS_WINDOWS
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
if (Driver)
{
HWND wnd = Driver->getDisplay();

@ -520,6 +520,7 @@ CCameraBackup setupCameraForScreenshot(UScene &scene, uint left, uint right, uin
// Build a viewport
CViewport viewport;
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
viewport.init (0, 0, (float)(right-left)/Driver->getWindowWidth(),(float)(bottom-top)/Driver->getWindowHeight());
// Activate all this
@ -552,6 +553,7 @@ void renderSceneScreenShot (uint left, uint right, uint top, uint bottom, uint s
void getBuffer (CBitmap &btm)
{
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
//
if (ClientCfg.ScreenShotWidth && ClientCfg.ScreenShotHeight)
{
@ -611,6 +613,8 @@ bool screenshotZBuffer(const std::string &filename)
std::string ext = filename.substr(pos+1);
std::vector<float> z;
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
Driver->getZBuffer(z);
float min = std::numeric_limits<float>::max();

@ -250,6 +250,7 @@ CCtrlSheetInfo::CCtrlSheetInfo()
void CDBCtrlSheet::release ()
{
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
if (Driver)
Driver->deleteMaterial(_GuildMat);
@ -489,6 +490,8 @@ CDBCtrlSheet::CDBCtrlSheet(const TCtorParam &param)
// ----------------------------------------------------------------------------
CDBCtrlSheet::~CDBCtrlSheet()
{
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
if (_GuildBack)
{
if (Driver)
@ -1304,6 +1307,8 @@ void CDBCtrlSheet::setupGuildFlag ()
sint8 nLastGuildBack = (sint8)(_MacroID&15); // 4 bits en pos 0
sint8 nLastGuildSymbol = (sint8)((_MacroID>>4)&63); // 6 bits en pos 4
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
if (_GuildMat.empty())
{
_GuildMat = Driver->createMaterial();

@ -335,7 +335,7 @@ void CGroupEditBox::copy()
stopParentBlink();
// get the selection and copy it
if (Driver->copyTextToClipboard(getSelection()))
if (CInterfaceManager::getInstance()->getViewRenderer().getDriver()->copyTextToClipboard(getSelection()))
nlinfo ("Chat input was copied in the clipboard");
}
@ -353,7 +353,7 @@ void CGroupEditBox::paste()
ucstring sString;
if (Driver->pasteTextFromClipboard(sString))
if (CInterfaceManager::getInstance()->getViewRenderer().getDriver()->pasteTextFromClipboard(sString))
{
// append string now
appendStringFromClipboard(sString);

@ -86,8 +86,8 @@ void CGroupInScene::computeWindowPos(sint32 &newX, sint32 &newY, CVector &newPro
tmp = pVR.getFrustum().projectZ (tmp);
// Get the width and height
tmp.x *= (float)Driver->getWindowWidth();
tmp.y *= (float)Driver->getWindowHeight();
tmp.x *= (float)CInterfaceManager::getInstance()->getViewRenderer().getDriver()->getWindowWidth();
tmp.y *= (float)CInterfaceManager::getInstance()->getViewRenderer().getDriver()->getWindowHeight();
// position without offset, in float
newProjCenter.x= tmp.x;

@ -667,6 +667,7 @@ CGroupInSceneBubbleManager::CPopupContext *CGroupInSceneBubbleManager::buildCont
if (target)
{
// Find a position
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
const uint width = Driver->getWindowWidth();
const uint height = Driver->getWindowHeight();
h = (target->getXReal() < ((sint)width-target->getXReal()-target->getWReal()))?"l":"r";

@ -174,13 +174,13 @@ void CInputHandlerManager::operator ()(const NLMISC::CEvent &event)
UserControls.stopFreeLook();
}
// be nice with other app : let the mouse reappear (useful in direct 3D mode with no hardware cursor)
Driver->showCursor(true);
CInterfaceManager::getInstance()->getViewRenderer().getDriver()->showCursor(true);
// Driver->setSystemArrow();
}
else
{
_RecoverFocusLost = true; // force to update mouse pos on next click or move
Driver->showCursor(IsMouseCursorHardware());
CInterfaceManager::getInstance()->getViewRenderer().getDriver()->showCursor(IsMouseCursorHardware());
_Focus = true;
}

@ -78,6 +78,7 @@ CInterface3DScene::~CInterface3DScene()
for (i = 0; i < _FXs.size(); ++i)
delete _FXs[i];
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
if (_Scene != NULL)
Driver->deleteScene (_Scene);
@ -171,6 +172,7 @@ bool CInterface3DScene::parse (xmlNodePtr cur, CInterfaceGroup *parentGroup)
return true;
}
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
nlassert ( Driver != NULL);
_Scene = Driver->createScene(true);
@ -297,7 +299,7 @@ bool CInterface3DScene::parse (xmlNodePtr cur, CInterfaceGroup *parentGroup)
if (!animName.empty())
{
if (_AutoAnimSet == NULL)
_AutoAnimSet = Driver->createAnimationSet();
_AutoAnimSet = CInterfaceManager::getInstance()->getViewRenderer().getDriver()->createAnimationSet();
uint id = _AutoAnimSet->addAnimation (ptr, animName.c_str ());
if (id == UAnimationSet::NotFound)
{
@ -376,6 +378,8 @@ void CInterface3DScene::draw ()
{
H_AUTO( RZ_Interface_CInterface3DScene_draw )
NL3D::UDriver *Driver = CInterfaceManager::getInstance()->getViewRenderer().getDriver();
if ( Driver == NULL)
return;
@ -434,7 +438,7 @@ void CInterface3DScene::draw ()
float vpW = (float) clipw / iavoid0(wsw);
float vpH = (float) cliph / iavoid0(wsh);
newVP.init(vpX, vpY, vpW, vpH);
NL3D::CFrustum oldFrustum = Driver->getFrustum();
NL3D::CFrustum oldFrustum = CInterfaceManager::getInstance()->getViewRenderer().getDriver()->getFrustum();
NL3D::CFrustum newFrustum;
newFrustum.initPerspective (pI3DCam->getFOV() * (float) (NLMISC::Pi / 180), (float) _WReal / iavoid0(_HReal), 0.1f, 100.f);
@ -1093,7 +1097,7 @@ bool CInterface3DIG::parse (xmlNodePtr cur, CInterface3DScene *parentGroup)
setRotX (_Rot.x);
setRotY (_Rot.y);
setRotZ (_Rot.z);
_IG->addToScene (*parentGroup->getScene(), Driver);
_IG->addToScene (*parentGroup->getScene(), CInterfaceManager::getInstance()->getViewRenderer().getDriver() );
parentGroup->getScene()->setToGlobalInstanceGroup (_IG);
return true;
@ -1214,7 +1218,7 @@ void CInterface3DIG::setName (const std::string &ht)
_IG = UInstanceGroup::createInstanceGroup(_Name);
if (_IG == NULL) return;
_IG->setPos (_Pos);
_IG->addToScene (*pI3DS->getScene(), Driver);
_IG->addToScene (*pI3DS->getScene(), CInterfaceManager::getInstance()->getViewRenderer().getDriver() );
pI3DS->getScene()->setToGlobalInstanceGroup (_IG);
}
}

@ -253,7 +253,8 @@ int CInterfaceManager::DebugTrackGroupsGetId( CInterfaceGroup *pIG )
#endif // AJM_DEBUG_TRACK_INTERFACE_GROUPS
// ------------------------------------------------------------------------------------------------
CInterfaceManager::CInterfaceManager()
CInterfaceManager::CInterfaceManager() :
_ViewRenderer( Driver )
{
_Instance = this;
_DbRootNode = new CCDBNodeBranch("ROOT");

@ -414,7 +414,7 @@ COptionsAnimationSet::~COptionsAnimationSet()
BUT this is OK, since the actual animationSet is kept by SmartPtr through UPlayList
(see deleteAnimationSet() doc)
*/
Driver->deleteAnimationSet(AnimationSet);
CInterfaceManager::getInstance()->getViewRenderer().getDriver()->deleteAnimationSet(AnimationSet);
AnimationSet= NULL;
}
}
@ -424,10 +424,10 @@ bool COptionsAnimationSet::parse (xmlNodePtr cur)
{
bool result = CInterfaceOptions::parse(cur);
if (!result) return false;
nlassert(Driver);
nlassert( CInterfaceManager::getInstance()->getViewRenderer().getDriver() );
// create the animation set
AnimationSet= Driver->createAnimationSet();
AnimationSet= CInterfaceManager::getInstance()->getViewRenderer().getDriver()->createAnimationSet();
nlassert(AnimationSet);
AnimMale.clear();

@ -118,7 +118,8 @@ using namespace NLMISC;
void badLuaParseMessageBox()
{
NL3D::UDriver::TMessageBoxId ret = Driver->systemMessageBox( "LUA files reading failed!\n"
NL3D::UDriver::TMessageBoxId ret =
CInterfaceManager::getInstance()->getViewRenderer().getDriver()->systemMessageBox( "LUA files reading failed!\n"
"Some LUA files are corrupted, moved or may have been removed.\n"
"Ryzom may need to be restarted to run properly.\n"
"Would you like to quit now?",

@ -701,7 +701,7 @@ void CViewPointer::drawCursor(sint32 texId, NLMISC::CRGBA col, uint8 rot)
{
// set new cursor for the hardware mouse
std::string name = rVR.getTextureNameFromId(texId);
Driver->setCursor(name, col, rot, (uint32) std::max(getX() - xPos, (sint32) 0), (uint32) std::max(getY() - yPos, (sint32) 0));
rVR.getDriver()->setCursor(name, col, rot, (uint32) std::max(getX() - xPos, (sint32) 0), (uint32) std::max(getY() - yPos, (sint32) 0));
}
}

@ -30,45 +30,15 @@ using namespace NLMISC;
using namespace std;
using namespace NL3D;
/*
* constructor
*/
CViewRenderer::CViewRenderer()
CViewRenderer::CViewRenderer( NL3D::UDriver *driver )
{
_ClipX = _ClipY = 0;
_ClipW = 800;
_ClipH = 600;
_ScreenW = 800;
_ScreenH = 600;
_OneOverScreenW= 1.0f / (float)_ScreenW;
_OneOverScreenH= 1.0f / (float)_ScreenH;
_IsMinimized= false;
_WFigurTexture= 0;
_HFigurTexture= 0;
_WFigurSeparatorTexture = 0;
_FigurSeparatorTextureId = -1;
_FigurBlankId = -1;
_BlankId = -1;
_WorldSpaceTransformation = true;
_CurrentZ = 10;
for(uint i=0;i<VR_NUM_LAYER;i++)
{
_StringRBLayers[i]= NULL;
_EmptyLayer[i]= true;
}
_BlankGlobalTexture = NULL;
}
setup();
this->driver = driver;
}
/*
* destructor
*/
CViewRenderer::~CViewRenderer()
{
if (!_Material.empty() && Driver)
Driver->deleteMaterial(_Material);
for(uint i=0;i<VR_NUM_LAYER;i++)
{
delete _StringRBLayers[i];
@ -101,9 +71,9 @@ void CViewRenderer::setClipWindow (sint32 x, sint32 y, sint32 w, sint32 h)
*/
void CViewRenderer::checkNewScreenSize ()
{
if (!Driver) return;
if (!driver) return;
uint32 w, h;
Driver->getWindowSize (w, h);
driver->getWindowSize (w, h);
// not minimized? change coords
if(w!=0 && h!=0)
{
@ -145,14 +115,40 @@ void CViewRenderer::getScreenOOSize (float &oow, float &ooh)
ooh= _OneOverScreenH;
}
void CViewRenderer::setup()
{
_ClipX = _ClipY = 0;
_ClipW = 800;
_ClipH = 600;
_ScreenW = 800;
_ScreenH = 600;
_OneOverScreenW= 1.0f / (float)_ScreenW;
_OneOverScreenH= 1.0f / (float)_ScreenH;
_IsMinimized= false;
_WFigurTexture= 0;
_HFigurTexture= 0;
_WFigurSeparatorTexture = 0;
_FigurSeparatorTextureId = -1;
_FigurBlankId = -1;
_BlankId = -1;
_WorldSpaceTransformation = true;
_CurrentZ = 10;
for(uint i=0;i<VR_NUM_LAYER;i++)
{
_StringRBLayers[i]= NULL;
_EmptyLayer[i]= true;
}
_BlankGlobalTexture = NULL;
}
/*
* init: init material and string buffer
*/
void CViewRenderer::init()
{
if (!Driver) return;
_Material = Driver->createMaterial();
if (!driver) return;
_Material = driver->createMaterial();
setRenderStates();
@ -188,7 +184,7 @@ void CViewRenderer::reset()
UTextureFile *tf = dynamic_cast<NL3D::UTextureFile *>(ite->Texture);
if (tf)
{
Driver->deleteTextureFile (tf);
driver->deleteTextureFile (tf);
}
ite++;
}
@ -200,6 +196,10 @@ void CViewRenderer::reset()
_IndexesToTextureIds.clear();
}
NL3D::UDriver* CViewRenderer::getDriver(){
return driver;
}
// ***************************************************************************
void CViewRenderer::SImage::setupQuadUV(bool flipv, uint8 rot, CQuadColorUV &dest)
{
@ -711,7 +711,7 @@ void CViewRenderer::loadTextures (const std::string &textureFileName, const std:
CIFile ifTmp;
if (ifTmp.open(filename))
CBitmap::loadSize (ifTmp, gt.Width, gt.Height);
gt.Texture = Driver->createTextureFile (filename);
gt.Texture = driver->createTextureFile (filename);
// Force to generate the texture now. This way we can extract the mouse bitmaps from it now without having to load it again.
// Its why we don't release it at the end, because it is likely to be uploaded soon)
CBitmap *texDatas = gt.Texture->generateDatas();
@ -729,7 +729,7 @@ void CViewRenderer::loadTextures (const std::string &textureFileName, const std:
_GlobalTextures.push_back (gt);
Driver->setCursorScale(ClientCfg.HardwareCursorScale);
driver->setCursorScale(ClientCfg.HardwareCursorScale);
char bufTmp[256], tgaName[256];
string sTGAname;
@ -781,7 +781,7 @@ void CViewRenderer::loadTextures (const std::string &textureFileName, const std:
CBitmap curs;
curs.resize(x1 - x0, y1 - y0);
curs.blit(*texDatas, x0, y0, (x1 - x0), (y1 - y0), 0, 0);
Driver->addCursor(image.Name, curs);
driver->addCursor(image.Name, curs);
}
}
}
@ -877,7 +877,7 @@ sint32 CViewRenderer::createTexture (const std::string &sGlobalTextureName,
nlwarning("Failed to load the texture '%s', please check image format", filename.c_str());
}
}
gtTmp.Texture = Driver->createTextureFile (sLwrGTName);
gtTmp.Texture = driver->createTextureFile (sLwrGTName);
gtTmp.Name = sLwrGTName;
gtTmp.Texture->setFilterMode(UTexture::Nearest, UTexture::NearestMipMapOff);
if(uploadDXTC)
@ -1007,7 +1007,7 @@ void CViewRenderer::deleteTexture (sint32 textureId)
UTextureFile *tf = dynamic_cast<NL3D::UTextureFile *>(iteGT->Texture);
if (tf)
{
Driver->deleteTextureFile (tf);
driver->deleteTextureFile (tf);
}
_GlobalTextures.erase (iteGT);
return;
@ -1151,13 +1151,13 @@ void CViewRenderer::flush ()
// draw quads and empty list
if (layer.NbQuads != 0)
{
Driver->drawQuads (&(layer.Quads[0]), layer.NbQuads, _Material);
driver->drawQuads (&(layer.Quads[0]), layer.NbQuads, _Material);
layer.NbQuads = 0;
}
if (!layer.Tris.empty())
{
Driver->drawTriangles(layer.Tris, _Material);
driver->drawTriangles(layer.Tris, _Material);
layer.Tris.clear();
}
@ -1178,12 +1178,12 @@ void CViewRenderer::flush ()
// alpha blended
if (!layer.FilteredAlphaBlendedQuads.empty())
{
Driver->drawQuads (&(layer.FilteredAlphaBlendedQuads[0]), (uint32)layer.FilteredAlphaBlendedQuads.size(), _Material);
driver->drawQuads (&(layer.FilteredAlphaBlendedQuads[0]), (uint32)layer.FilteredAlphaBlendedQuads.size(), _Material);
layer.FilteredAlphaBlendedQuads.clear();
}
if (!layer.FilteredAlphaBlendedTris.empty())
{
Driver->drawTriangles(layer.FilteredAlphaBlendedTris, _Material);
driver->drawTriangles(layer.FilteredAlphaBlendedTris, _Material);
layer.FilteredAlphaBlendedTris.clear();
}
// additif
@ -1193,12 +1193,12 @@ void CViewRenderer::flush ()
_Material.setBlendFunc (NL3D::UMaterial::one, NL3D::UMaterial::one);
if (!layer.FilteredAdditifQuads.empty())
{
Driver->drawQuads (&(layer.FilteredAdditifQuads[0]), (uint32)layer.FilteredAdditifQuads.size(), _Material);
driver->drawQuads (&(layer.FilteredAdditifQuads[0]), (uint32)layer.FilteredAdditifQuads.size(), _Material);
layer.FilteredAdditifQuads.clear();
}
if (!layer.FilteredAdditifTris.empty())
{
Driver->drawTriangles(layer.FilteredAdditifTris, _Material);
driver->drawTriangles(layer.FilteredAdditifTris, _Material);
layer.FilteredAdditifTris.clear();
}
// restore alpha blend
@ -1546,13 +1546,13 @@ URenderStringBuffer *CViewRenderer::getStringRenderBuffer(sint layerId)
// ***************************************************************************
void CViewRenderer::drawWiredQuad(sint32 x, sint32 y, sint32 width, sint32 height, NLMISC::CRGBA col /*=NLMISC::CRGBA::White*/)
{
Driver->drawWiredQuad(x * _OneOverScreenW, y * _OneOverScreenH, (x + width) * _OneOverScreenW, (y + height) * _OneOverScreenH, col);
driver->drawWiredQuad(x * _OneOverScreenW, y * _OneOverScreenH, (x + width) * _OneOverScreenW, (y + height) * _OneOverScreenH, col);
}
// ***************************************************************************
void CViewRenderer::drawFilledQuad(sint32 x, sint32 y, sint32 width, sint32 height, NLMISC::CRGBA col /*=NLMISC::CRGBA::White*/)
{
Driver->drawQuad(x * _OneOverScreenW, y * _OneOverScreenH, (x + width) * _OneOverScreenW, (y + height) * _OneOverScreenH, col);
driver->drawQuad(x * _OneOverScreenW, y * _OneOverScreenH, (x + width) * _OneOverScreenW, (y + height) * _OneOverScreenH, col);
}
@ -1610,7 +1610,7 @@ void CViewRenderer::drawCustom (sint32 x, sint32 y, sint32 width, sint32 height,
worldSpaceTransformation (qcoluv2_clipped);
// Draw clipped quad
Driver->drawQuads (&qcoluv2_clipped, 1, Mat);
driver->drawQuads (&qcoluv2_clipped, 1, Mat);
}
// ***************************************************************************
@ -1658,7 +1658,7 @@ void CViewRenderer::drawCustom(sint32 x, sint32 y, sint32 width, sint32 height,
}
// Draw clipped quad
Driver->drawQuads (&qcoluv_clipped, 1, Mat);
driver->drawQuads (&qcoluv_clipped, 1, Mat);
}
// ***************************************************************************
@ -1716,7 +1716,7 @@ void CViewRenderer::drawCustom (sint32 x, sint32 y, sint32 width, sint32 height,
worldSpaceTransformation (qcoluv2_clipped);
// Draw clipped quad
Driver->drawQuads (&qcoluv2_clipped, 1, Mat);
driver->drawQuads (&qcoluv2_clipped, 1, Mat);
}
// ***************************************************************************

@ -29,16 +29,6 @@
#include "../ingame_database_manager.h"
//the NEL 3d driver
extern NL3D::UDriver* Driver;
//the NEL 3d textcontext
extern NL3D::UTextContext *TextContext;
//the network database node
extern CCDBSynchronised IngameDbMngr;
// ***************************************************************************
#define VR_NUM_LAYER 32
#define VR_BIAS_LAYER (VR_NUM_LAYER/2)
@ -113,15 +103,13 @@ public:
sint32 _TextureId;
};
/**
* destructor
*/
CViewRenderer ();
/**
* destructor
*/
CViewRenderer( NL3D::UDriver *driver );
~CViewRenderer ();
/// setup the default values for everything
void setup();
/// init when TextContext and Driver are created
void init();
@ -131,6 +119,9 @@ public:
/// Delete all textures and the like and reset the view renderer
void reset();
/// Retrieves the 3d driver we are using
NL3D::UDriver* getDriver();
/*
* setClipWindow : set the current clipping window
* (this window do not inherit properties from parent or whatever)
@ -568,6 +559,8 @@ private:
NLMISC::CMatrix _WorldSpaceMatrix; // Matrix to be applied for world space transformation
bool _WorldSpaceScale;
NL3D::UDriver *driver;
};

@ -300,7 +300,6 @@ void CObjectRefIdClient::getNameInParent(std::string &name, sint32 &indexInArray
nlwarning("ObservedObject parent instance ptr = %p", parent);
parent->getLuaProjection().dump();
}
Driver->systemMessageBox("Bug catched, please send log.log to vizerie@nevrax.com", "nevrax internal", NL3D::UDriver::okType, NL3D::UDriver::exclamationIcon);
nlassert(0); // not found in parent
}

Loading…
Cancel
Save