It take not more than a half hour, and here is my new implementation of MeshLoader (Irr.0.6), example and test scene (ss you have seen).
http://zdimitor.nm.ru/MY3DExample.zip
Have fun
![Laughing :lol:](./images/smilies/icon_lol.gif)
Code: Select all
#include <irrlicht.h>
#include <stdio.h>
#include <windows.h>
#include "CMY3DMeshFileLoader.h"
using namespace irr;
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#pragma comment(lib, "Irrlicht.lib")
ILogger* logger=NULL;
//-----------------------------------------------------------------------------------------------//
int main()
{
IrrlichtDevice *device =
createDevice(video::EDT_DIRECTX9, core::dimension2d<s32>(640, 480),false,false,false,0);
video::IVideoDriver* driver = device->getVideoDriver();
scene::ISceneManager* smgr = device->getSceneManager();
io::IFileSystem *fs = device->getFileSystem();
logger = device->getLogger();
//-----------------------------------------------------------------------------------------------//
scene::IMeshLoader *my3dloader = new scene::CMY3DMeshFileLoader(fs,driver);
smgr->addExternalMeshLoader(my3dloader);
scene::IAnimatedMesh* mesh = smgr->getMesh("test/test.my3d");
scene::ISceneNode* node = 0;
if (mesh)
node = smgr->addOctTreeSceneNode(mesh->getMesh(0));
//-----------------------------------------------------------------------------------------------//
//wasd navigation
SKeyMap keyMap[8];
keyMap[1].Action = EKA_MOVE_FORWARD;
keyMap[1].KeyCode = KEY_KEY_W;
keyMap[3].Action = EKA_MOVE_BACKWARD;
keyMap[3].KeyCode = KEY_KEY_S;
keyMap[5].Action = EKA_STRAFE_LEFT;
keyMap[5].KeyCode = KEY_KEY_A;
keyMap[7].Action = EKA_STRAFE_RIGHT;
keyMap[7].KeyCode = KEY_KEY_D;
//-----------------------------------------------------------------------------------------------//
scene::ICameraSceneNode* camera = 0;
camera = smgr->addCameraSceneNodeFPS(0,80.0f,300.0f,-1, keyMap, 8); //1st value= obligatory 0-2nd value= mouse sensitivity-3rd value handles cam speed
camera->setPosition(core::vector3df(-150,70,-70)); //1st=pos in x-2nd value= spawn height-3rd=pos in y
camera->setFarValue ( 50000.0f ) ; //sets the distance for the clipping plane, the bigger the farther
camera->setFOV(1.1f); // a value of 0.5 makes it look alienish
camera->setTarget( core::vector3df(-150,70,0)); //target camera position-3rd value negative =90, positive=0 -1st value (-) rotates camera
camera->setRotation(core::vector3df(0,90,0)); //rotate the camera x,y,z degrees
//-----------------------------------------------------------------------------------------------//
device->getCursorControl()->setVisible(false);
//-----------------------------------------------------------------------------------------------//
int lastFPS = -1;
while(device->run())
{
driver->beginScene(true, true, video::SColor(0,0,0,0));
smgr->drawAll();
driver->endScene();
int fps = driver->getFPS();
if (lastFPS != fps)
{
wchar_t tmp[1024];
swprintf(tmp, 1024, L"MY3D Mesh Loader Example - Irrlicht Engine v.0.7 (fps:%d) Triangles:%d",
fps, driver->getPrimitiveCountDrawn());
device->setWindowCaption(tmp);
lastFPS = fps;
}
}
device->drop();
return 0;
}
Well, I'm very interested in your example, but this link doesn't seem to work (for me)...ZDimitor wrote:Here you go!
It take not more than a half hour, and here is my new implementation of MeshLoader (Irr.0.6), example and test scene (ss you have seen).
http://zdimitor.nm.ru/MY3DExample.zip
Have fun.....