[Orxonox-commit 6411] r11068 - in code/branches/cpp11_v3: . src src/libraries/core src/libraries/core/command src/libraries/core/config src/libraries/network src/libraries/network/packet src/libraries/network/synchronisable src/libraries/util src/modules/gametypes src/modules/jump src/modules/mini4dgame src/modules/notifications src/modules/objects src/modules/objects/triggers src/modules/overlays src/modules/overlays/hud src/modules/overlays/stats src/modules/pickup src/modules/pickup/items src/modules/portals src/modules/questsystem src/modules/towerdefense src/modules/weapons/projectiles src/orxonox src/orxonox/gametypes src/orxonox/graphics src/orxonox/infos src/orxonox/interfaces src/orxonox/items src/orxonox/overlays src/orxonox/sound src/orxonox/worldentities src/orxonox/worldentities/pawns test/util

landauf at orxonox.net landauf at orxonox.net
Sun Jan 17 18:41:23 CET 2016


Author: landauf
Date: 2016-01-17 18:41:22 +0100 (Sun, 17 Jan 2016)
New Revision: 11068

Modified:
   code/branches/cpp11_v3/
   code/branches/cpp11_v3/src/OrxonoxConfig.h.in
   code/branches/cpp11_v3/src/libraries/core/CorePrereqs.h
   code/branches/cpp11_v3/src/libraries/core/XMLPort.h
   code/branches/cpp11_v3/src/libraries/core/command/ConsoleCommand.h
   code/branches/cpp11_v3/src/libraries/core/command/Executor.h
   code/branches/cpp11_v3/src/libraries/core/command/Functor.h
   code/branches/cpp11_v3/src/libraries/core/command/IOConsolePOSIX.cc
   code/branches/cpp11_v3/src/libraries/core/command/IOConsoleWindows.cc
   code/branches/cpp11_v3/src/libraries/core/command/Shell.cc
   code/branches/cpp11_v3/src/libraries/core/command/Shell.h
   code/branches/cpp11_v3/src/libraries/core/config/ConfigFileSection.h
   code/branches/cpp11_v3/src/libraries/network/Connection.cc
   code/branches/cpp11_v3/src/libraries/network/Connection.h
   code/branches/cpp11_v3/src/libraries/network/NetworkPrereqs.h
   code/branches/cpp11_v3/src/libraries/network/packet/Acknowledgement.cc
   code/branches/cpp11_v3/src/libraries/network/packet/Chat.cc
   code/branches/cpp11_v3/src/libraries/network/packet/ClassID.cc
   code/branches/cpp11_v3/src/libraries/network/packet/DeleteObjects.cc
   code/branches/cpp11_v3/src/libraries/network/packet/FunctionCalls.cc
   code/branches/cpp11_v3/src/libraries/network/packet/FunctionIDs.cc
   code/branches/cpp11_v3/src/libraries/network/packet/Gamestate.h
   code/branches/cpp11_v3/src/libraries/network/packet/Packet.cc
   code/branches/cpp11_v3/src/libraries/network/packet/Packet.h
   code/branches/cpp11_v3/src/libraries/network/packet/Welcome.cc
   code/branches/cpp11_v3/src/libraries/network/synchronisable/Synchronisable.h
   code/branches/cpp11_v3/src/libraries/util/Math.h
   code/branches/cpp11_v3/src/libraries/util/MultiType.cc
   code/branches/cpp11_v3/src/libraries/util/MultiType.h
   code/branches/cpp11_v3/src/libraries/util/MultiTypeValue.h
   code/branches/cpp11_v3/src/libraries/util/SubString.cc
   code/branches/cpp11_v3/src/libraries/util/SubString.h
   code/branches/cpp11_v3/src/libraries/util/UtilPrereqs.h
   code/branches/cpp11_v3/src/modules/gametypes/OldRaceCheckPoint.cc
   code/branches/cpp11_v3/src/modules/gametypes/RaceCheckPoint.cc
   code/branches/cpp11_v3/src/modules/jump/Jump.cc
   code/branches/cpp11_v3/src/modules/mini4dgame/Mini4Dgame.h
   code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameAI.cc
   code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameAI.h
   code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameBoard.cc
   code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameBoard.h
   code/branches/cpp11_v3/src/modules/notifications/NotificationDispatcher.cc
   code/branches/cpp11_v3/src/modules/notifications/NotificationManager.cc
   code/branches/cpp11_v3/src/modules/notifications/NotificationManager.h
   code/branches/cpp11_v3/src/modules/objects/ForceField.cc
   code/branches/cpp11_v3/src/modules/objects/ForceField.h
   code/branches/cpp11_v3/src/modules/objects/Script.h
   code/branches/cpp11_v3/src/modules/objects/Turret.cc
   code/branches/cpp11_v3/src/modules/objects/triggers/CheckPoint.cc
   code/branches/cpp11_v3/src/modules/objects/triggers/DistanceMultiTrigger.cc
   code/branches/cpp11_v3/src/modules/objects/triggers/DistanceMultiTrigger.h
   code/branches/cpp11_v3/src/modules/objects/triggers/DistanceTrigger.cc
   code/branches/cpp11_v3/src/modules/objects/triggers/DistanceTrigger.h
   code/branches/cpp11_v3/src/modules/objects/triggers/EventTrigger.cc
   code/branches/cpp11_v3/src/modules/objects/triggers/EventTrigger.h
   code/branches/cpp11_v3/src/modules/objects/triggers/Trigger.cc
   code/branches/cpp11_v3/src/modules/objects/triggers/Trigger.h
   code/branches/cpp11_v3/src/modules/objects/triggers/TriggerBase.h
   code/branches/cpp11_v3/src/modules/overlays/OverlayText.cc
   code/branches/cpp11_v3/src/modules/overlays/OverlayText.h
   code/branches/cpp11_v3/src/modules/overlays/hud/HUDRadar.cc
   code/branches/cpp11_v3/src/modules/overlays/stats/CreateLines.h
   code/branches/cpp11_v3/src/modules/pickup/Pickup.cc
   code/branches/cpp11_v3/src/modules/pickup/Pickup.h
   code/branches/cpp11_v3/src/modules/pickup/items/DronePickup.cc
   code/branches/cpp11_v3/src/modules/pickup/items/HealthPickup.cc
   code/branches/cpp11_v3/src/modules/pickup/items/HealthPickup.h
   code/branches/cpp11_v3/src/modules/pickup/items/MetaPickup.cc
   code/branches/cpp11_v3/src/modules/pickup/items/MetaPickup.h
   code/branches/cpp11_v3/src/modules/portals/PortalEndPoint.cc
   code/branches/cpp11_v3/src/modules/questsystem/GlobalQuest.cc
   code/branches/cpp11_v3/src/modules/questsystem/GlobalQuest.h
   code/branches/cpp11_v3/src/modules/questsystem/LocalQuest.cc
   code/branches/cpp11_v3/src/modules/questsystem/LocalQuest.h
   code/branches/cpp11_v3/src/modules/questsystem/Quest.h
   code/branches/cpp11_v3/src/modules/questsystem/QuestDescription.cc
   code/branches/cpp11_v3/src/modules/questsystem/QuestEffectBeacon.h
   code/branches/cpp11_v3/src/modules/questsystem/QuestHint.cc
   code/branches/cpp11_v3/src/modules/questsystem/QuestHint.h
   code/branches/cpp11_v3/src/modules/questsystem/QuestListener.h
   code/branches/cpp11_v3/src/modules/towerdefense/TowerDefense.cc
   code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseEnemy.cc
   code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseField.cc
   code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseField.h
   code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseTower.cc
   code/branches/cpp11_v3/src/modules/weapons/projectiles/GravityBomb.cc
   code/branches/cpp11_v3/src/modules/weapons/projectiles/GravityBombField.cc
   code/branches/cpp11_v3/src/modules/weapons/projectiles/IceGunProjectile.cc
   code/branches/cpp11_v3/src/modules/weapons/projectiles/LightningGunProjectile.cc
   code/branches/cpp11_v3/src/modules/weapons/projectiles/Projectile.cc
   code/branches/cpp11_v3/src/modules/weapons/projectiles/Rocket.cc
   code/branches/cpp11_v3/src/modules/weapons/projectiles/RocketOld.cc
   code/branches/cpp11_v3/src/modules/weapons/projectiles/SimpleRocket.cc
   code/branches/cpp11_v3/src/orxonox/Main.h
   code/branches/cpp11_v3/src/orxonox/Radar.cc
   code/branches/cpp11_v3/src/orxonox/gametypes/Gametype.h
   code/branches/cpp11_v3/src/orxonox/graphics/Light.cc
   code/branches/cpp11_v3/src/orxonox/graphics/Light.h
   code/branches/cpp11_v3/src/orxonox/infos/GametypeInfo.cc
   code/branches/cpp11_v3/src/orxonox/interfaces/NotificationListener.cc
   code/branches/cpp11_v3/src/orxonox/interfaces/NotificationListener.h
   code/branches/cpp11_v3/src/orxonox/interfaces/RadarViewable.cc
   code/branches/cpp11_v3/src/orxonox/interfaces/RadarViewable.h
   code/branches/cpp11_v3/src/orxonox/items/MultiStateEngine.cc
   code/branches/cpp11_v3/src/orxonox/items/MultiStateEngine.h
   code/branches/cpp11_v3/src/orxonox/items/PartDestructionEvent.cc
   code/branches/cpp11_v3/src/orxonox/items/PartDestructionEvent.h
   code/branches/cpp11_v3/src/orxonox/overlays/InGameConsole.cc
   code/branches/cpp11_v3/src/orxonox/overlays/OrxonoxOverlay.cc
   code/branches/cpp11_v3/src/orxonox/overlays/OrxonoxOverlay.h
   code/branches/cpp11_v3/src/orxonox/sound/BaseSound.cc
   code/branches/cpp11_v3/src/orxonox/sound/BaseSound.h
   code/branches/cpp11_v3/src/orxonox/sound/WorldSound.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/Drone.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/MobileEntity.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/StaticEntity.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/WorldEntity.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/WorldEntity.h
   code/branches/cpp11_v3/src/orxonox/worldentities/pawns/FpsPlayer.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/pawns/Pawn.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/pawns/SpaceShip.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc
   code/branches/cpp11_v3/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h
   code/branches/cpp11_v3/test/util/MultiTypeTest.cc
Log:
merged remaining commits from cpp11_v2 to cpp11_v3 (for some reason they were not merged in the first attempt)


Property changes on: code/branches/cpp11_v3
___________________________________________________________________
Modified: svn:mergeinfo
   - /code/branches/AI_HS15:10640-10832
/code/branches/ParticleEffectsFS15:10309-10612
/code/branches/Racingbot:9388-9513
/code/branches/SciptableControllerFS15:10308-10613
/code/branches/ScriptableController:9999-10075
/code/branches/ai:6592-7033
/code/branches/ai2:8721-8880
/code/branches/bigships:8137-8588
/code/branches/buildsystem:1874-2276,2278-2400
/code/branches/buildsystem2:2506-2658
/code/branches/buildsystem3:2662-2708
/code/branches/campaignHS15:10639-10973
/code/branches/ceguilua:1802-1808
/code/branches/chat:6527-6797
/code/branches/chat2:6836-6910
/code/branches/clangenb:10385-10609
/code/branches/console:5941-6104
/code/branches/consolecommands2:6451-7178
/code/branches/consolecommands3:7178-7283
/code/branches/core3:1572-1739
/code/branches/core4:3221-3224,3227,3234-3238,3242,3244-3250,3252-3254,3256,3259-3261,3264-3265,3268-3275,3277-3278,3280,3284-3285,3287,3289-3294,3305,3309-3310
/code/branches/core5:5768-5928,6009
/code/branches/core6:9552-9666
/code/branches/core7:10328-10623
/code/branches/cpp11:10439-10732
/code/branches/cpp11_v2:10732-10995
/code/branches/data_cleanup:7537-7686
/code/branches/doc:7290-7400
/code/branches/dockingsystem:8101-8192
/code/branches/dockingsystem2:8196-8560
/code/branches/dynamicmatch:6584-7030
/code/branches/environment3:8887-8975
/code/branches/explosionChunksHS15:10641-10961
/code/branches/fabienHS15:10685-11033
/code/branches/formation:8885-8991
/code/branches/formationFS15:10320-10610
/code/branches/formationupdate:9580-9624
/code/branches/fps:6591-7072
/code/branches/gamecontent:8893-8968
/code/branches/gameimmersion:8102-8577
/code/branches/gamestate:6430-6572,6621-6661
/code/branches/gamestates2:6594-6745
/code/branches/gametypes:2826-3031
/code/branches/gcc43:1580
/code/branches/gui:1635-1723,2795-2894
/code/branches/hoverHS15:10633-10959
/code/branches/hud:8883-8986
/code/branches/hudHS14:10083-10241
/code/branches/hudelements:6584-6941
/code/branches/hudimprovements:7920-8672
/code/branches/ingamemenu:6000-6023
/code/branches/input:1629-1636
/code/branches/invaders:9694-9896
/code/branches/ipv6:7293-7458
/code/branches/keckslevelHS14:10082-10222
/code/branches/kicklib:7940-8096,8098-8277
/code/branches/kicklib2:8282-8350
/code/branches/largeShip1:9384-9515
/code/branches/lastmanstanding:7479-7644
/code/branches/lastmanstanding3:7903-8175
/code/branches/levelElias:9697-9921
/code/branches/levelKaan:9695-9921
/code/branches/levelMichael:9696-9921
/code/branches/leveljoemeHS14:10087-10223
/code/branches/libraries:5612-5692
/code/branches/libraries2:5703-5737
/code/branches/libs:9668-9674
/code/branches/lod:6586-6911
/code/branches/lodfinal:2372-2411
/code/branches/mac_osx:7789-8128,8135
/code/branches/map:2801-3086,3089
/code/branches/masterserver:7502-7738
/code/branches/masterserverfix:8933-8936
/code/branches/menu:5941-6146,6148,7536-7687
/code/branches/menue:8884-8976
/code/branches/minigame4DHS14:10081-10230
/code/branches/miniprojects:2754-2824
/code/branches/modularships:9994-10071
/code/branches/multiplayerFS15:10324-10611
/code/branches/netp2:2835-2988
/code/branches/netp3:2988-3082
/code/branches/netp6:3214-3302
/code/branches/network:2356
/code/branches/network2:6434-6465
/code/branches/network3:7196-7344
/code/branches/network4:7497-7755
/code/branches/network5:7757-7781
/code/branches/network6:7823-8315
/code/branches/network64:2210-2355
/code/branches/newlevel2012:9033-9244
/code/branches/notifications:7314-7401
/code/branches/objecthierarchy:1911-2085,2100,2110-2169
/code/branches/objecthierarchy2:2171-2479
/code/branches/ois_update:7506-7788
/code/branches/output:8739-8857
/code/branches/overlay:2117-2385
/code/branches/pCuts:9023-9284
/code/branches/particleEffectsHS15:10644-10962
/code/branches/particles:2829-3085
/code/branches/particles2:6050-6106,6109
/code/branches/pch:3113-3194
/code/branches/physics:1912-2055,2107-2439
/code/branches/physics_merge:2436-2457
/code/branches/pickup:8145-8555
/code/branches/pickup2:5942-6405
/code/branches/pickup2012:9029-9189
/code/branches/pickup3:6418-6523
/code/branches/pickup4:6594-6710
/code/branches/pickups:1926-2086,2127,2827-2915
/code/branches/pickups2:2107-2497,2915-3071
/code/branches/pickupsFS14:10000-10259
/code/branches/planetLevelHS15:10637-10966
/code/branches/png2:7262-7263
/code/branches/portals:8087-8455
/code/branches/portals2:8460-8602
/code/branches/ppspickups1:6552-6708
/code/branches/ppspickups2:6527-6532,6554-6709
/code/branches/ppspickups3:6757-6997
/code/branches/ppspickups4:7003-7089
/code/branches/presentation:2369-2652,2654-2660,7736-7786,8500-8705
/code/branches/presentation2:6106-6416,7787-7800
/code/branches/presentation2011:8974-9015
/code/branches/presentation2012:9189-9268
/code/branches/presentation2012merge:9266-9347
/code/branches/presentation3:6913-7162
/code/branches/presentationFS14:10069-10215
/code/branches/presentationFS15:10499
/code/branches/presentationFS15merge:10595-10621
/code/branches/presentationHS12:9481-9525
/code/branches/presentationHS13:9891-9938
/code/branches/presentationHS14merge:10222-10257
/code/branches/presentationHS15:10959-11051
/code/branches/questsystem:1894-2088
/code/branches/questsystem2:2107-2259
/code/branches/questsystem5:2776-2905
/code/branches/radarDreiD:9690-9901
/code/branches/releasetodo:7614-7647
/code/branches/resource:3327-3366
/code/branches/resource2:3372-5694
/code/branches/rocket:6523-6950
/code/branches/rocket2:6953-6970
/code/branches/script_trigger:1295-1953,1955
/code/branches/sfxThilo:9691-9917
/code/branches/shipSelection:9038-9206
/code/branches/skybox2:6559-6989
/code/branches/sound:2829-3010
/code/branches/sound2012:9205-9214
/code/branches/sound3:5941-6102
/code/branches/soundEffects:9382-11020
/code/branches/spaceNavigation:9381-9497
/code/branches/spaceboundaries:8085-8457
/code/branches/spaceboundaries2:8460-8613
/code/branches/spacerace:8182-8630
/code/branches/spaceraceTwo:8881-8996
/code/branches/spacestationentry:9699-9905
/code/branches/steering:5949-6091,8140-8595
/code/branches/storymodeHS14:10085-10254
/code/branches/surfaceRace:9028-9199
/code/branches/surfaceraceHS14:10080-10236
/code/branches/testing:9015-9549
/code/branches/tetris:8100-8563
/code/branches/towerdefenseFS15:10283-10614
/code/branches/towerdefenseHS14:10086-10247
/code/branches/turret:9380-9501
/code/branches/turretFS14:9998-10070
/code/branches/tutoriallevel:7827-8370
/code/branches/tutoriallevel2:8370-8452
/code/branches/tutoriallevel3:8453-8636
/code/branches/unity_build:8440-8716
/code/branches/usability:7915-8078
/code/branches/weapon:1925-2094
/code/branches/weapon2:2107-2488
/code/branches/weaponFS15:10302-10615
/code/branches/weapons:2897-3051,8143-8591
/code/branches/weaponsystem:2742-2890
/code/branches/weaponupdateHS14:10084-10237
   + /code/branches/AI_HS15:10640-10832
/code/branches/ParticleEffectsFS15:10309-10612
/code/branches/Racingbot:9388-9513
/code/branches/SciptableControllerFS15:10308-10613
/code/branches/ScriptableController:9999-10075
/code/branches/ai:6592-7033
/code/branches/ai2:8721-8880
/code/branches/bigships:8137-8588
/code/branches/buildsystem:1874-2276,2278-2400
/code/branches/buildsystem2:2506-2658
/code/branches/buildsystem3:2662-2708
/code/branches/campaignHS15:10639-10973
/code/branches/ceguilua:1802-1808
/code/branches/chat:6527-6797
/code/branches/chat2:6836-6910
/code/branches/clangenb:10385-10609
/code/branches/console:5941-6104
/code/branches/consolecommands2:6451-7178
/code/branches/consolecommands3:7178-7283
/code/branches/core3:1572-1739
/code/branches/core4:3221-3224,3227,3234-3238,3242,3244-3250,3252-3254,3256,3259-3261,3264-3265,3268-3275,3277-3278,3280,3284-3285,3287,3289-3294,3305,3309-3310
/code/branches/core5:5768-5928,6009
/code/branches/core6:9552-9666
/code/branches/core7:10328-10623
/code/branches/cpp11:10439-10732
/code/branches/cpp11_v2:10732-11067
/code/branches/data_cleanup:7537-7686
/code/branches/doc:7290-7400
/code/branches/dockingsystem:8101-8192
/code/branches/dockingsystem2:8196-8560
/code/branches/dynamicmatch:6584-7030
/code/branches/environment3:8887-8975
/code/branches/explosionChunksHS15:10641-10961
/code/branches/fabienHS15:10685-11033
/code/branches/formation:8885-8991
/code/branches/formationFS15:10320-10610
/code/branches/formationupdate:9580-9624
/code/branches/fps:6591-7072
/code/branches/gamecontent:8893-8968
/code/branches/gameimmersion:8102-8577
/code/branches/gamestate:6430-6572,6621-6661
/code/branches/gamestates2:6594-6745
/code/branches/gametypes:2826-3031
/code/branches/gcc43:1580
/code/branches/gui:1635-1723,2795-2894
/code/branches/hoverHS15:10633-10959
/code/branches/hud:8883-8986
/code/branches/hudHS14:10083-10241
/code/branches/hudelements:6584-6941
/code/branches/hudimprovements:7920-8672
/code/branches/ingamemenu:6000-6023
/code/branches/input:1629-1636
/code/branches/invaders:9694-9896
/code/branches/ipv6:7293-7458
/code/branches/keckslevelHS14:10082-10222
/code/branches/kicklib:7940-8096,8098-8277
/code/branches/kicklib2:8282-8350
/code/branches/largeShip1:9384-9515
/code/branches/lastmanstanding:7479-7644
/code/branches/lastmanstanding3:7903-8175
/code/branches/levelElias:9697-9921
/code/branches/levelKaan:9695-9921
/code/branches/levelMichael:9696-9921
/code/branches/leveljoemeHS14:10087-10223
/code/branches/libraries:5612-5692
/code/branches/libraries2:5703-5737
/code/branches/libs:9668-9674
/code/branches/lod:6586-6911
/code/branches/lodfinal:2372-2411
/code/branches/mac_osx:7789-8128,8135
/code/branches/map:2801-3086,3089
/code/branches/masterserver:7502-7738
/code/branches/masterserverfix:8933-8936
/code/branches/menu:5941-6146,6148,7536-7687
/code/branches/menue:8884-8976
/code/branches/minigame4DHS14:10081-10230
/code/branches/miniprojects:2754-2824
/code/branches/modularships:9994-10071
/code/branches/multiplayerFS15:10324-10611
/code/branches/netp2:2835-2988
/code/branches/netp3:2988-3082
/code/branches/netp6:3214-3302
/code/branches/network:2356
/code/branches/network2:6434-6465
/code/branches/network3:7196-7344
/code/branches/network4:7497-7755
/code/branches/network5:7757-7781
/code/branches/network6:7823-8315
/code/branches/network64:2210-2355
/code/branches/newlevel2012:9033-9244
/code/branches/notifications:7314-7401
/code/branches/objecthierarchy:1911-2085,2100,2110-2169
/code/branches/objecthierarchy2:2171-2479
/code/branches/ois_update:7506-7788
/code/branches/output:8739-8857
/code/branches/overlay:2117-2385
/code/branches/pCuts:9023-9284
/code/branches/particleEffectsHS15:10644-10962
/code/branches/particles:2829-3085
/code/branches/particles2:6050-6106,6109
/code/branches/pch:3113-3194
/code/branches/physics:1912-2055,2107-2439
/code/branches/physics_merge:2436-2457
/code/branches/pickup:8145-8555
/code/branches/pickup2:5942-6405
/code/branches/pickup2012:9029-9189
/code/branches/pickup3:6418-6523
/code/branches/pickup4:6594-6710
/code/branches/pickups:1926-2086,2127,2827-2915
/code/branches/pickups2:2107-2497,2915-3071
/code/branches/pickupsFS14:10000-10259
/code/branches/planetLevelHS15:10637-10966
/code/branches/png2:7262-7263
/code/branches/portals:8087-8455
/code/branches/portals2:8460-8602
/code/branches/ppspickups1:6552-6708
/code/branches/ppspickups2:6527-6532,6554-6709
/code/branches/ppspickups3:6757-6997
/code/branches/ppspickups4:7003-7089
/code/branches/presentation:2369-2652,2654-2660,7736-7786,8500-8705
/code/branches/presentation2:6106-6416,7787-7800
/code/branches/presentation2011:8974-9015
/code/branches/presentation2012:9189-9268
/code/branches/presentation2012merge:9266-9347
/code/branches/presentation3:6913-7162
/code/branches/presentationFS14:10069-10215
/code/branches/presentationFS15:10499
/code/branches/presentationFS15merge:10595-10621
/code/branches/presentationHS12:9481-9525
/code/branches/presentationHS13:9891-9938
/code/branches/presentationHS14merge:10222-10257
/code/branches/presentationHS15:10959-11051
/code/branches/questsystem:1894-2088
/code/branches/questsystem2:2107-2259
/code/branches/questsystem5:2776-2905
/code/branches/radarDreiD:9690-9901
/code/branches/releasetodo:7614-7647
/code/branches/resource:3327-3366
/code/branches/resource2:3372-5694
/code/branches/rocket:6523-6950
/code/branches/rocket2:6953-6970
/code/branches/script_trigger:1295-1953,1955
/code/branches/sfxThilo:9691-9917
/code/branches/shipSelection:9038-9206
/code/branches/skybox2:6559-6989
/code/branches/sound:2829-3010
/code/branches/sound2012:9205-9214
/code/branches/sound3:5941-6102
/code/branches/soundEffects:9382-11020
/code/branches/spaceNavigation:9381-9497
/code/branches/spaceboundaries:8085-8457
/code/branches/spaceboundaries2:8460-8613
/code/branches/spacerace:8182-8630
/code/branches/spaceraceTwo:8881-8996
/code/branches/spacestationentry:9699-9905
/code/branches/steering:5949-6091,8140-8595
/code/branches/storymodeHS14:10085-10254
/code/branches/surfaceRace:9028-9199
/code/branches/surfaceraceHS14:10080-10236
/code/branches/testing:9015-9549
/code/branches/tetris:8100-8563
/code/branches/towerdefenseFS15:10283-10614
/code/branches/towerdefenseHS14:10086-10247
/code/branches/turret:9380-9501
/code/branches/turretFS14:9998-10070
/code/branches/tutoriallevel:7827-8370
/code/branches/tutoriallevel2:8370-8452
/code/branches/tutoriallevel3:8453-8636
/code/branches/unity_build:8440-8716
/code/branches/usability:7915-8078
/code/branches/weapon:1925-2094
/code/branches/weapon2:2107-2488
/code/branches/weaponFS15:10302-10615
/code/branches/weapons:2897-3051,8143-8591
/code/branches/weaponsystem:2742-2890
/code/branches/weaponupdateHS14:10084-10237

Modified: code/branches/cpp11_v3/src/OrxonoxConfig.h.in
===================================================================
--- code/branches/cpp11_v3/src/OrxonoxConfig.h.in	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/OrxonoxConfig.h.in	2016-01-17 17:41:22 UTC (rev 11068)
@@ -206,15 +206,6 @@
 #  define ORXONOX_RELEASE
 #endif
 
-// Forward declare the everywhere used std::string
-namespace std
-{
-    template<class _Elem> struct char_traits;
-    template<class _Ty>   class  allocator;
-    template<class _Elem, class _Traits, class _Ax> class basic_string;
-    typedef basic_string<char, char_traits<char>, allocator<char>> string;
-}
-
 // Define Boost Filesystem version
 #include <boost/version.hpp>
 #ifndef BOOST_FILESYSTEM_VERSION

Modified: code/branches/cpp11_v3/src/libraries/core/CorePrereqs.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/CorePrereqs.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/CorePrereqs.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -37,6 +37,7 @@
 
 #include "OrxonoxConfig.h"
 #include <boost/version.hpp>
+#include <string>
 
 //-----------------------------------------------------------------------
 // Shared library settings

Modified: code/branches/cpp11_v3/src/libraries/core/XMLPort.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/XMLPort.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/XMLPort.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -323,16 +323,16 @@
     class _CoreExport XMLPortParamContainer
     {
     public:
-        enum ParseResult
+        enum class ParseResult
         {
-            PR_not_started,
-            PR_finished,
-            PR_waiting_for_default_values
+            not_started,
+            finished,
+            waiting_for_default_values
         };
 
         public:
             XMLPortParamContainer()
-                { this->parseResult_ = PR_not_started; }
+                { this->parseResult_ = ParseResult::not_started; }
             virtual ~XMLPortParamContainer() = default;
 
             inline const std::string& getName() const
@@ -414,14 +414,14 @@
                             int error;
                             this->loadexecutor_->parse(object, attributeValue, &error, ",");
                             if (!error || (mode  == XMLPort::ExpandObject))
-                                this->parseResult_ = PR_finished;
+                                this->parseResult_ = ParseResult::finished;
                             else
-                                this->parseResult_ = PR_waiting_for_default_values;
+                                this->parseResult_ = ParseResult::waiting_for_default_values;
                         }
                         else if (mode == XMLPort::ExpandObject)
-                            this->parseResult_ = PR_finished;
+                            this->parseResult_ = ParseResult::finished;
                         else
-                            this->parseResult_ = PR_waiting_for_default_values;
+                            this->parseResult_ = ParseResult::waiting_for_default_values;
                     }
                     catch (ticpp::Exception& ex)
                     {
@@ -448,7 +448,7 @@
 
             XMLPortParamContainer& portIfWaitingForDefaultValues(const ParseResult& result, const ParseParams& params)
             {
-                if (result == PR_waiting_for_default_values)
+                if (result == ParseResult::waiting_for_default_values)
                     return this->port(this->owner_, params);
                 else
                     return (*this);

Modified: code/branches/cpp11_v3/src/libraries/core/command/ConsoleCommand.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/command/ConsoleCommand.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/command/ConsoleCommand.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -59,23 +59,20 @@
         inline std::string string__uint_uint_bool(unsigned int, unsigned int, bool) { return ""; }
     }
 
-    namespace AccessLevel
+    /**
+        @brief Possible access levels: A command can only be executed if the program is in the state which is requested by the access level.
+    */
+    enum class AccessLevel
     {
-        /**
-            @brief Possible access levels: A command can only be executed if the program is in the state which is requested by the access level.
-        */
-        enum Enum
-        {
-            All,
-            Standalone,
-            Master,
-            Server,
-            Client,
-            Online,
-            Offline,
-            None
-        };
-    }
+        All,
+        Standalone,
+        Master,
+        Server,
+        Client,
+        Online,
+        Offline,
+        None
+    };
 
     /**
         @brief The ConsoleCommand class stores all information about a console command which can be executed by CommandExecutor.
@@ -248,7 +245,7 @@
                         { if (this->command_) { this->command_->defaultValue(index, arg); } return *this; }
 
                     /// Changes the access level of the command.
-                    inline ConsoleCommandManipulator& accessLevel(AccessLevel::Enum level)
+                    inline ConsoleCommandManipulator& accessLevel(AccessLevel level)
                         { if (this->command_) { this->command_->accessLevel(level); } return *this; }
 
                     /// Changes the argument completer for the given parameter.
@@ -331,10 +328,10 @@
             ConsoleCommand& defaultValue(unsigned int index, const MultiType& arg);
 
             /// Changes the access level of the command.
-            inline ConsoleCommand& accessLevel(AccessLevel::Enum level)
+            inline ConsoleCommand& accessLevel(AccessLevel level)
                 { this->accessLevel_ = level; return *this; }
             /// Returns the access level of the command.
-            inline AccessLevel::Enum getAccessLevel() const
+            inline AccessLevel getAccessLevel() const
                 { return this->accessLevel_; }
 
             ConsoleCommand& argumentCompleter(unsigned int index, ArgumentCompleter* completer);
@@ -393,7 +390,7 @@
 
             bool bActive_;                                                  ///< True if the command should be active (it can still be inactive, for example if the function is missing)
             bool bHidden_;                                                  ///< True if the command is hidden (it is still executable, but not visible in the list of available commands)
-            AccessLevel::Enum accessLevel_;                                 ///< The access level (the state of the game in which you can access the command)
+            AccessLevel accessLevel_;                                       ///< The access level (the state of the game in which you can access the command)
             std::string baseName_;                                          ///< The name that was first assigned to the command
             std::vector<CommandName> names_;                                ///< All names and aliases of this command
             FunctorPtr baseFunctor_;                                        ///< The functor that defines the header of the command-function

Modified: code/branches/cpp11_v3/src/libraries/core/command/Executor.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/command/Executor.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/command/Executor.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -146,7 +146,7 @@
             inline bool hasReturnvalue() const
                 { return this->functor_->hasReturnvalue(); }
             /// Returns the type of the wrapped function (static or member).
-            inline Functor::Type::Enum getType() const
+            inline Functor::Type getType() const
                 { return this->functor_->getType(); }
             /// Returns the name of the type of a parameter with given index (the first parameter has index 0).
             inline std::string getTypenameParam(unsigned int param) const

Modified: code/branches/cpp11_v3/src/libraries/core/command/Functor.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/command/Functor.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/command/Functor.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -175,14 +175,11 @@
     class _CoreExport Functor
     {
         public:
-            struct Type
+            /// Defines the type of a function (static or member)
+            enum class Type
             {
-                /// Defines the type of a function (static or member)
-                enum Enum
-                {
-                    Static,
-                    Member
-                };
+                Static,
+                Member
             };
 
         public:
@@ -195,7 +192,7 @@
             virtual FunctorPtr clone() = 0;
 
             /// Returns the type of the function: static or member.
-            virtual Type::Enum getType() const = 0;
+            virtual Type getType() const = 0;
             /// Returns the number of parameters of the function.
             virtual unsigned int getParamCount() const = 0;
             /// Returns true if the function has a return-value.
@@ -261,7 +258,7 @@
             }
 
             // see Functor::getType()
-            virtual inline Functor::Type::Enum getType() const override
+            virtual inline Functor::Type getType() const override
                 { return Functor::Type::Member; }
 
             /// Assigns an object-pointer to the functor which is used to execute a member-function.
@@ -338,7 +335,7 @@
             }
 
             // see Functor::getType()
-            virtual inline Functor::Type::Enum getType() const override
+            virtual inline Functor::Type getType() const override
                 { return Functor::Type::Static; }
 
             // see Functor::setRawObjectPointer()

Modified: code/branches/cpp11_v3/src/libraries/core/command/IOConsolePOSIX.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/command/IOConsolePOSIX.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/command/IOConsolePOSIX.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -45,15 +45,12 @@
 {
     IOConsole* IOConsole::singletonPtr_s = nullptr;
 
-    namespace EscapeMode
+    enum class EscapeMode
     {
-        enum Value
-        {
-            None,
-            First,
-            Second
-        };
-    }
+        None,
+        First,
+        Second
+    };
 
     IOConsole::IOConsole()
         : shell_(new Shell("Console", false))
@@ -89,7 +86,7 @@
         // Process output written to std::cout in the meantime
         std::cout.flush();
         if (!this->origCout_.str().empty())
-            this->shell_->addOutput(this->origCout_.str(), Shell::Cout);
+            this->shell_->addOutput(this->origCout_.str(), Shell::LineType::Cout);
         // Erase input and status lines
         this->cout_ << "\033[1G\033[J";
         // Move cursor to the bottom
@@ -110,7 +107,7 @@
     {
         unsigned char c;
         std::string escapeSequence;
-        EscapeMode::Value escapeMode = EscapeMode::None;
+        EscapeMode escapeMode = EscapeMode::None;
         while (std::cin.good())
         {
             c = std::cin.get();
@@ -230,7 +227,7 @@
         std::cout.flush();
         if (!this->origCout_.str().empty())
         {
-            this->shell_->addOutput(this->origCout_.str(), Shell::Cout);
+            this->shell_->addOutput(this->origCout_.str(), Shell::LineType::Cout);
             this->origCout_.str("");
         }
     }
@@ -240,27 +237,27 @@
         // Colour line
         switch (type)
         {
-            case Shell::Message:
-            case Shell::DebugOutput:     this->cout_ << "\033[0m"; break;
+            case Shell::LineType::Message:
+            case Shell::LineType::DebugOutput:     this->cout_ << "\033[0m"; break;
 
-            case Shell::UserError:       this->cout_ << "\033[91m"; break;
-            case Shell::UserWarning:     this->cout_ << "\033[93m"; break;
-            case Shell::UserStatus:      this->cout_ << "\033[92m"; break;
-            case Shell::UserInfo:        this->cout_ << "\033[96m"; break;
+            case Shell::LineType::UserError:       this->cout_ << "\033[91m"; break;
+            case Shell::LineType::UserWarning:     this->cout_ << "\033[93m"; break;
+            case Shell::LineType::UserStatus:      this->cout_ << "\033[92m"; break;
+            case Shell::LineType::UserInfo:        this->cout_ << "\033[96m"; break;
 
-            case Shell::InternalError:   this->cout_ << "\033[31m"; break;
-            case Shell::InternalWarning: this->cout_ << "\033[33m"; break;
-            case Shell::InternalStatus:  this->cout_ << "\033[32m"; break;
-            case Shell::InternalInfo:    this->cout_ << "\033[36m"; break;
+            case Shell::LineType::InternalError:   this->cout_ << "\033[31m"; break;
+            case Shell::LineType::InternalWarning: this->cout_ << "\033[33m"; break;
+            case Shell::LineType::InternalStatus:  this->cout_ << "\033[32m"; break;
+            case Shell::LineType::InternalInfo:    this->cout_ << "\033[36m"; break;
 
-            case Shell::Verbose:         this->cout_ << "\033[94m"; break;
-            case Shell::VerboseMore:     this->cout_ << "\033[34m"; break;
-            case Shell::VerboseUltra:    this->cout_ << "\033[34m"; break;
+            case Shell::LineType::Verbose:         this->cout_ << "\033[94m"; break;
+            case Shell::LineType::VerboseMore:     this->cout_ << "\033[34m"; break;
+            case Shell::LineType::VerboseUltra:    this->cout_ << "\033[34m"; break;
 
-            case Shell::Command:         this->cout_ << "\033[95m"; break;
-            case Shell::Hint:            this->cout_ << "\033[35m"; break;
+            case Shell::LineType::Command:         this->cout_ << "\033[95m"; break;
+            case Shell::LineType::Hint:            this->cout_ << "\033[35m"; break;
 
-            default:                     this->cout_ << "\033[37m"; break;
+            default:                               this->cout_ << "\033[37m"; break;
         }
 
         // Print output line
@@ -383,7 +380,7 @@
     //! Called if a command is about to be executed
     void IOConsole::executed()
     {
-        this->shell_->addOutput(this->promptString_ + this->shell_->getInput(), Shell::Command);
+        this->shell_->addOutput(this->promptString_ + this->shell_->getInput(), Shell::LineType::Command);
     }
 
     //! Called if the console gets closed

Modified: code/branches/cpp11_v3/src/libraries/core/command/IOConsoleWindows.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/command/IOConsoleWindows.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/command/IOConsoleWindows.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -96,7 +96,7 @@
         // Process output written to std::cout in the meantime
         std::cout.flush();
         if (!this->origCout_.str().empty())
-            this->shell_->addOutput(this->origCout_.str(), Shell::Cout);
+            this->shell_->addOutput(this->origCout_.str(), Shell::LineType::Cout);
 
         this->shell_->unregisterListener(this);
 
@@ -189,7 +189,7 @@
         std::cout.flush();
         if (!this->origCout_.str().empty())
         {
-            this->shell_->addOutput(this->origCout_.str(), Shell::Cout);
+            this->shell_->addOutput(this->origCout_.str(), Shell::LineType::Cout);
             this->origCout_.str("");
         }
     }
@@ -201,27 +201,27 @@
         WORD colour = 0;
         switch (type)
         {
-            case Shell::Message:
-            case Shell::DebugOutput:     colour = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; break;
+            case Shell::LineType::Message:
+            case Shell::LineType::DebugOutput:     colour = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; break;
 
-            case Shell::UserError:       colour = FOREGROUND_INTENSITY | FOREGROUND_RED | 0                | 0              ; break;
-            case Shell::UserWarning:     colour = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | 0              ; break;
-            case Shell::UserStatus:      colour = FOREGROUND_INTENSITY | 0              | FOREGROUND_GREEN | 0              ; break;
-            case Shell::UserInfo:        colour = FOREGROUND_INTENSITY | 0              | FOREGROUND_GREEN | FOREGROUND_BLUE; break;
+            case Shell::LineType::UserError:       colour = FOREGROUND_INTENSITY | FOREGROUND_RED | 0                | 0              ; break;
+            case Shell::LineType::UserWarning:     colour = FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_GREEN | 0              ; break;
+            case Shell::LineType::UserStatus:      colour = FOREGROUND_INTENSITY | 0              | FOREGROUND_GREEN | 0              ; break;
+            case Shell::LineType::UserInfo:        colour = FOREGROUND_INTENSITY | 0              | FOREGROUND_GREEN | FOREGROUND_BLUE; break;
 
-            case Shell::InternalError:   colour = 0                    | FOREGROUND_RED | 0                | 0              ; break;
-            case Shell::InternalWarning: colour = 0                    | FOREGROUND_RED | FOREGROUND_GREEN | 0              ; break;
-            case Shell::InternalStatus:  colour = 0                    | 0              | FOREGROUND_GREEN | 0              ; break;
-            case Shell::InternalInfo:    colour = 0                    | 0              | FOREGROUND_GREEN | FOREGROUND_BLUE; break;
+            case Shell::LineType::InternalError:   colour = 0                    | FOREGROUND_RED | 0                | 0              ; break;
+            case Shell::LineType::InternalWarning: colour = 0                    | FOREGROUND_RED | FOREGROUND_GREEN | 0              ; break;
+            case Shell::LineType::InternalStatus:  colour = 0                    | 0              | FOREGROUND_GREEN | 0              ; break;
+            case Shell::LineType::InternalInfo:    colour = 0                    | 0              | FOREGROUND_GREEN | FOREGROUND_BLUE; break;
 
-            case Shell::Verbose:         colour = FOREGROUND_INTENSITY | 0              | 0                | FOREGROUND_BLUE; break;
-            case Shell::VerboseMore:     colour = FOREGROUND_INTENSITY | 0              | 0                | FOREGROUND_BLUE; break;
-            case Shell::VerboseUltra:    colour = FOREGROUND_INTENSITY | 0              | 0                | FOREGROUND_BLUE; break;
+            case Shell::LineType::Verbose:         colour = FOREGROUND_INTENSITY | 0              | 0                | FOREGROUND_BLUE; break;
+            case Shell::LineType::VerboseMore:     colour = FOREGROUND_INTENSITY | 0              | 0                | FOREGROUND_BLUE; break;
+            case Shell::LineType::VerboseUltra:    colour = FOREGROUND_INTENSITY | 0              | 0                | FOREGROUND_BLUE; break;
 
-            case Shell::Command:         colour = FOREGROUND_INTENSITY | FOREGROUND_RED | 0                | FOREGROUND_BLUE; break;
-            case Shell::Hint:            colour = 0                    | FOREGROUND_RED | 0                | FOREGROUND_BLUE; break;
+            case Shell::LineType::Command:         colour = FOREGROUND_INTENSITY | FOREGROUND_RED | 0                | FOREGROUND_BLUE; break;
+            case Shell::LineType::Hint:            colour = 0                    | FOREGROUND_RED | 0                | FOREGROUND_BLUE; break;
 
-            default:                     colour = 0                    | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; break;
+            default:                               colour = 0                    | FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE; break;
         }
 
         // Print output line
@@ -330,7 +330,7 @@
     //! Called if a command is about to be executed
     void IOConsole::executed()
     {
-        this->shell_->addOutput(this->promptString_ + this->shell_->getInput(), Shell::Command);
+        this->shell_->addOutput(this->promptString_ + this->shell_->getInput(), Shell::LineType::Command);
     }
 
     //! Called if the console gets closed

Modified: code/branches/cpp11_v3/src/libraries/core/command/Shell.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/command/Shell.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/command/Shell.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -267,7 +267,7 @@
     void Shell::addLine(const std::string& line, LineType type)
     {
         // yes it was - push the new line to the list
-        this->outputLines_.push_front(std::make_pair(line, static_cast<LineType>(type)));
+        this->outputLines_.push_front(std::make_pair(line, type));
 
         // adjust the scroll position if needed
         if (this->scrollPosition_)
@@ -380,9 +380,9 @@
         int error;
         const std::string& result = CommandExecutor::query(this->inputBuffer_->get(), &error);
         if (error)
-            this->addOutput("Error: Can't execute \"" + this->inputBuffer_->get() + "\", " + CommandExecutor::getErrorDescription(error) + ". (Shell)", UserError);
+            this->addOutput("Error: Can't execute \"" + this->inputBuffer_->get() + "\", " + CommandExecutor::getErrorDescription(error) + ". (Shell)", LineType::UserError);
         else if (result != "")
-            this->addOutput(result, Result);
+            this->addOutput(result, LineType::Result);
 
         this->clearInput();
     }
@@ -391,7 +391,7 @@
     void Shell::hintAndComplete()
     {
         this->inputBuffer_->set(CommandExecutor::evaluate(this->inputBuffer_->get()).complete());
-        this->addOutput(CommandExecutor::evaluate(this->inputBuffer_->get()).hint(), Hint);
+        this->addOutput(CommandExecutor::evaluate(this->inputBuffer_->get()).hint(), LineType::Hint);
 
         this->inputChanged();
     }

Modified: code/branches/cpp11_v3/src/libraries/core/command/Shell.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/command/Shell.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/command/Shell.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -87,7 +87,7 @@
     {
         public:
             /// Defines the type of a line of text in the Shell - some types depend on the output level, others are of internal use.
-            enum LineType
+            enum class LineType
             {
                 DebugOutput     = debug_output,
                 Message         = message,
@@ -132,8 +132,8 @@
             LineList::const_iterator getNewestLineIterator() const;
             LineList::const_iterator getEndIterator() const;
 
-            void addOutput(const std::string& text, LineType type = DebugOutput);
-            void addLine(const std::string& line, LineType type = DebugOutput);
+            void addOutput(const std::string& text, LineType type = LineType::DebugOutput);
+            void addLine(const std::string& line, LineType type = LineType::DebugOutput);
             void clearOutput();
 
             /// Returns the number of output-lines that are displayed in the shell.

Modified: code/branches/cpp11_v3/src/libraries/core/config/ConfigFileSection.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/core/config/ConfigFileSection.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/core/config/ConfigFileSection.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -38,6 +38,7 @@
 
 #include <string>
 #include <list>
+#include "util/StringUtils.h"
 #include "ConfigFileEntry.h"
 
 namespace orxonox

Modified: code/branches/cpp11_v3/src/libraries/network/Connection.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/Connection.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/Connection.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -80,7 +80,7 @@
   void Connection::disconnectPeer(uint32_t peerID)
   {
 //     this->overallMutex_->lock();
-    outgoingEvent outEvent = { peerID, outgoingEventType::disconnectPeer, nullptr, 0 };
+    outgoingEvent outEvent = { peerID, OutgoingEventType::disconnectPeer, nullptr, 0 };
     
     this->outgoingEventsMutex_->lock();
     this->outgoingEvents_.push_back(outEvent);
@@ -90,7 +90,7 @@
   
   void Connection::disconnectPeers()
   {
-    outgoingEvent outEvent = { 0, outgoingEventType::disconnectPeers, nullptr, 0 };
+    outgoingEvent outEvent = { 0, OutgoingEventType::disconnectPeers, nullptr, 0 };
     
     this->outgoingEventsMutex_->lock();
     this->outgoingEvents_.push_back(outEvent);
@@ -100,7 +100,7 @@
   void Connection::addPacket(ENetPacket* packet, uint32_t peerID, uint8_t channelID)
   {
 //     this->overallMutex_->lock();
-    outgoingEvent outEvent = { peerID, outgoingEventType::sendPacket, packet, channelID };
+    outgoingEvent outEvent = { peerID, OutgoingEventType::sendPacket, packet, channelID };
     
     this->outgoingEventsMutex_->lock();
     this->outgoingEvents_.push_back(outEvent);
@@ -111,7 +111,7 @@
   void Connection::broadcastPacket(ENetPacket* packet, uint8_t channelID)
   {
 //     this->overallMutex_->lock();
-    outgoingEvent outEvent = { 0, outgoingEventType::broadcastPacket, packet, channelID };
+    outgoingEvent outEvent = { 0, OutgoingEventType::broadcastPacket, packet, channelID };
     
     this->outgoingEventsMutex_->lock();
     this->outgoingEvents_.push_back(outEvent);
@@ -196,7 +196,7 @@
     ENetPeer* peer;
     switch( event.type )
     {
-      case outgoingEventType::sendPacket:
+      case OutgoingEventType::sendPacket:
         // check whether the peer is still/already in the peer list
         if( this->peerMap_.find(event.peerID) != this->peerMap_.end() )
         {
@@ -210,7 +210,7 @@
           enet_packet_destroy(event.packet);
         }
         break;
-      case outgoingEventType::disconnectPeer:
+      case OutgoingEventType::disconnectPeer:
         if( this->peerMap_.find(event.peerID) != this->peerMap_.end() )
         {
           peer = this->peerMap_[event.peerID];
@@ -222,10 +222,10 @@
           assert(event.peerID<this->nextPeerID_);
         }
         break;
-      case outgoingEventType::disconnectPeers:
+      case OutgoingEventType::disconnectPeers:
         disconnectPeersInternal();
         break;
-      case outgoingEventType::broadcastPacket:
+      case OutgoingEventType::broadcastPacket:
         enet_host_broadcast( this->host_, event.channelID, event.packet );
         break;
       default:
@@ -270,13 +270,13 @@
       // process event
       switch( inEvent.type )
       {
-        case incomingEventType::peerConnect:
+        case IncomingEventType::peerConnect:
           addPeer(inEvent.peerID);
           break;
-        case incomingEventType::peerDisconnect:
+        case IncomingEventType::peerDisconnect:
           removePeer(inEvent.peerID);
           break;
-        case incomingEventType::receivePacket:
+        case IncomingEventType::receivePacket:
           processPacket(inEvent.packet);
           break;
         default:
@@ -321,7 +321,7 @@
     this->peerIDMap_[event.peer] = peerID;
     
     // create new peerEvent and return it
-    incomingEvent inEvent = { peerID, incomingEventType::peerConnect, nullptr };
+    incomingEvent inEvent = { peerID, IncomingEventType::peerConnect, nullptr };
     return inEvent;
   }
   
@@ -336,7 +336,7 @@
     this->peerMap_.erase(this->peerMap_.find(peerID));
     
     // create new peerEvent and return it
-    incomingEvent inEvent = { peerID, incomingEventType::peerDisconnect, nullptr };
+    incomingEvent inEvent = { peerID, IncomingEventType::peerDisconnect, nullptr };
     return inEvent;
   }
   
@@ -350,7 +350,7 @@
     packet::Packet* p = packet::Packet::createPacket(event.packet, peerID);
     
     // create new peerEvent and return it
-    incomingEvent inEvent = { peerID, incomingEventType::receivePacket, p };
+    incomingEvent inEvent = { peerID, IncomingEventType::receivePacket, p };
     return inEvent;
   }
 

Modified: code/branches/cpp11_v3/src/libraries/network/Connection.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/Connection.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/Connection.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -59,42 +59,34 @@
   const unsigned int NETWORK_WAIT_TIMEOUT           = 1;
   const unsigned int NETWORK_MAX_QUEUE_PROCESS_TIME = 5;
   
-  namespace incomingEventType
+  enum class IncomingEventType
   {
-    enum Value
-    {
-      receivePacket   = 1,  // incoming packet
-      peerConnect     = 2,  // incoming connect request
-      peerDisconnect  = 3   // incoming disconnect request
-    };
-    
-  }
+    receivePacket   = 1,  // incoming packet
+    peerConnect     = 2,  // incoming connect request
+    peerDisconnect  = 3   // incoming disconnect request
+  };
   
-  namespace outgoingEventType
+  enum class OutgoingEventType
   {
-    enum Value
-    {
-      sendPacket      = 1,  // outgoing packet
-      broadcastPacket = 2,  // outgoing broadcast packet
-      disconnectPeer  = 3,  // outgoing disconnect request
-      disconnectPeers = 4   // outgoing disconnect request
-    };
-    
-  }
+    sendPacket      = 1,  // outgoing packet
+    broadcastPacket = 2,  // outgoing broadcast packet
+    disconnectPeer  = 3,  // outgoing disconnect request
+    disconnectPeers = 4   // outgoing disconnect request
+  };
   
   struct _NetworkExport incomingEvent
   {
-    uint32_t                  peerID;
-    incomingEventType::Value  type;
-    packet::Packet*           packet;
+    uint32_t          peerID;
+    IncomingEventType type;
+    packet::Packet*   packet;
   };
   
   struct _NetworkExport outgoingEvent
   {
-    uint32_t                  peerID;
-    outgoingEventType::Value  type;
-    ENetPacket*               packet;
-    ENetChannelID             channelID;
+    uint32_t          peerID;
+    OutgoingEventType type;
+    ENetPacket*       packet;
+    ENetChannelID     channelID;
   };
   
   class _NetworkExport Connection

Modified: code/branches/cpp11_v3/src/libraries/network/NetworkPrereqs.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/NetworkPrereqs.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/NetworkPrereqs.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -88,19 +88,16 @@
   {
     namespace PacketFlag
     {
-      enum Value
-      {
-        Reliable    = 1,
-        Unsequenced = 2,
-        NoAllocate  = 4
-      };
+      static constexpr uint32_t Reliable    = 1;
+      static constexpr uint32_t Unsequenced = 2;
+      static constexpr uint32_t NoAllocate  = 4;
     }
   }
 
   namespace StaticInitialization
   {
     typedef int Type;
-    static const Type NETWORK_FUNCTION = 6;
+    static constexpr Type NETWORK_FUNCTION = 6;
   }
 }
 

Modified: code/branches/cpp11_v3/src/libraries/network/packet/Acknowledgement.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/Acknowledgement.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/Acknowledgement.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -37,14 +37,14 @@
 
 #define PACKET_FLAGS_ACK    0
 #define _PACKETID           0
-#define _ACKID              _PACKETID + sizeof(packet::Type::Value)
+#define _ACKID              _PACKETID + sizeof(packet::Type)
 
 Acknowledgement::Acknowledgement( unsigned int id, unsigned int peerID )
  : Packet()
 {
   flags_ = flags_ | PACKET_FLAGS_ACK;
   data_=new uint8_t[ getSize() ];
-  *(Type::Value *)(data_ + _PACKETID ) = Type::Acknowledgement;
+  *(Type *)(data_ + _PACKETID ) = Type::Acknowledgement;
   *(uint32_t *)(data_ + _ACKID ) = id;
   peerID_=peerID;
 }

Modified: code/branches/cpp11_v3/src/libraries/network/packet/Chat.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/Chat.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/Chat.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -39,7 +39,7 @@
 
 /* Some lengths */
 #define _PACKETID         0
-#define _SOURCEID         _PACKETID + sizeof(Type::Value)
+#define _SOURCEID         _PACKETID + sizeof(Type)
 #define _TARGETID         _SOURCEID + sizeof(uint32_t)
 #define _MESSAGELENGTH    _TARGETID + sizeof(uint32_t)
 #define _MESSAGE          _MESSAGELENGTH + sizeof(uint32_t)
@@ -56,7 +56,7 @@
   /* allocate memory for the data */
   data_=new unsigned char[ getSize() ];
 
-  *(Type::Value *)(data_ + _PACKETID ) = Type::Chat;
+  *(Type *)(data_ + _PACKETID ) = Type::Chat;
   *(unsigned int *)(data_ + _SOURCEID ) = sourceID;
   *(unsigned int *)(data_ + _TARGETID ) = targetID;
   *(unsigned int *)(data_ + _MESSAGELENGTH ) = messageLength_;

Modified: code/branches/cpp11_v3/src/libraries/network/packet/ClassID.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/ClassID.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/ClassID.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -69,7 +69,7 @@
   this->data_=new uint8_t[ packetSize ];
   //set the appropriate packet id
   assert(this->data_);
-  *(Type::Value *)(this->data_ + _PACKETID ) = Type::ClassID;
+  *(Type *)(this->data_ + _PACKETID ) = Type::ClassID;
 
   uint8_t *temp=data_+sizeof(uint32_t);
   // save the number of all classes

Modified: code/branches/cpp11_v3/src/libraries/network/packet/DeleteObjects.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/DeleteObjects.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/DeleteObjects.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -38,7 +38,7 @@
 
 #define PACKET_FLAG_DELETE  PacketFlag::Reliable
 #define _PACKETID           0
-#define _QUANTITY           _PACKETID + sizeof(Type::Value)
+#define _QUANTITY           _PACKETID + sizeof(Type)
 #define _OBJECTIDS          _QUANTITY + sizeof(uint32_t)
 
 DeleteObjects::DeleteObjects()
@@ -62,11 +62,11 @@
   if(number==0)
     return false;
   orxout(verbose, context::packets) << "sending DeleteObjects: ";
-  unsigned int size = sizeof(Type::Value) + sizeof(uint32_t)*(number+1);
+  unsigned int size = sizeof(Type) + sizeof(uint32_t)*(number+1);
   data_ = new uint8_t[size];
   uint8_t *tdata = data_;
-  *reinterpret_cast<Type::Value*>(tdata) = Type::DeleteObjects;
-  tdata += sizeof(Type::Value);
+  *reinterpret_cast<Type*>(tdata) = Type::DeleteObjects;
+  tdata += sizeof(Type);
   *(uint32_t *)tdata = number;
   tdata += sizeof(uint32_t);
   for(unsigned int i=0; i<number; i++){

Modified: code/branches/cpp11_v3/src/libraries/network/packet/FunctionCalls.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/FunctionCalls.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/FunctionCalls.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -95,7 +95,7 @@
   this->minGamestateID_ = host->getCurrentGamestateID();
   assert(this->functionCalls_.size());
   data_=new uint8_t[ currentSize_ ];
-  *(Type::Value *)(data_ + _PACKETID ) = Type::FunctionCalls; // Set the Packet ID
+  *(Type *)(data_ + _PACKETID ) = Type::FunctionCalls; // Set the Packet ID
   *(uint32_t*)(data_+sizeof(uint32_t)) = this->functionCalls_.size(); // set nrOfCalls
   *(uint32_t*)(data_+2*sizeof(uint32_t)) = this->minGamestateID_; // set minGamestateID_
   uint8_t* temp = data_+3*sizeof(uint32_t);

Modified: code/branches/cpp11_v3/src/libraries/network/packet/FunctionIDs.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/FunctionIDs.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/FunctionIDs.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -70,7 +70,7 @@
   this->data_=new uint8_t[ packetSize ];
   //set the appropriate packet id
   assert(this->data_);
-  *(Type::Value *)(this->data_ + _PACKETID ) = Type::FunctionIDs;
+  *(Type *)(this->data_ + _PACKETID ) = Type::FunctionIDs;
 
   uint8_t *temp=data_+sizeof(uint32_t);
   // save the number of all classes

Modified: code/branches/cpp11_v3/src/libraries/network/packet/Gamestate.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/Gamestate.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/Gamestate.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -55,11 +55,11 @@
   public:
     GamestateHeader(){ data_=nullptr; }
     GamestateHeader(uint8_t* data)
-      { assert(data); data_ = data; *(uint32_t*)data_ = Type::Gamestate; }
+      { assert(data); data_ = data; *(Type*)data_ = Type::Gamestate; }
     /*GamestateHeader(uint8_t* data, GamestateHeader* h)
       { assert(data); data_=data; memcpy(data_, h->data_, getSize()); }*/
     void setData(uint8_t* data)
-      { assert(data); data_ = data; *(uint32_t*)data_ = Type::Gamestate; }
+      { assert(data); data_ = data; *(Type*)data_ = Type::Gamestate; }
     static inline uint32_t getSize()
       { return 21; }
 

Modified: code/branches/cpp11_v3/src/libraries/network/packet/Packet.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/Packet.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/Packet.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -156,7 +156,7 @@
     }
   }
 #ifndef NDEBUG
-  switch( *(Type::Value *)(data_ + _PACKETID) )
+  switch( *(Type *)(data_ + _PACKETID) )
   {
     case Type::Acknowledgement:
     case Type::Chat:
@@ -190,8 +190,8 @@
 //   if( peerID==static_cast<unsigned int>(-2))
 //     peerID = NETWORK_PEER_ID_SERVER;
   Packet *p = nullptr;
-//   orxout(verbose_ultra, context::packets) << "packet type: " << *(Type::Value *)&data[_PACKETID] << endl;
-  switch( *(Type::Value *)(data + _PACKETID) )
+//   orxout(verbose_ultra, context::packets) << "packet type: " << *(Type *)&data[_PACKETID] << endl;
+  switch( *(Type *)(data + _PACKETID) )
   {
     case Type::Acknowledgement:
 //       orxout(verbose_more, context::packets) << "ack" << endl;

Modified: code/branches/cpp11_v3/src/libraries/network/packet/Packet.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/Packet.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/Packet.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -37,29 +37,23 @@
 namespace packet
 {
 
-namespace Direction
+enum class Direction
 {
-  enum Value
-  {
-    Incoming,
-    Outgoing,
-    Bidirectional
-  };
-}
-namespace Type
+  Incoming,
+  Outgoing,
+  Bidirectional
+};
+enum class Type : uint8_t
 {
-  enum Value
-  {
-    Acknowledgement,
-    Chat,
-    ClassID,
-    DeleteObjects,
-    FunctionIDs,
-    FunctionCalls,
-    Gamestate,
-    Welcome
-  };
-}
+  Acknowledgement,
+  Chat,
+  ClassID,
+  DeleteObjects,
+  FunctionIDs,
+  FunctionCalls,
+  Gamestate,
+  Welcome
+};
 
 /**
     @author Oliver Scheuss <scheusso [at] ee.ethz.ch>
@@ -97,7 +91,7 @@
     uint32_t flags_;
     unsigned int peerID_;
     uint32_t requiredGamestateID_;
-    Direction::Value packetDirection_;
+    Direction packetDirection_;
     /** Pointer to the data. Be careful when deleting it because it might
         point to a location that was allocated by ENet.
         See bDataENetAllocated_ */

Modified: code/branches/cpp11_v3/src/libraries/network/packet/Welcome.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/packet/Welcome.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/packet/Welcome.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -40,7 +40,7 @@
 
 #define PACKET_FLAGS_CLASSID  PacketFlag::Reliable
 #define _PACKETID             0
-#define _CLIENTID             _PACKETID + sizeof(Type::Value)
+#define _CLIENTID             _PACKETID + sizeof(Type)
 #define _ENDIANTEST           _CLIENTID + sizeof(uint32_t)
 
   Welcome::Welcome( uint32_t clientID )
@@ -50,7 +50,7 @@
   assert(getSize());
   data_=new uint8_t[ getSize() ];
   assert(data_);
-  *(packet::Type::Value *)(data_ + _PACKETID ) = packet::Type::Welcome;
+  *(packet::Type *)(data_ + _PACKETID ) = packet::Type::Welcome;
   *(uint32_t *)(data_ + _CLIENTID ) = static_cast<uint32_t>(clientID);
   *(uint32_t *)(data_ + _ENDIANTEST ) = 0xFEDC4321;
 }
@@ -69,7 +69,7 @@
 }
 
 unsigned int Welcome::getSize() const{
-  return sizeof(packet::Type::Value) + 2*sizeof(uint32_t);
+  return sizeof(packet::Type) + 2*sizeof(uint32_t);
 }
 
 bool Welcome::process(orxonox::Host* host){

Modified: code/branches/cpp11_v3/src/libraries/network/synchronisable/Synchronisable.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/network/synchronisable/Synchronisable.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/network/synchronisable/Synchronisable.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -37,6 +37,7 @@
 #include <map>
 #include <queue>
 #include <set>
+#include <type_traits>
 
 #include "util/mbool.h"
 #include "util/Output.h"
@@ -202,22 +203,35 @@
     static std::queue<uint32_t> deletedObjects_;
   };
 
-  template <class T> void Synchronisable::registerVariable(T& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)
+  namespace detail
   {
+    template <class T, bool = std::is_enum<T>::value>
+    struct UnderlyingType;
+    template <class T>
+    struct UnderlyingType<T, true> { typedef typename std::underlying_type<T>::type type; };
+    template <class T>
+    struct UnderlyingType<T, false> { typedef T type; };
+  }
+
+  template <class T>
+  void Synchronisable::registerVariable(T& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)
+  {
+    typedef typename detail::UnderlyingType<T>::type UnderlyingType;
     if (bidirectional)
     {
-      syncList_.push_back(new SynchronisableVariableBidirectional<T>(variable, mode, cb));
+      syncList_.push_back(new SynchronisableVariableBidirectional<UnderlyingType>(reinterpret_cast<UnderlyingType&>(variable), mode, cb));
       this->dataSize_ += syncList_.back()->getSize(state_);
     }
     else
     {
-      syncList_.push_back(new SynchronisableVariable<T>(variable, mode, cb));
+      syncList_.push_back(new SynchronisableVariable<UnderlyingType>(reinterpret_cast<UnderlyingType&>(variable), mode, cb));
       if ( this->state_ == mode )
         this->dataSize_ += syncList_.back()->getSize(state_);
     }
   }
   
-  template <class T> void Synchronisable::unregisterVariable(T& variable)
+  template <class T>
+  void Synchronisable::unregisterVariable(T& variable)
   {
     std::vector<SynchronisableVariableBase*>::iterator it = syncList_.begin();
     while(it!=syncList_.end())
@@ -237,13 +251,15 @@
     // the variable has not been registered before
   }
 
-  template <class T> void Synchronisable::registerVariable( std::set<T>& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)
+  template <class T>
+  void Synchronisable::registerVariable( std::set<T>& variable, uint8_t mode, NetworkCallbackBase *cb, bool bidirectional)
   {
+    typedef typename detail::UnderlyingType<T>::type UnderlyingType;
     SynchronisableVariableBase* sv;
     if (bidirectional)
-      sv = new SynchronisableVariableBidirectional<std::set<T>>(variable, mode, cb);
+      sv = new SynchronisableVariableBidirectional<std::set<UnderlyingType>>(reinterpret_cast<std::set<UnderlyingType>&>(variable), mode, cb);
     else
-      sv = new SynchronisableVariable<std::set<T>>(variable, mode, cb);
+      sv = new SynchronisableVariable<std::set<UnderlyingType>>(reinterpret_cast<std::set<UnderlyingType>&>(variable), mode, cb);
     syncList_.push_back(sv);
     stringList_.push_back(sv);
   }

Modified: code/branches/cpp11_v3/src/libraries/util/Math.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/util/Math.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/util/Math.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -46,6 +46,7 @@
 #include <cmath>
 #include <cstdlib>
 #include <random>
+#include <type_traits>
 
 #include <OgreMath.h>
 #include <OgreVector2.h>
@@ -177,12 +178,18 @@
         for @c float it's 0.0f. For a @c std::string the function returns "" and for
         @c Vector3 you get <tt>Vector3(0, 0, 0)</tt>.
     */
-    template <typename T>
-    inline T zeroise()
+    template <typename T> /* for normal classes */ typename std::enable_if<!std::is_enum<T>::value, T>::type
+    inline /*T*/ zeroise()
     {
         // If you reach this code, you abused zeroise()!
         static_assert(sizeof(T) != sizeof(T), "No template specialization available for T");
     }
+    /// Implementation for enum classes: uses the underlying type to create a zero value.
+    template <typename T> /* for enum classes */ typename std::enable_if<std::is_enum<T>::value, T>::type
+    inline /*T*/ zeroise()
+    {
+        return static_cast<T>(zeroise<typename std::underlying_type<T>::type>());
+    }
 
     template <> inline char                 zeroise<char>()                 { return 0; }
     template <> inline unsigned char        zeroise<unsigned char>()        { return 0; }

Modified: code/branches/cpp11_v3/src/libraries/util/MultiType.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/util/MultiType.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/util/MultiType.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -42,7 +42,7 @@
         @brief Converts the current value of the MultiType to a new type.
         @param type The type
     */
-    bool MultiType::convert(Type::Enum type)
+    bool MultiType::convert(Type type)
     {
         switch (type)
         {
@@ -105,7 +105,7 @@
     */
     std::string MultiType::getTypename() const
     {
-        Type::Enum type = (this->value_) ? this->value_->type_ : Type::Null;
+        Type type = (this->value_) ? this->value_->type_ : Type::Null;
 
         switch (type)
         {

Modified: code/branches/cpp11_v3/src/libraries/util/MultiType.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/util/MultiType.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/util/MultiType.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -131,38 +131,35 @@
         _UtilExport friend std::ostream& operator<<(std::ostream& outstream, const MultiType& mt);
         template <typename T> friend class MT_Value;
 
-        struct Type
+        /**
+            @brief Enum of all possible types of a MultiType.
+        */
+        enum class Type : uint8_t
         {
-            /**
-                @brief Enum of all possible types of a MultiType.
-            */
-            enum Enum
-            {
-                Null,
-                Char,
-                UnsignedChar,
-                Short,
-                UnsignedShort,
-                Int,
-                UnsignedInt,
-                Long,
-                UnsignedLong,
-                LongLong,
-                UnsignedLongLong,
-                Float,
-                Double,
-                LongDouble,
-                Bool,
-                VoidPointer,
-                String,
-                Vector2,
-                Vector3,
-                Vector4,
-                ColourValue,
-                Quaternion,
-                Radian,
-                Degree
-            };
+            Null,
+            Char,
+            UnsignedChar,
+            Short,
+            UnsignedShort,
+            Int,
+            UnsignedInt,
+            Long,
+            UnsignedLong,
+            LongLong,
+            UnsignedLongLong,
+            Float,
+            Double,
+            LongDouble,
+            Bool,
+            VoidPointer,
+            String,
+            Vector2,
+            Vector3,
+            Vector4,
+            ColourValue,
+            Quaternion,
+            Radian,
+            Degree
         };
 
     public:
@@ -173,7 +170,7 @@
         class _UtilExport MT_ValueBase
         {
         public:
-            inline MT_ValueBase(void* data, Type::Enum type) : type_(type), bLastConversionSuccessful(true), data_(data) {}
+            inline MT_ValueBase(void* data, Type type) : type_(type), bLastConversionSuccessful(true), data_(data) {}
             virtual inline ~MT_ValueBase() {}
 
             virtual MT_ValueBase* clone() const = 0;
@@ -181,10 +178,23 @@
             virtual void reset() = 0;
 
             /// Returns the type of the current value.
-            inline const Type::Enum& getType() const { return this->type_; }
-            /// Returns true if the type of the stored value is T.
-            template <typename T> inline bool isType() const { return false; }
+            inline const Type& getType() const { return this->type_; }
 
+            /// Returns true if the type of the stored value is T. Note: the actual implementations for all supported types are defined outside of the class.
+            template <typename T> /* for normal classes */ typename std::enable_if<!std::is_enum<T>::value, bool>::type
+            inline /*bool*/ isType() const
+            {
+                // If you reach this code, you used MultiType with an unsupported type T
+                static_assert(sizeof(T) != sizeof(T), "No template specialization available for T");
+                return false;
+            }
+            /// Implementation for enum classes: Returns true if the type of the stored value is the underlying type of T.
+            template <typename T> /* for enum classes */ typename std::enable_if<std::is_enum<T>::value, bool>::type
+            inline /*bool*/ isType() const
+            {
+                return this->isType<typename std::underlying_type<T>::type>();
+            }
+
             /// Checks whether the value is a default one.
             inline bool lastConversionSuccessful()   const { return this->bLastConversionSuccessful; }
 
@@ -214,6 +224,20 @@
 
             virtual bool setValue(const MultiType& other)            = 0;
 
+            template <typename T> /* for normal classes */ typename std::enable_if<!std::is_enum<T>::value, bool>::type
+            inline /*bool*/ setValue(const T& value)
+            {
+                // If you reach this code, you used MultiType with an unsupported type T
+                static_assert(sizeof(T) != sizeof(T), "No template specialization available for T");
+                return false;
+            }
+            template <typename T> /* for enum classes */ typename std::enable_if<std::is_enum<T>::value, bool>::type
+            inline /*bool*/ setValue(const T& value)
+            {
+                typedef typename std::underlying_type<T>::type UnderlyingType;
+                return this->setValue(reinterpret_cast<const UnderlyingType&>(value));
+            }
+
             virtual bool getValue(char*                 value) const = 0;
             virtual bool getValue(unsigned char*        value) const = 0;
             virtual bool getValue(short*                value) const = 0;
@@ -238,6 +262,20 @@
             virtual bool getValue(orxonox::Radian*      value) const = 0;
             virtual bool getValue(orxonox::Degree*      value) const = 0;
 
+            template <typename T> /* for normal classes */ typename std::enable_if<!std::is_enum<T>::value, bool>::type
+            inline /*bool*/ getValue(T* value) const
+            {
+                // If you reach this code, you used MultiType with an unsupported type T
+                static_assert(sizeof(T) != sizeof(T), "No template specialization available for T");
+                return false;
+            }
+            template <typename T> /* for enum classes */ typename std::enable_if<std::is_enum<T>::value, bool>::type
+            inline /*bool*/ getValue(T* value) const
+            {
+                typedef typename std::underlying_type<T>::type UnderlyingType;
+                return this->getValue(reinterpret_cast<UnderlyingType*>(value));
+            }
+
             template <typename T> T get() const
             {
                 if (this->isType<T>())
@@ -256,7 +294,7 @@
             virtual void exportData(uint8_t*& mem) const = 0;
             virtual uint8_t getSize() const = 0;
 
-            Type::Enum type_;               ///< The type of the current value
+            Type type_;                     ///< The type of the current value
             bool bLastConversionSuccessful; ///< True if the last conversion was successful
             void* data_;                    ///< For direct access to the value if the type is known
         };
@@ -353,9 +391,12 @@
             /// Assigns the value to the given pointer. The value gets converted if the types don't match.
             template <typename T> inline bool getValue(T* value) const { if (this->value_) { return this->value_->getValue(value); } return false; }
 
-            /// Returns the current value, converted to the requested type. This base implementation works only for pointers. All other supported types are
-            /// implemented in  specialized functions at the bottom of this file.
-            template <typename T> inline T get() const { return static_cast<T>(this->get<void*>()); }
+            /// Returns the current value, converted to the requested type.
+            template <typename T> /* for normal types */ typename std::enable_if<!std::is_pointer<T>::value, T>::type
+            inline /*T*/ get() const { return (this->value_ ? this->value_->get<T>() : NilValue<T>()); }
+            /// Returns the current value, converted to a pointer of the requested type.
+            template <typename T> /* for pointers */ typename std::enable_if<std::is_pointer<T>::value, T>::type
+            inline /*T*/ get() const { return this->value_ ? static_cast<T>(this->value_->get<void*>()) : nullptr; }
 
 
             ///////////////////////////////
@@ -364,16 +405,16 @@
             /// Saves the value of the MT to a bytestream (pointed at by mem) and increases mem pointer by size of MT
             inline void exportData(uint8_t*& mem) const
             {
-                assert(sizeof(Type::Enum) <= 8);
-                *static_cast<uint8_t*>(mem) = this->getType();
+                assert(sizeof(Type) <= 8);
+                *static_cast<uint8_t*>(mem) = static_cast<uint8_t>(this->getType());
                 mem += sizeof(uint8_t);
                 this->value_->exportData(mem);
             }
             /// Loads the value of the MT from a bytestream (pointed at by mem) and increases mem pointer by size of MT
             inline void importData(uint8_t*& mem)
             {
-                assert(sizeof(Type::Enum) <= 8);
-                this->setType(static_cast<Type::Enum>(*static_cast<uint8_t*>(mem)));
+                assert(sizeof(Type) <= 8);
+                this->setType(static_cast<Type>(*static_cast<uint8_t*>(mem)));
                 mem += sizeof(uint8_t);
                 this->value_->importData(mem);
             }
@@ -413,11 +454,11 @@
             }
 
             /// Resets the value and changes the internal type to the given type.
-            inline void setType(Type::Enum type) { this->reset(); this->convert(type); this->resetValue(); }
+            inline void setType(Type type) { this->reset(); this->convert(type); this->resetValue(); }
             /// Returns the current type.
-            inline Type::Enum getType() const { return (this->value_) ? this->value_->type_ : Type::Null; }
+            inline Type getType() const { return (this->value_) ? this->value_->type_ : Type::Null; }
             /// Converts the current value to the given type.
-            bool convert(Type::Enum type);
+            bool convert(Type type);
 
             /// Changes the value container.
             template <typename T> inline void changeValueContainer(const T& value)
@@ -427,11 +468,19 @@
                 this->createNewValueContainer(value);
             }
             /// Creates a new value container (works only with specialized types).
-            template <typename T> inline void createNewValueContainer(const T& value)
+            template <typename T> /* for normal classes */ typename std::enable_if<!std::is_enum<T>::value>::type
+            inline /*void*/ createNewValueContainer(const T& value)
             { 
                 // If you reach this code, you used MultiType with an unsupported type T
                 static_assert(sizeof(T) != sizeof(T), "No template specialization available for T");
             }
+            /// Creates a new value container (implementation for enum classes that must be cast to the underlying type).
+            template <typename T> /* for enum classes */ typename std::enable_if<std::is_enum<T>::value>::type
+            inline /*void*/ createNewValueContainer(const T& value)
+            {
+                typedef typename std::underlying_type<T>::type UnderlyingType;
+                this->createNewValueContainer<UnderlyingType>(reinterpret_cast<const UnderlyingType&>(value));
+            }
 
             MT_ValueBase* value_; //!< A pointer to the value container
     };
@@ -475,30 +524,6 @@
     template <> inline bool MultiType::isType<void>() const { return this->null(); }
     template <> inline bool MultiType::convert<void>() { this->reset(); return true; }
 
-    template <> inline char                 MultiType::get() const { return (this->value_ ? this->value_->get<char>()                 : 0); }
-    template <> inline unsigned char        MultiType::get() const { return (this->value_ ? this->value_->get<unsigned char>()        : 0); }
-    template <> inline short                MultiType::get() const { return (this->value_ ? this->value_->get<short>()                : 0); }
-    template <> inline unsigned short       MultiType::get() const { return (this->value_ ? this->value_->get<unsigned short>()       : 0); }
-    template <> inline int                  MultiType::get() const { return (this->value_ ? this->value_->get<int>()                  : 0); }
-    template <> inline unsigned int         MultiType::get() const { return (this->value_ ? this->value_->get<unsigned int>()         : 0); }
-    template <> inline long                 MultiType::get() const { return (this->value_ ? this->value_->get<long>()                 : 0); }
-    template <> inline unsigned long        MultiType::get() const { return (this->value_ ? this->value_->get<unsigned long>()        : 0); }
-    template <> inline long long            MultiType::get() const { return (this->value_ ? this->value_->get<long long>()            : 0); }
-    template <> inline unsigned long long   MultiType::get() const { return (this->value_ ? this->value_->get<unsigned long long>()   : 0); }
-    template <> inline float                MultiType::get() const { return (this->value_ ? this->value_->get<float>()                : 0); }
-    template <> inline double               MultiType::get() const { return (this->value_ ? this->value_->get<double>()               : 0); }
-    template <> inline long double          MultiType::get() const { return (this->value_ ? this->value_->get<long double>()          : 0); }
-    template <> inline bool                 MultiType::get() const { return (this->value_ ? this->value_->get<bool>()                 : 0); }
-    template <> inline void*                MultiType::get() const { return (this->value_ ? this->value_->get<void*>()                : nullptr); }
-    template <> inline std::string          MultiType::get() const { return (this->value_ ? this->value_->get<std::string>()          : NilValue<std::string>()); }
-    template <> inline orxonox::Vector2     MultiType::get() const { return (this->value_ ? this->value_->get<orxonox::Vector2>()     : NilValue<orxonox::Vector2>()); }
-    template <> inline orxonox::Vector3     MultiType::get() const { return (this->value_ ? this->value_->get<orxonox::Vector3>()     : NilValue<orxonox::Vector3>()); }
-    template <> inline orxonox::Vector4     MultiType::get() const { return (this->value_ ? this->value_->get<orxonox::Vector4>()     : NilValue<orxonox::Vector4>()); }
-    template <> inline orxonox::ColourValue MultiType::get() const { return (this->value_ ? this->value_->get<orxonox::ColourValue>() : NilValue<orxonox::ColourValue>()); }
-    template <> inline orxonox::Quaternion  MultiType::get() const { return (this->value_ ? this->value_->get<orxonox::Quaternion>()  : NilValue<orxonox::Quaternion>()); }
-    template <> inline orxonox::Radian      MultiType::get() const { return (this->value_ ? this->value_->get<orxonox::Radian>()      : NilValue<orxonox::Radian>()); }
-    template <> inline orxonox::Degree      MultiType::get() const { return (this->value_ ? this->value_->get<orxonox::Degree>()      : NilValue<orxonox::Degree>()); }
-
     template <> _UtilExport void MultiType::createNewValueContainer(const char& value);
     template <> _UtilExport void MultiType::createNewValueContainer(const unsigned char& value);
     template <> _UtilExport void MultiType::createNewValueContainer(const short& value);

Modified: code/branches/cpp11_v3/src/libraries/util/MultiTypeValue.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/util/MultiTypeValue.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/util/MultiTypeValue.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -54,7 +54,7 @@
     {
     public:
         /// Constructor: Assigns the value and the type identifier.
-        MT_Value(const T& value, MultiType::Type::Enum type) : MT_ValueBase(&this->value_, type), value_(value) {}
+        MT_Value(const T& value, MultiType::Type type) : MT_ValueBase(&this->value_, type), value_(value) {}
 
         /// Creates a copy of itself.
         virtual inline MT_ValueBase* clone() const override { return new MT_Value<T>(this->value_, this->type_); }

Modified: code/branches/cpp11_v3/src/libraries/util/SubString.cc
===================================================================
--- code/branches/cpp11_v3/src/libraries/util/SubString.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/util/SubString.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -264,12 +264,12 @@
         std::string token;
         bool inSafemode = false;
 
-        if(start_state != SL_NORMAL && tokens.size() > 0)
+        if(start_state != SPLIT_LINE_STATE::NORMAL && tokens.size() > 0)
         {
             token = tokens[tokens.size()-1];
             tokens.pop_back();
         }
-        if(start_state != SL_NORMAL && bTokenInSafemode.size() > 0)
+        if(start_state != SPLIT_LINE_STATE::NORMAL && bTokenInSafemode.size() > 0)
         {
             inSafemode = bTokenInSafemode[bTokenInSafemode.size()-1];
             bTokenInSafemode.pop_back();
@@ -279,17 +279,17 @@
         {
             switch(state)
             {
-            case SL_NORMAL:
+            case SPLIT_LINE_STATE::NORMAL:
                 if(line[i] == escapeChar)
                 {
-                    state = SL_ESCAPE;
+                    state = SPLIT_LINE_STATE::ESCAPE;
                     if (!bRemoveEscapeChar)
                         token += line[i];
                     fallBackNeighbours = 0;
                 }
                 else if(line[i] == safemodeChar)
                 {
-                    state = SL_SAFEMODE;
+                    state = SPLIT_LINE_STATE::SAFEMODE;
                     inSafemode = true;
                     if (!bRemoveSafemodeChar)
                         token += line[i];
@@ -297,7 +297,7 @@
                 }
                 else if(line[i] == openparenthesisChar)
                 {
-                    state = SL_PARENTHESES;
+                    state = SPLIT_LINE_STATE::PARENTHESES;
                     inSafemode = true;
                     if (!bRemoveParenthesisChars)
                         token += line[i];
@@ -317,7 +317,7 @@
                         inSafemode = false;
                     }
                     token += line[i];       // EAT
-                    state = SL_COMMENT;
+                    state = SPLIT_LINE_STATE::COMMENT;
                 }
                 else if(delimiters.find(line[i]) != std::string::npos)
                 {
@@ -333,7 +333,7 @@
                         bTokenInSafemode.push_back(inSafemode);
                         inSafemode = false;
                     }
-                    state = SL_NORMAL;
+                    state = SPLIT_LINE_STATE::NORMAL;
                 }
                 else
                 {
@@ -352,7 +352,7 @@
                     token += line[i];       // EAT
                 }
                 break;
-            case SL_ESCAPE:
+            case SPLIT_LINE_STATE::ESCAPE:
                 if (!bRemoveSafemodeChar)
                     token += line[i];
                 else
@@ -367,18 +367,18 @@
                     else if(line[i] == '?') token += '\?';
                     else token += line[i];  // EAT
                 }
-                state = SL_NORMAL;
+                state = SPLIT_LINE_STATE::NORMAL;
                 break;
-            case SL_SAFEMODE:
+            case SPLIT_LINE_STATE::SAFEMODE:
                 if(line[i] == safemodeChar)
                 {
-                    state = SL_NORMAL;
+                    state = SPLIT_LINE_STATE::NORMAL;
                     if (!bRemoveSafemodeChar)
                         token += line[i];
                 }
                 else if(line[i] == escapeChar)
                 {
-                    state = SL_SAFEESCAPE;
+                    state = SPLIT_LINE_STATE::SAFEESCAPE;
                 }
                 else
                 {
@@ -386,7 +386,7 @@
                 }
                 break;
 
-            case SL_SAFEESCAPE:
+            case SPLIT_LINE_STATE::SAFEESCAPE:
                 if(line[i] == 'n') token += '\n';
                 else if(line[i] == 't') token += '\t';
                 else if(line[i] == 'v') token += '\v';
@@ -396,19 +396,19 @@
                 else if(line[i] == 'a') token += '\a';
                 else if(line[i] == '?') token += '\?';
                 else token += line[i];  // EAT
-                state = SL_SAFEMODE;
+                state = SPLIT_LINE_STATE::SAFEMODE;
                 break;
 
-            case SL_PARENTHESES:
+            case SPLIT_LINE_STATE::PARENTHESES:
                 if(line[i] == closeparenthesisChar)
                 {
-                    state = SL_NORMAL;
+                    state = SPLIT_LINE_STATE::NORMAL;
                     if (!bRemoveParenthesisChars)
                         token += line[i];
                 }
                 else if(line[i] == escapeChar)
                 {
-                    state = SL_PARENTHESESESCAPE;
+                    state = SPLIT_LINE_STATE::PARENTHESESESCAPE;
                 }
                 else
                 {
@@ -416,7 +416,7 @@
                 }
                 break;
 
-            case SL_PARENTHESESESCAPE:
+            case SPLIT_LINE_STATE::PARENTHESESESCAPE:
                 if(line[i] == 'n') token += '\n';
                 else if(line[i] == 't') token += '\t';
                 else if(line[i] == 'v') token += '\v';
@@ -426,10 +426,10 @@
                 else if(line[i] == 'a') token += '\a';
                 else if(line[i] == '?') token += '\?';
                 else token += line[i];  // EAT
-                state = SL_PARENTHESES;
+                state = SPLIT_LINE_STATE::PARENTHESES;
                 break;
 
-            case SL_COMMENT:
+            case SPLIT_LINE_STATE::COMMENT:
                 if(line[i] == '\n')
                 {
                     // FINISH
@@ -440,7 +440,7 @@
                         bTokenInSafemode.push_back(inSafemode);
                         inSafemode = false;
                     }
-                    state = SL_NORMAL;
+                    state = SPLIT_LINE_STATE::NORMAL;
                 }
                 else
                 {

Modified: code/branches/cpp11_v3/src/libraries/util/SubString.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/util/SubString.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/util/SubString.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -101,15 +101,15 @@
     class _UtilExport SubString
     {
         /// An enumerator for the internal state of the parser
-        enum SPLIT_LINE_STATE
+        enum class SPLIT_LINE_STATE
         {
-            SL_NORMAL,            //!< Normal state
-            SL_ESCAPE,            //!< After an escape character
-            SL_SAFEMODE,          //!< In safe mode (usually between quotation marks).
-            SL_SAFEESCAPE,        //!< In safe mode with the internal escape character, that escapes even the savemode character.
-            SL_COMMENT,           //!< In Comment mode.
-            SL_PARENTHESES,       //!< Between parentheses (usually '{' and '}')
-            SL_PARENTHESESESCAPE, //!< Between parentheses with the internal escape character, that escapes even the closing parenthesis character.
+            NORMAL,            //!< Normal state
+            ESCAPE,            //!< After an escape character
+            SAFEMODE,          //!< In safe mode (usually between quotation marks).
+            SAFEESCAPE,        //!< In safe mode with the internal escape character, that escapes even the savemode character.
+            COMMENT,           //!< In Comment mode.
+            PARENTHESES,       //!< Between parentheses (usually '{' and '}')
+            PARENTHESESESCAPE, //!< Between parentheses with the internal escape character, that escapes even the closing parenthesis character.
         };
 
     public:
@@ -203,7 +203,7 @@
                                           char closeparenthesisChar = '}',
                                           bool bRemoveParenthesisChars = true,
                                           char commentChar = '\0',
-                                          SPLIT_LINE_STATE start_state = SL_NORMAL);
+                                          SPLIT_LINE_STATE start_state = SPLIT_LINE_STATE::NORMAL);
 
         std::vector<std::string>  tokens_;              ///< The tokens after splitting the input line
         std::vector<bool>         bTokenInSafemode_;    ///< Saves for each token if it was in safe mode (between quotation marks or parenthesis)

Modified: code/branches/cpp11_v3/src/libraries/util/UtilPrereqs.h
===================================================================
--- code/branches/cpp11_v3/src/libraries/util/UtilPrereqs.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/libraries/util/UtilPrereqs.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -36,6 +36,7 @@
 #define _UtilPrereqs_H__
 
 #include "OrxonoxConfig.h"
+#include <string>
 
 //-----------------------------------------------------------------------
 // Shared library settings

Modified: code/branches/cpp11_v3/src/modules/gametypes/OldRaceCheckPoint.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/gametypes/OldRaceCheckPoint.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/gametypes/OldRaceCheckPoint.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -48,7 +48,7 @@
         this->bTimeLimit_ = 0;
 
         this->setRadarObjectColour(ColourValue::Blue);
-        this->setRadarObjectShape(RadarViewable::Triangle);
+        this->setRadarObjectShape(RadarViewable::Shape::Triangle);
         this->setRadarVisibility(false);
     }
 

Modified: code/branches/cpp11_v3/src/modules/gametypes/RaceCheckPoint.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/gametypes/RaceCheckPoint.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/gametypes/RaceCheckPoint.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -52,7 +52,7 @@
         this->setSimultaneousTriggerers(100);
 
         this->setRadarObjectColour(ColourValue::Blue);
-        this->setRadarObjectShape(RadarViewable::Triangle);
+        this->setRadarObjectShape(RadarViewable::Shape::Triangle);
         this->setRadarVisibility(false);
         this->settingsChanged();
 

Modified: code/branches/cpp11_v3/src/modules/jump/Jump.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/jump/Jump.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/jump/Jump.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -609,14 +609,14 @@
         const int numI = 6;
         const int numJ = 4;
 
-        enum PlatformType
+        enum class PlatformType
         {
-            PLATFORM_EMPTY, PLATFORM_STATIC, PLATFORM_HMOVE, PLATFORM_VMOVE, PLATFORM_DISAPPEAR, PLATFORM_TIMER, PLATFORM_FAKE
+            EMPTY, STATIC, HMOVE, VMOVE, DISAPPEAR, TIMER, FAKE
         };
 
-        enum ItemType
+        enum class ItemType
         {
-            ITEM_NOTHING, ITEM_SPRING, ITEM_PROPELLER, ITEM_ROCKET, ITEM_BOOTS, ITEM_SHIELD
+            NOTHING, SPRING, PROPELLER, ROCKET, BOOTS, SHIELD
         };
 
         struct PlatformMatrix
@@ -630,33 +630,33 @@
         {
             for (int j = 0; j < numJ; ++j)
             {
-                matrix[i][j].type = PLATFORM_EMPTY;
+                matrix[i][j].type = PlatformType::EMPTY;
                 matrix[i][j].done = false;
             }
         }
         PlatformType platformtype1;
         PlatformType platformtype2;
-        ItemType itemType = ITEM_NOTHING;
+        ItemType itemType = ItemType::NOTHING;
 
         if (rand()%2 == 0)
         {
-            itemType = ITEM_SPRING;
+            itemType = ItemType::SPRING;
         }
         else if (rand()%2 == 0 && sectionNumber_ > 3)
         {
             switch(rand()%4)
             {
             case 0:
-                itemType = ITEM_PROPELLER;
+                itemType = ItemType::PROPELLER;
                 break;
             case 1:
-                itemType = ITEM_ROCKET;
+                itemType = ItemType::ROCKET;
                 break;
             case 2:
-                itemType = ITEM_BOOTS;
+                itemType = ItemType::BOOTS;
                 break;
             case 3:
-                itemType = ITEM_SHIELD;
+                itemType = ItemType::SHIELD;
                 break;
             default:
                 break;
@@ -666,124 +666,124 @@
         switch((sectionNumber_ > 28) ? rand()%29 : rand()%(sectionNumber_+1))
         {
         case 0:
-            platformtype1 = PLATFORM_STATIC;
-            platformtype2 = PLATFORM_STATIC;
+            platformtype1 = PlatformType::STATIC;
+            platformtype2 = PlatformType::STATIC;
             break;
         case 1:
-            platformtype1 = PLATFORM_STATIC;
-            platformtype2 = PLATFORM_STATIC;
+            platformtype1 = PlatformType::STATIC;
+            platformtype2 = PlatformType::STATIC;
             break;
         case 2:
-            platformtype1 = PLATFORM_STATIC;
-            platformtype2 = PLATFORM_HMOVE;
+            platformtype1 = PlatformType::STATIC;
+            platformtype2 = PlatformType::HMOVE;
             break;
         case 3:
-            platformtype1 = PLATFORM_STATIC;
-            platformtype2 = PLATFORM_DISAPPEAR;
+            platformtype1 = PlatformType::STATIC;
+            platformtype2 = PlatformType::DISAPPEAR;
             break;
         case 4:
-            platformtype1 = PLATFORM_STATIC;
-            platformtype2 = PLATFORM_VMOVE;
+            platformtype1 = PlatformType::STATIC;
+            platformtype2 = PlatformType::VMOVE;
             break;
         case 5:
-            platformtype1 = PLATFORM_STATIC;
-            platformtype2 = PLATFORM_TIMER;
+            platformtype1 = PlatformType::STATIC;
+            platformtype2 = PlatformType::TIMER;
             break;
         case 6:
-            platformtype1 = PLATFORM_HMOVE;
-            platformtype2 = PLATFORM_STATIC;
+            platformtype1 = PlatformType::HMOVE;
+            platformtype2 = PlatformType::STATIC;
             break;
         case 7:
-            platformtype1 = PLATFORM_HMOVE;
-            platformtype2 = PLATFORM_HMOVE;
+            platformtype1 = PlatformType::HMOVE;
+            platformtype2 = PlatformType::HMOVE;
             break;
         case 8:
-            platformtype1 = PLATFORM_HMOVE;
-            platformtype2 = PLATFORM_HMOVE;
+            platformtype1 = PlatformType::HMOVE;
+            platformtype2 = PlatformType::HMOVE;
             break;
         case 9:
-            platformtype1 = PLATFORM_HMOVE;
-            platformtype2 = PLATFORM_DISAPPEAR;
+            platformtype1 = PlatformType::HMOVE;
+            platformtype2 = PlatformType::DISAPPEAR;
             break;
         case 10:
-            platformtype1 = PLATFORM_HMOVE;
-            platformtype2 = PLATFORM_VMOVE;
+            platformtype1 = PlatformType::HMOVE;
+            platformtype2 = PlatformType::VMOVE;
             break;
         case 11:
-            platformtype1 = PLATFORM_HMOVE;
-            platformtype2 = PLATFORM_TIMER;
+            platformtype1 = PlatformType::HMOVE;
+            platformtype2 = PlatformType::TIMER;
             break;
         case 12:
-            platformtype1 = PLATFORM_DISAPPEAR;
-            platformtype2 = PLATFORM_STATIC;
+            platformtype1 = PlatformType::DISAPPEAR;
+            platformtype2 = PlatformType::STATIC;
             break;
         case 13:
-            platformtype1 = PLATFORM_DISAPPEAR;
-            platformtype2 = PLATFORM_HMOVE;
+            platformtype1 = PlatformType::DISAPPEAR;
+            platformtype2 = PlatformType::HMOVE;
             break;
         case 14:
-            platformtype1 = PLATFORM_DISAPPEAR;
-            platformtype2 = PLATFORM_DISAPPEAR;
+            platformtype1 = PlatformType::DISAPPEAR;
+            platformtype2 = PlatformType::DISAPPEAR;
             break;
         case 15:
-            platformtype1 = PLATFORM_DISAPPEAR;
-            platformtype2 = PLATFORM_DISAPPEAR;
+            platformtype1 = PlatformType::DISAPPEAR;
+            platformtype2 = PlatformType::DISAPPEAR;
             break;
         case 16:
-            platformtype1 = PLATFORM_DISAPPEAR;
-            platformtype2 = PLATFORM_VMOVE;
+            platformtype1 = PlatformType::DISAPPEAR;
+            platformtype2 = PlatformType::VMOVE;
             break;
         case 17:
-            platformtype1 = PLATFORM_DISAPPEAR;
-            platformtype2 = PLATFORM_TIMER;
+            platformtype1 = PlatformType::DISAPPEAR;
+            platformtype2 = PlatformType::TIMER;
             break;
         case 18:
-            platformtype1 = PLATFORM_VMOVE;
-            platformtype2 = PLATFORM_STATIC;
+            platformtype1 = PlatformType::VMOVE;
+            platformtype2 = PlatformType::STATIC;
             break;
         case 19:
-            platformtype1 = PLATFORM_VMOVE;
-            platformtype2 = PLATFORM_HMOVE;
+            platformtype1 = PlatformType::VMOVE;
+            platformtype2 = PlatformType::HMOVE;
             break;
         case 20:
-            platformtype1 = PLATFORM_VMOVE;
-            platformtype2 = PLATFORM_DISAPPEAR;
+            platformtype1 = PlatformType::VMOVE;
+            platformtype2 = PlatformType::DISAPPEAR;
             break;
         case 21:
-            platformtype1 = PLATFORM_VMOVE;
-            platformtype2 = PLATFORM_VMOVE;
+            platformtype1 = PlatformType::VMOVE;
+            platformtype2 = PlatformType::VMOVE;
             break;
         case 22:
-            platformtype1 = PLATFORM_VMOVE;
-            platformtype2 = PLATFORM_VMOVE;
+            platformtype1 = PlatformType::VMOVE;
+            platformtype2 = PlatformType::VMOVE;
             break;
         case 23:
-            platformtype1 = PLATFORM_VMOVE;
-            platformtype2 = PLATFORM_TIMER;
+            platformtype1 = PlatformType::VMOVE;
+            platformtype2 = PlatformType::TIMER;
             break;
         case 24:
-            platformtype1 = PLATFORM_TIMER;
-            platformtype2 = PLATFORM_STATIC;
+            platformtype1 = PlatformType::TIMER;
+            platformtype2 = PlatformType::STATIC;
             break;
         case 25:
-            platformtype1 = PLATFORM_TIMER;
-            platformtype2 = PLATFORM_HMOVE;
+            platformtype1 = PlatformType::TIMER;
+            platformtype2 = PlatformType::HMOVE;
             break;
         case 26:
-            platformtype1 = PLATFORM_TIMER;
-            platformtype2 = PLATFORM_DISAPPEAR;
+            platformtype1 = PlatformType::TIMER;
+            platformtype2 = PlatformType::DISAPPEAR;
             break;
         case 27:
-            platformtype1 = PLATFORM_TIMER;
-            platformtype2 = PLATFORM_VMOVE;
+            platformtype1 = PlatformType::TIMER;
+            platformtype2 = PlatformType::VMOVE;
             break;
         case 28:
-            platformtype1 = PLATFORM_TIMER;
-            platformtype2 = PLATFORM_TIMER;
+            platformtype1 = PlatformType::TIMER;
+            platformtype2 = PlatformType::TIMER;
             break;
         default:
-            platformtype1 = PLATFORM_TIMER;
-            platformtype2 = PLATFORM_TIMER;
+            platformtype1 = PlatformType::TIMER;
+            platformtype2 = PlatformType::TIMER;
             break;
         }
 
@@ -806,8 +806,8 @@
 
         if (platformtype1 == platformtype2 && sectionNumber_ > 10 && rand()%2 == 0)
         {
-            matrix[rand()%numI][rand()%numJ].type = PLATFORM_EMPTY;
-            matrix[rand()%numI][rand()%numJ].type = PLATFORM_EMPTY;
+            matrix[rand()%numI][rand()%numJ].type = PlatformType::EMPTY;
+            matrix[rand()%numI][rand()%numJ].type = PlatformType::EMPTY;
         }
 
         // Delete some planned platforms or replace them with fake platforms
@@ -815,57 +815,57 @@
         {
             if (rand()%2 == 0)
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_EMPTY;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::EMPTY;
             }
             else
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_FAKE;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::FAKE;
             }
         }
         else if (sectionNumber_ > 10)
         {
             if (rand()%2 == 0)
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_EMPTY;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::EMPTY;
             }
             else
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_FAKE;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::FAKE;
             }
             if (rand()%2 == 0)
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_EMPTY;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::EMPTY;
             }
             else
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_FAKE;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::FAKE;
             }
         }
         else if (sectionNumber_ > 15)
         {
             if (rand()%2 == 0)
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_EMPTY;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::EMPTY;
             }
             else
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_FAKE;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::FAKE;
             }
             if (rand()%2 == 0)
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_EMPTY;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::EMPTY;
             }
             else
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_FAKE;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::FAKE;
             }
             if (rand()%2 == 0)
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_EMPTY;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::EMPTY;
             }
             else
             {
-                matrix[rand()%numI][rand()%numJ].type = PLATFORM_FAKE;
+                matrix[rand()%numI][rand()%numJ].type = PlatformType::FAKE;
             }
         }
 
@@ -888,36 +888,36 @@
 
                     switch(matrix[i][j].type)
                     {
-                    case PLATFORM_EMPTY:
+                    case PlatformType::EMPTY:
                         matrix[i][j].done = true;
                         break;
-                    case PLATFORM_STATIC:
+                    case PlatformType::STATIC:
                         xPosition = randomXPosition(numJ, j);
                         zPosition = sectionBegin + i*sectionLength/numI;
                         platformList.push_back(addPlatformStatic(xPosition, zPosition));
                         matrix[i][j].done = true;
                         break;
-                    case PLATFORM_FAKE:
+                    case PlatformType::FAKE:
                         xPosition = randomXPosition(numJ, j);
                         zPosition = sectionBegin + i*sectionLength/numI;
                         platformList.push_back(addPlatformFake(xPosition, zPosition));
                         matrix[i][j].done = true;
                         break;
-                    case PLATFORM_TIMER:
+                    case PlatformType::TIMER:
                         xPosition = randomXPosition(numJ, j);
                         zPosition = sectionBegin + i*sectionLength/numI;
                         platformList.push_back(addPlatformTimer(xPosition, zPosition, 12.0, 1.5));
                         matrix[i][j].done = true;
                         break;
-                    case PLATFORM_DISAPPEAR:
+                    case PlatformType::DISAPPEAR:
                         xPosition = randomXPosition(numJ, j);
                         zPosition = sectionBegin + i*sectionLength/numI;
                         platformList.push_back(addPlatformDisappear(xPosition, zPosition));
                         matrix[i][j].done = true;
                         break;
-                    case PLATFORM_HMOVE:
+                    case PlatformType::HMOVE:
                         xVelocity = randomSpeed();
-                        if (j <= numJ-3 && matrix[i][j+1].type == PLATFORM_HMOVE && matrix[i][j+2].type == PLATFORM_HMOVE && rand()%2 == 0)
+                        if (j <= numJ-3 && matrix[i][j+1].type == PlatformType::HMOVE && matrix[i][j+2].type == PlatformType::HMOVE && rand()%2 == 0)
                         {
                             leftBoundary = randomXPositionLeft(numJ, j);
                             rightBoundary = randomXPositionRight(numJ, j+2);
@@ -928,7 +928,7 @@
                             matrix[i][j+1].done = true;
                             matrix[i][j+2].done = true;
                         }
-                        else if (j <= numJ-2 && matrix[i][j+1].type == PLATFORM_HMOVE && rand()%2 == 0)
+                        else if (j <= numJ-2 && matrix[i][j+1].type == PlatformType::HMOVE && rand()%2 == 0)
                         {
                             leftBoundary = randomXPositionLeft(numJ, j);
                             rightBoundary = randomXPositionRight(numJ, j+1);
@@ -948,9 +948,9 @@
                             matrix[i][j].done = true;
                         }
                         break;
-                    case PLATFORM_VMOVE:
+                    case PlatformType::VMOVE:
                         zVelocity = randomSpeed();
-                        if (i <= numI-3 && matrix[i+1][j].type == PLATFORM_VMOVE && matrix[i+2][j].type == PLATFORM_VMOVE && rand()%2 == 0)
+                        if (i <= numI-3 && matrix[i+1][j].type == PlatformType::VMOVE && matrix[i+2][j].type == PlatformType::VMOVE && rand()%2 == 0)
                         {
                             lowerBoundary = randomZPositionLower(numI, i, sectionBegin, sectionEnd);
                             upperBoundary = randomZPositionUpper(numI, i+2, sectionBegin, sectionEnd);
@@ -961,7 +961,7 @@
                             matrix[i+1][j].done = true;
                             matrix[i+2][j].done = true;
                         }
-                        else if (i <= numI-2 && matrix[i+1][j].type == PLATFORM_VMOVE && rand()%2 == 0)
+                        else if (i <= numI-2 && matrix[i+1][j].type == PlatformType::VMOVE && rand()%2 == 0)
                         {
                             lowerBoundary = randomZPositionLower(numI, i, sectionBegin, sectionEnd);
                             upperBoundary = randomZPositionUpper(numI, i+1, sectionBegin, sectionEnd);
@@ -999,16 +999,16 @@
             {
                 switch (itemType)
                 {
-                case ITEM_ROCKET:
+                case ItemType::ROCKET:
                     addRocket(0.0, randomPosition(sectionBegin, sectionBegin + sectionLength), -fieldWidth/2, fieldWidth/2, 0.0, 0.0, randomSpeed(), 0.0);
                     break;
-                case ITEM_PROPELLER:
+                case ItemType::PROPELLER:
                     addPropeller(0.0, randomPosition(sectionBegin, sectionBegin + sectionLength), -fieldWidth/2, fieldWidth/2, 0.0, 0.0, randomSpeed(), 0.0);
                     break;
-                case ITEM_BOOTS:
+                case ItemType::BOOTS:
                     addBoots(0.0, randomPosition(sectionBegin, sectionBegin + sectionLength), -fieldWidth/2, fieldWidth/2, 0.0, 0.0, randomSpeed(), 0.0);
                     break;
-                case ITEM_SHIELD:
+                case ItemType::SHIELD:
                     addShield(0.0, randomPosition(sectionBegin, sectionBegin + sectionLength), -fieldWidth/2, fieldWidth/2, 0.0, 0.0, randomSpeed(), 0.0);
                     break;
                 default:
@@ -1019,16 +1019,16 @@
             {
                 switch (itemType)
                 {
-                case ITEM_ROCKET:
+                case ItemType::ROCKET:
                     addRocket(randomPosition(-fieldWidth/2, fieldWidth/2), sectionBegin + sectionLength/2, 0.0, 0.0, sectionBegin, sectionEnd, 0.0, randomSpeed());
                     break;
-                case ITEM_PROPELLER:
+                case ItemType::PROPELLER:
                     addPropeller(randomPosition(-fieldWidth/2, fieldWidth/2), sectionBegin + sectionLength/2, 0.0, 0.0, sectionBegin, sectionEnd, 0.0, randomSpeed());
                     break;
-                case ITEM_BOOTS:
+                case ItemType::BOOTS:
                     addBoots(randomPosition(-fieldWidth/2, fieldWidth/2), sectionBegin + sectionLength/2, 0.0, 0.0, sectionBegin, sectionEnd, 0.0, randomSpeed());
                     break;
-                case ITEM_SHIELD:
+                case ItemType::SHIELD:
                     addShield(randomPosition(-fieldWidth/2, fieldWidth/2), sectionBegin + sectionLength/2, 0.0, 0.0, sectionBegin, sectionEnd, 0.0, randomSpeed());
                     break;
                 default:
@@ -1044,19 +1044,19 @@
 
                 switch (itemType)
                 {
-                case ITEM_SPRING:
+                case ItemType::SPRING:
                     addSpring(itemPlatform);
                     break;
-                case ITEM_ROCKET:
+                case ItemType::ROCKET:
                     addRocket(itemPlatform);
                     break;
-                case ITEM_PROPELLER:
+                case ItemType::PROPELLER:
                     addPropeller(itemPlatform);
                     break;
-                case ITEM_BOOTS:
+                case ItemType::BOOTS:
                     addBoots(itemPlatform);
                     break;
-                case ITEM_SHIELD:
+                case ItemType::SHIELD:
                     addShield(itemPlatform);
                     break;
                 default:

Modified: code/branches/cpp11_v3/src/modules/mini4dgame/Mini4Dgame.h
===================================================================
--- code/branches/cpp11_v3/src/modules/mini4dgame/Mini4Dgame.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/mini4dgame/Mini4Dgame.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -40,18 +40,6 @@
 
 namespace orxonox
 {
-
-    namespace mini4DgamePlayerColor
-    {
-        enum color
-        {
-            none,
-            red,
-            blue,
-            green
-        };
-    }
-
     /**
     @brief
 

Modified: code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameAI.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameAI.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameAI.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -103,7 +103,7 @@
             for(int j=0;j<4;j++){
                 for(int k=0;k<4;k++){
                     for(int l=0;l<4;l++){
-                        if (this->board_[i][j][k][l]==mini4DgamePlayerColor::none)
+                        if (this->board_[i][j][k][l]==Mini4DgamePlayerColor::none)
                             possibleMoves.push_back(Vector4(i,j,k,l));
                     }
                 }

Modified: code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameAI.h
===================================================================
--- code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameAI.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameAI.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -82,7 +82,7 @@
 
             std::list<Vector4> getPossibleMoves();
             void copyBoard();
-            mini4DgamePlayerColor::color board_[4][4][4][4];
+            Mini4DgamePlayerColor board_[4][4][4][4];
     };
 }
 

Modified: code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameBoard.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameBoard.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameBoard.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -60,7 +60,7 @@
             for(int j=0;j<4;j++){
                 for(int k=0;k<4;k++){
                     for(int l=0;l<4;l++){
-                        this->board[i][j][k][l]=mini4DgamePlayerColor::none;
+                        this->board[i][j][k][l]=Mini4DgamePlayerColor::none;
                         this->blinkingBillboards[i][j][k][l] = nullptr;
                     }
                 }
@@ -78,14 +78,14 @@
     {
         return (move.x<4 && move.y<4 && move.z<4 && move.w<4
                 && move.x>=0 && move.y>=0 && move.z>=0 && move.w>=0
-                && this->board[move.x][move.y][move.z][move.w] == mini4DgamePlayerColor::none);
+                && this->board[move.x][move.y][move.z][move.w] == Mini4DgamePlayerColor::none);
     }
 
     void Mini4DgameBoard::undoMove()
     {
         const Mini4DgamePosition& move = moves.back();
         moves.pop_back();
-        this->board[move.x][move.y][move.z][move.w] = mini4DgamePlayerColor::none;
+        this->board[move.x][move.y][move.z][move.w] = Mini4DgamePlayerColor::none;
         this->blinkingBillboards[move.x][move.y][move.z][move.w]->destroy();
         this->blinkingBillboards[move.x][move.y][move.z][move.w] = nullptr;
         if(player_toggle_){
@@ -114,16 +114,16 @@
             }
 
             moves.push_back(move);
-            mini4DgamePlayerColor::color playerColor = mini4DgamePlayerColor::none;
+            Mini4DgamePlayerColor playerColor = Mini4DgamePlayerColor::none;
             if(player_toggle_){
-                playerColor = mini4DgamePlayerColor::blue;
+                playerColor = Mini4DgamePlayerColor::blue;
                 this->player_toggle_ = false;
             }else{
-                playerColor = mini4DgamePlayerColor::green;
+                playerColor = Mini4DgamePlayerColor::green;
                 this->player_toggle_ = true;
             }
 
-            this->board[move.x][move.y][move.z][move.w] = (mini4DgamePlayerColor::color) playerColor;
+            this->board[move.x][move.y][move.z][move.w] = playerColor;
 
             BlinkingBillboard* bb = new BlinkingBillboard(this->getContext());
             bb->setFrequency(0.3);
@@ -145,11 +145,11 @@
             }
 
             switch(playerColor){
-            case mini4DgamePlayerColor::red:
+            case Mini4DgamePlayerColor::red:
                 bb->setColour(ColourValue(1,0,0)); break;
-            case mini4DgamePlayerColor::green:
+            case Mini4DgamePlayerColor::green:
                 bb->setColour(ColourValue(0,1,0)); break;
-            case mini4DgamePlayerColor::blue:
+            case Mini4DgamePlayerColor::blue:
                 bb->setColour(ColourValue(0,0,1)); break;
             default: break;
             }
@@ -159,7 +159,7 @@
 
 
             Mini4DgameWinner winner = this->getWinner();
-            if(winner.color_ != mini4DgamePlayerColor::none)
+            if(winner.color_ != Mini4DgamePlayerColor::none)
             {
                 orxout(user_status) << "Mini4Dgame: win!!!!!!!" << endl;
                 for(int i=0;i<4;i++){
@@ -187,12 +187,12 @@
     Mini4DgameWinner Mini4DgameBoard::getWinner()
     {
         Mini4DgameWinner winner;
-        winner.color_ = mini4DgamePlayerColor::none;
+        winner.color_ = Mini4DgamePlayerColor::none;
 
         //check diagonals rows-columns-height-numbers
         for(int i=1; i<4; i++)
         {
-            if(this->board[i][i][i][i]==mini4DgamePlayerColor::none || this->board[0][0][0][0] != this->board[i][i][i][i])
+            if(this->board[i][i][i][i]==Mini4DgamePlayerColor::none || this->board[0][0][0][0] != this->board[i][i][i][i])
                 break;
             if(i==3)
             {
@@ -208,7 +208,7 @@
         }
         for(int i=1; i<4; i++)
         {
-            if(this->board[3-i][i][i][i]==mini4DgamePlayerColor::none || this->board[3][0][0][0] != this->board[3-i][i][i][i])
+            if(this->board[3-i][i][i][i]==Mini4DgamePlayerColor::none || this->board[3][0][0][0] != this->board[3-i][i][i][i])
                 break;
             if(i==3)
             {
@@ -224,7 +224,7 @@
         }
         for(int i=1; i<4; i++)
         {
-            if(this->board[i][3-i][i][i]==mini4DgamePlayerColor::none || this->board[0][3][0][0] != this->board[i][3-i][i][i])
+            if(this->board[i][3-i][i][i]==Mini4DgamePlayerColor::none || this->board[0][3][0][0] != this->board[i][3-i][i][i])
                 break;
             if(i==3)
             {
@@ -240,7 +240,7 @@
         }
         for(int i=1; i<4; i++)
         {
-            if(this->board[i][i][3-i][i]==mini4DgamePlayerColor::none || this->board[0][0][3][0] != this->board[i][i][3-i][i])
+            if(this->board[i][i][3-i][i]==Mini4DgamePlayerColor::none || this->board[0][0][3][0] != this->board[i][i][3-i][i])
                 break;
             if(i==3)
             {
@@ -256,7 +256,7 @@
         }
         for(int i=1; i<4; i++)
         {
-            if(this->board[i][i][i][3-i]==mini4DgamePlayerColor::none || this->board[0][0][0][3] != this->board[i][i][i][3-i])
+            if(this->board[i][i][i][3-i]==Mini4DgamePlayerColor::none || this->board[0][0][0][3] != this->board[i][i][i][3-i])
                 break;
             if(i==3)
             {
@@ -272,7 +272,7 @@
         }
         for(int i=1; i<4; i++)
         {
-            if(this->board[3-i][3-i][i][i]==mini4DgamePlayerColor::none || this->board[3][3][0][0] != this->board[3-i][3-i][i][i])
+            if(this->board[3-i][3-i][i][i]==Mini4DgamePlayerColor::none || this->board[3][3][0][0] != this->board[3-i][3-i][i][i])
                 break;
             if(i==3)
             {
@@ -288,7 +288,7 @@
         }
         for(int i=1; i<4; i++)
         {
-            if(this->board[3-i][i][3-i][i]==mini4DgamePlayerColor::none || this->board[3][0][3][0] != this->board[3-i][i][3-i][i])
+            if(this->board[3-i][i][3-i][i]==Mini4DgamePlayerColor::none || this->board[3][0][3][0] != this->board[3-i][i][3-i][i])
                 break;
             if(i==3)
             {
@@ -304,7 +304,7 @@
         }
         for(int i=1; i<4; i++)
         {
-            if(this->board[3-i][i][i][3-i]==mini4DgamePlayerColor::none || this->board[3][0][0][3] != this->board[3-i][i][i][3-i])
+            if(this->board[3-i][i][i][3-i]==Mini4DgamePlayerColor::none || this->board[3][0][0][3] != this->board[3-i][i][i][3-i])
                 break;
             if(i==3)
             {
@@ -324,7 +324,7 @@
         {
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][i][i][l]==mini4DgamePlayerColor::none || this->board[0][0][0][l] != this->board[i][i][i][l])
+                if(this->board[i][i][i][l]==Mini4DgamePlayerColor::none || this->board[0][0][0][l] != this->board[i][i][i][l])
                     break;
                 if(i==3)
                 {
@@ -340,7 +340,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[3-i][i][i][l]==mini4DgamePlayerColor::none || this->board[3][0][0][l] != this->board[3-i][i][i][l])
+                if(this->board[3-i][i][i][l]==Mini4DgamePlayerColor::none || this->board[3][0][0][l] != this->board[3-i][i][i][l])
                     break;
                 if(i==3)
                 {
@@ -356,7 +356,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][3-i][i][l]==mini4DgamePlayerColor::none || this->board[0][3][0][l] != this->board[i][3-i][i][l])
+                if(this->board[i][3-i][i][l]==Mini4DgamePlayerColor::none || this->board[0][3][0][l] != this->board[i][3-i][i][l])
                     break;
                 if(i==3)
                 {
@@ -372,7 +372,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][i][3-i][l]==mini4DgamePlayerColor::none || this->board[0][0][3][l] != this->board[i][i][3-i][l])
+                if(this->board[i][i][3-i][l]==Mini4DgamePlayerColor::none || this->board[0][0][3][l] != this->board[i][i][3-i][l])
                     break;
                 if(i==3)
                 {
@@ -393,7 +393,7 @@
         {
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][i][l][i]==mini4DgamePlayerColor::none || this->board[0][0][l][0] != this->board[i][i][l][i])
+                if(this->board[i][i][l][i]==Mini4DgamePlayerColor::none || this->board[0][0][l][0] != this->board[i][i][l][i])
                     break;
                 if(i==3)
                 {
@@ -409,7 +409,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[3-i][i][l][i]==mini4DgamePlayerColor::none || this->board[3][0][l][0] != this->board[3-i][i][l][i])
+                if(this->board[3-i][i][l][i]==Mini4DgamePlayerColor::none || this->board[3][0][l][0] != this->board[3-i][i][l][i])
                     break;
                 if(i==3)
                 {
@@ -425,7 +425,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][3-i][l][i]==mini4DgamePlayerColor::none || this->board[0][3][l][0] != this->board[i][3-i][l][i])
+                if(this->board[i][3-i][l][i]==Mini4DgamePlayerColor::none || this->board[0][3][l][0] != this->board[i][3-i][l][i])
                     break;
                 if(i==3)
                 {
@@ -441,7 +441,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][i][l][3-i]==mini4DgamePlayerColor::none || this->board[0][0][l][3] != this->board[i][i][l][3-i])
+                if(this->board[i][i][l][3-i]==Mini4DgamePlayerColor::none || this->board[0][0][l][3] != this->board[i][i][l][3-i])
                     break;
                 if(i==3)
                 {
@@ -462,7 +462,7 @@
         {
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][l][i][i]==mini4DgamePlayerColor::none || this->board[0][l][0][0] != this->board[i][l][i][i])
+                if(this->board[i][l][i][i]==Mini4DgamePlayerColor::none || this->board[0][l][0][0] != this->board[i][l][i][i])
                     break;
                 if(i==3)
                 {
@@ -478,7 +478,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[3-i][l][i][i]==mini4DgamePlayerColor::none || this->board[3][l][0][0] != this->board[3-i][l][i][i])
+                if(this->board[3-i][l][i][i]==Mini4DgamePlayerColor::none || this->board[3][l][0][0] != this->board[3-i][l][i][i])
                     break;
                 if(i==3)
                 {
@@ -494,7 +494,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][l][3-i][i]==mini4DgamePlayerColor::none || this->board[0][l][3][0] != this->board[i][l][3-i][i])
+                if(this->board[i][l][3-i][i]==Mini4DgamePlayerColor::none || this->board[0][l][3][0] != this->board[i][l][3-i][i])
                     break;
                 if(i==3)
                 {
@@ -510,7 +510,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[i][l][i][3-i]==mini4DgamePlayerColor::none || this->board[0][l][0][3] != this->board[i][l][i][3-i])
+                if(this->board[i][l][i][3-i]==Mini4DgamePlayerColor::none || this->board[0][l][0][3] != this->board[i][l][i][3-i])
                     break;
                 if(i==3)
                 {
@@ -531,7 +531,7 @@
         {
             for(int i=1; i<4; i++)
             {
-                if(this->board[l][i][i][i]==mini4DgamePlayerColor::none || this->board[l][0][0][0] != this->board[l][i][i][i])
+                if(this->board[l][i][i][i]==Mini4DgamePlayerColor::none || this->board[l][0][0][0] != this->board[l][i][i][i])
                     break;
                 if(i==3)
                 {
@@ -547,7 +547,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[l][3-i][i][i]==mini4DgamePlayerColor::none || this->board[l][3][0][0] != this->board[l][3-i][i][i])
+                if(this->board[l][3-i][i][i]==Mini4DgamePlayerColor::none || this->board[l][3][0][0] != this->board[l][3-i][i][i])
                     break;
                 if(i==3)
                 {
@@ -563,7 +563,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[l][i][3-i][i]==mini4DgamePlayerColor::none || this->board[l][0][3][0] != this->board[l][i][3-i][i])
+                if(this->board[l][i][3-i][i]==Mini4DgamePlayerColor::none || this->board[l][0][3][0] != this->board[l][i][3-i][i])
                     break;
                 if(i==3)
                 {
@@ -579,7 +579,7 @@
             }
             for(int i=1; i<4; i++)
             {
-                if(this->board[l][i][i][3-i]==mini4DgamePlayerColor::none || this->board[l][0][0][3] != this->board[l][i][i][3-i])
+                if(this->board[l][i][i][3-i]==Mini4DgamePlayerColor::none || this->board[l][0][0][3] != this->board[l][i][i][3-i])
                     break;
                 if(i==3)
                 {
@@ -601,7 +601,7 @@
                 //rows-columns
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[i][i][k][l]==mini4DgamePlayerColor::none || this->board[0][0][k][l] != this->board[i][i][k][l])
+                    if(this->board[i][i][k][l]==Mini4DgamePlayerColor::none || this->board[0][0][k][l] != this->board[i][i][k][l])
                         break;
                     if(i==3)
                     {
@@ -617,7 +617,7 @@
                 }
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[3-i][i][k][l]==mini4DgamePlayerColor::none || this->board[3][0][k][l] != this->board[3-i][i][k][l])
+                    if(this->board[3-i][i][k][l]==Mini4DgamePlayerColor::none || this->board[3][0][k][l] != this->board[3-i][i][k][l])
                         break;
                     if(i==3)
                     {
@@ -634,7 +634,7 @@
                 //rows-height
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[i][k][i][l]==mini4DgamePlayerColor::none || this->board[0][k][0][l] != this->board[i][k][i][l])
+                    if(this->board[i][k][i][l]==Mini4DgamePlayerColor::none || this->board[0][k][0][l] != this->board[i][k][i][l])
                         break;
                     if(i==3)
                     {
@@ -650,7 +650,7 @@
                 }
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[3-i][k][i][l]==mini4DgamePlayerColor::none || this->board[3][k][0][l] != this->board[3-i][k][i][l])
+                    if(this->board[3-i][k][i][l]==Mini4DgamePlayerColor::none || this->board[3][k][0][l] != this->board[3-i][k][i][l])
                         break;
                     if(i==3)
                     {
@@ -667,7 +667,7 @@
                 //rows-numbers
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[i][k][l][i]==mini4DgamePlayerColor::none || this->board[0][k][l][0] != this->board[i][k][l][i])
+                    if(this->board[i][k][l][i]==Mini4DgamePlayerColor::none || this->board[0][k][l][0] != this->board[i][k][l][i])
                         break;
                     if(i==3)
                     {
@@ -683,7 +683,7 @@
                 }
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[3-i][k][l][i]==mini4DgamePlayerColor::none || this->board[3][k][l][0] != this->board[3-i][k][l][i])
+                    if(this->board[3-i][k][l][i]==Mini4DgamePlayerColor::none || this->board[3][k][l][0] != this->board[3-i][k][l][i])
                         break;
                     if(i==3)
                     {
@@ -700,7 +700,7 @@
                 //column-height
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[k][i][i][l]==mini4DgamePlayerColor::none || this->board[k][0][0][l] != this->board[k][i][i][l])
+                    if(this->board[k][i][i][l]==Mini4DgamePlayerColor::none || this->board[k][0][0][l] != this->board[k][i][i][l])
                         break;
                     if(i==3)
                     {
@@ -716,7 +716,7 @@
                 }
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[k][3-i][i][l]==mini4DgamePlayerColor::none || this->board[k][3][0][l] != this->board[k][3-i][i][l])
+                    if(this->board[k][3-i][i][l]==Mini4DgamePlayerColor::none || this->board[k][3][0][l] != this->board[k][3-i][i][l])
                         break;
                     if(i==3)
                     {
@@ -733,7 +733,7 @@
                 //column-numbers
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[k][i][l][i]==mini4DgamePlayerColor::none || this->board[k][0][l][0] != this->board[k][i][l][i])
+                    if(this->board[k][i][l][i]==Mini4DgamePlayerColor::none || this->board[k][0][l][0] != this->board[k][i][l][i])
                         break;
                     if(i==3)
                     {
@@ -749,7 +749,7 @@
                 }
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[k][3-i][l][i]==mini4DgamePlayerColor::none || this->board[k][3][l][0] != this->board[k][3-i][l][i])
+                    if(this->board[k][3-i][l][i]==Mini4DgamePlayerColor::none || this->board[k][3][l][0] != this->board[k][3-i][l][i])
                         break;
                     if(i==3)
                     {
@@ -766,7 +766,7 @@
                 //height-numbers
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[k][l][i][i]==mini4DgamePlayerColor::none || this->board[k][l][0][0] != this->board[k][l][i][i])
+                    if(this->board[k][l][i][i]==Mini4DgamePlayerColor::none || this->board[k][l][0][0] != this->board[k][l][i][i])
                         break;
                     if(i==3)
                     {
@@ -782,7 +782,7 @@
                 }
                 for(int i=1; i<4; i++)
                 {
-                    if(this->board[k][l][3-i][i]==mini4DgamePlayerColor::none || this->board[k][l][3][0] != this->board[k][l][3-i][i])
+                    if(this->board[k][l][3-i][i]==Mini4DgamePlayerColor::none || this->board[k][l][3][0] != this->board[k][l][3-i][i])
                         break;
                     if(i==3)
                     {
@@ -803,7 +803,7 @@
         for(int j=0;j<4;j++){
             for(int k=0;k<4;k++){
                 for(int l=0;l<4;l++){
-                    if(this->board[0][j][k][l]!= mini4DgamePlayerColor::none
+                    if(this->board[0][j][k][l]!= Mini4DgamePlayerColor::none
                        && this->board[0][j][k][l]==this->board[1][j][k][l]
                        && this->board[1][j][k][l]==this->board[2][j][k][l]
                        && this->board[2][j][k][l]==this->board[3][j][k][l])
@@ -825,7 +825,7 @@
         for(int i=0;i<4;i++){
             for(int k=0;k<4;k++){
                 for(int l=0;l<4;l++){
-                    if(this->board[i][0][k][l]!= mini4DgamePlayerColor::none
+                    if(this->board[i][0][k][l]!= Mini4DgamePlayerColor::none
                                && this->board[i][0][k][l]==this->board[i][1][k][l]
                                && this->board[i][1][k][l]==this->board[i][2][k][l]
                                && this->board[i][2][k][l]==this->board[i][3][k][l])
@@ -847,7 +847,7 @@
         for(int i=0;i<4;i++){
             for(int j=0;j<4;j++){
                 for(int l=0;l<4;l++){
-                    if(this->board[i][j][0][l]!= mini4DgamePlayerColor::none
+                    if(this->board[i][j][0][l]!= Mini4DgamePlayerColor::none
                                        && this->board[i][j][0][l]==this->board[i][j][1][l]
                                        && this->board[i][j][1][l]==this->board[i][j][2][l]
                                        && this->board[i][j][2][l]==this->board[i][j][3][l])
@@ -869,7 +869,7 @@
         for(int i=0;i<4;i++){
             for(int j=0;j<4;j++){
                 for(int k=0;k<4;k++){
-                    if(this->board[i][j][k][0]!= mini4DgamePlayerColor::none
+                    if(this->board[i][j][k][0]!= Mini4DgamePlayerColor::none
                                        && this->board[i][j][k][0]==this->board[i][j][k][1]
                                        && this->board[i][j][k][1]==this->board[i][j][k][2]
                                        && this->board[i][j][k][2]==this->board[i][j][k][3])

Modified: code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameBoard.h
===================================================================
--- code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameBoard.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/mini4dgame/Mini4DgameBoard.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -41,6 +41,13 @@
 
 namespace orxonox
 {
+    enum class Mini4DgamePlayerColor
+    {
+        none,
+        red,
+        blue,
+        green
+    };
 
     struct Mini4DgamePosition
     {
@@ -57,7 +64,7 @@
         int winningColumn[4];
         int winningHeight[4];
         int winningNumber[4];
-        int color_;
+        Mini4DgamePlayerColor color_;
     };
 
     /**
@@ -85,7 +92,7 @@
             std::vector<Mini4DgamePosition> moves;
             bool player_toggle_;
             BlinkingBillboard* blinkingBillboards[4][4][4][4];
-            int board[4][4][4][4]; //!< The logical board where the game takes place. board[row][column][height][number]
+            Mini4DgamePlayerColor board[4][4][4][4]; //!< The logical board where the game takes place. board[row][column][height][number]
     };
 }
 

Modified: code/branches/cpp11_v3/src/modules/notifications/NotificationDispatcher.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/notifications/NotificationDispatcher.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/notifications/NotificationDispatcher.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -112,7 +112,7 @@
     {
         // TODO: Needed?
         const std::string message = this->createNotificationMessage();
-        NotificationListener::sendNotification(message, this->getSender(), notificationMessageType::info, notificationSendMode::local);
+        NotificationListener::sendNotification(message, this->getSender(), NotificationMessageType::info, NotificationSendMode::local);
 
         // Broadcast
         if(!GameMode::isStandalone())
@@ -143,7 +143,7 @@
         {
             const std::string message = this->createNotificationMessage();
             // TODO: Make the type configurable.
-            NotificationListener::sendNotification(message, this->getSender(), notificationMessageType::info, notificationSendMode::network, clientId);
+            NotificationListener::sendNotification(message, this->getSender(), NotificationMessageType::info, NotificationSendMode::network, clientId);
         }
         else if(GameMode::isServer())
         {

Modified: code/branches/cpp11_v3/src/modules/notifications/NotificationManager.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/notifications/NotificationManager.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/notifications/NotificationManager.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -105,7 +105,7 @@
     @return
         Returns true if successful.
     */
-    bool NotificationManager::registerNotification(const std::string& message, const std::string& sender, notificationMessageType::Value type)
+    bool NotificationManager::registerNotification(const std::string& message, const std::string& sender, NotificationMessageType type)
     {
         // TODO: Do something with the type.
         Notification* notification = new Notification(message, sender, type);
@@ -123,10 +123,10 @@
     @return
         Returns true if the command was successfully executed.
     */
-    bool NotificationManager::executeCommand(notificationCommand::Value command, const std::string& sender)
+    bool NotificationManager::executeCommand(NotificationCommand command, const std::string& sender)
     {
         bool commandExecuted = false;
-        if(command == notificationCommand::clear)
+        if(command == NotificationCommand::clear)
         {
             if(this->commandClear(sender))
                 commandExecuted = true;
@@ -436,7 +436,7 @@
     @param type
 
     */
-    Notification::Notification(const std::string& message, const std::string& sender, notificationMessageType::Value type)
+    Notification::Notification(const std::string& message, const std::string& sender, NotificationMessageType type)
     {
         this->initialize();
         this->message_ = message;

Modified: code/branches/cpp11_v3/src/modules/notifications/NotificationManager.h
===================================================================
--- code/branches/cpp11_v3/src/modules/notifications/NotificationManager.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/notifications/NotificationManager.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -61,7 +61,7 @@
     class _NotificationsExport Notification
     {
         public:
-            Notification(const std::string& message, const std::string& sender, notificationMessageType::Value type);
+            Notification(const std::string& message, const std::string& sender, NotificationMessageType type);
             virtual ~Notification();
 
             /**
@@ -88,13 +88,13 @@
             @brief Get the type of the Notification.
             @return Returns an enum with the type of the Notification.
             */
-            inline notificationMessageType::Value getType(void) const
+            inline NotificationMessageType getType(void) const
                 { return this->type_; }
 
         private:
             std::string message_; //!< The Notification message.
             std::string sender_; //!< The sender of the notification.
-            notificationMessageType::Value type_; //!< The type of the notification.
+            NotificationMessageType type_; //!< The type of the notification.
 
             void initialize(void); //!< Registers the object and sets some default values.
 
@@ -127,8 +127,8 @@
             */
             static NotificationManager& getInstance() { return Singleton<NotificationManager>::getInstance(); } // tolua_export
 
-            virtual bool registerNotification(const std::string& message, const std::string& sender, notificationMessageType::Value type) override;
-            virtual bool executeCommand(notificationCommand::Value command, const std::string& sender) override;
+            virtual bool registerNotification(const std::string& message, const std::string& sender, NotificationMessageType type) override;
+            virtual bool executeCommand(NotificationCommand command, const std::string& sender) override;
 
             bool registerNotification(Notification* notification); // Registers a Notification within the NotificationManager.
             void unregisterNotification(Notification* notification, NotificationQueue* queue); // Unregisters a Notification within the NotificationManager for a given NotificationQueue.

Modified: code/branches/cpp11_v3/src/modules/objects/ForceField.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/ForceField.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/ForceField.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -66,7 +66,7 @@
         this->setDiameter(500);
         this->setMassDiameter(0);   //! We allow point-masses
         this->setLength(2000);
-        this->mode_ = forceFieldMode::tube;
+        this->mode_ = ForceFieldMode::tube;
         
         this->registerVariables();
     }
@@ -114,7 +114,7 @@
     */
     void ForceField::tick(float dt)
     {
-        if(this->mode_ == forceFieldMode::tube)
+        if(this->mode_ == ForceFieldMode::tube)
         {
             // Iterate over all objects that could possibly be affected by the ForceField.
             for (MobileEntity* mobileEntity : ObjectList<MobileEntity>())
@@ -142,7 +142,7 @@
                 mobileEntity->applyCentralForce((this->radius_ - distanceFromDirectionVector)/this->radius_ * this->velocity_ * direction);
             }
         }
-        else if(this->mode_ == forceFieldMode::sphere)
+        else if(this->mode_ == ForceFieldMode::sphere)
         {
             // Iterate over all objects that could possibly be affected by the ForceField.
             for (MobileEntity* mobileEntity : ObjectList<MobileEntity>())
@@ -158,7 +158,7 @@
                 }
             }
         }
-        else if(this->mode_ == forceFieldMode::invertedSphere)
+        else if(this->mode_ == ForceFieldMode::invertedSphere)
         {
             // Iterate over all objects that could possibly be affected by the ForceField.
             for (MobileEntity* mobileEntity : ObjectList<MobileEntity>())
@@ -175,7 +175,7 @@
                 }
             }
         }
-        else if(this->mode_ == forceFieldMode::newtonianGravity)
+        else if(this->mode_ == ForceFieldMode::newtonianGravity)
         {
             // Iterate over all objects that could possibly be affected by the ForceField.
             for (MobileEntity* mobileEntity : ObjectList<MobileEntity>())
@@ -200,7 +200,7 @@
                 }
             }
         }
-        else if(this->mode_ == forceFieldMode::homogen)
+        else if(this->mode_ == ForceFieldMode::homogen)
         {
             // Iterate over all objects that could possibly be affected by the ForceField.
             for (MobileEntity* mobileEntity : ObjectList<MobileEntity>())
@@ -226,21 +226,21 @@
     void ForceField::setMode(const std::string& mode)
     {
         if(mode == ForceField::modeTube_s)
-            this->mode_ = forceFieldMode::tube;
+            this->mode_ = ForceFieldMode::tube;
         else if(mode == ForceField::modeSphere_s)
-            this->mode_ = forceFieldMode::sphere;
+            this->mode_ = ForceFieldMode::sphere;
         else if(mode == ForceField::modeInvertedSphere_s)
-            this->mode_ = forceFieldMode::invertedSphere;
+            this->mode_ = ForceFieldMode::invertedSphere;
         else if(mode == ForceField::modeNewtonianGravity_s)
-            this->mode_ = forceFieldMode::newtonianGravity;
+            this->mode_ = ForceFieldMode::newtonianGravity;
 
         else if(mode == ForceField::modeHomogen_s)
-            this->mode_ = forceFieldMode::homogen;
+            this->mode_ = ForceFieldMode::homogen;
 
         else
         {
             orxout(internal_warning) << "Wrong mode '" << mode << "' in ForceField. Setting to 'tube'." << endl;
-            this->mode_ = forceFieldMode::tube;
+            this->mode_ = ForceFieldMode::tube;
         }
     }
 
@@ -254,16 +254,16 @@
     {
         switch(this->mode_)
         {
-            case forceFieldMode::tube:
+            case ForceFieldMode::tube:
                 return ForceField::modeTube_s;
-            case forceFieldMode::sphere:
+            case ForceFieldMode::sphere:
                 return ForceField::modeSphere_s;
-            case forceFieldMode::invertedSphere:
+            case ForceFieldMode::invertedSphere:
                 return ForceField::modeInvertedSphere_s;
-            case forceFieldMode::newtonianGravity:
+            case ForceFieldMode::newtonianGravity:
                 return ForceField::modeNewtonianGravity_s;
 
-            case forceFieldMode::homogen:
+            case ForceFieldMode::homogen:
                 return ForceField::modeHomogen_s;
 
             default:

Modified: code/branches/cpp11_v3/src/modules/objects/ForceField.h
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/ForceField.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/ForceField.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -51,16 +51,13 @@
 
     @ingroup Objects
     */
-    namespace forceFieldMode
-    {
-        enum Value {
-            tube, //!< The ForceField has a tube shape.
-            sphere, //!< The ForceField has a spherical shape.
-            invertedSphere, //!< The ForceField has a spherical shape but "inverted" behavior.
-            newtonianGravity, //!< The ForceField imitates Newtonian gravitation for use in stellar bodies.
-            homogen //!< Local homogenous Force field with changeable direction for the Space Station
-        };
-    }
+    enum class ForceFieldMode {
+        tube, //!< The ForceField has a tube shape.
+        sphere, //!< The ForceField has a spherical shape.
+        invertedSphere, //!< The ForceField has a spherical shape but "inverted" behavior.
+        newtonianGravity, //!< The ForceField imitates Newtonian gravitation for use in stellar bodies.
+        homogen //!< Local homogenous Force field with changeable direction for the Space Station
+    };
 
     /**
     @brief
@@ -171,7 +168,7 @@
             float radius_; //!< The radius of the ForceField.
             float massRadius_; //!< The radius of the stellar body for the Newtonian ForceField.
             float halfLength_; //!< Half of the length of the ForceField.
-            int mode_; //!< The mode of the ForceField.
+            ForceFieldMode mode_; //!< The mode of the ForceField.
             
             //! Gravitational constant for Newtonian ForceFields.
             static const float gravConstant_;

Modified: code/branches/cpp11_v3/src/modules/objects/Script.h
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/Script.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/Script.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -50,14 +50,11 @@
     /**
     @brief The mode a specific @ref orxonox::Script "Script" is in.
     */
-    namespace ScriptMode
+    enum class ScriptMode
     {
-        enum Value
-        {
-            normal, //!< The @ref orxonox::Script "Scripts'" code is executed through the @ref orxonox::CommandExecutor "CommandExecutor".
-            lua //!< The @ref orxonox::Script "Scripts'" code is executed through lua.
-        };
-    }
+        normal, //!< The @ref orxonox::Script "Scripts'" code is executed through the @ref orxonox::CommandExecutor "CommandExecutor".
+        lua //!< The @ref orxonox::Script "Scripts'" code is executed through lua.
+    };
 
     /**
     @brief
@@ -177,7 +174,7 @@
             static const int INF;
 
             std::string code_; //!< The code that is executed by this Script.
-            ScriptMode::Value mode_; //!< The mode the Script is in. Determines whether the code is executed the normal way or in lua.
+            ScriptMode mode_; //!< The mode the Script is in. Determines whether the code is executed the normal way or in lua.
             std::string modeStr_; //!< The mode the Script is in, as a string. Is used for networking purposes.
             bool onLoad_; //!< Whether the Scripts code is executed upon loading (creation) of this Script.
             int times_; //!< The number of times the Scripts code is executed at the most. -1 denotes infinity.
@@ -192,7 +189,7 @@
             @brief Sets the mode of the Script.
             @param mode The mode of the Script.
             */
-            inline void setMode(ScriptMode::Value mode)
+            inline void setMode(ScriptMode mode)
                 { this->mode_ = mode; }
     };
 }

Modified: code/branches/cpp11_v3/src/modules/objects/Turret.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/Turret.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/Turret.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -277,7 +277,7 @@
             //TODO: make the rotation better (constant velocity etc.). At the moment, the turret rotates
             //slower the closer it is to the destination
             Quaternion drot = Quaternion::nlerp(dt*this->rotationThrust_/20.f, Quaternion::IDENTITY, this->rotation_);
-            this->rotate(drot, WorldEntity::World);
+            this->rotate(drot, WorldEntity::TransformSpace::World);
             this->rotation_ = Quaternion::IDENTITY;
         }
 

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/CheckPoint.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/CheckPoint.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/CheckPoint.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -55,7 +55,7 @@
         this->bIsDestination_ = false;
 
         this->setRadarObjectColour(ColourValue::Green);
-        this->setRadarObjectShape(RadarViewable::Dot);
+        this->setRadarObjectShape(RadarViewable::Shape::Dot);
         this->setRadarVisibility(false);
 
         this->notifyMaskUpdate();

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/DistanceMultiTrigger.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/DistanceMultiTrigger.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/DistanceMultiTrigger.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -57,7 +57,7 @@
         RegisterObject(DistanceMultiTrigger);
 
         this->distance_ = 100.0f;
-        this->setBeaconModeDirect(distanceMultiTriggerBeaconMode::off);
+        this->setBeaconModeDirect(DistanceMultiTriggerBeaconMode::off);
         this->targetName_ = "";
         this->beaconMask_.exclude(Class(BaseObject));
         this->beaconMask_.include(Class(DistanceTriggerBeacon));
@@ -135,7 +135,7 @@
         // Check for new objects that are in range
         ClassTreeMask targetMask = this->getTargetMask();
         // If we are in identify-mode another target mask has to be applies to find the DistanceTriggerBeacons.
-        if(this->beaconMode_ == distanceMultiTriggerBeaconMode::identify)
+        if(this->beaconMode_ == DistanceMultiTriggerBeaconMode::identify)
             targetMask = this->beaconMask_;
 
         // Iterate through all objects that are targets of the DistanceMultiTrigger.
@@ -144,7 +144,7 @@
             WorldEntity* entity = static_cast<WorldEntity*>(*it);
 
             // If the DistanceMultiTrigger is in identify-mode and the DistanceTriggerBeacon attached to the object has the wrong name we ignore it.
-            if(this->beaconMode_ == distanceMultiTriggerBeaconMode::identify)
+            if(this->beaconMode_ == DistanceMultiTriggerBeaconMode::identify)
             {
                 if(entity->getName() != this->targetName_)
                     continue;
@@ -154,7 +154,7 @@
             }
             
             // If the DistanceMultiTrigger is in exclude mode and the DistanceTriggerBeacon attached to the object has the right name, we ignore it.
-            if(this->beaconMode_ == distanceMultiTriggerBeaconMode::exclude)
+            if(this->beaconMode_ == DistanceMultiTriggerBeaconMode::exclude)
             {
                 
                 const std::set<WorldEntity*> attachedObjects = entity->getAttachedObjects();
@@ -181,7 +181,7 @@
                     continue;
 
                 // Change the entity to the parent of the DistanceTriggerBeacon (if in identify-mode), which is the entity to which the beacon is attached.
-                if(this->beaconMode_ == distanceMultiTriggerBeaconMode::identify)
+                if(this->beaconMode_ == DistanceMultiTriggerBeaconMode::identify)
                     entity = entity->getParent();
 
                 // If no queue has been created, yet.
@@ -205,7 +205,7 @@
     @param mode
         The mode as an enum.
     */
-    void DistanceMultiTrigger::setBeaconModeDirect(distanceMultiTriggerBeaconMode::Value mode)
+    void DistanceMultiTrigger::setBeaconModeDirect(DistanceMultiTriggerBeaconMode mode)
     {
         this->beaconMode_ = mode;
     }
@@ -220,11 +220,11 @@
     {
         switch(this->getBeaconModeDirect())
         {
-            case distanceMultiTriggerBeaconMode::off :
+            case DistanceMultiTriggerBeaconMode::off :
                 return DistanceMultiTrigger::beaconModeOff_s;
-            case distanceMultiTriggerBeaconMode::identify:
+            case DistanceMultiTriggerBeaconMode::identify:
                 return DistanceMultiTrigger::beaconModeIdentify_s;
-            case distanceMultiTriggerBeaconMode::exclude:
+            case DistanceMultiTriggerBeaconMode::exclude:
                 return DistanceMultiTrigger::beaconModeExlcude_s;
             default :
                 assert(0); // This is impossible.
@@ -241,11 +241,11 @@
     void DistanceMultiTrigger::setBeaconMode(const std::string& mode)
     {
         if(mode == DistanceMultiTrigger::beaconModeOff_s)
-            this->setBeaconModeDirect(distanceMultiTriggerBeaconMode::off);
+            this->setBeaconModeDirect(DistanceMultiTriggerBeaconMode::off);
         else if(mode == DistanceMultiTrigger::beaconModeIdentify_s)
-            this->setBeaconModeDirect(distanceMultiTriggerBeaconMode::identify);
+            this->setBeaconModeDirect(DistanceMultiTriggerBeaconMode::identify);
         else if(mode == DistanceMultiTrigger::beaconModeExlcude_s)
-            this->setBeaconModeDirect(distanceMultiTriggerBeaconMode::exclude);
+            this->setBeaconModeDirect(DistanceMultiTriggerBeaconMode::exclude);
         else
             orxout(internal_error, context::triggers) << "Invalid beacon mode in DistanceMultiTrigger." << endl;
     }

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/DistanceMultiTrigger.h
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/DistanceMultiTrigger.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/DistanceMultiTrigger.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -54,14 +54,11 @@
         
     @ingroup MultiTrigger
     */
-    namespace distanceMultiTriggerBeaconMode
-    {
-        enum Value {
-            off, //!< The DistanceMultiTrigger is not in <em>beacon-mode</em>.
-            identify, //!< The DistanceTrigger is in <em>identify-mode</em>.
-            exclude //!< The DistanceTrigger is in <em>exclude-mode</em>.
-        };
-    }
+    enum class DistanceMultiTriggerBeaconMode {
+        off, //!< The DistanceMultiTrigger is not in <em>beacon-mode</em>.
+        identify, //!< The DistanceTrigger is in <em>identify-mode</em>.
+        exclude //!< The DistanceTrigger is in <em>exclude-mode</em>.
+    };
 
     /**
     @brief
@@ -112,12 +109,12 @@
             inline float getDistance() const
                 { return this->distance_; }
             
-            void setBeaconModeDirect(distanceMultiTriggerBeaconMode::Value mode); // Set the beacon mode.
+            void setBeaconModeDirect(DistanceMultiTriggerBeaconMode mode); // Set the beacon mode.
             /**
             @brief Get the beacon mode.
             @return Returns the mode as an enum.
             */
-            inline distanceMultiTriggerBeaconMode::Value getBeaconModeDirect(void) const
+            inline DistanceMultiTriggerBeaconMode getBeaconModeDirect(void) const
                 { return this->beaconMode_; }
             void setBeaconMode(const std::string& mode); // Set the beacon mode.
             const std::string& getBeaconMode(void) const; // Get the beacon mode.
@@ -148,7 +145,7 @@
             
             float distance_; //!< The distance at which the DistanceMultiTrigger triggers.
 
-            distanceMultiTriggerBeaconMode::Value beaconMode_; //!< The beacon mode, the DistanceMultiTrigger is in.
+            DistanceMultiTriggerBeaconMode beaconMode_; //!< The beacon mode, the DistanceMultiTrigger is in.
             std::string targetName_; //!< The target name, used in <em>single-target</em> mode.
             ClassTreeMask beaconMask_; //!< A mask, that only accepts DistanceTriggerBeacons.
 

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/DistanceTrigger.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/DistanceTrigger.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/DistanceTrigger.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -157,7 +157,7 @@
         // Check for new objects that are in range
         ClassTreeMask targetMask = this->targetMask_;
         // If we are in identify-mode another target mask has to be applies to find the DistanceTriggerBeacons.
-        if(this->beaconMode_ == distanceTriggerBeaconMode::identify)
+        if(this->beaconMode_ == DistanceTriggerBeaconMode::identify)
             targetMask = this->beaconMask_;
 
         // Iterate through all objects that are targets of the DistanceTrigger.
@@ -166,7 +166,7 @@
             WorldEntity* entity = static_cast<WorldEntity*>(*it);
 
             // If the DistanceTrigger is in identify-mode and the DistanceTriggerBeacon attached to the object has the wrong name we ignore it.
-            if(this->beaconMode_ == distanceTriggerBeaconMode::identify)
+            if(this->beaconMode_ == DistanceTriggerBeaconMode::identify)
             {
                 if(entity->getName() != this->targetName_)
                     continue;
@@ -176,7 +176,7 @@
             }
 
             // If the DistanceTrigger is in exclude mode and the DistanceTriggerBeacon attached to the object has the right name, we ignore it.
-            if(this->beaconMode_ == distanceTriggerBeaconMode::exclude)
+            if(this->beaconMode_ == DistanceTriggerBeaconMode::exclude)
             {
 
                 const std::set<WorldEntity*> attachedObjects = entity->getAttachedObjects();
@@ -201,7 +201,7 @@
                 if(this->isForPlayer())
                 {
                     // Change the entity to the parent of the DistanceTriggerBeacon (if in identify-mode), which is the entity to which the beacon is attached.
-                    if(this->beaconMode_ == distanceTriggerBeaconMode::identify)
+                    if(this->beaconMode_ == DistanceTriggerBeaconMode::identify)
                         entity = entity->getParent();
 
                     Pawn* pawn = orxonox_cast<Pawn*>(entity);
@@ -227,7 +227,7 @@
     @param mode
         The mode as an enum.
     */
-    void DistanceTrigger::setBeaconModeDirect(distanceTriggerBeaconMode::Value mode)
+    void DistanceTrigger::setBeaconModeDirect(DistanceTriggerBeaconMode mode)
     {
         this->beaconMode_ = mode;
     }
@@ -242,11 +242,11 @@
     {
         switch(this->getBeaconModeDirect())
         {
-            case distanceTriggerBeaconMode::off :
+            case DistanceTriggerBeaconMode::off :
                 return DistanceTrigger::beaconModeOff_s;
-            case distanceTriggerBeaconMode::identify:
+            case DistanceTriggerBeaconMode::identify:
                 return DistanceTrigger::beaconModeIdentify_s;
-            case distanceTriggerBeaconMode::exclude:
+            case DistanceTriggerBeaconMode::exclude:
                 return DistanceTrigger::beaconModeExlcude_s;
             default :
                 assert(0); // This is impossible.
@@ -263,11 +263,11 @@
     void DistanceTrigger::setBeaconMode(const std::string& mode)
     {
         if(mode == DistanceTrigger::beaconModeOff_s)
-            this->setBeaconModeDirect(distanceTriggerBeaconMode::off);
+            this->setBeaconModeDirect(DistanceTriggerBeaconMode::off);
         else if(mode == DistanceTrigger::beaconModeIdentify_s)
-            this->setBeaconModeDirect(distanceTriggerBeaconMode::identify);
+            this->setBeaconModeDirect(DistanceTriggerBeaconMode::identify);
         else if(mode == DistanceTrigger::beaconModeExlcude_s)
-            this->setBeaconModeDirect(distanceTriggerBeaconMode::exclude);
+            this->setBeaconModeDirect(DistanceTriggerBeaconMode::exclude);
         else
             orxout(internal_error, context::triggers) << "Invalid beacon mode in DistanceTrigger." << endl;
     }
@@ -281,7 +281,7 @@
     @return
         Returns true if it is triggered ,false if not.
     */
-    bool DistanceTrigger::isTriggered(TriggerMode::Value mode)
+    bool DistanceTrigger::isTriggered(TriggerMode mode)
     {
         if (Trigger::isTriggered(mode))
             return checkDistance();

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/DistanceTrigger.h
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/DistanceTrigger.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/DistanceTrigger.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -54,14 +54,11 @@
       
   @ingroup NormalTrigger
   */
-  namespace distanceTriggerBeaconMode
-  {
-      enum Value {
-          off,
-          identify,
-          exclude
-      };
-  }
+  enum class DistanceTriggerBeaconMode {
+      off,
+      identify,
+      exclude
+  };
 
     /**
     @brief
@@ -117,12 +114,12 @@
             inline float getDistance() const
                 { return this->distance_; }
 
-            void setBeaconModeDirect(distanceTriggerBeaconMode::Value mode); // Set the beacon mode.
+            void setBeaconModeDirect(DistanceTriggerBeaconMode mode); // Set the beacon mode.
             /**
             @brief Get the beacon mode.
             @return Returns the mode as an enum.
             */
-            inline distanceTriggerBeaconMode::Value getBeaconModeDirect(void) const
+            inline DistanceTriggerBeaconMode getBeaconModeDirect(void) const
             { return this->beaconMode_; }
             void setBeaconMode(const std::string& mode); // Set the beacon mode.
             const std::string& getBeaconMode(void) const; // Get the beacon mode.
@@ -143,7 +140,7 @@
             bool checkDistance(); // Check, whether there are entities that are targets of this DistanceTrigger in its range.
 
         protected:
-            virtual bool isTriggered(TriggerMode::Value mode); // Check whether the DistanceTrigger is triggered.
+            virtual bool isTriggered(TriggerMode mode) override; // Check whether the DistanceTrigger is triggered.
             /**
             @brief Notifies interested parties about a change of the DistanceTrigger's target mask.
             */
@@ -159,7 +156,7 @@
 
             float distance_; //!< The range of the DistanceTrigger.
             
-            distanceTriggerBeaconMode::Value beaconMode_; //!< The beacon mode.
+            DistanceTriggerBeaconMode beaconMode_; //!< The beacon mode.
             std::string targetName_; //!< The name a DistanceTriggerBeacon needs to have to make the DistanceTrigger react to it if in beacon-mode.
             ClassTreeMask beaconMask_; //!< A mask, that only accepts DistanceTriggerBeacons.
             

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/EventTrigger.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/EventTrigger.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/EventTrigger.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -78,7 +78,7 @@
         Check whether the EventTrigger should be triggered.
         It should be triggered if it is triggered according just to its sub-triggers and if the last event that came in was an event that changed from not triggered to triggered.
     */
-    bool EventTrigger::isTriggered(TriggerMode::Value mode)
+    bool EventTrigger::isTriggered(TriggerMode mode)
     {
         if (Trigger::isTriggered(mode))
             return this->bEventTriggered_;

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/EventTrigger.h
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/EventTrigger.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/EventTrigger.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -83,7 +83,7 @@
                 { this->bEventTriggered_ = bTriggered; this->tick(0); }
 
         protected:
-            virtual bool isTriggered(TriggerMode::Value mode); // Check whether the EventTrigger should be triggered.
+            virtual bool isTriggered(TriggerMode mode) override; // Check whether the EventTrigger should be triggered.
 
         private:
             bool bEventTriggered_; //!< Boolean to keep track of what the state of the last event was.

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/Trigger.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/Trigger.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/Trigger.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -192,7 +192,7 @@
     @return
         Returns true if the Trigger should be triggered and false if not.
     */
-    bool Trigger::isTriggered(TriggerMode::Value mode)
+    bool Trigger::isTriggered(TriggerMode mode)
     {
         // If the trigger has sub-triggers.
         if (this->children_.size() > 0)

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/Trigger.h
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/Trigger.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/Trigger.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -103,7 +103,7 @@
             */
             inline bool isTriggered()
                 { return this->isTriggered(this->mode_); }
-            virtual bool isTriggered(TriggerMode::Value mode); // Check whether the Trigger should be triggered, given only its sub-triggers, given a specific mode.
+            virtual bool isTriggered(TriggerMode mode); // Check whether the Trigger should be triggered, given only its sub-triggers, given a specific mode.
             virtual void triggered(bool bIsTriggered); // Fires an event with the input triggered state.
 
         private:

Modified: code/branches/cpp11_v3/src/modules/objects/triggers/TriggerBase.h
===================================================================
--- code/branches/cpp11_v3/src/modules/objects/triggers/TriggerBase.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/objects/triggers/TriggerBase.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -51,15 +51,12 @@
 
     @ingroup Triggers
     */
-    namespace TriggerMode
+    enum class TriggerMode
     {
-        enum Value
-        {
-            EventTriggerAND, //!< The <em>and</em> mode. The trigger can only trigger if all the children are active. 
-            EventTriggerOR, //!< The <em>or</em> mode. The trigger can only trigger if at least one child is active.
-            EventTriggerXOR, //!< The <em>xor</em> mode. The trigger can only trigger if exactly one child is active. 
-        };
-    }
+        EventTriggerAND, //!< The <em>and</em> mode. The trigger can only trigger if all the children are active.
+        EventTriggerOR, //!< The <em>or</em> mode. The trigger can only trigger if at least one child is active.
+        EventTriggerXOR, //!< The <em>xor</em> mode. The trigger can only trigger if exactly one child is active.
+    };
 
     /**
     @brief
@@ -156,14 +153,14 @@
             @brief Set the mode of the trigger.
             @param mode The mode of the trigger.
             */
-            inline void setMode(TriggerMode::Value mode) //!< Get the mode of the trigger.
+            inline void setMode(TriggerMode mode) //!< Get the mode of the trigger.
                 { this->mode_ = mode; }
             const std::string& getModeString(void) const;
             /**
             @brief Get the mode of the trigger.
             @return Returns and Enum for the mode of the trigger.
             */
-            inline TriggerMode::Value getMode(void) const
+            inline TriggerMode getMode(void) const
                 { return mode_; }
 
             void addTrigger(TriggerBase* trigger);
@@ -209,7 +206,7 @@
             int remainingActivations_; //!< The remaining activations of this trigger.
 
             bool bInvertMode_; //!< Bool for the invert-mode, if true the trigger is inverted.
-            TriggerMode::Value mode_; //!< The mode of the trigger.
+            TriggerMode mode_; //!< The mode of the trigger.
 
             TriggerBase* parent_; //!< The parent of this trigger.
             std::set<TriggerBase*> children_; //!< The children of this trigger.

Modified: code/branches/cpp11_v3/src/modules/overlays/OverlayText.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/overlays/OverlayText.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/overlays/OverlayText.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -41,9 +41,9 @@
 {
     RegisterClass(OverlayText);
 
-    static_assert((int)Ogre::TextAreaOverlayElement::Left   == (int)OverlayText::Left,   "check enum");
-    static_assert((int)Ogre::TextAreaOverlayElement::Center == (int)OverlayText::Center, "check enum");
-    static_assert((int)Ogre::TextAreaOverlayElement::Right  == (int)OverlayText::Right,  "check enum");
+    static_assert((int)Ogre::TextAreaOverlayElement::Left   == (int)OverlayText::Alignment::Left,   "check enum");
+    static_assert((int)Ogre::TextAreaOverlayElement::Center == (int)OverlayText::Alignment::Center, "check enum");
+    static_assert((int)Ogre::TextAreaOverlayElement::Right  == (int)OverlayText::Alignment::Right,  "check enum");
 
     OverlayText::OverlayText(Context* context)
         : OrxonoxOverlay(context)
@@ -84,11 +84,11 @@
     void OverlayText::setAlignmentString(const std::string& alignment)
     {
         if (alignment == "right")
-            this->setAlignment(OverlayText::Right);
+            this->setAlignment(OverlayText::Alignment::Right);
         else if (alignment == "center")
-            this->setAlignment(OverlayText::Center);
+            this->setAlignment(OverlayText::Alignment::Center);
         else // "left" and default
-            this->setAlignment(OverlayText::Left);
+            this->setAlignment(OverlayText::Alignment::Left);
     }
 
     std::string OverlayText::getAlignmentString() const
@@ -110,9 +110,9 @@
 
     void OverlayText::sizeChanged()
     {
-        if (this->rotState_ == Horizontal)
+        if (this->rotState_ == RotationState::Horizontal)
             this->overlay_->setScale(size_.y * sizeCorrection_.y, size_.y * sizeCorrection_.y);
-        else if (this->rotState_ == Vertical)
+        else if (this->rotState_ == RotationState::Vertical)
             this->overlay_->setScale(size_.y / (sizeCorrection_.y * sizeCorrection_.y), size_.y * sizeCorrection_.y);
         else
             this->overlay_->setScale(size_.y, size_.y);

Modified: code/branches/cpp11_v3/src/modules/overlays/OverlayText.h
===================================================================
--- code/branches/cpp11_v3/src/modules/overlays/OverlayText.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/overlays/OverlayText.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -41,7 +41,7 @@
     class _OverlaysExport OverlayText : public OrxonoxOverlay
     {
     public:
-        enum Alignment
+        enum class Alignment
         {
             Left,
             Right,

Modified: code/branches/cpp11_v3/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/overlays/hud/HUDRadar.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/overlays/hud/HUDRadar.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -64,9 +64,9 @@
         this->setMaximumDotSize(0.1f);
         this->setMaximumDotSize3D(0.07f);
 
-        this->shapeMaterials_[RadarViewable::Dot]      = "RadarDot.png";
-        this->shapeMaterials_[RadarViewable::Triangle] = "RadarTriangle.png";
-        this->shapeMaterials_[RadarViewable::Square]   = "RadarSquare.png";
+        this->shapeMaterials_[RadarViewable::Shape::Dot]      = "RadarDot.png";
+        this->shapeMaterials_[RadarViewable::Shape::Triangle] = "RadarTriangle.png";
+        this->shapeMaterials_[RadarViewable::Shape::Square]   = "RadarSquare.png";
         this->owner_ = nullptr;
 
         this->map3DFront_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()

Modified: code/branches/cpp11_v3/src/modules/overlays/stats/CreateLines.h
===================================================================
--- code/branches/cpp11_v3/src/modules/overlays/stats/CreateLines.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/overlays/stats/CreateLines.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -29,6 +29,8 @@
 
 #include "overlays/OverlaysPrereqs.h"
 
+#include <string>
+
 namespace orxonox
 {
     class _OverlaysExport CreateLines

Modified: code/branches/cpp11_v3/src/modules/pickup/Pickup.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/pickup/Pickup.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/pickup/Pickup.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -77,8 +77,8 @@
     */
     void Pickup::initialize(void)
     {
-        this->activationType_ = pickupActivationType::immediate;
-        this->durationType_ = pickupDurationType::once;
+        this->activationType_ = PickupActivationType::immediate;
+        this->durationType_ = PickupDurationType::once;
     }
 
     /**
@@ -104,9 +104,9 @@
     {
         switch(this->getActivationType())
         {
-            case pickupActivationType::immediate:
+            case PickupActivationType::immediate:
                 return activationTypeImmediate_s;
-            case pickupActivationType::onUse:
+            case PickupActivationType::onUse:
                 return activationTypeOnUse_s;
             default:
                 return BLANKSTRING;
@@ -123,9 +123,9 @@
     {
         switch(this->getDurationType())
         {
-            case pickupDurationType::once:
+            case PickupDurationType::once:
                 return durationTypeOnce_s;
-            case pickupDurationType::continuous:
+            case PickupDurationType::continuous:
                 return durationTypeContinuous_s;
             default:
                 return BLANKSTRING;
@@ -141,9 +141,9 @@
     void Pickup::setActivationTypeAsString(const std::string& type)
     {
         if(type == Pickup::activationTypeImmediate_s)
-            this->setActivationType(pickupActivationType::immediate);
+            this->setActivationType(PickupActivationType::immediate);
         else if(type == Pickup::activationTypeOnUse_s)
-            this->setActivationType(pickupActivationType::onUse);
+            this->setActivationType(PickupActivationType::onUse);
         else
             orxout(internal_error, context::pickups) << "Invalid activationType '" << type << "' in " << this->getIdentifier()->getName() << "." << endl;
     }
@@ -157,9 +157,9 @@
     void Pickup::setDurationTypeAsString(const std::string& type)
     {
         if(type == Pickup::durationTypeOnce_s)
-            this->setDurationType(pickupDurationType::once);
+            this->setDurationType(PickupDurationType::once);
         else if(type == Pickup::durationTypeContinuous_s)
-            this->setDurationType(pickupDurationType::continuous);
+            this->setDurationType(PickupDurationType::continuous);
         else
             orxout(internal_error, context::pickups) << "Invalid durationType '" << type << "' in " << this->getIdentifier()->getName() << "." << endl;
     }

Modified: code/branches/cpp11_v3/src/modules/pickup/Pickup.h
===================================================================
--- code/branches/cpp11_v3/src/modules/pickup/Pickup.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/pickup/Pickup.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -52,14 +52,11 @@
 
     @ingroup Pickup
     */
-    namespace pickupActivationType
+    enum class PickupActivationType
     {
-        enum Value
-        {
-            immediate, //!< Means that the @ref orxonox::Pickup "Pickup" will be used immediately after pickup.
-            onUse, //!< Means that the @ref orxonox::Pickup "Pickup" will be used at a later point trough some external influence.
-        };
-    }
+        immediate, //!< Means that the @ref orxonox::Pickup "Pickup" will be used immediately after pickup.
+        onUse, //!< Means that the @ref orxonox::Pickup "Pickup" will be used at a later point trough some external influence.
+    };
 
     /**
     @brief
@@ -67,14 +64,11 @@
 
     @ingroup Pickup
     */
-    namespace pickupDurationType
+    enum class PickupDurationType
     {
-        enum Value
-        {
-            once, //!< Means that the @ref orxonox::Pickup "Pickup" will be used only once at a singular time instant.
-            continuous, //!< Means that the @ref orxonox::Pickup "Pickup" will be used over a continuous timespan.
-        };
-    }
+        once, //!< Means that the @ref orxonox::Pickup "Pickup" will be used only once at a singular time instant.
+        continuous, //!< Means that the @ref orxonox::Pickup "Pickup" will be used over a continuous timespan.
+    };
 
     /**
     @brief
@@ -111,13 +105,13 @@
             @brief Get the activation type of the Pickup.
             @return Returns the activation type of the Pickup.
             */
-            inline pickupActivationType::Value getActivationType(void) const
+            inline PickupActivationType getActivationType(void) const
                 { return this->activationType_; }
             /**
             @brief Get the duration type of the Pickup.
             @return Returns the duration type of the Pickup.
             */
-            inline pickupDurationType::Value getDurationType(void) const
+            inline PickupDurationType getDurationType(void) const
                 { return this->durationType_; }
 
             const std::string& getActivationTypeAsString(void) const; //!< Get the activation type of the Pickup.
@@ -128,25 +122,25 @@
             @return Returns true if the activation type is 'immediate'.
             */
             inline bool isImmediate(void) const
-                { return this->getActivationType() == pickupActivationType::immediate; }
+                { return this->getActivationType() == PickupActivationType::immediate; }
             /**
             @brief Get whether the activation type is 'onUse'.
             @return Returns true if the activation type is 'onUse'.
             */
             inline bool isOnUse(void) const
-                { return this->getActivationType() == pickupActivationType::onUse; }
+                { return this->getActivationType() == PickupActivationType::onUse; }
             /**
             @brief Get whether the duration type is 'once'.
             @return Returns true if the duration type is 'once'.
             */
             inline bool isOnce(void) const
-                { return this->getDurationType() == pickupDurationType::once; }
+                { return this->getDurationType() == PickupDurationType::once; }
             /**
             @brief Get whether the duration type is 'continuous'.
             @return Returns true if the duration type is 'continuous'.
             */
             inline bool isContinuous(void) const
-                { return this->getDurationType() == pickupDurationType::continuous; }
+                { return this->getDurationType() == PickupDurationType::continuous; }
 
             virtual void changedPickedUp(void) override; //!< Should be called when the pickup has transited from picked up to dropped or the other way around.
 
@@ -163,13 +157,13 @@
             @brief Set the activation type of the Pickup.
             @param type The activation type of the Pickup.
             */
-            inline void setActivationType(pickupActivationType::Value type)
+            inline void setActivationType(PickupActivationType type)
                 { this->activationType_ = type; }
             /**
             @brief Set the duration type of the Pickup.
             @param type The duration type of the Pickup.
             */
-            inline void setDurationType(pickupDurationType::Value type)
+            inline void setDurationType(PickupDurationType type)
                 { this->durationType_ = type; }
 
             void setActivationTypeAsString(const std::string& type); //!< Set the activation type of the Pickup.
@@ -179,8 +173,8 @@
             void initialize(void); //!< Initializes the member variables.
 
             std::string representationName_; //!< The name of the associated PickupRepresentation.
-            pickupActivationType::Value activationType_; //!< The activation type of the Pickup.
-            pickupDurationType::Value durationType_; //!< The duration type of the Pickup.
+            PickupActivationType activationType_; //!< The activation type of the Pickup.
+            PickupDurationType durationType_; //!< The duration type of the Pickup.
 
             //! Strings for the activation and duration types.
             static const std::string activationTypeImmediate_s;

Modified: code/branches/cpp11_v3/src/modules/pickup/items/DronePickup.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/pickup/items/DronePickup.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/pickup/items/DronePickup.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -73,7 +73,7 @@
     void DronePickup::initialize(void)
     {
         this->addTarget(ClassIdentifier<Pawn>::getIdentifier());
-        this->setDurationType(pickupDurationType::once);
+        this->setDurationType(PickupDurationType::once);
         this->droneTemplate_ = "";
     }
 

Modified: code/branches/cpp11_v3/src/modules/pickup/items/HealthPickup.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/pickup/items/HealthPickup.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/pickup/items/HealthPickup.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -76,7 +76,7 @@
     {
         this->health_ = 0.0f;
         this->healthRate_ = 0.0f;
-        this->healthType_ = pickupHealthType::limited;
+        this->healthType_ = PickupHealthType::limited;
         this->maxHealthSave_ = 0.0f;
         this->maxHealthOverwrite_ = 0.0f;
 
@@ -126,13 +126,13 @@
 
             switch(this->getHealthType())
             {
-                case pickupHealthType::permanent:
+                case PickupHealthType::permanent:
                     if(pawn->getMaxHealth() < fullHealth)
                         pawn->setMaxHealth(fullHealth);
-                case pickupHealthType::limited:
+                case PickupHealthType::limited:
                     pawn->addHealth(health);
                     break;
-                case pickupHealthType::temporary:
+                case PickupHealthType::temporary:
                     if(pawn->getMaxHealth() > fullHealth)
                     {
                         this->maxHealthSave_ = pawn->getMaxHealth();
@@ -173,14 +173,14 @@
                 float health = 0.0f;
                 switch(this->getHealthType())
                 {
-                    case pickupHealthType::permanent:
+                    case PickupHealthType::permanent:
                         health = pawn->getHealth()+this->getHealth();
                         if(pawn->getMaxHealth() < health)
                             pawn->setMaxHealth(health);
-                    case pickupHealthType::limited:
+                    case PickupHealthType::limited:
                         pawn->addHealth(this->getHealth());
                         break;
-                    case pickupHealthType::temporary:
+                    case PickupHealthType::temporary:
                         health = pawn->getHealth()+this->getHealth();
                         if(pawn->getMaxHealth() < health)
                         {
@@ -200,7 +200,7 @@
         }
         else
         {
-            if(this->getHealthType() == pickupHealthType::temporary)
+            if(this->getHealthType() == PickupHealthType::temporary)
             {
                 PickupCarrier* carrier = this->getCarrier();
                 Pawn* pawn = orxonox_cast<Pawn*>(carrier);
@@ -255,11 +255,11 @@
     {
         switch(this->getHealthType())
         {
-            case pickupHealthType::limited:
+            case PickupHealthType::limited:
                 return HealthPickup::healthTypeLimited_s;
-            case pickupHealthType::temporary:
+            case PickupHealthType::temporary:
                 return HealthPickup::healthTypeTemporary_s;
-            case pickupHealthType::permanent:
+            case PickupHealthType::permanent:
                 return HealthPickup::healthTypePermanent_s;
             default:
                 orxout(internal_error, context::pickups) << "Invalid healthType in HealthPickup." << endl;
@@ -307,11 +307,11 @@
     void HealthPickup::setHealthTypeAsString(const std::string& type)
     {
         if(type == HealthPickup::healthTypeLimited_s)
-            this->setHealthType(pickupHealthType::limited);
+            this->setHealthType(PickupHealthType::limited);
         else if(type == HealthPickup::healthTypeTemporary_s)
-            this->setHealthType(pickupHealthType::temporary);
+            this->setHealthType(PickupHealthType::temporary);
         else if(type == HealthPickup::healthTypePermanent_s)
-            this->setHealthType(pickupHealthType::permanent);
+            this->setHealthType(PickupHealthType::permanent);
         else
             orxout(internal_error, context::pickups) << "Invalid healthType '" << type << "' in HealthPickup." << endl;
     }

Modified: code/branches/cpp11_v3/src/modules/pickup/items/HealthPickup.h
===================================================================
--- code/branches/cpp11_v3/src/modules/pickup/items/HealthPickup.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/pickup/items/HealthPickup.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -50,15 +50,12 @@
 
     @ingroup PickupItems
     */
-    namespace pickupHealthType
+    enum class PickupHealthType
     {
-        enum Value
-        {
-            limited, //!< Means that the @ref orxonox::HealthPickup "HealthPickup" only increases the users health to its maximum health.
-            temporary, //!< Means that the @ref orxonox::HealthPickup "HealthPickup" temporarily increases the users health even above its maximum health, but only as long as it is in use.
-            permanent //!< Means that the @ref orxonox::HealthPickup "HealthPickup" increases the users health even above its maximum health and increases the maximum health permanently such that it matches the new health.
-        };
-    }
+        limited, //!< Means that the @ref orxonox::HealthPickup "HealthPickup" only increases the users health to its maximum health.
+        temporary, //!< Means that the @ref orxonox::HealthPickup "HealthPickup" temporarily increases the users health even above its maximum health, but only as long as it is in use.
+        permanent //!< Means that the @ref orxonox::HealthPickup "HealthPickup" increases the users health even above its maximum health and increases the maximum health permanently such that it matches the new health.
+    };
 
     /**
     @brief
@@ -114,7 +111,7 @@
             @brief Get the type of HealthPickup, this pickup is.
             @return Returns the health type as an enum.
             */
-            inline pickupHealthType::Value getHealthType(void) const
+            inline PickupHealthType getHealthType(void) const
                 { return this->healthType_; }
             const std::string& getHealthTypeAsString(void) const; //!< Get the health type of this pickup.
 
@@ -126,7 +123,7 @@
             @brief Set the health type of this pickup.
             @param type The type of this pickup as an enum.
             */
-            inline void setHealthType(pickupHealthType::Value type)
+            inline void setHealthType(PickupHealthType type)
                 { this->healthType_ = type; }
             void setHealthTypeAsString(const std::string& type); //!< Set the type of the HealthPickup.
 
@@ -138,7 +135,7 @@
             float healthRate_; //!< The rate at which the health is transferred.
             float maxHealthSave_; //!< Helper to remember what the actual maxHealth of the Pawn was before we changed it.
             float maxHealthOverwrite_; //!< Helper to remember with which value we overwrote the maxHealh, to detect if someone else changed it as well.
-            pickupHealthType::Value healthType_; //!< The type of the HealthPickup.
+            PickupHealthType healthType_; //!< The type of the HealthPickup.
 
             //! Strings for the health types.
             static const std::string healthTypeLimited_s;

Modified: code/branches/cpp11_v3/src/modules/pickup/items/MetaPickup.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/pickup/items/MetaPickup.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/pickup/items/MetaPickup.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -78,8 +78,8 @@
     {
         this->addTarget(ClassIdentifier<PickupCarrier>::getIdentifier());
 
-        this->setDurationType(pickupDurationType::once);
-        this->metaType_ = pickupMetaType::none;
+        this->setDurationType(PickupDurationType::once);
+        this->metaType_ = PickupMetaType::none;
     }
 
     /**
@@ -103,13 +103,13 @@
         SUPER(MetaPickup, changedUsed);
 
         // If the MetaPickup transited to used, and the metaType is not none.
-        if(this->isUsed() && this->metaType_ != pickupMetaType::none)
+        if(this->isUsed() && this->metaType_ != PickupMetaType::none)
         {
             PickupCarrier* carrier = this->getCarrier();
-            if(this->getMetaType() != pickupMetaType::none && carrier != nullptr)
+            if(this->getMetaType() != PickupMetaType::none && carrier != nullptr)
             {
                 // If the metaType is destroyCarrier, then the PickupCarrier is destroyed.
-                if(this->getMetaType() == pickupMetaType::destroyCarrier)
+                if(this->getMetaType() == PickupMetaType::destroyCarrier)
                 {
                     Pawn* pawn = orxonox_cast<Pawn*>(carrier);
                     pawn->kill();
@@ -123,17 +123,17 @@
                         continue;
 
                     // If the metaType is use, then the Pickupable is set to used.
-                    if(this->getMetaType() == pickupMetaType::use && !pickup->isUsed())
+                    if(this->getMetaType() == PickupMetaType::use && !pickup->isUsed())
                     {
                         pickup->setUsed(true);
                     }
                     // If the metaType is drop, then the Pickupable is dropped.
-                    else if(this->getMetaType() == pickupMetaType::drop)
+                    else if(this->getMetaType() == PickupMetaType::drop)
                     {
                         pickup->drop();
                     }
                     // If the metaType is destroy, then the Pickupable is destroyed.
-                    else if(this->getMetaType() == pickupMetaType::destroy)
+                    else if(this->getMetaType() == PickupMetaType::destroy)
                     {
                         pickup->Pickupable::destroy();
                     }
@@ -153,15 +153,15 @@
     {
         switch(this->getMetaType())
         {
-            case pickupMetaType::none:
+            case PickupMetaType::none:
                 return MetaPickup::metaTypeNone_s;
-            case pickupMetaType::use:
+            case PickupMetaType::use:
                 return MetaPickup::metaTypeUse_s;
-            case pickupMetaType::drop:
+            case PickupMetaType::drop:
                 return MetaPickup::metaTypeDrop_s;
-            case pickupMetaType::destroy:
+            case PickupMetaType::destroy:
                 return MetaPickup::metaTypeDestroy_s;
-            case pickupMetaType::destroyCarrier:
+            case PickupMetaType::destroyCarrier:
                 return MetaPickup::metaTypeDestroyCarrier_s;
             default:
                 return BLANKSTRING;
@@ -178,23 +178,23 @@
     {
         if(type == MetaPickup::metaTypeNone_s)
         {
-            this->setMetaType(pickupMetaType::none);
+            this->setMetaType(PickupMetaType::none);
         }
         else if(type == MetaPickup::metaTypeUse_s)
         {
-            this->setMetaType(pickupMetaType::use);
+            this->setMetaType(PickupMetaType::use);
         }
         else if(type == MetaPickup::metaTypeDrop_s)
         {
-            this->setMetaType(pickupMetaType::drop);
+            this->setMetaType(PickupMetaType::drop);
         }
         else if(type == MetaPickup::metaTypeDestroy_s)
         {
-            this->setMetaType(pickupMetaType::destroy);
+            this->setMetaType(PickupMetaType::destroy);
         }
         else if(type == MetaPickup::metaTypeDestroyCarrier_s)
         {
-            this->setMetaType(pickupMetaType::destroyCarrier);
+            this->setMetaType(PickupMetaType::destroyCarrier);
         }
         else
             orxout(internal_warning, context::pickups) << "Invalid metaType '" << type << "' in MetaPickup." << endl;

Modified: code/branches/cpp11_v3/src/modules/pickup/items/MetaPickup.h
===================================================================
--- code/branches/cpp11_v3/src/modules/pickup/items/MetaPickup.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/pickup/items/MetaPickup.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -47,17 +47,14 @@
 
     @ingroup PickupItems
     */
-    namespace pickupMetaType
+    enum class PickupMetaType
     {
-        enum Value
-        {
-            none, //!< The @ref orxonox::MetaPickup "MetaPickup" does nothing.
-            use, //!< The @ref orxonox::MetaPickup "MetaPickup" uses all the @ref orxonox::PickupCarrier "PickupCarriers'" @ref orxonox::Pickupable "Pickupables".
-            drop, //!< The @ref orxonox::MetaPickup "MetaPickup" drops all the @ref orxonox::PickupCarrier "PickupCarriers'" @ref orxonox::Pickupable "Pickupables".
-            destroy, //!< The @ref orxonox::MetaPickup "MetaPickup" destroys all the @ref orxonox::PickupCarrier "PickupCarriers'" @ref orxonox::Pickupable "Pickupables".
-            destroyCarrier //!< The @ref orxonox::MetaPickup "MetaPickup" destroys the @ref orxonox::PickupCarrier "PickupCarrier".
-        };
-    }
+        none, //!< The @ref orxonox::MetaPickup "MetaPickup" does nothing.
+        use, //!< The @ref orxonox::MetaPickup "MetaPickup" uses all the @ref orxonox::PickupCarrier "PickupCarriers'" @ref orxonox::Pickupable "Pickupables".
+        drop, //!< The @ref orxonox::MetaPickup "MetaPickup" drops all the @ref orxonox::PickupCarrier "PickupCarriers'" @ref orxonox::Pickupable "Pickupables".
+        destroy, //!< The @ref orxonox::MetaPickup "MetaPickup" destroys all the @ref orxonox::PickupCarrier "PickupCarriers'" @ref orxonox::Pickupable "Pickupables".
+        destroyCarrier //!< The @ref orxonox::MetaPickup "MetaPickup" destroys the @ref orxonox::PickupCarrier "PickupCarrier".
+    };
 
     /**
     @brief
@@ -99,7 +96,7 @@
             @brief Returns the meta type of the MetaPickup.
             @return Returns an enum with the meta type of the MetaPickup.
             */
-            inline pickupMetaType::Value getMetaType(void) const
+            inline PickupMetaType getMetaType(void) const
                 { return this->metaType_; }
             const std::string& getMetaTypeAsString(void) const; //!< Get the meta type of this MetaPickup.
 
@@ -108,14 +105,14 @@
             @brief Set the meta type of the MetaPickup.
             @param type The meta type as an enum.
             */
-            inline void setMetaType(pickupMetaType::Value type)
+            inline void setMetaType(PickupMetaType type)
                 { this->metaType_ =  type; }
             void setMetaTypeAsString(const std::string& type); //!< Set the meta type of this MetaPickup.
 
         private:
             void initialize(void); //!< Initializes the member variables.
 
-            pickupMetaType::Value metaType_; //!< The meta type of the MetaPickup, determines which actions are taken.
+            PickupMetaType metaType_; //!< The meta type of the MetaPickup, determines which actions are taken.
 
             //! Static strings for the meta types.
             static const std::string metaTypeNone_s;

Modified: code/branches/cpp11_v3/src/modules/portals/PortalEndPoint.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/portals/PortalEndPoint.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/portals/PortalEndPoint.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -56,7 +56,7 @@
         this->attach(this->trigger_);
 
         this->setRadarObjectColour(ColourValue::White);
-        this->setRadarObjectShape(RadarViewable::Dot);
+        this->setRadarObjectShape(RadarViewable::Shape::Dot);
         this->setRadarVisibility(true);
         if( GameMode::isMaster() )
         {

Modified: code/branches/cpp11_v3/src/modules/questsystem/GlobalQuest.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/GlobalQuest.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/GlobalQuest.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -176,7 +176,7 @@
     @param player
         The player.
     */
-    QuestStatus::Value GlobalQuest::getStatus(const PlayerInfo* player) const
+    QuestStatus GlobalQuest::getStatus(const PlayerInfo* player) const
     {
         assert(player);
 
@@ -199,7 +199,7 @@
     @return
         Returns false if player is nullptr.
     */
-    bool GlobalQuest::setStatus(PlayerInfo* player, const QuestStatus::Value & status)
+    bool GlobalQuest::setStatus(PlayerInfo* player, const QuestStatus & status)
     {
         assert(player);
 

Modified: code/branches/cpp11_v3/src/modules/questsystem/GlobalQuest.h
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/GlobalQuest.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/GlobalQuest.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -102,13 +102,13 @@
             virtual bool isFailable(const PlayerInfo* player) const override; //!< Checks whether the Quest can be failed.
             virtual bool isCompletable(const PlayerInfo* player) const override; //!< Checks whether the Quest can be completed.
 
-            virtual QuestStatus::Value getStatus(const PlayerInfo* player) const override; //!< Returns the status of the Quest for a specific player.
+            virtual QuestStatus getStatus(const PlayerInfo* player) const override; //!< Returns the status of the Quest for a specific player.
 
-            virtual bool setStatus(PlayerInfo* player, const QuestStatus::Value & status) override; //!< Sets the status for a specific player.
+            virtual bool setStatus(PlayerInfo* player, const QuestStatus & status) override; //!< Sets the status for a specific player.
 
         private:
             std::set<PlayerInfo*> players_; //!< The set of players which possess this Quest.
-            QuestStatus::Value status_; //!< The status of this Quest.
+            QuestStatus status_; //!< The status of this Quest.
             std::list<QuestEffect*> rewards_; //!< Reward QuestEffects only invoked on the player completing the Quest.
 
             bool addRewardEffect(QuestEffect* effect); //!< Adds a reward QuestEffect to the list of reward QuestEffects.

Modified: code/branches/cpp11_v3/src/modules/questsystem/LocalQuest.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/LocalQuest.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/LocalQuest.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -167,11 +167,11 @@
     @return
         Returns the status of the Quest for the input player.
     */
-    QuestStatus::Value LocalQuest::getStatus(const PlayerInfo* player) const
+    QuestStatus LocalQuest::getStatus(const PlayerInfo* player) const
     {
         assert(player);
 
-        std::map<const PlayerInfo*, QuestStatus::Value>::const_iterator it = this->playerStatus_.find(player);
+        std::map<const PlayerInfo*, QuestStatus>::const_iterator it = this->playerStatus_.find(player);
         if (it != this->playerStatus_.end()) // If there is a player in the map.
             return it->second;
 
@@ -189,7 +189,7 @@
     @return
         Returns false if player is nullptr.
     */
-    bool LocalQuest::setStatus(PlayerInfo* player, const QuestStatus::Value & status)
+    bool LocalQuest::setStatus(PlayerInfo* player, const QuestStatus & status)
     {
         assert(player);
 

Modified: code/branches/cpp11_v3/src/modules/questsystem/LocalQuest.h
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/LocalQuest.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/LocalQuest.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -96,11 +96,11 @@
             virtual bool isFailable(const PlayerInfo* player) const override; //!< Checks whether the Quest can be failed.
             virtual bool isCompletable(const PlayerInfo* player) const override; //!< Checks whether the Quest can be completed.
 
-            virtual QuestStatus::Value getStatus(const PlayerInfo* player) const override; //!< Returns the status of the Quest for a specific player.
-            virtual bool setStatus(PlayerInfo* player, const QuestStatus::Value & status) override; //!< Sets the status for a specific player.
+            virtual QuestStatus getStatus(const PlayerInfo* player) const override; //!< Returns the status of the Quest for a specific player.
+            virtual bool setStatus(PlayerInfo* player, const QuestStatus & status) override; //!< Sets the status for a specific player.
 
         private:
-            std::map<const PlayerInfo*, QuestStatus::Value> playerStatus_; //!< List of the status for each player, with the Player-pointer as key.
+            std::map<const PlayerInfo*, QuestStatus> playerStatus_; //!< List of the status for each player, with the Player-pointer as key.
 
     };
 

Modified: code/branches/cpp11_v3/src/modules/questsystem/Quest.h
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/Quest.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/Quest.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -50,16 +50,13 @@
 
     @ingroup Questsystem
     */
-    namespace QuestStatus
+    enum class QuestStatus
     {
-        enum Value
-        {
-            Inactive, //!< The @ref orxonox::Quest "Quest" is inactive.
-            Active, //!< The @ref orxonox::Quest "Quest" is active.
-            Failed, //!< The @ref orxonox::Quest "Quest" has been failed.
-            Completed //!< The @ref orxonox::Quest "Quest" has been completed.
-        };
-    }
+        Inactive, //!< The @ref orxonox::Quest "Quest" is inactive.
+        Active, //!< The @ref orxonox::Quest "Quest" is active.
+        Failed, //!< The @ref orxonox::Quest "Quest" has been failed.
+        Completed //!< The @ref orxonox::Quest "Quest" has been completed.
+    };
 
     /**
     @brief
@@ -142,8 +139,8 @@
             inline std::list<QuestEffect*> & getCompleteEffectList(void)
                 { return this->completeEffects_; }
 
-            virtual QuestStatus::Value getStatus(const PlayerInfo* player) const = 0; //!< Returns the status of the Quest for a specific player.
-            virtual bool setStatus(PlayerInfo* player, const QuestStatus::Value & status) = 0; //!< Changes the status for a specific player.
+            virtual QuestStatus getStatus(const PlayerInfo* player) const = 0; //!< Returns the status of the Quest for a specific player.
+            virtual bool setStatus(PlayerInfo* player, const QuestStatus & status) = 0; //!< Changes the status for a specific player.
 
         private:
             Quest* parentQuest_; //!< Pointer to the parent-quest.

Modified: code/branches/cpp11_v3/src/modules/questsystem/QuestDescription.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/QuestDescription.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/QuestDescription.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -118,7 +118,7 @@
             return false;
         }
 
-        NotificationListener::sendNotification(message, QuestDescription::SENDER, notificationMessageType::info, notificationSendMode::network, player->getClientID());
+        NotificationListener::sendNotification(message, QuestDescription::SENDER, NotificationMessageType::info, NotificationSendMode::network, player->getClientID());
         return true;
     }
 

Modified: code/branches/cpp11_v3/src/modules/questsystem/QuestEffectBeacon.h
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/QuestEffectBeacon.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/QuestEffectBeacon.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -49,14 +49,11 @@
 
     @ingroup Questsystem
     */
-    namespace QuestEffectBeaconStatus
+    enum class QuestEffectBeaconStatus
     {
-        enum Value
-        {
-            Inactive, //!< The @ref orxonox::QuestEffectBeacon "QuestEffectBeacon" is inactive.
-            Active //!< The @ref orxonox::QuestEffectBeacon "QuestEffectBeacon" is active.
-        };
-    }
+        Inactive, //!< The @ref orxonox::QuestEffectBeacon "QuestEffectBeacon" is inactive.
+        Active //!< The @ref orxonox::QuestEffectBeacon "QuestEffectBeacon" is active.
+    };
 
     /**
     @brief
@@ -124,7 +121,7 @@
 
             std::list<QuestEffect*> effects_; //!< The list of QuestEffects to be invoked on the executing player.
             int times_; //!< Number of times the beacon can be exectued.
-            QuestEffectBeaconStatus::Value status_; //!< The status of the QuestEffectBeacon, Can be eighter active or inactive.
+            QuestEffectBeaconStatus status_; //!< The status of the QuestEffectBeacon, Can be eighter active or inactive.
 
             bool setTimes(const int & n); //!< Set the number of times the QuestEffectBeacon can be executed.
             bool addEffect(QuestEffect* effect); //!< Add a QuestEffect to the QuestEffectBeacon.

Modified: code/branches/cpp11_v3/src/modules/questsystem/QuestHint.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/QuestHint.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/QuestHint.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -91,11 +91,11 @@
             return false;
 
         // Find the player.
-        std::map<const PlayerInfo*, QuestHintStatus::Value>::const_iterator it = this->playerStatus_.find(player);
+        std::map<const PlayerInfo*, QuestHintStatus>::const_iterator it = this->playerStatus_.find(player);
         if (it != this->playerStatus_.end()) // If the player is in the map.
-            return it->second;
+            return (it->second == QuestHintStatus::Active);
 
-        return QuestStatus::Inactive;
+        return false;
     }
 
     /**

Modified: code/branches/cpp11_v3/src/modules/questsystem/QuestHint.h
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/QuestHint.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/QuestHint.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -49,14 +49,11 @@
 
     @ingroup Questsystem
     */
-    namespace QuestHintStatus
+    enum class QuestHintStatus
     {
-        enum Value
-        {
-            Inactive, //!< The @ref orxonox::QuestHint "QuestHint" is inactive.
-            Active //!< The @ref orxonox::QuestHint "QuestHint" is active.
-        };
-    }
+        Inactive, //!< The @ref orxonox::QuestHint "QuestHint" is inactive.
+        Active //!< The @ref orxonox::QuestHint "QuestHint" is active.
+    };
 
     /**
     @brief
@@ -100,7 +97,7 @@
 
         private:
             Quest* quest_; //!< The Quest the QuestHint belongs to.
-            std::map<const PlayerInfo*, QuestHintStatus::Value> playerStatus_; //!< List of the states for each player, with the Player-pointer as key.
+            std::map<const PlayerInfo*, QuestHintStatus> playerStatus_; //!< List of the states for each player, with the Player-pointer as key.
 
     }; // tolua_export
 

Modified: code/branches/cpp11_v3/src/modules/questsystem/QuestListener.h
===================================================================
--- code/branches/cpp11_v3/src/modules/questsystem/QuestListener.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/questsystem/QuestListener.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -49,16 +49,13 @@
 
     @ingroup Questsystem
     */
-    namespace QuestListenerMode
+    enum class QuestListenerMode
     {
-        enum Value
-        {
-            All, //!< Listens to all events.
-            Start, //!< Only listens to events pertaining the starting of @ref orxonox::Quest "Quests".
-            Fail, //!< Only listens to events pertaining the failing of @ref orxonox::Quest "Quests".
-            Complete //!< Only listens to events pertaining the completing of @ref orxonox::Quest "Quests".
-        };
-    }
+        All, //!< Listens to all events.
+        Start, //!< Only listens to events pertaining the starting of @ref orxonox::Quest "Quests".
+        Fail, //!< Only listens to events pertaining the failing of @ref orxonox::Quest "Quests".
+        Complete //!< Only listens to events pertaining the completing of @ref orxonox::Quest "Quests".
+    };
 
     /**
     @brief
@@ -102,7 +99,7 @@
             bool execute(void); //!< Executes the QuestListener, resp. fires an Event.
 
         private:
-            QuestListenerMode::Value mode_; //!< The mode of the QuestListener.
+            QuestListenerMode mode_; //!< The mode of the QuestListener.
             Quest* quest_; //!< A pointer to the Quest the QuestListener is reacting to.
 
             //! Static variables for the modes as strings.

Modified: code/branches/cpp11_v3/src/modules/towerdefense/TowerDefense.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/towerdefense/TowerDefense.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/towerdefense/TowerDefense.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -354,7 +354,7 @@
                 fields_[i][j]->setPosition(coord.get3dcoordinate()); 
                 fields_[i][j]->create(fields.at(pos), fields.at(pos+1));
                 pos += 2;
-                if (fields_[i][j]->getType() == START)
+                if (fields_[i][j]->getType() == TowerDefenseFieldType::START)
                 {
                     startCoord.Set(i,j);
                     waypoints_.push_back(fields_[i][j]);
@@ -378,7 +378,7 @@
         TowerDefenseField* thisField = fields_[thisCoord->GetX()][thisCoord->GetY()];
         TDCoordinate* nextCoord = new TDCoordinate(0,0);
 
-        if (thisField->getType() != STREET && thisField->getType() != START)
+        if (thisField->getType() != TowerDefenseFieldType::STREET && thisField->getType() != TowerDefenseFieldType::START)
         {
             return nullptr;
         }

Modified: code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseEnemy.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseEnemy.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseEnemy.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -26,7 +26,7 @@
     {
         RegisterObject(TowerDefenseEnemy);
 
-        this->setCollisionType(WorldEntity::Dynamic);
+        this->setCollisionType(WorldEntity::CollisionType::Dynamic);
         //needed to keep track of the PlayerStats coded in TowerDefense.h
         this->td = orxonox_cast<TowerDefense*>(this->getGametype());
         once_ = false;

Modified: code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseField.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseField.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseField.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -49,7 +49,7 @@
         RegisterObject(TowerDefenseField);
 
         tower_ = nullptr;
-        type_ = FREE;
+        type_ = TowerDefenseFieldType::FREE;
         center_ = nullptr;
         upgrade_ = 0;
         setPosition(0,0,0);                            
@@ -185,7 +185,7 @@
     {            
         modelGround_->setMeshSource("TD_F1.mesh");
         tower_ = nullptr;
-        type_ = FREE;
+        type_ = TowerDefenseFieldType::FREE;
         setUpgrade(0);
         setAngle(orientation);
     }
@@ -194,7 +194,7 @@
     {      
         modelGround_->setMeshSource("TD_S5.mesh");
         tower_ = nullptr;
-        type_ = START;
+        type_ = TowerDefenseFieldType::START;
         setUpgrade(0);
         setAngle(orientation);    
     }
@@ -204,7 +204,7 @@
     {     
         modelGround_->setMeshSource("TD_S4.mesh");
         tower_ = nullptr;
-        type_ = END;
+        type_ = TowerDefenseFieldType::END;
         setUpgrade(0);
         setAngle(orientation);
     }   
@@ -213,7 +213,7 @@
     {      
         modelGround_->setMeshSource("TD_S1.mesh");
         tower_ = nullptr;
-        type_ = STREET;
+        type_ = TowerDefenseFieldType::STREET;
         setUpgrade(0);
         setAngle(orientation);
     }  
@@ -222,7 +222,7 @@
     {     
         modelGround_->setMeshSource("TD_S2.mesh");
         tower_ = nullptr;
-        type_ = STREET;
+        type_ = TowerDefenseFieldType::STREET;
         setUpgrade(0);
         setAngle(orientation);
     }  
@@ -231,7 +231,7 @@
     {    
         modelGround_->setMeshSource("TD_S3.mesh");
         tower_ = nullptr;
-        type_ = STREET;
+        type_ = TowerDefenseFieldType::STREET;
         setUpgrade(0);
         setAngle(orientation);
     } 
@@ -241,7 +241,7 @@
         modelGround_->setMeshSource("TD_F1.mesh");
         modelObject_->setMeshSource("TD_O1.mesh");
         tower_ = nullptr;
-        type_ = OBSTACLE;
+        type_ = TowerDefenseFieldType::OBSTACLE;
         setUpgrade(0);
         setAngle(orientation);
     }
@@ -253,7 +253,7 @@
             modelGround_->setMeshSource("TD_F1.mesh");
             tower_ = new TowerDefenseTower(center_->getContext());
             attach(tower_);
-            type_ = TOWER;
+            type_ = TowerDefenseFieldType::TOWER;
             setUpgrade(upgrade);
             if (upgrade_ > 0 && modelObject_ != nullptr)
             {

Modified: code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseField.h
===================================================================
--- code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseField.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseField.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -45,7 +45,7 @@
 
 namespace orxonox
 {
-    enum TowerDefenseFieldType
+    enum class TowerDefenseFieldType
     { 
         FREE,
         STREET, 
@@ -63,7 +63,7 @@
             virtual ~TowerDefenseField() {}
             virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode) override;
             const bool isFree() const
-                { return type_==FREE; }
+                { return type_==TowerDefenseFieldType::FREE; }
             virtual void create(char object, char param);
             virtual void setCenterpoint(TowerDefenseCenterpoint* center);
             virtual void upgrade();

Modified: code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseTower.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseTower.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/towerdefense/TowerDefenseTower.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -25,7 +25,7 @@
     {
         RegisterObject(TowerDefenseTower);
         game_ =nullptr;
-        this->setCollisionType(WorldEntity::None);
+        this->setCollisionType(WorldEntity::CollisionType::None);
         upgrade = 1;
 
         //this->removeAllEngines();

Modified: code/branches/cpp11_v3/src/modules/weapons/projectiles/GravityBomb.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/weapons/projectiles/GravityBomb.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/weapons/projectiles/GravityBomb.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -27,7 +27,7 @@
                 //Define CollisionType of the bomb
                 this->timeToLife_= LIFETIME;
                 this->setCollisionResponse(false);
-                this->setCollisionType(WorldEntity::Dynamic);
+                this->setCollisionType(WorldEntity::CollisionType::Dynamic);
                 this->enableCollisionCallback();
 
                 //Add Collision Shape

Modified: code/branches/cpp11_v3/src/modules/weapons/projectiles/GravityBombField.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/weapons/projectiles/GravityBombField.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/weapons/projectiles/GravityBombField.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -40,7 +40,7 @@
 
         //Make the Field visible on Radar and minimap.
         this->setRadarObjectColour(ColourValue(1.0, 0.0, 0.2,1)); // Red
-        this->setRadarObjectShape(RadarViewable::Dot);
+        this->setRadarObjectShape(RadarViewable::Shape::Dot);
         this->setRadarObjectScale(1.0f);
         
 

Modified: code/branches/cpp11_v3/src/modules/weapons/projectiles/IceGunProjectile.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/weapons/projectiles/IceGunProjectile.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/weapons/projectiles/IceGunProjectile.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -119,7 +119,7 @@
 
             Vector3 offset = this->getWorldPosition() - otherObject->getWorldPosition();
             freezer->setPosition(Vector3(0,0,0));
-            freezer->translate(offset, WorldEntity::World);
+            freezer->translate(offset, WorldEntity::TransformSpace::World);
             // Start the freezing effect.
             freezer->startFreezing();
         }

Modified: code/branches/cpp11_v3/src/modules/weapons/projectiles/LightningGunProjectile.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/weapons/projectiles/LightningGunProjectile.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/weapons/projectiles/LightningGunProjectile.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -47,7 +47,7 @@
 
         this->textureIndex_ = 1;
         this->setMass(2);
-        this->setCollisionType(Dynamic);
+        this->setCollisionType(CollisionType::Dynamic);
         this->maxTextureIndex_ = 8;
         this->textureTimer_.setTimer(0.01f, true, createExecutor(createFunctor(&LightningGunProjectile::changeTexture, this)));
 

Modified: code/branches/cpp11_v3/src/modules/weapons/projectiles/Projectile.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/weapons/projectiles/Projectile.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/weapons/projectiles/Projectile.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -56,7 +56,7 @@
             this->setMass(1.0f);
             this->enableCollisionCallback();
             this->setCollisionResponse(false);
-            this->setCollisionType(Dynamic);
+            this->setCollisionType(CollisionType::Dynamic);
 
             // Create a sphere collision shape and attach it to the projectile.
             collisionShape_ = new SphereCollisionShape(this->getContext());

Modified: code/branches/cpp11_v3/src/modules/weapons/projectiles/Rocket.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/weapons/projectiles/Rocket.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/weapons/projectiles/Rocket.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -69,7 +69,7 @@
 
         if (GameMode::isMaster())
         {
-            this->setCollisionType(WorldEntity::Kinematic);
+            this->setCollisionType(WorldEntity::CollisionType::Kinematic);
             this->setVelocity(0,0,-100);
 
             // Create rocket model
@@ -91,7 +91,7 @@
 
             this->enableCollisionCallback();
             this->setCollisionResponse(false);
-            this->setCollisionType(Kinematic);
+            this->setCollisionType(CollisionType::Kinematic);
 
             // Add collision shape
             ConeCollisionShape* collisionShape = new ConeCollisionShape(this->getContext());
@@ -127,7 +127,7 @@
         this->addCameraPosition(camPosition);
 
         this->setRadarObjectColour(ColourValue(1.0, 0.5, 0.0)); // orange
-        this->setRadarObjectShape(RadarViewable::Triangle);
+        this->setRadarObjectShape(RadarViewable::Shape::Triangle);
         this->setRadarObjectScale(0.5f);
     }
 

Modified: code/branches/cpp11_v3/src/modules/weapons/projectiles/RocketOld.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/weapons/projectiles/RocketOld.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/weapons/projectiles/RocketOld.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -69,7 +69,7 @@
 
         if (GameMode::isMaster())
         {
-            this->setCollisionType(WorldEntity::Kinematic);
+            this->setCollisionType(WorldEntity::CollisionType::Kinematic);
             this->setVelocity(0,0,-100);
 
             // Create RocketOld model
@@ -91,7 +91,7 @@
 
             this->enableCollisionCallback();
             this->setCollisionResponse(false);
-            this->setCollisionType(Kinematic);
+            this->setCollisionType(CollisionType::Kinematic);
 
             // Add collision shape
             ConeCollisionShape* collisionShape = new ConeCollisionShape(this->getContext());
@@ -127,7 +127,7 @@
         this->addCameraPosition(camPosition);
 
         this->setRadarObjectColour(ColourValue(1.0, 0.5, 0.0)); // orange
-        this->setRadarObjectShape(RadarViewable::Triangle);
+        this->setRadarObjectShape(RadarViewable::Shape::Triangle);
         this->setRadarObjectScale(0.5f);
     }
 

Modified: code/branches/cpp11_v3/src/modules/weapons/projectiles/SimpleRocket.cc
===================================================================
--- code/branches/cpp11_v3/src/modules/weapons/projectiles/SimpleRocket.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/modules/weapons/projectiles/SimpleRocket.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -69,7 +69,7 @@
 
         if (GameMode::isMaster())
         {
-            this->setCollisionType(WorldEntity::Kinematic);
+            this->setCollisionType(WorldEntity::CollisionType::Kinematic);
             this->fuel_ = true;
 
             // Create rocket model.
@@ -86,7 +86,7 @@
             this->fire_->setSource("Orxonox/simplerocketfire");
             this->enableCollisionCallback();
             this->setCollisionResponse(false);
-            this->setCollisionType(Kinematic);
+            this->setCollisionType(CollisionType::Kinematic);
 
             // Add collision shape.
             // TODO: fix the orientation and size of this collision shape to match the rocket
@@ -100,7 +100,7 @@
         }
 
         this->setRadarObjectColour(ColourValue(1.0, 1.0, 0.0)); // yellow
-        this->setRadarObjectShape(RadarViewable::Triangle);
+        this->setRadarObjectShape(RadarViewable::Shape::Triangle);
         this->setRadarObjectScale(0.5f);
     }
 

Modified: code/branches/cpp11_v3/src/orxonox/Main.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/Main.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/Main.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -32,6 +32,8 @@
 
 #include "OrxonoxPrereqs.h"
 
+#include <string>
+
 namespace orxonox
 {
     _OrxonoxExport int main(const std::string& strCmdLine);

Modified: code/branches/cpp11_v3/src/orxonox/Radar.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/Radar.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/Radar.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -54,9 +54,9 @@
     {
         // TODO: make this mapping configurable. Maybe there's a possibility with self configured
         //       configValues..
-        this->objectTypes_["Asteroid"] = RadarViewable::Dot;
-        this->objectTypes_["SpaceShip"] = RadarViewable::Square;
-        this->objectTypes_["AsdfQwerty"] = RadarViewable::Triangle;
+        this->objectTypes_["Asteroid"] = RadarViewable::Shape::Dot;
+        this->objectTypes_["SpaceShip"] = RadarViewable::Shape::Square;
+        this->objectTypes_["AsdfQwerty"] = RadarViewable::Shape::Triangle;
 
         /*WorldEntity* object;
         object = new WorldEntity();
@@ -112,7 +112,7 @@
     {
         std::map<std::string, RadarViewable::Shape>::iterator it = this->objectTypes_.find(name);
         if (it == this->objectTypes_.end())
-            return this->objectTypes_[name] = RadarViewable::Square; // default, configure!!
+            return this->objectTypes_[name] = RadarViewable::Shape::Square; // default, configure!!
         else
             return this->objectTypes_[name];
     }

Modified: code/branches/cpp11_v3/src/orxonox/gametypes/Gametype.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/gametypes/Gametype.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/gametypes/Gametype.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -44,21 +44,18 @@
 
 namespace orxonox
 {
-    namespace PlayerState
+    enum class PlayerState
     {
-        enum Value
-        {
-            Uninitialized,
-            Joined,
-            Alive,
-            Dead
-        };
-    }
+        Uninitialized,
+        Joined,
+        Alive,
+        Dead
+    };
 
     struct Player
     {
         PlayerInfo* info_;
-        PlayerState::Value state_;
+        PlayerState state_;
         int frags_;
         int killed_;
     };

Modified: code/branches/cpp11_v3/src/orxonox/graphics/Light.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/graphics/Light.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/graphics/Light.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -43,9 +43,9 @@
     RegisterClass(Light);
 
     // Be sure we don't do bad conversions
-    static_assert((int)Ogre::Light::LT_POINT       == (int)Light::Point,       "check enum");
-    static_assert((int)Ogre::Light::LT_DIRECTIONAL == (int)Light::Directional, "check enum");
-    static_assert((int)Ogre::Light::LT_SPOTLIGHT   == (int)Light::Spotlight,   "check enum");
+    static_assert((int)Ogre::Light::LT_POINT       == (int)Light::Type::Point,       "check enum");
+    static_assert((int)Ogre::Light::LT_DIRECTIONAL == (int)Light::Type::Directional, "check enum");
+    static_assert((int)Ogre::Light::LT_SPOTLIGHT   == (int)Light::Type::Spotlight,   "check enum");
 
     Light::Light(Context* context) : StaticEntity(context)
     {
@@ -54,7 +54,7 @@
         this->light_ = nullptr;
         this->diffuse_ = ColourValue::White;
         this->specular_ = ColourValue::White;
-        this->type_ = Light::Point;
+        this->type_ = Type::Point;
         this->attenuation_ = Vector4(100000, 1, 0, 0);
         this->spotlightRange_ = Vector3(40.0f, 30.0f, 1.0f);
 
@@ -104,7 +104,7 @@
 
     void Light::registerVariables()
     {
-        registerVariable((int&)this->type_,     VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateType));
+        registerVariable(this->type_,           VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateType));
         registerVariable(this->diffuse_,        VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateDiffuseColour));
         registerVariable(this->specular_,       VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateSpecularColour));
         registerVariable(this->attenuation_,    VariableDirection::ToClient, new NetworkCallback<Light>(this, &Light::updateAttenuation));
@@ -125,37 +125,37 @@
 
     void Light::updateAttenuation()
     {
-        if (this->light_ && this->type_ != Light::Directional)
+        if (this->light_ && this->type_ != Type::Directional)
             this->light_->setAttenuation(this->attenuation_.x, this->attenuation_.y, this->attenuation_.z, this->attenuation_.w);
     }
 
     void Light::updateSpotlightRange()
     {
-        if (this->light_ && this->type_ == Light::Spotlight)
+        if (this->light_ && this->type_ == Type::Spotlight)
             this->light_->setSpotlightRange(Degree(this->spotlightRange_.x), Degree(this->spotlightRange_.y), this->spotlightRange_.z);
     }
 
     void Light::setTypeString(const std::string& type)
     {
         if (type == "point")
-            this->setType(Light::Point);
+            this->setType(Type::Point);
         else if (type == "directional")
-            this->setType(Light::Directional);
+            this->setType(Type::Directional);
         else if (type == "spotlight")
-            this->setType(Light::Spotlight);
+            this->setType(Type::Spotlight);
         else
-            this->setType(Light::Point);
+            this->setType(Type::Point);
     }
 
     std::string Light::getTypeString() const
     {
         switch (this->type_)
         {
-            case Light::Directional:
+            case Type::Directional:
                 return "directional";
-            case Light::Spotlight:
+            case Type::Spotlight:
                 return "spotlight";
-            case Light::Point:
+            case Type::Point:
             default:
                 return "point";
         }
@@ -167,9 +167,9 @@
         {
             this->light_->setType(static_cast<Ogre::Light::LightTypes>(this->type_));
 
-            if (this->type_ != Light::Directional)
+            if (this->type_ != Type::Directional)
                 this->updateAttenuation();
-            if (this->type_ == Light::Spotlight)
+            if (this->type_ == Type::Spotlight)
                 this->updateSpotlightRange();
         }
     }

Modified: code/branches/cpp11_v3/src/orxonox/graphics/Light.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/graphics/Light.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/graphics/Light.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -41,7 +41,7 @@
     class _OrxonoxExport Light : public StaticEntity, public TeamColourable
     {
         public:
-            enum LightTypes // Copy from the Ogre enum
+            enum class Type // Copy from the Ogre enum
             {
                 /// Point light sources give off light equally in all directions, so require only position not direction
                 Point,
@@ -62,9 +62,9 @@
             inline Ogre::Light* getLight()
                 { return this->light_; }
 
-            inline void setType(Light::LightTypes type)
+            inline void setType(Light::Type type)
                 { this->type_ = type; this->updateType(); }
-            inline Light::LightTypes getType() const
+            inline Light::Type getType() const
                 { return this->type_; }
 
             inline void setDiffuseColour(const ColourValue& colour)
@@ -143,7 +143,7 @@
             void updateSpotlightRange();
 
             Ogre::Light* light_;
-            LightTypes type_;
+            Light::Type type_;
             ColourValue diffuse_;
             ColourValue specular_;
             Vector4 attenuation_;

Modified: code/branches/cpp11_v3/src/orxonox/infos/GametypeInfo.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/infos/GametypeInfo.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/infos/GametypeInfo.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -290,7 +290,7 @@
     {
         if(GameMode::isMaster())
         {
-            NotificationListener::sendNotification("Press [Fire] to respawn", GametypeInfo::NOTIFICATION_SENDER, notificationMessageType::info, notificationSendMode::network, player->getClientID());
+            NotificationListener::sendNotification("Press [Fire] to respawn", GametypeInfo::NOTIFICATION_SENDER, NotificationMessageType::info, NotificationSendMode::network, player->getClientID());
             // Remove the player from the list of players that have spawned, since it currently is not.
             this->spawnedPlayers_.erase(player);
             this->setReadyToSpawnHelper(player, false);
@@ -345,10 +345,10 @@
             {
                 // Display "Press [Fire] to start the match" if the game has not yet ended.
                 if(!this->hasEnded())
-                    NotificationListener::sendNotification("Press [Fire] to start the match", GametypeInfo::NOTIFICATION_SENDER, notificationMessageType::info, notificationSendMode::network, player->getClientID());
+                    NotificationListener::sendNotification("Press [Fire] to start the match", GametypeInfo::NOTIFICATION_SENDER, NotificationMessageType::info, NotificationSendMode::network, player->getClientID());
                 // Else display "Game has ended".
                 else
-                    NotificationListener::sendNotification("Game has ended", GametypeInfo::NOTIFICATION_SENDER, notificationMessageType::info, notificationSendMode::network, player->getClientID());
+                    NotificationListener::sendNotification("Game has ended", GametypeInfo::NOTIFICATION_SENDER, NotificationMessageType::info, NotificationSendMode::network, player->getClientID());
             }
         }
     }

Modified: code/branches/cpp11_v3/src/orxonox/interfaces/NotificationListener.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/interfaces/NotificationListener.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/interfaces/NotificationListener.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -73,22 +73,22 @@
     @param messageType
         The type of the notification, can be either 'info' or 'important'.
     */
-    /*static*/ void NotificationListener::sendNetworkHelper(const std::string& message, const std::string& sender, notificationSendMode::Value sendMode, unsigned int clientId, bool isCommand, notificationMessageType::Value messageType)
+    /*static*/ void NotificationListener::sendNetworkHelper(const std::string& message, const std::string& sender, NotificationSendMode sendMode, unsigned int clientId, bool isCommand, NotificationMessageType messageType)
     {
         // If we're in standalone mode or we're already no the right client we create and send the notification/command.
-        if(GameMode::isStandalone() || sendMode == notificationSendMode::local || (sendMode ==  notificationSendMode::network && Host::getPlayerID() == clientId))
+        if(GameMode::isStandalone() || sendMode == NotificationSendMode::local || (sendMode ==  NotificationSendMode::network && Host::getPlayerID() == clientId))
         {
             sendHelper(message, sender, isCommand, messageType);
         }
         // If we're on the server (and the server is not the intended recipient of the notification/command) we send it over the network.
-        else if(GameMode::isServer() && sendMode == notificationSendMode::network && Host::getPlayerID() != clientId)
+        else if(GameMode::isServer() && sendMode == NotificationSendMode::network && Host::getPlayerID() != clientId)
         {
-            callStaticNetworkFunction(&NotificationListener::sendHelper, clientId, message, sender, isCommand, (unsigned int)messageType);
+            callStaticNetworkFunction(&NotificationListener::sendHelper, clientId, message, sender, isCommand, messageType);
         }
-        else if(GameMode::isServer() && sendMode == notificationSendMode::broadcast)
+        else if(GameMode::isServer() && sendMode == NotificationSendMode::broadcast)
         {
             // TODO: Works as intended?
-            callStaticNetworkFunction(&NotificationListener::sendHelper, NETWORK_PEER_ID_BROADCAST, message, sender, isCommand, (unsigned int)messageType);
+            callStaticNetworkFunction(&NotificationListener::sendHelper, NETWORK_PEER_ID_BROADCAST, message, sender, isCommand, messageType);
         }
     }
 
@@ -104,20 +104,20 @@
     @param messageType
         The type of the notification.
     */
-    /*static*/ void NotificationListener::sendHelper(const std::string& message, const std::string& sender, bool isCommand, unsigned int messageType)
+    /*static*/ void NotificationListener::sendHelper(const std::string& message, const std::string& sender, bool isCommand, NotificationMessageType type)
     {
         // Iterate through all NotificationListeners and notify them by calling the method they overloaded.
         for(NotificationListener* listener : ObjectList<NotificationListener>())
         {
             // If the notification is a message.
             if(!isCommand)
-                listener->registerNotification(message, sender, notificationMessageType::Value(messageType));
+                listener->registerNotification(message, sender, type);
 
             // If the notification is a command.
             if(isCommand)
             {
-                notificationCommand::Value command = str2Command(message);
-                if(command != notificationCommand::none)
+                NotificationCommand command = str2Command(message);
+                if(command != NotificationCommand::none)
                     listener->executeCommand(command, sender);
             }
         }
@@ -129,14 +129,14 @@
     @param string
         The string to be converted.
     @return
-        Returns the corresponding enum, notificationCommand::none if the command doesn't exist.
+        Returns the corresponding enum, NotificationCommand::none if the command doesn't exist.
     */
-    /*static*/ notificationCommand::Value NotificationListener::str2Command(const std::string& string)
+    /*static*/ NotificationCommand NotificationListener::str2Command(const std::string& string)
     {
-        notificationCommand::Value command = notificationCommand::none;
+        NotificationCommand command = NotificationCommand::none;
 
         if(string == NotificationListener::COMMAND_CLEAR)
-            command = notificationCommand::clear;
+            command = NotificationCommand::clear;
 
         return command;
     }
@@ -149,11 +149,11 @@
     @return
         Returns the corresponding string.
     */
-    /*static*/ const std::string& NotificationListener::command2Str(notificationCommand::Value command)
+    /*static*/ const std::string& NotificationListener::command2Str(NotificationCommand command)
     {
         switch(command)
         {
-            case notificationCommand::clear:
+            case NotificationCommand::clear:
                 return NotificationListener::COMMAND_CLEAR;
             default:
                 return NotificationListener::COMMAND_NONE;

Modified: code/branches/cpp11_v3/src/orxonox/interfaces/NotificationListener.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/interfaces/NotificationListener.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/interfaces/NotificationListener.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -48,30 +48,21 @@
 namespace orxonox
 {
     // TODO: Document.
-    namespace notificationMessageType
-    {
-        enum Value {
-            info,
-            important
-        };
-    }
+    enum class NotificationMessageType {
+        info,
+        important
+    };
     
-    namespace notificationSendMode
-    {
-        enum Value {
-            local,
-            network,
-            broadcast
-        };
-    }
+    enum class NotificationSendMode {
+        local,
+        network,
+        broadcast
+    };
     
-    namespace notificationCommand
-    {
-        enum Value {
-            none,
-            clear
-        };
-    }
+    enum class NotificationCommand {
+        none,
+        clear
+    };
 
     // TODO: Update doc.
     /**
@@ -100,22 +91,22 @@
             @param message The message that should be sent.
             @param sender The sender that sent the notification. Default is 'none'.
             @param messageType The type of the message, can be either 'info' or 'important'. Default is 'info'.
-            @param sendMode The mode in which the notification is sent, can be 'local' to send the notification to the client where this function is executed, 'network' if the notification is to be sent to the client with the specified clientID, or 'broadcast' if the notification should be sent to all hosts. Default is notificationSendMode::local.
+            @param sendMode The mode in which the notification is sent, can be 'local' to send the notification to the client where this function is executed, 'network' if the notification is to be sent to the client with the specified clientID, or 'broadcast' if the notification should be sent to all hosts. Default is NotificationSendMode::local.
             @param clientId The id of the client the notification should be sent to. Default is 0.
             */
-            static void sendNotification(const std::string& message, const std::string& sender = NotificationListener::NONE, notificationMessageType::Value messageType = notificationMessageType::info, notificationSendMode::Value sendMode = notificationSendMode::local, unsigned int clientId = 0)
+            static void sendNotification(const std::string& message, const std::string& sender = NotificationListener::NONE, NotificationMessageType messageType = NotificationMessageType::info, NotificationSendMode sendMode = NotificationSendMode::local, unsigned int clientId = 0)
                 { NotificationListener::sendNetworkHelper(message, sender, sendMode, clientId, false, messageType); }
             /**
             @brief Sends a specified command to the specified client from the specified sender.
             @param command The command that should be sent (and later executed).
             @param sender The sender that sent the notification. Default is 'none'.
-            @param sendMode The mode in which the command is sent, can be 'local' to send the command to the client where this function is executed, 'network' if the command is to be sent to the client with the specified clientID, or 'broadcast' if the command should be sent to all hosts. Default is notificationSendMode::local.
+            @param sendMode The mode in which the command is sent, can be 'local' to send the command to the client where this function is executed, 'network' if the command is to be sent to the client with the specified clientID, or 'broadcast' if the command should be sent to all hosts. Default is NotificationSendMode::local.
             @param clientId The id of the client the command should be sent to. Default is 0.
             */
-            static void sendCommand(const std::string& command, const std::string& sender = NotificationListener::NONE, notificationSendMode::Value sendMode = notificationSendMode::local, unsigned int clientId = 0)
+            static void sendCommand(const std::string& command, const std::string& sender = NotificationListener::NONE, NotificationSendMode sendMode = NotificationSendMode::local, unsigned int clientId = 0)
                 { NotificationListener::sendNetworkHelper(command, sender, sendMode, clientId, true); }
 
-            static void sendHelper(const std::string& message, const std::string& sender, bool isCommand = false, unsigned int messageMode = 0); // Helper method to register a notification/execute a command with all NotificationListeners after it has been sent over the network.
+            static void sendHelper(const std::string& message, const std::string& sender, bool isCommand, NotificationMessageType type); // Helper method to register a notification/execute a command with all NotificationListeners after it has been sent over the network.
 
             //TODO: Make protected?
             
@@ -127,7 +118,7 @@
             @param type The type of the notification.
             @return Returns true if the notification was successfully registered, false if not.
             */
-            virtual bool registerNotification(const std::string& message, const std::string& sender, notificationMessageType::Value type)
+            virtual bool registerNotification(const std::string& message, const std::string& sender, NotificationMessageType type)
                 { return false; }
             /**
             @brief Executes a command with the NotificationListener
@@ -136,7 +127,7 @@
             @param sender The sender of the command.
             @return Returns true if the command was successfully executed, false if not.
             */
-            virtual bool executeCommand(notificationCommand::Value command, const std::string& sender) { return false; }
+            virtual bool executeCommand(NotificationCommand command, const std::string& sender) { return false; }
 
         public:
             
@@ -148,10 +139,10 @@
             static const std::string COMMAND_NONE;
             
         protected:
-            static void sendNetworkHelper(const std::string& message, const std::string& sender, notificationSendMode::Value sendMode, unsigned int clientId, bool isCommand = false, notificationMessageType::Value messageType = notificationMessageType::info); // Helper method to send both notifications and commands over the network.
+            static void sendNetworkHelper(const std::string& message, const std::string& sender, NotificationSendMode sendMode, unsigned int clientId, bool isCommand = false, NotificationMessageType messageType = NotificationMessageType::info); // Helper method to send both notifications and commands over the network.
 
-            static notificationCommand::Value str2Command(const std::string& string); // Helper method. Converts a string into the enum for a command.
-            static const std::string& command2Str(notificationCommand::Value command); // Helper method. Converts a command enum into its corresponding string.
+            static NotificationCommand str2Command(const std::string& string); // Helper method. Converts a string into the enum for a command.
+            static const std::string& command2Str(NotificationCommand command); // Helper method. Converts a command enum into its corresponding string.
     };
 }
 

Modified: code/branches/cpp11_v3/src/orxonox/interfaces/RadarViewable.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/interfaces/RadarViewable.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/interfaces/RadarViewable.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -48,7 +48,7 @@
         , bInitialized_(false)
         , wePtr_(wePtr)
         , radarObjectCamouflage_(0.0f)
-        , radarObjectShape_(Dot)
+        , radarObjectShape_(Shape::Dot)
         , radarObjectDescription_("staticObject")
         , scale_(1.0f)
     {

Modified: code/branches/cpp11_v3/src/orxonox/interfaces/RadarViewable.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/interfaces/RadarViewable.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/interfaces/RadarViewable.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -48,7 +48,7 @@
     class _OrxonoxExport RadarViewable : virtual public OrxonoxInterface
     {
     public:
-        enum Shape
+        enum class Shape
         {
             Square,
             Dot,

Modified: code/branches/cpp11_v3/src/orxonox/items/MultiStateEngine.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/items/MultiStateEngine.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/items/MultiStateEngine.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -123,16 +123,16 @@
 
                 this->state_ = 0;
                 if (this->getShip()->isBoosting() && forward)
-                    this->state_ = Boost;
+                    this->state_ = EngineState::Boost;
                 else if (forward && !this->state_) // this->state_ == Boost
-                    this->state_ = Normal;
+                    this->state_ = EngineState::Normal;
                 else if (direction.z > 0.0 && velocity.z < 0.0)
-                    this->state_ = Brake;
+                    this->state_ = EngineState::Brake;
                 else
-                    this->state_ = Idle;
+                    this->state_ = EngineState::Idle;
 
-                if (this->state_ == Idle && this->getSpeedAdd() > 0)
-                    this->state_ = Normal;
+                if (this->state_ == EngineState::Idle && this->getSpeedAdd() > 0)
+                    this->state_ = EngineState::Normal;
             }
 
             if (GameMode::isMaster())
@@ -140,35 +140,35 @@
                 int changes = this->state_ | this->oldState_;
 
                 float pitch = velocity.length();
-                if (this->state_ & Normal)
+                if (this->state_ & EngineState::Normal)
                     defEngineSndNormal_->setPitch(clamp(pitch/MAX_VELOCITY_NORMAL + 1, 0.5f, 2.0f));
-                if (this->state_ & Boost)
+                if (this->state_ & EngineState::Boost)
                     defEngineSndBoost_->setPitch(clamp(pitch/MAX_VELOCITY_BOOST + 1, 0.5f, 2.0f));
 
-                if (changes & Idle)
+                if (changes & EngineState::Idle)
                 {
-                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & Idle);
+                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & EngineState::Idle);
                     lua_setglobal(this->lua_->getInternalLuaState(), "idle");
                 }
-                if (changes & Normal)
+                if (changes & EngineState::Normal)
                 {
-                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & Normal);
+                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & EngineState::Normal);
                     lua_setglobal(this->lua_->getInternalLuaState(), "normal");
-                    if (this->state_ & Normal)
+                    if (this->state_ & EngineState::Normal)
                         defEngineSndNormal_->play();
                     else
                         defEngineSndNormal_->stop();
                 }
-                if (changes & Brake)
+                if (changes & EngineState::Brake)
                 {
-                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & Brake);
+                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & EngineState::Brake);
                     lua_setglobal(this->lua_->getInternalLuaState(), "brake");
                 }
-                if (changes & Boost)
+                if (changes & EngineState::Boost)
                 {
-                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & Boost);
+                    lua_pushboolean(this->lua_->getInternalLuaState(), this->state_ & EngineState::Boost);
                     lua_setglobal(this->lua_->getInternalLuaState(), "boost");
-                    if (this->state_ & Boost)
+                    if (this->state_ & EngineState::Boost)
                         defEngineSndBoost_->play();
                     else
                         defEngineSndBoost_->stop();

Modified: code/branches/cpp11_v3/src/orxonox/items/MultiStateEngine.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/items/MultiStateEngine.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/items/MultiStateEngine.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -40,12 +40,12 @@
     class _OrxonoxExport MultiStateEngine : public Engine
     {
         public:
-            enum EngineState
+            struct EngineState
             {
-                Idle    = 1,
-                Normal  = 2,
-                Brake   = 4,
-                Boost   = 8
+                static constexpr int Idle    = 1;
+                static constexpr int Normal  = 2;
+                static constexpr int Brake   = 4;
+                static constexpr int Boost   = 8;
             };
 
             MultiStateEngine(Context* context);

Modified: code/branches/cpp11_v3/src/orxonox/items/PartDestructionEvent.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/items/PartDestructionEvent.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/items/PartDestructionEvent.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -97,16 +97,16 @@
         if (this->targetType_ == "ship")
         {
             switch (this->targetParam_) {
-            case shieldhealth:
+            case TargetParam::shieldhealth:
                 this->parent_->getParent()->setShieldHealth(operate(this->parent_->getParent()->getShieldHealth()));
                 break;
-            case boostpower:
+            case TargetParam::boostpower:
                 this->parent_->getParent()->setInitialBoostPower(operate(this->parent_->getParent()->getInitialBoostPower()));
                 break;
-            case boostpowerrate:
+            case TargetParam::boostpowerrate:
                 this->parent_->getParent()->setBoostPowerRate(operate(this->parent_->getParent()->getBoostPowerRate()));
                 break;
-            case rotationthrust:
+            case TargetParam::rotationthrust:
                 this->parent_->getParent()->setRotationThrust(operate(this->parent_->getParent()->getRotationThrust()));
                 break;
             default:
@@ -119,16 +119,16 @@
         if (this->targetType_ == "engine")
         {
             switch (this->targetParam_) {
-            case null:
+            case TargetParam::null:
                 this->parent_->getParent()->getEngineByName(targetName_)->destroy();
                 break;
-            case boostfactor:
+            case TargetParam::boostfactor:
                 this->parent_->getParent()->getEngineByName(targetName_)->setBoostFactor(operate(this->parent_->getParent()->getEngineByName(targetName_)->getBoostFactor()));
                 break;
-            case speedfront:
+            case TargetParam::speedfront:
                 this->parent_->getParent()->getEngineByName(targetName_)->setMaxSpeedFront(operate(this->parent_->getParent()->getEngineByName(targetName_)->getMaxSpeedFront()));
                 break;
-            case accelerationfront:
+            case TargetParam::accelerationfront:
                 this->parent_->getParent()->getEngineByName(targetName_)->setAccelerationFront(operate(this->parent_->getParent()->getEngineByName(targetName_)->getAccelerationFront()));
                 break;
             default:
@@ -141,7 +141,7 @@
         if (this->targetType_ == "part")
         {
             switch (this->targetParam_) {
-            case null:
+            case TargetParam::null:
                 if (!this->parent_->getParent()->getShipPartByName(targetName_))
                     return;
                 this->parent_->getParent()->getShipPartByName(targetName_)->setEventExecution(false);
@@ -213,22 +213,22 @@
         {
             if (param == "NULL")
             {
-                this->targetParam_ = null;
+                this->targetParam_ = TargetParam::null;
                 return;
             }
             if (param == "boostfactor")
             {
-                this->targetParam_ = boostfactor;
+                this->targetParam_ = TargetParam::boostfactor;
                 return;
             }
             if (param == "speedfront")
             {
-                this->targetParam_ = speedfront;
+                this->targetParam_ = TargetParam::speedfront;
                 return;
             }
             if (param == "accelerationfront")
             {
-                this->targetParam_ = accelerationfront;
+                this->targetParam_ = TargetParam::accelerationfront;
                 return;
             }
 
@@ -243,22 +243,22 @@
         {
             if (param == "shieldhealth")
             {
-                this->targetParam_ = shieldhealth;
+                this->targetParam_ = TargetParam::shieldhealth;
                 return;
             }
             if (param == "boostpower")
             {
-                this->targetParam_ = boostpower;
+                this->targetParam_ = TargetParam::boostpower;
                 return;
             }
             if (param == "boostpowerrate")
             {
-                this->targetParam_ = boostpowerrate;
+                this->targetParam_ = TargetParam::boostpowerrate;
                 return;
             }
             if (param == "rotationthrust")
             {
-                this->targetParam_ = rotationthrust;
+                this->targetParam_ = TargetParam::rotationthrust;
                 return;
             }
 
@@ -270,7 +270,7 @@
         {
             if (param == "NULL")
             {
-                this->targetParam_ = null;
+                this->targetParam_ = TargetParam::null;
                 return;
             }
 

Modified: code/branches/cpp11_v3/src/orxonox/items/PartDestructionEvent.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/items/PartDestructionEvent.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/items/PartDestructionEvent.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -81,7 +81,7 @@
                 @brief
                     List of all allowed parameters.
                 */
-            enum TargetParam
+            enum class TargetParam
             {
                 shieldhealth,
                 maxshieldhealth,

Modified: code/branches/cpp11_v3/src/orxonox/overlays/InGameConsole.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/overlays/InGameConsole.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/overlays/InGameConsole.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -291,7 +291,7 @@
         }
 
         for (int i = LINES - 1; i > max; --i)
-            this->print("", Shell::DebugOutput, i, true);
+            this->print("", Shell::LineType::DebugOutput, i, true);
 
         for (int i = max; i >= 1; --i)
         {
@@ -317,7 +317,7 @@
     void InGameConsole::inputChanged()
     {
         if (LINES > 0)
-            this->print(this->shell_->getInput(), Shell::Input, 0);
+            this->print(this->shell_->getInput(), Shell::LineType::Input, 0);
 
         if (this->shell_->getInput().empty())
             this->inputWindowStart_ = 0;
@@ -341,7 +341,7 @@
     */
     void InGameConsole::executed()
     {
-        this->shell_->addOutput(this->shell_->getInput(), Shell::Command);
+        this->shell_->addOutput(this->shell_->getInput(), Shell::LineType::Command);
     }
 
     /**
@@ -561,28 +561,28 @@
         ColourValue colourTop, colourBottom;
         switch (type)
         {
-            case Shell::Message:
-            case Shell::DebugOutput:     colourTop = ColourValue(0.9f, 0.9f, 0.9f); break;
+            case Shell::LineType::Message:
+            case Shell::LineType::DebugOutput:     colourTop = ColourValue(0.9f, 0.9f, 0.9f); break;
 
-            case Shell::UserError:       colourTop = ColourValue(0.9f, 0.0f, 0.0f); break;
-            case Shell::UserWarning:     colourTop = ColourValue(0.9f, 0.5f, 0.0f); break;
-            case Shell::UserStatus:      colourTop = ColourValue(0.0f, 0.9f, 0.0f); break;
-            case Shell::UserInfo:        colourTop = ColourValue(0.0f, 0.8f, 0.8f); break;
+            case Shell::LineType::UserError:       colourTop = ColourValue(0.9f, 0.0f, 0.0f); break;
+            case Shell::LineType::UserWarning:     colourTop = ColourValue(0.9f, 0.5f, 0.0f); break;
+            case Shell::LineType::UserStatus:      colourTop = ColourValue(0.0f, 0.9f, 0.0f); break;
+            case Shell::LineType::UserInfo:        colourTop = ColourValue(0.0f, 0.8f, 0.8f); break;
 
-            case Shell::InternalError:   colourTop = ColourValue(0.5f, 0.0f, 0.0f); break;
-            case Shell::InternalWarning: colourTop = ColourValue(0.5f, 0.2f, 0.0f); break;
-            case Shell::InternalStatus:  colourTop = ColourValue(0.0f, 0.5f, 0.0f); break;
-            case Shell::InternalInfo:    colourTop = ColourValue(0.0f, 0.4f, 0.4f); break;
+            case Shell::LineType::InternalError:   colourTop = ColourValue(0.5f, 0.0f, 0.0f); break;
+            case Shell::LineType::InternalWarning: colourTop = ColourValue(0.5f, 0.2f, 0.0f); break;
+            case Shell::LineType::InternalStatus:  colourTop = ColourValue(0.0f, 0.5f, 0.0f); break;
+            case Shell::LineType::InternalInfo:    colourTop = ColourValue(0.0f, 0.4f, 0.4f); break;
 
-            case Shell::Verbose:         colourTop = ColourValue(0.3f, 0.3f, 0.9f); break;
-            case Shell::VerboseMore:     colourTop = ColourValue(0.2f, 0.2f, 0.7f); break;
-            case Shell::VerboseUltra:    colourTop = ColourValue(0.1f, 0.1f, 0.5f); break;
+            case Shell::LineType::Verbose:         colourTop = ColourValue(0.3f, 0.3f, 0.9f); break;
+            case Shell::LineType::VerboseMore:     colourTop = ColourValue(0.2f, 0.2f, 0.7f); break;
+            case Shell::LineType::VerboseUltra:    colourTop = ColourValue(0.1f, 0.1f, 0.5f); break;
 
-            case Shell::Command:         colourTop = ColourValue(0.8f, 0.2f, 0.8f); break;
-            case Shell::Hint:            colourTop = ColourValue(0.4f, 0.0f, 0.4f); break;
-            case Shell::Input:           colourTop = ColourValue(0.9f, 0.9f, 0.9f); break;
+            case Shell::LineType::Command:         colourTop = ColourValue(0.8f, 0.2f, 0.8f); break;
+            case Shell::LineType::Hint:            colourTop = ColourValue(0.4f, 0.0f, 0.4f); break;
+            case Shell::LineType::Input:           colourTop = ColourValue(0.9f, 0.9f, 0.9f); break;
 
-            default:                     colourTop = ColourValue(0.5f, 0.5f, 0.5f); break;
+            default:                               colourTop = ColourValue(0.5f, 0.5f, 0.5f); break;
         }
 
         colourBottom = ColourValue(sqrt(colourTop.r), sqrt(colourTop.g), sqrt(colourTop.b));

Modified: code/branches/cpp11_v3/src/orxonox/overlays/OrxonoxOverlay.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/overlays/OrxonoxOverlay.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/overlays/OrxonoxOverlay.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -93,7 +93,7 @@
         this->position_ = Vector2(0.0f, 0.0f);
         this->angle_ = Degree(0.0);
         this->bCorrectAspect_ = false;
-        this->rotState_ = Horizontal;
+        this->rotState_ = RotationState::Horizontal;
         this->angleChanged(); // updates all other values as well
 
         setBackgroundMaterial("");
@@ -258,17 +258,17 @@
             if (angle > 89.0f && angle < 91.0f)
             {
                 tempAspect = 1.0f / this->windowAspectRatio_;
-                rotState_ = Vertical;
+                rotState_ = RotationState::Vertical;
             }
             else if (angle > 179 || angle < 1)
             {
                 tempAspect = this->windowAspectRatio_;
-                rotState_ = Horizontal;
+                rotState_ = RotationState::Horizontal;
             }
             else
             {
                 tempAspect = 1.0f;
-                rotState_ = Inbetween;
+                rotState_ = RotationState::Inbetween;
             }
 
             // note: this is only an approximation that is mostly valid when the

Modified: code/branches/cpp11_v3/src/orxonox/overlays/OrxonoxOverlay.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/overlays/OrxonoxOverlay.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/overlays/OrxonoxOverlay.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -78,7 +78,7 @@
             Horizontal means 0/180 degrees, Vertical is 90/270 degrees
             and in between is everything else.
         */
-        enum RotationState
+        enum class RotationState
         {
             Horizontal,
             Vertical,

Modified: code/branches/cpp11_v3/src/orxonox/sound/BaseSound.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/sound/BaseSound.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/sound/BaseSound.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -48,7 +48,7 @@
         : bPooling_(false)
         , volume_(0.7)
         , bLooping_(false)
-        , state_(Stopped)
+        , state_(State::Stopped)
         , pitch_ (1.0)
     {
         RegisterObject(BaseSound);
@@ -62,7 +62,7 @@
 
     BaseSound::~BaseSound()
     {
-        if (this->state_ != Stopped)
+        if (this->state_ != State::Stopped)
             this->stop();
         // Release buffer
         if (this->soundBuffer_ != nullptr)
@@ -82,7 +82,7 @@
 
     void BaseSound::doPlay()
     {
-        this->state_ = Playing;
+        this->state_ = State::Playing;
         if (GameMode::playsSound() && this->getSourceState() != AL_PLAYING && this->soundBuffer_ != nullptr)
         {
             if (!alIsSource(this->audioSource_))
@@ -101,7 +101,7 @@
 
     bool BaseSound::doStop()
     {
-        this->state_ = Stopped;
+        this->state_ = State::Stopped;
         if (alIsSource(this->audioSource_))
         {
             alSourceStop(this->audioSource_);
@@ -122,7 +122,7 @@
     {
         if (this->isStopped())
             return;
-        this->state_ = Paused;
+        this->state_ = State::Paused;
         if (alIsSource(this->audioSource_))
             alSourcePause(this->audioSource_);
     }
@@ -255,12 +255,12 @@
         }
         else // No source acquired so far, but might be set to playing or paused
         {
-            State state = static_cast<State>(this->state_); // save
+            State state = this->state_; // save
             if (this->isPlaying() || this->isPaused())
                 doPlay();
-            if (state == Paused)
+            if (state == State::Paused)
             {
-                this->state_ = Paused;
+                this->state_ = State::Paused;
                 doPause();
             }
         }
@@ -270,13 +270,13 @@
     {
         switch (this->state_)
         {
-            case Playing:
+            case State::Playing:
                 this->play();
                 break;
-            case Paused:
+            case State::Paused:
                 this->pause();
                 break;
-            case Stopped:
+            case State::Stopped:
             default:
                 this->stop();
                 break;

Modified: code/branches/cpp11_v3/src/orxonox/sound/BaseSound.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/sound/BaseSound.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/sound/BaseSound.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -53,9 +53,9 @@
         virtual bool stop()  { return this->doStop(); } // returns true if the sound source was destroyed
         virtual void pause() { this->doPause(); }
 
-        bool isPlaying() const { return this->state_ == Playing; }
-        bool isPaused()  const { return this->state_ == Paused; }
-        bool isStopped() const { return this->state_ == Stopped; }
+        bool isPlaying() const { return this->state_ == State::Playing; }
+        bool isPaused()  const { return this->state_ == State::Paused; }
+        bool isStopped() const { return this->state_ == State::Stopped; }
 
         virtual void setSource(const std::string& source);
         virtual const std::string& getSource() const
@@ -75,7 +75,7 @@
         void setPitch(float pitch);
 
     protected:
-        enum State
+        enum class State
         {
             Stopped,
             Playing,
@@ -110,7 +110,7 @@
         std::string     source_;
         float           volume_;
         bool            bLooping_;
-        uint8_t         state_;       // This Variable is actually of type State
+        State           state_;       // This Variable is actually of type State
         float           pitch_;
 
     private:

Modified: code/branches/cpp11_v3/src/orxonox/sound/WorldSound.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/sound/WorldSound.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/sound/WorldSound.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -57,7 +57,7 @@
         registerVariable(source_,   ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::sourceChanged));
         registerVariable(bLooping_, ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::loopingChanged));
         registerVariable(pitch_,    ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::pitchChanged));
-        registerVariable((uint8_t&)(BaseSound::state_), ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::stateChanged));
+        registerVariable(BaseSound::state_, ObjectDirection::ToClient, new NetworkCallback<WorldSound>(this, &WorldSound::stateChanged));
     }
 
     void WorldSound::XMLPort(Element& xmlelement, XMLPort::Mode mode)

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/Drone.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/Drone.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/Drone.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -48,7 +48,7 @@
         this->localLinearAcceleration_.setValue(0, 0, 0);
         this->localAngularAcceleration_.setValue(0, 0, 0);
         this->setRadarVisibility(false);
-        this->setCollisionType(WorldEntity::Dynamic);
+        this->setCollisionType(WorldEntity::CollisionType::Dynamic);
 
         myController_ = new DroneController(this->getContext()); //!< Creates a new controller and passes our this pointer to it as creator.
         myController_->setDrone(this);

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/MobileEntity.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/MobileEntity.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/MobileEntity.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -188,7 +188,7 @@
 
     bool MobileEntity::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
-        if (type == WorldEntity::Static)
+        if (type == WorldEntity::CollisionType::Static)
         {
             orxout(internal_warning) << "Cannot tell a MobileEntity to have static collision type! Ignoring." << endl;
             assert(false); // Only in debug mode

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/StaticEntity.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/StaticEntity.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/StaticEntity.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -94,7 +94,7 @@
 
     bool StaticEntity::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
-        if (type == WorldEntity::Kinematic || type == WorldEntity::Dynamic)
+        if (type == WorldEntity::CollisionType::Kinematic || type == WorldEntity::CollisionType::Dynamic)
         {
             orxout(internal_warning) << "Cannot tell a StaticEntity to have kinematic or dynamic collision type! Ignoring." << endl;
             assert(false); // Only in debug mode

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/WorldEntity.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/WorldEntity.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/WorldEntity.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -55,9 +55,9 @@
     const Vector3 WorldEntity::UP    = Vector3::UNIT_Y;
 
     // Be sure we don't do bad conversions
-    static_assert((int)Ogre::Node::TS_LOCAL  == (int)WorldEntity::Local,  "check enum");
-    static_assert((int)Ogre::Node::TS_PARENT == (int)WorldEntity::Parent, "check enum");
-    static_assert((int)Ogre::Node::TS_WORLD  == (int)WorldEntity::World,  "check enum");
+    static_assert((int)Ogre::Node::TS_LOCAL  == (int)WorldEntity::TransformSpace::Local,  "check enum");
+    static_assert((int)Ogre::Node::TS_PARENT == (int)WorldEntity::TransformSpace::Parent, "check enum");
+    static_assert((int)Ogre::Node::TS_WORLD  == (int)WorldEntity::TransformSpace::World,  "check enum");
 
     RegisterAbstractClass(WorldEntity).inheritsFrom<BaseObject>().inheritsFrom<Synchronisable>();
 
@@ -94,8 +94,8 @@
         this->bPhysicsActiveBeforeAttaching_ = false;
         this->collisionShape_ = new WorldEntityCollisionShape(this->getContext());
         this->collisionShape_->setWorldEntityOwner(this);
-        this->collisionType_             = None;
-        this->collisionTypeSynchronised_ = None;
+        this->collisionType_             = CollisionType::None;
+        this->collisionTypeSynchronised_ = CollisionType::None;
         this->mass_                 = 1.0f;
         this->childrenMass_         = 0;
         // Using bullet default values
@@ -206,7 +206,7 @@
                                                 VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionCallbackActivityChanged));
         registerVariable(this->bCollisionResponseActive_,
                                                 VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionResponseActivityChanged));
-        registerVariable((int&)this->collisionTypeSynchronised_,
+        registerVariable(this->collisionTypeSynchronised_,
                                                 VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::collisionTypeChanged));
         registerVariable(this->bPhysicsActiveSynchronised_,
                                                 VariableDirection::ToClient, new NetworkCallback<WorldEntity>(this, &WorldEntity::physicsActivityChanged));
@@ -321,10 +321,10 @@
     */
     void WorldEntity::collisionTypeChanged()
     {
-        if (this->collisionTypeSynchronised_ != Dynamic &&
-            this->collisionTypeSynchronised_ != Kinematic &&
-            this->collisionTypeSynchronised_ != Static &&
-            this->collisionTypeSynchronised_ != None)
+        if (this->collisionTypeSynchronised_ != CollisionType::Dynamic &&
+            this->collisionTypeSynchronised_ != CollisionType::Kinematic &&
+            this->collisionTypeSynchronised_ != CollisionType::Static &&
+            this->collisionTypeSynchronised_ != CollisionType::None)
         {
             orxout(internal_error) << "Error when collsion Type was received over network. Unknown enum value:" << this->collisionTypeSynchronised_ << endl;
         }
@@ -680,14 +680,14 @@
     {
         switch (relativeTo)
         {
-        case WorldEntity::Local:
+        case TransformSpace::Local:
             // position is relative to parent so transform downwards
             this->setPosition(this->getPosition() + this->getOrientation() * distance);
             break;
-        case WorldEntity::Parent:
+        case TransformSpace::Parent:
             this->setPosition(this->getPosition() + distance);
             break;
-        case WorldEntity::World:
+        case TransformSpace::World:
             // position is relative to parent so transform upwards
             if (this->node_->getParent())
                 setPosition(getPosition() + (node_->getParent()->_getDerivedOrientation().Inverse() * distance)
@@ -710,14 +710,14 @@
     {
         switch(relativeTo)
         {
-        case WorldEntity::Local:
+        case TransformSpace::Local:
             this->setOrientation(this->getOrientation() * rotation);
             break;
-        case WorldEntity::Parent:
+        case TransformSpace::Parent:
             // Rotations are normally relative to local axes, transform up
             this->setOrientation(rotation * this->getOrientation());
             break;
-        case WorldEntity::World:
+        case TransformSpace::World:
             // Rotations are normally relative to local axes, transform up
             this->setOrientation(this->getOrientation() * this->getWorldOrientation().Inverse()
                 * rotation * this->getWorldOrientation());
@@ -740,13 +740,13 @@
         Vector3 origin(0, 0, 0);
         switch (relativeTo)
         {
-        case WorldEntity::Local:
+        case TransformSpace::Local:
             origin = Vector3::ZERO;
             break;
-        case WorldEntity::Parent:
+        case TransformSpace::Parent:
             origin = this->getPosition();
             break;
-        case WorldEntity::World:
+        case TransformSpace::World:
             origin = this->getWorldPosition();
             break;
         }
@@ -830,7 +830,7 @@
             bReactivatePhysics = false;
 
         // Check whether we have to create or destroy.
-        if (type != None && this->collisionType_ == None)
+        if (type != CollisionType::None && this->collisionType_ == CollisionType::None)
         {
 /*
 HACK HACK HACK
@@ -848,31 +848,31 @@
             this->physicalBody_->setUserPointer(this);
             this->physicalBody_->setActivationState(DISABLE_DEACTIVATION);
         }
-        else if (type == None && this->collisionType_ != None)
+        else if (type == CollisionType::None && this->collisionType_ != CollisionType::None)
         {
             // Destroy rigid body
             assert(this->physicalBody_);
             deactivatePhysics();
             delete this->physicalBody_;
             this->physicalBody_ = nullptr;
-            this->collisionType_ = None;
-            this->collisionTypeSynchronised_ = None;
+            this->collisionType_ = CollisionType::None;
+            this->collisionTypeSynchronised_ = CollisionType::None;
             return;
         }
 
         // Change type
         switch (type)
         {
-        case Dynamic:
+        case CollisionType::Dynamic:
             this->physicalBody_->setCollisionFlags(this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_STATIC_OBJECT & !btCollisionObject::CF_KINEMATIC_OBJECT);
             break;
-        case Kinematic:
+        case CollisionType::Kinematic:
             this->physicalBody_->setCollisionFlags((this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_STATIC_OBJECT) | btCollisionObject::CF_KINEMATIC_OBJECT);
             break;
-        case Static:
+        case CollisionType::Static:
             this->physicalBody_->setCollisionFlags((this->physicalBody_->getCollisionFlags() & !btCollisionObject::CF_KINEMATIC_OBJECT) | btCollisionObject::CF_STATIC_OBJECT);
             break;
-        case None:
+        case CollisionType::None:
             assert(false); // Doesn't happen
             return;
         }
@@ -894,13 +894,13 @@
         const std::string& typeStrLower = getLowercase(typeStr);
         CollisionType type;
         if (typeStrLower == "dynamic")
-            type = Dynamic;
+            type = CollisionType::Dynamic;
         else if (typeStrLower == "static")
-            type = Static;
+            type = CollisionType::Static;
         else if (typeStrLower == "kinematic")
-            type = Kinematic;
+            type = CollisionType::Kinematic;
         else if (typeStrLower == "none")
-            type = None;
+            type = CollisionType::None;
         else
             ThrowException(ParseError, std::string("Attempting to set an unknown collision type: '") + typeStr + "'.");
         this->setCollisionType(type);
@@ -911,13 +911,13 @@
     {
         switch (this->getCollisionType())
         {
-            case Dynamic:
+            case CollisionType::Dynamic:
                 return "dynamic";
-            case Kinematic:
+            case CollisionType::Kinematic:
                 return "kinematic";
-            case Static:
+            case CollisionType::Static:
                 return "static";
-            case None:
+            case CollisionType::None:
                 return "none";
             default:
                 assert(false);

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/WorldEntity.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/WorldEntity.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/WorldEntity.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -81,7 +81,7 @@
             @brief
                 Enumeration denoting the spaces which a transform can be relative to.
             */
-            enum TransformSpace
+            enum class TransformSpace
             {
                 //! Transform is relative to the local space
                 Local,
@@ -116,8 +116,8 @@
             const Vector3& getPosition() const;
             const Vector3& getWorldPosition() const;
 
-            void translate(const Vector3& distance, TransformSpace relativeTo = WorldEntity::Parent);
-            inline void translate(float x, float y, float z, TransformSpace relativeTo = WorldEntity::Parent)
+            void translate(const Vector3& distance, TransformSpace relativeTo = TransformSpace::Parent);
+            inline void translate(float x, float y, float z, TransformSpace relativeTo = TransformSpace::Parent)
                 { this->translate(Vector3(x, y, z), relativeTo); }
 
             virtual inline const Vector3& getVelocity() const
@@ -133,20 +133,20 @@
             const Quaternion& getOrientation() const;
             const Quaternion& getWorldOrientation() const;
 
-            void rotate(const Quaternion& rotation, TransformSpace relativeTo = WorldEntity::Local);
-            inline void rotate(const Vector3& axis, const Degree& angle, TransformSpace relativeTo = WorldEntity::Local)
+            void rotate(const Quaternion& rotation, TransformSpace relativeTo = TransformSpace::Local);
+            inline void rotate(const Vector3& axis, const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
                 { this->rotate(Quaternion(angle, axis), relativeTo); }
 
-            inline void yaw(const Degree& angle, TransformSpace relativeTo = WorldEntity::Local)
+            inline void yaw(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
                 { this->rotate(Quaternion(angle, Vector3::UNIT_Y), relativeTo); }
-            inline void pitch(const Degree& angle, TransformSpace relativeTo = WorldEntity::Local)
+            inline void pitch(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
                 { this->rotate(Quaternion(angle, Vector3::UNIT_X), relativeTo); }
-            inline void roll(const Degree& angle, TransformSpace relativeTo = WorldEntity::Local)
+            inline void roll(const Degree& angle, TransformSpace relativeTo = TransformSpace::Local)
                 { this->rotate(Quaternion(angle, Vector3::UNIT_Z), relativeTo); }
 
-            void lookAt(const Vector3& target, TransformSpace relativeTo = WorldEntity::Parent, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-            void setDirection(const Vector3& direction, TransformSpace relativeTo = WorldEntity::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
-            inline void setDirection(float x, float y, float z, TransformSpace relativeTo = WorldEntity::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z)
+            void lookAt(const Vector3& target, TransformSpace relativeTo = TransformSpace::Parent, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
+            void setDirection(const Vector3& direction, TransformSpace relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z);
+            inline void setDirection(float x, float y, float z, TransformSpace relativeTo = TransformSpace::Local, const Vector3& localDirectionVector = Vector3::NEGATIVE_UNIT_Z)
                 { this->setDirection(Vector3(x, y, z), relativeTo, localDirectionVector); }
 
             virtual void setScale3D(const Vector3& scale);
@@ -256,7 +256,7 @@
                 Static:    Like kinematic but the object is not allowed to move during the simulation.
                 None:      The object has no physics at all.
             */
-            enum CollisionType
+            enum class CollisionType
             {
                 Dynamic,
                 Kinematic,
@@ -265,13 +265,13 @@
             };
 
             //! Tells whether the object has any connection to the Bullet physics engine. If hasPhysics() is false, the object may still have a velocity.
-            bool hasPhysics()       const { return getCollisionType() != None     ; }
+            bool hasPhysics()       const { return getCollisionType() != CollisionType::None     ; }
             //! @see CollisionType
-            bool isStatic()         const { return getCollisionType() == Static   ; }
+            bool isStatic()         const { return getCollisionType() == CollisionType::Static   ; }
             //! @see CollisionType
-            bool isKinematic()      const { return getCollisionType() == Kinematic; }
+            bool isKinematic()      const { return getCollisionType() == CollisionType::Kinematic; }
             //! @see CollisionType
-            bool isDynamic()        const { return getCollisionType() == Dynamic  ; }
+            bool isDynamic()        const { return getCollisionType() == CollisionType::Dynamic  ; }
             //! Tells whether physics has been activated (you can temporarily deactivate it)
             bool isPhysicsActive()  const { return this->bPhysicsActive_; }
             bool addedToPhysicalWorld() const;

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/pawns/FpsPlayer.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/pawns/FpsPlayer.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/pawns/FpsPlayer.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -78,7 +78,7 @@
 
         // FpsPlayer is always a physical object per default
         // Be aware of this call: The collision type legality check will not reach derived classes!
-        this->setCollisionType(WorldEntity::Dynamic);
+        this->setCollisionType(WorldEntity::CollisionType::Dynamic);
         // Get notification about collisions
         this->enableCollisionCallback();
 
@@ -129,7 +129,7 @@
 
     bool FpsPlayer::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
-        if (type != WorldEntity::Dynamic)
+        if (type != WorldEntity::CollisionType::Dynamic)
         {
             orxout(internal_warning) << "Cannot tell a FpsPlayer not to be dynamic! Ignoring." << endl;
             assert(false); // Only in debug mode
@@ -167,7 +167,7 @@
 
             if (!this->isInMouseLook())
             {
-                this->yaw(Radian(this->yaw_ * this->getMouseLookSpeed()), WorldEntity::Parent);
+                this->yaw(Radian(this->yaw_ * this->getMouseLookSpeed()), WorldEntity::TransformSpace::Parent);
 
                 Radian pitch = this->cameraPositionRootNode_->getOrientation().getPitch();
                 if (pitch < Radian(math::pi_2) && pitch > Radian(-math::pi_2))

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/pawns/Pawn.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/pawns/Pawn.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -96,7 +96,7 @@
             this->weaponSystem_ = nullptr;
 
         this->setRadarObjectColour(ColourValue::Red);
-        this->setRadarObjectShape(RadarViewable::Dot);
+        this->setRadarObjectShape(RadarViewable::Shape::Dot);
 
         this->registerVariables();
 

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/pawns/SpaceShip.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/pawns/SpaceShip.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/pawns/SpaceShip.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -79,7 +79,7 @@
 
         // SpaceShip is always a physical object per default
         // Be aware of this call: The collision type legality check will not reach derived classes!
-        this->setCollisionType(WorldEntity::Dynamic);
+        this->setCollisionType(WorldEntity::CollisionType::Dynamic);
         // Get notification about collisions
         this->enableCollisionCallback();
 
@@ -144,7 +144,7 @@
 
     bool SpaceShip::isCollisionTypeLegal(WorldEntity::CollisionType type) const
     {
-        if (type != WorldEntity::Dynamic)
+        if (type != WorldEntity::CollisionType::Dynamic)
         {
             orxout(internal_warning) << "Cannot tell a SpaceShip not to be dynamic! Ignoring." << endl;
             assert(false); // Only in debug mode

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/pawns/TeamBaseMatchBase.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -50,7 +50,7 @@
             gametype->addBase(this);
         }
 
-        this->setRadarObjectShape(RadarViewable::Triangle);
+        this->setRadarObjectShape(RadarViewable::Shape::Triangle);
     }
 
     void TeamBaseMatchBase::changeTeamColour()

Modified: code/branches/cpp11_v3/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h
===================================================================
--- code/branches/cpp11_v3/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/src/orxonox/worldentities/pawns/TeamBaseMatchBase.h	2016-01-17 17:41:22 UTC (rev 11068)
@@ -35,15 +35,12 @@
 
 namespace orxonox
 {
-    namespace BaseState
+    enum class BaseState
     {
-        enum Value
-        {
-            Uncontrolled,
-            ControlTeam1,
-            ControlTeam2,
-        };
-    }
+        Uncontrolled,
+        ControlTeam1,
+        ControlTeam2,
+    };
 
 
     class _OrxonoxExport TeamBaseMatchBase : public Pawn
@@ -57,7 +54,7 @@
 
 
             // Set the state of a base to whatever the argument of the function is
-            void setState(BaseState::Value state)
+            void setState(BaseState state)
             {
                 this->state_ = state;
                 this->changeTeamColour();
@@ -65,7 +62,7 @@
 
 
             // Get the state of a base as a return value
-            BaseState::Value getState() const
+            BaseState getState() const
             {
                 return this->state_;
             }
@@ -74,7 +71,7 @@
         protected:
             void changeTeamColour();
 
-            BaseState::Value state_;
+            BaseState state_;
     };
 }
 

Modified: code/branches/cpp11_v3/test/util/MultiTypeTest.cc
===================================================================
--- code/branches/cpp11_v3/test/util/MultiTypeTest.cc	2016-01-17 13:58:59 UTC (rev 11067)
+++ code/branches/cpp11_v3/test/util/MultiTypeTest.cc	2016-01-17 17:41:22 UTC (rev 11068)
@@ -696,4 +696,243 @@
 
         EXPECT_TRUE(mt.null());
     }
+
+    ///////////////////////////////
+    // Strongly typed enum class //
+    ///////////////////////////////
+    enum class EnumWithChar : unsigned char
+    {
+        ValueA = 'A',
+        ValueB = 'B',
+        ValueC = 'C',
+    };
+    enum class EnumWithInt
+    {
+        Value1 = 50,
+        Value2 = 0,
+        Value3,
+    };
+
+    TEST(MultiType, Enum_Constructor)
+    {
+        // Constructor:
+        {
+            MultiType mt = EnumWithChar::ValueA;
+
+            EXPECT_TRUE(mt.isType<EnumWithChar>());
+            EXPECT_EQ(EnumWithChar::ValueA, mt.get<EnumWithChar>());
+        }
+        {
+            MultiType mt = MultiType(EnumWithInt::Value1);
+
+            EXPECT_TRUE(mt.isType<EnumWithInt>());
+            EXPECT_EQ(EnumWithInt::Value1, mt.get<EnumWithInt>());
+        }
+    }
+
+    TEST(MultiType, Enum_Assignment)
+    {
+        // operator=:
+        MultiType mt;
+        mt = EnumWithChar::ValueB;
+
+        EXPECT_TRUE(mt.isType<EnumWithChar>());
+        EXPECT_EQ(EnumWithChar::ValueB, mt.get<EnumWithChar>());
+    }
+
+    TEST(MultiType, Enum_Set)
+    {
+        // set(value):
+        {
+            MultiType mt;
+            mt.set(EnumWithInt::Value2); // assign enum to an empty MultiType
+
+            EXPECT_TRUE(mt.isType<EnumWithInt>());
+            EXPECT_EQ(EnumWithInt::Value2, mt.get<EnumWithInt>());
+        }
+        {
+            MultiType mt = "string";
+            mt.set(EnumWithChar::ValueC); // assign enum to a MultiType with type std::string
+
+            EXPECT_TRUE(mt.isType<std::string>());
+            EXPECT_EQ("C", mt.get<std::string>());
+        }
+        {
+            MultiType mt = EnumWithChar::ValueA;
+            mt.set(EnumWithChar::ValueB); // assign enum to a MultiType with type std::string
+
+            EXPECT_TRUE(mt.isType<EnumWithChar>());
+            EXPECT_EQ(EnumWithChar::ValueB, mt.get<EnumWithChar>());
+        }
+        {
+            MultiType mt = EnumWithInt::Value3;
+            mt.set("50"); // assign enum to a MultiType with type std::string
+
+            EXPECT_TRUE(mt.isType<EnumWithInt>());
+            EXPECT_EQ(EnumWithInt::Value1, mt.get<EnumWithInt>());
+        }
+    }
+
+    TEST(MultiType, Enum_Force)
+    {
+        // force(value):
+        {
+            MultiType mt = "string";
+            EXPECT_TRUE(mt.isType<std::string>());
+            EXPECT_EQ("string", mt.get<std::string>());
+
+            mt.force<EnumWithChar>("C");
+
+            EXPECT_TRUE(mt.isType<EnumWithChar>());
+            EXPECT_EQ(EnumWithChar::ValueC, mt.get<EnumWithChar>());
+        }
+        {
+            MultiType mt = EnumWithChar::ValueA;
+            EXPECT_TRUE(mt.isType<EnumWithChar>());
+            EXPECT_EQ(EnumWithChar::ValueA, mt.get<EnumWithChar>());
+
+            mt.force<std::string>(EnumWithChar::ValueB);
+
+            EXPECT_TRUE(mt.isType<std::string>());
+            EXPECT_EQ("B", mt.get<std::string>());
+        }
+    }
+
+    TEST(MultiType, Enum_Convert)
+    {
+        // convert():
+        {
+            MultiType mt = "C";
+            mt.convert<EnumWithChar>();
+
+            EXPECT_TRUE(mt.isType<EnumWithChar>());
+            EXPECT_EQ(EnumWithChar::ValueC, mt.get<EnumWithChar>());
+        }
+        {
+            MultiType mt = EnumWithChar::ValueA;
+            mt.convert<std::string>();
+
+            EXPECT_TRUE(mt.isType<std::string>());
+            EXPECT_EQ("A", mt.get<std::string>());
+        }
+    }
+
+    TEST(MultiType, Enum_Reset)
+    {
+        // reset():
+        {
+            MultiType mt = EnumWithChar::ValueA;
+            mt.reset<EnumWithChar>();
+
+            EXPECT_TRUE(mt.isType<EnumWithChar>());
+            EXPECT_TRUE(mt.isType<unsigned char>());
+            EXPECT_EQ('\0', mt.get<unsigned char>());
+        }
+        {
+            MultiType mt = "string";
+            mt.reset<EnumWithInt>();
+
+            EXPECT_TRUE(mt.isType<EnumWithInt>());
+            EXPECT_TRUE(mt.isType<int>());
+            EXPECT_EQ(0, mt.get<int>());
+        }
+    }
+
+    TEST(MultiType, Enum_IsType)
+    {
+        // isType():
+        {
+            MultiType mt = EnumWithChar::ValueB;
+            EXPECT_TRUE(mt.isType<EnumWithChar>());
+            EXPECT_TRUE(mt.isType<unsigned char>());
+            EXPECT_FALSE(mt.isType<char>());
+            EXPECT_FALSE(mt.isType<int>());
+            EXPECT_FALSE(mt.isType<bool>());
+            EXPECT_FALSE(mt.isType<std::string>());
+        }
+        {
+            MultiType mt = EnumWithInt::Value3;
+            EXPECT_TRUE(mt.isType<EnumWithInt>());
+            EXPECT_TRUE(mt.isType<int>());
+            EXPECT_FALSE(mt.isType<unsigned char>());
+            EXPECT_FALSE(mt.isType<char>());
+            EXPECT_FALSE(mt.isType<bool>());
+            EXPECT_FALSE(mt.isType<std::string>());
+        }
+    }
+
+    TEST(MultiType, Enum_ConversionOperator)
+    {
+        // conversion operator:
+        {
+            MultiType mt = EnumWithChar::ValueA;
+            EnumWithChar value = mt;
+            EXPECT_EQ(EnumWithChar::ValueA, value);
+        }
+        {
+            MultiType mt = 'B';
+            EnumWithChar value = mt;
+            EXPECT_EQ(EnumWithChar::ValueB, value);
+        }
+        {
+            MultiType mt = EnumWithInt::Value1;
+            std::string value = mt;
+            EXPECT_EQ("50", value);
+        }
+    }
+
+    TEST(MultiType, Enum_GetValue)
+    {
+        // getValue():
+        {
+            MultiType mt = EnumWithChar::ValueA;
+            EnumWithChar value;
+            mt.getValue(&value);
+            EXPECT_EQ(EnumWithChar::ValueA, value);
+        }
+        {
+            MultiType mt = 'B';
+            EnumWithChar value;
+            mt.getValue(&value);
+            EXPECT_EQ(EnumWithChar::ValueB, value);
+        }
+        {
+            MultiType mt = EnumWithInt::Value1;
+            std::string value;
+            mt.getValue(&value);
+            EXPECT_EQ("50", value);
+        }
+    }
+
+    TEST(MultiType, Enum_Get)
+    {
+        // get():
+        {
+            MultiType mt = EnumWithChar::ValueB;
+            EXPECT_EQ(EnumWithChar::ValueB, mt.get<EnumWithChar>());
+
+            EXPECT_EQ('B', mt.get<unsigned char>());
+            EXPECT_EQ("B", mt.get<std::string>());
+            EXPECT_EQ(66, mt.get<int>());
+            EXPECT_TRUE(mt.get<bool>());
+        }
+        {
+            MultiType mt = EnumWithInt::Value1;
+            EXPECT_EQ(EnumWithInt::Value1, mt.get<EnumWithInt>());
+
+            EXPECT_EQ('2', mt.get<unsigned char>());
+            EXPECT_EQ("50", mt.get<std::string>());
+            EXPECT_EQ(50, mt.get<int>());
+            EXPECT_TRUE(mt.get<bool>());
+        }
+        {
+            MultiType mt = EnumWithInt::Value2;
+            EXPECT_EQ(EnumWithInt::Value2, mt.get<EnumWithInt>());
+
+            EXPECT_EQ('\0', mt.get<unsigned char>());
+            EXPECT_EQ("0", mt.get<std::string>());
+            EXPECT_EQ(0, mt.get<int>());
+            EXPECT_FALSE(mt.get<bool>());
+        }
+    }
 }




More information about the Orxonox-commit mailing list