Index: GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/include/MoriaSmoke.h
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/include/MoriaSmoke.h	(revision 2492)
+++ GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/include/MoriaSmoke.h	(revision 2492)
@@ -0,0 +1,376 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2005 The OGRE Team
+Also see acknowledgements in Readme.html
+
+You may use this sample code for anything you like, it is not covered by the
+LGPL like the rest of the engine.
+-----------------------------------------------------------------------------
+*/
+
+/**
+    \file 
+        Lighting.h
+    \brief
+        Shows lighting support in OGRE. Also demonstrates the use of billboards
+        and controllers for automatic time-relative behaviour.
+*/
+
+
+#include "ExampleApplication.h"
+#include "OgreIlluminationManager.h"
+#include "SceneSerializer.h"
+
+AnimationState* mAnimState = 0;
+
+bool PP_glowON = true;
+bool PP_tonemapON = true;
+bool PP_dofON = true;
+
+Real lightpower = 32.0;
+Real glowCut = 50.6;
+Real glowTimeBlur = 0.6;
+Real glowStrech = 1.8;
+Real glowCombine = 0.5;
+// Listener class for frame updates
+class MoriaDemoFrameListener : public ExampleFrameListener
+{
+protected:
+	
+	unsigned long framecount;
+	SceneNode* mainLightNode;
+	Light* light;
+	SceneNode* sysNode;
+	
+public:
+    MoriaDemoFrameListener(RenderWindow* window, Camera* maincam, SceneNode* lightNode, Light* l, SceneNode* sysNode)
+        :ExampleFrameListener(window, maincam) 
+				 
+    {
+		mainLightNode = lightNode;
+		light = l;
+		framecount = 0;	
+		mMoveSpeed /= 50.0;
+		this->sysNode = sysNode;
+
+		mStatsOn = false;
+		showDebugOverlay(mStatsOn);
+
+    }
+
+    bool frameStarted(const FrameEvent& evt)
+    {	
+		float thisTime = (float) Root::getSingleton().getTimer()->getMilliseconds() / 2000.0f;
+		thisTime= 0;
+		//mainLightNode->setPosition(Vector3(2*cos(thisTime), 2, 2 * sin(thisTime)) + Vector3(5, 0, 5));
+		Vector3 pos = light->getDerivedPosition();
+		pos.normalise();
+		pos *= -1;
+		//light->setDirection( pos);
+		
+		framecount++;
+	  
+//	    mAnimState->addTime(evt.timeSinceLastFrame * 1.0);  
+		
+
+		//sysNode->setPosition(mCamera->getPosition() - Vector3(0,1.5,0));
+		//sysNode->setPosition(FPSPlayer::thePlayer->getPosition() - Vector3(0,1.5,0));
+
+        return ExampleFrameListener::frameStarted(evt);     
+    }
+
+	bool processUnbufferedKeyInput(const FrameEvent& evt)
+    {
+		if (mInputDevice->isKeyDown(KC_ADD) && mTimeUntilNextToggle <= 0)
+		{
+			if (mInputDevice->isKeyDown(KC_RSHIFT))
+				lightpower /= 1.2;
+			else
+				lightpower *= 1.2;
+			light->setPowerScale(lightpower);
+			mTimeUntilNextToggle = 0.2;
+				mWindow->setDebugText(String("LightPower ") + StringConverter::toString(lightpower));
+		}
+		if (mInputDevice->isKeyDown(KC_SUBTRACT) && mTimeUntilNextToggle <= 0)
+		{
+			if (mInputDevice->isKeyDown(KC_RSHIFT))
+				glowCut /= 1.2;
+			else
+				glowCut *= 1.2;
+			Ogre::Material* m = (Ogre::Material*) MaterialManager::getSingleton().getByName("GTP/Moria/PostProc/GlowCut").getPointer();
+			m->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstant("cutValue",glowCut);
+			mTimeUntilNextToggle = 0.2;
+			mWindow->setDebugText(String("GlowCut ") + StringConverter::toString(glowCut));
+		}
+		if (mInputDevice->isKeyDown(KC_MULTIPLY) && mTimeUntilNextToggle <= 0)
+		{
+			if (mInputDevice->isKeyDown(KC_RSHIFT))
+				glowTimeBlur /= 1.2;
+			else
+				glowTimeBlur *= 1.2;
+			Ogre::Material* m = (Ogre::Material*) MaterialManager::getSingleton().getByName("GTP/Moria/PostProc/GlowCut").getPointer();
+			m->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstant("timeBlur", glowTimeBlur);
+			mTimeUntilNextToggle = 0.2;
+			mWindow->setDebugText(String("GlowTimeBlur ") + StringConverter::toString(glowTimeBlur));
+		}
+		if (mInputDevice->isKeyDown(KC_M))
+		{
+			if (mInputDevice->isKeyDown(KC_RSHIFT))
+				glowStrech -= 0.01;
+			else
+				glowStrech += 0.01;
+			Ogre::Material* m = (Ogre::Material*) MaterialManager::getSingleton().getByName("GTP/Moria/PostProc/GlowBlurH").getPointer();
+			m->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstant("Stretch", glowStrech);
+			m = (Ogre::Material*) MaterialManager::getSingleton().getByName("GTP/Moria/PostProc/GlowBlurV").getPointer();
+			m->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstant("Stretch", glowStrech);
+			mWindow->setDebugText(String("GlowStretch ") + StringConverter::toString(glowStrech));
+		}
+		if (mInputDevice->isKeyDown(KC_N))
+		{
+			if (mInputDevice->isKeyDown(KC_RSHIFT))
+				glowCombine -= 0.01;
+			else
+				glowCombine += 0.01;
+			Ogre::Material* m = (Ogre::Material*) MaterialManager::getSingleton().getByName("GTP/Moria/GlowFinalCombine").getPointer();
+			m->getTechnique(0)->getPass(0)->getFragmentProgramParameters()->setNamedConstant("weight2", glowCombine);
+			mTimeUntilNextToggle = 0.2;
+			mWindow->setDebugText(String("GlowCombine ") + StringConverter::toString(glowCombine));
+		}
+
+		if (mInputDevice->isKeyDown(KC_3) && mTimeUntilNextToggle <= 0)
+		{
+			PP_glowON = !PP_glowON;
+			CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"GTP/Moria/PostProc/Glow", PP_glowON);
+			mTimeUntilNextToggle = 0.2;
+		}
+		if (mInputDevice->isKeyDown(KC_4) && mTimeUntilNextToggle <= 0)
+		{
+			PP_tonemapON = !PP_tonemapON;
+
+			CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"GTP/PostProc/ToneMap", PP_tonemapON);
+			
+			mTimeUntilNextToggle = 0.2;
+		}
+		if (mInputDevice->isKeyDown(KC_5) && mTimeUntilNextToggle <= 0)
+		{
+			PP_dofON = !PP_dofON;
+			CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"GTP/Moria/PostProc/DoF", PP_dofON);
+			mTimeUntilNextToggle = 0.2;
+		}
+
+		if (mInputDevice->isKeyDown(KC_I))
+		{
+			light->getParentSceneNode()->setPosition(
+				light->getParentSceneNode()->getPosition()
+				+ Vector3(0.2,0,0));
+		}
+		if (mInputDevice->isKeyDown(KC_K))
+		{
+			light->getParentSceneNode()->setPosition(
+				light->getParentSceneNode()->getPosition()
+				+ Vector3(-0.2,0,0));
+		}
+		if (mInputDevice->isKeyDown(KC_J))
+		{
+			light->getParentSceneNode()->setPosition(
+				light->getParentSceneNode()->getPosition()
+				+ Vector3(0,0,0.2));
+		}
+		if (mInputDevice->isKeyDown(KC_L))
+		{
+			light->getParentSceneNode()->setPosition(
+				light->getParentSceneNode()->getPosition()
+				+ Vector3(0,0,-0.2));
+		}
+		
+	
+		
+		return ExampleFrameListener::processUnbufferedKeyInput(evt);		
+	}
+
+	bool processUnbufferedMouseInput(const FrameEvent& evt)
+	{
+		return ExampleFrameListener::processUnbufferedMouseInput(evt);
+	}
+};
+
+/** Application class */
+class MoriaDemoApplication : public ExampleApplication
+{
+
+
+
+
+protected:
+	SceneNode* mainLightNode;
+	Light* mainLight;
+	SceneNode *pSysNode;
+	
+	void loadResources(void)
+	{
+		// Initialise, parse scripts etc
+		ResourceGroupManager::getSingleton().initialiseResourceGroup("Bootstrap");
+		ResourceGroupManager::getSingleton().initialiseResourceGroup("GTP_Basic");
+		ResourceGroupManager::getSingleton().initialiseResourceGroup("General");
+		ResourceGroupManager::getSingleton().initialiseResourceGroup("GTP_EnvMap");
+		ResourceGroupManager::getSingleton().initialiseResourceGroup("PostProc");
+		ResourceGroupManager::getSingleton().initialiseResourceGroup("GTP_Particles");
+		ResourceGroupManager::getSingleton().initialiseResourceGroup("GTP_PathMap");
+		ResourceGroupManager::getSingleton().initialiseResourceGroup("GTP_Moria");		
+		//ResourceGroupManager::getSingleton().initialiseResourceGroup("GTP_Caustic");
+	}
+
+	void createPostproc()
+	{		
+		CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
+														"FireHeatCompositor");
+		CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"FireHeatCompositor", false);
+		
+		CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
+														"GTP/Moria/PostProc/DoF");
+		CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"GTP/Moria/PostProc/DoF", false);
+
+		CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
+														"GTP/Moria/PostProc/Glow");
+		CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"GTP/Moria/PostProc/Glow", true);
+
+		
+			CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
+														"GTP/PostProc/ToneMap");
+		CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"GTP/PostProc/ToneMap", true);	
+				
+		CompositorManager::getSingleton().addCompositor(mWindow->getViewport(0),
+														"GTP/PostProc/MotionBlur");
+		CompositorManager::getSingleton().setCompositorEnabled(mWindow->getViewport(0),
+														"GTP/PostProc/MotionBlur", false);
+		
+	}
+    
+	void chooseSceneManager()
+	{
+		mSceneMgr = mRoot->createSceneManager("OctreeSceneManager");
+		//mSceneMgr = mRoot->createSceneManager("OcclusionCullingSceneManager");
+	}
+
+	void createScene(void) ///TOWERS
+    {
+		std::string occlusion_cfg("OcclusionCulling.cfg");
+		//mSceneMgr->setWorldGeometry(occlusion_cfg);
+		
+		//Overlay* mainOverlay = OverlayManager::getSingleton().getByName("MORIA/MainOverlay");
+		//mainOverlay->show();
+
+		createPostproc();
+
+		OgreIlluminationManager::getSingleton().setMainCamera(mCamera);
+		OgreIlluminationManager::getSingleton().setMainViewport(mWindow->getViewport(0));
+		 OgreIlluminationManager::getSingleton().setFocusingSM(false);
+	   OgreIlluminationManager::getSingleton().setShadowMapSize(128);
+	   OgreIlluminationManager::getSingleton().setBlurShadowMap(true);
+	   OgreIlluminationManager::getSingleton().setShadowMapMaterialName(Light::LT_SPOTLIGHT, "GTP/Basic/Distance_Normalized");//GameTools/ShadowMapDistance
+	   OgreIlluminationManager::getSingleton().setShadowMapMaterialName(Light::LT_POINT, "GTP/Basic/Distance_Normalized");
+	   OgreIlluminationManager::getSingleton().setUseLISPSM(false);
+	   OgreIlluminationManager::getSingleton().joinSharedRuns(false);
+				
+		Root::getSingleton()._setCurrentSceneManager(mSceneMgr);
+		mCamera->setPosition(0,12,20);
+		//mCamera->setPosition(0,100,0);
+		mCamera->lookAt(15,5,0);
+		mCamera->setFOVy(Radian(Degree(80)));
+		mCamera->setNearClipDistance(0.001);
+		mCamera->setFarClipDistance(150);
+		// Set ambient light
+        mSceneMgr->setAmbientLight(ColourValue(0.1, 0.1, 0.1));
+		mSceneMgr->setSkyBox(true, "Examples/EveningSkyBox", 500);
+		
+		SceneNode* rootNode = mSceneMgr->getRootSceneNode();
+		
+		SceneSerializer s(mSceneMgr);
+		DataStreamPtr inputStream; 				
+		inputStream = ResourceGroupManager::getSingleton().openResource("moria.level");	//towers2.level	
+		s.parseScript(inputStream, ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
+		
+		
+	   ParticleSystem* pSys1 = mSceneMgr->createParticleSystem("psys1", "GTP/Moria/Smoke_Large");
+	   pSys1->setKeepParticlesInLocalSpace(false);
+	   SceneNode *pSysNode = rootNode->createChildSceneNode("psys1");
+	   pSysNode->attachObject(pSys1);
+	   pSysNode->setPosition(15,-1,0);
+	
+		mainLight = mSceneMgr->createLight("MainLight");
+		mainLight->setType(Light::LT_POINT);
+		mainLight->setCastShadows(true);
+        mainLight->setDiffuseColour(ColourValue::White);
+		mainLight->setSpecularColour(ColourValue::White);
+		mainLightNode = rootNode->createChildSceneNode();
+		
+		mainLightNode->setPosition(15,15,15);		
+		mainLight->setPowerScale(165);
+		//mainLight->setDirection(1,0, 0);
+		mainLightNode->attachObject(mainLight);
+		//mainLight->setSpotlightRange(Degree(0),Degree(120));
+		mainLight->setAttenuation(200.0, 0, 0, 3);
+	
+		BillboardSet* bbs = mSceneMgr->createBillboardSet("bb", 1);
+		bbs->setDefaultDimensions(0.3, 0.3);
+		bbs->createBillboard(Vector3::ZERO, ColourValue::White);
+		bbs->setMaterialName("Flare");
+		mainLightNode->attachObject(bbs);
+
+		/*    Entity* ent = mSceneMgr->createEntity("troll", "troll.mesh");
+			ent->setCastShadows(true);
+            // Add entity to the scene node
+            SceneNode *trollNode = mSceneMgr->getRootSceneNode()->createChildSceneNode( Vector3(5,0,5));
+			trollNode->attachObject(ent);
+			trollNode->setScale(0.05,0.05,0.05);
+            mAnimState = ent->getAnimationState("stand");
+            mAnimState->setEnabled(true);*/
+		
+		OgreIlluminationManager::getSingleton().initTechniques();
+   }
+	
+	void createPlane(Ogre::String _name, Ogre::String _material, Ogre::Vector3 _pos, Ogre::Vector2 _size, Ogre::Vector2 _subdivisions = Ogre::Vector2(1,1)) 
+	{
+		Plane _plane;
+        _plane.normal = Vector3::UNIT_Y;
+        _plane.d = 0;
+
+
+        MeshManager::getSingleton().createPlane(_name + ".plane",
+            ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, 
+            _plane,_size.x,_size.y,1,1,true,1,_subdivisions.x,_subdivisions.y,Vector3::UNIT_Z);
+        
+		Entity *_entity = mSceneMgr->createEntity(_name + ".entity", _name + ".plane");
+        _entity->setMaterialName(_material);
+
+		SceneNode* _node = mSceneMgr->getRootSceneNode()->createChildSceneNode(_name + ".node");
+		_node->attachObject(_entity);
+		_node->setPosition(_pos);
+
+	}
+
+	void createFrameListener(void)
+    {
+		// This is where we instantiate our own frame listener
+		mFrameListener= new MoriaDemoFrameListener(mWindow,
+			mCamera, mainLightNode, mainLight, pSysNode	);
+        mFrameListener->setPriority(10);	
+		mRoot->addFrameListener(mFrameListener);
+		OgreIlluminationManager::getSingleton().setPriority(100);
+	    mRoot->addFrameListener(&OgreIlluminationManager::getSingleton());
+	  
+    }
+
+};
+
Index: GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/scripts/MoriaSmoke.7.10.vcproj
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/scripts/MoriaSmoke.7.10.vcproj	(revision 2492)
+++ GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/scripts/MoriaSmoke.7.10.vcproj	(revision 2492)
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="windows-1250"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="7.10"
+	Name="MoriaSmoke"
+	ProjectGUID="{09F9E809-02CF-4926-8203-2B9C02FBD916}"
+	Keyword="Win32Proj">
+	<Platforms>
+		<Platform
+			Name="Win32"/>
+	</Platforms>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				ImproveFloatingPointConsistency="TRUE"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_PATH)\Samples\Common\include&quot;;&quot;$(OGRE_PATH)\OgreMain\include&quot;;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include\RenderTechniques;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include\RenderingRuns;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include\RenderTechniques;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include\RenderingRuns;..\..\Common\include"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;GAMETOOLS_ILLUMINATION_MODULE;GTP_VISIBILITY_MODIFIED_OGRE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="4"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain_d.lib IllumModule_Ogre.lib IllumModule.lib"
+				OutputFile="$(OutDir)/MoriaSmoke.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\bin\Debug;&quot;$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)&quot;;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\bin\Debug"
+				IgnoreDefaultLibraryNames=""
+				GenerateDebugInformation="TRUE"
+				ProgramDatabaseFile="$(OutDir)/PRMDemo.pdb"
+				SubSystem="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="..\bin\$(ConfigurationName)"
+			IntermediateDirectory="..\obj\$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="2"
+			WholeProgramOptimization="TRUE">
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				GlobalOptimizations="TRUE"
+				InlineFunctionExpansion="1"
+				EnableIntrinsicFunctions="TRUE"
+				ImproveFloatingPointConsistency="TRUE"
+				FavorSizeOrSpeed="1"
+				OmitFramePointers="TRUE"
+				EnableFiberSafeOptimizations="FALSE"
+				OptimizeForProcessor="3"
+				OptimizeForWindowsApplication="TRUE"
+				AdditionalIncludeDirectories="..\include;&quot;$(OGRE_PATH)\Samples\Common\include&quot;;&quot;$(OGRE_PATH)\OgreMain\include&quot;;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include\RenderTechniques;..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\include\RenderingRuns;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include\RenderTechniques;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\include\RenderingRuns;..\..\Common\include"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;GAMETOOLS_ILLUMINATION_MODULE;GTP_VISIBILITY_MODIFIED_OGRE"
+				StringPooling="TRUE"
+				MinimalRebuild="TRUE"
+				BasicRuntimeChecks="0"
+				RuntimeLibrary="2"
+				BufferSecurityCheck="FALSE"
+				EnableFunctionLevelLinking="TRUE"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				Detect64BitPortabilityProblems="TRUE"
+				DebugInformationFormat="3"/>
+			<Tool
+				Name="VCCustomBuildTool"/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="OgreMain.lib IllumModule_Ogre.lib IllumModule.lib"
+				OutputFile="$(OutDir)/MoriaSmoke.exe"
+				LinkIncremental="1"
+				AdditionalLibraryDirectories="..\..\..\..\..\..\..\Lib\Illum\IllumModule\OgreIllumModule\bin\Release;&quot;$(OGRE_PATH)\OgreMain\lib\$(ConfigurationName)&quot;;..\..\..\..\..\..\..\Lib\Illum\IllumModule\IllumModule\bin\Release"
+				IgnoreAllDefaultLibraries="FALSE"
+				IgnoreDefaultLibraryNames=""
+				GenerateDebugInformation="FALSE"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				OptimizeForWindows98="1"
+				TargetMachine="1"/>
+			<Tool
+				Name="VCMIDLTool"/>
+			<Tool
+				Name="VCPostBuildEventTool"
+				CommandLine="copy $(OutDir)\$(TargetFileName) ..\..\..\bin\$(ConfigurationName)"/>
+			<Tool
+				Name="VCPreBuildEventTool"/>
+			<Tool
+				Name="VCPreLinkEventTool"/>
+			<Tool
+				Name="VCResourceCompilerTool"/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"/>
+			<Tool
+				Name="VCWebDeploymentTool"/>
+			<Tool
+				Name="VCManagedWrapperGeneratorTool"/>
+			<Tool
+				Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
+			<File
+				RelativePath="..\src\MoriaSmoke.cpp">
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc">
+			<File
+				RelativePath="..\include\MoriaSmoke.h">
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
+		</Filter>
+		<Filter
+			Name="Common"
+			Filter="">
+			<File
+				RelativePath="..\..\Common\src\SceneSerializer.cpp">
+			</File>
+			<File
+				RelativePath="..\..\Common\include\SceneSerializer.h">
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
Index: GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/scripts/Ogre.log
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/scripts/Ogre.log	(revision 2492)
+++ GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/scripts/Ogre.log	(revision 2492)
@@ -0,0 +1,57 @@
+16:27:59: Creating resource group General
+16:27:59: Creating resource group Internal
+16:27:59: Creating resource group Autodetect
+16:27:59: Registering ResourceManager for type Material
+16:27:59: Registering ResourceManager for type Mesh
+16:27:59: Registering ResourceManager for type Skeleton
+16:27:59: MovableObjectFactory for type 'ParticleSystem' registered.
+16:27:59: Loading library OgrePlatform.dll
+16:27:59: OverlayElementFactory for type Panel registered.
+16:27:59: OverlayElementFactory for type BorderPanel registered.
+16:27:59: OverlayElementFactory for type TextArea registered.
+16:27:59: Registering ResourceManager for type Font
+16:27:59: ArchiveFactory for archive type FileSystem registered.
+16:27:59: ArchiveFactory for archive type Zip registered.
+16:27:59: DevIL version: Developer's Image Library (DevIL) 1.6.7 Oct 28 2005
+16:27:59: DevIL image formats: bmp dib cut dcx dds gif hdr ico cur jpg jpe jpeg lif mdl mng jng pcx pic pix png pbm pgm pnm ppm psd pdd psp pxr sgi bw rgb rgba tga vda icb vst tif tiff wal xpm raw 
+16:27:59: Registering ResourceManager for type HighLevelGpuProgram
+16:27:59: Registering ResourceManager for type Compositor
+16:27:59: MovableObjectFactory for type 'Entity' registered.
+16:27:59: MovableObjectFactory for type 'Light' registered.
+16:27:59: MovableObjectFactory for type 'BillboardSet' registered.
+16:27:59: MovableObjectFactory for type 'ManualObject' registered.
+16:27:59: MovableObjectFactory for type 'BillboardChain' registered.
+16:27:59: MovableObjectFactory for type 'RibbonTrail' registered.
+16:27:59: An exception has been thrown!
+
+-----------------------------------
+Details:
+-----------------------------------
+Error #: 8
+Function: ConfigFile::load
+Description: 'plugins.cfg' file not found!. 
+File: \GameToolsSVN\Ogre\Ogre1.2\OgreMain\src\OgreConfigFile.cpp
+Line: 79
+Stack unwinding: <<beginning of stack>>
+16:27:59: plugins.cfg not found, automatic plugin loading disabled.
+16:27:59: *-*-* OGRE Initialising
+16:27:59: *-*-* Version 1.2.0 (Dagon)
+16:27:59: An exception has been thrown!
+
+-----------------------------------
+Details:
+-----------------------------------
+Error #: 8
+Function: ConfigFile::load
+Description: 'resources.cfg' file not found!. 
+File: \GameToolsSVN\Ogre\Ogre1.2\OgreMain\src\OgreConfigFile.cpp
+Line: 79
+Stack unwinding: <<beginning of stack>>
+16:28:02: *-*-* OGRE Shutdown
+16:28:02: Unregistering ResourceManager for type Compositor
+16:28:02: Unregistering ResourceManager for type Font
+16:28:02: Unregistering ResourceManager for type Skeleton
+16:28:02: Unregistering ResourceManager for type Mesh
+16:28:02: Unregistering ResourceManager for type HighLevelGpuProgram
+16:28:02: Unregistering ResourceManager for type Material
+16:28:02: Unloading library OgrePlatform.dll
Index: GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/src/MoriaSmoke.cpp
===================================================================
--- GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/src/MoriaSmoke.cpp	(revision 2492)
+++ GTP/trunk/App/Demos/Illum/Ogre/src/MoriaSmoke/src/MoriaSmoke.cpp	(revision 2492)
@@ -0,0 +1,62 @@
+/*
+-----------------------------------------------------------------------------
+This source file is part of OGRE
+    (Object-oriented Graphics Rendering Engine)
+For the latest info, see http://www.ogre3d.org/
+
+Copyright (c) 2000-2005 The OGRE Team
+Also see acknowledgements in Readme.html
+
+You may use this sample code for anything you like, it is not covered by the
+LGPL like the rest of the engine.
+-----------------------------------------------------------------------------
+*/
+
+/**
+    \file 
+        Lighting.cpp
+    \brief
+        Shows lighting support in OGRE.
+*/
+
+
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+#define WIN32_LEAN_AND_MEAN
+#include "windows.h"
+#endif
+
+#include "MoriaSmoke.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
+#else
+int main(int argc, char **argv)
+#endif
+{
+	
+    // Create application object
+    MoriaDemoApplication app;
+
+    try {
+        app.go();
+    } catch( Ogre::Exception& e ) {
+#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
+        MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
+#else
+        std::cerr << "An exception has occured: " << e.getFullDescription();
+#endif
+    }
+
+    return 0;
+}
+
+#ifdef __cplusplus
+}
+#endif
