* Reworked viewer info tab to be "useful"
Also added a "login screen camera" for Lumirion ;)
This commit is contained in:
parent
51c52185e4
commit
367e47fd32
@ -39,9 +39,10 @@ core::stringw MessageText;
|
|||||||
core::stringw Caption;
|
core::stringw Caption;
|
||||||
scene::ISceneNode* Model = 0;
|
scene::ISceneNode* Model = 0;
|
||||||
scene::ISceneNode* SkyBox = 0;
|
scene::ISceneNode* SkyBox = 0;
|
||||||
|
gui::IGUITreeView* TreeView = 0;
|
||||||
bool Octree=false;
|
bool Octree=false;
|
||||||
|
|
||||||
scene::ICameraSceneNode* Camera[2] = {0, 0};
|
scene::ICameraSceneNode* Camera[3] = {0, 0, 0};
|
||||||
|
|
||||||
// Values used to identify individual GUI elements
|
// Values used to identify individual GUI elements
|
||||||
enum
|
enum
|
||||||
@ -81,6 +82,7 @@ enum
|
|||||||
|
|
||||||
GUI_ID_CAMERA_MAYA,
|
GUI_ID_CAMERA_MAYA,
|
||||||
GUI_ID_CAMERA_FIRST_PERSON,
|
GUI_ID_CAMERA_FIRST_PERSON,
|
||||||
|
GUI_ID_CAMERA_FIXED,
|
||||||
|
|
||||||
GUI_ID_POSITION_TEXT,
|
GUI_ID_POSITION_TEXT,
|
||||||
|
|
||||||
@ -192,12 +194,49 @@ void loadModel(const c8* fn)
|
|||||||
L"Maybe it is not a supported file format.");
|
L"Maybe it is not a supported file format.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
IGUIElement* root = Device->getGUIEnvironment()->getRootGUIElement();
|
|
||||||
IGUIElement* e = root->getElementFromId(GUI_ID_TREE_VIEW, true);
|
IGUITreeViewNode* treeroot = TreeView->getRoot();
|
||||||
core::stringw str(L"");
|
treeroot->clearChilds();
|
||||||
str += L"Submeshes: ";
|
treeroot=treeroot->addChildBack(core::stringw(filename).c_str());
|
||||||
str.append(core::stringw(m->getMeshBufferCount()));
|
treeroot->setExpanded(true);
|
||||||
e->setText(str.c_str());
|
for(u32 i=0;i<m->getMeshBufferCount();i++)
|
||||||
|
{
|
||||||
|
core::stringw nodename(L"Submesh ");
|
||||||
|
nodename += i;
|
||||||
|
IGUITreeViewNode* treenode = treeroot->addChildBack(nodename.c_str());
|
||||||
|
treenode->setExpanded(true);
|
||||||
|
nodename = L"Texture: ";
|
||||||
|
if(m->getMeshBuffer(i)->getMaterial().getTexture(0))
|
||||||
|
nodename+= m->getMeshBuffer(i)->getMaterial().getTexture(0)->getName();
|
||||||
|
else
|
||||||
|
nodename += L"none";
|
||||||
|
treenode->addChildBack(nodename.c_str());
|
||||||
|
nodename = L"Material Type: ";
|
||||||
|
switch(m->getMeshBuffer(i)->getMaterial().MaterialType)
|
||||||
|
{
|
||||||
|
case video::EMT_SOLID:
|
||||||
|
nodename += "SOLID";
|
||||||
|
break;
|
||||||
|
case video::EMT_TRANSPARENT_ALPHA_CHANNEL_REF:
|
||||||
|
nodename += "ALPHA_REF";
|
||||||
|
break;
|
||||||
|
case video::EMT_ONETEXTURE_BLEND:
|
||||||
|
nodename += "BLEND";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
treenode->addChildBack(nodename.c_str());
|
||||||
|
nodename = L"FogEnable: ";
|
||||||
|
nodename+= m->getMeshBuffer(i)->getMaterial().FogEnable?"true":"false";
|
||||||
|
treenode->addChildBack(nodename.c_str());
|
||||||
|
nodename = L"BackfaceCulling: ";
|
||||||
|
nodename+= m->getMeshBuffer(i)->getMaterial().BackfaceCulling?"true":"false";
|
||||||
|
treenode->addChildBack(nodename.c_str());
|
||||||
|
}
|
||||||
|
// IGUIElement* e = root->getElementFromId(GUI_ID_TREE_VIEW, true);
|
||||||
|
// core::stringw str(L"");
|
||||||
|
// str += L"Submeshes: ";
|
||||||
|
// str.append(core::stringw(m->getMeshBufferCount()));
|
||||||
|
// e->setText(str.c_str());
|
||||||
// set default material properties
|
// set default material properties
|
||||||
|
|
||||||
if (Octree)
|
if (Octree)
|
||||||
@ -209,8 +248,6 @@ void loadModel(const c8* fn)
|
|||||||
animModel->setM2Animation(0);
|
animModel->setM2Animation(0);
|
||||||
Model = animModel;
|
Model = animModel;
|
||||||
}
|
}
|
||||||
Model->setMaterialFlag(video::EMF_LIGHTING, true);
|
|
||||||
// Model->setMaterialFlag(video::EMF_BACK_FACE_CULLING, false);
|
|
||||||
Model->setDebugDataVisible(scene::EDS_OFF);
|
Model->setDebugDataVisible(scene::EDS_OFF);
|
||||||
// we need to uncheck the menu entries. would be cool to fake a menu event, but
|
// we need to uncheck the menu entries. would be cool to fake a menu event, but
|
||||||
// that's not so simple. so we do it brute force
|
// that's not so simple. so we do it brute force
|
||||||
@ -290,9 +327,8 @@ void createToolBox()
|
|||||||
|
|
||||||
IGUITab* t2 = tab->addTab(L"Info");
|
IGUITab* t2 = tab->addTab(L"Info");
|
||||||
// add some edit boxes and a button to tab one
|
// add some edit boxes and a button to tab one
|
||||||
env->addStaticText(L"Submeshes:",
|
env->addStaticText(L"Submeshes:",core::rect<s32>(10,20,150,45), false, false, t2);
|
||||||
core::rect<s32>(10,20,150,45), false, false, t2);
|
TreeView = env->addTreeView(core::rect<s32>(10,48,190,470), t2, GUI_ID_TREE_VIEW,true,true,true);
|
||||||
env->addStaticText(L"",core::rect<s32>(10,48,150,280),true,true, t2, GUI_ID_TREE_VIEW);
|
|
||||||
|
|
||||||
|
|
||||||
IGUITab* t3 = tab->addTab(L"Lights");
|
IGUITab* t3 = tab->addTab(L"Lights");
|
||||||
@ -447,7 +483,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
case GUI_ID_MODEL_MATERIAL_TRANSPARENT: // View -> Material -> Transparent
|
case GUI_ID_MODEL_MATERIAL_TRANSPARENT: // View -> Material -> Transparent
|
||||||
if (Model)
|
if (Model)
|
||||||
Model->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR);
|
Model->setMaterialType(video::EMT_TRANSPARENT_ALPHA_CHANNEL);
|
||||||
break;
|
break;
|
||||||
case GUI_ID_MODEL_MATERIAL_REFLECTION: // View -> Material -> Reflection
|
case GUI_ID_MODEL_MATERIAL_REFLECTION: // View -> Material -> Reflection
|
||||||
if (Model)
|
if (Model)
|
||||||
@ -457,9 +493,12 @@ public:
|
|||||||
case GUI_ID_CAMERA_MAYA:
|
case GUI_ID_CAMERA_MAYA:
|
||||||
setActiveCamera(Camera[0]);
|
setActiveCamera(Camera[0]);
|
||||||
break;
|
break;
|
||||||
case GUI_ID_CAMERA_FIRST_PERSON:
|
case GUI_ID_CAMERA_FIRST_PERSON:
|
||||||
setActiveCamera(Camera[1]);
|
setActiveCamera(Camera[1]);
|
||||||
break;
|
break;
|
||||||
|
case GUI_ID_CAMERA_FIXED:
|
||||||
|
setActiveCamera(Camera[2]);
|
||||||
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -625,8 +664,9 @@ public:
|
|||||||
break;
|
break;
|
||||||
case GUI_ID_FRAME_SET_SUBMESH:
|
case GUI_ID_FRAME_SET_SUBMESH:
|
||||||
{
|
{
|
||||||
|
u32 submesh_id = atoi(core::stringc(env->getRootGUIElement()->getElementFromId(GUI_ID_FRAME_SUBMESH,true)->getText()).c_str());
|
||||||
if(Model)
|
if(Model)
|
||||||
((scene::CM2Mesh*)((scene::IAnimatedMeshSceneNode*)Model)->getMesh())->setGeoSetRender(atoi(core::stringc(env->getRootGUIElement()->getElementFromId(GUI_ID_FRAME_SUBMESH,true)->getText()).c_str()),true);
|
((scene::CM2Mesh*)((scene::IAnimatedMeshSceneNode*)Model)->getMesh())->setMBRender(submesh_id,!((scene::CM2Mesh*)((scene::IAnimatedMeshSceneNode*)Model)->getMesh())->getGeoSetRender(submesh_id));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case GUI_ID_LOAD_BUTTON:
|
case GUI_ID_LOAD_BUTTON:
|
||||||
@ -671,6 +711,7 @@ int main(int argc, char* argv[])
|
|||||||
{
|
{
|
||||||
log("Loading last used mesh");
|
log("Loading last used mesh");
|
||||||
c8 buffer[255];
|
c8 buffer[255];
|
||||||
|
memset(buffer,0,255);
|
||||||
fseek(f,0,SEEK_SET);
|
fseek(f,0,SEEK_SET);
|
||||||
fread(&buffer,1,255,f);
|
fread(&buffer,1,255,f);
|
||||||
StartUpModelFile = buffer;
|
StartUpModelFile = buffer;
|
||||||
@ -769,7 +810,8 @@ int main(int argc, char* argv[])
|
|||||||
|
|
||||||
submenu = menu->getSubMenu(2);
|
submenu = menu->getSubMenu(2);
|
||||||
submenu->addItem(L"Maya Style", GUI_ID_CAMERA_MAYA);
|
submenu->addItem(L"Maya Style", GUI_ID_CAMERA_MAYA);
|
||||||
submenu->addItem(L"First Person", GUI_ID_CAMERA_FIRST_PERSON);
|
submenu->addItem(L"First Person", GUI_ID_CAMERA_FIRST_PERSON);
|
||||||
|
submenu->addItem(L"Fixed Camera", GUI_ID_CAMERA_FIXED);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -867,8 +909,13 @@ int main(int argc, char* argv[])
|
|||||||
Camera[1]->setFarValue(20000.f);
|
Camera[1]->setFarValue(20000.f);
|
||||||
Camera[1]->setPosition(core::vector3df(0,0,-70));
|
Camera[1]->setPosition(core::vector3df(0,0,-70));
|
||||||
Camera[1]->setTarget(core::vector3df(0,0,0));
|
Camera[1]->setTarget(core::vector3df(0,0,0));
|
||||||
|
//Fixed camera set to the position of the cam in WOTLK Login
|
||||||
|
Camera[2] = smgr->addCameraSceneNode(0,core::vector3df(11.11f,2.44f,-0.03f),core::vector3df(-10.28f,2.44f,-0.04f));
|
||||||
|
Camera[2]->setFarValue(2777.7f);
|
||||||
|
Camera[2]->setNearValue(0.222f);
|
||||||
|
|
||||||
setActiveCamera(Camera[0]);
|
|
||||||
|
setActiveCamera(Camera[2]);
|
||||||
|
|
||||||
// load the irrlicht engine logo
|
// load the irrlicht engine logo
|
||||||
IGUIImage *img =
|
IGUIImage *img =
|
||||||
@ -880,7 +927,7 @@ int main(int argc, char* argv[])
|
|||||||
EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT);
|
EGUIA_LOWERRIGHT, EGUIA_LOWERRIGHT);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// draw everything
|
// draw everything
|
||||||
|
|
||||||
while(Device->run() && driver)
|
while(Device->run() && driver)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user