Mogre quick start projects

mstoyke

30-07-2010 22:41:22

Some people have problems using the latest Mogre version, so I decided to use one of my old projects to create a lightweight start project that can be used to quickly get something running. The Mogre 1.7.1 thread got an update with information where to find the repository.

My long term plans for this project is to add all the add-ons that users created and create simple to use modules to get them running in your project. I think that this will attract more people to Mogre and (hopefully) will reduce the problems that some users encountered so far.

Let me know what you think of this project and any suggestions which add-ons you would like to see added to this project are welcome.

My list so far for future development:
  1. MyGUI (a powerful GUI system, it even has its own graphical layout editor)[/*:m]
  2. PhysX (for physics simulation and collision detection)[/*:m]
  3. FreeSL (for sound and music playback and 3D sound support)[/*:m]
  4. MOIS (for user input, mouse, keyboard and gamepad)[/*:m]
  5. Particle Universe (you will need to buy a license from FXpression to use this)[/*:m]
  6. OgreVideo (to play videos, either fullscreen or as a texture)[/*:m][/list:u]

    If you like to help us to extend this project and/or work on some other add-ons that I have not listed yet, just send me a PM.

mstoyke

31-07-2010 03:41:44

Development of new features will always take place in feature branches that are all merged back into the main branch.

There are currently these branches in the repository:
  1. default - The main branch with all features merged in one big project.[/*:m]
  2. Simple - The basic quick start project without any of the advanced features.[/*:m]
  3. StateManager - The development branch for a simple application state manager.[/*:m][/list:u]

    If you only want the basic quick start framework, use the Simple branch as a basis for your project. On the other hand, using the default branch will always provide you with all the latest features of this project.

    All the other feature branches can be safely ignored and should only be used by experienced developers who know what they are doing :)

    The idea is to keep the code in the default branch as stable as possible, that's why I use feature branches to work on certain parts of the project first and only merge these changes into the main branch when they are properly tested.

    There is no proper exception handling implemented yet, so the project will be in beta status until further notice.

mstoyke

31-07-2010 03:57:04

I will explain the purpose of certain features here.

State manager:
Usually applications, especially games, have different main states. I will use a game for my examples, because that's what I'm most interested in.

The first state could be called Intro, this is where the developers logo is shown.
Next is the Menu state, this is where users can select, for example, to start a new game, load a saved game or quit the game.
The most complex state is the Game state, this state is active when the users is playing the game.

There might be many more states, some developers prefer to have a distinct state for every sub-menu, like Options, Credits and so on.

My simple state manager here needs an initial state, this is the first state the application will use when it is started. To prevent some nasty problems a state change is internally stored as a request and will be executed in the next frame, just before any game logic is updated. Otherwise you could change to another state while the previous state is still being processed which can problems when resources are disposed while they might still be needed.

Every state has it's own class, derived from a base class named State. To switch to another state the RequestStateChange function will take the type of the derived state class as parameter. An instance of this class will then be created when the actual state change is executed.

zarfius

03-08-2010 05:25:13

I think this is a great idea.

I've managed to pull together some of those systems for my projects so I understand the pain it can be to get up and running.

Pyritie

09-08-2010 19:24:26

Could definitely be useful - a friend (who's a lot better at C# than me) rigged my game up with ninject. It's... handy, if not a bit overkill.

But the state thing sounds interesting :0 Would it make stuff like level switching easier?

mstoyke

09-08-2010 19:59:54

But the state thing sounds interesting :0 Would it make stuff like level switching easier?

You could create a state for every level, so instead of a "game runnning" state there would be states like "level 1", "level 2", ... I usually prefer a more data driven design, but for a smaller game that would be overkill.

Another valid design is to use sub-states, you could just use another state manager inside the game state. the main state would be "game running" and the sub-states are "level 1", level 2", ... Maybe I will add sub-states as an example later, but there are more important tasks that I need to finish first.

Beauty

14-08-2010 23:59:10

I just want to tell you, that there is an older project which has the similar name Mogre Quick Start.
MogreQuickStart is a .NET class written in Visual Basic 2008. It's goal is to provide a quick entry point to easily write Mogre applications.
http://www.ogre3d.org/tikiwiki/MogreQuickStart

I never tried this project and I don't know details, but the idea is interesting - give newcomers a workaround. (Maybe like the MogreFramework?)
The content wasn't been updated for a while, but maybe it's useful to fresh it up (update DLLs, remove broken french comments, leave english comments). It's Visual Basic, but a code converter could make C# out of it.
For feedback with the author, you can use the projects forum thread.

mstoyke

15-08-2010 00:34:37

I just want to tell you, that there is an older project which has the similar name Mogre Quick Start.
MogreQuickStart is a .NET class written in Visual Basic 2008. It's goal is to provide a quick entry point to easily write Mogre applications.
http://www.ogre3d.org/tikiwiki/MogreQuickStart

I'm aware of the wiki page. In fact the scene loader that is also posted there did a great job for me in the past when I had to rapidly prototype something.

I never tried this project and I don't know details, but the idea is interesting - give newcomers a workaround. (Maybe like the MogreFramework?)
The content wasn't been updated for a while, but maybe it's useful to fresh it up (update DLLs, remove broken french comments, leave english comments). It's Visual Basic, but a code converter could make C# out of it.
For feedback with the author, you can use the projects forum thread.

It's good that there is some VB code out there for VB users to start with. I personally hate VB, but that is only my opinion and there are still many users who like it or did not learn any other languages yet. So keep the VB quick start project for them and I keep updating the C# quick start project.

My goals for my quick start project are a little bit different. I don't want to provide one big, monolithic block of code. The project will be extended in a very modular way and, in long terms, will support everything that might be useful for people out there.

Every new module will be developed in its own branch and the main branch will contain a combination of modules that I think will work together best. But people will be able to combine the feature set they prefer by just merging the branches that they need. So even if I decide to merge PhysX in the main branch, because I like it most, others will still be able to use Newton instead.

Beauty

15-08-2010 01:27:56

When I looked to you Quick Start files, I just saw a collection of binaries (as I remember). Because of this I wrote about the page which also includes code.
I didn't know that there is a scene file loader inside. Which format does it support? Maybe I can extract it and put it to its own page (VB and C#) - at least if there is no other wiki page for loading this file type.

mstoyke

15-08-2010 01:45:35

I didn't know that there is a scene file loader inside. Which format does it support? Maybe I can extract it and put it to its own page (VB and C#) - at least if there is no other wiki page for loading this file type.
It is a loader for the dotscene format. With some small changed I could use it to import files that are created by the OgreMax exporter.

The most important thing to know about the parser is, the application culture in .NET affects number formats. Because I used a german version of Windows and the number format uses "," as a decimal point it got confused by the US number format which uses "." as decimal point.

When you try to parse "1.00" with a german culture set in the system, it will interpret it as "100". That creates some nasty effects for positions, but especially for color values. I usually first change the application culture to neutral in most of my programs, that prevents a lot of hard to find bugs later.

Beauty

15-08-2010 15:22:11

On this page I only read something about OSM loader. The comment says it's related to Object Fusion. What is Object Fusion? On a web search I only found a web page editor with a similar name.
The loader code is a copy of the MOGRE OSMSceneLoader 2.
If this is a dotScene loader, I would add a note.

For Mogre there is also a loader available on wiki page MOGRE dotSceneLoader.




Related to the decimal seperator: For string parsing of the Convert class I always add the english culture as argument to avoid such problems. This should work on each culture setting of an application. Good would be to add this parameter to all public source code, where this problems could happen.

For example
Single myValue = Convert.ToSingle(text, EnglishCulture());

EnglishCulture() is a static method which I created for more easy handling.
It's shorter than calling new System.Globalization.CultureInfo("en-US") as argument.

Here is my definition of EnglishCulture, which I can call from each file of my project.
public static System.Globalization.CultureInfo EnglishCulture()
{
return new System.Globalization.CultureInfo("en-US"); // "." as decimal char
}

koirat

15-08-2010 15:30:20

Instead of using CultureInfo("en-US").
You can use CultureInfo.InvariantCulture.

mstoyke

17-08-2010 10:21:31

On this page I only read something about OSM loader. The comment says it's related to Object Fusion. What is Object Fusion? On a web search I only found a web page editor with a similar name.
The loader code is a copy of the MOGRE OSMSceneLoader 2.
If this is a dotScene loader, I would add a note.


Sorry I got it wrong. The code on the quick start wiki page is indeed for oFusion exported scenes, not for the dotscene format.

Valek

22-11-2010 19:10:46

Are there still any plans to put support into this for MyGUI? I noticed the last addition to this was 3 months ago, and the addition of a MyGUI quickstart with Mogre would be extremely useful to me.

mstoyke

23-11-2010 10:52:49

As I mentioned before, any projects besides the Mogre core development project will get support depending on the amount of feedback I get. So if nobody ever sends feedback about quickstart, I assume that nobody is interested in the project anymore. I will extend this project eventually, MyGUI and MOIS are two issues on my related to-do list, but it won't be too soon.

KingKnecht

25-11-2010 22:03:35

Hi,
I've tried your quick start package and must say it helped me a lot to get started.
But now I have some question about the game state idea/pattern:

1. How should key events be handled and how can key events change the state of the state manager?
I have implemented a FrameListener in OgreManager using MOIS (like in a tutorial I found somewhere). I changed following line in your program.cs to kill the program when special key was pressed (detected in OgreManager):

// run engine main loop until the window is closed
while (!mEngine.Window.IsClosed && mEngine.isShutDown == false)
{
...
...
So far so good. But I think this is not how it should be with the game state pattern. I think I should switch to a state called "Shutdown", "ShowMenu" or what ever and do my actions there. But I can't see how I can switch the states from OgreManager (where my key events are handled) nor can I see how I can move key handling out of OgreManager.

Do you see my problem?
Maybe how have some simple code files (no need to be compileable!) just to see where to locate the key event handler stuff and how to switch states.

Thanks a lot,

KingKnecht

ianhfar

26-11-2010 09:51:59

Hi KingKnecht

This is how I have done it, I didn't opt for the Framelistener, but stuck with the same methodology as the quick start. Perhaps mstoyke can add or trash :o

I have added a zip file with changes


I hope this helps

My changes to Program.cs

inside Main()

// create input manager
mInputMgr = new InputManager(mEngine);

while (!mEngine.Window.IsClosed)
{
//Get any input
mInputMgr.Update();

if (mInputMgr.LeftKeyPressed() == true)
{
mStateMgr.RequestStateChange(typeof(TurningHead));
}
if (mInputMgr.RightKeyPressed() == true)
{
mStateMgr.RequestStateChange(typeof(ScrollingHead));
}
// update the objects in the scene
prg.UpdateScene();

// update Ogre and render the current frame
mEngine.Update();
}



My input manager

using System;
using System.Collections.Generic;
using System.Text;

using Mogre;


namespace Quickstart2008.Modules
{
public class InputManager
{
OgreManager _engine;

//Input definitions
MOIS.InputManager _input;
MOIS.Keyboard _keyBoard;
MOIS.Mouse _mouse;
MOIS.JoyStick _joystick;
MOIS.ForceFeedback _FF;
MOIS.ForceFeedback.Const_SupportedEffectList _supportedEffectList;

/* Force feedback stuff

public enum EDirection
{
NorthWest = 0,
North = 1,
NorthEast = 2,
East = 3,
SouthEast = 4,
South = 5,
SouthWest = 6,
West = 7,
}

public enum EForce
{
UnknownForce = 0,
ConstantForce = 1,
RampForce = 2,
PeriodicForce = 3,
ConditionalForce = 4,
CustomForce = 5,
}

public enum EType
{
Unknown = 0,
Constant = 1,
Ramp = 2,
Square = 3,
Triangle = 4,
Sine = 5,
SawToothUp = 6,
SawToothDown = 7,
Friction = 8,
Damper = 9,
Inertia = 10,
Spring = 11,
Custom = 12,
}
*/


bool _hasJoystick;



public InputManager(OgreManager manager)
{
_engine = manager;

}

/************************************************************************/
/* start up */
/************************************************************************/
public bool Startup()
{

MOIS.ParamList pl = new MOIS.ParamList();
IntPtr windowHnd;
_engine.Window.GetCustomAttribute("WINDOW", out windowHnd);
pl.Insert("WINDOW", windowHnd.ToString());
_input = MOIS.InputManager.CreateInputSystem(pl);

_keyBoard = (MOIS.Keyboard)_input.CreateInputObject(MOIS.Type.OISKeyboard, true);

_mouse = (MOIS.Mouse)_input.CreateInputObject(MOIS.Type.OISMouse, true);


try
{
_joystick = (MOIS.JoyStick)_input.CreateInputObject(MOIS.Type.OISJoyStick, true);
_hasJoystick = true;
try
{
_FF = (MOIS.ForceFeedback)_joystick.QueryInterface(MOIS.Interface.IType.ForceFeedback);
_supportedEffectList = _FF.GetSupportedEffects();

}
catch
{
//Console.WriteLine("No ForceFeedback");
}
}
catch
{
//Console.WriteLine("No Joystick");
}

_keyBoard.KeyPressed += new MOIS.KeyListener.KeyPressedHandler(_keyBoard_KeyPressed);
//_keyBoard.KeyReleased += new MOIS.KeyListener.KeyReleasedHandler(_keyBoard_KeyReleased);

//_mouse.MouseMoved += new MOIS.MouseListener.MouseMovedHandler(_mouse_MouseMoved);
//_mouse.MousePressed += new MOIS.MouseListener.MousePressedHandler(_mouse_MousePressed);
//_mouse.MouseReleased += new MOIS.MouseListener.MouseReleasedHandler(_mouse_MouseReleased);

/*

if (mInputManager.GetNumberOfDevices(MOIS.Type.OISJoyStick) > 0)
{
mJoystick.ButtonPressed += new MOIS.JoyStickListener.ButtonPressedHandler(mJoystick_ButtonPressed);
mJoystick.ButtonReleased += new MOIS.JoyStickListener.ButtonReleasedHandler(mJoystick_ButtonReleased);
mJoystick.AxisMoved += new MOIS.JoyStickListener.AxisMovedHandler(mJoystick_AxisMoved);
}
*/

return true;
}

bool _mouse_MouseReleased(MOIS.MouseEvent arg, MOIS.MouseButtonID id)
{
throw new NotImplementedException();

}

bool _mouse_MousePressed(MOIS.MouseEvent arg, MOIS.MouseButtonID id)
{
throw new NotImplementedException();

}

bool _mouse_MouseMoved(MOIS.MouseEvent arg)
{
throw new NotImplementedException();
}

bool _keyBoard_KeyReleased(MOIS.KeyEvent arg)
{
throw new NotImplementedException();

}

bool _keyBoard_KeyPressed(MOIS.KeyEvent arg)
{

if (arg.key == MOIS.KeyCode.KC_ESCAPE)
{

_engine.Window.Destroy();
}
return false;
}

public bool UpKeyPressed()
{
return _keyBoard.IsKeyDown(MOIS.KeyCode.KC_UP);
}
public bool DownKeyPressed()
{
return _keyBoard.IsKeyDown(MOIS.KeyCode.KC_DOWN);
}

public bool RightKeyPressed()
{
return _keyBoard.IsKeyDown(MOIS.KeyCode.KC_RIGHT);
}

public bool LeftKeyPressed()
{
return _keyBoard.IsKeyDown(MOIS.KeyCode.KC_LEFT);
}

public bool PeriodKeyPressed()
{
return _keyBoard.IsKeyDown(MOIS.KeyCode.KC_PERIOD);
}

public bool CommaKeyPressed()
{
return _keyBoard.IsKeyDown(MOIS.KeyCode.KC_COMMA);
}

public bool TabKeyPressed()
{
return _keyBoard.IsKeyDown(MOIS.KeyCode.KC_TAB);
}



//bool mJoystick_AxisMoved(MOIS.JoyStickEvent arg, int axis)
//{
// //Console.WriteLine("JoyAxis:" + axis);
// //Console.WriteLine("Joyrange:" + mJoystick.JoyStickState.GetAxis(axis).abs.ToString());

// /*Joystick axis
// *Axis 0 - Left Stick Y Axis
// * - Positive = Down
// * -range 0 to 32767
// * - Negative = Up
// * -range 0 to -32768
// *Axis 1 - Left Stick X Axis
// * - Positive = Right
// * -range 0 to 32767
// * - Negative = Left
// * -range 0 to -32768
// *Axis 2 - Right Stick Y Axis
// * - Positive = Down
// * -range 0 to 32767
// * - Negative = Up
// * -range 0 to -32768
// *Axis 3 - Right Stick X Axis
// * - Positive = Right
// * -range 0 to 32767
// * - Negative = Left
// * -range 0 to -32768
// * Axis 4 - Trigger
// * - Positive = Left Trigger
// * -range 0 to 32640
// * - Negative = Right Trigger
// * -range 0 to -32640
// */


// if (mJoystick.JoyStickState.GetAxis(axis).abs > 520 || mJoystick.JoyStickState.GetAxis(axis).abs < -820)
// {
// switch (axis)
// {
// case 0:
// //Back/forward movement
// Program.Instance.p1.fFB = (float)mJoystick.JoyStickState.GetAxis(axis).abs / MOIS.JoyStick.MAX_AXIS;
// break;
// case 1:
// //left/right Strafe
// //Program.Instance.p1.fLR = (float)mJoystick.JoyStickState.GetAxis(axis).abs / MOIS.JoyStick.MAX_AXIS;
// break;
// case 2:
// //up down look
// Program.Instance.p1.fMv = (float)mJoystick.JoyStickState.GetAxis(axis).abs / MOIS.JoyStick.MAX_AXIS;
// break;
// case 3:
// //Left/right Turn
// Program.Instance.p1.fMh = (float)mJoystick.JoyStickState.GetAxis(axis).abs / MOIS.JoyStick.MAX_AXIS;
// break;
// case 4:
// if (mJoystick.JoyStickState.GetAxis(axis).abs < 0 && !Program.Instance.p1.isSpraying)
// {
// Program.Instance.p1.isSpraying = true;
// }

// break;
// }
// }
// else
// {
// switch (axis)
// {
// case 0:
// //Back/forward movement
// Program.Instance.p1.fFB = 0;
// break;
// case 1:
// //left/right Strafe
// Program.Instance.p1.fLR = 0;
// break;
// case 2:
// //up down look
// Program.Instance.p1.fMv = 0;
// break;
// case 3:
// //Left/right Turn
// Program.Instance.p1.fMh = 0;
// break;
// case 4:
// Program.Instance.p1.isSpraying = false;
// break;
// }

// }


// return true;
//}


public bool HasJoystick
{
get { return _hasJoystick; }
set { _hasJoystick = value; }
}

public void Update()
{
_keyBoard.Capture();
_mouse.Capture();

if (_input.GetNumberOfDevices(MOIS.Type.OISJoyStick) > 0)
{
_joystick.Capture();
}
}

public void Shutdown()
{
_keyBoard.Dispose();
_mouse.Dispose();
if (_input.GetNumberOfDevices(MOIS.Type.OISJoyStick) > 0)
{
_joystick.Dispose();
}
}
}
}


[attachment=0]Quickstart2008Files.zip[/attachment][attachment=0]Quickstart2008Files.zip[/attachment]

KingKnecht

26-11-2010 20:21:33

Hi ianhfar,

the code exactly adressed my problem!
Thanks!

KingKnecht

BobbyFischer

09-03-2011 12:47:25

This quickstart project is a great idea, thanks!
Is there any extra documentation for it? I'm getting along well enough just by studying the code, but any extra info would be helpful.

I have been trying to get a moving camera added. So far my understanding is:

Add static Framelistener creation method (mRoot.FrameRenderingQueued +=.... etc) to OgreManager.cs, create it in OgreManager.Startup()
Write an InputManager class (which uses MOIS), create it in OgreManager
Write a CameraMan class (which will control the camera created in OgreManager), create it in OgreManager

in OgreManager.Update():
Update InputManager (i.e. capture keyboard/mouse input)
Process input and update Cameraman as needed.

Is this the optimal way of doing things?

What if instead of a camera I wanted to change the position of a unit, would I have to create an entityManager class to be used by the appropriate state.Update method?

Beauty

09-03-2011 21:53:03

It's nice to see that you make first experiments with Mogre.
Also we like to see that somebody is interested in using the quick start projects.
I can't help you with that, because I never looked to its details.

Aside of the quick start projects - did you read the Mogre Basic Tutorials?
This is very useful for learning how Mogre works in general.

BobbyFischer

10-03-2011 09:00:59

Yes, I went through the basic tutorials. The thing is though, those tutorials do pretty much everything inside the main loop (it's all a single .cs file after all). Even the mogre tutorial framework is rather simple compared to the quickstart project. So my main issue is how to build on the quickstart, which is relatively complicated with it's use of managers. I could hack together a solution one way or another, but the end result would be much more maintainable and flexible if I followed on mstoyke's footsteps so to speak.

Anyway, thanks for the reply. :wink:

McDonte

16-03-2011 19:09:32

Regarding the previous post: would it be possible to combine the quick start projects with the tutorial framework?

I agree with BobbyFischer that the tutorials are not made for a real game, the quick start project have a much better approach with GameStates. But I don't want amirabiri to write again a framework for the tutorials :D
Maybe we could add the important components from the quick start projects somwhow...

BobbyFischer

17-03-2011 08:35:52

The only thing that the tutorial framework has that the quickstart project doesn't is a moving camera and input. If that were added to the quickstart, with the addition of each tutorial as a state, or just have a single "tutorial" state which would load the specific tutorial resources from an xml file, then that would be closer to a proper game engine.

McDonte

17-03-2011 12:21:14

Actually I liked the feature of the Tutorial Framework with its virtual methods that can be overrridden.

A point I never understood at the quick start projects were the fact that mstyoke changed the resources files. I like them how they are initially :D

Beauty

17-03-2011 13:25:36

the tutorials are not made for a real game
The tutorials are just for starting with Mogre. They teach how Ogre (Mogre) works ingeneral.
For a real game you need more functionality, but first step is to learn basics. That's the aim on the Basic Tutorials.

McDonte

17-03-2011 15:13:13

t's the aim on the Basic Tutorials.
Yes, I know, but I think to base the tutorials on a framework that is ready to be used in a real game would be good. If it is possible to combine the easiness of the Tutorial Framework and the high level structure of the quickstart projects this will be a good start for beginners. The complexity of Ogre/Mogre is hidden away from the user anyways and if somebody wants to do his own game he can adapt the source code.

I think the clear advantage would be that we have one project for the tutorial that is also useful for quickstart projects.

wiso

26-04-2011 11:56:39

Hello All,

Testing out the Mogre Quickstart Project. I am on Windows 7 x64 and wanted to use Visual C# Express 2010. I have both VC# Express 2008 and 2010 installed. The Quickstart 2008 version builds without any modifications or issues. I unzip, open up in VC#2008, and build and/or Debug and I get the rotating Ogre head.

With VC# 2010, the same process does not work, I get the following exception:

System.IO.FileNotFoundException was unhandled
Message: Could not load file or assembly 'Mogre, Version=1.7.1.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.


I have verified that the file structure is similar to the 2008 version. I have also tried to reference Mogre.dll from another location (from the SDK), with similar results. I can imagine this is a very dumb mistake I am overlooking, but I would appreciate if someone could point it out for me. I would like to use VC# 2010, so getting past this basic hurdle would be great.

EDIT: Using the build option I do get an exe, and the rotating head, but this issue is coming up while debugging.

Thanks

XainFaith

09-08-2011 18:17:53

I had the same issue what i did was change the target frame work to .Net 3.5 and i have not had an issue since then.

dumpbyte

19-09-2011 19:37:11

It's true. I had similar problems when I tried to use Mogre binaries with VS2010, NET 4.0.

The solution for me was: recompile Mogre in VS2010 Mogro and under. NET version 4.0. These binaries worked without problems.

Recompiling is very easy if you follow these steps: http://www.ogre3d.org/tikiwiki/Building+MOGRE+from+source

Regards

Beauty

19-09-2011 20:16:14

Other people had much trouble to compile Mogre.
So on yesterday we created the new forum topic Understanding the Mogre build process.
And today user McDonte wrote the wiki page Building Mogre 1.7 Step By Step.
You are very welcome to add further information. 8)

mstoyke

22-05-2012 22:50:09

Hello everyone,

I decided that some code that I created for one of my projects might be a nice update for the quickstart project. So I just cleaned up the code and pushed it into a separate branch. There are some major changes in the file layout and, unfortunately, I had to drop VS2008 support in this new branch, because I've switched to VS2010 completely and do not even have VS2008 installed anymore. The code should still work with VS2008, but all the binaries in the repository will not be compatible with it. Feel free to port the update to VS2008 if you still need to use it for some reason :)

The file layout is now much better suited for a game project, if you don't like the new layout you should keep using the quickstart project from the default branch. The new branch is called "ImprovedVersion". I have added MOIS to the project, added a complete input manager class for it (mouse and keyboard only at the moment) and also made it possible to quit the application by pressing escape. I know that some users have posted code for that on this thread before, but I only realized it right now after I already added my changes and pushed the new branch.

I won't be able to start working on the wrapper again for some time, because real life still keeps me quite busy. But I started using Mogre again and whenever I add some useful code to my hobby project, I will try to extend the quickstart project with more features. There are some topics I may be able to share my experiences with, for example using Blender to create models for Ogre. Let me know what you think about the changes I made to the project and I will try to post more useful stuff in the future. And don't hesitate to tell me "it's crap" if you don't like the changes, any kind of feedback is appreciated :)

By the way, I used the MogreBuilder to create the new binaries and I have to say it's a great project. It was really easy to get Mogre and Ogre compiled with it and I enjoyed the fact that all I had to do is to wait for the compiler to finish its work. Kudos to everyone who worked on the tool.

zarfius

23-05-2012 05:11:05

But I started using Mogre again and whenever I add some useful code to my hobby project, I will try to extend the quickstart project with more features. There are some topics I may be able to share my experiences with, for example using Blender to create models for Ogre.
Do you have a blog or something? It'd be interesting to read about your hobby project and experiences (such as creating models with blender or whatever else you use).

mstoyke

23-05-2012 13:44:42

Do you have a blog or something? It'd be interesting to read about your hobby project and experiences (such as creating models with blender or whatever else you use).
I did not write anything so far about my hobby project. But you can follow me either on twitter, my blog or even sometimes watch a live stream of me working on stuff.

I plan to write about the hobby project on my blog eventually, but for now I want to keep the details of the project a bit secret. but I can talk about my experience with using blender or how and why I decided to use Mogre again. Good idea for another blog post, it's about time to post something again or people will think the blog is dead.

zarfius

24-05-2012 00:53:42

I plan to write about the hobby project on my blog eventually, but for now I want to keep the details of the project a bit secret. but I can talk about my experience with using blender or how and why I decided to use Mogre again. Good idea for another blog post, it's about time to post something again or people will think the blog is dead.
Very cool. I have added your blog to my google reader rss feed. Looking forward to reading more :)