Skip to main content

History: Coding and Design philosophy

Source of version: 7 (current)

Copy to clipboard
            {maketoc}

- A __quick__ guide to some design issues. What to use when. Please contribute!

!!!Class inheritence
* [http://www.users.on.net/~edan/misc/ogre_classviz_nodeps.gif] Here's a diagram showing inheritance. Might make some things clearer.
* Although Ogre is a SceneGraph, it's not a strict one. Light, Camera and few things aren't inherited from node. They don't need to be attached to a scenenode (although they can be). This is for convenience and speed.

!!!Custom objects
- Use __Movable Object Factories__ when creating reusable custom objects. eg Particle systems, water meshes (eg current water demo would be nice to rewrite as a movable)
* this allows easy creation and management in Ogre
* easy to modularise and reuse
* please wiki any nice custom objects! :)

!!!Scene managers
- Write a custom scene manager when you require unique scene management.
* eg existing BSP, Octree culling managers
* custom SM's are rarely needed. Octree is a good default for alot of cases.
* multiple scenemanagers can't be run in the same scene (eg terrain and bsp)

!!!Scene definition
- Or level/scene design
* common solution is the [dotScene] xml format (search wiki)
* most modellers can export whole scenes to this format, while also exporting the actual meshes
* example dotScene implementations are in 'ogreAddons' in CVS

!!!Main loop/Initialisation
* You don't need to use FrameListeners for updating every frame. You can call the render loop manually from a 'normal' while loop if you like.
* You don't need to use ExampleApplication like all the demos use. This either helps or hinders new people. See these examples for alternatives and a clear understanding of what ogre needs to initialise.
((MinimalApplication|Nice clean example. Uses Framelisteners for render updates))
[http://www.ogre3d.org/phpBB2/viewtopic.php?t=12999&highlight=exampleapp|'Hello World' example]
((Newbie Tutorial 2|Manual render loop example - windows only))
[http://code.adaptableit.com/code/solar/|Replacement ExampleApp to inherit new apps from]
[http://www.yake.org|A complete framework tying alot of libraries together]

---
Alias: (alias(Coding&Design philosophy))