Revision: 1590
http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=1590&view=rev
Author: rorthomas
Date: 2011-01-22 00:07:00 +0000 (Sat, 22 Jan 2011)
Log Message:
-----------
improved embedded mode
fixed rtshader cache path
Modified Paths:
--------------
trunk/source/main/InputEngine.cpp
trunk/source/main/RigsOfRods.cpp
trunk/source/main/RigsOfRods.h
trunk/source/main/RoRFrameListener.cpp
trunk/source/main/RoRFrameListener.h
trunk/source/main/SelectorWindow.cpp
trunk/source/main/main.cpp
Modified: trunk/source/main/InputEngine.cpp
===================================================================
--- trunk/source/main/InputEngine.cpp 2011-01-21 01:58:23 UTC (rev 1589)
+++ trunk/source/main/InputEngine.cpp 2011-01-22 00:07:00 UTC (rev 1590)
@@ -34,6 +34,8 @@
#include <OgreWindowEventUtilities.h>
#include "Settings.h"
+#include "errorutils.h"
+
#ifndef NOOGRE
#include "IngameConsole.h"
#include "gui_manager.h"
@@ -1584,9 +1586,6 @@
ParamList pl;
String hwnd_str = Ogre::StringConverter::toString(hwnd);
pl.insert(OIS::ParamList::value_type("WINDOW", hwnd_str));
- //pl.insert(std::make_pair(std::string("w32_keyboard"),
std::string("DISCL_FOREGROUND") ));
- //pl.insert(std::make_pair(std::string("w32_keyboard"),
std::string("DISCL_NONEXCLUSIVE") ));
-
if(grabMode == GRAB_ALL)
{
} else if(grabMode == GRAB_DYNAMICALLY || grabMode == GRAB_NONE)
@@ -1596,8 +1595,14 @@
pl.insert(OIS::ParamList::value_type("XAutoRepeatOn",
"false"));
pl.insert(OIS::ParamList::value_type("x11_mouse_grab",
"false"));
pl.insert(OIS::ParamList::value_type("x11_keyboard_grab", "false"));
-#endif
+#else
+ pl.insert(OIS::ParamList::value_type("w32_mouse",
"DISCL_FOREGROUND"));
+ pl.insert(OIS::ParamList::value_type("w32_mouse",
"DISCL_NONEXCLUSIVE"));
+ pl.insert(OIS::ParamList::value_type("w32_keyboard",
"DISCL_FOREGROUND"));
+ pl.insert(OIS::ParamList::value_type("w32_keyboard",
"DISCL_NONEXCLUSIVE"));
}
+#endif // LINUX
+
#ifndef NOOGRE
LogManager::getSingleton().logMessage("*** OIS WINDOW:
"+hwnd_str);
#endif //NOOGRE
@@ -1624,8 +1629,14 @@
mKeyboard=0;
if(captureKbd)
{
- mKeyboard =
static_cast<Keyboard*>(mInputManager->createInputObject( OISKeyboard, true ));
- mKeyboard->setTextTranslation(OIS::Keyboard::Unicode);
+ try
+ {
+ mKeyboard =
static_cast<Keyboard*>(mInputManager->createInputObject( OISKeyboard, true ));
+
mKeyboard->setTextTranslation(OIS::Keyboard::Unicode);
+ } catch(OIS::Exception &ex)
+ {
+
LogManager::getSingleton().logMessage(String("Exception raised on keyboard
creation: ") + String(ex.eText));
+ }
}
@@ -1667,21 +1678,28 @@
if(capturemouse)
{
printf(">>> MOUSE ADDED\n");
- mMouse =
static_cast<Mouse*>(mInputManager->createInputObject( OISMouse, true ));
+ try
+ {
+ mMouse =
static_cast<Mouse*>(mInputManager->createInputObject( OISMouse, true ));
+ } catch(OIS::Exception &ex)
+ {
+
LogManager::getSingleton().logMessage(String("Exception raised on mouse
creation: ") + String(ex.eText));
+ }
}
//Set initial mouse clipping size
//windowResized(win);
// set Callbacks
- if(mKeyboard)
+ if(mKeyboard && mKeyboard)
mKeyboard->setEventCallback(this);
- if(capturemouse)
+ if(capturemouse && mMouse)
+ {
mMouse->setEventCallback(this);
- // init states (not required for keyboard)
- if(capturemouse)
+ // init states (not required for keyboard)
mouseState = mMouse->getMouseState();
+ }
if(free_joysticks)
{
for(int i=0;i<free_joysticks;i++)
Modified: trunk/source/main/RigsOfRods.cpp
===================================================================
--- trunk/source/main/RigsOfRods.cpp 2011-01-21 01:58:23 UTC (rev 1589)
+++ trunk/source/main/RigsOfRods.cpp 2011-01-22 00:07:00 UTC (rev 1590)
@@ -23,7 +23,6 @@
#include "errorutils.h"
#include <OgreHeaderPrefix.h>
-#include <OgreRTShaderSystem.h>
/** This class simply demonstrates basic usage of the CRTShader system.
It sub class the material manager listener class and when a target scheme
callback
@@ -72,7 +71,7 @@
RTShader::ShaderGenerator* mShaderGenerator;
// The shader generator instance.
};
-RigsOfRods::RigsOfRods(Ogre::String name, unsigned int hwnd) :
+RigsOfRods::RigsOfRods(Ogre::String name, unsigned int hwnd, unsigned int
mainhwnd) :
mRoot(0),
mCamera(0),
mSceneMgr(0),
@@ -80,6 +79,7 @@
mWindow(0),
ssm(0),
hwnd(hwnd),
+ mainhwnd(mainhwnd),
name(name)
{
useogreconfig=false;
@@ -357,7 +357,7 @@
LogManager::getSingleton().logMessage("Adding Frame Listener");
bool isEmbedded = (hwnd != 0);
- mFrameListener = new RoRFrameListener(mWindow, mCamera, mSceneMgr,
mRoot, isEmbedded);
+ mFrameListener = new RoRFrameListener(mWindow, mCamera, mSceneMgr,
mRoot, isEmbedded, mainhwnd);
mRoot->addFrameListener(mFrameListener);
LogManager::getSingleton().logMessage("Setup finished successfully");
@@ -370,7 +370,7 @@
return;
// Grab the shader generator pointer.
- Ogre::RTShader::ShaderGenerator *mShaderGenerator =
Ogre::RTShader::ShaderGenerator::getSingletonPtr();
+ mShaderGenerator = Ogre::RTShader::ShaderGenerator::getSingletonPtr();
// Set the scene manager.
mShaderGenerator->addSceneManager(mSceneMgr);
@@ -379,21 +379,10 @@
loadMainResource("rtshader");
// Set shader cache path.
- mShaderGenerator->setShaderCachePath(SETTINGS.getSetting("User
Path")+"cache");
+ mShaderGenerator->setShaderCachePath(SETTINGS.getSetting("Cache Path"));
ShaderGeneratorTechniqueResolverListener *mMaterialMgrListener = new
ShaderGeneratorTechniqueResolverListener(mShaderGenerator);
MaterialManager::getSingleton().addListener(mMaterialMgrListener);
-
- // add per pixel lighting
- /*
- RTShader::ShaderGenerator* shaderGenerator =
RTShader::ShaderGenerator::getSingletonPtr();
- RTShader::RenderState* renderState =
shaderGenerator->getRenderState(RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
- renderState->reset();
- RTShader::SubRenderState* perPixelLightModel =
shaderGenerator->createSubRenderState(RTShader::PerPixelLighting::Type);
- renderState->addTemplateSubRenderState(perPixelLightModel);
- // Invalidate the scheme in order to re-generate all shaders based
technique related to this scheme.
-
shaderGenerator->invalidateScheme(RTShader::ShaderGenerator::DEFAULT_SCHEME_NAME);
- */
}
void RigsOfRods::createScene(void)
Modified: trunk/source/main/RigsOfRods.h
===================================================================
--- trunk/source/main/RigsOfRods.h 2011-01-21 01:58:23 UTC (rev 1589)
+++ trunk/source/main/RigsOfRods.h 2011-01-22 00:07:00 UTC (rev 1590)
@@ -27,11 +27,13 @@
#ifndef RIGSOFRODS_H__
#define RIGSOFRODS_H__
-#include "Ogre.h"
-#include "OgreConfigFile.h"
+#include <Ogre.h>
+#include <OgreRTShaderSystem.h>
+#include <OgreConfigFile.h>
+#include <OgreConfigDialog.h>
+
#include "RoRFrameListener.h"
//#include "OgrePlatformManager.h"
-#include "OgreConfigDialog.h"
#ifdef HAS_EDITOR
#include "spincontrol.h"
#endif
@@ -54,7 +56,7 @@
class RigsOfRods
{
public:
- RigsOfRods(Ogre::String name = Ogre::String("RoR"), unsigned int
hwnd=0);
+ RigsOfRods(Ogre::String name = Ogre::String("RoR"), unsigned int
hwnd=0, unsigned int mainhwnd=0);
~RigsOfRods();
// creates Ogre Root
bool setup(void);
@@ -72,6 +74,8 @@
Root *getRoot() { return mRoot; };
RoRFrameListener *getRoRFrameListener() { return mFrameListener; };
+ Ogre::RTShader::ShaderGenerator *getShaderGenerator() { return
mShaderGenerator; };
+
protected:
Root *mRoot;
Camera* mCamera;
@@ -80,8 +84,9 @@
RenderWindow* mWindow;
SoundScriptManager* ssm;
Viewport* vp;
- unsigned int hwnd;
+ unsigned int hwnd, mainhwnd;
Ogre::String name;
+ Ogre::RTShader::ShaderGenerator *mShaderGenerator;
#ifdef HAS_EDITOR
SpinControlOverlayElementFactory* spinfact;
Modified: trunk/source/main/RoRFrameListener.cpp
===================================================================
--- trunk/source/main/RoRFrameListener.cpp 2011-01-21 01:58:23 UTC (rev
1589)
+++ trunk/source/main/RoRFrameListener.cpp 2011-01-22 00:07:00 UTC (rev
1590)
@@ -752,11 +752,12 @@
}
// Constructor takes a RenderWindow because it uses that to determine input
context
-RoRFrameListener::RoRFrameListener(RenderWindow* win, Camera* cam,
SceneManager* scm, Root* root, bool isEmbedded) :
+RoRFrameListener::RoRFrameListener(RenderWindow* win, Camera* cam,
SceneManager* scm, Root* root, bool isEmbedded, unsigned int inputhwnd) :
initialized(false),
mCollisionTools(0),
isEmbedded(isEmbedded),
- ow(0)
+ ow(0),
+ inputhwnd(inputhwnd)
{
for (int i=0; i<MAX_TRUCKS; i++) trucks[i]=0;
@@ -898,13 +899,20 @@
else if(SETTINGS.getSetting("Input Grab") == "None")
inputGrabMode = GRAB_NONE;
- // start input engine
- size_t hWnd = 0;
- win->getCustomAttribute("WINDOW", &hWnd);
+ if(!isEmbedded)
+ {
+ // start input engine
+ size_t hWnd = 0;
+ win->getCustomAttribute("WINDOW", &hWnd);
- if(!benchmarking && !isEmbedded)
- INPUTENGINE.setup(hWnd, true, true, inputGrabMode);
+ if(!benchmarking && !isEmbedded)
+ INPUTENGINE.setup(hWnd, true, true, inputGrabMode);
+ } else
+ {
+ INPUTENGINE.setup(inputhwnd, true, true, GRAB_NONE);
+ }
+
#ifdef USE_MYGUI
// init GUI
new GUIManager(root, scm, win);
@@ -1063,6 +1071,7 @@
camCollided=false;
camPosColl=Vector3::ZERO;
cameramode=0;
+ if(isEmbedded) cameramode=CAMERA_FREE;
road=0;
objcounter=0;
@@ -1276,8 +1285,11 @@
//}
//load preselected truck
- if(preselected_truck != "")
+ if(preselected_truck == "none")
{
+ // do not load truck
+ } else if(preselected_truck != "")
+ {
loading_state=TERRAIN_LOADED;
std::vector<String> *tconfig = 0;
if(!preselected_truckConfig.empty())
@@ -4173,6 +4185,12 @@
{
//no terrain or truck loaded
+ // in embedded mode we wont show that loading stuff
+ if(isEmbedded)
+ {
+ loading_state=ALL_LOADED;
+ LoadingWindow::get()->hide();
+ }
//uiloader->updateEvents(dt);
Modified: trunk/source/main/RoRFrameListener.h
===================================================================
--- trunk/source/main/RoRFrameListener.h 2011-01-21 01:58:23 UTC (rev
1589)
+++ trunk/source/main/RoRFrameListener.h 2011-01-22 00:07:00 UTC (rev
1590)
@@ -309,9 +309,10 @@
bool updateTruckMirrors(float dt);
void gridScreenshots(Ogre::RenderWindow* pRenderWindow, Ogre::Camera*
pCamera, const int& pGridSize, const Ogre::String& path, const Ogre::String&
pFileName, const Ogre::String& pFileExtention, const bool& pStitchGridImages);
void initDust();
+ unsigned int inputhwnd;
public:
// Constructor takes a RenderWindow because it uses that to determine
input context
- RoRFrameListener(RenderWindow* win, Camera* cam, SceneManager* scm,
Root* root, bool isEmbedded=false);
+ RoRFrameListener(RenderWindow* win, Camera* cam, SceneManager* scm,
Root* root, bool isEmbedded=false, unsigned int inputhwnd=0);
virtual ~RoRFrameListener();
void removeBeam(Beam *);
Modified: trunk/source/main/SelectorWindow.cpp
===================================================================
--- trunk/source/main/SelectorWindow.cpp 2011-01-21 01:58:23 UTC (rev
1589)
+++ trunk/source/main/SelectorWindow.cpp 2011-01-22 00:07:00 UTC (rev
1590)
@@ -29,7 +29,7 @@
#include "skinmanager.h"
#include "BeamData.h"
-SelectorWindow::SelectorWindow()
+SelectorWindow::SelectorWindow() : mSelectedTruck(0)
{
initialiseByAttributes(this);
Modified: trunk/source/main/main.cpp
===================================================================
--- trunk/source/main/main.cpp 2011-01-21 01:58:23 UTC (rev 1589)
+++ trunk/source/main/main.cpp 2011-01-22 00:07:00 UTC (rev 1590)
@@ -17,6 +17,8 @@
You should have received a copy of the GNU General Public License
along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
*/
+#ifndef ROR_EMBEDDED
+
#include "RigsOfRods.h"
#include "language.h"
#include "errorutils.h"
@@ -310,3 +312,5 @@
#ifdef __cplusplus
}
#endif
+
+#endif //ROR_EMBEDDED
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Special Offer-- Download ArcSight Logger for FREE (a $49 USD value)!
Finally, a world-class log management solution at an even better price-free!
Download using promo code Free_Logger_4_Dev2Dev. Offer expires
February 28th, so secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsight-sfd2d
_______________________________________________
Rigsofrods-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel