All pastes #474274 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-05-06 18:48 UTC
rendered paste body
#include <irrlicht.h>
#include <irrNet.h>
#include <iostream>

using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;


#pragma comment(lib, "Irrlicht.lib")
#pragma comment(lib, "ws2_32.lib")

IrrlichtDevice* device = 0;
gui::IGUIFileOpenDialog* fileopen;
gui::IGUIButton* sendfilebutton;
io::IFileSystem* filesystem;
irr::net::INetManager* netmgr;
gui::IGUIEnvironment* guienv;
stringc mystring;



#define CLIENT // Are we the client or the server?


class MyEventReceiver : public IEventReceiver
{
public:
	virtual bool OnEvent(SEvent event)
	{
		if(event.EventType == irr::EET_KEY_INPUT_EVENT)
		{
			if(event.KeyInput.Key == KEY_ESCAPE)
			{
				device->closeDevice();
			}
		}

		if(event.EventType == irr::EET_GUI_EVENT)
		{
			if(event.GUIEvent.Caller == fileopen)
			{
				if(event.GUIEvent.EventType == EGET_FILE_SELECTED)
				{
					mystring = fileopen->getFilename();
					netmgr->sendFile((char*)mystring.c_str(),"sentfile");
				}
			}
			if(event.GUIEvent.Caller == sendfilebutton)
			{
				if(event.GUIEvent.EventType == EGET_BUTTON_CLICKED)
				{
					fileopen = guienv->addFileOpenDialog(L"Open file");	
				}
			}
		}



		return false;
	}
};

int main()
{


	MyEventReceiver receiver;

	device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(800, 600),
		32, false, false, true, &receiver);

	video::IVideoDriver* driver = device->getVideoDriver();
	scene::ISceneManager* smgr = device->getSceneManager();
	guienv = device->getGUIEnvironment();
	filesystem = device->getFileSystem();


	// Initialize NetManager
	netmgr = net::createNetManager(device);

	// Set the NetManager to output info to console
	netmgr->setVerbose(1);
	


	// Set up client or server
#ifdef CLIENT
	
		netmgr->setUpClient();
	
#else

		netmgr->setUpServer();
#endif




	// Create a simple camera
	smgr->addCameraSceneNode();

	int lastFPS = -1;

	sendfilebutton = guienv->addButton(rect<s32>(350,250,450,350),0,-1,L"Send a file.");
	
	
	while(device->run())
	{
		driver->beginScene(true, true, video::SColor(255,113,113,133));

		smgr->drawAll(); // draw the 3d scene
		guienv->drawAll();
		
		
		

		driver->endScene();




#ifdef CLIENT

		netmgr->updateClient();

#else

		netmgr->updateServer();		// If space is pressed rotate the texture, we do this by sending a custom variable over the network.

#endif


		int fps = driver->getFPS();

		if (lastFPS != fps)
		{
			wchar_t tmp[1024];
			swprintf_s(tmp, 1024, L"Network Test[%ls] fps: %d (Server can press Space to change Cube colour!)", 
				driver->getName(), fps);
			device->setWindowCaption(tmp);
			lastFPS = fps;
		}


	}


	//In the end, delete the Irrlicht device.

	device->drop();


	return 0;
}