All pastes #250923 Raw Edit

Untitled

public text v1 · immutable
#250923 ·published 2006-11-17 15:20 UTC
rendered paste body
#include "Ogre.h"

Ogre::Root *ogre;
Ogre::RenderWindow *window;
Ogre::SceneManager *sceneMgr;
Ogre::Camera *camera;

int dll_test( int hWnd )
{
	// New instance of Ogre with blank resource and plugin file parameters-
	ogre = new Ogre::Root("", "");
	ogre->loadPlugin("RenderSystem_GL");

	// Ogre wants to iterate through display plugins before choosing one, so we satisfy it here-
	Ogre::RenderSystemList *renderSystems = NULL;
	Ogre::RenderSystemList::iterator r_it;
	renderSystems = ogre->getAvailableRenderers();
	r_it = renderSystems->begin();
	ogre->setRenderSystem(*r_it);
	ogre->initialise(false);

	//Common plugins
	ogre->loadPlugin("Plugin_CgProgramManager");
	ogre->loadPlugin("Plugin_OctreeSceneManager");

	//Resource Locations
	Ogre::ResourceGroupManager::getSingleton().addResourceLocation( "resource", "FileSystem", "General" );
	Ogre::ResourceGroupManager::getSingleton().addResourceLocation( "resource/gui.zip", "Zip", "GUI" );

	// If windows, grab system fonts-
#if defined(WIN32)
	Ogre::ResourceGroupManager::getSingleton().addResourceLocation("c:\\windows\\fonts", "FileSystem", "GUI");
#endif

	// Initialise defined resource groups-
	Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup("General");
	Ogre::ResourceGroupManager::getSingleton().initialiseResourceGroup("GUI");

	// Set up rendering properties-
	Ogre::NameValuePairList opts;
	opts["resolution"] = "1024x768";
	opts["fullscreen"] = "false";
	opts["vsync"]	   = "false";

#if defined(WIN32)
	opts["externalWindowHandle"]=Ogre::StringConverter::toString((size_t)hWnd);
#endif

	// Set up the actual window-
	window = ogre->createRenderWindow("Thingy", 1024, 768, false, &opts );

	// Set up the scene manager-
	sceneMgr = ogre->createSceneManager(Ogre::ST_GENERIC);

	// And Camera-
	camera = sceneMgr->createCamera("camera");
	camera->setNearClipDistance(5);

	// Set up the rendering viewport in the window-
	Ogre::Viewport* vp = window->addViewport(camera);
	vp->setBackgroundColour(Ogre::ColourValue(0,0,0));

	// Set camera aspect to static 4:3
	camera->setAspectRatio((Ogre::Real) 1.333333);

	return 0;
}

void dll_messagePump()
{
	Ogre::PlatformManager::getSingleton().messagePump(window);
	ogre->renderOneFrame();
}

void dll_setAmbientLight(int r, int g, int b)
{
	sceneMgr->setAmbientLight( Ogre::ColourValue( r, g, b ) );
}

void dll_spawnRobot()
{
	Ogre::Entity *ent1 = sceneMgr->createEntity( "Robot", "robot.mesh" );
	Ogre::SceneNode *node1 = sceneMgr->getRootSceneNode()->createChildSceneNode( "RobotNode" , Ogre::Vector3( 0, 0, -300 ) );
	node1->attachObject ( ent1 );
}

void dll_kill()
{
	delete ogre;
}