rendered paste bodyIndex: PseuGUI.cpp===================================================================--- PseuGUI.cpp (revision 263)+++ PseuGUI.cpp (working copy)@@ -226,7 +226,7 @@ // called from ObjMgr::Add(Object*) void PseuGUI::NotifyObjectCreation(Object *o) {- DrawObject *d = new DrawObject(_device,o);+ DrawObject *d = new DrawObject(_smgr,o,_guienv); domgr.Add(o->GetGUID(),d); } Index: DrawObject.cpp===================================================================--- DrawObject.cpp (revision 263)+++ DrawObject.cpp (working copy)@@ -3,11 +3,13 @@ #include "DrawObject.h" #include "PseuWoW.h" -DrawObject::DrawObject(irr::scene::ISceneManager *smgr, Object *obj)+DrawObject::DrawObject(irr::scene::ISceneManager *smgr, Object *obj, irr::gui::IGUIEnvironment *gui) { _smgr = smgr; _obj = obj;- DEBUG( logdebug("create DrawObject() this=%X obj=%X smgr=%X",this,_obj,_smgr) );+ _gui = gui;+ DEBUG( logdebug("create DrawObject() this=%X obj=%X smgr=%X type=%u guid="I64FMT,this,_obj,_smgr,_obj->GetTypeId(),_obj->GetGUID()) );+ _initialized=false; } DrawObject::~DrawObject()@@ -15,7 +17,70 @@ DEBUG( logdebug("~DrawObject() this=%X obj=%X smgr=%X",this,_obj,_smgr) ); } +void DrawObject::Init()+{+ if(this->HasCoordinates()){+ cube = _smgr->addCubeSceneNode(5);+ logdebug ("Cube node created for object "I64FMT,_obj->GetGUID());+ if(_obj->GetName() != "")+ {+ iname=L"";+ iname +=_obj->GetName().c_str();+ }+ else{+ iname=L"null";}++ text=_smgr->addTextSceneNode(_gui->getBuiltInFont(), L"TestText" , irr::video::SColor(255,255,255,255),cube, irr::core::vector3df(0,5,0));+ text->setText(iname.c_str());+ //cube->setPosition(irr::core::vector3di(100,100,100));+ }+ _initialized=true;+}++bool DrawObject::HasCoordinates()+{+ if(_obj->IsUnit())+ return true;+ else+ return false;+}+ void DrawObject::Draw(void) {+ if(!_initialized)+ {+ Init();+ logdebug("Initializing object "I64FMT,_obj->GetGUID());+ }+ else+ {+ if(this->HasCoordinates())+ {+ //logdebug("Trying to get World Position for Object "I64FMT" Type %u",_obj->GetGUID(),_obj->GetTypeId());+ WorldPosition pos = ((WorldObject*)_obj)->GetPosition();+ //logdebug("Got position: x=%f y=%f z=%f",pos.x,pos.y,pos.z);+ float dx=pos.x * -5.0f - 26830.0f;+ float dy=-500;+ float dz=pos.y * -3.5f - 1066.0f;+ //logdebug("Setting position for cube %X",cube);+ cube->setPosition(irr::core::vector3df(dx,dy,dz));+ //logdebug("Position set");+ cube->getMaterial(0).DiffuseColor.set(255,255,0,0);+ if(iname==L"null")+ {+ logdebug("Trying to get Name for Object "I64FMT" Type %u",_obj->GetGUID(),_obj->GetTypeId());+ if(_obj->GetName() != "")+ {+ iname=L"";+ iname +=_obj->GetName().c_str();+ }+ else{+ iname=L"null";}+ text->setText(iname.c_str());+ } + }+ }+ }+Index: DrawObject.h===================================================================--- DrawObject.h (revision 263)+++ DrawObject.h (working copy)@@ -1,6 +1,7 @@ #ifndef DRAWOBJECT_H #define DRAWOBJECT_H +#include "Object.h" #include "common.h" #include "irrlicht/irrlicht.h" @@ -9,15 +10,22 @@ class DrawObject { public:- DrawObject(irr::scene::ISceneManager*, Object*);+ DrawObject(irr::scene::ISceneManager*, Object*, irr::gui::IGUIEnvironment*); ~DrawObject(); void Draw(void); // call only in threadsafe environment!! (ensure the obj ptr is still valid!) // additionally, we dont use a GetObject() func - that would fuck things up if the object was already deleted.+ bool HasCoordinates(); + private:+ void Init();+ bool _initialized; Object *_obj; irr::scene::ISceneManager *_smgr;-+ irr::gui::IGUIEnvironment *_gui;+ irr::scene::ISceneNode* cube;+ irr::scene::ITextSceneNode* text;+ irr::core::stringw iname; }; #endif