Added two new scripts to allow logging to a txt file as well as outputing to the console. They are called setup-logged and both create a setup-output.txt

The original setup files are still there to prevent conflicts with other branches that modify them, but could be changed so this setup files are the default ones.
Basic AI implementation.

AI now working (still on player)
- Will seek out emitters emitting oxygen or glucose if it's missing it.
- Will wander randomly while sated

Now spawning additional AI controlled microbes
- Microbe class interface changed to match required entity-like interface for despawning

Program will eventually crash due to Z being set to non-zero for undetermined reasons.

Non-proper fix of non-zero z value crashes.

AI microbes with different colors
Bad fix for Z-desync

Fixed that all AI was spawned @ 0,0.
Cleaned up debugging code.

Made proper random choice of emitters for AI.
Previous fix for randomized spawning position did not work, unable to find a fix.

Fixed random positioned spawning

Added proper destruction of MicrobeAISystem.
Reverted some bad design choices regarding microbe interface.
Fixed saving and loading of AIComponents

Renamed MicrobeAIComponent to MicrobeAIControllerComponent

Fixed a bug with storage method not returning anything

Update build server URL

Added functionality for ejecting excess compounds from microbes.
Involves a refactoring of emitter components

Exposed AgentComponent to lua

Added exposed AgentComponent to script_bindings.cpp

Add explicit "this->" in SystemWrapper

Just to get it in line with the styleguide.

Catch luabind::error and print a more helpful error message

Added functionality for ejecting excess compounds in Microbe:storeAgent.
Set a lower capacity on energy in player microbe to display the effect.

Moved all compound emission code to AgentEmitterComponent and replaced existing code with calls to emitAgent(...)

Changed emitAgent parameters to include agentId and amount.
Discovered a bug relating to particle lifetime for custom emitter.

Added TimedAgentEmitterComponent for automatic emission of agents instead of that being default

Add Collision system for handling custom events upon collisions.

squashed commits:
Implementation of custom collision events. Some questionable design choices within. (Untested)

Updated collision system to new structure. Now uses CollisionHandlerComponent and CollisionSystem. Manifolds used instead of global callback.

Fixed previous compile error - a new one has taken it's place (uintptr_tr not defined)

Basic working state achieved. m_collisionCallbackKey assignment from lua does not seem to take effect.

Also storage and load still needs implementing, and agentabsorber system needs refactoring.

Storage and load implemented.
AgentAbsorber system & component refactored to use this system.
Acceptance tests performed

Collision filters added, not fully functional

Collision functionality nearly updated.
Needs cleanup, testing and integration with agentabsorber.

Working CollisionFilter class.

Attempt at exposing CollisionFilter to lua. Not successful.

Fixes to improve usage of CollisionFilter. Now uses Collision struct instead of typedef to pair of entityIds.
Better model for exposure to lua (still doesn't quite work).
Cleaned up documentation and header includes.

Fixed minor compile error

Collision system finalized.
- Added a member to Collision to represent the duration of collision represented since last clearCollisions().
  This member will allow more fine grained control of collision handling (damage every 0.5 second, etc).
- Cleaned up documentation and debugging code.

Renamed CollisionHandlerComponent to CollisionComponent.
Added removeCollisionGroup to CollisionComponent.
Added constructor taking a collision group to CollisionComponent

Refactoring of CollisionSystem. Stopped using mutable keyword in collision class and instead uses unordered map.
Added a vector<collision*> mirroring the contents of the unordered_map to allow iteration in lua.

Changed to using boost::map_values for iteration.

Rebased onto master.
Fixed setup.lua
Various relevant fixes.
Code is currently not functioning due to strange bug.

Implementation of custom collision events. Some questionable design choices within. (Untested)

Updated collision system to new structure. Now uses CollisionHandlerComponent and CollisionSystem. Manifolds used instead of global callback.

Fixed previous compile error - a new one has taken it's place (uintptr_tr not defined)

Basic working state achieved. m_collisionCallbackKey assignment from lua does not seem to take effect.

Also storage and load still needs implementing, and agentabsorber system needs refactoring.

Fix typo in Lua script

The previous version crashed because the game state passed to
CollisionFilter's constructor was nil in Lua and consequently
nullptr in C++.

Simplify GameState::findSystem

throw an exception if a reference type is cast, not for pointer
types.

Refactor signature handling of CollisionFilter

Returning a pair of references is a little tricky because it's
not obvious how the std::pair template will handle it. Returning
a reference to a pair, however, is more predictable.

Use static initializers when possible

Minor refactoring

* Use typedefs (i.e. CollisionFilter::Signature) instead of repeating
the type
* Use emplace when possible, it's more readable than constructing
  the collection item manually
* Rename permutation -> combination

Do not register collision filter in Implementation constructor

At that point, the m_impl field of the CollisionFilter is not
initialized yet (because the Implementation object is not
fully constructed). The CollisionSystem asks the filter for
its signature, which is saved in the m_impl object. Since this
doesn't point to anything useful yet, it crashes.

Added CollisionFilter.init and CollisionFilter.shutdown to allow users to create their CollisionFilters in constructors.
Removed debugging code.

Minor refactorings for CollisionFilter and CollisionSystem

Removed typedefs in collision_filter.cpp.

Removed minor error in rebasing

Add ProcessOrganelle for converting compounds
Closes #41

squashed commits:
Add ProcessOrganelle for converting compounds

Closes #41

Add ProcessOrganelle

Fixed syntax in process_organelle.lua and added hasInputAgent method to ProcessOrganelle class

Added ProcessOrganelle support into Microbe class, and added process_organelle.lua to manifest

Added code to setup.lua to test ProcessOrganelle (currently not working)
Minor fixes to ProcessOrganelle related code in process_organelle.lua and microbe.lua

Minor formatting and reintroduced function missing in process_organelle.lua

Fix some minor errors in the ProcessOrganelle script

* Use table.insert instead of a[#a+1] to not repeat the table name
* Call superclass' constructor in ProcessOrganelle.__init
* Explicitly pass self to Organelle.update in ProcessOrganelle.update
* Lua has no -= (or += for that matter)
* Typos

Fixed error in loading a savegame with ProcessOrganelle.

Removed debugging code in microbe.lua

Created cooldown system for Process organelles, limiting the frequency of agent absorbtion and production

Fixed missing local specifier on two variables in process_organelle.lua

Implemeneted colours for process organelles to reflect how filled it is. Also minor bugfixes

Move "local" to where it belongs

Made distribution of agents, dependant on time elapsed instead of frames. (1 agent per agent type distributed per 100ms)

Release candidate 1 Done.

- Fixed compile error
- Removed debugging code
- Changed setup of compounds/agents to reflect mitochondrion

Added additional documentation for processing compounds.
Minor refactoring to compound distribution for more accuracy.

Replaced magic value with proper constant

Re-changed emitters to use new oxygen, glucose, atp, co2 system.
Cleanup of old variable and comment names in setup.lua

Add missing <iostream> include

A fresh Ubuntu 12.04 installation complains about not knowing
std::cerr in scripting/luabind.h when compiling with the mingw
environment. A simple additional include fixes it.

Fixed minor bug and minor adjustment of emission values.
Removed debugging code.

Added meshnames to agent registry, and removed it from every EmitterComponent

Added movement at random ejecting angle

Readded constant size for compounds

Bug fix preventing AI microbes from moving
Merge pull request #81 from Revolutionary-Games/68_microbe_ai_v2

Basic AI implementation
Updated SVN IP in Cmake script.
Merge branch 'master' of https://github.com/Revolutionary-Games/Thrive
Added new compounds models for oxytoxy, glucose, atp and co2

Updated setup script to use new compound models.

Added scaling of compound meshes to AgentRegistry class and correctly scaled new compound models.
Merge pull request #97 from Revolutionary-Games/93_new_compound_models

Merged new compound models.
Prevented energydrain from impossible movement (ex: no backward organelle)
Update README.md
Merge pull request #105 from tVoss/patch-1

Update README.md website link.
Fixed readme link to mingw setup readme

Fixed spaces in faulty link

Missing spaces added.

Swapped link name and link reference.
Merge pull request #107 from Revolutionary-Games/106-readme-mingwlink

Fixed readme link to mingw setup readme
Added sound to Thrive

Fix getScriptDirectory utility function

Use the calling script as a reference, not the file where
getScriptDirectory resides.

Linux install script for ogg library

Linux install script for Vorbis library

Add OgreOggSound sources to contrib

Due to some necessary changes to OgreOggSound's CMakeLists.txt,
it's easier to add its sources to contrib than to install it
into the build environment.

Custom CMakeLists.txt for OgreOggSound

Ignore OgreOggSound generated documentation in git

Add Find modules for sound libraries

Add OgreOggSound to compiled contribs

Move plugins into bin

OgreOggSound needs to be loaded as a plugin. But it also needs
to be linked to the executable, so the DLL must reside in the
usual Windows DLL search path. Which is the executables
directory. Therefore, all plugins need to move where the
exeutable is so everyone's happy.

Add SoundSourceSystem

Fix FindOpenAL

The previous version was a mess. The new version is pretty much
copied & pasted from FindVorbis.

Disable OpenAL EFX

OgreOggSound requires the efx-util.h header when EFX is enabled.
I can't find this header in any recent version of the OpenAL
library, so let's disable it for now.

Copy sound files over

Setup sound manager in engine

Make SoundSourceSystem::init take a GameState instead of an Engine

Add SoundSourceSystem::activate and deactivate

Add Lua bindings for SoundSourceSystem

Add test code for sound

Adapt sound branch to binary assets changes

Sound sources can now play multiple sounds

Remove debug statement

Sound should now work on windows as well as linux.
- Included changes from gui library branch of downloading cmake instead of relying on user installation. This will need a bit of consideration when merging those two branches.
- I saw myself forced to change ogreoggsoundmanager.cpp of the ogreogg sound library (license does permit this) due to apparently non-sensical code specific for windows. This may need future review.

- Fixed 3D sound
- Added attachObject functionality to OgreSceneNodeComponent (mirroring underlying scenenode functionality)

partial work on ambient sound

Fixed sound state failing to update after save/load.

Fixed missing unpacking of .tar.gz in install scripts for ogg and vorbis.
Re-enabled unpacking of compressed downlodads in openAL install script

Removed unnecesary debug messages in cmake scripts.

Added installation procedure to add OpenAL32.dll to windows distributions.

Added missing paranthesis

giving up on clean implementation of ambient sounds.
Current version will play the correct sound about 60% of the time and will just silently fail the other 40% with no sign of anything being wrong.

Ambient sounds now has a clean design.
Merge pull request #86 from Revolutionary-Games/35_sound

Sound.
Removed 3D sound demonstration.
Updated OgreOggSound which fixes the forced source code edit of last version. It was apparently a bug. http://www.ogre3d.org/addonforums/viewtopic.php?f=19&t=30189&p=102558#p102558
Added BOOST_DIR variable to toolchain
Removed mingw setup output from git
Re-added the modified CMakeLists.txt for ogreoggsound that had been accidently replaced with the update to ogreoggsound.
Added entity_filter.cpp to cmakelist
Removed entity_filter from cmakelist again as it should not be attempted compiled.
Fixed issues for sound system, ai system and spawning system that caused crashed when saving and/or loading game.