[Orxonox-commit 5276] r9939 - in code/trunk: . data/defaultConfig data/gui/layouts data/gui/scripts data/levels data/levels/includes data/levels/templates data/overlays src/libraries/util src/modules src/modules/docking src/modules/invader src/modules/objects src/modules/overlays src/modules/overlays/debugging src/modules/overlays/hud src/modules/pong src/modules/weapons/weaponmodes src/orxonox src/orxonox/controllers src/orxonox/gamestates src/orxonox/gametypes src/orxonox/graphics src/orxonox/infos src/orxonox/interfaces src/orxonox/items src/orxonox/sound src/orxonox/weaponsystem src/orxonox/worldentities src/orxonox/worldentities/pawns
jo at orxonox.net
jo at orxonox.net
Sat Dec 21 23:16:54 CET 2013
Author: jo
Date: 2013-12-21 23:16:54 +0100 (Sat, 21 Dec 2013)
New Revision: 9939
Added:
code/trunk/data/gui/layouts/UndockingDialog.layout
code/trunk/data/gui/scripts/UndockingDialog.lua
code/trunk/data/levels/HeavyCruiser.oxw
code/trunk/data/levels/InsideSpaceStation.oxw
code/trunk/data/levels/Invaders.oxw
code/trunk/data/levels/_temp.oxw
code/trunk/data/levels/dockingToASpaceStation.oxw
code/trunk/data/levels/iJohnVane_TriptoArea51.oxw
code/trunk/data/levels/iiJohnVane_Area51UnderFire.oxw
code/trunk/data/levels/iiiJohnVane_EscapeTheBastards.oxw
code/trunk/data/levels/includes/HeavyCruiserParts.lua
code/trunk/data/levels/includes/invaderWeapon.oxi
code/trunk/data/levels/includes/invaderWeaponEnemy.oxi
code/trunk/data/levels/includes/weaponSettingsHeavyCruiser.oxi
code/trunk/data/levels/includes/weaponSettingsHeavyCruiserBody.oxi
code/trunk/data/levels/presentationHS13.oxw
code/trunk/data/levels/radar3D_test.oxw
code/trunk/data/levels/templates/.shipmodels
code/trunk/data/levels/templates/HeavyCruiser.oxt
code/trunk/data/levels/templates/HeavyCruiserBody.oxt
code/trunk/data/levels/templates/enemyInvader.oxt
code/trunk/data/levels/templates/enemyInvaderShooter.oxt
code/trunk/data/levels/templates/spaceshipInvader.oxt
code/trunk/data/overlays/InvaderHUD.oxo
code/trunk/src/modules/invader/
code/trunk/src/modules/invader/CMakeLists.txt
code/trunk/src/modules/invader/Invader.cc
code/trunk/src/modules/invader/Invader.h
code/trunk/src/modules/invader/InvaderCenterPoint.cc
code/trunk/src/modules/invader/InvaderCenterPoint.h
code/trunk/src/modules/invader/InvaderEnemy.cc
code/trunk/src/modules/invader/InvaderEnemy.h
code/trunk/src/modules/invader/InvaderEnemyShooter.cc
code/trunk/src/modules/invader/InvaderEnemyShooter.h
code/trunk/src/modules/invader/InvaderHUDinfo.cc
code/trunk/src/modules/invader/InvaderHUDinfo.h
code/trunk/src/modules/invader/InvaderPrereqs.h
code/trunk/src/modules/invader/InvaderShip.cc
code/trunk/src/modules/invader/InvaderShip.h
code/trunk/src/modules/invader/InvaderWeapon.cc
code/trunk/src/modules/invader/InvaderWeapon.h
code/trunk/src/modules/invader/InvaderWeaponEnemy.cc
code/trunk/src/modules/invader/InvaderWeaponEnemy.h
code/trunk/src/modules/overlays/debugging/DebugPositionText.cc
code/trunk/src/modules/overlays/debugging/DebugPositionText.h
code/trunk/src/modules/overlays/hud/CountDown.cc
code/trunk/src/modules/overlays/hud/CountDown.h
Removed:
code/trunk/src/modules/invader/CMakeLists.txt
code/trunk/src/modules/invader/Invader.cc
code/trunk/src/modules/invader/Invader.h
code/trunk/src/modules/invader/InvaderCenterPoint.cc
code/trunk/src/modules/invader/InvaderCenterPoint.h
code/trunk/src/modules/invader/InvaderEnemy.cc
code/trunk/src/modules/invader/InvaderEnemy.h
code/trunk/src/modules/invader/InvaderEnemyShooter.cc
code/trunk/src/modules/invader/InvaderEnemyShooter.h
code/trunk/src/modules/invader/InvaderHUDinfo.cc
code/trunk/src/modules/invader/InvaderHUDinfo.h
code/trunk/src/modules/invader/InvaderPrereqs.h
code/trunk/src/modules/invader/InvaderShip.cc
code/trunk/src/modules/invader/InvaderShip.h
code/trunk/src/modules/invader/InvaderWeapon.cc
code/trunk/src/modules/invader/InvaderWeapon.h
code/trunk/src/modules/invader/InvaderWeaponEnemy.cc
code/trunk/src/modules/invader/InvaderWeaponEnemy.h
Modified:
code/trunk/
code/trunk/data/defaultConfig/keybindings.ini
code/trunk/data/gui/scripts/MiscConfigMenu.lua
code/trunk/data/levels/FPSTest.oxw
code/trunk/data/levels/Spacerace2.oxw
code/trunk/data/levels/asteroidField.oxw
code/trunk/data/levels/asteroids.oxw
code/trunk/data/levels/docking.oxw
code/trunk/data/levels/dynamicMatch.oxw
code/trunk/data/levels/gallery.oxw
code/trunk/data/levels/lastManStanding.oxw
code/trunk/data/levels/lastTeamStanding.oxw
code/trunk/data/levels/lastTeamStandingII.oxw
code/trunk/data/levels/maxim.oxw
code/trunk/data/levels/missionOne.oxw
code/trunk/data/levels/pickups.oxw
code/trunk/data/levels/pirateAttack.oxw
code/trunk/data/levels/pong.oxw
code/trunk/data/levels/portals.oxw
code/trunk/data/levels/presentation.oxw
code/trunk/data/levels/presentationFS11.oxw
code/trunk/data/levels/quests.oxw
code/trunk/data/levels/spaceRace.oxw
code/trunk/data/levels/surfaceRace.oxw
code/trunk/data/levels/teamBaseMatch.oxw
code/trunk/data/levels/teamDeathMatch.oxw
code/trunk/data/levels/templates/lodInformation.oxt
code/trunk/data/levels/templates/spaceshipAssff.oxt
code/trunk/data/levels/turretTest.oxw
code/trunk/data/levels/underAttack.oxw
code/trunk/data/overlays/HUD.oxo
code/trunk/data/overlays/HUDTemplates3.oxo
code/trunk/data/overlays/debug.oxo
code/trunk/src/libraries/util/Math.cc
code/trunk/src/libraries/util/Math.h
code/trunk/src/modules/CMakeLists.txt
code/trunk/src/modules/docking/Dock.cc
code/trunk/src/modules/docking/Dock.h
code/trunk/src/modules/docking/MoveToDockingTarget.cc
code/trunk/src/modules/objects/ForceField.cc
code/trunk/src/modules/objects/ForceField.h
code/trunk/src/modules/overlays/OverlaysPrereqs.h
code/trunk/src/modules/overlays/debugging/CMakeLists.txt
code/trunk/src/modules/overlays/hud/CMakeLists.txt
code/trunk/src/modules/overlays/hud/HUDNavigation.cc
code/trunk/src/modules/overlays/hud/HUDRadar.cc
code/trunk/src/modules/overlays/hud/HUDRadar.h
code/trunk/src/modules/pong/Pong.cc
code/trunk/src/modules/pong/PongBall.cc
code/trunk/src/modules/pong/PongBall.h
code/trunk/src/modules/pong/PongScore.cc
code/trunk/src/modules/pong/PongScore.h
code/trunk/src/modules/weapons/weaponmodes/HsW01.h
code/trunk/src/orxonox/MoodManager.h
code/trunk/src/orxonox/controllers/NewHumanController.cc
code/trunk/src/orxonox/gamestates/GSMainMenu.cc
code/trunk/src/orxonox/gametypes/Gametype.cc
code/trunk/src/orxonox/graphics/ParticleEmitter.cc
code/trunk/src/orxonox/graphics/ParticleEmitter.h
code/trunk/src/orxonox/infos/PlayerInfo.cc
code/trunk/src/orxonox/interfaces/RadarViewable.h
code/trunk/src/orxonox/items/MultiStateEngine.cc
code/trunk/src/orxonox/sound/AmbientSound.cc
code/trunk/src/orxonox/sound/AmbientSound.h
code/trunk/src/orxonox/sound/BaseSound.cc
code/trunk/src/orxonox/sound/SoundManager.cc
code/trunk/src/orxonox/sound/WorldAmbientSound.cc
code/trunk/src/orxonox/sound/WorldAmbientSound.h
code/trunk/src/orxonox/sound/WorldSound.cc
code/trunk/src/orxonox/weaponsystem/WeaponMode.cc
code/trunk/src/orxonox/worldentities/BigExplosion.cc
code/trunk/src/orxonox/worldentities/BigExplosion.h
code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
code/trunk/src/orxonox/worldentities/pawns/Pawn.h
Log:
presentationHS13 branch merged into trunk
Property changes on: code/trunk
___________________________________________________________________
Modified: svn:mergeinfo
- /code/branches/Racingbot:9388-9513
/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/ceguilua:1802-1808
/code/branches/chat:6527-6797
/code/branches/chat2:6836-6910
/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/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/formation:8885-8991
/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/hud:8883-8986
/code/branches/hudelements:6584-6941
/code/branches/hudimprovements:7920-8672
/code/branches/ingamemenu:6000-6023
/code/branches/input:1629-1636
/code/branches/ipv6:7293-7458
/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/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/miniprojects:2754-2824
/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/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/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/presentationHS12:9481-9525
/code/branches/questsystem:1894-2088
/code/branches/questsystem2:2107-2259
/code/branches/questsystem5:2776-2905
/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/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/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/steering:5949-6091,8140-8595
/code/branches/surfaceRace:9028-9199
/code/branches/testing:9015-9549
/code/branches/tetris:8100-8563
/code/branches/turret:9380-9501
/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/weapons:2897-3051,8143-8591
/code/branches/weaponsystem:2742-2890
+ /code/branches/Racingbot:9388-9513
/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/ceguilua:1802-1808
/code/branches/chat:6527-6797
/code/branches/chat2:6836-6910
/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/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/formation:8885-8991
/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/hud:8883-8986
/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/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/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/miniprojects:2754-2824
/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/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/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/presentationHS12:9481-9525
/code/branches/presentationHS13:9891-9938
/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/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/surfaceRace:9028-9199
/code/branches/testing:9015-9549
/code/branches/tetris:8100-8563
/code/branches/turret:9380-9501
/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/weapons:2897-3051,8143-8591
/code/branches/weaponsystem:2742-2890
Modified: code/trunk/data/defaultConfig/keybindings.ini
===================================================================
--- code/trunk/data/defaultConfig/keybindings.ini 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/defaultConfig/keybindings.ini 2013-12-21 22:16:54 UTC (rev 9939)
@@ -57,7 +57,7 @@
KeyLeftShif
KeyLeftWindows=
KeyLessThan=
-KeyM=
+KeyM="WorldAmbientSound nextsong"
KeyMail=
KeyMediaSelect=
KeyMediaStop=
Copied: code/trunk/data/gui/layouts/UndockingDialog.layout (from rev 9938, code/branches/presentationHS13/data/gui/layouts/UndockingDialog.layout)
===================================================================
--- code/trunk/data/gui/layouts/UndockingDialog.layout (rev 0)
+++ code/trunk/data/gui/layouts/UndockingDialog.layout 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<GUILayout >
+ <Window Type="MenuWidgets/StaticImage" Name="orxonox/Undocking/Background" >
+ <Property Name="FrameEnabled" Value="False" />
+ <Property Name="InheritsAlpha" Value="False" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0,0},{0,0},{1,0},{1,0}}" />
+ <Property Name="BackgroundEnabled" Value="False" />
+ <Window Type="MenuWidgets/StaticText" Name="orxonox/Undocking/Title" >
+ <Property Name="Text" Value="Undocking" />
+ <Property Name="Alpha" Value="0.8" />
+ <Property Name="InheritsAlpha" Value="False" />
+ <Property Name="HorzFormatting" Value="HorzCentred" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="VertFormatting" Value="TopAligned" />
+ <Property Name="UnifiedAreaRect" Value="{{0.25,0},{0.2875,0},{0.75,0},{0.7,0}}" />
+ <Window Type="MenuWidgets/Listbox" Name="orxonox/Undocking/Docks" >
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.05,0},{0.15,0},{0.95,0},{0.85,0}}" />
+ </Window>
+ </Window>
+ <Window Type="MenuWidgets/Button" Name="orxonox/Undocking/DockButton" >
+ <Property Name="Text" Value="Undock" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.2875,0},{0.725,0},{0.4875,0},{0.775,0}}" />
+ <Event Name="Clicked" Function="UndockingDialog.undockButton_clicked"/>
+ </Window>
+ <Window Type="MenuWidgets/Button" Name="orxonox/Undocking/CancelButton" >
+ <Property Name="Text" Value="Cancel" />
+ <Property Name="UnifiedMaxSize" Value="{{1,0},{1,0}}" />
+ <Property Name="UnifiedAreaRect" Value="{{0.5125,0},{0.725,0},{0.7125,0},{0.775,0}}" />
+ <Event Name="Clicked" Function="UndockingDialog.cancelButton_clicked"/>
+ </Window>
+ </Window>
+</GUILayout>
Modified: code/trunk/data/gui/scripts/MiscConfigMenu.lua
===================================================================
--- code/trunk/data/gui/scripts/MiscConfigMenu.lua 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/gui/scripts/MiscConfigMenu.lua 2013-12-21 22:16:54 UTC (rev 9939)
@@ -37,6 +37,7 @@
table.insert(P.commandList, "Core bDevMode_")
table.insert(P.commandList, "HUDNavigation MarkerLimit_")
table.insert(P.commandList, "HUDNavigation showDistance")
+ table.insert(P.commandList, "HUDRadar RadarMode_")
P.nameList = {}
table.insert(P.nameList, "Mouse sensitivity")
@@ -59,6 +60,7 @@
table.insert(P.nameList, "Developer's Mode")
table.insert(P.nameList, "Marker Limit")
table.insert(P.nameList, "Show Distance next to cursor")
+ table.insert(P.nameList, "Set Radar on 3D mode")
P.linesList = {}
Copied: code/trunk/data/gui/scripts/UndockingDialog.lua (from rev 9938, code/branches/presentationHS13/data/gui/scripts/UndockingDialog.lua)
===================================================================
--- code/trunk/data/gui/scripts/UndockingDialog.lua (rev 0)
+++ code/trunk/data/gui/scripts/UndockingDialog.lua 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,69 @@
+-- DockingDialog.lua
+
+local P = createMenuSheet("UndockingDialog")
+
+P.docks = {}
+
+function P.onLoad()
+
+ --button are arranged in a 1x2 matrix
+ P:setButton(1, 1, {
+ ["button"] = winMgr:getWindow("orxonox/Undocking/DockButton"),
+ ["callback"] = P.undockButton_clicked
+ })
+
+ P:setButton(1, 2, {
+ ["button"] = winMgr:getWindow("orxonox/Undocking/CancelButton"),
+ ["callback"] = P.cancelButton_clicked
+ })
+
+end
+
+function P.onShow()
+ orxonox.execute("setPause 1")
+ P.update()
+end
+
+function P.onHide()
+ orxonox.execute("setPause 0")
+end
+
+function P.update()
+ -- update dock list
+ P.docks = {}
+ local docks = orxonox.Dock:getNumberOfActiveDocks()
+ for i = 0, docks-1 do
+ table.insert(P.docks, orxonox.Dock:getActiveDockAtIndex(i))
+ end
+
+ local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/Undocking/Docks"))
+ listbox:resetList()
+
+ for k in pairs(P.docks) do
+ local item = CEGUI.createListboxTextItem("Dock " .. k)
+ item:setSelectionBrushImage(menuImageSet, "MultiListSelectionBrush")
+ listbox:addItem(item)
+ if k == 1 then
+ listbox:setItemSelectState(item, true)
+ end
+ end
+end
+
+function P.undockButton_clicked(e)
+ local listbox = CEGUI.toListbox(winMgr:getWindow("orxonox/Undocking/Docks"))
+ local choice = listbox:getFirstSelectedItem()
+ if choice ~= nil then
+ local index = listbox:getItemIndex(choice)
+ local dock = P.docks[index+1]
+ if dock ~= nil then
+ dock:undock()
+ end
+ end
+ hideMenuSheet(P.name)
+end
+
+function P.cancelButton_clicked(e)
+ hideMenuSheet(P.name)
+end
+
+return P
Modified: code/trunk/data/levels/FPSTest.oxw
===================================================================
--- code/trunk/data/levels/FPSTest.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/FPSTest.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,4 @@
+<!-- -->
<LevelInfo
name = "FPS testlevel"
description = "Level to test First Person Shooter"
Copied: code/trunk/data/levels/HeavyCruiser.oxw (from rev 9938, code/branches/presentationHS13/data/levels/HeavyCruiser.oxw)
===================================================================
--- code/trunk/data/levels/HeavyCruiser.oxw (rev 0)
+++ code/trunk/data/levels/HeavyCruiser.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,902 @@
+<LevelInfo
+ name = "Heavy Cruiser Demo"
+ description = "Demonstration of the Heavy Cruiser."
+ tags = "test"
+ screenshot = "HeavyCruiser_level.png"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+?>
+
+<?lua
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipAssff2.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipEscort.oxt")
+ include("templates/spaceshipTurret.oxt")
+ include("templates/HeavyCruiser.oxt")
+ include("templates/HeavyCruiserBody.oxt")
+?>
+
+<Level>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+ <?lua include("includes/notifications.oxi") ?>
+
+ <Scene
+ ambientlight = "0.8, 0.8, 0.8"
+ skybox = "Orxonox/Starbox"
+ >
+
+<!-- HeavyCruiser and all its parts in one static entity -->
+ <StaticEntity position="-300,0,-2000" direction="0,0,0" yaw="180" collisionType=static mass=100000 friction=0.01 >
+ <attached>
+ <Model mesh="HeavyCruiser_body.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_frontR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_frontL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_partL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_partR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_sidearmL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_sidearmLfront.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_sidearmR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_sidearmRfront.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+
+ <!-- bay1 lights -->
+ <BlinkingBillboard position="75,30,-416" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.05 frequency=0.3 phase=240 quadratic=1 />
+ <BlinkingBillboard position="-75,30,-416" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.05 frequency=0.3 phase=240 quadratic=1 />
+ <BlinkingBillboard position="74,30,-402" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.1 frequency=0.3 phase=120 quadratic=1 />
+ <BlinkingBillboard position="-74,30,-402" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.1 frequency=0.3 phase=120 quadratic=1 />
+ <BlinkingBillboard position="73,30,-388" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.15 frequency=0.3 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-73,30,-388" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.15 frequency=0.3 phase=0 quadratic=1 />
+ <!-- front position lights -->
+ <BlinkingBillboard position="67,-5,-240" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-67,-5,-240" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="72,51,-380" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="-72,51,-380" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <!-- rear position lights -->
+ <BlinkingBillboard position="95,-15,483" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="-95,-15,483" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="74,103,524" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-74,103,524" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="80,33,-320" halfExtents="7,11,54" info="frontR"/>
+ <BoxCollisionShape position="79,31,-399" halfExtents="3,6,26" info="frontR"/>
+
+
+ <BoxCollisionShape position="-80,33,-320" halfExtents="7,11,54" info="frontL"/>
+ <BoxCollisionShape position="-79,31,-399" halfExtents="3,6,26" info="frontL"/>
+
+
+ <BoxCollisionShape position="94,33,-179" halfExtents="11,13,45" info="partR"/>
+ <BoxCollisionShape position="96,33,-230" halfExtents="13,17,22" info="partR"/>
+
+
+ <BoxCollisionShape position="-94,33,-179" halfExtents="11,13,45" info="partL"/>
+ <BoxCollisionShape position="-96,33,-230" halfExtents="13,17,22" info="partL"/>
+
+
+ <BoxCollisionShape position="109,47,87" halfExtents="29,8,26" info="sidearmR, upper connection"/>
+ <BoxCollisionShape position="99,-1,79" roll="-15" halfExtents="40,4,9" info="sidearmR, lower connection"/>
+ <BoxCollisionShape position="151,47,115" roll="-15" halfExtents="16,2,105" info="sidearmR, frontTop"/>
+ <BoxCollisionShape position="136,-7,115" roll="-15" halfExtents="16,2,105" info="sidearmR, frontBottom"/>
+ <BoxCollisionShape position="127,26,115" roll="-15" halfExtents="2,28,105" info="sidearmR, frontInner"/>
+ <BoxCollisionShape position="161,16,115" roll="-15" halfExtents="2,28,105" info="sidearmR, frontOuter"/>
+ <BoxCollisionShape position="145,21,12" roll="-15" halfExtents="16,28,2" info="sidearmR, front"/>
+ <BoxCollisionShape position="140,12,261" roll="-15" halfExtents="22,41,43" info="sidearmR, back"/>
+ <BoxCollisionShape position="145,25,5" roll="-15" halfExtents="10,18,5" info="sidearmR, front break"/>
+ <BoxCollisionShape position="133,-13,29" roll="-15" halfExtents="12,6,17" info="sidearmR, bottom cylinder"/>
+ <BoxCollisionShape position="165,-4,31" roll="-15" halfExtents="7,21,13" info="sidearmR, box"/>
+ <BoxCollisionShape position="153,59,96" roll="-15" halfExtents="6,7,60" info="sidearmR, upper beam"/>
+ <BoxCollisionShape position="143,57,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper inner beam"/>
+ <BoxCollisionShape position="142,53,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper inner beam"/>
+ <BoxCollisionShape position="160,52,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper outer beam"/>
+ <BoxCollisionShape position="159,48,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper outer beam"/>
+ <BoxCollisionShape position="152,54,34" pitch="-46" yaw="14" roll="-15" halfExtents="6,7,10" info="sidearmR, upper beam front"/>
+ <BoxCollisionShape position="152,54,162" pitch="30" yaw="-9" roll="-15" halfExtents="6,7,12" info="sidearmR, upper beam back"/>
+ <BoxCollisionShape position="168,21,119" roll="-15" halfExtents="3,5,109" info="sidearmR, outer beam"/>
+ <BoxCollisionShape position="134,-10,169" roll="-15" halfExtents="6,4,55" info="sidearmR, lower beam front"/>
+ <BoxCollisionShape position="131,-20,217" pitch="-20" roll="-15" yaw="5" halfExtents="6,12,3" info="sidearmR, lower beam middle"/>
+ <BoxCollisionShape position="130,-29,233" roll="-15" halfExtents="6,3,15" info="sidearmR, lower beam back"/>
+
+ <BoxCollisionShape position="145,21,71" halfExtents="10,10,1" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="145,21,29" halfExtents="10,10,1" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="145,32,50" halfExtents="10,1,20" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="145,10,50" halfExtents="10,1,20" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="156,21,50" halfExtents="1,10,20" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="134,21,50" halfExtents="1,10,20" info="sidearmR, HOOKBOX"/>
+
+
+ <BoxCollisionShape position="141,15,-53" roll="-15" halfExtents="27,44,62" info="sidearmRfront"/>
+ <BoxCollisionShape position="153,59,-30" roll="-15" halfExtents="4,2,38" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,61,-41" roll="-15" halfExtents="4,4,11" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,60,-65" roll="-15" halfExtents="4,3,4" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,59,-41" roll="-15" halfExtents="8,2,11" info="sidearmRfront, top"/>
+
+ <BoxCollisionShape position="145,21,50" halfExtents="10,10,20" info="sidearmRfront, HOOK"/>
+
+
+ <BoxCollisionShape position="-109,47,87" halfExtents="29,8,26" info="sidearmL, upper connection"/>
+ <BoxCollisionShape position="-99,-1,79" roll="15" halfExtents="40,4,9" info="sidearmL, lower connection"/>
+ <BoxCollisionShape position="-151,47,115" roll="15" halfExtents="16,2,105" info="sidearmL, frontTop"/>
+ <BoxCollisionShape position="-136,-7,115" roll="15" halfExtents="16,2,105" info="sidearmL, frontBottom"/>
+ <BoxCollisionShape position="-127,26,115" roll="15" halfExtents="2,28,105" info="sidearmL, frontInner"/>
+ <BoxCollisionShape position="-161,16,115" roll="15" halfExtents="2,28,105" info="sidearmL, frontOuter"/>
+ <BoxCollisionShape position="-145,21,12" roll="15" halfExtents="16,28,2" info="sidearmL, front"/>
+ <BoxCollisionShape position="-140,12,261" roll="15" halfExtents="22,41,43" info="sidearmL, back"/>
+ <BoxCollisionShape position="-145,25,5" roll="15" halfExtents="10,18,5" info="sidearmL, front break"/>
+ <BoxCollisionShape position="-133,-13,29" roll="15" halfExtents="12,6,17" info="sidearmL, bottom cylinder"/>
+ <BoxCollisionShape position="-165,-4,31" roll="15" halfExtents="7,21,13" info="sidearmL, box"/>
+ <BoxCollisionShape position="-153,59,96" roll="15" halfExtents="6,7,60" info="sidearmL, upper beam"/>
+ <BoxCollisionShape position="-143,57,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper inner beam"/>
+ <BoxCollisionShape position="-142,53,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper inner beam"/>
+ <BoxCollisionShape position="-160,52,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper outer beam"/>
+ <BoxCollisionShape position="-159,48,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper outer beam"/>
+ <BoxCollisionShape position="-152,54,34" pitch="-46" yaw="-14" roll="15" halfExtents="6,7,10" info="sidearmL, upper beam front"/>
+ <BoxCollisionShape position="-152,54,162" pitch="30" yaw="9" roll="15" halfExtents="6,7,12" info="sidearmL, upper beam back"/>
+ <BoxCollisionShape position="-168,21,119" roll="15" halfExtents="3,5,109" info="sidearmL, outer beam"/>
+ <BoxCollisionShape position="-134,-10,169" roll="15" halfExtents="6,4,55" info="sidearmL, lower beam front"/>
+ <BoxCollisionShape position="-131,-20,217" pitch="-20" roll="15" yaw="-5" halfExtents="6,12,3" info="sidearmL, lower beam middle"/>
+ <BoxCollisionShape position="-130,-29,233" roll="15" halfExtents="6,3,15" info="sidearmL, lower beam back"/>
+
+ <BoxCollisionShape position="-145,21,71" halfExtents="10,10,1" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-145,21,29" halfExtents="10,10,1" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-145,32,50" halfExtents="10,1,20" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-145,10,50" halfExtents="10,1,20" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-156,21,50" halfExtents="1,10,20" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-134,21,50" halfExtents="1,10,20" info="sidearmL, HOOKBOX"/>
+
+
+ <BoxCollisionShape position="-141,15,-53" roll="15" halfExtents="27,44,62" info="sidearmLfront"/>
+ <BoxCollisionShape position="-153,59,-30" roll="15" halfExtents="4,2,38" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,61,-41" roll="15" halfExtents="4,4,11" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,60,-65" roll="15" halfExtents="4,3,4" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,59,-41" roll="15" halfExtents="8,2,11" info="sidearmLfront, top"/>
+
+ <BoxCollisionShape position="-145,21,50" halfExtents="10,10,20" info="sidearmLfront, HOOK"/>
+
+
+ <BoxCollisionShape position="60,35,-310" halfExtents="13,28,60" info="body, bay1, Rwall"/>
+ <BoxCollisionShape position="-60,35,-310" halfExtents="13,28,60" info="body, bay1, Lwall"/>
+ <BoxCollisionShape position="0,56,-310" halfExtents="65,6,60" info="body, bay1, Twall"/>
+ <BoxCollisionShape position="0,33,-260" halfExtents="65,28,5" info="body, bay1, Bwall"/>
+ <BoxCollisionShape position="0,10,-310" halfExtents="65,5,60" info="body, bay1, BottomWall"/>
+
+ <BoxCollisionShape position="0,35,-125" halfExtents="83,30,130" info="body, front"/>
+ <BoxCollisionShape position="0,6,-307" halfExtents="19,3,43" info="body, frontbottom"/>
+ <BoxCollisionShape position="0,5,-196" halfExtents="27,3,24" info="body, dock"/>
+ <BoxCollisionShape position="0,7,-248" pitch="25" halfExtents="63,4,12" info="body, dockF"/>
+ <BoxCollisionShape position="70,6,-120" roll="20" halfExtents="12,6,120" info="body, dockR"/>
+ <BoxCollisionShape position="63,-2,-180" halfExtents="3,3,60" info="body, dockR"/>
+ <BoxCollisionShape position="-70,6,-120" roll="-20" halfExtents="12,6,120" info="body, dockL"/>
+ <BoxCollisionShape position="-63,-2,-180" halfExtents="3,3,60" info="body, dockL"/>
+ <BoxCollisionShape position="87,32,-63" halfExtents="4,23,50" info="body, frontCR"/>
+ <BoxCollisionShape position="-87,32,-63" halfExtents="4,23,50" info="body, frontCL"/>
+
+ <BoxCollisionShape position="0,72,-213" halfExtents="37,8,60" info="body, Fbridge"/>
+ <BoxCollisionShape position="0,72,-110" halfExtents="53,11,53" info="body, Cbridge"/>
+ <BoxCollisionShape position="0,86,-110" halfExtents="40,4,40" info="body, Cbridge"/>
+ <BoxCollisionShape position="0,70,-60" halfExtents="65,11,30" info="body, Bbridge"/>
+ <BoxCollisionShape position="0,84,-45" halfExtents="33,11,26" info="body, Bbridge"/>
+ <BoxCollisionShape position="0,79,-6" pitch="10" halfExtents="32,13,17" info="body, Bbridge"/>
+ <BoxCollisionShape position="38,67,-45" roll="50" halfExtents="16,23,25" info="body, BbridgeR"/>
+ <BoxCollisionShape position="35,63,-17" pitch="25" yaw="-20" roll="40" halfExtents="16,23,16" info="body, BbridgeR"/>
+ <BoxCollisionShape position="-38,67,-45" roll="-50" halfExtents="16,23,25" info="body, BbridgeL"/>
+ <BoxCollisionShape position="-35,63,-17" pitch="25" yaw="20" roll="-40" halfExtents="16,23,16" info="body, BbridgeL"/>
+
+ <BoxCollisionShape position="0,69,80" halfExtents="8,4,80" info="body, Cbeam"/>
+ <BoxCollisionShape position="-67,18,58" roll="-22" halfExtents="13,5,53" info="body, CF, L"/>
+ <BoxCollisionShape position="-76,36,86" halfExtents="5,18,81" info="body, C, L"/>
+ <BoxCollisionShape position="-91,46,86" halfExtents="11,6,20" info="body, C, L upper beam"/>
+ <BoxCollisionShape position="-64,8,79" roll="10" halfExtents="8,3,8" info="body, C, L lower beam"/>
+ <BoxCollisionShape position="-71,55,140" pitch="-4" roll="31" halfExtents="9,5,27" info="body, CB, TopL"/>
+ <BoxCollisionShape position="-62,2,140" roll="24" halfExtents="10,24,32" info="body, CB, BottomL"/>
+ <BoxCollisionShape position="67,18,58" roll="22" halfExtents="13,5,53" info="body, CF, R"/>
+ <BoxCollisionShape position="76,36,86" halfExtents="5,18,81" info="body, C, R"/>
+ <BoxCollisionShape position="91,46,86" halfExtents="11,6,20" info="body, C, R upper beam"/>
+ <BoxCollisionShape position="64,8,79" roll="-10" halfExtents="8,3,8" info="body, C, R lower beam"/>
+ <BoxCollisionShape position="71,55,140" pitch="-4" roll="-31" halfExtents="9,5,27" info="body, CB, TopR"/>
+ <BoxCollisionShape position="62,2,140" roll="-24" halfExtents="10,24,32" info="body, CB, BottomR"/>
+ <BoxCollisionShape position="0,60,12" halfExtents="81,5,11" info="body, CF, Top"/>
+ <BoxCollisionShape position="0,55,40" pitch="15" halfExtents="81,5,20" info="body, CF, Top"/>
+ <BoxCollisionShape position="0,50,85" pitch="1" halfExtents="81,5,29" info="body, C, Top"/>
+ <BoxCollisionShape position="0,59,140" pitch="-4" halfExtents="68,5,27" info="body, CB, Top"/>
+
+
+
+ <BoxCollisionShape position="0,-7,90" halfExtents="40,4,90" info="body, bay3, Twall"/>
+ <BoxCollisionShape position="0,-15,-60" halfExtents="60,25,65" info="body, bay3, Fwall"/>
+ <BoxCollisionShape position="47,-11,90" halfExtents="13,20,90" info="body, bay3, Rwall"/>
+ <BoxCollisionShape position="-47,-11,90" halfExtents="13,20,90" info="body, bay3, Lwall"/>
+ <BoxCollisionShape position="0,-29,149" halfExtents="10,2,11" info="body, bay3, platform"/>
+ <BoxCollisionShape position="0,-20,227" halfExtents="60,20,65" info="body, bay3, Bwall"/>
+
+ <BoxCollisionShape position="0,81,238" halfExtents="26,5,59" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,67,234" halfExtents="54,5,67" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,77,175" pitch="-36" halfExtents="26,5,9" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,62,161" pitch="-30" halfExtents="56,5,10" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,69,162" halfExtents="16,7,10" info="body, BF, Top"/>
+ <BoxCollisionShape position="31,76,238" roll="-46" halfExtents="10,3,59" info="body, BF, TopR"/>
+ <BoxCollisionShape position="64,64,234" roll="-24" halfExtents="13,3,67" info="body, BF, TopR"/>
+ <BoxCollisionShape position="-31,76,238" roll="46" halfExtents="10,3,59" info="body, BF, TopL"/>
+ <BoxCollisionShape position="-64,64,234" roll="24" halfExtents="13,3,67" info="body, BF, TopL"/>
+
+ <BoxCollisionShape position="77,40,244" roll="16" halfExtents="7,20,79" info="body, BF, R"/>
+ <BoxCollisionShape position="95,9,234" roll="2" halfExtents="18,16,59" info="body, BF, R"/>
+ <BoxCollisionShape position="74,1,255" roll="-20" halfExtents="18,19,82" info="body, BF, BottomR"/>
+ <BoxCollisionShape position="66,-21,255" roll="9" halfExtents="17,5,82" info="body, BF, BottomR"/>
+ <BoxCollisionShape position="-77,40,244" roll="-16" halfExtents="7,20,79" info="body, BF, L"/>
+ <BoxCollisionShape position="-95,9,234" roll="-2" halfExtents="18,16,59" info="body, BF, L"/>
+ <BoxCollisionShape position="-74,1,255" roll="20" halfExtents="18,19,82" info="body, BF, BottomL"/>
+ <BoxCollisionShape position="-66,-21,255" roll="-9" halfExtents="17,5,82" info="body, BF, BottomL"/>
+
+ <BoxCollisionShape position="0,106,381" halfExtents="36,5,71" info="body, BTop"/>
+ <BoxCollisionShape position="0,93,299" pitch="-49" halfExtents="34,5,20" info="body, BTop"/>
+ <BoxCollisionShape position="41,101,381" roll="-42" halfExtents="10,4,71" info="body, BTopR"/>
+ <BoxCollisionShape position="-41,101,381" roll="42" halfExtents="10,4,71" info="body, BTopL"/>
+
+ <BoxCollisionShape position="78,45,332" pitch="-10" roll="-10" yaw="20" halfExtents="10,20,30" info="body, back, R"/>
+ <BoxCollisionShape position="68,77,332" pitch="-10" roll="35" yaw="20" halfExtents="10,20,30" info="body, back, TR"/>
+ <BoxCollisionShape position="50,70,290" pitch="-10" roll="35" yaw="43" halfExtents="5,20,20" info="body, back, TR"/>
+ <BoxCollisionShape position="37,95,307" pitch="-10" roll="30" yaw="43" halfExtents="5,8,8" info="body, back, TR"/>
+ <BoxCollisionShape position="52,92,332" pitch="-10" yaw="30" halfExtents="10,5,30" info="body, back, TR"/>
+ <BoxCollisionShape position="88,4,322" halfExtents="10,24,30" info="body, back, RB"/>
+ <BoxCollisionShape position="54,-24,314" roll="35" pitch="-10" halfExtents="8,5,23" info="body, back, RB"/>
+ <BoxCollisionShape position="68,-19,346" pitch="-17" roll="8" halfExtents="16,4,11" info="body, back, bottomR"/>
+ <BoxCollisionShape position="-78,45,332" pitch="-10" roll="10" yaw="-20" halfExtents="10,20,30" info="body, back, L"/>
+ <BoxCollisionShape position="-68,77,332" pitch="-10" roll="-35" yaw="-20" halfExtents="10,20,30" info="body, back, TL"/>
+ <BoxCollisionShape position="-50,70,290" pitch="-10" roll="-35" yaw="-43" halfExtents="5,20,20" info="body, back, TL"/>
+ <BoxCollisionShape position="-37,95,307" pitch="-10" roll="-30" yaw="-43" halfExtents="5,8,8" info="body, back, TL"/>
+ <BoxCollisionShape position="-52,92,332" pitch="-10" yaw="-30" halfExtents="10,5,30" info="body, back, TL"/>
+ <BoxCollisionShape position="-88,4,322" halfExtents="10,24,30" info="body, back, LB"/>
+ <BoxCollisionShape position="-54,-24,314" roll="-35" pitch="-10" halfExtents="8,5,23" info="body, back, LB"/>
+ <BoxCollisionShape position="-68,-19,346" pitch="-17" roll="-8" halfExtents="16,4,11" info="body, back, bottomL"/>
+ <BoxCollisionShape position="0,-30,314" pitch="-8" halfExtents="52,4,23" info="body, back, bottom"/>
+ <BoxCollisionShape position="0,-22,346" pitch="-24" halfExtents="52,4,11" info="body, back, bottom"/>
+
+ <BoxCollisionShape position="48,-29,400" halfExtents="5,8,58" info="body, BBottomRBeam"/>
+ <BoxCollisionShape position="48,-29,451" halfExtents="10,13,14" info="body, BBottomRBeam"/>
+ <BoxCollisionShape position="-48,-29,400" halfExtents="5,8,58" info="body, BBottomLBeam"/>
+ <BoxCollisionShape position="-48,-31,451" halfExtents="10,13,14" info="body, BBottomLBeam"/>
+
+ <BoxCollisionShape position="103,60,420" halfExtents="18,9,64" info="body, back, Rextrusion"/>
+ <BoxCollisionShape position="-103,60,420" halfExtents="18,9,64" info="body, back, Lextrusion"/>
+ <BoxCollisionShape position="-85,7,417" halfExtents="10,21,67" info="body, back, LB"/>
+ <BoxCollisionShape position="85,7,417" halfExtents="10,21,67" info="body, back, RB"/>
+ <BoxCollisionShape position="0,-8,473" halfExtents="90,6,10" info="body, back, Bback"/>
+ <BoxCollisionShape position="0,-13,474" pitch="-23" halfExtents="76,5,8" info="body, back, Bback"/>
+ <BoxCollisionShape position="-79,-13,405" roll="-12" halfExtents="15,5,73" info="body, back, BL"/>
+ <BoxCollisionShape position="79,-13,405" roll="12" halfExtents="15,5,73" info="body, back, BR"/>
+ <BoxCollisionShape position="0,-15,410" halfExtents="66,6,58" info="body, back, B"/>
+
+ <BoxCollisionShape position="78,32,440" roll="-18" halfExtents="18,35,85" info="body, bay2, Rwall"/>
+ <BoxCollisionShape position="75,71,440" roll="35" halfExtents="18,27,85" info="body, bay2, Rwall"/>
+ <BoxCollisionShape position="-78,32,440" roll="18" halfExtents="18,35,85" info="body, bay2, Lwall"/>
+ <BoxCollisionShape position="-75,71,440" roll="-35" halfExtents="18,27,85" info="body, bay2, Lwall"/>
+ <BoxCollisionShape position="0,75,435" halfExtents="72,28,90" info="body, bay2, Twall"/>
+ <BoxCollisionShape position="0,35,423" halfExtents="85,35,5" info="body, bay2, Fwall"/>
+ <BoxCollisionShape position="0,-3,465" halfExtents="84,5,60" info="body, bay2, BottomWall"/>
+ <BoxCollisionShape position="0,78,526" halfExtents="43,17,5" info="body, bay2, Twall"/>
+
+
+ <BoxCollisionShape position="0,7,80" halfExtents="23,1,34" info="HOOKBOX at 0,18,80, bottom"/>
+ <BoxCollisionShape position="0,29,80" halfExtents="23,1,34" info="HOOKBOX, top"/>
+ <BoxCollisionShape position="-22,18,80" halfExtents="1,12,34" info="HOOKBOX, left long"/>
+ <BoxCollisionShape position="0,18,80" halfExtents="1,12,34" info="HOOKBOX, center long"/>
+ <BoxCollisionShape position="22,18,80" halfExtents="1,12,34" info="HOOKBOX, right long"/>
+ <BoxCollisionShape position="0,18,113" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,91" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,69" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,47" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+
+<!-- <BoxCollisionShape position="-11,18,102" halfExtents="10,10,10" info="HOOK, sidearmL"/>
+ <BoxCollisionShape position="11,18,102" halfExtents="10,10,10" info="HOOK, sidearmR"/>
+ <BoxCollisionShape position="-11,18,80" halfExtents="10,10,10" info="HOOK, partL"/>
+ <BoxCollisionShape position="11,18,80" halfExtents="10,10,10" info="HOOK, partR"/>
+ <BoxCollisionShape position="-11,18,58" halfExtents="10,10,10" info="HOOK, frontL"/>
+ <BoxCollisionShape position="11,18,58" halfExtents="10,10,10" info="HOOK, frontR"/>-->
+ </collisionShapes>
+ </StaticEntity>
+
+ <!-- Width/Height/Lenght--><!-- B=back F=front C=center-->
+ <StaticEntity position="300,0,-2000" direction="0,0,0" yaw="180" collisionType=static mass=100000 friction=0.01 >
+ <attached>
+ <Model position="80,33,-320" mesh="cube.mesh" scale3D="7,11,54" info="frontR"/>
+ <Model position="79,31,-399" mesh="cube.mesh" scale3D="3,6,26" info="frontR"/>
+
+
+ <Model position="-80,33,-320" mesh="cube.mesh" scale3D="7,11,54" info="frontL"/>
+ <Model position="-79,31,-399" mesh="cube.mesh" scale3D="3,6,26" info="frontL"/>
+
+
+ <Model position="94,33,-179" mesh="cube.mesh" scale3D="11,13,45" info="partR"/>
+ <Model position="96,33,-230" mesh="cube.mesh" scale3D="13,17,22" info="partR"/>
+
+
+ <Model position="-94,33,-179" mesh="cube.mesh" scale3D="11,13,45" info="partL"/>
+ <Model position="-96,33,-230" mesh="cube.mesh" scale3D="13,17,22" info="partL"/>
+
+
+ <Model position="109,47,87" mesh="cube.mesh" scale3D="29,8,26" info="sidearmR, upper connection"/>
+ <Model position="99,-1,79" roll="-15" mesh="cube.mesh" scale3D="40,4,9" info="sidearmR, lower connection"/>
+ <Model position="151,47,115" roll="-15" mesh="cube.mesh" scale3D="16,2,105" info="sidearmR, frontTop"/>
+ <Model position="136,-7,115" roll="-15" mesh="cube.mesh" scale3D="16,2,105" info="sidearmR, frontBottom"/>
+ <Model position="127,26,115" roll="-15" mesh="cube.mesh" scale3D="2,28,105" info="sidearmR, frontInner"/>
+ <Model position="161,16,115" roll="-15" mesh="cube.mesh" scale3D="2,28,105" info="sidearmR, frontOuter"/>
+ <Model position="145,21,12" roll="-15" mesh="cube.mesh" scale3D="16,28,2" info="sidearmR, front"/>
+ <Model position="140,12,261" roll="-15" mesh="cube.mesh" scale3D="22,41,43" info="sidearmR, back"/>
+ <Model position="145,25,5" roll="-15" mesh="cube.mesh" scale3D="10,18,5" info="sidearmR, front break"/>
+ <Model position="133,-13,29" roll="-15" mesh="cube.mesh" scale3D="12,6,17" info="sidearmR, bottom cylinder"/>
+ <Model position="165,-4,31" roll="-15" mesh="cube.mesh" scale3D="7,21,13" info="sidearmR, box"/>
+ <Model position="153,59,96" roll="-15" mesh="cube.mesh" scale3D="6,7,60" info="sidearmR, upper beam"/>
+ <Model position="143,57,119" roll="-15" mesh="cube.mesh" scale3D="3,4,85" info="sidearmR, upper inner beam"/>
+ <Model position="142,53,212" pitch="21" yaw="-5" roll="-15" mesh="cube.mesh" scale3D="3,4,10" info="sidearmR, upper inner beam"/>
+ <Model position="160,52,119" roll="-15" mesh="cube.mesh" scale3D="3,4,85" info="sidearmR, upper outer beam"/>
+ <Model position="159,48,212" pitch="21" yaw="-5" roll="-15" mesh="cube.mesh" scale3D="3,4,10" info="sidearmR, upper outer beam"/>
+ <Model position="152,54,34" pitch="-46" yaw="14" roll="-15" mesh="cube.mesh" scale3D="6,7,10" info="sidearmR, upper beam front"/>
+ <Model position="152,54,162" pitch="30" yaw="-9" roll="-15" mesh="cube.mesh" scale3D="6,7,12" info="sidearmR, upper beam back"/>
+ <Model position="168,21,119" roll="-15" mesh="cube.mesh" scale3D="3,5,109" info="sidearmR, outer beam"/>
+ <Model position="134,-10,169" roll="-15" mesh="cube.mesh" scale3D="6,4,55" info="sidearmR, lower beam front"/>
+ <Model position="131,-20,217" pitch="-20" roll="-15" yaw="5" mesh="cube.mesh" scale3D="6,12,3" info="sidearmR, lower beam middle"/>
+ <Model position="130,-29,233" roll="-15" mesh="cube.mesh" scale3D="6,3,15" info="sidearmR, lower beam back"/>
+
+ <Model position="145,21,71" mesh="cube.mesh" scale3D="10,10,1" info="sidearmR, HOOKBOX"/>
+ <Model position="145,21,29" mesh="cube.mesh" scale3D="10,10,1" info="sidearmR, HOOKBOX"/>
+ <Model position="145,32,50" mesh="cube.mesh" scale3D="10,1,20" info="sidearmR, HOOKBOX"/>
+ <Model position="145,10,50" mesh="cube.mesh" scale3D="10,1,20" info="sidearmR, HOOKBOX"/>
+ <Model position="156,21,50" mesh="cube.mesh" scale3D="1,10,20" info="sidearmR, HOOKBOX"/>
+ <Model position="134,21,50" mesh="cube.mesh" scale3D="1,10,20" info="sidearmR, HOOKBOX"/>
+
+
+ <Model position="141,15,-53" roll="-15" mesh="cube.mesh" scale3D="27,44,62" info="sidearmRfront"/>
+ <Model position="153,59,-30" roll="-15" mesh="cube.mesh" scale3D="4,2,38" info="sidearmRfront, top"/>
+ <Model position="153,61,-41" roll="-15" mesh="cube.mesh" scale3D="4,4,11" info="sidearmRfront, top"/>
+ <Model position="153,60,-65" roll="-15" mesh="cube.mesh" scale3D="4,3,4" info="sidearmRfront, top"/>
+ <Model position="153,59,-41" roll="-15" mesh="cube.mesh" scale3D="8,2,11" info="sidearmRfront, top"/>
+
+ <!--<Model position="145,21,50" mesh="cube.mesh" scale3D="10,10,20" info="sidearmRfront, HOOK"/>-->
+
+
+ <Model position="-109,47,87" mesh="cube.mesh" scale3D="29,8,26" info="sidearmL, upper connection"/>
+ <Model position="-99,-1,79" roll="15" mesh="cube.mesh" scale3D="40,4,9" info="sidearmL, lower connection"/>
+ <Model position="-151,47,115" roll="15" mesh="cube.mesh" scale3D="16,2,105" info="sidearmL, frontTop"/>
+ <Model position="-136,-7,115" roll="15" mesh="cube.mesh" scale3D="16,2,105" info="sidearmL, frontBottom"/>
+ <Model position="-127,26,115" roll="15" mesh="cube.mesh" scale3D="2,28,105" info="sidearmL, frontInner"/>
+ <Model position="-161,16,115" roll="15" mesh="cube.mesh" scale3D="2,28,105" info="sidearmL, frontOuter"/>
+ <Model position="-145,21,12" roll="15" mesh="cube.mesh" scale3D="16,28,2" info="sidearmL, front"/>
+ <Model position="-140,12,261" roll="15" mesh="cube.mesh" scale3D="22,41,43" info="sidearmL, back"/>
+ <Model position="-145,25,5" roll="15" mesh="cube.mesh" scale3D="10,18,5" info="sidearmL, front break"/>
+ <Model position="-133,-13,29" roll="15" mesh="cube.mesh" scale3D="12,6,17" info="sidearmL, bottom cylinder"/>
+ <Model position="-165,-4,31" roll="15" mesh="cube.mesh" scale3D="7,21,13" info="sidearmL, box"/>
+ <Model position="-153,59,96" roll="15" mesh="cube.mesh" scale3D="6,7,60" info="sidearmL, upper beam"/>
+ <Model position="-143,57,119" roll="15" mesh="cube.mesh" scale3D="3,4,85" info="sidearmL, upper inner beam"/>
+ <Model position="-142,53,212" pitch="21" yaw="5" roll="15" mesh="cube.mesh" scale3D="3,4,10" info="sidearmL, upper inner beam"/>
+ <Model position="-160,52,119" roll="15" mesh="cube.mesh" scale3D="3,4,85" info="sidearmL, upper outer beam"/>
+ <Model position="-159,48,212" pitch="21" yaw="5" roll="15" mesh="cube.mesh" scale3D="3,4,10" info="sidearmL, upper outer beam"/>
+ <Model position="-152,54,34" pitch="-46" yaw="-14" roll="15" mesh="cube.mesh" scale3D="6,7,10" info="sidearmL, upper beam front"/>
+ <Model position="-152,54,162" pitch="30" yaw="9" roll="15" mesh="cube.mesh" scale3D="6,7,12" info="sidearmL, upper beam back"/>
+ <Model position="-168,21,119" roll="15" mesh="cube.mesh" scale3D="3,5,109" info="sidearmL, outer beam"/>
+ <Model position="-134,-10,169" roll="15" mesh="cube.mesh" scale3D="6,4,55" info="sidearmL, lower beam front"/>
+ <Model position="-131,-20,217" pitch="-20" roll="15" yaw="-5" mesh="cube.mesh" scale3D="6,12,3" info="sidearmL, lower beam middle"/>
+ <Model position="-130,-29,233" roll="15" mesh="cube.mesh" scale3D="6,3,15" info="sidearmL, lower beam back"/>
+
+ <Model position="-145,21,71" mesh="cube.mesh" scale3D="10,10,1" info="sidearmL, HOOKBOX"/>
+ <Model position="-145,21,29" mesh="cube.mesh" scale3D="10,10,1" info="sidearmL, HOOKBOX"/>
+ <Model position="-145,32,50" mesh="cube.mesh" scale3D="10,1,20" info="sidearmL, HOOKBOX"/>
+ <Model position="-145,10,50" mesh="cube.mesh" scale3D="10,1,20" info="sidearmL, HOOKBOX"/>
+ <Model position="-156,21,50" mesh="cube.mesh" scale3D="1,10,20" info="sidearmL, HOOKBOX"/>
+ <Model position="-134,21,50" mesh="cube.mesh" scale3D="1,10,20" info="sidearmL, HOOKBOX"/>
+
+
+ <Model position="-141,15,-53" roll="15" mesh="cube.mesh" scale3D="27,44,62" info="sidearmLfront"/>
+ <Model position="-153,59,-30" roll="15" mesh="cube.mesh" scale3D="4,2,38" info="sidearmLfront, top"/>
+ <Model position="-153,61,-41" roll="15" mesh="cube.mesh" scale3D="4,4,11" info="sidearmLfront, top"/>
+ <Model position="-153,60,-65" roll="15" mesh="cube.mesh" scale3D="4,3,4" info="sidearmLfront, top"/>
+ <Model position="-153,59,-41" roll="15" mesh="cube.mesh" scale3D="8,2,11" info="sidearmLfront, top"/>
+
+ <!--<Model position="-145,21,50" mesh="cube.mesh" scale3D="10,10,20" info="sidearmLfront, HOOK"/>-->
+
+
+ <Model position="60,35,-310" mesh="cube.mesh" scale3D="13,28,60" info="body, bay1, Rwall"/>
+ <Model position="-60,35,-310" mesh="cube.mesh" scale3D="13,28,60" info="body, bay1, Lwall"/>
+ <Model position="0,56,-310" mesh="cube.mesh" scale3D="65,6,60" info="body, bay1, Twall"/>
+ <Model position="0,33,-260" mesh="cube.mesh" scale3D="65,28,5" info="body, bay1, Bwall"/>
+ <Model position="0,10,-310" mesh="cube.mesh" scale3D="65,5,60" info="body, bay1, BottomWall"/>
+
+ <Model position="0,35,-125" mesh="cube.mesh" scale3D="83,30,130" info="body, front"/>
+ <Model position="0,6,-307" mesh="cube.mesh" scale3D="19,3,43" info="body, frontbottom"/>
+ <Model position="0,5,-196" mesh="cube.mesh" scale3D="27,3,24" info="body, dock"/>
+ <Model position="0,7,-248" pitch="25" mesh="cube.mesh" scale3D="63,4,12" info="body, dockF"/>
+ <Model position="70,6,-120" roll="20" mesh="cube.mesh" scale3D="12,6,120" info="body, dockR"/>
+ <Model position="63,-2,-180" mesh="cube.mesh" scale3D="3,3,60" info="body, dockR"/>
+ <Model position="-70,6,-120" roll="-20" mesh="cube.mesh" scale3D="12,6,120" info="body, dockL"/>
+ <Model position="-63,-2,-180" mesh="cube.mesh" scale3D="3,3,60" info="body, dockL"/>
+ <Model position="87,32,-63" mesh="cube.mesh" scale3D="4,23,50" info="body, frontCR"/>
+ <Model position="-87,32,-63" mesh="cube.mesh" scale3D="4,23,50" info="body, frontCL"/>
+
+ <Model position="0,72,-213" mesh="cube.mesh" scale3D="37,8,60" info="body, Fbridge"/>
+ <Model position="0,72,-110" mesh="cube.mesh" scale3D="53,11,53" info="body, Cbridge"/>
+ <Model position="0,86,-110" mesh="cube.mesh" scale3D="40,4,40" info="body, Cbridge"/>
+ <Model position="0,70,-60" mesh="cube.mesh" scale3D="65,11,30" info="body, Bbridge"/>
+ <Model position="0,84,-45" mesh="cube.mesh" scale3D="33,11,26" info="body, Bbridge"/>
+ <Model position="0,79,-6" pitch="10" mesh="cube.mesh" scale3D="32,13,17" info="body, Bbridge"/>
+ <Model position="38,67,-45" roll="50" mesh="cube.mesh" scale3D="16,23,25" info="body, BbridgeR"/>
+ <Model position="35,63,-17" pitch="25" yaw="-20" roll="40" mesh="cube.mesh" scale3D="16,23,16" info="body, BbridgeR"/>
+ <Model position="-38,67,-45" roll="-50" mesh="cube.mesh" scale3D="16,23,25" info="body, BbridgeL"/>
+ <Model position="-35,63,-17" pitch="25" yaw="20" roll="-40" mesh="cube.mesh" scale3D="16,23,16" info="body, BbridgeL"/>
+
+ <Model position="0,69,80" mesh="cube.mesh" scale3D="8,4,80" info="body, Cbeam"/>
+ <Model position="-67,18,58" roll="-22" mesh="cube.mesh" scale3D="13,5,53" info="body, CF, L"/>
+ <Model position="-76,36,86" mesh="cube.mesh" scale3D="5,18,81" info="body, C, L"/>
+ <Model position="-91,46,86" mesh="cube.mesh" scale3D="11,6,20" info="body, C, L upper beam"/>
+ <Model position="-64,8,79" roll="10" mesh="cube.mesh" scale3D="8,3,8" info="body, C, L lower beam"/>
+ <Model position="-71,55,140" pitch="-4" roll="31" mesh="cube.mesh" scale3D="9,5,27" info="body, CB, TopL"/>
+ <Model position="-62,2,140" roll="24" mesh="cube.mesh" scale3D="10,24,32" info="body, CB, BottomL"/>
+ <Model position="67,18,58" roll="22" mesh="cube.mesh" scale3D="13,5,53" info="body, CF, R"/>
+ <Model position="76,36,86" mesh="cube.mesh" scale3D="5,18,81" info="body, C, R"/>
+ <Model position="91,46,86" mesh="cube.mesh" scale3D="11,6,20" info="body, C, R upper beam"/>
+ <Model position="64,8,79" roll="-10" mesh="cube.mesh" scale3D="8,3,8" info="body, C, R lower beam"/>
+ <Model position="71,55,140" pitch="-4" roll="-31" mesh="cube.mesh" scale3D="9,5,27" info="body, CB, TopR"/>
+ <Model position="62,2,140" roll="-24" mesh="cube.mesh" scale3D="10,24,32" info="body, CB, BottomR"/>
+ <Model position="0,60,12" mesh="cube.mesh" scale3D="81,5,11" info="body, CF, Top"/>
+ <Model position="0,55,40" pitch="15" mesh="cube.mesh" scale3D="81,5,20" info="body, CF, Top"/>
+ <Model position="0,50,85" pitch="1" mesh="cube.mesh" scale3D="81,5,29" info="body, C, Top"/>
+ <Model position="0,59,140" pitch="-4" mesh="cube.mesh" scale3D="68,5,27" info="body, CB, Top"/>
+
+
+
+ <Model position="0,-7,90" mesh="cube.mesh" scale3D="40,4,90" info="body, bay3, Twall"/>
+ <Model position="0,-15,-60" mesh="cube.mesh" scale3D="60,25,65" info="body, bay3, Fwall"/>
+ <Model position="47,-11,90" mesh="cube.mesh" scale3D="13,20,90" info="body, bay3, Rwall"/>
+ <Model position="-47,-11,90" mesh="cube.mesh" scale3D="13,20,90" info="body, bay3, Lwall"/>
+ <Model position="0,-29,149" mesh="cube.mesh" scale3D="10,2,11" info="body, bay3, platform"/>
+ <Model position="0,-20,227" mesh="cube.mesh" scale3D="60,20,65" info="body, bay3, Bwall"/>
+
+ <Model position="0,81,238" mesh="cube.mesh" scale3D="26,5,59" info="body, BF, Top"/>
+ <Model position="0,67,234" mesh="cube.mesh" scale3D="54,5,67" info="body, BF, Top"/>
+ <Model position="0,77,175" pitch="-36" mesh="cube.mesh" scale3D="26,5,9" info="body, BF, Top"/>
+ <Model position="0,62,161" pitch="-30" mesh="cube.mesh" scale3D="56,5,10" info="body, BF, Top"/>
+ <Model position="0,69,162" mesh="cube.mesh" scale3D="16,7,10" info="body, BF, Top"/>
+ <Model position="31,76,238" roll="-46" mesh="cube.mesh" scale3D="10,3,59" info="body, BF, TopR"/>
+ <Model position="64,64,234" roll="-24" mesh="cube.mesh" scale3D="13,3,67" info="body, BF, TopR"/>
+ <Model position="-31,76,238" roll="46" mesh="cube.mesh" scale3D="10,3,59" info="body, BF, TopL"/>
+ <Model position="-64,64,234" roll="24" mesh="cube.mesh" scale3D="13,3,67" info="body, BF, TopL"/>
+
+ <Model position="77,40,244" roll="16" mesh="cube.mesh" scale3D="7,20,79" info="body, BF, R"/>
+ <Model position="95,9,234" roll="2" mesh="cube.mesh" scale3D="18,16,59" info="body, BF, R"/>
+ <Model position="74,1,255" roll="-20" mesh="cube.mesh" scale3D="18,19,82" info="body, BF, BottomR"/>
+ <Model position="66,-21,255" roll="9" mesh="cube.mesh" scale3D="17,5,82" info="body, BF, BottomR"/>
+ <Model position="-77,40,244" roll="-16" mesh="cube.mesh" scale3D="7,20,79" info="body, BF, L"/>
+ <Model position="-95,9,234" roll="-2" mesh="cube.mesh" scale3D="18,16,59" info="body, BF, L"/>
+ <Model position="-74,1,255" roll="20" mesh="cube.mesh" scale3D="18,19,82" info="body, BF, BottomL"/>
+ <Model position="-66,-21,255" roll="-9" mesh="cube.mesh" scale3D="17,5,82" info="body, BF, BottomL"/>
+
+ <Model position="0,106,381" mesh="cube.mesh" scale3D="36,5,71" info="body, BTop"/>
+ <Model position="0,93,299" pitch="-49" mesh="cube.mesh" scale3D="34,5,20" info="body, BTop"/>
+ <Model position="41,101,381" roll="-42" mesh="cube.mesh" scale3D="10,4,71" info="body, BTopR"/>
+ <Model position="-41,101,381" roll="42" mesh="cube.mesh" scale3D="10,4,71" info="body, BTopL"/>
+
+ <Model position="78,45,332" pitch="-10" roll="-10" yaw="20" mesh="cube.mesh" scale3D="10,20,30" info="body, back, R"/>
+ <Model position="68,77,332" pitch="-10" roll="35" yaw="20" mesh="cube.mesh" scale3D="10,20,30" info="body, back, TR"/>
+ <Model position="50,70,290" pitch="-10" roll="35" yaw="43" mesh="cube.mesh" scale3D="5,20,20" info="body, back, TR"/>
+ <Model position="37,95,307" pitch="-10" roll="30" yaw="43" mesh="cube.mesh" scale3D="5,8,8" info="body, back, TR"/>
+ <Model position="52,92,332" pitch="-10" yaw="30" mesh="cube.mesh" scale3D="10,5,30" info="body, back, TR"/>
+ <Model position="88,4,322" mesh="cube.mesh" scale3D="10,24,30" info="body, back, RB"/>
+ <Model position="54,-24,314" roll="35" pitch="-10" mesh="cube.mesh" scale3D="8,5,23" info="body, back, RB"/>
+ <Model position="68,-19,346" pitch="-17" roll="8" mesh="cube.mesh" scale3D="16,4,11" info="body, back, bottomR"/>
+ <Model position="-78,45,332" pitch="-10" roll="10" yaw="-20" mesh="cube.mesh" scale3D="10,20,30" info="body, back, L"/>
+ <Model position="-68,77,332" pitch="-10" roll="-35" yaw="-20" mesh="cube.mesh" scale3D="10,20,30" info="body, back, TL"/>
+ <Model position="-50,70,290" pitch="-10" roll="-35" yaw="-43" mesh="cube.mesh" scale3D="5,20,20" info="body, back, TL"/>
+ <Model position="-37,95,307" pitch="-10" roll="-30" yaw="-43" mesh="cube.mesh" scale3D="5,8,8" info="body, back, TL"/>
+ <Model position="-52,92,332" pitch="-10" yaw="-30" mesh="cube.mesh" scale3D="10,5,30" info="body, back, TL"/>
+ <Model position="-88,4,322" mesh="cube.mesh" scale3D="10,24,30" info="body, back, LB"/>
+ <Model position="-54,-24,314" roll="-35" pitch="-10" mesh="cube.mesh" scale3D="8,5,23" info="body, back, LB"/>
+ <Model position="-68,-19,346" pitch="-17" roll="-8" mesh="cube.mesh" scale3D="16,4,11" info="body, back, bottomL"/>
+ <Model position="0,-30,314" pitch="-8" mesh="cube.mesh" scale3D="52,4,23" info="body, back, bottom"/>
+ <Model position="0,-22,346" pitch="-24" mesh="cube.mesh" scale3D="52,4,11" info="body, back, bottom"/>
+
+ <Model position="48,-29,400" mesh="cube.mesh" scale3D="5,8,58" info="body, BBottomRBeam"/>
+ <Model position="48,-29,451" mesh="cube.mesh" scale3D="10,13,14" info="body, BBottomRBeam"/>
+ <Model position="-48,-29,400" mesh="cube.mesh" scale3D="5,8,58" info="body, BBottomLBeam"/>
+ <Model position="-48,-31,451" mesh="cube.mesh" scale3D="10,13,14" info="body, BBottomLBeam"/>
+
+ <Model position="103,60,420" mesh="cube.mesh" scale3D="18,9,64" info="body, back, Rextrusion"/>
+ <Model position="-103,60,420" mesh="cube.mesh" scale3D="18,9,64" info="body, back, Lextrusion"/>
+ <Model position="-85,7,417" mesh="cube.mesh" scale3D="10,21,67" info="body, back, LB"/>
+ <Model position="85,7,417" mesh="cube.mesh" scale3D="10,21,67" info="body, back, RB"/>
+ <Model position="0,-8,473" mesh="cube.mesh" scale3D="90,6,10" info="body, back, Bback"/>
+ <Model position="0,-13,474" pitch="-23" mesh="cube.mesh" scale3D="76,5,8" info="body, back, Bback"/>
+ <Model position="-79,-13,405" roll="-12" mesh="cube.mesh" scale3D="15,5,73" info="body, back, BL"/>
+ <Model position="79,-13,405" roll="12" mesh="cube.mesh" scale3D="15,5,73" info="body, back, BR"/>
+ <Model position="0,-15,410" mesh="cube.mesh" scale3D="66,6,58" info="body, back, B"/>
+
+ <Model position="78,32,440" roll="-18" mesh="cube.mesh" scale3D="18,35,85" info="body, bay2, Rwall"/>
+ <Model position="75,71,440" roll="35" mesh="cube.mesh" scale3D="18,27,85" info="body, bay2, Rwall"/>
+ <Model position="-78,32,440" roll="18" mesh="cube.mesh" scale3D="18,35,85" info="body, bay2, Lwall"/>
+ <Model position="-75,71,440" roll="-35" mesh="cube.mesh" scale3D="18,27,85" info="body, bay2, Lwall"/>
+ <Model position="0,75,435" mesh="cube.mesh" scale3D="72,28,90" info="body, bay2, Twall"/>
+ <Model position="0,35,423" mesh="cube.mesh" scale3D="85,35,5" info="body, bay2, Fwall"/>
+ <Model position="0,-3,465" mesh="cube.mesh" scale3D="84,5,60" info="body, bay2, BottomWall"/>
+ <Model position="0,78,526" mesh="cube.mesh" scale3D="43,17,5" info="body, bay2, Twall"/>
+
+
+ <Model position="0,7,80" mesh="cube.mesh" scale3D="23,1,34" info="HOOKBOX at 0,18,80, bottom"/>
+ <Model position="0,29,80" mesh="cube.mesh" scale3D="23,1,34" info="HOOKBOX, top"/>
+ <Model position="-22,18,80" mesh="cube.mesh" scale3D="1,12,34" info="HOOKBOX, left long"/>
+ <Model position="0,18,80" mesh="cube.mesh" scale3D="1,12,34" info="HOOKBOX, center long"/>
+ <Model position="22,18,80" mesh="cube.mesh" scale3D="1,12,34" info="HOOKBOX, right long"/>
+ <Model position="0,18,113" mesh="cube.mesh" scale3D="23,12,1" info="HOOKBOX, wide"/>
+ <Model position="0,18,91" mesh="cube.mesh" scale3D="23,12,1" info="HOOKBOX, wide"/>
+ <Model position="0,18,69" mesh="cube.mesh" scale3D="23,12,1" info="HOOKBOX, wide"/>
+ <Model position="0,18,47" mesh="cube.mesh" scale3D="23,12,1" info="HOOKBOX, wide"/>
+
+ <Model position="-11,18,102" mesh="cube.mesh" scale3D="10,10,10" info="HOOK, frontL"/>
+ <Model position="11,18,102" mesh="cube.mesh" scale3D="10,10,10" info="HOOK, frontR"/>
+ <Model position="-11,18,80" mesh="cube.mesh" scale3D="10,10,10" info="HOOK, partL"/>
+ <Model position="11,18,80" mesh="cube.mesh" scale3D="10,10,10" info="HOOK, partR"/>
+ <Model position="-11,18,58" mesh="cube.mesh" scale3D="10,10,10" info="HOOK, sidearmL"/>
+ <Model position="11,18,58" mesh="cube.mesh" scale3D="10,10,10" info="HOOK, sidearmR"/>
+ </attached>
+ <collisionShapes>
+ </collisionShapes>
+ </StaticEntity>
+
+
+
+<!-- 9 Pawns, each being a part of HeavyCruiser.
+ The first Pawn, being the ships main body, is in comments, allowing the playable SpaceShip to be spawned there instead.
+ All Pawns can easily be included into a level using the lua file "HeavyCruiserParts" -->
+
+ <Pawn team=1 health=1000 initialhealth=1000 maxhealth=1000 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=10000 name=HeavyCruiser_body radarname = "HeavyCruiser" >
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_body.mesh" scale="40" />
+
+ <BlinkingBillboard position="75,30,-416" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.05 frequency=0.3 phase=240 quadratic=1 />
+ <BlinkingBillboard position="-75,30,-416" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.05 frequency=0.3 phase=240 quadratic=1 />
+ <BlinkingBillboard position="74,30,-402" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.1 frequency=0.3 phase=120 quadratic=1 />
+ <BlinkingBillboard position="-74,30,-402" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.1 frequency=0.3 phase=120 quadratic=1 />
+ <BlinkingBillboard position="73,30,-388" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.15 frequency=0.3 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-73,30,-388" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.15 frequency=0.3 phase=0 quadratic=1 />
+
+ <BlinkingBillboard position="67,-5,-240" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-67,-5,-240" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="72,51,-380" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="-72,51,-380" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+
+ <BlinkingBillboard position="95,-15,483" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="-95,-15,483" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="74,103,524" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-74,103,524" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="60,35,-310" halfExtents="13,28,60" info="body, bay1, Rwall"/>
+ <BoxCollisionShape position="-60,35,-310" halfExtents="13,28,60" info="body, bay1, Lwall"/>
+ <BoxCollisionShape position="0,56,-310" halfExtents="65,6,60" info="body, bay1, Twall"/>
+ <BoxCollisionShape position="0,33,-260" halfExtents="65,28,5" info="body, bay1, Bwall"/>
+ <BoxCollisionShape position="0,10,-310" halfExtents="65,5,60" info="body, bay1, BottomWall"/>
+
+ <BoxCollisionShape position="0,35,-125" halfExtents="83,30,130" info="body, front"/>
+ <BoxCollisionShape position="0,6,-307" halfExtents="19,3,43" info="body, frontbottom"/>
+ <BoxCollisionShape position="0,5,-196" halfExtents="27,3,24" info="body, dock"/>
+ <BoxCollisionShape position="0,7,-248" pitch="25" halfExtents="63,4,12" info="body, dockF"/>
+ <BoxCollisionShape position="70,6,-120" roll="20" halfExtents="12,6,120" info="body, dockR"/>
+ <BoxCollisionShape position="63,-2,-180" halfExtents="3,3,60" info="body, dockR"/>
+ <BoxCollisionShape position="-70,6,-120" roll="-20" halfExtents="12,6,120" info="body, dockL"/>
+ <BoxCollisionShape position="-63,-2,-180" halfExtents="3,3,60" info="body, dockL"/>
+ <BoxCollisionShape position="87,32,-63" halfExtents="4,23,50" info="body, frontCR"/>
+ <BoxCollisionShape position="-87,32,-63" halfExtents="4,23,50" info="body, frontCL"/>
+
+ <BoxCollisionShape position="0,72,-213" halfExtents="37,8,60" info="body, Fbridge"/>
+ <BoxCollisionShape position="0,72,-110" halfExtents="53,11,53" info="body, Cbridge"/>
+ <BoxCollisionShape position="0,86,-110" halfExtents="40,4,40" info="body, Cbridge"/>
+ <BoxCollisionShape position="0,70,-60" halfExtents="65,11,30" info="body, Bbridge"/>
+ <BoxCollisionShape position="0,84,-45" halfExtents="33,11,26" info="body, Bbridge"/>
+ <BoxCollisionShape position="0,79,-6" pitch="10" halfExtents="32,13,17" info="body, Bbridge"/>
+ <BoxCollisionShape position="38,67,-45" roll="50" halfExtents="16,23,25" info="body, BbridgeR"/>
+ <BoxCollisionShape position="35,63,-17" pitch="25" yaw="-20" roll="40" halfExtents="16,23,16" info="body, BbridgeR"/>
+ <BoxCollisionShape position="-38,67,-45" roll="-50" halfExtents="16,23,25" info="body, BbridgeL"/>
+ <BoxCollisionShape position="-35,63,-17" pitch="25" yaw="20" roll="-40" halfExtents="16,23,16" info="body, BbridgeL"/>
+
+ <BoxCollisionShape position="0,69,80" halfExtents="8,4,80" info="body, Cbeam"/>
+ <BoxCollisionShape position="-67,18,58" roll="-22" halfExtents="13,5,53" info="body, CF, L"/>
+ <BoxCollisionShape position="-76,36,86" halfExtents="5,18,81" info="body, C, L"/>
+ <BoxCollisionShape position="-91,46,86" halfExtents="11,6,20" info="body, C, L upper beam"/>
+ <BoxCollisionShape position="-64,8,79" roll="10" halfExtents="8,3,8" info="body, C, L lower beam"/>
+ <BoxCollisionShape position="-71,55,140" pitch="-4" roll="31" halfExtents="9,5,27" info="body, CB, TopL"/>
+ <BoxCollisionShape position="-62,2,140" roll="24" halfExtents="10,24,32" info="body, CB, BottomL"/>
+ <BoxCollisionShape position="67,18,58" roll="22" halfExtents="13,5,53" info="body, CF, R"/>
+ <BoxCollisionShape position="76,36,86" halfExtents="5,18,81" info="body, C, R"/>
+ <BoxCollisionShape position="91,46,86" halfExtents="11,6,20" info="body, C, R upper beam"/>
+ <BoxCollisionShape position="64,8,79" roll="-10" halfExtents="8,3,8" info="body, C, R lower beam"/>
+ <BoxCollisionShape position="71,55,140" pitch="-4" roll="-31" halfExtents="9,5,27" info="body, CB, TopR"/>
+ <BoxCollisionShape position="62,2,140" roll="-24" halfExtents="10,24,32" info="body, CB, BottomR"/>
+ <BoxCollisionShape position="0,60,12" halfExtents="81,5,11" info="body, CF, Top"/>
+ <BoxCollisionShape position="0,55,40" pitch="15" halfExtents="81,5,20" info="body, CF, Top"/>
+ <BoxCollisionShape position="0,50,85" pitch="1" halfExtents="81,5,29" info="body, C, Top"/>
+ <BoxCollisionShape position="0,59,140" pitch="-4" halfExtents="68,5,27" info="body, CB, Top"/>
+
+ <BoxCollisionShape position="0,-7,90" halfExtents="40,4,90" info="body, bay3, Twall"/>
+ <BoxCollisionShape position="0,-15,-60" halfExtents="60,25,65" info="body, bay3, Fwall"/>
+ <BoxCollisionShape position="47,-11,90" halfExtents="13,20,90" info="body, bay3, Rwall"/>
+ <BoxCollisionShape position="-47,-11,90" halfExtents="13,20,90" info="body, bay3, Lwall"/>
+ <BoxCollisionShape position="0,-29,149" halfExtents="10,2,11" info="body, bay3, platform"/>
+ <BoxCollisionShape position="0,-20,227" halfExtents="60,20,65" info="body, bay3, Bwall"/>
+
+ <BoxCollisionShape position="0,81,238" halfExtents="26,5,59" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,67,234" halfExtents="54,5,67" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,77,175" pitch="-36" halfExtents="26,5,9" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,62,161" pitch="-30" halfExtents="56,5,10" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,69,162" halfExtents="16,7,10" info="body, BF, Top"/>
+ <BoxCollisionShape position="31,76,238" roll="-46" halfExtents="10,3,59" info="body, BF, TopR"/>
+ <BoxCollisionShape position="64,64,234" roll="-24" halfExtents="13,3,67" info="body, BF, TopR"/>
+ <BoxCollisionShape position="-31,76,238" roll="46" halfExtents="10,3,59" info="body, BF, TopL"/>
+ <BoxCollisionShape position="-64,64,234" roll="24" halfExtents="13,3,67" info="body, BF, TopL"/>
+
+ <BoxCollisionShape position="77,40,244" roll="16" halfExtents="7,20,79" info="body, BF, R"/>
+ <BoxCollisionShape position="95,9,234" roll="2" halfExtents="18,16,59" info="body, BF, R"/>
+ <BoxCollisionShape position="74,1,255" roll="-20" halfExtents="18,19,82" info="body, BF, BottomR"/>
+ <BoxCollisionShape position="66,-21,255" roll="9" halfExtents="17,5,82" info="body, BF, BottomR"/>
+ <BoxCollisionShape position="-77,40,244" roll="-16" halfExtents="7,20,79" info="body, BF, L"/>
+ <BoxCollisionShape position="-95,9,234" roll="-2" halfExtents="18,16,59" info="body, BF, L"/>
+ <BoxCollisionShape position="-74,1,255" roll="20" halfExtents="18,19,82" info="body, BF, BottomL"/>
+ <BoxCollisionShape position="-66,-21,255" roll="-9" halfExtents="17,5,82" info="body, BF, BottomL"/>
+
+ <BoxCollisionShape position="0,106,381" halfExtents="36,5,71" info="body, BTop"/>
+ <BoxCollisionShape position="0,93,299" pitch="-49" halfExtents="34,5,20" info="body, BTop"/>
+ <BoxCollisionShape position="41,101,381" roll="-42" halfExtents="10,4,71" info="body, BTopR"/>
+ <BoxCollisionShape position="-41,101,381" roll="42" halfExtents="10,4,71" info="body, BTopL"/>
+
+ <BoxCollisionShape position="78,45,332" pitch="-10" roll="-10" yaw="20" halfExtents="10,20,30" info="body, back, R"/>
+ <BoxCollisionShape position="68,77,332" pitch="-10" roll="35" yaw="20" halfExtents="10,20,30" info="body, back, TR"/>
+ <BoxCollisionShape position="50,70,290" pitch="-10" roll="35" yaw="43" halfExtents="5,20,20" info="body, back, TR"/>
+ <BoxCollisionShape position="37,95,307" pitch="-10" roll="30" yaw="43" halfExtents="5,8,8" info="body, back, TR"/>
+ <BoxCollisionShape position="52,92,332" pitch="-10" yaw="30" halfExtents="10,5,30" info="body, back, TR"/>
+ <BoxCollisionShape position="88,4,322" halfExtents="10,24,30" info="body, back, RB"/>
+ <BoxCollisionShape position="54,-24,314" roll="35" pitch="-10" halfExtents="8,5,23" info="body, back, RB"/>
+ <BoxCollisionShape position="68,-19,346" pitch="-17" roll="8" halfExtents="16,4,11" info="body, back, bottomR"/>
+ <BoxCollisionShape position="-78,45,332" pitch="-10" roll="10" yaw="-20" halfExtents="10,20,30" info="body, back, L"/>
+ <BoxCollisionShape position="-68,77,332" pitch="-10" roll="-35" yaw="-20" halfExtents="10,20,30" info="body, back, TL"/>
+ <BoxCollisionShape position="-50,70,290" pitch="-10" roll="-35" yaw="-43" halfExtents="5,20,20" info="body, back, TL"/>
+ <BoxCollisionShape position="-37,95,307" pitch="-10" roll="-30" yaw="-43" halfExtents="5,8,8" info="body, back, TL"/>
+ <BoxCollisionShape position="-52,92,332" pitch="-10" yaw="-30" halfExtents="10,5,30" info="body, back, TL"/>
+ <BoxCollisionShape position="-88,4,322" halfExtents="10,24,30" info="body, back, LB"/>
+ <BoxCollisionShape position="-54,-24,314" roll="-35" pitch="-10" halfExtents="8,5,23" info="body, back, LB"/>
+ <BoxCollisionShape position="-68,-19,346" pitch="-17" roll="-8" halfExtents="16,4,11" info="body, back, bottomL"/>
+ <BoxCollisionShape position="0,-30,314" pitch="-8" halfExtents="52,4,23" info="body, back, bottom"/>
+ <BoxCollisionShape position="0,-22,346" pitch="-24" halfExtents="52,4,11" info="body, back, bottom"/>
+
+ <BoxCollisionShape position="48,-29,400" halfExtents="5,8,58" info="body, BBottomRBeam"/>
+ <BoxCollisionShape position="48,-29,451" halfExtents="10,13,14" info="body, BBottomRBeam"/>
+ <BoxCollisionShape position="-48,-29,400" halfExtents="5,8,58" info="body, BBottomLBeam"/>
+ <BoxCollisionShape position="-48,-31,451" halfExtents="10,13,14" info="body, BBottomLBeam"/>
+
+ <BoxCollisionShape position="103,60,420" halfExtents="18,9,64" info="body, back, Rextrusion"/>
+ <BoxCollisionShape position="-103,60,420" halfExtents="18,9,64" info="body, back, Lextrusion"/>
+ <BoxCollisionShape position="-85,7,417" halfExtents="10,21,67" info="body, back, LB"/>
+ <BoxCollisionShape position="85,7,417" halfExtents="10,21,67" info="body, back, RB"/>
+ <BoxCollisionShape position="0,-8,473" halfExtents="90,6,10" info="body, back, Bback"/>
+ <BoxCollisionShape position="0,-13,474" pitch="-23" halfExtents="76,5,8" info="body, back, Bback"/>
+ <BoxCollisionShape position="-79,-13,405" roll="-12" halfExtents="15,5,73" info="body, back, BL"/>
+ <BoxCollisionShape position="79,-13,405" roll="12" halfExtents="15,5,73" info="body, back, BR"/>
+ <BoxCollisionShape position="0,-15,410" halfExtents="66,6,58" info="body, back, B"/>
+
+ <BoxCollisionShape position="78,32,440" roll="-18" halfExtents="18,35,85" info="body, bay2, Rwall"/>
+ <BoxCollisionShape position="75,71,440" roll="35" halfExtents="18,27,85" info="body, bay2, Rwall"/>
+ <BoxCollisionShape position="-78,32,440" roll="18" halfExtents="18,35,85" info="body, bay2, Lwall"/>
+ <BoxCollisionShape position="-75,71,440" roll="-35" halfExtents="18,27,85" info="body, bay2, Lwall"/>
+ <BoxCollisionShape position="0,75,435" halfExtents="72,28,90" info="body, bay2, Twall"/>
+ <BoxCollisionShape position="0,35,423" halfExtents="85,35,5" info="body, bay2, Fwall"/>
+ <BoxCollisionShape position="0,-3,465" halfExtents="84,5,60" info="body, bay2, BottomWall"/>
+ <BoxCollisionShape position="0,78,526" halfExtents="43,17,5" info="body, bay2, Twall"/>
+
+
+ <BoxCollisionShape position="0,7,80" halfExtents="23,1,34" info="HOOKBOX at 0,18,80, bottom"/>
+ <BoxCollisionShape position="0,29,80" halfExtents="23,1,34" info="HOOKBOX, top"/>
+ <BoxCollisionShape position="-22,18,80" halfExtents="1,12,34" info="HOOKBOX, left long"/>
+ <BoxCollisionShape position="0,18,80" halfExtents="1,12,34" info="HOOKBOX, center long"/>
+ <BoxCollisionShape position="22,18,80" halfExtents="1,12,34" info="HOOKBOX, right long"/>
+ <BoxCollisionShape position="0,18,113" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,91" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,69" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,47" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+
+ <BoxCollisionShape position="0,107,80" halfExtents="23,1,34" info="HOOKBOX at 0,18,80, bottom"/>
+ <BoxCollisionShape position="0,129,80" halfExtents="23,1,34" info="HOOKBOX, top"/>
+ <BoxCollisionShape position="-22,118,80" halfExtents="1,12,34" info="HOOKBOX, left long"/>
+ <BoxCollisionShape position="0,118,80" halfExtents="1,12,34" info="HOOKBOX, center long"/>
+ <BoxCollisionShape position="22,118,80" halfExtents="1,12,34" info="HOOKBOX, right long"/>
+ <BoxCollisionShape position="0,118,113" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,118,91" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,118,69" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,118,47" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=300 initialhealth=300 maxhealth=300 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_sidearmL radarname = "HIDDEN" >
+
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_sidearmL.mesh" scale="40" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-11,18,102" halfExtents="10,10,10" info="HOOK, sidearmL"/>
+
+ <!-- <BoxCollisionShape position="-109,47,87" halfExtents="29,8,26" info="sidearmL, upper connection"/>
+ <BoxCollisionShape position="-99,-1,79" roll="15" halfExtents="40,4,9" info="sidearmL, lower connection"/>-->
+ <BoxCollisionShape position="-151,47,115" roll="15" halfExtents="16,2,105" info="sidearmL, frontTop"/>
+ <BoxCollisionShape position="-136,-7,115" roll="15" halfExtents="16,2,105" info="sidearmL, frontBottom"/>
+ <BoxCollisionShape position="-127,26,115" roll="15" halfExtents="2,28,105" info="sidearmL, frontInner"/>
+ <BoxCollisionShape position="-161,16,115" roll="15" halfExtents="2,28,105" info="sidearmL, frontOuter"/>
+ <BoxCollisionShape position="-145,21,12" roll="15" halfExtents="16,28,2" info="sidearmL, front"/>
+ <BoxCollisionShape position="-140,12,261" roll="15" halfExtents="22,41,43" info="sidearmL, back"/>
+ <!--<BoxCollisionShape position="-145,25,5" roll="15" halfExtents="10,18,5" info="sidearmL, front break"/>-->
+ <BoxCollisionShape position="-133,-13,29" roll="15" halfExtents="12,6,17" info="sidearmL, bottom cylinder"/>
+ <BoxCollisionShape position="-165,-4,31" roll="15" halfExtents="7,21,13" info="sidearmL, box"/>
+ <BoxCollisionShape position="-153,59,96" roll="15" halfExtents="6,7,60" info="sidearmL, upper beam"/>
+ <BoxCollisionShape position="-143,57,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper inner beam"/>
+ <BoxCollisionShape position="-142,53,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper inner beam"/>
+ <BoxCollisionShape position="-160,52,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper outer beam"/>
+ <BoxCollisionShape position="-159,48,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper outer beam"/>
+ <BoxCollisionShape position="-152,54,34" pitch="-46" yaw="-14" roll="15" halfExtents="6,7,10" info="sidearmL, upper beam front"/>
+ <BoxCollisionShape position="-152,54,162" pitch="30" yaw="9" roll="15" halfExtents="6,7,12" info="sidearmL, upper beam back"/>
+ <BoxCollisionShape position="-168,21,119" roll="15" halfExtents="3,5,109" info="sidearmL, outer beam"/>
+ <BoxCollisionShape position="-134,-10,169" roll="15" halfExtents="6,4,55" info="sidearmL, lower beam front"/>
+ <BoxCollisionShape position="-131,-20,217" pitch="-20" roll="15" yaw="-5" halfExtents="6,12,3" info="sidearmL, lower beam middle"/>
+ <BoxCollisionShape position="-130,-29,233" roll="15" halfExtents="6,3,15" info="sidearmL, lower beam back"/>
+
+ <BoxCollisionShape position="-145,21,71" halfExtents="10,10,1" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-145,21,29" halfExtents="10,10,1" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-145,32,50" halfExtents="10,1,20" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-145,10,50" halfExtents="10,1,20" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-156,21,50" halfExtents="1,10,20" info="sidearmL, HOOKBOX"/>
+ <BoxCollisionShape position="-134,21,50" halfExtents="1,10,20" info="sidearmL, HOOKBOX"/>
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_sidearmLfront radarname = "HIDDEN" >
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_sidearmLfront.mesh" scale="40" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-145,21,50" halfExtents="10,10,20" info="sidearmLfront, HOOK"/>
+ <BoxCollisionShape position="-141,15,-53" roll="15" halfExtents="27,44,62" info="sidearmLfront"/>
+ <BoxCollisionShape position="-153,59,-30" roll="15" halfExtents="4,2,38" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,61,-41" roll="15" halfExtents="4,4,11" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,60,-65" roll="15" halfExtents="4,3,4" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,59,-41" roll="15" halfExtents="8,2,11" info="sidearmLfront, top"/>
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=300 initialhealth=300 maxhealth=300 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_sidearmR radarname = "HIDDEN" >
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_sidearmR.mesh" scale="40" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="11,18,102" halfExtents="10,10,10" info="HOOK, sidearmR"/>
+
+ <!--<BoxCollisionShape position="109,47,87" halfExtents="29,8,26" info="sidearmR, upper connection"/>
+ <BoxCollisionShape position="99,-1,79" roll="-15" halfExtents="40,4,9" info="sidearmR, lower connection"/>-->
+ <BoxCollisionShape position="151,47,115" roll="-15" halfExtents="16,2,105" info="sidearmR, frontTop"/>
+ <BoxCollisionShape position="136,-7,115" roll="-15" halfExtents="16,2,105" info="sidearmR, frontBottom"/>
+ <BoxCollisionShape position="127,26,115" roll="-15" halfExtents="2,28,105" info="sidearmR, frontInner"/>
+ <BoxCollisionShape position="161,16,115" roll="-15" halfExtents="2,28,105" info="sidearmR, frontOuter"/>
+ <BoxCollisionShape position="145,21,12" roll="-15" halfExtents="16,28,2" info="sidearmR, front"/>
+ <BoxCollisionShape position="140,12,261" roll="-15" halfExtents="22,41,43" info="sidearmR, back"/>
+ <!--<BoxCollisionShape position="145,25,5" roll="-15" halfExtents="10,18,5" info="sidearmR, front break"/>-->
+ <BoxCollisionShape position="133,-13,29" roll="-15" halfExtents="12,6,17" info="sidearmR, bottom cylinder"/>
+ <BoxCollisionShape position="165,-4,31" roll="-15" halfExtents="7,21,13" info="sidearmR, box"/>
+ <BoxCollisionShape position="153,59,96" roll="-15" halfExtents="6,7,60" info="sidearmR, upper beam"/>
+ <BoxCollisionShape position="143,57,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper inner beam"/>
+ <BoxCollisionShape position="142,53,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper inner beam"/>
+ <BoxCollisionShape position="160,52,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper outer beam"/>
+ <BoxCollisionShape position="159,48,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper outer beam"/>
+ <BoxCollisionShape position="152,54,34" pitch="-46" yaw="14" roll="-15" halfExtents="6,7,10" info="sidearmR, upper beam front"/>
+ <BoxCollisionShape position="152,54,162" pitch="30" yaw="-9" roll="-15" halfExtents="6,7,12" info="sidearmR, upper beam back"/>
+ <BoxCollisionShape position="168,21,119" roll="-15" halfExtents="3,5,109" info="sidearmR, outer beam"/>
+ <BoxCollisionShape position="134,-10,169" roll="-15" halfExtents="6,4,55" info="sidearmR, lower beam front"/>
+ <BoxCollisionShape position="131,-20,217" pitch="-20" roll="-15" yaw="5" halfExtents="6,12,3" info="sidearmR, lower beam middle"/>
+ <BoxCollisionShape position="130,-29,233" roll="-15" halfExtents="6,3,15" info="sidearmR, lower beam back"/>
+
+ <BoxCollisionShape position="145,21,71" halfExtents="10,10,1" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="145,21,29" halfExtents="10,10,1" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="145,32,50" halfExtents="10,1,20" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="145,10,50" halfExtents="10,1,20" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="156,21,50" halfExtents="1,10,20" info="sidearmR, HOOKBOX"/>
+ <BoxCollisionShape position="134,21,50" halfExtents="1,10,20" info="sidearmR, HOOKBOX"/>
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=sidearmRfront radarname = "HIDDEN" >
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_sidearmRfront.mesh" scale="40" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="145,21,50" halfExtents="10,10,20" info="sidearmRfront, HOOK"/>
+ <BoxCollisionShape position="141,15,-53" roll="-15" halfExtents="27,44,62" info="sidearmRfront"/>
+ <BoxCollisionShape position="153,59,-30" roll="-15" halfExtents="4,2,38" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,61,-41" roll="-15" halfExtents="4,4,11" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,60,-65" roll="-15" halfExtents="4,3,4" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,59,-41" roll="-15" halfExtents="8,2,11" info="sidearmRfront, top"/>
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_frontL radarname = "HIDDEN" >
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_frontL.mesh" scale="40" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-11,18,58" halfExtents="10,10,10" info="HOOK, frontL"/>
+ <BoxCollisionShape position="-80,33,-320" halfExtents="7,11,54" info="frontL"/>
+ <BoxCollisionShape position="-79,31,-399" halfExtents="3,6,26" info="frontL"/>
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_frontR radarname = "HIDDEN" >
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_frontR.mesh" scale="40" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="11,18,58" halfExtents="10,10,10" info="HOOK, frontR"/>
+ <BoxCollisionShape position="80,33,-320" halfExtents="7,11,54" info="frontR"/>
+ <BoxCollisionShape position="79,31,-399" halfExtents="3,6,26" info="frontR"/>
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_partL radarname = "HIDDEN" >
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_partL.mesh" scale="40" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-11,18,80" halfExtents="10,10,10" info="HOOK, partL"/>
+ <BoxCollisionShape position="-94,33,-179" halfExtents="11,13,45" info="partL"/>
+ <BoxCollisionShape position="-96,33,-230" halfExtents="13,17,22" info="partL"/>
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=100 initialhealth=100 maxhealth=100 position="0,300,-2000" yaw="180" direction="0,0,0" collisionType=dynamic mass=1000 name=HeavyCruiser_partR radarname = "HIDDEN" >
+ <attached>
+ <Model position="0,0,0" direction="-1,0,0" mesh="HeavyCruiser_partR.mesh" scale="40" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="11,18,80" halfExtents="10,10,10" info="HOOK, partR"/>
+ <BoxCollisionShape position="94,33,-179" halfExtents="11,13,45" info="partR"/>
+ <BoxCollisionShape position="96,33,-230" halfExtents="13,17,22" info="partR"/>
+ </collisionShapes>
+ </Pawn>
+
+
+
+ <Light type=directional position="0,0,0" direction="0.253, -0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
+
+ <SpawnPoint team=0 position="0,0,0" lookat="0,0,-100" spawnclass=SpaceShip pawndesign=HeavyCruiserBody />
+
+ <?lua
+ --[[
+ With this lua script, the sub-parts of HeavyCruiser can easily be inserted into a level.
+ Available functions are:
+ To place all subparts:
+ placeAllSubParts(team, posX, posY, posZ, dirX, dirY, dirZ)
+ To place individual parts:
+ placeFrontL(...) Use the same arguments as in placeAllSubParts
+ placeFrontR(...)
+ placePartL(...)
+ placePartR(...)
+ placeSidearmL(...)
+ placeSidearmLfront(...)
+ placeSidearmR(...)
+ placeSidearmRfront(...)
+ ]]--
+
+ dofile("includes/HeavyCruiserParts.lua")
+ placeAllSubParts(0, 0,0,0, 0,0,0)
+ ?>
+
+ <!-- <SpawnPoint team=0 position="0,-200,0" lookat="0,-200,-100" spawnclass=SpaceShip pawndesign=HeavyCruiser /> -->
+ <!-- <SpawnPoint team=0 position="0,-100,0" lookat="0,-100,0" spawnclass=SpaceShip pawndesign=spaceshipassff /> -->
+
+ </Scene>
+</Level>
+
Copied: code/trunk/data/levels/InsideSpaceStation.oxw (from rev 9938, code/branches/presentationHS13/data/levels/InsideSpaceStation.oxw)
===================================================================
--- code/trunk/data/levels/InsideSpaceStation.oxw (rev 0)
+++ code/trunk/data/levels/InsideSpaceStation.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,88 @@
+<!-- -->
+<LevelInfo
+ name = "Inside Space Station"
+ description = "Level to test the Space Station"
+ tags = "test"
+ screenshot = "InsideSpaceStation.png"
+/>
+
+<?lua
+ include("HUDTemplates3.oxo")
+ include("stats.oxo")
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipH2.oxt")
+ include("templates/FPS.oxt")
+ include("templates/lodInformation.oxt")
+?>
+
+<Level>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+ <?lua include("includes/notifications.oxi") ?>
+
+ <Scene
+ ambientlight = "0.3, 0.3, 0.3"
+ skybox = "Orxonox/skyBoxBasic"
+ gravity = "0,-1000,0"
+ negativeWorldRange = "-100000, -100000, -100000"
+ positiveWorldRange = " 100000, 100000, 100000"
+ hasPhysics = true
+ >
+ <Light type=directional position="0,-100000,0" direction="0.02, -1, 0.05" diffuse="1.0, 1.0, 1.0, 1.0" specular="1.0, 1.0, 1.0, 1.0" />
+
+ <StaticEntity position="0,0,0" direction="1,0,0" pitch=180 collisionType=static mass=100000 friction=0.01 >
+ <attached>
+ <Model position="0,0,0" mesh="ss_tube.mesh" scale3D="100,100,100" />
+ <Model position="500,0,0" mesh="ss_tube.mesh" scale3D="100,100,100" />
+ <Model position="1200,0,0" mesh="ss_tube_x.mesh" scale3D="100,100,100" />
+ <Model position="-5000,0,0" mesh="ss_curve.mesh" scale3D="100,100,100" />
+ <Model position="-250,-16,0" pitch=-90 mesh="ss_flag_room.mesh" scale3D="100,100,100" />
+ <Model position="1200,100,-100" roll=180 mesh="ss_machine.mesh" scale3D="0.15,0.15,0.15" />
+ <Model position="-100,100,0" roll=180 mesh="ss_table.mesh" scale3D="25,25,25" />
+ <Model position="-300,100,0" roll=180 mesh="ss_table_cracked.mesh" scale3D="25,25,25" />
+ <Model position="600,75,0" roll=180 mesh="ss_cylinder.mesh" scale3D="25,25,25" />
+ <Model position="300,50,0" roll=180 pitch=20 mesh="ss_chair.mesh" scale3D="20,20,20" />
+ <Model position="1000,50,0" roll=180 mesh="ss_wall.mesh" scale3D="20,20,20" />
+ <Model position="-830,20,0" roll=180 mesh="ss_flag_aean.mesh" scale3D="40,40,40" />
+ <Model position="-1900,50,0" roll=180 mesh="ss_flag_eu.mesh" scale3D="20,20,20" />
+ <Model position="-1500,50,0" roll=180 mesh="ss_flag_cau.mesh" scale3D="20,20,20" />
+ <Model position="-1650,50,0" roll=180 mesh="ss_flag_csa.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,-100,0" halfExtents="5000000,0,100000" />
+ <BoxCollisionShape position="0,50,0" halfExtents="500000,0,100000" />
+ <BoxCollisionShape position="0,0,100" halfExtents="50000,100000,0" />
+ <BoxCollisionShape position="0,0,-100" halfExtents="500000,100000,0" />
+ </collisionShapes>
+ </StaticEntity>
+
+<?lua
+for i = 1, 10, 1
+do ?>
+ <SpawnPoint position="0,0,0" direction="-1, 0, 0" scale3D="0.5,100,0.5" lookat="0,0,0" spawnclass=FpsPlayer pawndesign=fps />
+<?lua
+end
+?>
+
+
+<?lua
+for i = 1, 200, 1
+do
+j = math.random()
+?>
+ <MovableEntity position="<?lua print(math.random() * 5000-2000) ?>,<?lua print(math.random() * 5000-2000) ?>,<?lua print(math.random() * 5000 - 2000) ?>" collisionType=dynamic linearDamping=0.8 angularDamping=0 mass=<?lua print(j * 100) ?> scale=<?lua print(j * 5) ?> rotationaxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationrate="<?lua print(math.random() * 30 + 5) ?>" >
+ <attached>
+ <Model position="0,0,0" scale="<?lua print(j * 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" />
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="<?lua print(j * 100) ?>" />
+ </collisionShapes>
+ </MovableEntity>
+<?lua
+end
+?>
+
+ </Scene>
+</Level>
+
Copied: code/trunk/data/levels/Invaders.oxw (from rev 9938, code/branches/presentationHS13/data/levels/Invaders.oxw)
===================================================================
--- code/trunk/data/levels/Invaders.oxw (rev 0)
+++ code/trunk/data/levels/Invaders.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,77 @@
+<LevelInfo
+ name = "Orxonox Arcade"
+ description = "2D Arcade shooter. Maximise your points!!!\nTip: try to keep the multiplier high by avoiding shots and enemies."
+ tags = "minigame"
+ screenshot = "orxonoxArcade.png"
+/>
+<?lua
+ include("stats.oxo")
+ include("templates/lodInformation.oxt")
+?>
+
+<?lua
+ include("templates/spaceshipAssff2.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipInvader.oxt")
+ include("templates/enemyInvader.oxt")
+ include("templates/enemyInvaderShooter.oxt")
+ include("overlays/InvaderHUD.oxo")
+?>
+
+<Level gametype = Invader>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+ <?lua include("includes/notifications.oxi") ?>
+
+ <!-- ambientlight = "0.8, 0.8, 0.8"
+ skybox = "Orxonox/Starbox" -->
+ <Scene
+ ambientlight = "0.8, 0.7, 0.4"
+ skybox = "Orxonox/skyBoxBasic"
+ >
+
+ <WorldAmbientSound
+ source="Earth.ogg"
+ looping="true"
+ playOnLoad="true"
+ />
+
+ <!-- <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/> -->
+ <Light type=directional position="1100, 11000, -7000" lookat="0, 0, 0" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
+ <SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=InvaderShip pawndesign=spaceshipinvader />
+
+ <DistanceTrigger name="start" position="-200,0,0" target="Pawn" distance=10 stayActive="true" delay=0 />
+
+
+ <InvaderCenterPoint name=invadercenter />
+
+ <?lua
+ for i = 1, 300, 1 do
+ j = math.random()
+ ?>
+
+ <MovableEntity
+ position = "<?lua print(math.random()* 40000 + 1000) ?>,-1000,<?lua print(math.random() * 4000 - 2000) ?>"
+ collisionType = dynamic
+ linearDamping = 0.8
+ angularDamping = 0
+ scale = "<?lua print(j * 150)?>"
+ collisiondamage = 0
+ enablecollisiondamage = true
+ >
+ <attached>
+ <Model mass="<?lua print(j * 1000) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" />
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="<?lua print(j * 350) ?>" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <?lua
+ end
+ ?>
+
+ </Scene>
+</Level>
+
Modified: code/trunk/data/levels/Spacerace2.oxw
===================================================================
--- code/trunk/data/levels/Spacerace2.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/Spacerace2.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -14,6 +14,7 @@
?>
+
<?lua
include("templates/spaceshipAssff2.oxt")
include("templates/spaceshipPirate.oxt")
@@ -106,8 +107,19 @@
</SpaceShip>
<SpawnPoint team=0 position="-200,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff />
+
+ <!-- SOUNDS & MUSIC -->
+ <WorldSound name="scoreSound" position="-200,0,0" source="sounds/ReadyGo.ogg" >
+ <events>
+ <play>
+ <EventListener event="start" />
+ </play>
+ </events>
+ </WorldSound>
+ <DistanceTrigger name="start" position="-200,0,0" target="Pawn" distance=100 stayActive="true" delay=0.5 />
+
+ <WorldAmbientSound source="Ganymede.ogg" looping="true" playOnLoad="true" />
-
<!-- ------------------Planet----------------- -->
<Planet position="0,0,0" scale=300 pitch=-90 mesh="iceplanet.mesh" atmosphere="atmosphere1" rotationaxis="8,1,0" rotationrate="1" atmospheresize=224.0f imagesize=1024.0f />
<StaticEntity position="0,0,0" collisionType=static>
Copied: code/trunk/data/levels/_temp.oxw (from rev 9938, code/branches/presentationHS13/data/levels/_temp.oxw)
===================================================================
--- code/trunk/data/levels/_temp.oxw (rev 0)
+++ code/trunk/data/levels/_temp.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,377 @@
+<LevelInfo
+ name = "Surface Race Presentation"
+ description = "just awesome 2.0"
+ screenshot = "surfaceRace.png"
+ tags = "gametype, shipselection"
+ startingships = "spaceshipassff, spaceshipghost, spaceshipspacecruiser, spaceshiprace"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+ include("templates/spaceshipRace.oxt")
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipGhost.oxt")
+ include("templates/spaceshipSpacecruiser.oxt")
+ include("templates/pickupRepresentationTemplates.oxt")
+
+?>
+
+<Level
+gametype = SpaceRace
+>
+
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+ <?lua include("includes/notifications.oxi") ?>
+
+ <Scene
+ ambientlight = "2.0, 2.0, 2.0"
+ skybox = "Orxonox/skyBoxClouds"
+ gravity = "0,-75,0"
+ negativeWorldRange = "-100000, -100000, -100000"
+ positiveWorldRange = " 100000, 100000, 100000"
+ hasPhysics = true
+ >
+
+ <Template name=PortalDefault>
+ <PortalEndPoint>
+ <attached>
+ <Model mesh="Spacegate.mesh" scale="3"/>
+ </attached>
+ </PortalEndPoint>
+ </Template>
+
+ <PortalEndPoint position="6000,8050,2500" id="1" distance="40" target="MobileEntity" design="PortalDefault" reenterDelay="0"/>
+ <PortalEndPoint position="6100,8050,-4500" id="2" distance="40" target="MobileEntity" design="PortalDefault" reenterDelay="0"/>
+ <PortalLink fromID="1" toID="2" />
+ <PortalLink fromID="2" toID="1" />
+
+ <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
+
+
+ <Model position="4200,8050,-1000" scale=10 mesh="debris-pile01.mesh" shadow=true />
+ <Model position="4200,8050,-1000" scale=10 mesh="debris-pile02.mesh" shadow=true />
+ <Model position="4200,8050,-1000" scale=10 mesh="debris-pile03.mesh" shadow=true />
+
+ <MovableEntity position="-700,8090,-300" velocity="80,0,0" rotationaxis="1,0,1" rotationrate=200>
+ <attached>
+ <Model position="0,0,-20" scale=10 mesh="cokebottle.mesh" />
+ </attached>
+ </MovableEntity>
+
+
+<SpaceRaceManager>
+ <checkpoints>
+ <RaceCheckPoint name="checkpoint1" position="0,8050,-1000" direction="0,1,0" collisionType="static" scale="4" distance="150" checkpointindex="0" islast="false" nextcheckpoints="1,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint2" position="1000,8050,-4000" direction="0,1,0" roll="45" collisionType="static" scale="4" distance="150" checkpointindex="1" islast="false" nextcheckpoints="2,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint3" position="3000,8050,-4000" direction="0,1,0" roll="-45" collisionType="static" scale="4" distance="150" checkpointindex="2" islast="false" nextcheckpoints="3,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint4" position="4000,8050,-1000" direction="0,1,0" roll="0" collisionType="static" scale="4" distance="150" checkpointindex="3" islast="false" nextcheckpoints="4,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint5" position="4000,8050,0" direction="0,1,0" roll="0" collisionType="static" scale="4" distance="150" checkpointindex="4" islast="false" nextcheckpoints="5,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint6" position="3000,8050,1000" direction="0,1,0" roll="45" collisionType="static" scale="4" distance="150" checkpointindex="5" islast="false" nextcheckpoints="6,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint7" position="0,8050,2000" direction="0,1,0" roll="90" collisionType="static" scale="4" distance="150" checkpointindex="6" islast="false" nextcheckpoints="7,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint8" position="-4000,8050,3000" direction="0,1,0" roll="45" collisionType="static" scale="4" distance="150" checkpointindex="7" islast="false" nextcheckpoints="8,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint9" position="-4000,8050,5000" direction="0,1,0" roll="-45" collisionType="static" scale="4" distance="150" checkpointindex="8" islast="false" nextcheckpoints="9,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint10" position="-3000,8050,6000" direction="0,1,0" roll="90" collisionType="static" scale="4" distance="150" checkpointindex="9" islast="false" nextcheckpoints="10,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint11" position="0,8050,6000" direction="0,1,0" roll="90" collisionType="static" scale="4" distance="120" checkpointindex="10" islast="false" nextcheckpoints="11,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint12" position="6000,8050,6000" direction="0,1,0" roll="45" collisionType="static" scale="4" distance="150" checkpointindex="11" islast="false" nextcheckpoints="12,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint13" position="5500,8050,3000" direction="0,1,0" roll="0" collisionType="static" scale="4" distance="150" checkpointindex="12" islast="false" nextcheckpoints="13,-1,-1">
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+
+ <RaceCheckPoint name="checkpoint14" position="6000,8050,-5000" direction="0,1,0" roll="0" collisionType="static" scale="4" distance="150" checkpointindex="13" islast="true" >
+ <attached>
+ <Model mass="50" scale="50" mesh="raceCheckPoint.mesh" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="0,0,-220" halfExtents="220, 40, 40" />
+ <BoxCollisionShape position="220,0,0" halfExtents="40, 40, 220" />
+ <BoxCollisionShape position="-220,0,0" halfExtents="40, 40, 220" />
+ </collisionShapes>
+ </RaceCheckPoint>
+</checkpoints>
+</SpaceRaceManager>
+
+ <SpawnPoint team=0 position="0,8050,0" lookat="0,8000,-8000" spawnclass=SpaceShip pawndesign=spaceshipspacecruiser />
+
+
+ <!-- -----------------------Zylinder---------------------------- -->
+<StaticEntity position="2750,8050,6000" direction="1,0,0" roll="90" scale="4" collisionType=static mass=100000 friction=0.01 >
+ <attached>
+ <Model position="0,0,0" mesh="cylinder.mesh" scale3D="100,100,400" />
+ <!--
+ <Model position="0,80,600" mesh="testcube.mesh" scale3D="90,18,-600" />
+ <Model position="0,-80,600" mesh="testcube.mesh" scale3D="90,18,-600" />
+ <Model position="80,0,600" mesh="testcube.mesh" scale3D="18,90,-600" />
+ <Model position="-80,0,600" mesh="testcube.mesh" scale3D="18,09,-600" />
+ -->
+
+ </attached>
+
+
+ <collisionShapes>
+
+
+ <BoxCollisionShape position="0,320,2400" halfExtents="360,72,2400" />
+ <BoxCollisionShape position="0,-320,2400" halfExtents="360,72,2400" />
+ <BoxCollisionShape position="320,0,2400" halfExtents="72,360,2400" />
+ <BoxCollisionShape position="-320,0,2400" halfExtents="72,360,2400" />
+
+
+
+ </collisionShapes>
+
+ </StaticEntity>
+
+<!-- ------------------Cube between gate 4 and 5----------------- -->
+<StaticEntity position="4465,8050,-500" direction="0,0,0" scale="1" collisionType=static mass=100000 friction=0.01 >
+ <attached>
+ <Model position="0,0,0" mesh="blackcube.mesh" scale3D="450,600,50" />
+<!--
+ <Model position="0,0,0" mesh="testcube.mesh" scale3D="450,600,50" />
+ -->
+
+ </attached>
+
+
+ <collisionShapes>
+
+
+ <BoxCollisionShape position="0,0,0" halfExtents="450,600,50" />
+
+ </collisionShapes>
+
+ </StaticEntity>
+
+<StaticEntity position="3535,8050,-500" direction="0,0,0" scale="1" collisionType=static mass=100000 friction=0.01 >
+ <attached>
+ <Model position="0,0,0" mesh="blackcube.mesh" scale3D="450,600,50" />
+<!--
+ <Model position="0,0,0" mesh="testcube.mesh" scale3D="450,600,50" />
+ -->
+
+ </attached>
+
+
+ <collisionShapes>
+
+
+ <BoxCollisionShape position="0,0,0" halfExtents="450,600,50" />
+
+ </collisionShapes>
+
+ </StaticEntity>
+
+
+
+
+ <!-- ------------------Boden----------------- -->
+ <StaticEntity position="0,0,0" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="CubeGround.mesh" scale3D="8000,8000,8000" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,50,0" halfExtents="8000,8000,8000" />um j?:P"{
+
+ </collisionShapes>
+</StaticEntity>
+
+
+<!-- ---------------------PickUp---------------------- -->
+
+
+ <PickupSpawner pickup=smallspeedpickup position="4000,8050,0" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8" />
+ <PickupSpawner pickup=mediumspeedpickup position="5500,8100,2000" triggerDistance="40" respawnTime="10" maxSpawnedItems="99" scale="8" />
+ <PickupSpawner pickup="mediumshrinkpickup" position="3000,8050,-4000" triggerDistance="40" respawnTime="60" maxSpawnedItems="5" scale="8" />
+
+
+
+
+ <!-- ---------------asteroid ellipse----------------- -->
+
+ <?lua
+ max = 15
+ for i = 0, max, 1
+ do
+ x=-12000
+ y=10000
+ z=-12000
+
+ ?>
+ <?lua
+ for k = 1, 15, 1
+ do
+ j = math.random()
+ ?>
+
+ <MovableEntity
+ position = "<?lua print(x + math.random() * 20000) ?>,<?lua print(y + math.random() * 5000) ?>,<?lua print(z + math.random() * 20000) ?>"
+ collisionType = "dynamic"
+ linearDamping = "0.5"
+ angularDamping = "0.5"
+ collisiondamage = "100"
+ enablecollisiondamage = "true"
+ scale="<?lua print(j * 5) ?>" >
+ <attached>
+ <Model position="0,0,0" scale="<?lua print(j * 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh">
+ <?lua if k == 0 then ?><attached><!-- ---------asteroid fog----- -->
+ <ParticleEmitter position="0,0,0" source="Orxonox/Steam" />
+ </attached> <?lua end ?>
+ </Model>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="<?lua print(j * 80) ?>" />
+ </collisionShapes>
+ </MovableEntity>
+ <?lua
+ end
+ ?>
+ <?lua end ?>
+
+ </Scene>
+</Level>
+
+
Modified: code/trunk/data/levels/asteroidField.oxw
===================================================================
--- code/trunk/data/levels/asteroidField.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/asteroidField.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -10,6 +10,7 @@
include("HUDTemplates3.oxo")
include("templates/lodInformation.oxt")
?>
+<WorldAmbientSound source="Asteroid_rocks.ogg" looping="true" playOnLoad="true" />
<?lua
include("templates/spaceshipAssff.oxt")
Modified: code/trunk/data/levels/asteroids.oxw
===================================================================
--- code/trunk/data/levels/asteroids.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/asteroids.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -4,6 +4,7 @@
tags = "gametype"
screenshot = "asteroids.png"
/>
+<WorldAmbientSound source="Asteroid_rocks.ogg" looping="true" playOnLoad="true" />
<?lua
include("HUDTemplates3.oxo")
Modified: code/trunk/data/levels/docking.oxw
===================================================================
--- code/trunk/data/levels/docking.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/docking.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,4 @@
+<!-- -->
<LevelInfo
name = "Transporter"
description = "Level with a Transporter. Demonstrates the docking system."
Copied: code/trunk/data/levels/dockingToASpaceStation.oxw (from rev 9938, code/branches/presentationHS13/data/levels/dockingToASpaceStation.oxw)
===================================================================
--- code/trunk/data/levels/dockingToASpaceStation.oxw (rev 0)
+++ code/trunk/data/levels/dockingToASpaceStation.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,182 @@
+<!-- -->
+<LevelInfo
+ name = "Docking to a Space Station"
+ description = "Docking into a spacestation."
+ tags = "showcase"
+ screenshot = "emptylevel.png"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+ include("templates/pickupRepresentationTemplates.oxt")
+?>
+
+<?lua
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipEscort.oxt")
+ include("templates/bigship.oxt")
+ include("templates/spaceshipTurret.oxt")
+ include("templates/spaceshipCollateralDamage.oxt")
+ include("templates/FPS.oxt")
+?>
+
+<Level
+ gametype = Deathmatch
+>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+
+ <Scene
+ ambientlight = "0.5, 0.5, 0.5"
+ skybox = "Orxonox/Starbox"
+ negativeWorldRange = "-100000, -100000, -100000"
+ positiveWorldRange = " 100000, 100000, 100000"
+ gravity = "0,0,0"
+ hasPhysics = true
+ >
+
+ <?lua
+ include("includes/pickups.oxi")
+ ?>
+
+ <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0,1.0,1.0,0.5" specular="1.0, 0.9, 0.9, 1.0"/>
+ <SpawnPoint team=0 position="3200,0,0" lookat="2800,0,0" spawnclass=SpaceShip pawndesign=spaceshipescort />
+
+ <StaticEntity position = "2800,0,0" mass=10000 collisionType=static >
+ <attached>
+ <Model mesh="HydroHarvester.mesh" mass=10 position="0,0,0" scale=50 />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-560,0,0" halfExtents="115,100,245" /><!-- Three lower boxes -->
+ <BoxCollisionShape position="290,0,-480" halfExtents="115,100,245" yaw=-120 />
+ <BoxCollisionShape position="290,0,480" halfExtents="115,100,245" yaw=-240 />
+ <BoxCollisionShape position="-280,0,0" halfExtents="163,50,50" /><!-- Three lower connections -->
+ <BoxCollisionShape position="140,0,-240" halfExtents="163,50,50" yaw=-120 />
+ <BoxCollisionShape position="140,0,240" halfExtents="163,50,50" yaw=-240 />
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" /><!-- Upper Tower -->
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" yaw=-120 />
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" yaw=-240 />
+ <BoxCollisionShape position="0,400,0" halfExtents="43,110,26" yaw=-30 /><!-- Middle one-->
+ <BoxCollisionShape position="-200,100,0" halfExtents="26,50,43" /><!--Three lower legs -->
+ <BoxCollisionShape position="100,100,-173" halfExtents="43,50,26" yaw=-30 />
+ <BoxCollisionShape position="100,100,-173" halfExtents="43,50,26" yaw=30 />
+ <BoxCollisionShape position="-100,264,0" halfExtents="26,105,43" roll=-49 /><!--Three upper legs -->
+ <BoxCollisionShape position="50,264,-87" halfExtents="26,105,43" roll=-49 yaw=-120 />
+ <BoxCollisionShape position="50,264,87" halfExtents="26,105,43" roll=-49 yaw=-240 />
+ </collisionShapes>
+ </StaticEntity>
+
+<!-- Docking -->
+ <Dock position="2830,20,50" roll=0 yaw=0 >
+ <animations>
+ <MoveToDockingTarget target="destroyer" />
+ </animations>
+ <effects>
+ <DockToShip target="spaceShip" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="dockMe" />
+ </execute>
+
+ <undocking>
+ <EventListener event="undockMe" />
+ </undocking>
+
+ <activity>
+ <EventListener event=notGameEnd />
+ </activity>
+ </events>
+ <attached>
+ <!-- Trigger for docking with billboard -->
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.2,0.4,0.8" scale=1 />
+ <DistanceTrigger position="0,0,0" distance="200" target="Pawn"
+ beaconMode="exclude" targetname="bcnDestroyer" name="dockMe"
+ />
+ <!-- Trigger for undocking with billboard -->
+ <Billboard position="-2630,-19970,150" material="Flares/ringflare2" colour="0.2,0.4,0.8" scale=1 />
+ <DistanceTrigger position="-2630,-19970,150" distance="50" target="Pawn"
+ beaconMode="identify" targetname="bcnDestroyer" name="undockMe"
+ />
+ </attached>
+
+ </Dock>
+
+<!-- FPS Player as destination of the dock -->
+<FpsPlayer template = "fps" radarname = "First Person Player" position = "0,-19900,0" >
+ <attached>
+ <DockingTarget name="spaceShip" />
+ <DistanceTriggerBeacon name="bcnDestroyer" />
+ <DockingTarget name="destroyer" />
+ </attached>
+</FpsPlayer>
+
+
+<!-- Cube as test SpaceStation
+
+The station can either be hidden outside of the skybox, within the hull of the space station if it is big enough or within a planet.
+Complex spacestations can be placed very far away from the spaceship so it is rendered at low resolution while the player uses the space ship.
+
+-->
+ <StaticEntity position="0,-20000,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01 >
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="80,80,5" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="400,400,25" />
+ </collisionShapes>
+ </StaticEntity>
+
+<!-- Homogenous gravitationfield to simulate local gravity (activating the normal gravity will affect the spaceship terribly) -->
+<ForceField position="0,-20000,0" mode="homogen" diameter="2000" forcedirection = "0,-500,0" />
+
+
+<!-- Some more stuff -->
+
+ <!-- triple large belt around the planet -->
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(15000, 0, 0, 30, 0, 30, 30, 50, 7190, 7800, 250, 1)
+ ?>
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(15000, 0, 0, 30, 0, 30, 30, 50, 10000, 11000, 300, 1)
+ ?>
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(15000, 0, 0, 30, 0, 30, 30, 50, 14000, 15000, 350, 1)
+ ?>
+
+ <Planet
+ position="15000,0,-1000"
+ scale="5000"
+ collisionType="dynamic"
+ linearDamping="0.8"
+ angularDamping="0"
+ mass="10000000"
+ pitch="0"
+ mesh="planets/ganymede.mesh"
+ atmosphere="atmosphere1"
+ rotationaxis="1,0,0"
+ rotationrate="1.0"
+ atmospheresize="80.0f"
+ imagesize="1024.0f"
+ collisiondamage = 2
+ enablecollisiondamage = true
+ >
+ <attached>
+ <ForceField position="5000,0,0" mode="sphere" diameter="10000" velocity="-50" />
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="5000" position="0,0,0" />
+ </collisionShapes>
+ </Planet>
+
+ </Scene>
+
+</Level>
+
Modified: code/trunk/data/levels/dynamicMatch.oxw
===================================================================
--- code/trunk/data/levels/dynamicMatch.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/dynamicMatch.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -4,6 +4,7 @@
tags = "gametype"
screenshot = "dynamicMatch.png"
/>
+<WorldAmbientSound source="Mars.ogg" looping="true" playOnLoad="true" />
<?lua
include("HUDTemplates3.oxo")
Modified: code/trunk/data/levels/gallery.oxw
===================================================================
--- code/trunk/data/levels/gallery.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/gallery.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -36,6 +36,31 @@
all Objects are organized in columns
---->
+<!--- Spacestation --->
+ <!--Model position="0,0,-160" yaw="90" pitch="-90" roll="0" scale="1" mesh="ss_box_lowpoly.mesh" /-->
+ <Model position="0, 20,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_box_lowpoly_ad1.mesh" />
+ <Model position="0, 40,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_box_lowpoly_ad2.mesh" />
+ <Model position="0, 60,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_box_lowpoly_ad3.mesh" />
+ <Model position="0, 80,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_box_lowpoly_ad4.mesh" />
+ <Model position="0,-20,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_tube.mesh" />
+ <Model position="0,-40,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_tube_twd.mesh" />
+ <Model position="0,-60,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_tube_x.mesh" />
+ <Model position="0,-80,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_wall.mesh" />
+ <Model position="0,-100,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_table_cracked.mesh" />
+ <Model position="0,-120,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_table.mesh" />
+ <Model position="0,-140,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_spind.mesh" />
+ <Model position="0,-160,-160" yaw="90" pitch="-90" roll="0" scale="0.01" mesh="ss_machine.mesh" />
+ <Model position="0,-180,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_flag_room.mesh" />
+ <Model position="0,-200,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_flag_eu.mesh" />
+ <Model position="0,-220,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_flag_csa.mesh" />
+ <Model position="0,-240,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_flag_cau.mesh" />
+ <Model position="0,-260,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_flag_aean.mesh" />
+ <Model position="0,-280,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_door.mesh" />
+ <Model position="0,-300,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_cylinder.mesh" />
+ <Model position="0,-320,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_curve.mesh" />
+ <Model position="0,-340,-160" yaw="90" pitch="-90" roll="0" scale="5" mesh="ss_chair.mesh" />
+
+
<!--- Whole Objects --->
<Model position="0, 0,-120" yaw="90" pitch="0" roll="0" scale="1" mesh="HydroHarvester.mesh" />
@@ -151,7 +176,7 @@
<!--Model position="0,60,200" yaw="90" pitch="-90" roll="0" scale="3" mesh="Tower_ME.mesh" /-->
<!--Model position="0,80,200" yaw="90" pitch="-90" roll="0" scale="5" mesh="SmallPart1.mesh" /-->
<Model position="0,-20,200" yaw="90" pitch="-90" roll="0" scale="4" mesh="raceCheckPoint.mesh" />
- <Model position="0,-40,200" yaw="90" pitch="-90" roll="0" scale="0.5" mesh="Spacegate.mesh" />
+ <Model position="0,-40,200" yaw="90" pitch="0" roll="0" scale="0.5" mesh="Spacegate.mesh" />
<Model position="0,-60,200" yaw="90" pitch="-90" roll="0" scale="0.5" mesh="BigSpacegate.mesh" />
<!--Model position="0,-80,200" yaw="90" pitch="-90" roll="0" scale="5" mesh="SmallPart2" /> <!--- WHY doesn't it load ??--->
Copied: code/trunk/data/levels/iJohnVane_TriptoArea51.oxw (from rev 9938, code/branches/presentationHS13/data/levels/iJohnVane_TriptoArea51.oxw)
===================================================================
--- code/trunk/data/levels/iJohnVane_TriptoArea51.oxw (rev 0)
+++ code/trunk/data/levels/iJohnVane_TriptoArea51.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,592 @@
+<!-- -->
+
+<LevelInfo
+ name = "(i) John Vane - Trip to Area 51"
+ description = "John Vane's first mission to rescue the Commander"
+ tags = "mission"
+ screenshot = "JohnVane.png"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+?>
+
+<?lua
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipAssff2.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipEscort.oxt")
+ include("templates/spaceshipCollateralDamage.oxt")
+?>
+
+<Level gametype="Mission">
+
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+ <?lua include("includes/notifications.oxi") ?>
+
+ <NotificationQueueCEGUI
+ name="narrative"
+ targets="simpleNotification"
+ size=3
+ displayTime=3.9
+ position="0.2, 0, 0.1, 0"
+ fontSize="23"
+ fontColor="0.3, 1, 0.2, 0.8"
+ alignment="HorzCentred"
+ displaySize="0.6, 0, 0, 0"
+ />
+
+ <Scene
+ ambientlight = "0.5, 0.5, 0.5"
+ skybox = "Orxonox/Starbox"
+ hasPhysics = true
+
+ >
+
+ <?lua
+ include("includes/pickups.oxi")
+ ?>
+
+ <?lua
+ dofile("includes/CuboidSpaceStation.lua")
+ ?>
+
+
+ <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
+
+ <TeamSpawnPoint team=0 position="0,0,0" direction="1,1,1" spawnclass=SpaceShip pawndesign=spaceshipescort> <!--spaceshipescort-->
+ <events>
+ <activity>
+ <EventListener event="start" />
+ </activity>
+ </events>
+ </TeamSpawnPoint>
+
+ <DistanceTrigger name="spawntrigger" position="0,0,0" distance=10 target="SpaceShip" stayActive="true" delay=0.1/>
+
+<!----------------------------------------------------------------------------------------------------->
+<!-------------------------------------- PART ZERO: Docking on --------------------------------------->
+<!----------------------------------------------------------------------------------------------------->
+
+<!-- OBJECTS IN THIS PART -->
+
+<!-- @Objects: HYDROGEN FARMER & DOCKING -->
+
+<!-- @Objects: HYDROGEN FARMER & DOCKING -->
+ <SpaceShip
+ team = 0
+ position = "5000,5100,5000"
+ roll = 90 yaw=0 pitch=20
+ mass = 10000
+ health = 100000 initialhealth=100000 maxhealth="100000"
+ name = "HydroFarmer"
+ radarname = "Main station" >
+ <attached>
+ <!-- Docking -->
+ <DistanceTriggerBeacon name="bcnDestroyer" />
+ <DockingTarget name="destroyer" />
+
+ <Model mesh="HydroHarvester.mesh" mass=10 position="0,0,0" scale=50 />
+ <!-- <Model mesh="cube.mesh" mass=10 position="-560,0,0" scale3D="115,100,245" />
+ <Model mesh="cube.mesh" mass=10 position="290,0,-480" scale3D="115,100,245" yaw=-120 />
+ <Model mesh="cube.mesh" mass=10 position="290,0,480" scale3D="115,100,245" yaw=-240 />
+ <Model mesh="cube.mesh" mass=10 position="-280,0,0" scale3D="163,50,50" />
+ <Model mesh="cube.mesh" mass=10 position="140,0,-240" scale3D="163,50,50" yaw=-120/>
+ <Model mesh="cube.mesh" mass=10 position="140,0,240" scale3D="163,50,50" yaw=-240/>
+ <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" />
+ <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" yaw=-120/>
+ <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" yaw=-240/>
+ <Model mesh="cube.mesh" mass=10 position="0,400,0" scale3D="43,110,26" yaw=-30 />
+ <Model mesh="cube.mesh" mass=10 position="-200,100,0" scale3D="26,50,43" />
+ <Model mesh="cube.mesh" mass=10 position="100,100,-173" scale3D="43,50,26" yaw=-30/>
+ <Model mesh="cube.mesh" mass=10 position="100,100,173" scale3D="43,50,26" yaw=30/>
+ <Model mesh="cube.mesh" mass=10 position="-100,264,0" scale3D="26,105,43" roll=-49/>
+ <Model mesh="cube.mesh" mass=10 position="50,264,-87" scale3D="26,105,43" roll=-49 yaw=-120/>
+ <Model mesh="cube.mesh" mass=10 position="50,264,87" scale3D="26,105,43" roll=-49 yaw=-240/> -->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-560,0,0" halfExtents="115,100,245" /><!-- Three lower boxes -->
+ <BoxCollisionShape position="290,0,-480" halfExtents="115,100,245" yaw=-120 />
+ <BoxCollisionShape position="290,0,480" halfExtents="115,100,245" yaw=-240 />
+ <BoxCollisionShape position="-280,0,0" halfExtents="163,50,50" /><!-- Three lower connections -->
+ <BoxCollisionShape position="140,0,-240" halfExtents="163,50,50" yaw=-120 />
+ <BoxCollisionShape position="140,0,240" halfExtents="163,50,50" yaw=-240 />
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" /><!-- Upper Tower -->
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" yaw=-120 />
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" yaw=-240 />
+ <BoxCollisionShape position="0,400,0" halfExtents="43,110,26" yaw=-30 /><!-- Middle one-->
+ <BoxCollisionShape position="-200,100,0" halfExtents="26,50,43" /><!--Three lower legs -->
+ <BoxCollisionShape position="100,100,-173" halfExtents="43,50,26" yaw=-30 />
+ <BoxCollisionShape position="100,100,-173" halfExtents="43,50,26" yaw=30 />
+ <BoxCollisionShape position="-100,264,0" halfExtents="26,105,43" roll=-49 /><!--Three upper legs -->
+ <BoxCollisionShape position="50,264,-87" halfExtents="26,105,43" roll=-49 yaw=-120 />
+ <BoxCollisionShape position="50,264,87" halfExtents="26,105,43" roll=-49 yaw=-240 />
+ </collisionShapes>
+ </SpaceShip>
+
+ <Dock position="5000,5000,5000" roll=90 yaw=180 >
+ <animations>
+ <MoveToDockingTarget target="destroyer" />
+ </animations>
+ <effects>
+ <DockToShip target="spaceShip" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="dockMe" />
+ </execute>
+ <activity>
+ <EventListener event=notGameEnd />
+ </activity>
+ </events>
+ <attached>
+ <DistanceTrigger position="10,-202, -42" distance="800" target="Pawn"
+ beaconMode="exclude" targetname="bcnDestroyer" name="dockMe"/>
+ <Billboard position="10,-202,-42" material="Flares/ringflare" colour="0.7,0.4,0.1" scale=1/>
+ </attached>
+
+ </Dock>
+
+<!-- at Objects: SpaceCruiser as docking target -->
+ <SpaceShip
+ template = "spaceshipcollateraldamage"
+ team = "0"
+ position = "5000,5800,5000"
+ orientation = "-0.14, 0.68, 0.68, 0.223"
+ health = "400"
+ initialhealth = "400"
+ maxhealth = "500"
+ shieldhealth = "80"
+ initialshieldhealth = "80"
+ maxshieldhealth = "120"
+ shieldabsorption = "0.8"
+ reloadrate = "1"
+ reloadwaittime = "1"
+ name = "cruiser"
+ radarname = "Spacecruiser" >
+ <attached>
+ <DockingTarget name="spaceShip" />
+ </attached>
+ </SpaceShip>
+
+
+<BlinkingBillboard position="1500,1500,1500" frequency=0.6 amplitude=3 material="Flares/lensflare" colour="1,1,0.05">
+ <events>
+ <visibility>
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event=flying3 />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</BlinkingBillboard>
+<Billboard position="1500,1500,1500" amplitude=1 material="Flares/lensflare" colour="0,0.8,0.1">
+ <events>
+ <visibility>
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event=flying4 />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</Billboard>
+
+ <DistanceTrigger name="flying1" position="0,0,0" target="Pawn" distance=100 stayActive="true" delay=1/>
+ <SimpleNotification message="Housten: John Vane do you hear us?">
+ <events>
+ <trigger>
+ <EventListener event="flying1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="flying2" position="0,0,0" target="Pawn" distance=100 stayActive="true" delay=5/>
+ <SimpleNotification message="Housten: We got a new mission for you">
+ <events>
+ <trigger>
+ <EventListener event="flying2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <DistanceTrigger name="flying3" position="0,0,0" target="Pawn" distance=10 stayActive="true" delay=9/>
+ <SimpleNotification message="John: I hear you. What is it about?">
+ <events>
+ <trigger>
+ <EventListener event="flying3" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="flying4" position="0,0,0" target="Pawn" distance=100 stayActive="true" delay=13/>
+ <SimpleNotification message="Housten: Our Commander got kidnapped">
+ <events>
+ <trigger>
+ <EventListener event="flying4" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="flying5" position="0,0, 0" target="Pawn" distance=100 stayActive="true" delay=17/>
+ <SimpleNotification message="Housten: We need you to rescue him.">
+ <events>
+ <trigger>
+ <EventListener event="flying5" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+<DistanceTrigger name="flying6" position="0,0, 0" target="Pawn" distance=100 stayActive="true" delay=21/>
+ <SimpleNotification message="John: I'm right on the way.">
+ <events>
+ <trigger>
+ <EventListener event="flying6" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+<DistanceTrigger name="flying7" position="0,0,0" target="Pawn" distance=100 stayActive="true" delay=25/>
+ <SimpleNotification message="Houston: First dock on the station">
+ <events>
+ <trigger>
+ <EventListener event="flying7" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <QuestEffectBeacon times=1>
+ <effects>
+ <AddQuest questId="Level_Kaan.docking" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event=spawntrigger />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <QuestEffectBeacon times=1>
+ <effects>
+ <CompleteQuest questId="Level_Kaan.docking" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="dockMe" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <LocalQuest id="Level_Kaan.docking">
+ <QuestDescription title="Docking" description="Our Commander got kidnapped in Area 51. Fly to the Main Station and get a better Spaceship to rescue him.
+
+ Flying moves:
+ break (S)
+ roll (Q) and (E)
+ boost (Space)
+
+ Whenever a new quest is added you can view it by pressing (F3). Quit this menu via (Esc)." failmessage="" completeMessage="" />
+ <complete-effects>
+ <AddQuest questId="Level_Kaan.portals" />
+ </complete-effects>
+ </LocalQuest>
+
+ <LocalQuest id="Level_Kaan.portals">
+ <QuestDescription title="Portals" description="Now you've got a Spaceship with more health and weapons. Your next goal is to pass through the portal and find there the wormhole to Area 51" failmessage="" completeMessage="" />
+ <complete-effects>
+ <AddQuest questId="Level_Kaan.asteroids" />
+ </complete-effects>
+ </LocalQuest>
+
+
+ <QuestEffectBeacon times=1>
+ <effects>
+ <CompleteQuest questId="Level_Kaan.portals" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event=start />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <LocalQuest id="Level_Kaan.asteroids">
+ <QuestDescription title="Asteroids" description="The wormhole is at the end of the asteroid shower. Find your way through the asteroids without hitting the rocks and reach Area 51. " failmessage="" completeMessage="" />
+ </LocalQuest>
+
+ <QuestEffectBeacon times=1>
+ <effects>
+ <CompleteQuest questId="Level_Kaan.asteroids" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event=endOfLevel />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+<!----------------------------------------------------------------------------------------------------->
+<!-------------------------------- PART ONE: Passing throug wormhole --------------------------------->
+<!----------------------------------------------------------------------------------------------------->
+
+
+<!------------------------------------- OBJECTS IN THIS PART ------------------------------------------>
+
+ <Template name=PortalDefault>
+ <PortalEndPoint>
+ <attached>
+ <Model mesh="Spacegate.mesh" />
+ </attached>
+ </PortalEndPoint>
+ </Template>
+
+ <PortalEndPoint position="4000,2500,4000" id="1" distance="40" target="MobileEntity" design="PortalDefault" reenterDelay="0"/>
+ <PortalEndPoint position="0,94000,0" id="2" distance="40" target="MobileEntity" design="PortalDefault" reenterDelay="0"/>
+ <PortalLink fromID="1" toID="2" />
+ <!--<PortalLink fromID="2" toID="1" />-->
+
+<!-- Meteoriten, die sich bewegen -->
+ <?lua
+ for i = 1, 600, 1
+ do
+ j = math.random()
+ x = math.random()
+ y = math.random()
+ z = math.random()
+ ?>
+
+ <MovableEntity
+ position = "<?lua print(math.random()* 1000-500) ?>,<?lua print(math.random() * 10000 + 110000) ?>,<?lua print(math.random() * 1000-500) ?>"
+ scale = "<?lua print(j * 40)?>"
+ velocity = "<?lua print(x*60-30)?>, <?lua print(y*60-160)?>, <?lua print(z*60-30)?>"
+ collisionType = dynamic
+ collisiondamage = 0.05
+ enablecollisiondamage = true
+ active = true
+ >
+ <events>
+ <activity>
+ <EventListener event="start" />
+ </activity>
+ </events>
+ <attached>
+ <Model mass="<?lua print(j * 1000) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" />
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="<?lua print(j * 50) ?>" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <?lua
+ end
+ ?>
+
+<BlinkingBillboard position="5000,5700,5000" frequency=0.6 amplitude=3 material="Flares/lensflare" colour="1,1,0.05">
+ <events>
+ <visibility>
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event=portal2 />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</BlinkingBillboard>
+
+<Billboard position="5000,5700,5000" amplitude=1 material="Flares/lensflare" colour="0,0.8,0.1">
+ <events>
+ <visibility>
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event=portal2 />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</Billboard>
+
+<DistanceTrigger name="start" position="0,94000,0" target="SpaceShip" beaconMode="exclude" targetname="bcnDestroyer" distance=20 stayActive="true" delay=0 />
+
+<DistanceTrigger name="portal2" position="5000,5700,5000" target="Pawn" distance=20 stayActive="true" delay=3/>
+ <SimpleNotification message="Housten: Now go through the portal!">
+ <events>
+ <trigger>
+ <EventListener event="portal2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+
+<!----------------------------------------------------------------------------------------------------->
+<!--------------------------- PART TWO: Passing throug area with meteorits ---------------------------->
+<!----------------------------------------------------------------------------------------------------->
+
+ <SpaceShip
+ team = 0
+ position = "0,118000,0"
+ roll = 0 yaw=90 pitch=0
+ mass = 10000
+ health = 100000 initialhealth=100000 maxhealth="100000"
+ name = "wormhole"
+ radarname = "Wormhole to Area 51" >
+ <attached>
+ <DistanceTriggerBeacon name="bcnDestroyer" />
+ <Billboard position="0,0,0" material="Portals/Default" />
+ <DistanceTrigger name="endOfLevel" position="0,0,0" target="SpaceShip" beaconMode="exclude" targetname="bcnDestroyer" distance=50 stayActive="true" delay=0/>
+
+ <Model mesh="HydroHarvester.mesh" mass=10 position="0,0,0" scale=50 />
+ <!-- <Model mesh="cube.mesh" mass=10 position="-560,0,0" scale3D="115,100,245" />
+ <Model mesh="cube.mesh" mass=10 position="290,0,-480" scale3D="115,100,245" yaw=-120 />
+ <Model mesh="cube.mesh" mass=10 position="290,0,480" scale3D="115,100,245" yaw=-240 />
+ <Model mesh="cube.mesh" mass=10 position="-280,0,0" scale3D="163,50,50" />
+ <Model mesh="cube.mesh" mass=10 position="140,0,-240" scale3D="163,50,50" yaw=-120/>
+ <Model mesh="cube.mesh" mass=10 position="140,0,240" scale3D="163,50,50" yaw=-240/>
+ <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" />
+ <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" yaw=-120/>
+ <Model mesh="cube.mesh" mass=10 position="0,530,0" scale3D="172,52,298" yaw=-240/>
+ <Model mesh="cube.mesh" mass=10 position="0,400,0" scale3D="43,110,26" yaw=-30 />
+ <Model mesh="cube.mesh" mass=10 position="-200,100,0" scale3D="26,50,43" />
+ <Model mesh="cube.mesh" mass=10 position="100,100,-173" scale3D="43,50,26" yaw=-30/>
+ <Model mesh="cube.mesh" mass=10 position="100,100,173" scale3D="43,50,26" yaw=30/>
+ <Model mesh="cube.mesh" mass=10 position="-100,264,0" scale3D="26,105,43" roll=-49/>
+ <Model mesh="cube.mesh" mass=10 position="50,264,-87" scale3D="26,105,43" roll=-49 yaw=-120/>
+ <Model mesh="cube.mesh" mass=10 position="50,264,87" scale3D="26,105,43" roll=-49 yaw=-240/> -->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-560,0,0" halfExtents="115,100,245" /><!-- Three lower boxes -->
+ <BoxCollisionShape position="290,0,-480" halfExtents="115,100,245" yaw=-120 />
+ <BoxCollisionShape position="290,0,480" halfExtents="115,100,245" yaw=-240 />
+ <BoxCollisionShape position="-280,0,0" halfExtents="163,50,50" /><!-- Three lower connections -->
+ <BoxCollisionShape position="140,0,-240" halfExtents="163,50,50" yaw=-120 />
+ <BoxCollisionShape position="140,0,240" halfExtents="163,50,50" yaw=-240 />
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" /><!-- Upper Tower -->
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" yaw=-120 />
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" yaw=-240 />
+ <BoxCollisionShape position="0,400,0" halfExtents="43,110,26" yaw=-30 /><!-- Middle one-->
+ <BoxCollisionShape position="-200,100,0" halfExtents="26,50,43" /><!--Three lower legs -->
+ <BoxCollisionShape position="100,100,-173" halfExtents="43,50,26" yaw=-30 />
+ <BoxCollisionShape position="100,100,-173" halfExtents="43,50,26" yaw=30 />
+ <BoxCollisionShape position="-100,264,0" halfExtents="26,105,43" roll=-49 /><!--Three upper legs -->
+ <BoxCollisionShape position="50,264,-87" halfExtents="26,105,43" roll=-49 yaw=-120 />
+ <BoxCollisionShape position="50,264,87" halfExtents="26,105,43" roll=-49 yaw=-240 />
+ </collisionShapes>
+ </SpaceShip>
+
+ <DistanceTrigger name="portal3" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=1/>
+ <SimpleNotification message="Housten: Reach the wormhole to Area 51">
+ <events>
+ <trigger>
+ <EventListener event="portal3" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="portal4" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=5/>
+ <SimpleNotification message="Housten: Hurry up John">
+ <events>
+ <trigger>
+ <EventListener event="portal4" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="portal5" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=9/>
+ <SimpleNotification message="Houston: Pay attention to the asteroids!">
+ <events>
+ <trigger>
+ <EventListener event="portal5" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="portal6" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=13/>
+ <SimpleNotification message="John: I see the wormhole station on the radar">
+ <events>
+ <trigger>
+ <EventListener event="portal6" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <DistanceTrigger name="portal7" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=17/>
+ <SimpleNotification message="Houston: Is it black?">
+ <events>
+ <trigger>
+ <EventListener event="portal7" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="portal8" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=21/>
+ <SimpleNotification message="John: Yes">
+ <events>
+ <trigger>
+ <EventListener event="portal8" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <DistanceTrigger name="portal9" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=25/>
+ <SimpleNotification message="Houston: It should really look like a black hole.">
+ <events>
+ <trigger>
+ <EventListener event="portal9" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="portal10" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=29/>
+ <SimpleNotification message="John: It does... ">
+ <events>
+ <trigger>
+ <EventListener event="portal10" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="portal11" position="0,94000,0" target="SpaceShip" distance=50 stayActive="true" delay=33/>
+ <SimpleNotification message="Houston: Hahaha ">
+ <events>
+ <trigger>
+ <EventListener event="portal11" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <SimpleNotification message="End of game">
+ <events>
+ <trigger>
+ <EventListener event="endOfLevel" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <Script code="Mission endMission true" onLoad="false">
+ <events>
+ <trigger>
+ <EventListener event=endOfLevel />
+ </trigger>
+ </events>
+ </Script>
+
+ </Scene>
+</Level>
+
Copied: code/trunk/data/levels/iiJohnVane_Area51UnderFire.oxw (from rev 9938, code/branches/presentationHS13/data/levels/iiJohnVane_Area51UnderFire.oxw)
===================================================================
--- code/trunk/data/levels/iiJohnVane_Area51UnderFire.oxw (rev 0)
+++ code/trunk/data/levels/iiJohnVane_Area51UnderFire.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,2045 @@
+<!-- (ii) John Vane : Trip to Area 51-->
+
+<!--
+To Do:
+- Quest-Problem
+- Time the explosion right and no loops
+- Bigger explosion?
+- If possible, do the scout with DistanceTriggerBeacon
+- DistanceTriggerBeacon for Captain Hood
+-->
+
+<LevelInfo
+ name = "(ii) John Vane : Area 51 Under Fire"
+ description = "Level-part with the big Spacefight"
+ tags = "mission"
+ screenshot = "emptylevel.png"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+?>
+
+<?lua
+ include("templates/spaceshipAssff2.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipEscort.oxt")
+ include("templates/spaceshipSwallow.oxt")
+ include("templates/pickupRepresentationTemplates.oxt")
+ include("templates/spaceshipCollateralDamage.oxt")
+?>
+<?lua
+ dofile("includes/CuboidSpaceStation.lua")
+?>
+
+<Level
+ gametype = "Mission"
+>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+
+ <?lua include("includes/notifications.oxi") ?>
+
+
+ <NotificationQueueCEGUI
+ name="narrative"
+ targets="simpleNotification"
+ size=3
+ displayTime=4.9
+ position="0.2, 0, 0.1, 0"
+ fontSize="23"
+ fontColor="0.3, 1, 0.2, 0.8"
+ alignment="HorzCentred"
+ displaySize="0.6, 0, 0, 0"
+ />
+
+<Scene
+ ambientlight = "0.8, 0.8, 0.8"
+ skybox = "Orxonox/Starbox"
+ >
+ <?lua include("includes/pickups.oxi") ?>
+
+<Script code="showGUI NotificationLayer false true" needsGraphics="true" />
+<OverlayGroup name="spacefightHUD" scale = "1, 1">
+ <CountDown
+ position = "0.51, 0.05"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.1
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "center"
+ counter = "10.0"
+ speedfactor = "1.0"
+ active = "false"
+ >
+ <events>
+ <activity>
+ <EventListener event="timer1" />
+ </activity>
+ </events>
+ </CountDown>
+</OverlayGroup>
+
+<!-- SPAWNTRIGGER -->
+ <!-- StartPoint -->
+ <SpawnPoint team=0 position="0, 0, 0" lookat="100, 0, 0" spawnclass=SpaceShip pawndesign=spaceshipcollateraldamage >
+ <events>
+ <activity>
+ <EventListener event="flying12" />
+ </activity>
+ </events>
+ </SpawnPoint>
+
+ <EventTrigger name="flying12" invert="true" >
+ <events>
+ <trigger>
+ <EventListener event="flying1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <!-- Second Spawnpoint (after first guard) -->
+ <SpawnPoint team=0 position="13500, 2500, 10500" lookat="18000,5000,18000" spawnclass=SpaceShip pawndesign=spaceshipcollateraldamage >
+ <events>
+ <activity>
+ <EventTrigger>
+ <EventTrigger invert=true >
+ <events>
+ <trigger>
+ <EventListener event="reached" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="flying1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </activity>
+ </events>
+ </SpawnPoint>
+
+ <!-- Thirth Spawnpoint (when reached Captain Hood) -->
+ <SpawnPoint team=0 position="-4000, -18000, 19000" lookat="-12000, -22000, 25000" spawnclass=SpaceShip pawndesign=spaceshipcollateraldamage >
+ <events>
+ <activity>
+ <EventTrigger>
+ <EventTrigger invert=true >
+ <events>
+ <trigger>
+ <EventListener event="timerEnd" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="reached" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </activity>
+ </events>
+ </SpawnPoint>
+
+ <!-- Distance-Spawn-Trigger -->
+ <DistanceTrigger name=spawntrigger2 position="0, 0, 0" target="SpaceShip" distance=10 stayActive="true" delay=0 />
+
+ <!-- Drone pickup -->
+ <PickupSpawner pickup=dronepickup position="9750, -5350, 5650" triggerDistance="100" respawnTime="30" maxSpawnedItems="2" />
+
+ <!-- QUEST DESCRIPTION -->
+ <LocalQuest id="spacefight.guard1">
+ <QuestDescription
+ title="The first guard!"
+ description="You've reached the enemys Station and they haven't seen you yet.
+
+ Ahead you see the first little patrol.
+ There are two little battleships and also two unarmed ships.
+ The unarmed could not attack you. So first destroy the battleships!"
+ failMessage="You've lost all your ships!"
+ completeMessage="Well done!" />
+ </LocalQuest>
+
+ <LocalQuest id="spacefight.upgrade1">
+ <QuestDescription
+ title="Prepare for the fight (optional)"
+ description="Your friends has an arsenal left behind near by your position.
+ perhaps you find something useful there...
+ Hint: look for a big asteroid."
+ failMessage="You've lost all your ships!"
+ completeMessage="Your ship is prepared best for the second and last guard on the way to the mainship.
+ Now attack the second guard!" />
+ </LocalQuest>
+
+ <!-- Quest-Problem: Quests couldn't be started and completed --
+ <LocalQuest id="spacefight.guard2">
+ <QuestDescription
+ title="The second guard!"
+ description="There is also a second guard. The blinking light shows you the direction.
+ Destroy also this guard!"
+ failMessage="You've lost all your ships!"
+ completeMessage="" />
+ </LocalQuest>
+
+ <LocalQuest id="spacefight.escape">
+ <QuestDescription
+ title="Catch the messenger!"
+ description="A messenger is on the way to warn the troups of the mainship.
+ Destroy him before he is near by the mainship.
+ Else the fight against the enemys troups will be much more difficult."
+ failMessage="The messenger has reached the mainship.
+ Prepare to fight against a strong enmey!"
+ completeMessage="Well done! Now the element of surprise will be ours!" />
+ </LocalQuest>
+
+ <!-- 2 different possibilitys --
+ <!-- Spion is destroyed --
+ <LocalQuest id="spacefight.mainfight(min)" >
+ <QuestDescription
+ title="The big fight!"
+ description="Now the time is come!
+ You've done all you can to prepare you for this spacebattle.
+ Let us see, if it was enough.
+
+ ATTACK!!!"
+ failMessage="You've lost all your ships!"
+ completeMessage="YEEEHAAA!
+ You managed it! For that you will get the golden medal of the united space armies." />
+ <complete-effects>
+ <AddQuest questId="spacefight.rescue" />
+ </complete-effects>
+ </LocalQuest>
+
+ <!-- Spion isn't destroyed --
+ <LocalQuest id="spacefight.mainfight(max)" >
+ <QuestDescription
+ title="The big fight!"
+ description="Now the time is come!
+ You've done all you can to prepare you for this spacebattle.
+ Unfortunately the spion has alert the mainship. So the soldiers will also be prepared for you.
+ But you can manage it.
+ Good luck!"
+ failMessage="You've lost all your ships!"
+ completeMessage="YEEEHAAA!
+ You managed it! For that you will get the golden medal of the united space armies." />
+ <complete-effects>
+ <AddQuest questId="spacefight.rescue" />
+ </complete-effects>
+ </LocalQuest>
+
+ <LocalQuest id="spacefight.rescue" >
+ <QuestDescription
+ title="Rescue and place the bomb"
+ description="Now you have to free the commander and place a bomb in the pirates' mainship."
+ failMessage="You've lost all your ships!"
+ completeMessage="" />
+ <complete-effects>
+ <AddQuest questId="spacefight.moveAway" />
+ </complete-effects>
+ </LocalQuest>
+
+ <LocalQuest id="spacefight.moveAway" >
+ <QuestDescription
+ title="Get away!"
+ description="Get away of the mainship before the bomb detonates."
+ failMessage="You've lost all your ships!"
+ completeMessage="Done!" />
+ </LocalQuest>
+
+ <!-- End of Mission -->
+
+<!-- ---------------------------------------------------------------------- -->
+<!-- QuestEffectBeacon's (not all necessary, because not all Quests work -->
+ <!-- START -->
+ <QuestEffectBeacon times=0>
+ <effects>
+ <AddQuest questId="spacefight.guard1" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event=spawntrigger2 />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <QuestEffectBeacon times=0>
+ <events>
+ <execute>
+ <EventListener event="flying1" />
+ </execute>
+ </events>
+ <effects>
+ <CompleteQuest questId="spacefight.guard1" />
+ </effects>
+ </QuestEffectBeacon>
+
+ <SimpleNotification message="Houston: Well done!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="flying1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="flying1delay" activations="1" stayactive="true" delay=5.1 >
+ <events>
+ <trigger>
+ <EventListener event="flying1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: The green light shows you the way!" broadcast="true" >
+ <events>
+ <trigger>
+ <EventListener event="flying1delay" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <!-- Is activ at flying 1 and again inactive when flying2-->
+ <BlinkingBillboard position="11000, 1000, 7000" colour="0.0, 1.0, 0.0" frequency=0.5 amplitude=10 material="Examples/Flare" >
+ <events>
+ <visibility>
+ <EventTrigger>
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event="flying2" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="flying1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+ </BlinkingBillboard>
+
+ <!-- Drone (optional quest) -->
+ <QuestEffectBeacon times=0>
+ <effects>
+ <AddQuest questId="spacefight.upgrade1" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="droneTrigger" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <QuestEffectBeacon times=0>
+ <effects>
+ <CompleteQuest questId="spacefight.upgrade1" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="drone1" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <QuestEffectBeacon times=0>
+ <effects>
+ <CompleteQuest questId="spacefight.upgrade1" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="victory" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- Guard 2 -->
+ <QuestEffectBeacon times=0>
+ <effects>
+ <AddQuest questId="spacefight.guard2" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="droneTrigger" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <QuestEffectBeacon times=0>
+ <effects>
+ <CompleteQuest questId="spacefight.guard2" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="flying2" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- ESCAPE -->
+ <SimpleNotification message="Houston: A scout is startet to the mainship!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="guard2trigger1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <QuestEffectBeacon times=0>
+ <effects>
+ <AddQuest questId="spacefight.escape" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="escape10" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- ESCAPE ENDING -->
+ <!-- Spion escaped -->
+ <QuestEffectBeacon times=0>
+ <effects>
+ <CompleteQuest questId="spacefight.escape" />
+ <AddQuest questId="spacefight.mainfight(max)" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="spionTrigger" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- Spion destroyed -->
+ <QuestEffectBeacon>
+ <effects>
+ <CompleteQuest questId="spacefight.escape" />
+ <AddQuest questId="spacefight.mainfight(min)" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="spion5" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- LAST FIGHT -->
+ <!-- Spion destroyed -->
+ <QuestEffectBeacon>
+ <effects>
+ <CompleteQuest questId="spacefight.mainfight(min)" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="guard3trigger4" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- Spion escaped -->
+ <QuestEffectBeacon>
+ <effects>
+ <CompleteQuest questId="spacefight.mainfight(max)" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="guard3trigger6" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- COMMANDER RESCUE -->
+ <QuestEffectBeacon>
+ <effects>
+ <CompleteQuest questId="spacefight.rescue" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="dock" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- FLY AWAY -->
+ <QuestEffectBeacon>
+ <effects>
+ <CompleteQuest questId="spacefight.moveAway" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- End with explosion -->
+
+<!-- ---------------------------------------------------------------------- -->
+ <!-- Helper-Trigger for first guard -->
+ <EventTrigger name="spawntrigger2Delay" stayactive="true" delay=2 >
+ <events>
+ <trigger>
+ <EventListener event=spawntrigger2 />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Attack the first guard!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="spawntrigger2Delay" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="flying1" position="9000, 0, 0" target="SpaceShip" distance=10000 stayActive="true" delay=0.1 >
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="guard1trigger4" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </DistanceTrigger>
+
+ <!-- Trigger to activate the upgrade1-Quest -->
+ <DistanceTrigger name="droneTrigger" position="11000, 1000, 7000" target="SpaceShip" distance=2000 stayActive="true" delay=0.1 />
+ <SimpleNotification message="Houston: Need an Upgrade?" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="droneTrigger" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="droneTriggerDelay" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="droneTrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Search the drone!" broadcast="true" >
+ <events>
+ <trigger>
+ <EventListener event="droneTriggerDelay" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="droneTriggerDelay2" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="droneTriggerDelay" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Else you see the second guard ahead..." broadcast="true" >
+ <events>
+ <trigger>
+ <EventListener event="droneTriggerDelay2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <!-- Helper-Trigger for the drone -->
+ <DistanceTrigger name="drone1" position="9750, -5350, 5650" target="SpaceShip" distance=100 stayActive="true" delay=0.1 />
+ <SimpleNotification message="Houston: Now your are prepared best!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="drone1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="drone1Delay" stayactive="true" delay=5.1 >
+ <events>
+ <trigger>
+ <EventListener event="drone1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Fly back to the green light." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="drone1Delay" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <Trigger name="secondDroneTrigger" mode="and" stayActive="true">
+ <DistanceTrigger name="droneTrigger" position="11000, 1000, 7000" target="SpaceShip" distance=1000 stayActive="true" delay=0.1 />
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="drone1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <SimpleNotification message="Houston: The red light shows you the direction." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="secondDroneTrigger" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <BlinkingBillboard position="12000, 1500, 10000" colour="1.0, 0.0, 0.0" frequency=0.5 amplitude=5 material="Examples/Flare" >
+ <events>
+ <visibility>
+ <EventTrigger>
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event="guard2trigger1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="secondDroneTrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+ </BlinkingBillboard>
+
+ <!-- Helper-Trigger for second guard -->
+ <DistanceTrigger name="flying2" position="17000,5000,15000" target="SpaceShip" distance=20000 stayActive="true" delay=0 >
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="guard2trigger4" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </DistanceTrigger>
+
+ <SimpleNotification message="Houston: Well done!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="flying2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <Trigger name="guard2withoutScout" mode="and" stayActive="true" delay=0 >
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="flying2" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger activations="1" invert="true" >
+ <events>
+ <trigger>
+ <EventListener event="spionEnd" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <EventTrigger name="flying2delay1" activations="1" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="guard2withoutScout" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Catch the scout!" broadcast="true" >
+ <events>
+ <trigger>
+ <EventListener event="flying2delay1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="flying2delay2" activations="1" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="flying2delay1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Before he reachs the red light..." broadcast="true" >
+ <events>
+ <trigger>
+ <EventListener event="flying2delay2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <!-- DistanceTrigger for scout -->
+ <Trigger name="spionTrigger" mode="and" stayActive="true">
+ <DistanceTrigger position="14000, 1000, 22000" target="SpaceShip" distance=50 stayActive="true" delay=0.1 />
+ <EventTrigger activations="1" invert="true">
+ <events>
+ <trigger>
+ <EventListener event="spion5" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <SimpleNotification message="Houston: Scout is arrived!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="spionTrigger" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="spionTriggerDelay" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="spionTrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Now the mainship is alarmed..." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="spionTriggerDelay" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <BlinkingBillboard position="14000, 1000, 22000" colour="1.0, 0.0, 0.0" frequency=0.3 amplitude=7 material="Examples/Flare" >
+ <events>
+ <visibility>
+ <EventTrigger>
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event="spionEnd" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="guard2trigger1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+ </BlinkingBillboard>
+
+ <!-- If scout destroyed -->
+ <SimpleNotification message="Houston: Scout destroyed!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="spion5" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <Trigger name="scoutDestroydAddon" mode="and" stayActive="true" delay=5 >
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="spion5" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="spionTrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <SimpleNotification message="Houston: But the mainship is already warned." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="scoutDestroydAddon" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <!-- Scout end -->
+ <Trigger name="spionEnd" mode="or" stayActive="true" delay=0 >
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="spion5" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="spionTrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <EventTrigger name="spionEndDelay" activations="1" delay=5>
+ <events>
+ <trigger>
+ <EventListener event="spionEnd" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <!-- Intro to Captain Hood -->
+ <Trigger name="introHood" mode="and" stayActive="true">
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="spionEndDelay" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="guard2trigger4" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <EventTrigger name="introHoodDelay1" activations="1" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="introHood" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Your friend, Captain Hood, is" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="introHoodDelay1.2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="introHoodDelay1.2" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="introHoodDelay1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="near by you!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="introHoodDelay1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="introHoodDelay2" activations="1" stayactive="true" delay=5.1 >
+ <events>
+ <trigger>
+ <EventListener event="introHoodDelay1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: He'll show you the way" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="introHoodDelay2.2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="introHoodDelay2.2" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="introHoodDelay2" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="to the mainship!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="introHoodDelay2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <!-- Helper-Trigger for Captain Hood -->
+ <DistanceTrigger name="reached" position="10000, 2000, 17000" target="SpaceShip" distance=1000 stayActive="true" delay=0.1 >
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="guard2trigger4" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </DistanceTrigger>
+
+ <SimpleNotification message="Houston: Follow Captain Hood!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="reached" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="reachedDelay1" activations="1" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="reached" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Hood: Hello my friend!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="reachedDelay2" activations="1" stayactive="true" delay=7 >
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Hood: Good work at the first two guards..." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="reachedDelay3" activations="1" stayactive="true" delay=7 >
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay2" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Hood: But the heaviest part is waiting" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay4" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="reachedDelay4" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay3" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="for us..." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay3" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="reachedDelay5" activations="1" stayactive="true" delay=7 >
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay4" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <Trigger name="reachedDelay6.destroyed" mode="and" stayActive="true">
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay5" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger invert=true >
+ <events>
+ <trigger>
+ <EventListener event="spionTrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <SimpleNotification message="Hood: Good that you've destroyed the scout!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay6.destroyed" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <Trigger name="reachedDelay6.arrived" mode="and" stayActive="true">
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay5" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="spionTrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <SimpleNotification message="Hood: What a pity that you couldn't" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay6.arrived2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="reachedDelay6.arrived2" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay6.arrived" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="destroy the scout..." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="reachedDelay6.arrived" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="discuss" position="-4000, -9000, 18000" target="SpaceShip" distance=50 stayActive="true" delay=0.1 />
+ <SimpleNotification message="Hood: Look, there is the mainship!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="discuss" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <!-- End of Mainfight -->
+ <Trigger name="victory1" mode="and" stayActive="true">
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="guard3trigger4" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="spion5" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <Trigger name="victory2" mode="and" stayActive="true">
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="guard3trigger6" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="spionTrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <Trigger name="victory" mode="or" stayActive="true">
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="victory1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <EventTrigger activations="1" >
+ <events>
+ <trigger>
+ <EventListener event="victory2" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </Trigger>
+
+ <SimpleNotification message="Houston: YEEEHAAA! You managed it!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="victory" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="victoryDelay1" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="victory" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <EventTrigger name="victoryDelay1.1" delay=5.1 >
+ <events>
+ <trigger>
+ <EventListener event="victory" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: For that you will get the golden medal" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="victoryDelay1.1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <SimpleNotification message="of the united space armies." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="victoryDelay1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="victoryDelay2" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="victoryDelay1.1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <EventTrigger name="victoryDelay2.1" delay=5.1 >
+ <events>
+ <trigger>
+ <EventListener event="victoryDelay1.1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: Now dock at the mainship and" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="victoryDelay2.1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <SimpleNotification message="free the Commander!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="victoryDelay2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="victoryDelay3" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="victoryDelay2" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: The light shows you the hatch" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="victoryDelay3" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <!-- Rescue the commander -->
+ <BlinkingBillboard position="-12470, -21870, 25200" colour="0.0, 0.0, 1.0" frequency=0.5 amplitude=5 material="Examples/Flare" >
+ <events>
+ <visibility>
+ <EventTrigger>
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event="dock" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="victory" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+ </BlinkingBillboard>
+
+ <DistanceTrigger name="dock" position="-12470, -21870, 25200" target="SpaceShip" distance=50 stayActive="true" delay=0 />
+ <SimpleNotification message="Houston: The Commander is on board!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="dock" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <!-- TIMER-EVENTS -->
+ <EventTrigger name="dockDelay1" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="dock" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: A bomb is placed in the mainship..." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="dockDelay1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <EventTrigger name="dockDelay2" activations="1" stayactive="true" delay=5.0 >
+ <events>
+ <trigger>
+ <EventListener event="dockDelay1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <SimpleNotification message="Houston: You have 10 seconds to move away..." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="dockDelay2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <EventTrigger name="timer1" activations="1" stayactive="true" delay=5 >
+ <events>
+ <trigger>
+ <EventListener event="dockdelay2" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <EventTrigger name="timerEnd" activations="1" stayactive="true" delay=10 >
+ <events>
+ <trigger>
+ <EventListener event="timer1" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+ <EventTrigger name="negativeTimerEnd" invert="true" delay=0 >
+ <events>
+ <trigger>
+ <EventListener event="timerEnd" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+<!-- ----------------------------------------------------- -->
+<!-- For Guard 1 -->
+<!-- @Triggers: attacktriggerX <-> X enemies destroyed , X is an element of [1,4] -->
+ <EventTrigger name="guard1trigger4" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="firstPatrol" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard1trigger3" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="firstPatrol" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard1trigger2" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="firstPatrol" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard1trigger1" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="firstPatrol" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+
+<!-- For Guard 2 -->
+<!-- @Triggers: attacktriggerX <-> X enemies destroyed , X is an element of [1,4] -->
+ <EventTrigger name="guard2trigger4" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="secondPatrol" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard2trigger3" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="secondPatrol" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard2trigger2" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="secondPatrol" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard2trigger1" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="secondPatrol" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+
+<!-- For Escape -->
+ <EventTrigger name="spion5" stayactive="true" >
+ <events>
+ <trigger>
+ <EventListener event="spion" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+<!-- For last fight -->
+ <EventTrigger name="guard3trigger6" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="lastGuard" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard3trigger5" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="lastGuard" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard3trigger4" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="lastGuard" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard3trigger3" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="lastGuard" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard3trigger2" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="lastGuard" />
+ </trigger>
+ </events>
+ <EventTrigger name="guard3trigger1" activations="1" stayactive="true" delay=0.1 >
+ <events>
+ <trigger>
+ <EventListener event="lastGuard" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+
+<!-- ----------------------------------------------------- -->
+<!-- Passive Pirates: Guard 1 -->
+<SpaceShip position="8000,1000,0" lookat="8000,-1000,0" name="firstPatrol" radarname="Patrol">
+ <events>
+ <visibility>
+ <EventListener event=spawntrigger2 />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointController team=1>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="8000,-1000,0" />
+ <Model mesh="cube.mesh" scale=0 position="8000,1000,0" />
+ </waypoints>
+ </WaypointController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="8000,0,0" lookat="8000,0,-1000" name="firstPatrol" radarname="Patrol">
+ <events>
+ <visibility>
+ <EventListener event=spawntrigger2 />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointController team=1>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="8000,0,-1000" />
+ <Model mesh="cube.mesh" scale=0 position="8000,0,1000" />
+ </waypoints>
+ </WaypointController>
+ </controller>
+</SpaceShip>
+
+
+<!-- Active Pirates: Guard 1 -->
+<SpaceShip position="8000,-1000,1000" lookat="8000,1000,-1000" name="firstPatrol" visible="true" radarname="Patrol" >
+ <events>
+ <visibility>
+ <EventListener event=spawntrigger2 />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="8000,1000,-1000" />
+ <Model mesh="cube.mesh" scale=0 position="8000,-1000,1000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event=spawntrigger2 />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="8000,-500,-500" lookat="8000,1000,1000" name="firstPatrol" visible="true" radarname="Patrol">
+ <events>
+ <visibility>
+ <EventListener event=spawntrigger2 />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="8000,1000,1000" />
+ <Model mesh="cube.mesh" scale=0 position="8000,-1000,-1000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event=spawntrigger2 />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<!-- Pirates Guard 2 -->
+<SpaceShip position="18000,5000,15000" lookat="17700,4300,15000" name="secondPatrol" visible="true" radarname="Patrol">
+ <events>
+ <visibility>
+ <EventListener event="guard1trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="17700,4300,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17000,4000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16300,4300,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16000,5000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16300,5700,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17000,6000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17700,5700,15000" />
+ <Model mesh="cube.mesh" scale=0 position="18000,5000,15000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard1trigger4" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="16000,5000,15000" lookat="16300,5700,15000" name="secondPatrol" visible="true" radarname="Patrol">
+ <events>
+ <visibility>
+ <EventListener event="guard1trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="16300,5700,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17000,6000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17700,5700,15000" />
+ <Model mesh="cube.mesh" scale=0 position="18000,5000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17700,4300,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17000,4000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16300,4300,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16000,5000,15000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard1trigger4" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="17000,4000,15000" lookat="16300,4300,15000" name="secondPatrol" visible="true" radarname="Patrol">
+ <events>
+ <visibility>
+ <EventListener event="guard1trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="16300,4300,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16000,5000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16300,5700,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17000,6000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17700,5700,15000" />
+ <Model mesh="cube.mesh" scale=0 position="18000,5000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17700,4300,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17000,4000,15000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard1trigger4" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="17000,6000,15000" lookat="17700,5700,15000" name="secondPatrol" visible="true" radarname="Patrol">
+ <events>
+ <visibility>
+ <EventListener event="guard1trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="17700,5700,15000" />
+ <Model mesh="cube.mesh" scale=0 position="18000,5000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17700,4300,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17000,4000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16300,4300,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16000,5000,15000" />
+ <Model mesh="cube.mesh" scale=0 position="16300,5700,15000" />
+ <Model mesh="cube.mesh" scale=0 position="17000,6000,15000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard1trigger4" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<!-- Escape-Ship (Scout) -->
+<SpaceShip position="16000,4000,16000" lookat="-12000, -22000, 25000" name="spion" visible="true" radarname="Scout" >
+ <events>
+ <visibility>
+ <EventListener event="guard2trigger1" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointController team=1>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="14000, 1000, 22000" />
+ <Model mesh="cube.mesh" scale=0 position="0, -10000, 42000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard2trigger1" />
+ </activity>
+ </events>
+ </WaypointController>
+ </controller>
+<!-- Should be realized, if possible...
+ <attached>
+ <DistanceTriggerBeacon name="spionBeacon" />
+ </attached>
+-->
+</SpaceShip>
+
+<!-- Pirates Mainship -->
+<SpaceShip position="-10000, -20000, 24000" lookat="-10000, -22000, 24000" name="lastGuard" visible="true" radarname="Pirate" >
+ <events>
+ <visibility>
+ <EventListener event="guard2trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-9500, -22000, 24000" /> <!-- -12000, -22000, 25000 -4000, -18000, 19000 -->
+ <Model mesh="cube.mesh" scale=0 position="-10500, -22000, 23000" />
+ <Model mesh="cube.mesh" scale=0 position="-11000, -20000, 23000" />
+ <Model mesh="cube.mesh" scale=0 position="-10000, -20000, 24000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard2trigger4" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="-10000, -22000, 24000" lookat="-11000, -22000, 23000" name="lastGuard" visible="true" radarname="Pirate" >
+ <events>
+ <visibility>
+ <EventListener event="guard2trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-10500, -22000, 23000" />
+ <Model mesh="cube.mesh" scale=0 position="-11000, -20000, 23000" />
+ <Model mesh="cube.mesh" scale=0 position="-10000, -20000, 24000" />
+ <Model mesh="cube.mesh" scale=0 position="-9500, -22000, 24000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard2trigger4" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="-11000, -22000, 23000" lookat="-11000, -20000, 23000" name="lastGuard" visible="true" radarname="Pirate" >
+ <events>
+ <visibility>
+ <EventListener event="guard2trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-11000, -20000, 23000" />
+ <Model mesh="cube.mesh" scale=0 position="-10000, -20000, 24000" />
+ <Model mesh="cube.mesh" scale=0 position="-9500, -22000, 24000" />
+ <Model mesh="cube.mesh" scale=0 position="-10500, -22000, 23000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard2trigger4" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="-11000, -20000, 23000" lookat="-10000, -20000, 24000" name="lastGuard" visible="true" radarname="Pirate" >
+ <events>
+ <visibility>
+ <EventListener event="guard2trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-10000, -20000, 24000" />
+ <Model mesh="cube.mesh" scale=0 position="-9500, -22000, 24000" />
+ <Model mesh="cube.mesh" scale=0 position="-10500, -22000, 23000" />
+ <Model mesh="cube.mesh" scale=0 position="-11000, -20000, 23000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="guard2trigger4" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<!-- Additional pirates if the scout has warned the mainship -->
+<SpaceShip position="-10500, -20000, 23500" lookat="-10000, -21000, 24000" name="lastGuard" visible="true" radarname="Pirate" >
+ <events>
+ <visibility>
+ <EventListener event="spionTrigger" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-9750, -21000, 24000" />
+ <Model mesh="cube.mesh" scale=0 position="-10000, -22000, 23500" />
+ <Model mesh="cube.mesh" scale=0 position="-10750, -21000, 23000" />
+ <Model mesh="cube.mesh" scale=0 position="-10500, -20000, 23500" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="spionTrigger" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<SpaceShip position="-10500, -22000, 23500" lookat="-11000, -21000, 23000" name="lastGuard" visible="true" radarname="Pirate" >
+ <events>
+ <visibility>
+ <EventListener event="spionTrigger" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-10750, -21000, 23000" />
+ <Model mesh="cube.mesh" scale=0 position="-10500, -20000, 23500" />
+ <Model mesh="cube.mesh" scale=0 position="-9750, -21000, 24000" />
+ <Model mesh="cube.mesh" scale=0 position="-10000, -22000, 23500" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="spionTrigger" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<!-- Captain Hood (Friend) -->
+<SpaceShip position="8500, 2000, 17000" lookat="0, -1000, 18000" name="friend" visible="true" radarname="Hood" >
+ <events>
+ <visibility>
+ <EventListener event="guard2trigger4" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshipswallow />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=5000 team=0 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-4000, -9000, 18000" />
+ <Model mesh="cube.mesh" scale=0 position="-11500, -22000, 25000" />
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="reached" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+</SpaceShip>
+
+<BlinkingBillboard position="10000, 2000, 17000" colour="1.0, 1.0, 0.0" frequency=0.5 amplitude=20 material="Examples/Flare" >
+ <events>
+ <visibility>
+ <EventTrigger>
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event="reached" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="spion5" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</BlinkingBillboard>
+
+<SimpleNotification message="Houston: Your friend Captain Hood is dead..." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="friend" />
+ </trigger>
+ </events>
+</SimpleNotification>
+
+<EventTrigger name="friendDelay1" stayactive="true" delay=5.0 >
+ <events>
+ <trigger>
+ <EventListener event="friend" />
+ </trigger>
+ </events>
+</EventTrigger>
+
+<SimpleNotification message="Vane: NOOOOO!!!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="friendDelay1" />
+ </trigger>
+ </events>
+</SimpleNotification>
+
+<EventTrigger name="friendDelay2" stayactive="true" delay=5.0 >
+ <events>
+ <trigger>
+ <EventListener event="friendDelay1" />
+ </trigger>
+ </events>
+</EventTrigger>
+
+<SimpleNotification message="Houston: He died in a fight like he wished it!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="friendDelay2" />
+ </trigger>
+ </events>
+</SimpleNotification>
+
+<!-- ----------------------------------------------------- -->
+
+<Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0" />
+
+
+
+<!-- ASTEROIDS & ASTEROID-FIELDS -->
+ <!-- Asteroids -->
+ <Model position="9800, -5000, 5700"
+ yaw="90"
+ pitch="-90"
+ roll="0"
+ scale="200"
+ mesh="asteroid_ice.mesh" >
+ <attached>
+<!-- <Model mass=10 scale3D="0.5,0.5,0.5" mesh="cube.mesh" position = "0,0,0" yaw=0 pitch=0 roll=0 /> -->
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius=0.5 />
+ </collisionShapes>
+ </Model>
+
+ <!-- triple large belt around the planet -->
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(2000, -250, 9000, 30, 0, 30, 30, 50, 7190, 7800, 250, 1)
+ ?>
+
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(2000, -250, 9000, 30, 0, 30, 30, 50, 10000, 11000, 300, 1)
+ ?>
+
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(2000, -250, 9000, 30, 0, 30, 30, 50, 14000, 15000, 350, 1)
+ ?>
+
+ <!-- between guard 2 & mainship -->
+ <!-- Core -->
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidField(-5000, -10000, 30000, 10, 700, 8000, 80, 0)
+ ?>
+
+ <!-- Peripherie -->
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidField(-5000, -10000, 30000, 10, 50, 10000, 100, 0)
+ ?>
+
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(-10000, -12500, 0, 0, 0, 30, 30, 500, 0, 7850, 150, 0)
+ ?>
+
+ <!-- PLANETS -->
+ <Planet position="2000,-250,9000"
+ scale=5000
+ pitch=1
+ mesh="iceplanet.mesh"
+ atmosphere="atmosphere1"
+ rotationaxis="1,1,0"
+ rotationrate="0.5"
+ atmospheresize=224.0f
+ imagesize=1024.0f
+ mass="10000000"
+ angularDamping=0
+ collisiondamage=2
+ enablecollisiondamage=true
+ collisionType="dynamic" />
+
+
+<!-- ----------------Rotating SpaceStation--------------- -->
+ <!-- first guard -->
+ <StaticEntity position="9000,0,0" collisionType=static yaw=112 pitch=67 >
+ <attached>
+ <?lua
+ createSpaceStationPar(0,2,1,2,1,4,1,50)
+ ?>
+ </attached>
+ </StaticEntity>
+
+ <!-- second guard -->
+ <StaticEntity position="17000,5000,15000" collisionType=static yaw=12 pitch=75 >
+ <attached>
+ <?lua
+ createSpaceStationPar(0,2,1,2,1,4,1,50)
+ ?>
+ </attached>
+ </StaticEntity>
+
+<!-- ------------------------- Mainship ------------------ -->
+ <SpaceShip
+ team = 1
+ position = "-12000, -22000, 25000"
+ mass = 10000000000
+ health = 100000 initialhealth=100000 maxhealth="100000"
+ name = "Mainship"
+ radarname = "Mainship"
+ visible = "true" >
+ <controller>
+ <WaypointController team=1 active="true" >
+ <waypoints/>
+ <events>
+ <activity>
+ <EventListener event=spawntrigger2 />
+ </activity>
+ </events>
+ </WaypointController>
+ </controller>
+ <attached>
+ <Model scale=200 mesh="drone.mesh" position = "0,0,0" lookat="40000, 4000, 27000" />
+<!-- <Model mesh="cube.mesh" mass=10 position="-445,110,120" scale3D="45,45,150" yaw=56 pitch=-4 roll=0 />
+ <Model mesh="cube.mesh" mass=10 position="-295,125,220" scale3D="28,28,28" yaw=56 pitch=-4 roll=0 />
+ <Model mesh="cube.mesh" mass=10 position="-400,350,-200" scale3D="80,280,800" yaw=56 pitch=-4 roll=5 />
+ <Model mesh="cube.mesh" mass=10 position="-300,630,-100" scale3D="250,50,500" yaw=56 pitch=-4 roll=5 />
+ <Model mesh="cube.mesh" mass=10 position="-150,-150,-550" scale3D="80,280,800" yaw=56 pitch=-4 roll=65 />
+ <Model mesh="cube.mesh" mass=10 position="150,-270,-600" scale3D="250,50,500" yaw=56 pitch=-4 roll=65 />
+ <Model mesh="cube.mesh" mass=10 position="-500,-250,0" scale3D="80,280,800" yaw=56 pitch=-4 roll=-50 />
+ <Model mesh="cube.mesh" mass=10 position="-500,-420,250" scale3D="250,50,500" yaw=56 pitch=-4 roll=-50 /> -->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-445,110,120" halfExtents="45,45,150" yaw=56 pitch=-4 roll=0 />
+ <BoxCollisionShape position="-295,125,220" halfExtents="28,28,28" yaw=56 pitch=-4 roll=0 />
+ <BoxCollisionShape position="-400,350,-200" halfExtents="80,280,800" yaw=56 pitch=-4 roll=5 />
+ <BoxCollisionShape position="-300,630,-100" halfExtents="250,50,500" yaw=56 pitch=-4 roll=5 />
+ <BoxCollisionShape position="-150,-150,-550" halfExtents="80,280,800" yaw=56 pitch=-4 roll=65 />
+ <BoxCollisionShape position="150,-270,-600" halfExtents="250,50,500" yaw=56 pitch=-4 roll=65 />
+ <BoxCollisionShape position="-500,-250,0" halfExtents="80,280,800" yaw=56 pitch=-4 roll=-50 />
+ <BoxCollisionShape position="-500,-420,250" halfExtents="250,50,500" yaw=56 pitch=-4 roll=-50 />
+ </collisionShapes>
+ <events>
+ <visibility>
+ <EventListener event="negativeTimerEnd" />
+ </visibility>
+ </events>
+ </SpaceShip>
+
+ <!-- PARTICLE EFFECT -->
+ <ParticleSpawner position="-12000, -22000, 25000" source="Orxonox/RingExp" autostart="false" lifetime=500 loop=0 startdelay=0.5>
+ <events>
+ <spawn>
+ <EventListener event="timerEnd" />
+ </spawn>
+ </events>
+ </ParticleSpawner>
+ <ParticleSpawner position="-12000, -22000, 25000" source="Orxonox/RingExp2" autostart="false" lifetime=500 loop=0 startdelay=0>
+ <events>
+ <spawn>
+ <EventListener event="timerEnd" />
+ </spawn>
+ </events>
+ </ParticleSpawner>
+ <ParticleSpawner position="-12000, -22000, 25000" source="Orxonox/RingExp3" autostart="false" lifetime=500 loop=0 startdelay=0>
+ <events>
+ <spawn>
+ <EventListener event="timerEnd" />
+ </spawn>
+ </events>
+ </ParticleSpawner>
+
+ </Scene>
+</Level>
+
Copied: code/trunk/data/levels/iiiJohnVane_EscapeTheBastards.oxw (from rev 9938, code/branches/presentationHS13/data/levels/iiiJohnVane_EscapeTheBastards.oxw)
===================================================================
--- code/trunk/data/levels/iiiJohnVane_EscapeTheBastards.oxw (rev 0)
+++ code/trunk/data/levels/iiiJohnVane_EscapeTheBastards.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,1418 @@
+<!-- -->
+
+<!--TODO
+
+Everything works fine, there are just some design issues:
+
+ - Better Homeplanet Design
+ - Change Boxdesign at the End (metal_crate.mesh instead of crate.mesh)
+ - Apply Boxcollison
+ - Green Box at the end Triangular
+ - Better Portal Jump
+ - better forcefield
+ - Sun Background (Particle Effects)
+ - Asteroid Belts around Planets (without lags!!!)
+-->
+
+
+<!--
+Basic ------------------------------------------------------------------------------------------------------------------------>
+ <!--Basic Infos-->
+
+<LevelInfo
+ name = "(iii) John Vane: Escape the Bastards"
+ description = "You destroyed their Base, you accomplished the mission. Now get out of there, and get rid of the haunters"
+ tags = "mission"
+ screenshot = "EscapeTheBastards.png"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+?>
+
+<?lua
+ include("templates/pickupRepresentationTemplates.oxt")
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipEscort.oxt")
+ include("templates/spaceshipCollateralDamage.oxt")
+ include("templates/spaceshipTurret.oxt")
+?>
+
+ <NotificationQueueCEGUI
+ name="narrative"
+ targets="simpleNotification"
+ size=3
+ displayTime=4
+ position="0.2, 0, 0.1, 0"
+ fontSize="23"
+ fontColor="0, 0.5, 1, 0.9"
+ alignment="HorzCentred"
+ displaySize="0.6, 0, 0, 0"
+ />
+
+<Level
+ name = "Escape the bastards"
+ description = "You destroyed their Base, you accomplished the mission. Now get out of there, and get rid of the haunters"
+ gametype=Mission
+>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+ <?lua include("includes/notifications.oxi") ?>
+
+ <Scene
+ ambientlight = "0.8, 0.8, 0.8"
+ skybox = "Orxonox/skyBoxMoreNebula"
+ >
+
+ <?lua
+ include("includes/pickups.oxi")
+ ?>
+
+ <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
+
+
+
+ <!-- SpawnPoint team=0 position="-1000,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipassff / -->
+
+<!-- Pickups -->
+
+ <PickupSpawner pickup=dronepickup position="-5000,-1300,-209" triggerDistance="10" respawnTime="30" maxSpawnedItems="10" />
+
+ <PickupSpawner pickup=hugehealthpickup position="0,-4,-1540" triggerDistance="10" respawnTime="10" maxSpawnedItems="99" visible="true">
+ <events>
+ <visibility>
+ <EventListener event="boxtrigger" />
+ </visibility>
+ </events>
+ </PickupSpawner>
+ <PickupSpawner pickup=mediumspeedpickup position="0,4,-1540" triggerDistance="10" respawnTime="10" maxSpawnedItems="99" visible="true">
+ <events>
+ <visibility>
+ <EventListener event="boxtrigger" />
+ </visibility>
+ </events>
+ </PickupSpawner>
+
+<!-- Pickups heal the box, so one cant destroy the box -->
+
+<!-- Pickups END -->
+ <!--Basic Infos end-->
+
+<!--Story----------------------------------------------------------------------------------------------------------------------------------------------------------------------->
+
+
+<!--Quests (Fly to the Ally)-->
+ <EventMultiTrigger name=spawntrigger>
+ <events>
+ <trigger>
+
+ <TeamSpawnPoint team=0 position="-8050,0,0" direction="1,0.3,0.2" spawnclass=SpaceShip pawndesign=spaceshipcollateraldamage>
+<!-- Spawnpoint aendern zu -8050,0,0 nachher direction="1,0.3,0.2"-->
+<!-- Spawnpoint aendern zu 3000,12000,-5500 nachher direction="0.3,1.2,-5.5" Fuer homeplanet-->
+<!-- Spawnpoint aendern zu -46950,-30000,30000 nachher direction="1,0,0" Fuer inBox-->
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event="missionfinish" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </TeamSpawnPoint>
+ </trigger>
+ </events>
+ </EventMultiTrigger>
+
+
+ <TeamSpawnPoint team=0 position="0,-2500,0" direction="0,-1,0" spawnclass=SpaceShip pawndesign=spaceshipcollateraldamage active =false>
+ <events>
+ <activity>
+ <EventListener event="reachedally" />
+ </activity>
+ </events>
+ </TeamSpawnPoint>
+
+ <TeamSpawnPoint team=0 position="-46950,-30000,30000" direction="1,0,0" spawnclass=SpaceShip pawndesign=spaceshipcollateraldamage active =false>
+ <events>
+ <activity>
+ <EventListener event="cave1" />
+ </activity>
+ </events>
+ </TeamSpawnPoint>
+
+
+
+
+ <QuestEffectBeacon times=1>
+ <effects>
+ <AddQuest questId="Helpisontheway.1" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event=spawntrigger />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <QuestEffectBeacon times=1>
+ <effects>
+ <CompleteQuest questId="Helpisontheway.1" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="missionfinish" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+
+ <QuestEffectBeacon times=1 >
+ <effects>
+ <CompleteQuest questId="defend.2" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="Boxdestroyed" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <QuestEffectBeacon times=1 >
+ <effects>
+ <CompleteQuest questId="leave.3" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="reachedhomeplanet" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <QuestEffectBeacon times=1 >
+ <effects>
+ <CompleteQuest questId="wayhome.4" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="reachedend" />
+ </execute>
+ </events>
+ </QuestEffectBeacon>
+
+ <!-- END OF GAME -->
+ <SimpleNotification message="Well done, you've finished">
+ <events>
+ <trigger>
+ <EventListener event=reachedend />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <Script code="Mission endMission true" onLoad="false">
+ <events>
+ <trigger>
+ <EventListener event="reachedend" />
+ </trigger>
+ </events>
+ </Script>
+ <!-- END OF GAME END -->
+
+
+ <DistanceTrigger name="missionfinish" position="-120,0,0" target="Pawn" distance=60 stayActive="true" delay=1>
+ </DistanceTrigger>
+ <DistanceTrigger name="reachedally" position="-120,0,0" target="Pawn" distance=60 stayActive="true" delay=0>
+ </DistanceTrigger>
+ <DistanceTrigger name="reachedhomeplanet" position="-3000,12000,-6990" target="Pawn" distance=100 stayActive="true" delay=0>
+ </DistanceTrigger>
+ <DistanceTrigger name="reachedend" position="-41000,-30000,33800" target="Pawn" distance=60 stayActive="true" delay=2>
+ </DistanceTrigger>
+
+ <EventTrigger name="boxtrigger" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="box" />
+ </trigger>
+ </events>
+ </EventTrigger>
+
+
+<!-- Billboard Allyplanet -->
+
+<BlinkingBillboard position="-120,0,0" frequency=0.4 amplitude=3 material="Flares/lensflare" colour="1,1,0.05">
+ <events>
+ <visibility>
+ <EventTrigger invert=true>
+ <events>
+ <trigger>
+ <EventListener event="missionfinish" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</BlinkingBillboard>
+
+<Billboard position="-120,0,0" amplitude=1 material="Flares/lensflare" colour="0,0.8,0.1">
+ <events>
+ <visibility>
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="missionfinish" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</Billboard>
+
+<!-- Billboard Allyplanet END-->
+
+
+<!-- Box with Pickups -->
+ <Pawn team=1 health=30 position="0,0,-1500" direction="0,-1,0" collisionType=dynamic mass=100000 name=box radarname = "Something" >
+ <events>
+ <visibility>
+ <EventListener event="target3" />
+ </visibility>
+ </events>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="5,5,5" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
+ </collisionShapes>
+ <controller>
+ <WaypointController team=1>
+ </WaypointController>
+ </controller>
+ </Pawn>
+
+<Billboard position="0,0,-1540" amplitude=1 material="Flares/lensflare" colour="0,0.8,0.1">
+ <events>
+ <visibility>
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="boxtrigger" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</Billboard>
+<!-- Box with Pickups END -->
+
+<!-- Billboard Homeplanet -->
+
+<!-- evt Blinking light before landing on planet, Entfernen nach architektur-->
+<BlinkingBillboard position="-3000,12000,-6990" frequency=0.4 amplitude=3 material="Flares/lensflare" colour="1,1,0.05">
+ <events>
+ <visibility>
+ <EventTrigger>
+ <events>
+ <trigger>
+ <EventListener event="boxtrigger"/> <!-- reachedhomeplanet-->
+ </trigger>
+ </events>
+ </EventTrigger>
+ </visibility>
+ </events>
+</BlinkingBillboard>
+
+
+<!-- Billboard Homeplanet END-->
+
+
+<!--Quests (Fly to the Ally) END-->
+
+<!--Quests (Fight Enemies)-->
+
+
+ <SpaceShip position="1000,0,0" lookat="0,0,1" name="attacker" radarname="Fighter1" visible="true">
+ <events>
+ <visibility>
+ <EventListener event="missionfinish" />
+ </visibility>
+ </events>
+
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=750 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="1000,0,0"/>
+ <Model mesh="cube.mesh" scale=0 position="500,500,0"/>
+ <Model mesh="cube.mesh" scale=0 position="0,1000,0"/>
+ <Model mesh="cube.mesh" scale=0 position="-500,500,0"/>
+ <Model mesh="cube.mesh" scale=0 position="-1000,0,0"/>
+ <Model mesh="cube.mesh" scale=0 position="-500,-500,0"/>
+ <Model mesh="cube.mesh" scale=0 position="0,-1000,0"/>
+ <Model mesh="cube.mesh" scale=0 position="500,-500,0"/>
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="reachedally" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+ </SpaceShip>
+
+ <SpaceShip position="0,1000,0" lookat="1,0,0" name="attacker" radarname="Fighter2" visible="true">
+ <events>
+ <visibility>
+ <EventListener event="missionfinish" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=750 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="0,1000,0"/>
+ <Model mesh="cube.mesh" scale=0 position="0,500,500"/>
+ <Model mesh="cube.mesh" scale=0 position="0,0,1000"/>
+ <Model mesh="cube.mesh" scale=0 position="0,-500,500"/>
+ <Model mesh="cube.mesh" scale=0 position="0,-1000,0"/>
+ <Model mesh="cube.mesh" scale=0 position="0,-500,-500"/>
+ <Model mesh="cube.mesh" scale=0 position="0,0,-1000"/>
+ <Model mesh="cube.mesh" scale=0 position="0,500,-500"/>
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="reachedally" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+ </SpaceShip>
+
+ <SpaceShip position="0,0,1000" lookat="0,1,0" name="attacker" radarname="Fighter3" visible="true">
+ <events>
+ <visibility>
+ <EventListener event="missionfinish" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=750 team=1 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="1000,0,0"/>
+ <Model mesh="cube.mesh" scale=0 position="500,0,500"/>
+ <Model mesh="cube.mesh" scale=0 position="0,0,1000"/>
+ <Model mesh="cube.mesh" scale=0 position="-500,0,500"/>
+ <Model mesh="cube.mesh" scale=0 position="-1000,0,0"/>
+ <Model mesh="cube.mesh" scale=0 position="-500,0,-500"/>
+ <Model mesh="cube.mesh" scale=0 position="0,0,-1000"/>
+ <Model mesh="cube.mesh" scale=0 position="500,0,-500"/>
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="reachedally" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+ </SpaceShip>
+
+<!-- @Triggers: Attakers, Fight one by one -->
+
+ <EventTrigger name="target3" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="attacker" />
+ </trigger>
+ </events>
+ <EventTrigger name="target2" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="attacker" />
+ </trigger>
+ </events>
+ <EventTrigger name="target1" activations="1" stayactive="true" delay=0.1>
+ <events>
+ <trigger>
+ <EventListener event="attacker" />
+ </trigger>
+ </events>
+ </EventTrigger>
+ </EventTrigger>
+ </EventTrigger>
+
+
+ <SimpleNotification message="Wow, That's an explosion." broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="target1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <SimpleNotification message="Booom, you got him!" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="target2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <SimpleNotification message="No Mercy!! .. What's that?" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="target3" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+
+
+<!-- @Triggers: Attakers, Fight one by one END -->
+
+
+<!--Quests (Fight Enemies) END-->
+
+
+<!-- LocalQuests -->
+ <LocalQuest id="Helpisontheway.1">
+ <QuestDescription title="Help is on the way" description="An allied pilot is cast away on a planet in front of you. Pick him up and leave.
+
+
+ Hint: He will blink with his lamp
+
+ PS: Remind the gravitation field"
+
+
+ failmessage="Well, you sucked" completeMessage="Well done, You're a hero" />
+ <complete-effects>
+ <AddQuest questId="defend.2" />
+ </complete-effects>
+ </LocalQuest>
+
+
+ <LocalQuest id="defend.2">
+ <QuestDescription title="Defend the Planet" description="Well your enemies trapped you. Kill'em all."
+
+ failmessage="Well, you sucked" completeMessage="Well done, You're a hero" />
+ <complete-effects>
+ <AddQuest questId="leave.3" />
+ </complete-effects>
+ </LocalQuest>
+
+
+
+ <LocalQuest id="leave.3">
+ <QuestDescription title="Leave the Place" description="You've blown their minds. Let's go home. Aim the Big blue planet to reach your home." failmessage="" completeMessage="" />
+ <complete-effects>
+ <AddQuest questId="wayhome.4" />
+ </complete-effects>
+ </LocalQuest>
+
+ <LocalQuest id="wayhome.4">
+ <QuestDescription title="Let's go home" description="You've reached the portal. You've been teleportet to the passage to your home, but your enemies trapped you again" failmessage="" completeMessage="" />
+ <complete-effects>
+ <AddQuest questId="end.5" />
+ </complete-effects>
+ </LocalQuest>
+
+<!-- LocalQuests END -->
+
+<!-- Message Triggers -->
+ <DistanceTrigger name="StartofMission" position="-8050,0,0" target="Pawn" distance=10 stayActive="true" delay=1.2/>
+ <SimpleNotification message="Houston: John can you hear me?">
+ <events>
+ <trigger>
+ <EventListener event="StartofMission" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="Introduction1" position="-8050,0,0" target="Pawn" distance=30 stayActive="true" delay=6.4/>
+ <SimpleNotification message="John: No. Can i go home now?">
+ <events>
+ <trigger>
+ <EventListener event="Introduction1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="Introduction2" position="-8050,0,0" target="Pawn" distance=30 stayActive="true" delay=10.8/>
+ <SimpleNotification message="Houston: Not yet, another ally needs your help.">
+ <events>
+ <trigger>
+ <EventListener event="Introduction2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="Introduction3" position="-8050,0,0" target="Pawn" distance=30 stayActive="true" delay=15.2/>
+ <SimpleNotification message="Houston: He had to force land near you.">
+ <events>
+ <trigger>
+ <EventListener event="Introduction3" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <DistanceTrigger name="PickedUpAlly" position="-120,0,0" target="Pawn" distance=30 stayActive="true" delay=0.1/>
+ <SimpleNotification message="John: Are you kidding me, thats a kitty.">
+ <events>
+ <trigger>
+ <EventListener event="PickedUpAlly" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="PickedUpAlly1" position="-120,0,0" target="Pawn" distance=30 stayActive="true" delay=4.4/>
+ <SimpleNotification message="Houston: ... but if there is no ally...">
+ <events>
+ <trigger>
+ <EventListener event="PickedUpAlly1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="PickedUpAlly2" position="-120,0,0" target="Pawn" distance=30 stayActive="true" delay=8.8/>
+ <SimpleNotification message="Houston: F***, they trapped us">
+ <events>
+ <trigger>
+ <EventListener event="PickedUpAlly2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <SimpleNotification message="Houston: Pickups! Pick them up :-)" broadcast="true">
+ <events>
+ <trigger>
+ <EventListener event="boxtrigger" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="Boxdestroyed" position="0,0,-1540" target="SpaceShip" distance=50 stayActive="true" delay=0.1 />
+ <SimpleNotification message="Houston: Now aim the blue planet">
+ <events>
+ <trigger>
+ <EventListener event="Boxdestroyed" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <DistanceTrigger name="Boxdestroyed2" position="0,0,-1540" target="SpaceShip" distance=50 stayActive="true" delay=4.4 />
+ <SimpleNotification message="Houston: Land near the blinking light!">
+ <events>
+ <trigger>
+ <EventListener event="Boxdestroyed2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+ <SimpleNotification message="Houston: You're almost there">
+ <events>
+ <trigger>
+ <EventListener event="reachedhomeplanet" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+<DistanceTrigger name="cave1" position="-46300,-30000,30000" target="SpaceShip" distance=100 stayActive="true" delay=0.1 />
+ <SimpleNotification message="Houston: You reached the cave, you're safe!!">
+ <events>
+ <trigger>
+ <EventListener event="cave1" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+<DistanceTrigger name="cave2" position="-46300,-30000,30000" target="SpaceShip" distance=100 stayActive="true" delay=4.4 />
+ <SimpleNotification message="Houston: ... wait it's a tr#@$%&^#$...">
+ <events>
+ <trigger>
+ <EventListener event="cave2" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+<DistanceTrigger name="cave3" position="-46300,-30000,30000" target="SpaceShip" distance=100 stayActive="true" delay=8.8 />
+ <SimpleNotification message="John: not again ...">
+ <events>
+ <trigger>
+ <EventListener event="cave3" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+ <SimpleNotification message="Sanchez: I waited for you ...">
+ <events>
+ <trigger>
+ <EventListener event="Reachedtheend" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+
+<!-- Message Triggers END -->
+
+<!--Quests____END-->
+
+
+
+<!--Enviroment-------------------------------------------------------------------------------------------------------------------------------------------------------------------->
+
+ <!--Asteroids Field-->
+
+ <?lua for i=0,750,1 do
+ x=math.random(-8000,-1000)
+ y=math.random(-2345,2345)
+ z=math.random(-2500,2500)
+ scale=math.random(20,70)
+ ?>
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=0 mass="<?lua print(scale * 5) ?>" position="<?lua print(x) ?>,<?lua print(y) ?>,<?lua print(z) ?>" rotationaxis="<?lua print(math.random()) ?>,<?lua print(math.random()) ?>,<?lua print(math.random()) ?>" rotationrate="<?lua print(math.random()*15) ?>" collisiondamage = 0.005
+ enablecollisiondamage = true >
+ <attached>
+ <Model scale="<?lua print(scale) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="<?lua print(scale * 3) ?>" />
+ </collisionShapes>
+ </MovableEntity>
+ <?lua end ?>
+
+ <!--Asteroids Field end -->
+
+
+ <!--Asteroids Random
+
+ "The game lags, when you're flying far away"
+
+
+ <?lua for i=0,300,1 do
+ x=math.random(-12000,4000)
+ y=math.random(-8000,8000)
+ z=math.random(-8000,8000)
+ ?>
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=0 mass="<?lua print(scale * 5) ?>" position="<?lua print(x) ?>,<?lua print(y) ?>,<?lua print(z) ?>" rotationaxis="<?lua print(math.random()) ?>,<?lua print(math.random()) ?>,<?lua print(math.random()) ?>" rotationrate="<?lua print(math.random()*15) ?>" collisiondamage = 0.005
+ enablecollisiondamage = true >
+ <attached>
+ <Model scale="<?lua print(math.random(20,70)) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="<?lua print(scale * 3) ?>" />
+ </collisionShapes>
+ </MovableEntity>
+ <?lua end ?>
+-->
+ <!--Asteroids Random end-->
+
+ <!--Asteroid Elipse-->
+<!-- LAAAGS :-(
+
+ "The game lags, when you're flying far away"
+
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(-3000,12000,-10000, 30, 0, 30, 30, 50, 7190, 7800, 250, 1)
+ ?>
+
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(-3000,12000,-10000, 30, 0, 30, 30, 50, 14000, 15000, 350, 1)
+ ?>
+-->
+
+
+ <?lua
+ max = 20
+ for i = 0, max, 1
+ do
+ y = math.sin(i/max*6)*2000
+ z = math.cos(i/max*6)*2500
+ x = 0
+ ?>
+ <?lua
+ for k = 1, 15, 1
+ do
+ j = math.random()
+ ?>
+
+ <MovableEntity
+ position = "<?lua print(x + math.random() * 500) ?>,<?lua print(y + math.random() * 500) ?>,<?lua print(z + math.random() * 1000) ?>"
+ collisionType = "dynamic"
+ linearDamping = "0.5"
+ angularDamping = "0.01"
+ collisiondamage = "0.01"
+ enablecollisiondamage = "true"
+ scale="<?lua print(j * 5) ?>" >
+ <attached>
+ <Model position="0,0,0" scale="<?lua print(j * 10) ?>" mesh="ast<?lua print( math.mod(i,6) + 1) ?>.mesh">
+ <?lua if k == 5 then ?><attached> <!--asteroid fog-->
+ <ParticleEmitter position="0,0,0" source="Orxonox/Steam" />
+ </attached> <?lua end ?>
+ </Model>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="<?lua print(j * 80) ?>" />
+ </collisionShapes>
+ </MovableEntity>
+ <?lua
+ end
+ ?>
+ <?lua end ?>
+ <!--Asteroid Elipse end-->
+
+ <!--Planet sun-->
+ <Planet position="15000,0,0" scale=1500 pitch=-90 mesh="planets/sol.mesh" atmosphere="atmosphere1" rotationaxis="8,1,0" rotationrate="1" atmospheresize=0 imagesize=1024.0f />
+ <StaticEntity position="2600,0,0" collisionType=static>
+ <collisionShapes>
+ <SphereCollisionShape radius="399" />
+ </collisionShapes>
+ </StaticEntity>
+
+ <Billboard position="15100,0,0" material="Flares/backlightflare" colour="0.7,0.4,0.1" scale=600 />
+
+ <!--Planet END-->
+
+ <!--Planet with Ally-->
+ <Planet
+ position="0,0,0"
+ scale="100"
+ collisionType="dynamic"
+ linearDamping="0.8"
+ angularDamping="0"
+ mass="5000000"
+ pitch="0"
+ mesh="planets/muunilinst.mesh"
+ atmosphere="atmosphere1"
+ rotationaxis="1,0,0"
+ rotationrate="1.0"
+ atmospheresize="80.0f"
+ imagesize="1024.0f"
+ >
+ <attached>
+ <ForceField position="0,0,0" mode="sphere" diameter="1000" velocity="-500" />
+ <ParticleEmitter position="0,0,0" source="Orxonox/fire3" />
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="100" position="0,0,0" />
+ </collisionShapes>
+ </Planet>
+ <!-- Planet with Ally END-->
+
+
+ <!-- Homeplanet -->
+ <Planet
+ position="-3000,12000,-10000"
+ scale="3000"
+ collisionType="dynamic"
+ linearDamping="0.8"
+ angularDamping="0"
+ mass="5000000000000"
+ pitch="0"
+ mesh="iceplanet.mesh"
+ atmosphere="atmosphere1"
+ rotationaxis="0,0,0"
+ rotationrate="0.0"
+ atmospheresize="80.0f"
+ imagesize="1024.0f"
+ >
+ <attached>
+ <ForceField position="0,0,0" mode="sphere" diameter="10000" velocity="-900" />
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="3000" position="0,0,0" />
+ </collisionShapes>
+ </Planet>
+ <!-- Homeplanet END-->
+
+ <!-- Planet around the cave-->
+
+<Planet position="-43500,-30000,31900" scale=5000 pitch=-90 mesh="planets/moon.mesh" atmosphere="atmosphere1" rotationaxis="8,1,0" rotationrate="1" atmospheresize=0 imagesize=1024.0f />
+
+ <!-- Planet around the cave END-->
+
+ <!-- Anotherplanet -->
+ <Planet
+ position="-20000,6000,7000"
+ scale="3000"
+ collisionType="dynamic"
+ linearDamping="0.8"
+ angularDamping="0"
+ mass="5000000000000"
+ pitch="0"
+ mesh="planets/ganymede.mesh"
+ atmosphere="atmosphere1"
+ rotationaxis="0,0,0"
+ rotationrate="0.0"
+ atmospheresize="80.0f"
+ imagesize="1024.0f"
+ >
+ <collisionShapes>
+ <SphereCollisionShape radius="3000" position="0,0,0" />
+ </collisionShapes>
+ </Planet>
+<!-- LAAAGS :-(
+
+ "The game lags, when you're flying far away"
+
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(-20000,6000,7000, 30, 0, 30, 30, 50, 7190, 7800, 250, 1)
+ ?>
+-->
+ <!-- Anotherplanet END-->
+
+ <!-- Homeplanet Architecture-->
+<!-- -3000,12000,-6990 = Billboard position-->
+
+ <!-- <Model position="-3070,12070,-6990" yaw="90" pitch="-90" roll="0" scale="70" mesh="asteroid_ice.mesh" >
+ <collisionShapes>
+ <SphereCollisionShape radius="70" position="0,0,0" />
+ </collisionShapes>
+ </Model>
+-->
+
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=0 mass="500" pitch="90" roll="86" yaw="12" position="-2900,12080,-6990" rotationaxis="0,0,0" rotationrate="0" collisiondamage = 0.01 enablecollisiondamage = true >
+ <attached>
+ <Model scale="70" mesh="asteroid_ice.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="70" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=5 mass="500" pitch="30" roll="11" yaw="51" position="-3200,11950,-6990" rotationaxis="0,0,0" rotationrate="0" collisiondamage = 0.01 enablecollisiondamage = true >
+ <attached>
+ <Model scale="90" mesh="asteroid_ice.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="90" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=5 mass="500" pitch="0" roll="12" yaw="81" position="-2800,12150,-6990" rotationaxis="0,0,0" rotationrate="0" collisiondamage = 0.01 enablecollisiondamage = true >
+ <attached>
+ <Model scale="90" mesh="asteroid_ice.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="90" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=5 mass="500" pitch="0" roll="0" yaw="0" position="-3300,11800,-6990" rotationaxis="0,0,0" rotationrate="0" collisiondamage = 0.01 enablecollisiondamage = true >
+ <attached>
+ <Model scale="155" mesh="asteroid_ice.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="155" />
+ </collisionShapes>
+ </MovableEntity>
+
+
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=5 mass="500" pitch="0" roll="0" yaw="12" position="-3230,12300,-6990" rotationaxis="0,0,0" rotationrate="0" collisiondamage = 0.01 enablecollisiondamage = true >
+ <attached>
+ <Model scale="150" mesh="asteroid_ice.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="150" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=5 mass="500" pitch="13" roll="23"yaw="120" position="-3000,12000,-6820" rotationaxis="0,0,0" rotationrate="0" collisiondamage = 0.01 enablecollisiondamage = true >
+ <attached>
+ <Model scale="100" mesh="asteroid_ice.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="100" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=5 mass="500" pitch="2" roll="12" yaw="43" position="-3250,12100,-6850" rotationaxis="0,0,0" rotationrate="0" collisiondamage = 0.01 enablecollisiondamage = true >
+ <attached>
+ <Model scale="70" mesh="asteroid_ice.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="70" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <MovableEntity collisionType=kinematic linearDamping=0.8 angularDamping=5 mass="500" pitch="0" roll="0" yaw="0" position="-3230,11800,-6990" rotationaxis="0,0,0" rotationrate="0" collisiondamage = 0.01 enablecollisiondamage = true >
+ <attached>
+ <Model scale="85" mesh="asteroid_ice.mesh" shadow=false/>
+ </attached>
+ <collisionShapes>
+ <SphereCollisionShape radius="85" />
+ </collisionShapes>
+ </MovableEntity>
+
+ <!-- Homeplanet Architecture END-->
+
+
+ <!-- Portal-->
+ <Template name=PortalDefault>
+ <PortalEndPoint>
+ <attached>
+ <Model mesh="Spacegate.mesh" yaw="90"/>
+ </attached>
+ </PortalEndPoint>
+ </Template>
+
+ <PortalEndPoint position="-3000,12000,-6990" id="1" distance="40" target="MobileEntity" design="PortalDefault" reenterDelay="0"/>
+ <PortalEndPoint position="-47000,-30000,30000" id="2" distance="40" target="MobileEntity" design="PortalDefault" reenterDelay="0" pitch = "180"/>
+ <PortalLink fromID="1" toID="2" />
+
+
+ <!-- Portal END-->
+
+
+ <!-- The Cave-->
+<!-- verhaeltniss Cube.mesh <-> Crate.mesh 1:5 -->
+
+ <!-- Enemies-->
+<Turret position="-43700,-30000,30000" pitch="0" yaw="90" roll="90">
+ <templates>
+ <Template link=spaceshipturret />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=700 team=3>
+ </WaypointPatrolController>
+ </controller>
+</Turret>
+
+<Turret position="-43700,-30000,33600" pitch="0" yaw="0" roll="0">
+ <templates>
+ <Template link=spaceshipturret />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=3000 team=3>
+ </WaypointPatrolController>
+ </controller>
+</Turret>
+
+<Turret position="-43720,-30000,31000" pitch="0" yaw="0" roll="0">
+ <templates>
+ <Template link=spaceshipturret />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=3000 team=3>
+ </WaypointPatrolController>
+ </controller>
+</Turret>
+
+<Turret position="-43700,-29980,32100" pitch="0" yaw="0" roll="0">
+ <templates>
+ <Template link=spaceshipturret />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=3000 team=3>
+ </WaypointPatrolController>
+ </controller>
+</Turret>
+
+
+ <DistanceTrigger name="Reachedtheend" position="-43700,-29980,33000" target="SpaceShip" distance=300 stayActive="true" delay=0 />
+
+ <SpaceShip position="-42000,-30000,33800" lookat="-1,0,0" name="attacker" radarname="Enemy1" visible="true">
+ <events>
+ <visibility>
+ <EventListener event="Reachedtheend" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=1500 team=3 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-41200,-30000,33800"/>
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="Reachedtheend" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+ </SpaceShip>
+ <SpaceShip position="-42200,-30000,33800" lookat="-1,0,0" name="attacker" radarname="Enemy2" visible="true">
+ <events>
+ <visibility>
+ <EventListener event="Reachedtheend" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=1500 team=3 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-41600,-30000,33800"/>
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="Reachedtheend" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+ </SpaceShip>
+ <SpaceShip position="-42400,-30000,33800" lookat="-1,0,0" name="attacker" radarname="Sanchez" visible="true">
+ <events>
+ <visibility>
+ <EventListener event="Reachedtheend" />
+ </visibility>
+ </events>
+ <templates>
+ <Template link=spaceshippirate />
+ </templates>
+ <controller>
+ <WaypointPatrolController alertnessradius=1500 team=3 active=false>
+ <waypoints>
+ <Model mesh="cube.mesh" scale=0 position="-41400,-30000,33800"/>
+ </waypoints>
+ <events>
+ <activity>
+ <EventListener event="Reachedtheend" />
+ </activity>
+ </events>
+ </WaypointPatrolController>
+ </controller>
+ </SpaceShip>
+
+ <!-- Enemies END-->
+
+
+ <!-- 15 Boxes forward-->
+ <?lua
+ max = 15
+ for i = 0, max, 1
+ do
+ y=(i*200)-47200
+
+ ?>
+
+ <?lua
+ for j = 0, 2, 1
+ do
+ z =30200-(j*200)
+ ?>
+
+ <?lua
+ for k = 0, 1, 1
+ do
+ x =-30200+(k*400)
+ ?>
+
+
+
+
+ <StaticEntity position="<?lua print(y) ?>,<?lua print(x) ?>,<?lua print(z) ?>" direction="0,0,0" collisionType=static mass=100000 friction=0.01 >
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+
+ <?lua end ?>
+ <?lua end ?>
+ <?lua end ?>
+
+ <?lua
+ max = 15
+ for i = 0, max, 1
+ do
+ y=(i*200)-47200
+
+ ?>
+ <?lua
+ for j = 0, 1, 1
+ do
+ z =30200-(j*400)
+ ?>
+ <StaticEntity position="<?lua print(y) ?>,-30000,<?lua print(z) ?>" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+ <?lua end ?>
+ <?lua end ?>
+
+ <StaticEntity position="-47200,-30000,30000" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+ <!-- 15 Boxes forward END -->
+ <!-- 18 Boxes right-->
+
+ <?lua
+ max = 18
+ for i = 0, max, 1
+ do
+ z=29800+(i*200)
+
+ ?>
+
+ <?lua
+ for j = 0, 2, 1
+ do
+ y = (j*200)-44000
+ ?>
+
+ <?lua
+ for k = 0, 1, 1
+ do
+ x =-30200+(k*400)
+ ?>
+
+
+
+
+ <StaticEntity position="<?lua print(y) ?>,<?lua print(x) ?>,<?lua print(z) ?>" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+
+ <?lua end ?>
+ <?lua end ?>
+ <?lua end ?>
+
+ <?lua
+ max = 16
+ for i = 0, max, 1
+ do
+ z = 30200+(i*200)
+
+ ?>
+ <?lua
+ for j = 0, 1, 1
+ do
+ y = (j*400)-44000
+ ?>
+ <StaticEntity position="<?lua print(y) ?>,-30000,<?lua print(z) ?>" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+ <?lua end ?>
+ <?lua end ?>
+
+ <StaticEntity position="-43600,-30000,30000" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+ <?lua
+ for i = 0, 2, 1
+ do
+ y = -44000+(i*200)
+
+ ?>
+ <StaticEntity position="<?lua print(y) ?>,-30000,29800" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+ <?lua end ?>
+
+ <!-- 18 Boxes right END-->
+ <!-- 17 Boxes forward-->
+ <?lua
+ max = 17
+ for i = 0, max, 1
+ do
+ y=(i*200)-44000
+
+ ?>
+
+ <?lua
+ for j = 0, 2, 1
+ do
+ z =34000 - (j*200)
+ ?>
+
+ <?lua
+ for k = 0, 1, 1
+ do
+ x =-30200+(k*400)
+ ?>
+
+
+
+
+ <StaticEntity position="<?lua print(y) ?>,<?lua print(x) ?>,<?lua print(z) ?>" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+
+ <?lua end ?>
+ <?lua end ?>
+ <?lua end ?>
+
+ <?lua
+ max = 15
+ for i = 0, max, 1
+ do
+ y=(i*200)-43600
+
+ ?>
+
+ <?lua
+ for j = 0, 0, 1
+ do
+ z =34000 - (i*5.5)
+ ?>
+
+ <StaticEntity position="<?lua print(y) ?>,-30000,<?lua print(z) ?>" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+ <?lua end ?>
+ <?lua end ?>
+ <?lua
+ max = 15
+ for i = 0, max, 1
+ do
+ y=(i*200)-43600
+
+ ?>
+
+ <?lua
+ for j = 0, 0, 1
+ do
+ z =33600 + (i*5.5)
+ ?>
+
+ <StaticEntity position="<?lua print(y) ?>,-30000,<?lua print(z) ?>" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+ <?lua end ?>
+ <?lua end ?>
+
+
+ <?lua
+ for i = 0, 1, 1
+ do
+ y = -44000+(i*200)
+
+ ?>
+ <StaticEntity position="<?lua print(y) ?>,-30000,34000" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+ <?lua end ?>
+
+ <StaticEntity position="-44000,-30000,33800" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+
+ <StaticEntity position="-44000,-30000,33600" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="20,20,20" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+
+ </collisionShapes>
+</StaticEntity>
+ <!-- 17 Boxes forward END-->
+ <Billboard position="-41000,-30000,33800" material="Flares/backlightflare" colour="0,1.4,2.1" scale=15 />
+
+ <StaticEntity position="-40400,-30000,33800" direction="0,0,0" collisionType=static mass=100000 friction=0.01>
+ <attached>
+ <Model position="0,0,0" mesh="cube_green.mesh" scale3D="100,100,100" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="100,100,100" />
+ </collisionShapes>
+</StaticEntity>
+
+<!-- FORCEFIELD -->
+<ForceField position="-47000,-30000,30000" direction="1,0,0" diameter=2000 velocity=2000 length=2000 />
+
+
+ <!-- The Cave END-->
+
+ <!-- Planet around the cave-->
+
+ </Scene>
+</Level>
+
+
+
Copied: code/trunk/data/levels/includes/HeavyCruiserParts.lua (from rev 9938, code/branches/presentationHS13/data/levels/includes/HeavyCruiserParts.lua)
===================================================================
--- code/trunk/data/levels/includes/HeavyCruiserParts.lua (rev 0)
+++ code/trunk/data/levels/includes/HeavyCruiserParts.lua 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,168 @@
+--[[ place all parts
+places all sub-parts of HeavyCruiser as Pawns
+ posX, posY, posZ - position in space
+ dirX, dirY, dirZ - direction
+ team - team
+--]]
+
+function placeAllSubParts(team, posX, posY, posZ, dirX, dirY, dirZ)
+ placeSidearmL(team, posX, posY, posZ, dirX, dirY, dirZ)
+ placeSidearmLfront(team, posX, posY, posZ, dirX, dirY, dirZ)
+ placeSidearmR(team, posX, posY, posZ, dirX, dirY, dirZ)
+ placeSidearmRfront(team, posX, posY, posZ, dirX, dirY, dirZ)
+ placeFrontL(team, posX, posY, posZ, dirX, dirY, dirZ)
+ placeFrontR(team, posX, posY, posZ, dirX, dirY, dirZ)
+ placePartL(team, posX, posY, posZ, dirX, dirY, dirZ)
+ placePartR(team, posX, posY, posZ, dirX, dirY, dirZ)
+end
+
+
+--[[ place individual parts
+places sub-parts of HeavyCruiser as Pawns
+ posX, posY, posZ - position in space
+ dirX, dirY, dirZ - direction arguments
+ team - team
+--]]
+
+function placeSidearmL(team, posX, posY, posZ, dirX, dirY, dirZ)
+ print("<Pawn health=300 initialhealth=300 maxhealth=300 ")
+ print("position = \"")
+ print(posX) print(",")
+ print(posY) print(",")
+ print(posZ) print("\" ")
+ print("direction = \"")
+ print(dirX) print(",")
+ print(dirY) print(",")
+ print(dirZ) print("\" ")
+ print("team = ")
+ print(team) print(" ")
+ print("collisionType=dynamic mass=100 name=HeavyCruiser_sidearmL radarname = \"HIDDEN\" >")
+ print("<attached> <Model position=\"0,0,0\" direction=\"-1,0,0\" mesh=\"HeavyCruiser_sidearmL.mesh\" scale=\"40\" /> </attached> <collisionShapes> <BoxCollisionShape position=\"-11,18,102\" halfExtents=\"10,10,10\" info=\"HOOK, sidearmL\"/> <BoxCollisionShape position=\"-151,47,115\" roll=\"15\" halfExtents=\"16,2,105\" info=\"sidearmL, frontTop\"/> <BoxCollisionShape position=\"-136,-7,115\" roll=\"15\" halfExtents=\"16,2,105\" info=\"sidearmL, frontBottom\"/> <BoxCollisionShape position=\"-127,26,115\" roll=\"15\" halfExtents=\"2,28,105\" info=\"sidearmL, frontInner\"/> <BoxCollisionShape position=\"-161,16,115\" roll=\"15\" halfExtents=\"2,28,105\" info=\"sidearmL, frontOuter\"/> <BoxCollisionShape position=\"-145,21,12\" roll=\"15\" halfExtents=\"16,28,2\" info=\"sidearmL, front\"/> <BoxCollisionShape position=\"-140,12,261\" roll=\"15\" halfExtents=\"22,41,43\" info=\"sidearmL, back\"/> <BoxCollisionShape position=\"-133,-13,29\" roll=\"15\" halfExtents=\"12,6,17\" info=\"sidearmL, bottom cylinder\"/> <BoxCollisionShape position=\"-165,-4,31\" roll=\"15\" halfExtents=\"7,21,13\" info=\"sidearmL, box\"/> <BoxCollisionShape position=\"-153,59,96\" roll=\"15\" halfExtents=\"6,7,60\" info=\"sidearmL, upper beam\"/> <BoxCollisionShape position=\"-143,57,119\" roll=\"15\" halfExtents=\"3,4,85\" info=\"sidearmL, upper inner beam\"/> <BoxCollisionShape position=\"-142,53,212\" pitch=\"21\" yaw=\"5\" roll=\"15\" halfExtents=\"3,4,10\" info=\"sidearmL, upper inner beam\"/> <BoxCollisionShape position=\"-160,52,119\" roll=\"15\" halfExtents=\"3,4,85\" info=\"sidearmL, upper outer beam\"/> <BoxCollisionShape position=\"-159,48,212\" pitch=\"21\" yaw=\"5\" roll=\"15\" halfExtents=\"3,4,10\" info=\"sidearmL, upper outer beam\"/> <BoxCollisionShape position=\"-152,54,34\" pitch=\"-46\" yaw=\"-14\" roll=\"15\" halfExtents=\"6,7,10\" info=\"sidearmL, upper beam front\"/> <BoxCollisionShape position=\"-152,54,162\" pitch=\"30\" yaw=\"9\" roll=\"15\" halfExtents=\"6,7,12\" info=\"sidearmL, upper beam back\"/> <BoxCollisionShape position=\"-168,21,119\" roll=\"15\" halfExtents=\"3,5,109\" info=\"sidearmL, outer beam\"/> <BoxCollisionShape position=\"-134,-10,169\" roll=\"15\" halfExtents=\"6,4,55\" info=\"sidearmL, lower beam front\"/> <BoxCollisionShape position=\"-131,-20,217\" pitch=\"-20\" roll=\"15\" yaw=\"-5\" halfExtents=\"6,12,3\" info=\"sidearmL, lower beam middle\"/> <BoxCollisionShape position=\"-130,-29,233\" roll=\"15\" halfExtents=\"6,3,15\" info=\"sidearmL, lower beam back\"/> <BoxCollisionShape position=\"-145,21,71\" halfExtents=\"10,10,1\" info=\"sidearmL, HOOKBOX\"/> <BoxCollisionShape position=\"-145,21,29\" halfExtents=\"10,10,1\" info=\"sidearmL, HOOKBOX\"/> <BoxCollisionShape position=\"-145,32,50\" halfExtents=\"10,1,20\" info=\"sidearmL, HOOKBOX\"/> <BoxCollisionShape position=\"-145,10,50\" halfExtents=\"10,1,20\" info=\"sidearmL, HOOKBOX\"/> <BoxCollisionShape position=\"-156,21,50\" halfExtents=\"1,10,20\" info=\"sidearmL, HOOKBOX\"/> <BoxCollisionShape position=\"-134,21,50\" halfExtents=\"1,10,20\" info=\"sidearmL, HOOKBOX\"/> </collisionShapes>")
+ print("</Pawn>")
+end
+
+
+function placeSidearmLfront(team, posX, posY, posZ, dirX, dirY, dirZ)
+ print("<Pawn health=100 initialhealth=100 maxhealth=100 ")
+ print("position = \"")
+ print(posX) print(",")
+ print(posY) print(",")
+ print(posZ) print("\" ")
+ print("direction = \"")
+ print(dirX) print(",")
+ print(dirY) print(",")
+ print(dirZ) print("\" ")
+ print("team = ")
+ print(team) print(" ")
+ print("collisionType=dynamic mass=100 name=HeavyCruiser_sidearmLfront radarname = \"HIDDEN\" >")
+ print(" <attached> <Model position=\"0,0,0\" direction=\"-1,0,0\" mesh=\"HeavyCruiser_sidearmLfront.mesh\" scale=\"40\" /> </attached> <collisionShapes> <BoxCollisionShape position=\"-145,21,50\" halfExtents=\"10,10,20\" info=\"sidearmLfront, HOOK\"/> <BoxCollisionShape position=\"-141,15,-53\" roll=\"15\" halfExtents=\"27,44,62\" info=\"sidearmLfront\"/> <BoxCollisionShape position=\"-153,59,-30\" roll=\"15\" halfExtents=\"4,2,38\" info=\"sidearmLfront, top\"/> <BoxCollisionShape position=\"-153,61,-41\" roll=\"15\" halfExtents=\"4,4,11\" info=\"sidearmLfront, top\"/> <BoxCollisionShape position=\"-153,60,-65\" roll=\"15\" halfExtents=\"4,3,4\" info=\"sidearmLfront, top\"/> <BoxCollisionShape position=\"-153,59,-41\" roll=\"15\" halfExtents=\"8,2,11\" info=\"sidearmLfront, top\"/> </collisionShapes>")
+ print("</Pawn>")
+end
+
+
+function placeSidearmR(team, posX, posY, posZ, dirX, dirY, dirZ)
+ print("<Pawn health=300 initialhealth=300 maxhealth=300 ")
+ print("position = \"")
+ print(posX) print(",")
+ print(posY) print(",")
+ print(posZ) print("\" ")
+ print("direction = \"")
+ print(dirX) print(",")
+ print(dirY) print(",")
+ print(dirZ) print("\" ")
+ print("team = ")
+ print(team) print(" ")
+ print("collisionType=dynamic mass=100 name=HeavyCruiser_sidearmR radarname = \"HIDDEN\" >")
+ print("<attached> <Model position=\"0,0,0\" direction=\"-1,0,0\" mesh=\"HeavyCruiser_sidearmR.mesh\" scale=\"40\" /> </attached> <collisionShapes> <BoxCollisionShape position=\"11,18,102\" halfExtents=\"10,10,10\" info=\"HOOK, sidearmR\"/> <BoxCollisionShape position=\"151,47,115\" roll=\"-15\" halfExtents=\"16,2,105\" info=\"sidearmR, frontTop\"/> <BoxCollisionShape position=\"136,-7,115\" roll=\"-15\" halfExtents=\"16,2,105\" info=\"sidearmR, frontBottom\"/> <BoxCollisionShape position=\"127,26,115\" roll=\"-15\" halfExtents=\"2,28,105\" info=\"sidearmR, frontInner\"/> <BoxCollisionShape position=\"161,16,115\" roll=\"-15\" halfExtents=\"2,28,105\" info=\"sidearmR, frontOuter\"/> <BoxCollisionShape position=\"145,21,12\" roll=\"-15\" halfExtents=\"16,28,2\" info=\"sidearmR, front\"/> <BoxCollisionShape position=\"140,12,261\" roll=\"-15\" halfExtents=\"22,41,43\" info=\"sidearmR, back\"/> <BoxCollisionShape position=\"133,-13,29\" roll=\"-15\" halfExtents=\"12,6,17\" info=\"sidearmR, bottom cylinder\"/> <BoxCollisionShape position=\"165,-4,31\" roll=\"-15\" halfExtents=\"7,21,13\" info=\"sidearmR, box\"/> <BoxCollisionShape position=\"153,59,96\" roll=\"-15\" halfExtents=\"6,7,60\" info=\"sidearmR, upper beam\"/> <BoxCollisionShape position=\"143,57,119\" roll=\"-15\" halfExtents=\"3,4,85\" info=\"sidearmR, upper inner beam\"/> <BoxCollisionShape position=\"142,53,212\" pitch=\"21\" yaw=\"-5\" roll=\"-15\" halfExtents=\"3,4,10\" info=\"sidearmR, upper inner beam\"/> <BoxCollisionShape position=\"160,52,119\" roll=\"-15\" halfExtents=\"3,4,85\" info=\"sidearmR, upper outer beam\"/> <BoxCollisionShape position=\"159,48,212\" pitch=\"21\" yaw=\"-5\" roll=\"-15\" halfExtents=\"3,4,10\" info=\"sidearmR, upper outer beam\"/> <BoxCollisionShape position=\"152,54,34\" pitch=\"-46\" yaw=\"14\" roll=\"-15\" halfExtents=\"6,7,10\" info=\"sidearmR, upper beam front\"/> <BoxCollisionShape position=\"152,54,162\" pitch=\"30\" yaw=\"-9\" roll=\"-15\" halfExtents=\"6,7,12\" info=\"sidearmR, upper beam back\"/> <BoxCollisionShape position=\"168,21,119\" roll=\"-15\" halfExtents=\"3,5,109\" info=\"sidearmR, outer beam\"/> <BoxCollisionShape position=\"134,-10,169\" roll=\"-15\" halfExtents=\"6,4,55\" info=\"sidearmR, lower beam front\"/> <BoxCollisionShape position=\"131,-20,217\" pitch=\"-20\" roll=\"-15\" yaw=\"5\" halfExtents=\"6,12,3\" info=\"sidearmR, lower beam middle\"/> <BoxCollisionShape position=\"130,-29,233\" roll=\"-15\" halfExtents=\"6,3,15\" info=\"sidearmR, lower beam back\"/> <BoxCollisionShape position=\"145,21,71\" halfExtents=\"10,10,1\" info=\"sidearmR, HOOKBOX\"/> <BoxCollisionShape position=\"145,21,29\" halfExtents=\"10,10,1\" info=\"sidearmR, HOOKBOX\"/> <BoxCollisionShape position=\"145,32,50\" halfExtents=\"10,1,20\" info=\"sidearmR, HOOKBOX\"/> <BoxCollisionShape position=\"145,10,50\" halfExtents=\"10,1,20\" info=\"sidearmR, HOOKBOX\"/> <BoxCollisionShape position=\"156,21,50\" halfExtents=\"1,10,20\" info=\"sidearmR, HOOKBOX\"/> <BoxCollisionShape position=\"134,21,50\" halfExtents=\"1,10,20\" info=\"sidearmR, HOOKBOX\"/> </collisionShapes>")
+ print("</Pawn>")
+end
+
+
+function placeSidearmRfront(team, posX, posY, posZ, dirX, dirY, dirZ)
+ print("<Pawn health=100 initialhealth=100 maxhealth=100 ")
+ print("position = \"")
+ print(posX) print(",")
+ print(posY) print(",")
+ print(posZ) print("\" ")
+ print("direction = \"")
+ print(dirX) print(",")
+ print(dirY) print(",")
+ print(dirZ) print("\" ")
+ print("team = ")
+ print(team) print(" ")
+ print("collisionType=dynamic mass=100 name=HeavyCruiser_sidearmRfront radarname = \"HIDDEN\" >")
+ print("<attached> <Model position=\"0,0,0\" direction=\"-1,0,0\" mesh=\"HeavyCruiser_sidearmRfront.mesh\" scale=\"40\" /> </attached> <collisionShapes> <BoxCollisionShape position=\"145,21,50\" halfExtents=\"10,10,20\" info=\"sidearmRfront, HOOK\"/> <BoxCollisionShape position=\"141,15,-53\" roll=\"-15\" halfExtents=\"27,44,62\" info=\"sidearmRfront\"/> <BoxCollisionShape position=\"153,59,-30\" roll=\"-15\" halfExtents=\"4,2,38\" info=\"sidearmRfront, top\"/> <BoxCollisionShape position=\"153,61,-41\" roll=\"-15\" halfExtents=\"4,4,11\" info=\"sidearmRfront, top\"/> <BoxCollisionShape position=\"153,60,-65\" roll=\"-15\" halfExtents=\"4,3,4\" info=\"sidearmRfront, top\"/> <BoxCollisionShape position=\"153,59,-41\" roll=\"-15\" halfExtents=\"8,2,11\" info=\"sidearmRfront, top\"/> </collisionShapes>")
+ print("</Pawn>")
+end
+
+
+function placeFrontL(team, posX, posY, posZ, dirX, dirY, dirZ)
+ print("<Pawn health=100 initialhealth=100 maxhealth=100 ")
+ print("position = \"")
+ print(posX) print(",")
+ print(posY) print(",")
+ print(posZ) print("\" ")
+ print("direction = \"")
+ print(dirX) print(",")
+ print(dirY) print(",")
+ print(dirZ) print("\" ")
+ print("team = ")
+ print(team) print(" ")
+ print("collisionType=dynamic mass=100 name=HeavyCruiser_frontL radarname = \"HIDDEN\" >")
+ print(" <attached> <Model position=\"0,0,0\" direction=\"-1,0,0\" mesh=\"HeavyCruiser_frontL.mesh\" scale=\"40\" /> </attached> <collisionShapes> <BoxCollisionShape position=\"-11,18,58\" halfExtents=\"10,10,10\" info=\"HOOK, frontL\"/> <BoxCollisionShape position=\"-80,33,-320\" halfExtents=\"7,11,54\" info=\"frontL\"/> <BoxCollisionShape position=\"-79,31,-399\" halfExtents=\"3,6,26\" info=\"frontL\"/> </collisionShapes>")
+ print("</Pawn>")
+end
+
+
+function placeFrontR(team, posX, posY, posZ, dirX, dirY, dirZ)
+ print("<Pawn health=100 initialhealth=100 maxhealth=100 ")
+ print("position = \"")
+ print(posX) print(",")
+ print(posY) print(",")
+ print(posZ) print("\" ")
+ print("direction = \"")
+ print(dirX) print(",")
+ print(dirY) print(",")
+ print(dirZ) print("\" ")
+ print("team = ")
+ print(team) print(" ")
+ print("collisionType=dynamic mass=100 name=HeavyCruiser_frontR radarname = \"HIDDEN\" >")
+ print(" <attached> <Model position=\"0,0,0\" direction=\"-1,0,0\" mesh=\"HeavyCruiser_frontR.mesh\" scale=\"40\" /> </attached> <collisionShapes> <BoxCollisionShape position=\"11,18,58\" halfExtents=\"10,10,10\" info=\"HOOK, frontR\"/> <BoxCollisionShape position=\"80,33,-320\" halfExtents=\"7,11,54\" info=\"frontR\"/> <BoxCollisionShape position=\"79,31,-399\" halfExtents=\"3,6,26\" info=\"frontR\"/> </collisionShapes>")
+ print("</Pawn>")
+end
+
+
+function placePartL(team, posX, posY, posZ, dirX, dirY, dirZ)
+ print("<Pawn health=100 initialhealth=100 maxhealth=100 ")
+ print("position = \"")
+ print(posX) print(",")
+ print(posY) print(",")
+ print(posZ) print("\" ")
+ print("direction = \"")
+ print(dirX) print(",")
+ print(dirY) print(",")
+ print(dirZ) print("\" ")
+ print("team = ")
+ print(team) print(" ")
+ print("collisionType=dynamic mass=100 name=HeavyCruiser_partL radarname = \"HIDDEN\" >")
+ print("<attached> <Model position=\"0,0,0\" direction=\"-1,0,0\" mesh=\"HeavyCruiser_partL.mesh\" scale=\"40\" /> </attached> <collisionShapes> <BoxCollisionShape position=\"-11,18,80\" halfExtents=\"10,10,10\" info=\"HOOK, partL\"/> <BoxCollisionShape position=\"-94,33,-179\" halfExtents=\"11,13,45\" info=\"partL\"/> <BoxCollisionShape position=\"-96,33,-230\" halfExtents=\"13,17,22\" info=\"partL\"/> </collisionShapes>")
+ print("</Pawn>")
+end
+
+
+function placePartR(team, posX, posY, posZ, dirX, dirY, dirZ)
+ print("<Pawn health=100 initialhealth=100 maxhealth=100 ")
+ print("position = \"")
+ print(posX) print(",")
+ print(posY) print(",")
+ print(posZ) print("\" ")
+ print("direction = \"")
+ print(dirX) print(",")
+ print(dirY) print(",")
+ print(dirZ) print("\" ")
+ print("team = ")
+ print(team) print(" ")
+ print("collisionType=dynamic mass=100 name=HeavyCruiser_partR radarname = \"HIDDEN\" >")
+ print(" <attached> <Model position=\"0,0,0\" direction=\"-1,0,0\" mesh=\"HeavyCruiser_partR.mesh\" scale=\"40\" /> </attached> <collisionShapes> <BoxCollisionShape position=\"11,18,80\" halfExtents=\"10,10,10\" info=\"HOOK, partR\"/> <BoxCollisionShape position=\"94,33,-179\" halfExtents=\"11,13,45\" info=\"partR\"/> <BoxCollisionShape position=\"96,33,-230\" halfExtents=\"13,17,22\" info=\"partR\"/> </collisionShapes>")
+ print("</Pawn>")
+end
\ No newline at end of file
Copied: code/trunk/data/levels/includes/invaderWeapon.oxi (from rev 9938, code/branches/presentationHS13/data/levels/includes/invaderWeapon.oxi)
===================================================================
--- code/trunk/data/levels/includes/invaderWeapon.oxi (rev 0)
+++ code/trunk/data/levels/includes/invaderWeapon.oxi 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,27 @@
+ <weaponslots>
+ <WeaponSlot position="-9.2,2,-13" />
+ <WeaponSlot position=" 9.2,2,-13" />
+ </weaponslots>
+ <weaponsets>
+ <WeaponSet firemode=0 />
+ <WeaponSet firemode=1 />
+ </weaponsets>
+ <weapons>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+ <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
+ </links>
+ <Weapon>
+ <InvaderWeapon mode=0 munitionpershot=0 delay=0.125 damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" projectileMesh="laserbeam.mesh" />
+ </Weapon>
+ <Weapon>
+ <InvaderWeapon mode=0 munitionpershot=0 delay=0 damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" projectileMesh="laserbeam.mesh" />
+ </Weapon>
+ </WeaponPack>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
+ </links>
+ </WeaponPack>
+ </weapons>
Copied: code/trunk/data/levels/includes/invaderWeaponEnemy.oxi (from rev 9938, code/branches/presentationHS13/data/levels/includes/invaderWeaponEnemy.oxi)
===================================================================
--- code/trunk/data/levels/includes/invaderWeaponEnemy.oxi (rev 0)
+++ code/trunk/data/levels/includes/invaderWeaponEnemy.oxi 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,27 @@
+ <weaponslots>
+ <WeaponSlot position="-9.2,2,-13" />
+ <WeaponSlot position=" 9.2,2,-13" />
+ </weaponslots>
+ <weaponsets>
+ <WeaponSet firemode=0 />
+ <WeaponSet firemode=1 />
+ </weaponsets>
+ <weapons>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+ <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
+ </links>
+ <Weapon>
+ <InvaderWeaponEnemy mode=0 munitionpershot=0 delay=0.125 damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" projectileMesh="laserbeam.mesh" />
+ </Weapon>
+ <Weapon>
+ <InvaderWeaponEnemy mode=0 munitionpershot=0 delay=0 damage=9.3 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" projectileMesh="laserbeam.mesh" />
+ </Weapon>
+ </WeaponPack>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
+ </links>
+ </WeaponPack>
+ </weapons>
Copied: code/trunk/data/levels/includes/weaponSettingsHeavyCruiser.oxi (from rev 9938, code/branches/presentationHS13/data/levels/includes/weaponSettingsHeavyCruiser.oxi)
===================================================================
--- code/trunk/data/levels/includes/weaponSettingsHeavyCruiser.oxi (rev 0)
+++ code/trunk/data/levels/includes/weaponSettingsHeavyCruiser.oxi 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,53 @@
+ <weaponslots>
+ <WeaponSlot position="79,30,-420" />
+ <WeaponSlot position="-79,30,-420" />
+ <WeaponSlot position="-60,30,-370" />
+ </weaponslots>
+ <weaponsets>
+ <WeaponSet firemode=0 />
+ <WeaponSet firemode=1 />
+ <WeaponSet firemode=2 />
+ <WeaponSet firemode=3 />
+ </weaponsets>
+ <weapons>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+ <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
+ <DefaultWeaponmodeLink firemode=2 weaponmode=2 />
+ <DefaultWeaponmodeLink firemode=3 weaponmode=3 />
+ </links>
+ <Weapon>
+ <attached>
+ <Model mesh="LightningGun.mesh" pitch="100" roll="90" yaw="90" position="0,-1.3,0" />
+ <Model mesh="LightningGun-s.mesh" pitch="78" roll="90" yaw="90" position="0.2,-1.3,0" />
+ <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,0.3" scale=0.6 />
+ </attached>
+ <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
+ <HsW01 mode=0 munitionpershot=0 delay=0 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
+ <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
+ </Weapon>
+ <Weapon>
+ <attached>
+ <Model mesh="LightningGun.mesh" pitch="100" roll="90" yaw="90" position="0,-1.3,-10" />
+ <Model mesh="LightningGun-s.mesh" pitch="78" roll="90" yaw="90" position="0.2,-1.3,-10" />
+ <Model mesh="hs-w01_reduced.mesh" roll="90" pitch="-76" yaw="-90" position="-1.5,1,-10.3" scale=0.6 />
+ </attached>
+ <HsW01 mode=0 munitionpershot=0 delay=0 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
+ <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
+ <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
+ </Weapon>
+ <Weapon>
+ <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
+ <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
+ </Weapon>
+ </WeaponPack>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
+ </links>
+ <!--Weapon>
+ <EnergyDrink mode=0 munitionpershot=0 delay=0 material="Flares/point_lensflare"muzzleoffset="2,-0.2,-1" />
+ </Weapon-->
+ </WeaponPack>
+ </weapons>
Copied: code/trunk/data/levels/includes/weaponSettingsHeavyCruiserBody.oxi (from rev 9938, code/branches/presentationHS13/data/levels/includes/weaponSettingsHeavyCruiserBody.oxi)
===================================================================
--- code/trunk/data/levels/includes/weaponSettingsHeavyCruiserBody.oxi (rev 0)
+++ code/trunk/data/levels/includes/weaponSettingsHeavyCruiserBody.oxi 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,47 @@
+ <weaponslots>
+ <WeaponSlot position="79,30,-450" /> <!-- z value should be -420, increased to avoid destroying front parts-->
+ <WeaponSlot position="-79,30,-450" />
+ <WeaponSlot position="-60,30,-370" />
+ </weaponslots>
+ <weaponsets>
+ <WeaponSet firemode=0 />
+ <WeaponSet firemode=1 />
+ <WeaponSet firemode=2 />
+ <WeaponSet firemode=3 />
+ </weaponsets>
+ <weapons>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=0 weaponmode=0 />
+ <DefaultWeaponmodeLink firemode=1 weaponmode=1 />
+ <DefaultWeaponmodeLink firemode=2 weaponmode=2 />
+ <DefaultWeaponmodeLink firemode=3 weaponmode=3 />
+ </links>
+ <Weapon>
+ <attached>
+ </attached>
+ <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 0.1, 1.6,-2" />
+ <HsW01 mode=0 munitionpershot=0 delay=0 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-1.6, 1.3,-2" />
+ <LightningGun mode=1 muzzleoffset="0,0,0" damage=3.14159 shielddamage=20 />
+ </Weapon>
+ <Weapon>
+ <attached>
+ </attached>
+ <HsW01 mode=0 munitionpershot=0 delay=0 damage=3.14159 material="Flares/point_lensflare" muzzleoffset=" 1.6, 1.3, -2.0" />
+ <HsW01 mode=0 munitionpershot=0 delay=0.125 damage=3.14159 material="Flares/point_lensflare" muzzleoffset="-0.1, 1.6, -2.0" />
+ <LightningGun mode=1 muzzleoffset="0,0,0" damage=23 />
+ </Weapon>
+ <Weapon>
+ <SimpleRocketFire mode=2 muzzleoffset="0,0,0" damage=30 shielddamage=20 />
+ <RocketFire mode=3 muzzleoffset="0,0,0" damage=30 healthdamage=50 shielddamage=20 />
+ </Weapon>
+ </WeaponPack>
+ <WeaponPack>
+ <links>
+ <DefaultWeaponmodeLink firemode=1 weaponmode=0 />
+ </links>
+ <!--Weapon>
+ <EnergyDrink mode=0 munitionpershot=0 delay=0 material="Flares/point_lensflare"muzzleoffset="2,-0.2,-1" />
+ </Weapon-->
+ </WeaponPack>
+ </weapons>
Modified: code/trunk/data/levels/lastManStanding.oxw
===================================================================
--- code/trunk/data/levels/lastManStanding.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/lastManStanding.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -31,6 +31,8 @@
<?lua
include("includes/pickups.oxi")
?>
+
+ <WorldAmbientSound source="Nebula_metal.ogg" looping="true" playOnLoad="true" />
<!----- Spawnpoints
<Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
Modified: code/trunk/data/levels/lastTeamStanding.oxw
===================================================================
--- code/trunk/data/levels/lastTeamStanding.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/lastTeamStanding.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -32,6 +32,8 @@
<?lua
include("includes/pickups.oxi")
?>
+
+ <WorldAmbientSound source="Nebula_metal.ogg" looping="true" playOnLoad="true" />
<Bot />
Modified: code/trunk/data/levels/lastTeamStandingII.oxw
===================================================================
--- code/trunk/data/levels/lastTeamStandingII.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/lastTeamStandingII.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -26,6 +26,8 @@
ambientlight = "0.8, 0.8, 0.8"
skybox = "Orxonox/skyBoxBasic"
>
+ <WorldAmbientSound source="Nebula_metal.ogg" looping="true" playOnLoad="true" />
+
<!-- TODO:
1. make collisionshapes bulletproof: -> attach movable entity with dynamic collisionshape within a static collisionshape
2. add forcefields -> there should be several "streams" through the level
Modified: code/trunk/data/levels/maxim.oxw
===================================================================
--- code/trunk/data/levels/maxim.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/maxim.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,5 @@
+<!-- -->
+
<LevelInfo
name = "Maxim's Test"
description = "Intelligent Formation"
@@ -24,6 +26,8 @@
<Template link=lodtemplate_default />
</templates>
<?lua include("includes/notifications.oxi") ?>
+
+ <WorldAmbientSound source="Nebula_metal.ogg" looping="true" playOnLoad="true" />
<NotificationQueueCEGUI
name="narrative"
@@ -123,4 +127,4 @@
<?lua end ?>
</Scene>
-</Level>
\ No newline at end of file
+</Level>
Modified: code/trunk/data/levels/missionOne.oxw
===================================================================
--- code/trunk/data/levels/missionOne.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/missionOne.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,4 @@
+<!---->
<LevelInfo
name = "Mission One"
description = "First Guided Steps in the Orxonoxian Universe."
Modified: code/trunk/data/levels/pickups.oxw
===================================================================
--- code/trunk/data/levels/pickups.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/pickups.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,4 @@
+<!-- -->
<LevelInfo
name = "Pickups showcase"
description = "Level to test and showcase pickups."
Modified: code/trunk/data/levels/pirateAttack.oxw
===================================================================
--- code/trunk/data/levels/pirateAttack.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/pirateAttack.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -24,6 +24,8 @@
<?lua
dofile("includes/CuboidSpaceStation.lua")
?>
+
+<WorldAmbientSound source="Mars.ogg" looping="true" playOnLoad="true" />
<Level
name="Dani's Testlevel"
Modified: code/trunk/data/levels/pong.oxw
===================================================================
--- code/trunk/data/levels/pong.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/pong.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -33,7 +33,10 @@
</Template>
<Template name=pongball>
- <PongBall>
+ <PongBall
+ defScoreSound = "sounds/PlayerWinScore_cut.ogg"
+ defBatSound = "sounds/Button.ogg"
+ defBoundarySound = "sounds/Button.ogg">
<attached>
<Model mesh="sphere.mesh" scale=2 />
<!--Billboard scale=0.2 colour="1.0, 1.0, 0.5" material="Examples/Flare" /-->
Modified: code/trunk/data/levels/portals.oxw
===================================================================
--- code/trunk/data/levels/portals.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/portals.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,4 +1,4 @@
-
+<!-- -->
<LevelInfo
name = "Portals"
description = "Level for testing portals"
Modified: code/trunk/data/levels/presentation.oxw
===================================================================
--- code/trunk/data/levels/presentation.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/presentation.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,5 @@
+<!-- -->
+
<LevelInfo
name = "Presentation"
description = "Presentation Level"
Modified: code/trunk/data/levels/presentationFS11.oxw
===================================================================
--- code/trunk/data/levels/presentationFS11.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/presentationFS11.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,5 @@
+<!---->
+
<LevelInfo
name = "Presentation FS11"
description = "Presentation level spring semester '11"
Copied: code/trunk/data/levels/presentationHS13.oxw (from rev 9938, code/branches/presentationHS13/data/levels/presentationHS13.oxw)
===================================================================
--- code/trunk/data/levels/presentationHS13.oxw (rev 0)
+++ code/trunk/data/levels/presentationHS13.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,258 @@
+<!-- -->
+<LevelInfo
+ name = "Presentation HS 13"
+ description = "Entering a Space Station."
+ tags = "presentation"
+ screenshot = "emptylevel.png"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+ include("templates/pickupRepresentationTemplates.oxt")
+?>
+
+<?lua
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipEscort.oxt")
+ include("templates/bigship.oxt")
+ include("templates/spaceshipTurret.oxt")
+ include("templates/spaceshipCollateralDamage.oxt")
+ include("templates/FPS.oxt")
+ include("templates/HeavyCruiser.oxt")
+?>
+
+<Level
+ gametype = Deathmatch
+>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+
+ <Scene
+ ambientlight = "0.5, 0.5, 0.5"
+ skybox = "Orxonox/skyBoxMoreNebula"
+ negativeWorldRange = "-100000, -100000, -100000"
+ positiveWorldRange = " 100000, 100000, 100000"
+ gravity = "0,0,0"
+ hasPhysics = true
+ >
+
+ <?lua
+ include("includes/pickups.oxi")
+ ?>
+
+ <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0,1.0,1.0,0.5" specular="1.0, 0.9, 0.9, 1.0"/>
+ <SpawnPoint team=0 position="4320,1610,-741" lookat="2800,0,0" spawnclass=SpaceShip pawndesign=spaceshipescort />
+
+
+ <StaticEntity position = "2800,0,0" mass=10000 collisionType=static >
+ <attached>
+ <Model mesh="HydroHarvester.mesh" mass=10 position="0,0,0" scale=50 />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="-560,0,0" halfExtents="115,100,245" /><!-- Three lower boxes -->
+ <BoxCollisionShape position="290,0,-480" halfExtents="115,100,245" yaw=-120 />
+ <BoxCollisionShape position="290,0,480" halfExtents="115,100,245" yaw=-240 />
+ <BoxCollisionShape position="-280,0,0" halfExtents="163,50,50" /><!-- Three lower connections -->
+ <BoxCollisionShape position="140,0,-240" halfExtents="163,50,50" yaw=-120 />
+ <BoxCollisionShape position="140,0,240" halfExtents="163,50,50" yaw=-240 />
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" /><!-- Upper Tower -->
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" yaw=-120 />
+ <BoxCollisionShape position="0,530,0" halfExtents="172,52,298" yaw=-240 />
+ <BoxCollisionShape position="0,400,0" halfExtents="43,110,26" yaw=-30 /><!-- Middle one-->
+ <BoxCollisionShape position="-200,100,0" halfExtents="26,50,43" /><!--Three lower legs -->
+ <BoxCollisionShape position="100,100,-173" halfExtents="43,50,26" yaw=-30 />
+ <BoxCollisionShape position="100,100,-173" halfExtents="43,50,26" yaw=30 />
+ <BoxCollisionShape position="-100,264,0" halfExtents="26,105,43" roll=-49 /><!--Three upper legs -->
+ <BoxCollisionShape position="50,264,-87" halfExtents="26,105,43" roll=-49 yaw=-120 />
+ <BoxCollisionShape position="50,264,87" halfExtents="26,105,43" roll=-49 yaw=-240 />
+ </collisionShapes>
+ </StaticEntity>
+
+<!-- Docking -->
+ <Dock position="2830,20,50" roll=0 yaw=0 >
+ <animations>
+ <MoveToDockingTarget target="fistperson" />
+ </animations>
+ <effects>
+ <DockToShip target="fistperson" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="dockMe" />
+ </execute>
+
+ <undocking>
+ <EventListener event="undockMe" />
+ </undocking>
+
+ </events>
+ <attached>
+ <!-- Trigger for docking with billboard -->
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.2,0.4,0.8" scale=1 />
+ <DistanceTrigger position="0,0,0" distance="200" target="Pawn"
+ beaconMode="exclude" targetname="bcnDestroyer" name="dockMe"
+ />
+ <!-- Trigger for undocking with billboard -->
+ <Billboard position="-2800,-20055,-700" material="Flares/ringflare2" colour="0.2,0.4,0.8" scale=1 />
+ <DistanceTrigger position="-2800,-20055,-700" distance="150" target="Pawn"
+ beaconMode="identify" targetname="bcnDestroyer" name="undockMe"
+ />
+ </attached>
+
+ </Dock>
+
+<!-- FPS Player as destination of the dock -->
+ <FpsPlayer template = "fps" radarname = "First Person Player" position = "172,-20000,-676" >
+ <attached>
+ <DistanceTriggerBeacon name="bcnDestroyer" />
+ <DockingTarget name="fistperson" />
+ </attached>
+ </FpsPlayer>
+
+
+
+
+<!-- Docking II -->
+ <Dock position="-840,-20055,1.8" roll=0 yaw=0 >
+ <animations>
+ <MoveToDockingTarget target="spaceShip" />
+ </animations>
+ <effects>
+ <DockToShip target="spaceShip" />
+ </effects>
+ <events>
+ <execute>
+ <EventListener event="dockMe" />
+ </execute>
+
+ <undocking>
+ <EventListener event="undockMe" />
+ </undocking>
+
+ </events>
+ <attached>
+ <!-- Trigger for docking with billboard -->
+ <Billboard position="0,0,0" material="Flares/ringflare2" colour="0.3,0.4,0.5" scale=1 />
+ <DistanceTrigger position="0,0,0" distance="200" target="Pawn"
+ beaconMode="exclude" targetname="bcnSpaceShip" name="dockMe"
+ />
+ <!-- Trigger for undocking with billboard -->
+ <Billboard position="4140,20055,-295" material="Flares/ringflare2" colour="0.3,0.4,0.5" scale=1 />
+ <DistanceTrigger position="4140,20055,-295" distance="300" target="Pawn"
+ beaconMode="identify" targetname="bcnSpaceShip" name="undockMe"
+ />
+ </attached>
+
+ </Dock>
+
+ <SpaceShip
+ template = "HeavyCruiser"
+ team = "0"
+ position = "3600,-20,-120"
+ orientation = "1,0,0,0"
+ health = "400"
+ initialhealth = "400"
+ maxhealth = "500"
+ shieldhealth = "80"
+ initialshieldhealth = "80"
+ maxshieldhealth = "120"
+ shieldabsorption = "0.8"
+ reloadrate = "1"
+ reloadwaittime = "1"
+ name = "Tanis1"
+ radarname = "Tanis Cruiser" >
+ <attached>
+ <DockingTarget name="spaceShip" />
+ <DistanceTriggerBeacon name="bcnSpaceShip" />
+ </attached>
+ </SpaceShip>
+
+
+
+
+<!-- SpaceStation
+
+The station can either be hidden outside of the skybox, within the hull of the space station if it is big enough or within a planet.
+Complex spacestations can be placed very far away from the spaceship so it is rendered at low resolution while the player uses the space ship.
+
+-->
+ <StaticEntity position="0,-20000,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01 pitch=-90>
+ <attached>
+ <Model position="0,0,0" mesh="ss_tube.mesh" scale3D="100,100,100" />
+ <Model position="500,0,0" mesh="ss_tube.mesh" scale3D="100,100,100" />
+ <Model position="1200,0,0" mesh="ss_tube_x.mesh" scale3D="100,100,100" />
+ <Model position="1900,0,0" mesh="ss_curve.mesh" scale3D="100,100,100" />
+ <Model position="1200,0,703.5" mesh="ss_curve.mesh" scale3D="100,100,100" />
+ <Model position="1805.0,0,-800" mesh="ss_curve.mesh" scale3D="100,100,100" yaw=90 />
+ <Model position="1010.0,0,-700.0" mesh="ss_curve.mesh" scale3D="100,100,100" yaw=-180 />
+
+
+ <Model position="750,-16,703.5" pitch=-90 mesh="ss_flag_room.mesh" scale3D="100,100,100" />
+ <Model position="-250,-16,0" pitch=-90 mesh="ss_flag_room.mesh" scale3D="100,100,100" />
+ <Model position="1200,100,-100" roll=180 mesh="ss_machine.mesh" scale3D="0.15,0.15,0.15" />
+ <Model position="-100,100,0" roll=180 mesh="ss_table.mesh" scale3D="25,25,25" />
+ <Model position="-300,100,0" roll=180 mesh="ss_table_cracked.mesh" scale3D="25,25,25" />
+ <Model position="600,75,0" roll=180 mesh="ss_cylinder.mesh" scale3D="25,25,25" />
+ <Model position="300,50,0" roll=180 pitch=20 mesh="ss_chair.mesh" scale3D="20,20,20" />
+ <Model position="1000,50,0" roll=180 mesh="ss_wall.mesh" scale3D="20,20,20" />
+ <Model position="-830,20,0" roll=180 mesh="ss_flag_aean.mesh" scale3D="40,40,40" />
+
+ <!--Model mesh="cube.mesh" mass=10 position="0,-100,0" scale3D="5000,0.5,1000" yaw=0 />
+ <Model mesh="cube.mesh" mass=10 position="0,100,0" scale3D="2000,0.5,1000" yaw=0 />
+ <!--Model mesh="cube.mesh" mass=10 position="0,0,100" scale3D="5000,100,0.5" yaw=0 />
+ <Model mesh="cube.mesh" mass=10 position="0,0,-100" scale3D="5000,100,0.5" yaw=0 /-->
+ </attached>
+ <collisionShapes>
+ <!--BoxCollisionShape position="0,-100,0" halfExtents="5000,0,100" /-->
+ <BoxCollisionShape position="0,100,0" halfExtents="2000,0,1000" />
+ <!--BoxCollisionShape position="0,0,100" halfExtents="5000,100,0" />
+ <BoxCollisionShape position="0,0,-100" halfExtents="5000,100,0" /-->
+ </collisionShapes>
+ </StaticEntity>
+
+<!--
+
+-->
+
+
+ <!--Model position="2820,-20,-160" yaw="90" pitch="-90" roll="0" scale="10" mesh="ss_tube.mesh" />
+ <Model position="2820,-20,-210" yaw="90" pitch="-90" roll="0" scale="10" mesh="ss_tube.mesh" />
+ <Model position="2820,-20,-280" yaw="90" pitch="-90" roll="0" scale="10" mesh="ss_curve.mesh" />
+ <Model position="2820,-100,-270.5" yaw="0" pitch="180" roll="90" scale="10" mesh="ss_curve.mesh" /-->
+
+
+<!-- Homogenous gravitationfield to simulate local gravity (activating the normal gravity will affect the spaceship terribly) -->
+<ForceField position="0,-20000,0" mode="homogen" diameter="3000" forcedirection = "0,-500,0" />
+
+
+
+
+
+<!-- Some more stuff -->
+
+ <!-- triple large belt around the planet -->
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(0, -19900, 0, 30, 0, 30, 30, 50, 7190, 7800, 250, 1)
+ ?>
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(0, -19900, 0, 30, 0, 30, 30, 50, 10000, 11000, 300, 1)
+ ?>
+ <?lua
+ dofile("includes/asteroidField.lua")
+ asteroidBelt(0, -19900, 0, 30, 0, 30, 30, 50, 14000, 15000, 350, 1)
+ ?>
+
+ <Model position="0,-19900,0" mesh="planets/ganymede.mesh" scale="5000" />
+
+
+
+ </Scene>
+
+</Level>
+
Modified: code/trunk/data/levels/quests.oxw
===================================================================
--- code/trunk/data/levels/quests.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/quests.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,4 @@
+<!-- -->
<LevelInfo
name = "Quests showcase"
description = "Level to test and showcase quests."
Copied: code/trunk/data/levels/radar3D_test.oxw (from rev 9938, code/branches/presentationHS13/data/levels/radar3D_test.oxw)
===================================================================
--- code/trunk/data/levels/radar3D_test.oxw (rev 0)
+++ code/trunk/data/levels/radar3D_test.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,77 @@
+<LevelInfo
+ name = "radar3D_test"
+ description = "A level with absolutely nothing in it."
+ tags = "test"
+ screenshot = "emptylevel.png"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+?>
+
+<?lua
+ include("templates/spaceshipAssff2.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipEscort.oxt")
+?>
+
+<Level
+ gametype = "Mission"
+>
+ <templates>
+ <Template link=lodtemplate_default />
+ </templates>
+ <?lua include("includes/notifications.oxi") ?>
+
+ <Scene
+ ambientlight = "0.8, 0.8, 0.8"
+ skybox = "Orxonox/Starbox"
+ >
+
+ <Light type=directional position="0,0,0" direction="0.253, 0.593, -0.765" diffuse="1.0, 0.9, 0.9, 1.0" specular="1.0, 0.9, 0.9, 1.0"/>
+ <SpawnPoint team=0 position="-500,0,0" lookat="0,0,0" spawnclass=SpaceShip pawndesign=spaceshipescort />
+
+
+
+ <Pawn team=0 health=30 position="0,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box radarname = "0,0,0" >
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=1 health=30 position="0,1000,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box radarname = "0,1000,0" >
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
+ </collisionShapes>
+ </Pawn>
+
+
+ <Pawn team=2 health=30 position="0,0,1000" direction="0,-1,0" collisionType=dynamic mass=100000 name=box radarname = "0,0,1000" >
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
+ </collisionShapes>
+ </Pawn>
+
+ <Pawn team=3 health=30 position="1000,0,0" direction="0,-1,0" collisionType=dynamic mass=100000 name=box radarname = "1000,0,0" >
+ <attached>
+ <Model position="0,0,0" mesh="crate.mesh" scale3D="3,3,3" />
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0,0,0" halfExtents="15,15,15" />
+ </collisionShapes>
+ </Pawn>
+
+ </Scene>
+</Level>
+
Modified: code/trunk/data/levels/spaceRace.oxw
===================================================================
--- code/trunk/data/levels/spaceRace.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/spaceRace.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -28,6 +28,19 @@
ambientlight = "0.8, 0.8, 0.8"
skybox = "Orxonox/skyBoxMoreNebula"
>
+
+ <!-- SOUNDS & MUSIC -->
+ <WorldSound name="scoreSound" position="0,-2100,0" source="sounds/ReadyGo.ogg" >
+ <events>
+ <play>
+ <EventListener event="start" />
+ </play>
+ </events>
+ </WorldSound>
+ <DistanceTrigger name="start" position="0,-2100,0" target="Pawn" distance=100 stayActive="true" delay=0.5 />
+
+ <WorldAmbientSound source="Ganymede.ogg" looping="true" playOnLoad="true" />
+
<?lua math.randomseed(98) ?>
@@ -462,6 +475,8 @@
</WaypointPatrolController>
</controller>
</SpaceShip>
+
+
</Scene>
</Level>
Modified: code/trunk/data/levels/surfaceRace.oxw
===================================================================
--- code/trunk/data/levels/surfaceRace.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/surfaceRace.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -10,6 +10,7 @@
tags = "gametype"
/>
+
<?lua
include("stats.oxo")
include("HUDTemplates3.oxo")
@@ -444,6 +445,17 @@
end
?>
<?lua end ?>
+
+ <!-- SOUNDS & MUSIC -->
+ <WorldSound name="scoreSound" position="0,8050,0" source="sounds/ReadyGo.ogg" >
+ <events>
+ <play>
+ <EventListener event="start" />
+ </play>
+ </events>
+ </WorldSound>
+ <DistanceTrigger name="start" position="0,8050,0" target="Pawn" distance=100 stayActive="true" delay=0.5 />
+ <WorldAmbientSound source="Ganymede.ogg" looping="true" playOnLoad="true" />
</Scene>
</Level>
Modified: code/trunk/data/levels/teamBaseMatch.oxw
===================================================================
--- code/trunk/data/levels/teamBaseMatch.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/teamBaseMatch.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -18,6 +18,8 @@
gametype = "TeamBaseMatch"
>
+<WorldAmbientSound source="Jupiter.ogg" looping="true" playOnLoad="true" />
+
<templates>
<Template link=lodtemplate_default />
</templates>
Modified: code/trunk/data/levels/teamDeathMatch.oxw
===================================================================
--- code/trunk/data/levels/teamDeathMatch.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/teamDeathMatch.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -21,6 +21,8 @@
<Template link=lodtemplate_default />
</templates>
<?lua include("includes/notifications.oxi") ?>
+
+ <WorldAmbientSound source="Jupiter.ogg" looping="true" playOnLoad="true" />
<Scene
ambientlight = "0.7, 0.6, 0.6"
Copied: code/trunk/data/levels/templates/.shipmodels (from rev 9938, code/branches/presentationHS13/data/levels/templates/.shipmodels)
===================================================================
--- code/trunk/data/levels/templates/.shipmodels (rev 0)
+++ code/trunk/data/levels/templates/.shipmodels 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,16 @@
+spaceshipTransporterSL
+spaceshipTurret
+spaceshipGhost
+spaceshipEscort
+spaceshipSwallow
+spaceshipAssff
+spaceshipSpacecruiser
+spaceshipHXY
+spaceshipH2
+spaceshipHXYSL
+spaceshipCollateralDamage
+spaceshipAssff2
+spaceshipPirate
+spaceshipRace
+spaceshipTransporter
+spaceshipInvader
Copied: code/trunk/data/levels/templates/HeavyCruiser.oxt (from rev 9938, code/branches/presentationHS13/data/levels/templates/HeavyCruiser.oxt)
===================================================================
--- code/trunk/data/levels/templates/HeavyCruiser.oxt (rev 0)
+++ code/trunk/data/levels/templates/HeavyCruiser.oxt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,506 @@
+<!-- This template includes HeavyCruiser with all its parts (not individually destructible) -->
+
+<Template name=HeavyCruiser>
+ <SpaceShip
+ hudtemplate = spaceshiphud
+ camerapositiontemplate = heavycruisercameras
+ spawnparticlesource = "Orxonox/fairytwirl"
+ spawnparticleduration = 3
+ explosionchunks = 6
+
+ health = 100
+ maxhealth = 200
+ initialhealth = 100
+
+ shieldhealth = 100
+ initialshieldhealth = 30
+ maxshieldhealth = 50
+ shieldabsorption = 0.8
+ reloadrate = 1
+ reloadwaittime = 1
+
+ primaryThrust = 300
+ auxilaryThrust = 30
+ rotationThrust = 0.1
+
+ lift = 1;
+ stallSpeed = 220;
+
+ boostPower = 30
+ boostPowerRate = 1.5
+ boostRate = 4
+ boostCooldownDuration = 10
+
+ shakeFrequency = 15
+ shakeAmplitude = 9
+
+ collisionType = "dynamic"
+ mass = 10000
+ linearDamping = 0.1
+ angularDamping = 0.5
+ >
+ <engines>
+ <MultiStateEngine position="85,0,0" template=HeavyCruiser_body_engine1 />
+ <MultiStateEngine position="-85,0,0" template=HeavyCruiser_body_engine1 />
+
+ <MultiStateEngine position="-140,0,308" template=HeavyCruiser_sidearmL_engine1 />
+ <MultiStateEngine position="140,0,308" template=HeavyCruiser_sidearmR_engine1 />
+ </engines>
+ <attached>
+
+ <Model mesh="HeavyCruiser_body.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_frontL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_frontR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_partL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_partR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_sidearmL.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_sidearmLfront.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_sidearmR.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+ <Model mesh="HeavyCruiser_sidearmRfront.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+
+ <!-- bay1 lights -->
+ <BlinkingBillboard position="75,30,-416" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.05 frequency=0.3 phase=240 quadratic=1 />
+ <BlinkingBillboard position="-75,30,-416" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.05 frequency=0.3 phase=240 quadratic=1 />
+ <BlinkingBillboard position="74,30,-402" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.1 frequency=0.3 phase=120 quadratic=1 />
+ <BlinkingBillboard position="-74,30,-402" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.1 frequency=0.3 phase=120 quadratic=1 />
+ <BlinkingBillboard position="73,30,-388" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.15 frequency=0.3 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-73,30,-388" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.15 frequency=0.3 phase=0 quadratic=1 />
+ <!-- front position lights -->
+ <BlinkingBillboard position="67,-5,-240" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-67,-5,-240" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="72,51,-380" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="-72,51,-380" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <!-- rear position lights -->
+ <BlinkingBillboard position="95,-15,483" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="-95,-15,483" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="74,103,524" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-74,103,524" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="80,33,-320" halfExtents="7,11,54" info="frontR"/>
+ <BoxCollisionShape position="79,31,-399" halfExtents="3,6,26" info="frontR"/>
+
+
+ <BoxCollisionShape position="-80,33,-320" halfExtents="7,11,54" info="frontL"/>
+ <BoxCollisionShape position="-79,31,-399" halfExtents="3,6,26" info="frontL"/>
+
+
+ <BoxCollisionShape position="94,33,-179" halfExtents="11,13,45" info="partR"/>
+ <BoxCollisionShape position="96,33,-230" halfExtents="13,17,22" info="partR"/>
+
+
+ <BoxCollisionShape position="-94,33,-179" halfExtents="11,13,45" info="partL"/>
+ <BoxCollisionShape position="-96,33,-230" halfExtents="13,17,22" info="partL"/>
+
+
+ <BoxCollisionShape position="109,47,87" halfExtents="29,8,26" info="sidearmR, upper connection"/>
+ <BoxCollisionShape position="99,-1,79" roll="-15" halfExtents="40,4,9" info="sidearmR, lower connection"/>
+ <BoxCollisionShape position="145,21,115" roll="-15" halfExtents="19,31,105" info="sidearmR, front"/>
+ <BoxCollisionShape position="140,12,261" roll="-15" halfExtents="22,41,43" info="sidearmR, back"/>
+ <BoxCollisionShape position="145,25,5" roll="-15" halfExtents="10,18,5" info="sidearmR, front break"/>
+ <BoxCollisionShape position="133,-13,29" roll="-15" halfExtents="12,6,17" info="sidearmR, bottom cylinder"/>
+ <BoxCollisionShape position="165,-4,31" roll="-15" halfExtents="7,21,13" info="sidearmR, box"/>
+ <BoxCollisionShape position="153,59,96" roll="-15" halfExtents="6,7,60" info="sidearmR, upper beam"/>
+ <BoxCollisionShape position="143,57,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper inner beam"/>
+ <BoxCollisionShape position="142,53,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper inner beam"/>
+ <BoxCollisionShape position="160,52,119" roll="-15" halfExtents="3,4,85" info="sidearmR, upper outer beam"/>
+ <BoxCollisionShape position="159,48,212" pitch="21" yaw="-5" roll="-15" halfExtents="3,4,10" info="sidearmR, upper outer beam"/>
+ <BoxCollisionShape position="152,54,34" pitch="-46" yaw="14" roll="-15" halfExtents="6,7,10" info="sidearmR, upper beam front"/>
+ <BoxCollisionShape position="152,54,162" pitch="30" yaw="-9" roll="-15" halfExtents="6,7,12" info="sidearmR, upper beam back"/>
+ <BoxCollisionShape position="168,21,119" roll="-15" halfExtents="3,5,109" info="sidearmR, outer beam"/>
+ <BoxCollisionShape position="134,-10,169" roll="-15" halfExtents="6,4,55" info="sidearmR, lower beam front"/>
+ <BoxCollisionShape position="131,-20,217" pitch="-20" roll="-15" yaw="5" halfExtents="6,12,3" info="sidearmR, lower beam middle"/>
+ <BoxCollisionShape position="130,-29,233" roll="-15" halfExtents="6,3,15" info="sidearmR, lower beam back"/>
+
+
+ <BoxCollisionShape position="141,15,-53" roll="-15" halfExtents="27,44,62" info="sidearmRfront"/>
+ <BoxCollisionShape position="153,59,-30" roll="-15" halfExtents="4,2,38" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,61,-41" roll="-15" halfExtents="4,4,11" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,60,-65" roll="-15" halfExtents="4,3,4" info="sidearmRfront, top"/>
+ <BoxCollisionShape position="153,59,-41" roll="-15" halfExtents="8,2,11" info="sidearmRfront, top"/>
+
+
+ <BoxCollisionShape position="-109,47,87" halfExtents="29,8,26" info="sidearmL, upper connection"/>
+ <BoxCollisionShape position="-99,-1,79" roll="15" halfExtents="40,4,9" info="sidearmL, lower connection"/>
+ <BoxCollisionShape position="-145,21,115" roll="15" halfExtents="19,31,105" info="sidearmL, front"/>
+ <BoxCollisionShape position="-140,12,261" roll="15" halfExtents="22,41,43" info="sidearmL, back"/>
+ <BoxCollisionShape position="-145,25,5" roll="15" halfExtents="10,18,5" info="sidearmL, front break"/>
+ <BoxCollisionShape position="-133,-13,29" roll="15" halfExtents="12,6,17" info="sidearmL, bottom cylinder"/>
+ <BoxCollisionShape position="-165,-4,31" roll="15" halfExtents="7,21,13" info="sidearmL, box"/>
+ <BoxCollisionShape position="-153,59,96" roll="15" halfExtents="6,7,60" info="sidearmL, upper beam"/>
+ <BoxCollisionShape position="-143,57,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper inner beam"/>
+ <BoxCollisionShape position="-142,53,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper inner beam"/>
+ <BoxCollisionShape position="-160,52,119" roll="15" halfExtents="3,4,85" info="sidearmL, upper outer beam"/>
+ <BoxCollisionShape position="-159,48,212" pitch="21" yaw="5" roll="15" halfExtents="3,4,10" info="sidearmL, upper outer beam"/>
+ <BoxCollisionShape position="-152,54,34" pitch="-46" yaw="-14" roll="15" halfExtents="6,7,10" info="sidearmL, upper beam front"/>
+ <BoxCollisionShape position="-152,54,162" pitch="30" yaw="9" roll="15" halfExtents="6,7,12" info="sidearmL, upper beam back"/>
+ <BoxCollisionShape position="-168,21,119" roll="15" halfExtents="3,5,109" info="sidearmL, outer beam"/>
+ <BoxCollisionShape position="-134,-10,169" roll="15" halfExtents="6,4,55" info="sidearmL, lower beam front"/>
+ <BoxCollisionShape position="-131,-20,217" pitch="-20" roll="15" yaw="-5" halfExtents="6,12,3" info="sidearmL, lower beam middle"/>
+ <BoxCollisionShape position="-130,-29,233" roll="15" halfExtents="6,3,15" info="sidearmL, lower beam back"/>
+
+
+ <BoxCollisionShape position="-141,15,-53" roll="15" halfExtents="27,44,62" info="sidearmLfront"/>
+ <BoxCollisionShape position="-153,59,-30" roll="15" halfExtents="4,2,38" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,61,-41" roll="15" halfExtents="4,4,11" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,60,-65" roll="15" halfExtents="4,3,4" info="sidearmLfront, top"/>
+ <BoxCollisionShape position="-153,59,-41" roll="15" halfExtents="8,2,11" info="sidearmLfront, top"/>
+
+
+ <BoxCollisionShape position="60,35,-310" halfExtents="13,28,60" info="body, bay1, Rwall"/>
+ <BoxCollisionShape position="-60,35,-310" halfExtents="13,28,60" info="body, bay1, Lwall"/>
+ <BoxCollisionShape position="0,56,-310" halfExtents="65,6,60" info="body, bay1, Twall"/>
+ <BoxCollisionShape position="0,33,-260" halfExtents="65,28,5" info="body, bay1, Bwall"/>
+ <BoxCollisionShape position="0,10,-310" halfExtents="65,5,60" info="body, bay1, BottomWall"/>
+
+ <BoxCollisionShape position="0,35,-125" halfExtents="83,30,130" info="body, front"/>
+ <BoxCollisionShape position="0,6,-307" halfExtents="19,3,43" info="body, frontbottom"/>
+ <BoxCollisionShape position="0,5,-196" halfExtents="27,3,24" info="body, dock"/>
+ <BoxCollisionShape position="0,7,-248" pitch="25" halfExtents="63,4,12" info="body, dockF"/>
+ <BoxCollisionShape position="70,6,-120" roll="20" halfExtents="12,6,120" info="body, dockR"/>
+ <BoxCollisionShape position="63,-2,-180" halfExtents="3,3,60" info="body, dockR"/>
+ <BoxCollisionShape position="-70,6,-120" roll="-20" halfExtents="12,6,120" info="body, dockL"/>
+ <BoxCollisionShape position="-63,-2,-180" halfExtents="3,3,60" info="body, dockL"/>
+ <BoxCollisionShape position="87,32,-63" halfExtents="4,23,50" info="body, frontCR"/>
+ <BoxCollisionShape position="-87,32,-63" halfExtents="4,23,50" info="body, frontCL"/>
+
+ <BoxCollisionShape position="0,72,-213" halfExtents="37,8,60" info="body, Fbridge"/>
+ <BoxCollisionShape position="0,72,-110" halfExtents="53,11,53" info="body, Cbridge"/>
+ <BoxCollisionShape position="0,86,-110" halfExtents="40,4,40" info="body, Cbridge"/>
+ <BoxCollisionShape position="0,70,-60" halfExtents="65,11,30" info="body, Bbridge"/>
+ <BoxCollisionShape position="0,84,-45" halfExtents="33,11,26" info="body, Bbridge"/>
+ <BoxCollisionShape position="0,79,-6" pitch="10" halfExtents="32,13,17" info="body, Bbridge"/>
+ <BoxCollisionShape position="38,67,-45" roll="50" halfExtents="16,23,25" info="body, BbridgeR"/>
+ <BoxCollisionShape position="35,63,-17" pitch="25" yaw="-20" roll="40" halfExtents="16,23,16" info="body, BbridgeR"/>
+ <BoxCollisionShape position="-38,67,-45" roll="-50" halfExtents="16,23,25" info="body, BbridgeL"/>
+ <BoxCollisionShape position="-35,63,-17" pitch="25" yaw="20" roll="-40" halfExtents="16,23,16" info="body, BbridgeL"/>
+
+ <BoxCollisionShape position="0,69,80" halfExtents="8,4,80" info="body, Cbeam"/>
+ <BoxCollisionShape position="-67,18,58" roll="-22" halfExtents="13,5,53" info="body, CF, L"/>
+ <BoxCollisionShape position="-76,36,86" halfExtents="5,18,81" info="body, C, L"/>
+ <BoxCollisionShape position="-91,46,86" halfExtents="11,6,20" info="body, C, L upper beam"/>
+ <BoxCollisionShape position="-64,8,79" roll="10" halfExtents="8,3,8" info="body, C, L lower beam"/>
+ <BoxCollisionShape position="-71,55,140" pitch="-4" roll="31" halfExtents="9,5,27" info="body, CB, TopL"/>
+ <BoxCollisionShape position="-62,2,140" roll="24" halfExtents="10,24,32" info="body, CB, BottomL"/>
+ <BoxCollisionShape position="67,18,58" roll="22" halfExtents="13,5,53" info="body, CF, R"/>
+ <BoxCollisionShape position="76,36,86" halfExtents="5,18,81" info="body, C, R"/>
+ <BoxCollisionShape position="91,46,86" halfExtents="11,6,20" info="body, C, R upper beam"/>
+ <BoxCollisionShape position="64,8,79" roll="-10" halfExtents="8,3,8" info="body, C, R lower beam"/>
+ <BoxCollisionShape position="71,55,140" pitch="-4" roll="-31" halfExtents="9,5,27" info="body, CB, TopR"/>
+ <BoxCollisionShape position="62,2,140" roll="-24" halfExtents="10,24,32" info="body, CB, BottomR"/>
+ <BoxCollisionShape position="0,60,12" halfExtents="81,5,11" info="body, CF, Top"/>
+ <BoxCollisionShape position="0,55,40" pitch="15" halfExtents="81,5,20" info="body, CF, Top"/>
+ <BoxCollisionShape position="0,50,85" pitch="1" halfExtents="81,5,29" info="body, C, Top"/>
+ <BoxCollisionShape position="0,59,140" pitch="-4" halfExtents="68,5,27" info="body, CB, Top"/>
+
+
+
+ <BoxCollisionShape position="0,-7,90" halfExtents="40,4,90" info="body, bay3, Twall"/>
+ <BoxCollisionShape position="0,-15,-60" halfExtents="60,25,65" info="body, bay3, Fwall"/>
+ <BoxCollisionShape position="47,-11,90" halfExtents="13,20,90" info="body, bay3, Rwall"/>
+ <BoxCollisionShape position="-47,-11,90" halfExtents="13,20,90" info="body, bay3, Lwall"/>
+ <BoxCollisionShape position="0,-29,149" halfExtents="10,2,11" info="body, bay3, platform"/>
+ <BoxCollisionShape position="0,-20,227" halfExtents="60,20,65" info="body, bay3, Bwall"/>
+
+ <BoxCollisionShape position="0,81,238" halfExtents="26,5,59" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,67,234" halfExtents="54,5,67" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,77,175" pitch="-36" halfExtents="26,5,9" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,62,161" pitch="-30" halfExtents="56,5,10" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,69,162" halfExtents="16,7,10" info="body, BF, Top"/>
+ <BoxCollisionShape position="31,76,238" roll="-46" halfExtents="10,3,59" info="body, BF, TopR"/>
+ <BoxCollisionShape position="64,64,234" roll="-24" halfExtents="13,3,67" info="body, BF, TopR"/>
+ <BoxCollisionShape position="-31,76,238" roll="46" halfExtents="10,3,59" info="body, BF, TopL"/>
+ <BoxCollisionShape position="-64,64,234" roll="24" halfExtents="13,3,67" info="body, BF, TopL"/>
+
+ <BoxCollisionShape position="77,40,244" roll="16" halfExtents="7,20,79" info="body, BF, R"/>
+ <BoxCollisionShape position="95,9,234" roll="2" halfExtents="18,16,59" info="body, BF, R"/>
+ <BoxCollisionShape position="74,1,255" roll="-20" halfExtents="18,19,82" info="body, BF, BottomR"/>
+ <BoxCollisionShape position="66,-21,255" roll="9" halfExtents="17,5,82" info="body, BF, BottomR"/>
+ <BoxCollisionShape position="-77,40,244" roll="-16" halfExtents="7,20,79" info="body, BF, L"/>
+ <BoxCollisionShape position="-95,9,234" roll="-2" halfExtents="18,16,59" info="body, BF, L"/>
+ <BoxCollisionShape position="-74,1,255" roll="20" halfExtents="18,19,82" info="body, BF, BottomL"/>
+ <BoxCollisionShape position="-66,-21,255" roll="-9" halfExtents="17,5,82" info="body, BF, BottomL"/>
+
+ <BoxCollisionShape position="0,106,381" halfExtents="36,5,71" info="body, BTop"/>
+ <BoxCollisionShape position="0,93,299" pitch="-49" halfExtents="34,5,20" info="body, BTop"/>
+ <BoxCollisionShape position="41,101,381" roll="-42" halfExtents="10,4,71" info="body, BTopR"/>
+ <BoxCollisionShape position="-41,101,381" roll="42" halfExtents="10,4,71" info="body, BTopL"/>
+
+ <BoxCollisionShape position="78,45,332" pitch="-10" roll="-10" yaw="20" halfExtents="10,20,30" info="body, back, R"/>
+ <BoxCollisionShape position="68,77,332" pitch="-10" roll="35" yaw="20" halfExtents="10,20,30" info="body, back, TR"/>
+ <BoxCollisionShape position="50,70,290" pitch="-10" roll="35" yaw="43" halfExtents="5,20,20" info="body, back, TR"/>
+ <BoxCollisionShape position="37,95,307" pitch="-10" roll="30" yaw="43" halfExtents="5,8,8" info="body, back, TR"/>
+ <BoxCollisionShape position="52,92,332" pitch="-10" yaw="30" halfExtents="10,5,30" info="body, back, TR"/>
+ <BoxCollisionShape position="88,4,322" halfExtents="10,24,30" info="body, back, RB"/>
+ <BoxCollisionShape position="54,-24,314" roll="35" pitch="-10" halfExtents="8,5,23" info="body, back, RB"/>
+ <BoxCollisionShape position="68,-19,346" pitch="-17" roll="8" halfExtents="16,4,11" info="body, back, bottomR"/>
+ <BoxCollisionShape position="-78,45,332" pitch="-10" roll="10" yaw="-20" halfExtents="10,20,30" info="body, back, L"/>
+ <BoxCollisionShape position="-68,77,332" pitch="-10" roll="-35" yaw="-20" halfExtents="10,20,30" info="body, back, TL"/>
+ <BoxCollisionShape position="-50,70,290" pitch="-10" roll="-35" yaw="-43" halfExtents="5,20,20" info="body, back, TL"/>
+ <BoxCollisionShape position="-37,95,307" pitch="-10" roll="-30" yaw="-43" halfExtents="5,8,8" info="body, back, TL"/>
+ <BoxCollisionShape position="-52,92,332" pitch="-10" yaw="-30" halfExtents="10,5,30" info="body, back, TL"/>
+ <BoxCollisionShape position="-88,4,322" halfExtents="10,24,30" info="body, back, LB"/>
+ <BoxCollisionShape position="-54,-24,314" roll="-35" pitch="-10" halfExtents="8,5,23" info="body, back, LB"/>
+ <BoxCollisionShape position="-68,-19,346" pitch="-17" roll="-8" halfExtents="16,4,11" info="body, back, bottomL"/>
+ <BoxCollisionShape position="0,-30,314" pitch="-8" halfExtents="52,4,23" info="body, back, bottom"/>
+ <BoxCollisionShape position="0,-22,346" pitch="-24" halfExtents="52,4,11" info="body, back, bottom"/>
+
+ <BoxCollisionShape position="48,-29,400" halfExtents="5,8,58" info="body, BBottomRBeam"/>
+ <BoxCollisionShape position="48,-29,451" halfExtents="10,13,14" info="body, BBottomRBeam"/>
+ <BoxCollisionShape position="-48,-29,400" halfExtents="5,8,58" info="body, BBottomLBeam"/>
+ <BoxCollisionShape position="-48,-31,451" halfExtents="10,13,14" info="body, BBottomLBeam"/>
+
+ <BoxCollisionShape position="103,60,420" halfExtents="18,9,64" info="body, back, Rextrusion"/>
+ <BoxCollisionShape position="-103,60,420" halfExtents="18,9,64" info="body, back, Lextrusion"/>
+ <BoxCollisionShape position="-85,7,417" halfExtents="10,21,67" info="body, back, LB"/>
+ <BoxCollisionShape position="85,7,417" halfExtents="10,21,67" info="body, back, RB"/>
+ <BoxCollisionShape position="0,-8,473" halfExtents="90,6,10" info="body, back, Bback"/>
+ <BoxCollisionShape position="0,-13,474" pitch="-23" halfExtents="76,5,8" info="body, back, Bback"/>
+ <BoxCollisionShape position="-79,-13,405" roll="-12" halfExtents="15,5,73" info="body, back, BL"/>
+ <BoxCollisionShape position="79,-13,405" roll="12" halfExtents="15,5,73" info="body, back, BR"/>
+ <BoxCollisionShape position="0,-15,410" halfExtents="66,6,58" info="body, back, B"/>
+
+ <BoxCollisionShape position="78,32,440" roll="-18" halfExtents="18,35,85" info="body, bay2, Rwall"/>
+ <BoxCollisionShape position="75,71,440" roll="35" halfExtents="18,27,85" info="body, bay2, Rwall"/>
+ <BoxCollisionShape position="-78,32,440" roll="18" halfExtents="18,35,85" info="body, bay2, Lwall"/>
+ <BoxCollisionShape position="-75,71,440" roll="-35" halfExtents="18,27,85" info="body, bay2, Lwall"/>
+ <BoxCollisionShape position="0,75,435" halfExtents="72,28,90" info="body, bay2, Twall"/>
+ <BoxCollisionShape position="0,35,423" halfExtents="85,35,5" info="body, bay2, Fwall"/>
+ <BoxCollisionShape position="0,-3,465" halfExtents="84,5,60" info="body, bay2, BottomWall"/>
+ <BoxCollisionShape position="0,78,526" halfExtents="43,17,5" info="body, bay2, Twall"/>
+
+
+ <BoxCollisionShape position="0,7,80" halfExtents="23,1,34" info="HOOKBOX at 0,18,80, bottom"/>
+ <BoxCollisionShape position="0,29,80" halfExtents="23,1,34" info="HOOKBOX, top"/>
+ <BoxCollisionShape position="-22,18,80" halfExtents="1,12,34" info="HOOKBOX, left long"/>
+ <BoxCollisionShape position="0,18,80" halfExtents="1,12,34" info="HOOKBOX, center long"/>
+ <BoxCollisionShape position="22,18,80" halfExtents="1,12,34" info="HOOKBOX, right long"/>
+ <BoxCollisionShape position="0,18,113" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,91" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,69" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,47" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+
+<!-- Following the position of the other parts collisionboxes, used to attach them to the body -->
+<!-- <BoxCollisionShape position="-11,18,102" halfExtents="10,10,10" info="HOOK, sidearmL"/>
+ <BoxCollisionShape position="11,18,102" halfExtents="10,10,10" info="HOOK, sidearmR"/>
+ <BoxCollisionShape position="-11,18,80" halfExtents="10,10,10" info="HOOK, partL"/>
+ <BoxCollisionShape position="11,18,80" halfExtents="10,10,10" info="HOOK, partR"/>
+ <BoxCollisionShape position="-11,18,58" halfExtents="10,10,10" info="HOOK, frontL"/>
+ <BoxCollisionShape position="11,18,58" halfExtents="10,10,10" info="HOOK, frontR"/> -->
+ </collisionShapes>
+<?lua
+ include("../includes/weaponSettingsHeavyCruiser.oxi")
+?>
+ </SpaceShip>
+
+</Template>
+
+
+
+
+<Template name=heavycruisercameras defaults=0>
+ <SpaceShip>
+ <camerapositions>
+ <CameraPosition position="0,200, 1000" drag=true mouselook=true />
+ <CameraPosition position="0,100, 1000" drag=true mouselook=true />
+ <CameraPosition position="0,150,600" drag=true mouselook=true />
+ <CameraPosition position="0,80,-300" drag=false mouselook=false />
+ <CameraPosition position="200,80,300" drag=false mouselook=false />
+ <CameraPosition position="0,1100,60" pitch="-90" drag=false mouselook=true />
+ </camerapositions>
+ </SpaceShip>
+</Template>
+
+
+
+
+<Template name=HeavyCruiser_body_engine1 baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2
+
+ speedfront = 150
+ speedback = 40
+ speedleftright = 40
+ speedupdown = 40
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 10
+ accelerationbrake = 8
+ accelerationback = 4
+ accelerationleftright = 4
+ accelerationupdown = 4
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-66,87,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-73,77,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-80,68,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.8 position="-86,58,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-82,46,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-80,34,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-76,21,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.6 position="-71,9,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="66,87,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="73,77,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="80,68,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.8 position="86,58,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="82,46,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="80,34,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="76,21,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.6 position="71,9,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="66,87,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="73,77,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="80,68,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.5 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="86,58,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="82,46,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.5 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="80,34,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.4 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="76,21,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="71,9,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-66,87,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-73,77,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-80,68,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.5 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-86,58,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-82,46,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.5 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-80,34,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.4 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-76,21,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-71,9,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="85,58,525" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-85,58,525" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="66,87,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.5 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="73,77,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.6 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="80,68,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="86,58,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="82,46,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="80,34,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="76,21,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.6 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="71,9,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.5 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-66,87,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.5 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-73,77,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.6 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-80,68,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-86,58,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-82,46,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-80,34,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-76,21,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.6 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-71,9,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.5 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+<!-- <EffectContainer condition="brake">
+ <FadingBillboard mainstate=activity active=false scale=0.3 position=" 8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.3 position="-8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position=" 8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position="-8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+-->
+ </MultiStateEngine>
+</Template>
+
+
+<Template name=HeavyCruiser_sidearmL_engine1 baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2
+
+ speedfront = 300
+ speedback = 50
+ speedleftright = 50
+ speedupdown = 50
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 10
+ accelerationbrake = 8
+ accelerationback = 4
+ accelerationleftright = 4
+ accelerationupdown = 4
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=1 position="-147,35,308" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=1 position="-136,-5,308" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-147,35,308" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-136,-5,308" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-147,35,308" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-136,-5,308" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-148,35,308" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-136,-5,308" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+<!-- <EffectContainer condition="brake">
+
+ <FadingBillboard mainstate=activity active=false scale=0.3 position=" 8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.3 position="-8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position=" 8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position="-8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+-->
+ </MultiStateEngine>
+</Template>
+
+
+<Template name=HeavyCruiser_sidearmR_engine1 baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2
+
+ speedfront = 300
+ speedback = 50
+ speedleftright = 50
+ speedupdown = 50
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 10
+ accelerationbrake = 8
+ accelerationback = 4
+ accelerationleftright = 4
+ accelerationupdown = 4
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=1 position="147,35,308" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=1 position="136,-5,308" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="147,35,308" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="136,-5,308" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="147,35,308" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="136,-5,308" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="147,35,308" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="136,-5,308" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+<!-- <EffectContainer condition="brake">
+ <FadingBillboard mainstate=activity active=false scale=0.3 position=" 8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.3 position="-8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position=" 8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position="-8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+-->
+ </MultiStateEngine>
+</Template>
Copied: code/trunk/data/levels/templates/HeavyCruiserBody.oxt (from rev 9938, code/branches/presentationHS13/data/levels/templates/HeavyCruiserBody.oxt)
===================================================================
--- code/trunk/data/levels/templates/HeavyCruiserBody.oxt (rev 0)
+++ code/trunk/data/levels/templates/HeavyCruiserBody.oxt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,426 @@
+<!-- This template includes HeavyCruiser's main body only. Its parts can be attached as Pawns -->
+
+<Template name=HeavyCruiserBody>
+ <SpaceShip
+ hudtemplate = spaceshiphud
+ camerapositiontemplate = HeavyCruiser_cameras
+ spawnparticlesource = "Orxonox/fairytwirl"
+ spawnparticleduration = 3
+ explosionchunks = 6
+
+ health = 1000
+ maxhealth = 2000
+ initialhealth = 1000
+
+ shieldhealth = 1000
+ initialshieldhealth = 300
+ maxshieldhealth = 500
+ shieldabsorption = 0.8
+ reloadrate = 1
+ reloadwaittime = 1
+
+ primaryThrust = 300
+ auxilaryThrust = 30
+ rotationThrust = 0.1
+
+ lift = 1;
+ stallSpeed = 220;
+
+ boostPower = 30
+ boostPowerRate = 1.5
+ boostRate = 4
+ boostCooldownDuration = 10
+
+ shakeFrequency = 15
+ shakeAmplitude = 3
+
+ collisionType = "dynamic"
+ mass = 10000
+ linearDamping = 0.1
+ angularDamping = 0.5
+ >
+ <engines>
+ <MultiStateEngine position="85,0,0" template=HeavyCruiser_body_engine /> <!-- engine attached to main body-->
+ <MultiStateEngine position="-85,0,0" template=HeavyCruiser_body_engine /> <!-- engine attached to main body-->
+
+ <MultiStateEngine position="-140,0,308" template=HeavyCruiser_sidearmL_engine /> <!-- engine attached to sidearmL-->
+ <MultiStateEngine position="140,0,308" template=HeavyCruiser_sidearmR_engine /> <!-- engine attached to sidearmR-->
+ </engines>
+ <attached>
+
+ <Model mesh="HeavyCruiser_body.mesh" direction="-1,0,0" position="0,0,0" scale="40"/>
+
+ <!-- bay1 lights -->
+ <BlinkingBillboard position="75,30,-416" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.05 frequency=0.3 phase=240 quadratic=1 />
+ <BlinkingBillboard position="-75,30,-416" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.05 frequency=0.3 phase=240 quadratic=1 />
+ <BlinkingBillboard position="74,30,-402" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.1 frequency=0.3 phase=120 quadratic=1 />
+ <BlinkingBillboard position="-74,30,-402" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.1 frequency=0.3 phase=120 quadratic=1 />
+ <BlinkingBillboard position="73,30,-388" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.15 frequency=0.3 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-73,30,-388" material="Examples/Flare" colour="0.8, 0.8, 0, 0.1" amplitude=0.15 frequency=0.3 phase=0 quadratic=1 />
+ <!-- front position lights -->
+ <BlinkingBillboard position="67,-5,-240" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-67,-5,-240" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="72,51,-380" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="-72,51,-380" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <!-- rear position lights -->
+ <BlinkingBillboard position="95,-15,483" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+ <BlinkingBillboard position="-95,-15,483" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="74,103,524" material="Examples/Flare" colour="0, 0.7, 0, 0.1" amplitude=0.3 frequency=0.15 phase=0 quadratic=1 />
+ <BlinkingBillboard position="-74,103,524" material="Examples/Flare" colour="0.7, 0, 0, 0.1" amplitude=0.3 frequency=0.15 phase=360 quadratic=1 />
+
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="60,35,-310" halfExtents="13,28,60" info="body, bay1, Rwall"/>
+ <BoxCollisionShape position="-60,35,-310" halfExtents="13,28,60" info="body, bay1, Lwall"/>
+ <BoxCollisionShape position="0,56,-310" halfExtents="65,6,60" info="body, bay1, Twall"/>
+ <BoxCollisionShape position="0,33,-260" halfExtents="65,28,5" info="body, bay1, Bwall"/>
+ <BoxCollisionShape position="0,10,-310" halfExtents="65,5,60" info="body, bay1, BottomWall"/>
+
+ <BoxCollisionShape position="0,35,-125" halfExtents="83,30,130" info="body, front"/>
+ <BoxCollisionShape position="0,6,-307" halfExtents="19,3,43" info="body, frontbottom"/>
+ <BoxCollisionShape position="0,5,-196" halfExtents="27,3,24" info="body, dock"/>
+ <BoxCollisionShape position="0,7,-248" pitch="25" halfExtents="63,4,12" info="body, dockF"/>
+ <BoxCollisionShape position="70,6,-120" roll="20" halfExtents="12,6,120" info="body, dockR"/>
+ <BoxCollisionShape position="63,-2,-180" halfExtents="3,3,60" info="body, dockR"/>
+ <BoxCollisionShape position="-70,6,-120" roll="-20" halfExtents="12,6,120" info="body, dockL"/>
+ <BoxCollisionShape position="-63,-2,-180" halfExtents="3,3,60" info="body, dockL"/>
+ <BoxCollisionShape position="87,32,-63" halfExtents="4,23,50" info="body, frontCR"/>
+ <BoxCollisionShape position="-87,32,-63" halfExtents="4,23,50" info="body, frontCL"/>
+
+ <BoxCollisionShape position="0,72,-213" halfExtents="37,8,60" info="body, Fbridge"/>
+ <BoxCollisionShape position="0,72,-110" halfExtents="53,11,53" info="body, Cbridge"/>
+ <BoxCollisionShape position="0,86,-110" halfExtents="40,4,40" info="body, Cbridge"/>
+ <BoxCollisionShape position="0,70,-60" halfExtents="65,11,30" info="body, Bbridge"/>
+ <BoxCollisionShape position="0,84,-45" halfExtents="33,11,26" info="body, Bbridge"/>
+ <BoxCollisionShape position="0,79,-6" pitch="10" halfExtents="32,13,17" info="body, Bbridge"/>
+ <BoxCollisionShape position="38,67,-45" roll="50" halfExtents="16,23,25" info="body, BbridgeR"/>
+ <BoxCollisionShape position="35,63,-17" pitch="25" yaw="-20" roll="40" halfExtents="16,23,16" info="body, BbridgeR"/>
+ <BoxCollisionShape position="-38,67,-45" roll="-50" halfExtents="16,23,25" info="body, BbridgeL"/>
+ <BoxCollisionShape position="-35,63,-17" pitch="25" yaw="20" roll="-40" halfExtents="16,23,16" info="body, BbridgeL"/>
+
+ <BoxCollisionShape position="0,69,80" halfExtents="8,4,80" info="body, Cbeam"/>
+ <BoxCollisionShape position="-67,18,58" roll="-22" halfExtents="13,5,53" info="body, CF, L"/>
+ <BoxCollisionShape position="-76,36,86" halfExtents="5,18,81" info="body, C, L"/>
+ <BoxCollisionShape position="-91,46,86" halfExtents="11,6,20" info="body, C, L upper beam"/>
+ <BoxCollisionShape position="-64,8,79" roll="10" halfExtents="8,3,8" info="body, C, L lower beam"/>
+ <BoxCollisionShape position="-71,55,140" pitch="-4" roll="31" halfExtents="9,5,27" info="body, CB, TopL"/>
+ <BoxCollisionShape position="-62,2,140" roll="24" halfExtents="10,24,32" info="body, CB, BottomL"/>
+ <BoxCollisionShape position="67,18,58" roll="22" halfExtents="13,5,53" info="body, CF, R"/>
+ <BoxCollisionShape position="76,36,86" halfExtents="5,18,81" info="body, C, R"/>
+ <BoxCollisionShape position="91,46,86" halfExtents="11,6,20" info="body, C, R upper beam"/>
+ <BoxCollisionShape position="64,8,79" roll="-10" halfExtents="8,3,8" info="body, C, R lower beam"/>
+ <BoxCollisionShape position="71,55,140" pitch="-4" roll="-31" halfExtents="9,5,27" info="body, CB, TopR"/>
+ <BoxCollisionShape position="62,2,140" roll="-24" halfExtents="10,24,32" info="body, CB, BottomR"/>
+ <BoxCollisionShape position="0,60,12" halfExtents="81,5,11" info="body, CF, Top"/>
+ <BoxCollisionShape position="0,55,40" pitch="15" halfExtents="81,5,20" info="body, CF, Top"/>
+ <BoxCollisionShape position="0,50,85" pitch="1" halfExtents="81,5,29" info="body, C, Top"/>
+ <BoxCollisionShape position="0,59,140" pitch="-4" halfExtents="68,5,27" info="body, CB, Top"/>
+
+ <BoxCollisionShape position="0,-7,90" halfExtents="40,4,90" info="body, bay3, Twall"/>
+ <BoxCollisionShape position="0,-15,-60" halfExtents="60,25,65" info="body, bay3, Fwall"/>
+ <BoxCollisionShape position="47,-11,90" halfExtents="13,20,90" info="body, bay3, Rwall"/>
+ <BoxCollisionShape position="-47,-11,90" halfExtents="13,20,90" info="body, bay3, Lwall"/>
+ <BoxCollisionShape position="0,-29,149" halfExtents="10,2,11" info="body, bay3, platform"/>
+ <BoxCollisionShape position="0,-20,227" halfExtents="60,20,65" info="body, bay3, Bwall"/>
+
+ <BoxCollisionShape position="0,81,238" halfExtents="26,5,59" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,67,234" halfExtents="54,5,67" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,77,175" pitch="-36" halfExtents="26,5,9" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,62,161" pitch="-30" halfExtents="56,5,10" info="body, BF, Top"/>
+ <BoxCollisionShape position="0,69,162" halfExtents="16,7,10" info="body, BF, Top"/>
+ <BoxCollisionShape position="31,76,238" roll="-46" halfExtents="10,3,59" info="body, BF, TopR"/>
+ <BoxCollisionShape position="64,64,234" roll="-24" halfExtents="13,3,67" info="body, BF, TopR"/>
+ <BoxCollisionShape position="-31,76,238" roll="46" halfExtents="10,3,59" info="body, BF, TopL"/>
+ <BoxCollisionShape position="-64,64,234" roll="24" halfExtents="13,3,67" info="body, BF, TopL"/>
+
+ <BoxCollisionShape position="77,40,244" roll="16" halfExtents="7,20,79" info="body, BF, R"/>
+ <BoxCollisionShape position="95,9,234" roll="2" halfExtents="18,16,59" info="body, BF, R"/>
+ <BoxCollisionShape position="74,1,255" roll="-20" halfExtents="18,19,82" info="body, BF, BottomR"/>
+ <BoxCollisionShape position="66,-21,255" roll="9" halfExtents="17,5,82" info="body, BF, BottomR"/>
+ <BoxCollisionShape position="-77,40,244" roll="-16" halfExtents="7,20,79" info="body, BF, L"/>
+ <BoxCollisionShape position="-95,9,234" roll="-2" halfExtents="18,16,59" info="body, BF, L"/>
+ <BoxCollisionShape position="-74,1,255" roll="20" halfExtents="18,19,82" info="body, BF, BottomL"/>
+ <BoxCollisionShape position="-66,-21,255" roll="-9" halfExtents="17,5,82" info="body, BF, BottomL"/>
+
+ <BoxCollisionShape position="0,106,381" halfExtents="36,5,71" info="body, BTop"/>
+ <BoxCollisionShape position="0,93,299" pitch="-49" halfExtents="34,5,20" info="body, BTop"/>
+ <BoxCollisionShape position="41,101,381" roll="-42" halfExtents="10,4,71" info="body, BTopR"/>
+ <BoxCollisionShape position="-41,101,381" roll="42" halfExtents="10,4,71" info="body, BTopL"/>
+
+ <BoxCollisionShape position="78,45,332" pitch="-10" roll="-10" yaw="20" halfExtents="10,20,30" info="body, back, R"/>
+ <BoxCollisionShape position="68,77,332" pitch="-10" roll="35" yaw="20" halfExtents="10,20,30" info="body, back, TR"/>
+ <BoxCollisionShape position="50,70,290" pitch="-10" roll="35" yaw="43" halfExtents="5,20,20" info="body, back, TR"/>
+ <BoxCollisionShape position="37,95,307" pitch="-10" roll="30" yaw="43" halfExtents="5,8,8" info="body, back, TR"/>
+ <BoxCollisionShape position="52,92,332" pitch="-10" yaw="30" halfExtents="10,5,30" info="body, back, TR"/>
+ <BoxCollisionShape position="88,4,322" halfExtents="10,24,30" info="body, back, RB"/>
+ <BoxCollisionShape position="54,-24,314" roll="35" pitch="-10" halfExtents="8,5,23" info="body, back, RB"/>
+ <BoxCollisionShape position="68,-19,346" pitch="-17" roll="8" halfExtents="16,4,11" info="body, back, bottomR"/>
+ <BoxCollisionShape position="-78,45,332" pitch="-10" roll="10" yaw="-20" halfExtents="10,20,30" info="body, back, L"/>
+ <BoxCollisionShape position="-68,77,332" pitch="-10" roll="-35" yaw="-20" halfExtents="10,20,30" info="body, back, TL"/>
+ <BoxCollisionShape position="-50,70,290" pitch="-10" roll="-35" yaw="-43" halfExtents="5,20,20" info="body, back, TL"/>
+ <BoxCollisionShape position="-37,95,307" pitch="-10" roll="-30" yaw="-43" halfExtents="5,8,8" info="body, back, TL"/>
+ <BoxCollisionShape position="-52,92,332" pitch="-10" yaw="-30" halfExtents="10,5,30" info="body, back, TL"/>
+ <BoxCollisionShape position="-88,4,322" halfExtents="10,24,30" info="body, back, LB"/>
+ <BoxCollisionShape position="-54,-24,314" roll="-35" pitch="-10" halfExtents="8,5,23" info="body, back, LB"/>
+ <BoxCollisionShape position="-68,-19,346" pitch="-17" roll="-8" halfExtents="16,4,11" info="body, back, bottomL"/>
+ <BoxCollisionShape position="0,-30,314" pitch="-8" halfExtents="52,4,23" info="body, back, bottom"/>
+ <BoxCollisionShape position="0,-22,346" pitch="-24" halfExtents="52,4,11" info="body, back, bottom"/>
+
+ <BoxCollisionShape position="48,-29,400" halfExtents="5,8,58" info="body, BBottomRBeam"/>
+ <BoxCollisionShape position="48,-29,451" halfExtents="10,13,14" info="body, BBottomRBeam"/>
+ <BoxCollisionShape position="-48,-29,400" halfExtents="5,8,58" info="body, BBottomLBeam"/>
+ <BoxCollisionShape position="-48,-31,451" halfExtents="10,13,14" info="body, BBottomLBeam"/>
+
+ <BoxCollisionShape position="103,60,420" halfExtents="18,9,64" info="body, back, Rextrusion"/>
+ <BoxCollisionShape position="-103,60,420" halfExtents="18,9,64" info="body, back, Lextrusion"/>
+ <BoxCollisionShape position="-85,7,417" halfExtents="10,21,67" info="body, back, LB"/>
+ <BoxCollisionShape position="85,7,417" halfExtents="10,21,67" info="body, back, RB"/>
+ <BoxCollisionShape position="0,-8,473" halfExtents="90,6,10" info="body, back, Bback"/>
+ <BoxCollisionShape position="0,-13,474" pitch="-23" halfExtents="76,5,8" info="body, back, Bback"/>
+ <BoxCollisionShape position="-79,-13,405" roll="-12" halfExtents="15,5,73" info="body, back, BL"/>
+ <BoxCollisionShape position="79,-13,405" roll="12" halfExtents="15,5,73" info="body, back, BR"/>
+ <BoxCollisionShape position="0,-15,410" halfExtents="66,6,58" info="body, back, B"/>
+
+ <BoxCollisionShape position="78,32,440" roll="-18" halfExtents="18,35,85" info="body, bay2, Rwall"/>
+ <BoxCollisionShape position="75,71,440" roll="35" halfExtents="18,27,85" info="body, bay2, Rwall"/>
+ <BoxCollisionShape position="-78,32,440" roll="18" halfExtents="18,35,85" info="body, bay2, Lwall"/>
+ <BoxCollisionShape position="-75,71,440" roll="-35" halfExtents="18,27,85" info="body, bay2, Lwall"/>
+ <BoxCollisionShape position="0,75,435" halfExtents="72,28,90" info="body, bay2, Twall"/>
+ <BoxCollisionShape position="0,35,423" halfExtents="85,35,5" info="body, bay2, Fwall"/>
+ <BoxCollisionShape position="0,-3,465" halfExtents="84,5,60" info="body, bay2, BottomWall"/>
+ <BoxCollisionShape position="0,78,526" halfExtents="43,17,5" info="body, bay2, Twall"/>
+
+
+ <BoxCollisionShape position="0,7,80" halfExtents="23,1,34" info="HOOKBOX at 0,18,80, bottom"/>
+ <BoxCollisionShape position="0,29,80" halfExtents="23,1,34" info="HOOKBOX, top"/>
+ <BoxCollisionShape position="-22,18,80" halfExtents="1,12,34" info="HOOKBOX, left long"/>
+ <BoxCollisionShape position="0,18,80" halfExtents="1,12,34" info="HOOKBOX, center long"/>
+ <BoxCollisionShape position="22,18,80" halfExtents="1,12,34" info="HOOKBOX, right long"/>
+ <BoxCollisionShape position="0,18,113" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,91" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,69" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+ <BoxCollisionShape position="0,18,47" halfExtents="23,12,1" info="HOOKBOX, wide"/>
+
+<!-- Following the position of the other parts collisionboxes, used to attach them to the body -->
+<!-- <BoxCollisionShape position="-11,18,102" halfExtents="10,10,10" info="sidearmL, HOOK"/>
+ <BoxCollisionShape position="11,18,102" halfExtents="10,10,10" info="sidearmR, HOOK"/>
+ <BoxCollisionShape position="-11,18,80" halfExtents="10,10,10" info="partL, HOOK"/>
+ <BoxCollisionShape position="11,18,80" halfExtents="10,10,10" info="partR, HOOK"/>
+ <BoxCollisionShape position="-11,18,58" halfExtents="10,10,10" info="frontL, HOOK"/>
+ <BoxCollisionShape position="11,18,58" halfExtents="10,10,10" info="frontR, HOOK"/> -->
+ </collisionShapes>
+<?lua
+ include("../includes/weaponSettingsHeavyCruiserBody.oxi")
+?>
+ </SpaceShip>
+
+</Template>
+
+
+
+
+<Template name=HeavyCruiser_cameras defaults=0>
+ <SpaceShip>
+ <camerapositions>
+ <CameraPosition position="0,200, 1000" drag=true mouselook=true />
+ <CameraPosition position="0,100, 1000" drag=true mouselook=true />
+ <CameraPosition position="0,150,600" drag=true mouselook=true />
+ <CameraPosition position="0,80,-300" drag=false mouselook=false />
+ <CameraPosition position="200,80,300" drag=false mouselook=false />
+ <CameraPosition position="0,1100,60" pitch="-90" drag=false mouselook=true />
+ </camerapositions>
+ </SpaceShip>
+</Template>
+
+
+
+
+<Template name=HeavyCruiser_body_engine baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2
+
+ speedfront = 150
+ speedback = 40
+ speedleftright = 40
+ speedupdown = 40
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 10
+ accelerationbrake = 8
+ accelerationback = 4
+ accelerationleftright = 4
+ accelerationupdown = 4
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-66,87,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-73,77,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-80,68,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.8 position="-86,58,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-82,46,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-80,34,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="-76,21,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.6 position="-71,9,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="66,87,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="73,77,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="80,68,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.8 position="86,58,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="82,46,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="80,34,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.7 position="76,21,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.6 position="71,9,525" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="66,87,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="73,77,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="80,68,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.5 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="86,58,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="82,46,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.5 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="80,34,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.4 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="76,21,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="71,9,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-66,87,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-73,77,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-80,68,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.5 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-86,58,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-82,46,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.5 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-80,34,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.4 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-76,21,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1.2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-71,9,525" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=1 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="85,58,525" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-85,58,525" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="66,87,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.5 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="73,77,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.6 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="80,68,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="86,58,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="82,46,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="80,34,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="76,21,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.6 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="71,9,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.5 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-66,87,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.5 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-73,77,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.6 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-80,68,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-86,58,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-82,46,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-80,34,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.7 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-76,21,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.6 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-71,9,525" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=0.5 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+<!-- <EffectContainer condition="brake">
+ <FadingBillboard mainstate=activity active=false scale=0.3 position=" 8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.3 position="-8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position=" 8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position="-8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+-->
+ </MultiStateEngine>
+</Template>
+
+
+<Template name=HeavyCruiser_sidearmL_engine baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2
+
+ speedfront = 300
+ speedback = 50
+ speedleftright = 50
+ speedupdown = 50
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 10
+ accelerationbrake = 8
+ accelerationback = 4
+ accelerationleftright = 4
+ accelerationupdown = 4
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=1 position="-147,35,308" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=1 position="-136,-5,308" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-147,35,308" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-136,-5,308" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-147,35,308" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-136,-5,308" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-148,35,308" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="-136,-5,308" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+<!-- <EffectContainer condition="brake">
+
+ <FadingBillboard mainstate=activity active=false scale=0.3 position=" 8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.3 position="-8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position=" 8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position="-8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+-->
+ </MultiStateEngine>
+</Template>
+
+
+<Template name=HeavyCruiser_sidearmR_engine baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2
+
+ speedfront = 300
+ speedback = 50
+ speedleftright = 50
+ speedupdown = 50
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 10
+ accelerationbrake = 8
+ accelerationback = 4
+ accelerationleftright = 4
+ accelerationupdown = 4
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=1 position="147,35,308" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=1 position="136,-5,308" colour="0.2, 0.65, 1.0, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="147,35,308" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="136,-5,308" colour="0.2, 0.65, 1.0, 1.0" width=10 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="147,35,308" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="136,-5,308" colour="0.2, 0.65, 1, 0.4" width=5 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="147,35,308" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.6 name=bltest position="136,-5,308" colour="0.6, 0.75, 0.8, 0.7" width=40 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+<!-- <EffectContainer condition="brake">
+ <FadingBillboard mainstate=activity active=false scale=0.3 position=" 8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.3 position="-8, 0, 6" colour="0.5, 0.0, 0.0, 0.3" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position=" 8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.15 position="-8, 0, 6" colour="1.0, 0.0, 0.0, 1.0" material="Flares/backlightflare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+-->
+ </MultiStateEngine>
+</Template>
Copied: code/trunk/data/levels/templates/enemyInvader.oxt (from rev 9938, code/branches/presentationHS13/data/levels/templates/enemyInvader.oxt)
===================================================================
--- code/trunk/data/levels/templates/enemyInvader.oxt (rev 0)
+++ code/trunk/data/levels/templates/enemyInvader.oxt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,120 @@
+<Template name=enemyinvader>
+ <InvaderEnemy
+ hudtemplate = spaceshiphud
+ camerapositiontemplate = spaceshipescortcameras
+ spawnparticlesource = "Orxonox/fairytwirl"
+ spawnparticleduration = 3
+ explosionchunks = 4
+
+ health = 10
+ maxhealth = 10
+ initialhealth = 10
+
+ shieldhealth = 10
+ initialshieldhealth = 10
+ maxshieldhealth = 10
+ shieldabsorption = 0.9
+ reloadrate = 1
+ reloadwaittime = 1
+
+ primaryThrust = 150
+ auxilaryThrust = 30
+ rotationThrust = 50
+
+ lift = 1;
+ stallSpeed = 220;
+
+ boostPower = 20
+ boostPowerRate = 1
+ boostRate = 5
+ boostCooldownDuration = 10
+
+ shakeFrequency = 15
+ shakeAmplitude = 6
+
+ collisionType = "dynamic"
+ mass = 0.00001
+ linearDamping = 0
+ angularDamping = 0
+
+ collisiondamage = 100
+ enablecollisiondamage = true
+ >
+ <engines>
+ <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipescortengine />
+ <MultiStateEngine position="-7.6, 0, 0" template=spaceshipescortengine />
+ </engines>
+ <attached>
+ <Model position="0,0,0" yaw=180 pitch=270 roll=0 scale=2 mesh="swallow_mat.mesh" />
+ <Model position="0,0,0" yaw=180 pitch=270 roll=0 scale=2 mesh="escortWeapon.mesh" />
+<!--Model mesh="cube.mesh" mass=10 position="0,0,3" scale3D="10,4,8" />
+
+swallow_mat.mesh
+"ghost.mesh"
+
+<Model mesh="cube.mesh" mass=10 position="12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="-12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="0,0,-12" scale3D="4,4,7" /-->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0 ,0 , 3" halfExtents="10, 4,8" />
+ <BoxCollisionShape position="12.6 ,-2, 3" halfExtents="2.8,2.8,11"/>
+ <BoxCollisionShape position="-12.6,-2, 3" halfExtents="2.8,2.8,11"/>
+ <BoxCollisionShape position="0, 0,-12" halfExtents="4 , 4 ,7" />
+ </collisionShapes>
+<?lua
+ include("../includes/invaderWeapon.oxi")
+?>
+ </InvaderEnemy>
+</Template>
+
+<!-- <Template name=spaceshipescortcameras defaults=0>
+ <InvaderEnemy>
+ <camerapositions>
+ <CameraPosition position="0,15, 60" drag=true mouselook=true />
+ <CameraPosition position="0,20, 90" drag=true mouselook=true />
+ <CameraPosition position="0,30,120" drag=true mouselook=true />
+ <CameraPosition position="0,300,-100" direction="0, -1, 0" drag=false mouselook=true />
+ </camerapositions>
+ </InvaderEnemy>
+</Template> -->
+
+<Template name=spaceshipescortengine baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2.2
+
+ speedfront = 200
+ speedback = 70
+ speedleftright = 70
+ speedupdown = 70
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 700
+ accelerationbrake = 700
+ accelerationback = 125
+ accelerationleftright = 125
+ accelerationupdown = 125
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=0.09 position="12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.09 position="-12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+
+ </MultiStateEngine>
+</Template>
Copied: code/trunk/data/levels/templates/enemyInvaderShooter.oxt (from rev 9938, code/branches/presentationHS13/data/levels/templates/enemyInvaderShooter.oxt)
===================================================================
--- code/trunk/data/levels/templates/enemyInvaderShooter.oxt (rev 0)
+++ code/trunk/data/levels/templates/enemyInvaderShooter.oxt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,120 @@
+<Template name=enemyinvadershooter>
+ <InvaderEnemyShooter
+ hudtemplate = spaceshiphud
+ camerapositiontemplate = spaceshipescortcameras
+ spawnparticlesource = "Orxonox/fairytwirl"
+ spawnparticleduration = 3
+ explosionchunks = 4
+
+ health = 20
+ maxhealth = 20
+ initialhealth = 20
+
+ shieldhealth = 20
+ initialshieldhealth = 20
+ maxshieldhealth = 20
+ shieldabsorption = 0.9
+ reloadrate = 1
+ reloadwaittime = 1
+
+ primaryThrust = 150
+ auxilaryThrust = 30
+ rotationThrust = 50
+
+ lift = 1;
+ stallSpeed = 220;
+
+ boostPower = 20
+ boostPowerRate = 1
+ boostRate = 5
+ boostCooldownDuration = 10
+
+ shakeFrequency = 15
+ shakeAmplitude = 6
+
+ collisionType = "dynamic"
+ mass = 100
+ linearDamping = 0
+ angularDamping = 0
+
+ collisiondamage = 100
+ enablecollisiondamage = true
+ >
+ <engines>
+ <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipescortengine />
+ <MultiStateEngine position="-7.6, 0, 0" template=spaceshipescortengine />
+ </engines>
+ <attached>
+ <Model position="0,0,0" yaw=180 pitch=270 roll=0 scale=2 mesh="ghost.mesh" />
+ <Model position="0,0,0" yaw=180 pitch=270 roll=0 scale=2 mesh="escortWeapon.mesh" />
+<!--Model mesh="cube.mesh" mass=10 position="0,0,3" scale3D="10,4,8" />
+
+swallow_mat.mesh
+"ghost.mesh"
+
+<Model mesh="cube.mesh" mass=10 position="12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="-12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="0,0,-12" scale3D="4,4,7" /-->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0 ,0 , 3" halfExtents="10, 4,8" />
+ <BoxCollisionShape position="12.6 ,-2, 3" halfExtents="2.8,2.8,11"/>
+ <BoxCollisionShape position="-12.6,-2, 3" halfExtents="2.8,2.8,11"/>
+ <BoxCollisionShape position="0, 0,-12" halfExtents="4 , 4 ,7" />
+ </collisionShapes>
+<?lua
+ include("../includes/invaderWeaponEnemy.oxi")
+?>
+ </InvaderEnemyShooter>
+</Template>
+
+<!-- <Template name=spaceshipescortcameras defaults=0>
+ <InvaderEnemyShooter>
+ <camerapositions>
+ <CameraPosition position="0,15, 60" drag=true mouselook=true />
+ <CameraPosition position="0,20, 90" drag=true mouselook=true />
+ <CameraPosition position="0,30,120" drag=true mouselook=true />
+ <CameraPosition position="0,300,-100" direction="0, -1, 0" drag=false mouselook=true />
+ </camerapositions>
+ </InvaderEnemyShooter>
+</Template> -->
+
+<Template name=spaceshipescortengine baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2.2
+
+ speedfront = 200
+ speedback = 70
+ speedleftright = 70
+ speedupdown = 70
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 700
+ accelerationbrake = 700
+ accelerationback = 125
+ accelerationleftright = 125
+ accelerationupdown = 125
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=0.09 position="12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.09 position="-12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+
+ </MultiStateEngine>
+</Template>
Modified: code/trunk/data/levels/templates/lodInformation.oxt
===================================================================
--- code/trunk/data/levels/templates/lodInformation.oxt 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/templates/lodInformation.oxt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -16,10 +16,34 @@
<MeshLodInformation mesh=HydroHarvester.mesh enabled=false />
<MeshLodInformation mesh=turretHead.mesh enabled=false />
<MeshLodInformation mesh=LaserBeam2.mesh enabled=false/>
+ <MeshLodInformation mesh=asteroid_ice.mesh enabled=false/>
+ <MeshLodInformation mesh=ast1.mesh lodQuality=0.1/>
+ <MeshLodInformation mesh=ast2.mesh lodQuality=0.1/>
+ <MeshLodInformation mesh=ast3.mesh lodQuality=0.1/>
+ <MeshLodInformation mesh=ast4.mesh lodQuality=0.1/>
+ <MeshLodInformation mesh=ast5.mesh lodQuality=0.1/>
+ <MeshLodInformation mesh=ast6.mesh lodQuality=0.1/>
<!-- disable LOD for some debris meshes which caused a crash (fixed in Ogre 1.7.3) -->
<MeshLodInformation mesh=BodyDebris1.mesh enabled=false/>
<MeshLodInformation mesh=WingDebris2.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_body.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_frontL.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_frontR.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_partL.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_partR.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_sidearmL.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_sidearmLfront.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_sidearmR.mesh enabled=false/>
+ <MeshLodInformation mesh=HeavyCruiser_sidearmRfront.mesh enabled=false/>
+
+ <MeshLodInformation mesh=ss_cylinder.mesh enabled=false/>
+ <MeshLodInformation mesh=ss_chair.mesh enabled=false/>
+ <MeshLodInformation mesh=ss_flag_room.mesh enabled=false/>
+ <MeshLodInformation mesh=ss_wall.mesh enabled=false/>
+ <MeshLodInformation mesh=ss_tube_twd.mesh enabled=false/>
+ <MeshLodInformation mesh=ss_spind.mesh enabled=false/>
+
</lodinformation>
</Level>
</Template>
Modified: code/trunk/data/levels/templates/spaceshipAssff.oxt
===================================================================
--- code/trunk/data/levels/templates/spaceshipAssff.oxt 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/templates/spaceshipAssff.oxt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -36,6 +36,8 @@
mass = 100
linearDamping = 0.7
angularDamping = 0.9999999
+
+ explosionSound = "sounds/Explosion2.ogg"
>
<engines>
<MultiStateEngine position=" 7.6, 0, 6" template=spaceshipassffengine />
@@ -81,7 +83,7 @@
defEngineSndNormal = "sounds/Engine_low.ogg"
defEngineSndBoost = "sounds/Engine_high.ogg"
-
+
accelerationfront = 500
accelerationbrake = 500
accelerationback = 125
Copied: code/trunk/data/levels/templates/spaceshipInvader.oxt (from rev 9938, code/branches/presentationHS13/data/levels/templates/spaceshipInvader.oxt)
===================================================================
--- code/trunk/data/levels/templates/spaceshipInvader.oxt (rev 0)
+++ code/trunk/data/levels/templates/spaceshipInvader.oxt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,116 @@
+<Template name=spaceshipinvader>
+ <InvaderShip
+ hudtemplate = spaceshiphud
+ camerapositiontemplate = spaceshipescortcameras
+ spawnparticlesource = "Orxonox/fairytwirl"
+ spawnparticleduration = 3
+ explosionchunks = 4
+
+ health = 80
+ maxhealth = 200
+ initialhealth = 80
+
+ shieldhealth = 35
+ initialshieldhealth = 35
+ maxshieldhealth = 60
+ shieldabsorption = 0.9
+ reloadrate = 1
+ reloadwaittime = 1
+
+ primaryThrust = 150
+ auxilaryThrust = 30
+ rotationThrust = 50
+
+ lift = 1;
+ stallSpeed = 220;
+
+ boostPower = 20
+ boostPowerRate = 1
+ boostRate = 5
+ boostCooldownDuration = 10
+
+ shakeFrequency = 15
+ shakeAmplitude = 6
+
+ collisionType = "dynamic"
+ mass = 4200000
+ linearDamping = 0.7
+ angularDamping = 0.9999999
+
+ collisiondamage = 100
+ enablecollisiondamage = true
+ >
+ <engines>
+ <MultiStateEngine position=" 7.6, 0, 6" template=spaceshipinvaderengine />
+ <MultiStateEngine position="-7.6, 0, 0" template=spaceshipinvaderengine />
+ </engines>
+ <attached>
+ <Model position="0,0,0" yaw=90 pitch=0 roll=0 scale=4 mesh="escortShip.mesh" />
+ <Model position="0,0,0" yaw=180 pitch=90 roll=0 scale=4 mesh="escortWeapon.mesh" />
+<!--Model mesh="cube.mesh" mass=10 position="0,0,3" scale3D="10,4,8" />
+<Model mesh="cube.mesh" mass=10 position="12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="-12.6,-2,3" scale3D="2.8,2.8,11" />
+<Model mesh="cube.mesh" mass=10 position="0,0,-12" scale3D="4,4,7" /-->
+ </attached>
+ <collisionShapes>
+ <BoxCollisionShape position="0 ,0 , 3" halfExtents="10, 4,8" />
+ <BoxCollisionShape position="12.6 ,-2, 3" halfExtents="2.8,2.8,11"/>
+ <BoxCollisionShape position="-12.6,-2, 3" halfExtents="2.8,2.8,11"/>
+ <BoxCollisionShape position="0, 0,-12" halfExtents="4 , 4 ,7" />
+ </collisionShapes>
+<?lua
+ include("../includes/invaderWeapon.oxi")
+?>
+ </InvaderShip>
+</Template>
+
+<Template name=spaceshipescortcameras defaults=0>
+ <InvaderShip>
+ <camerapositions>
+<!-- <CameraPosition position="0,15, 60" drag=true mouselook=true />
+ <CameraPosition position="0,20, 90" drag=true mouselook=true />
+ <CameraPosition position="0,30,120" drag=true mouselook=true /> -->
+ <CameraPosition position="0,300,-100" direction="0, -1, 0" drag=false mouselook=true />
+ </camerapositions>
+ </InvaderShip>
+</Template>
+
+<Template name=spaceshipinvaderengine baseclass=MultiStateEngine>
+ <MultiStateEngine
+ boostfactor = 2.2
+
+ speedfront = 200
+ speedback = 70
+ speedleftright = 70
+ speedupdown = 70
+
+ defEngineSndNormal = "sounds/Engine_low.ogg"
+ defEngineSndBoost = "sounds/Engine_high.ogg"
+
+ accelerationfront = 700
+ accelerationbrake = 700
+ accelerationback = 125
+ accelerationleftright = 125
+ accelerationupdown = 125
+ >
+ <EffectContainer condition="idle">
+ <WorldSound mainstate="activity" source="sounds/Engine_idle.ogg" looping=1 active=false/>
+ </EffectContainer>
+ <EffectContainer condition="not idle">
+ <FadingBillboard mainstate=activity active=false scale=0.09 position="12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ <FadingBillboard mainstate=activity active=false scale=0.09 position="-12, -2, 13" colour="0.2, 1.0, 0.65, 1.0" material="Examples/Flare" turnontime=0.5 turnofftime=0.5 />
+ </EffectContainer>
+ <EffectContainer condition="normal or brake">
+
+ </EffectContainer>
+ <EffectContainer condition="normal or boost">
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.2, 1.0, 0.65, 1.0" width=15 length=1500 lifetime=2 elements=50 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Flares/ThrusterFlare1" />
+ </EffectContainer>
+ <EffectContainer condition="boost">
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position=" 12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ <Backlight mainstate=activity active=false scale=0.33 name=bltest position="-12, 0, 10" colour="0.6, 0.8, 0.75, 0.7" width=25 length=1000 lifetime=1 elements=30 trailmaterial="Trail/backlighttrail" turnontime=1 turnofftime=1 material="Examples/Flare" />
+ </EffectContainer>
+
+ </MultiStateEngine>
+</Template>
Modified: code/trunk/data/levels/turretTest.oxw
===================================================================
--- code/trunk/data/levels/turretTest.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/turretTest.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,5 @@
+<!-- -->
+
<LevelInfo
name = "turret Test"
description = "A level with a turret in it."
Modified: code/trunk/data/levels/underAttack.oxw
===================================================================
--- code/trunk/data/levels/underAttack.oxw 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/levels/underAttack.oxw 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,5 @@
+<!---->
+
<LevelInfo
name = "Under Attack"
description = "Fight the transporter."
@@ -19,6 +21,7 @@
<Template link=lodtemplate_default />
</templates>
<?lua include("includes/notifications.oxi") ?>
+ <WorldAmbientSound source="Jupiter.ogg" looping="true" playOnLoad="true" />
<Scene
ambientlight = "0.5, 0.5, 0.5"
Modified: code/trunk/data/overlays/HUD.oxo
===================================================================
--- code/trunk/data/overlays/HUD.oxo 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/overlays/HUD.oxo 2013-12-21 22:16:54 UTC (rev 9939)
@@ -67,7 +67,7 @@
<HUDRadar
name = "Radar"
- background = "Orxonox/Radar"
+ background = "Orxonox/radar"
correctAspect = true
size = "0.17, 0.17"
position = "0.5, 1.0"
Modified: code/trunk/data/overlays/HUDTemplates3.oxo
===================================================================
--- code/trunk/data/overlays/HUDTemplates3.oxo 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/overlays/HUDTemplates3.oxo 2013-12-21 22:16:54 UTC (rev 9939)
@@ -107,19 +107,26 @@
aimMarkerSize = 0.02
/>
- <HUDRadar
- name = "Radar"
- background = "Orxonox/Radar"
- correctaspect = true
- size = "0.17, 0.17"
- position = "1.0, 1.0"
- pickpoint = "1.0, 1.0"
- rotation = 0
- sensitivity = 1.0
- halfDotSizeDistance = 3000
- maximumDotSize = 0.1
+ <HUDRadar
+ name = "Radar"
+ background = "Orxonox/Radar3D"
+ material2D = "Orxonox/Radar"
+ material3DMiddle = "Orxonox/Radar3D"
+ material3DFront = "Orxonox/Radar3DFront"
+ material3DBack = "Orxonox/Radar3DBack"
+ correctaspect = true
+ size = "0.17, 0.17"
+ position = "1.0, 1.0"
+ pickpoint = "1.0, 1.0"
+ rotation = 0
+ sensitivity = 1.0
+ halfDotSizeDistance = 3000
+ detectionLimit = 10000.0
+ maximumDotSize = 0.1
+ maximumDotSize3D = 0.06
+ mapAngle3D = 0.6435011
/>
-
+
<HUDTimer
name = "Timer"
position = "0.5, 0.85"
Copied: code/trunk/data/overlays/InvaderHUD.oxo (from rev 9938, code/branches/presentationHS13/data/overlays/InvaderHUD.oxo)
===================================================================
--- code/trunk/data/overlays/InvaderHUD.oxo (rev 0)
+++ code/trunk/data/overlays/InvaderHUD.oxo 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,108 @@
+<Template name="InvaderHUD">
+ <OverlayGroup name="InvaderHUD" scale = "1, 1">
+ <InvaderHUDinfo
+ position = "0.14, 0.02"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+
+ showlives = true
+ showlevel = false
+ showpoints = false
+ />
+ <OverlayText
+ position = "0.02, 0.02"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+ caption = "Lives: "
+ />
+
+ <OverlayText
+ position = "0.02, 0.055"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+ caption = "Level: "
+ />
+
+ <InvaderHUDinfo
+ position = "0.14, 0.055"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+
+ showlives = false
+ showlevel = true
+ showpoints = false
+ />
+
+ <OverlayText
+ position = "0.02, 0.1"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+ caption = "Points: "
+ />
+
+ <InvaderHUDinfo
+ position = "0.14, 0.1"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+
+ showlives = false
+ showlevel = false
+ showpoints = true
+ />
+
+ <InvaderHUDinfo
+ position = "0.25, 0.1"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.04
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "left"
+
+ showMultiplier = true
+ />
+ </OverlayGroup>
+</Template>
+
+
+<Template name="spaceshiphud">
+ <OverlayGroup name = "spaceshiphud" scale = "1, 1">
+ <HUDHealthBar
+ name = "HealthBar1"
+ background = "Orxonox/HealthBarBackground"
+ size = "0.35, 0.0875"
+ position = "0.0 , 0.9 "
+ pickpoint = "0, 1"
+ bartexture = "healthbar_bar.png"
+ textfont = "VeraMono"
+ textusebarcolour = true
+ textsize = 0.039
+ textoffset = "0.315, 0.05"
+ textpickpoint = "0, 0"
+ textalign = "right"
+ correctaspect = false
+ textcorrectaspect = false
+ >
+ <BarColour position = 0.0 colour = "0.7,0.2,0.2" />
+ <BarColour position = 0.5 colour = "0.7,0.7,0.2" />
+ <BarColour position = 1.0 colour = "0.2,0.7,0.2" />
+ </HUDHealthBar>
+ </OverlayGroup>
+</Template>
\ No newline at end of file
Modified: code/trunk/data/overlays/debug.oxo
===================================================================
--- code/trunk/data/overlays/debug.oxo 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/data/overlays/debug.oxo 2013-12-21 22:16:54 UTC (rev 9939)
@@ -34,6 +34,21 @@
font = "Monofur"
textsize = 0.03
/>
+
+ <OverlayText
+ name = "PositionTextCaption"
+ position = "0.03, 0.13"
+ font = "Monofur"
+ caption = "Position: "
+ textsize = 0.03
+ />
+
+ <DebugPositionText
+ name = "PositionText"
+ position = "0.3, 0.13"
+ font = "Monofur"
+ textsize = 0.03
+ />
</OverlayGroup>
Modified: code/trunk/src/libraries/util/Math.cc
===================================================================
--- code/trunk/src/libraries/util/Math.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/libraries/util/Math.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -22,7 +22,7 @@
* Author:
* Fabian 'x3n' Landau
* Co-authors:
- * ...
+ * Wolfgang Roenninger
*
*/
@@ -146,7 +146,7 @@
}
/**
- @brief Gets the 2D viewing direction (up/down, left/right) to the position of the other object, multiplied with the viewing distance to the object (0° = 0, 180° = 1).
+ @brief Gets the 2D viewing direction (up/down, left/right) to the position of the other object, multiplied with the viewing distance to the object (0๏ฟฝ = 0, 180๏ฟฝ = 1).
@param myposition My position
@param mydirection My viewing direction
@param myorthonormal My orthonormalvector (pointing upwards through my head)
@@ -190,7 +190,155 @@
return orxonox::Vector2( -sin_value * radius, cos_value * radius);
}
+
/**
+ @brief Gets the 2D project vector for the 3D Radar .
+ @param myposition My position
+ @param mydirection My viewing direction
+ @param myorthonormal My orthonormalvector (pointing upwards through my head)
+ @param otherposition The position of the other object
+ @param mapangle The angle between line of sight on screen and the 3Dmap-x/z-plain in radian
+ @param detectionlimit The limit in which objects are shown on the map
+ @return The viewing direction
+ */
+ orxonox::Vector2 get3DProjection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition, const float mapangle, const float detectionlimit)
+ {
+ // Orxonox Vectors: x_direction you are looking, y_direction points up, z_direction points to the right
+ orxonox::Vector3 distance = otherposition - myposition; // get vector from Ship to object
+
+ // new coordinate system: x_axsis: mydirection (points front)
+ // y_axsis: myorthonormal (points up)
+ // z_axsis: myside (points right)
+
+ orxonox::Vector3 myside = mydirection.crossProduct(myorthonormal); // get 3. base vector
+
+ distance = 4*distance / detectionlimit; // shrink vector on map
+ if(distance.length() > 1.0f) // if object would wander outside of the map
+ {
+ distance = distance / distance.length();
+ }
+
+ // perform a coordinate transformation to get distance in relation of the position of the ship
+ orxonox::Vector3 distanceShip = getTransformedVector(distance, mydirection, myorthonormal, myside);
+
+ // calculate 2D vector on the map (with angle between x/z - plain and line of sight)
+ float xcoordinate = distanceShip.z; // z; cause x direction on screen is to the right side
+ float ycoordinate = distanceShip.x*sin(mapangle)+distanceShip.y*cos(mapangle);
+ return orxonox::Vector2(xcoordinate , ycoordinate);
+ }
+
+ /**
+ @brief Gets if a object is over the x/z - plain on map
+ @param myposition My position
+ @param mydirection My viewing direction
+ @param myorthonormal My orthonormalvector (pointing upwards through my head)
+ @param otherposition The position of the other object
+ @param mapangle The angle you look on the 3Dmap in radian
+ @return If distancevector to the other object has a positive y-coordinate
+
+ Examples:
+ Returns true if object is over x/z - plain
+ Returns false if object is below x/z -plain
+ */
+ bool isObjectHigherThanShipOnMap(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition, const float mapangle)
+ {
+ // Orxonox Vectors: x_direction you are looking, y_direction points up, z_direction points to the right
+ orxonox::Vector3 distance = otherposition - myposition;
+
+ // new coordinate system: x_axsis: mydirection (points front)
+ // y_axsis: myorthonormal (points up)
+ // z_axsis: myside (points right)
+
+ orxonox::Vector3 myside = mydirection.crossProduct(myorthonormal); // get vector from Ship to object
+
+
+ // perform a coordinate transformation to get distance in relation of the position of the ship
+ orxonox::Vector3 distanceShip = getTransformedVector(distance, mydirection, myorthonormal, myside);
+
+ if(distanceShip.y >= 0)
+ return true;
+ else
+ return false;
+ }
+
+ /**
+ @brief A value between 0 and 10, in order how other object is in front or in back
+ @param myposition My position
+ @param mydirection My viewing direction
+ @param myorthonormal My orthonormalvector (pointing upwards through my head)
+ @param otherposition The position of the other object
+ @param detectionlimit The limit in which objects are shown on the map
+ @return value between 0 and 100
+ */
+ int determineMap3DZOrder(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition, const float detectionlimit)
+ {
+ orxonox::Vector3 distance = otherposition - myposition; // get vector from Ship to object
+ orxonox::Vector3 myside = mydirection.crossProduct(myorthonormal); // get vector to the side
+
+ distance = 4*distance / detectionlimit; // shrink vector on map
+ if(distance.length() > 1.0f) // if object would wander outside of the map
+ {
+ distance = distance / distance.length();
+ }
+
+ // perform a coordinate transformation to get distance in relation of the position of the ship
+ orxonox::Vector3 distanceShip = getTransformedVector(distance, mydirection, myorthonormal, myside);
+
+ return (int) 50 - 100*distanceShip.x;
+ }
+
+
+ /**
+ @brief Gets the new vector after a coordinate transformation
+ @param distance Vector which will be transformed
+ @param mydirection New x basevector
+ @param myorthonormal New y basevector
+ @param otherposition New z basevector
+ @return direction in the new coordinates
+
+ x is vector in old coordinates
+ y is vector in old coordinates
+ T is transform matrix with:
+ T = (t1 , t2 , t3)
+ t1 = mydirection
+ t2 = myorthonormal
+ t3 = myside
+
+ y = T^(-1)*x
+ */
+ orxonox::Vector3 getTransformedVector(const orxonox::Vector3& distance, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& myside)
+ {
+ // inverse of the transform matrix
+ float determinant = +mydirection.x * (myorthonormal.y*myside.z - myside.y*myorthonormal.z)
+ -mydirection.y * (myorthonormal.x*myside.z - myorthonormal.z*myside.x)
+ +mydirection.z * (myorthonormal.x*myside.y - myorthonormal.y*myside.x);
+ float invdet = 1/determinant;
+
+ // transform matrix
+ orxonox::Vector3 xinvtransform;
+ orxonox::Vector3 yinvtransform;
+ orxonox::Vector3 zinvtransform;
+
+ xinvtransform.x = (myorthonormal.y * myside.z - myside.y * myorthonormal.z)*invdet;
+ xinvtransform.y = (mydirection.z * myside.y - mydirection.y * myside.z )*invdet;
+ xinvtransform.z = (mydirection.y * myorthonormal.z - mydirection.z * myorthonormal.y)*invdet;
+ yinvtransform.x = (myorthonormal.z * myside.x - myorthonormal.x * myside.z )*invdet;
+ yinvtransform.y = (mydirection.x * myside.z - mydirection.z * myside.x )*invdet;
+ yinvtransform.z = (myorthonormal.x * mydirection.z - mydirection.x * myorthonormal.z)*invdet;
+ zinvtransform.x = (myorthonormal.x * myside.y - myside.x * myorthonormal.y)*invdet;
+ zinvtransform.y = (myside.x * mydirection.y - mydirection.x * myside.y )*invdet;
+ zinvtransform.z = (mydirection.x * myorthonormal.y - myorthonormal.x * mydirection.y )*invdet;
+
+ // coordinate transformation
+ orxonox::Vector3 distanceShip;
+ distanceShip.x = xinvtransform.x * distance.x + yinvtransform.x * distance.y + zinvtransform.x * distance.z;
+ distanceShip.y = xinvtransform.y * distance.x + yinvtransform.y * distance.y + zinvtransform.y * distance.z;
+ distanceShip.z = xinvtransform.z * distance.x + yinvtransform.z * distance.y + zinvtransform.z * distance.z;
+
+ return distanceShip;
+ }
+
+ /**
@brief Returns the predicted position I have to aim at, if I want to hit a moving target with a moving projectile.
@param myposition My position
@param projectilespeed The speed of my projectile
Modified: code/trunk/src/libraries/util/Math.h
===================================================================
--- code/trunk/src/libraries/util/Math.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/libraries/util/Math.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -22,7 +22,7 @@
* Author:
* Fabian 'x3n' Landau
* Co-authors:
- * ...
+ * Wolfgang Roenninger
*
*/
@@ -91,6 +91,10 @@
_UtilExport float getAngle(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& otherposition);
_UtilExport orxonox::Vector2 get2DViewdirection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition);
_UtilExport orxonox::Vector2 get2DViewcoordinates(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition);
+ _UtilExport orxonox::Vector2 get3DProjection(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition, const float mapangle, const float detectionlimit);
+ _UtilExport bool isObjectHigherThanShipOnMap(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition, const float mapangle);
+ _UtilExport int determineMap3DZOrder(const orxonox::Vector3& myposition, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& otherposition, const float detectionlimit);
+ _UtilExport orxonox::Vector3 getTransformedVector(const orxonox::Vector3& distance, const orxonox::Vector3& mydirection, const orxonox::Vector3& myorthonormal, const orxonox::Vector3& myside);
_UtilExport orxonox::Vector3 getPredictedPosition(const orxonox::Vector3& myposition, float projectilespeed, const orxonox::Vector3& targetposition, const orxonox::Vector3& targetvelocity);
/**
Modified: code/trunk/src/modules/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/CMakeLists.txt 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/CMakeLists.txt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -38,3 +38,4 @@
ADD_SUBDIRECTORY(weapons)
ADD_SUBDIRECTORY(docking)
ADD_SUBDIRECTORY(towerdefense)
+ADD_SUBDIRECTORY(invader)
Modified: code/trunk/src/modules/docking/Dock.cc
===================================================================
--- code/trunk/src/modules/docking/Dock.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/docking/Dock.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -68,6 +68,8 @@
XMLPortObject(Dock, DockingEffect, "effects", addEffect, getEffect, xmlelement, mode);
XMLPortObject(Dock, DockingAnimation, "animations", addAnimation, getAnimation, xmlelement, mode);
XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode);
+ XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
+
}
void Dock::XMLEventPort(Element& xmlelement, XMLPort::Mode mode)
@@ -75,8 +77,56 @@
SUPER(Dock, XMLEventPort, xmlelement, mode);
XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode);
+
+ XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);
}
+
+ bool Dock::undocking(bool bTriggered, BaseObject* trigger)
+ {
+
+ PlayerTrigger* pTrigger = orxonox_cast<PlayerTrigger*>(trigger);
+ PlayerInfo* player = NULL;
+
+ // Check whether it is a player trigger and extract pawn from it
+ if(pTrigger != NULL)
+ {
+ if(!pTrigger->isForPlayer()) { // The PlayerTrigger is not exclusively for Pawns which means we cannot extract one.
+ orxout(verbose, context::docking) << "Docking:execute PlayerTrigger was not triggered by a player.." << endl;
+ return false;
+ }
+ player = pTrigger->getTriggeringPlayer();
+ }
+ else
+ {
+ orxout(verbose, context::docking) << "Docking::execute Not a player trigger, can't extract pawn from it.." << endl;
+ return false;
+ }
+ if(player == NULL)
+ {
+ orxout(verbose, context::docking) << "Docking::execute Can't retrieve PlayerInfo from Trigger. (" << trigger->getIdentifier()->getName() << ")" << endl;
+ return false;
+ }
+
+ if(bTriggered)
+ {
+ // Add player to this Docks candidates
+ candidates_.insert(player);
+
+ // Show docking dialog
+ this->showUndockingDialogHelper(player);
+ }
+ else
+ {
+ // Remove player from candidates list
+ candidates_.erase(player);
+ }
+
+ return true;
+ }
+
+
+
bool Dock::execute(bool bTriggered, BaseObject* trigger)
{
PlayerTrigger* pTrigger = orxonox_cast<PlayerTrigger*>(trigger);
@@ -119,6 +169,24 @@
return true;
}
+
+ void Dock::showUndockingDialogHelper(PlayerInfo* player)
+ {
+ assert(player);
+
+ if(!player->isHumanPlayer())
+ return;
+
+ if(GameMode::isMaster())
+ {
+ if(GameMode::showsGraphics())
+ GUIManager::showGUI("UndockingDialog");
+ }
+ else
+ callStaticNetworkFunction(Dock::showDockingDialog, player->getClientID());
+
+ }
+
void Dock::showDockingDialogHelper(PlayerInfo* player)
{
assert(player);
@@ -176,6 +244,7 @@
if (animations_.empty())
return dockingAnimationFinished(player);
+
else
DockingAnimation::invokeAnimation(true, player, animations_);
Modified: code/trunk/src/modules/docking/Dock.h
===================================================================
--- code/trunk/src/modules/docking/Dock.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/docking/Dock.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -61,6 +61,7 @@
// Trigger interface
bool execute(bool bTriggered, BaseObject* trigger);
+ bool undocking(bool bTriggered, BaseObject* trigger);
// XML interface
virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
@@ -84,6 +85,8 @@
// tolua_begin
void dock()
{ this->dock(HumanController::getLocalControllerSingleton()->getPlayer()); }
+ void undock()
+ { this->undock(HumanController::getLocalControllerSingleton()->getPlayer()); }
static unsigned int getNumberOfActiveDocks();
static Dock* getActiveDockAtIndex(unsigned int index);
// tolua_end
@@ -94,6 +97,7 @@
// Network functions
void showDockingDialogHelper(PlayerInfo* player);
+ void showUndockingDialogHelper(PlayerInfo* player);
static void showDockingDialog();
private:
Modified: code/trunk/src/modules/docking/MoveToDockingTarget.cc
===================================================================
--- code/trunk/src/modules/docking/MoveToDockingTarget.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/docking/MoveToDockingTarget.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -65,8 +65,11 @@
bool MoveToDockingTarget::release(PlayerInfo *player)
{
//TODO: Investigate strange things...
- this->parent_->detach((WorldEntity*)player->getControllableEntity());
+ //this->parent_->detach((WorldEntity*)player->getControllableEntity());
+ //TODO: Check the issue with this detach call.
+ //I have removed the line because the detach call only caused a warning and terminated. And because I didn't find a attach call either.
+ //Didn't find the need for the line.
this->parent_->undockingAnimationFinished(player);
return true;
}
Deleted: code/trunk/src/modules/invader/CMakeLists.txt
===================================================================
--- code/branches/presentationHS13/src/modules/invader/CMakeLists.txt 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/CMakeLists.txt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,22 +0,0 @@
-SET_SOURCE_FILES(Invader_SRC_FILES
-BUILD_UNIT InvaderBuildUnit.cc
- Invader.cc
- InvaderCenterPoint.cc
- InvaderShip.cc
- InvaderEnemy.cc
- InvaderEnemyShooter.cc
- InvaderWeapon.cc
- InvaderWeaponEnemy.cc
- InvaderHUDinfo.cc
-END_BUILD_UNIT
-)
-
-ORXONOX_ADD_LIBRARY(Invader
- MODULE
- FIND_HEADER_FILES
- LINK_LIBRARIES
- orxonox
- overlays
- weapons
- SOURCE_FILES ${Invader_SRC_FILES}
-)
Copied: code/trunk/src/modules/invader/CMakeLists.txt (from rev 9938, code/branches/presentationHS13/src/modules/invader/CMakeLists.txt)
===================================================================
--- code/trunk/src/modules/invader/CMakeLists.txt (rev 0)
+++ code/trunk/src/modules/invader/CMakeLists.txt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,22 @@
+SET_SOURCE_FILES(Invader_SRC_FILES
+BUILD_UNIT InvaderBuildUnit.cc
+ Invader.cc
+ InvaderCenterPoint.cc
+ InvaderShip.cc
+ InvaderEnemy.cc
+ InvaderEnemyShooter.cc
+ InvaderWeapon.cc
+ InvaderWeaponEnemy.cc
+ InvaderHUDinfo.cc
+END_BUILD_UNIT
+)
+
+ORXONOX_ADD_LIBRARY(Invader
+ MODULE
+ FIND_HEADER_FILES
+ LINK_LIBRARIES
+ orxonox
+ overlays
+ weapons
+ SOURCE_FILES ${Invader_SRC_FILES}
+)
Deleted: code/trunk/src/modules/invader/Invader.cc
===================================================================
--- code/branches/presentationHS13/src/modules/invader/Invader.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/Invader.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,186 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file Invader.cc
- @brief Implementation of the Invader class.
-*/
-
-#include "Invader.h"
-
-#include "core/CoreIncludes.h"
-#include "core/EventIncludes.h"
-#include "core/command/Executor.h"
-#include "core/config/ConfigValueIncludes.h"
-
-#include "gamestates/GSLevel.h"
-#include "chat/ChatManager.h"
-
-// ! HACK
-#include "infos/PlayerInfo.h"
-
-#include "InvaderCenterPoint.h"
-#include "InvaderShip.h"
-#include "InvaderEnemy.h"
-#include "InvaderEnemyShooter.h"
-
-#include "core/command/ConsoleCommand.h"
-#include "worldentities/BigExplosion.h"
-
-namespace orxonox
-{
- RegisterUnloadableClass(Invader);
-
- Invader::Invader(Context* context) : Deathmatch(context)
- {
- RegisterObject(Invader);
- this->center_ = 0;
- init();
- this->setHUDTemplate("InvaderHUD");
- }
-
- void Invader::init()
- {
- bEndGame = false;
- lives = 3;
- level = 1;
- point = 0;
- bShowLevel = false;
- multiplier = 1;
- b_combo = false;
- // spawn enemy every 3.5 seconds
- enemySpawnTimer.setTimer(3.5f, true, createExecutor(createFunctor(&Invader::spawnEnemy, this)));
- comboTimer.setTimer(3.0f, true, createExecutor(createFunctor(&Invader::comboControll, this)));
- }
-
- void Invader::levelUp()
- {
- level++;
- if (getPlayer() != NULL)
- {
- for (int i = 0; i < 7; i++)
- {
- WeakPtr<BigExplosion> chunk = new BigExplosion(this->center_->getContext());
- chunk->setPosition(Vector3(600, 0, 100 * i - 300));
- chunk->setVelocity(Vector3(1000, 0, 0)); //player->getVelocity()
- chunk->setScale(20);
- }
- }
- addPoints(multiplier * 42);
- multiplier *= 2;
- toggleShowLevel();
- showLevelTimer.setTimer(1.0f, false, createExecutor(createFunctor(&Invader::toggleShowLevel, this)));
- }
-
- WeakPtr<InvaderShip> Invader::getPlayer()
- {
- if (player == NULL)
- {
- for (ObjectList<InvaderShip>::iterator it = ObjectList<InvaderShip>::begin(); it != ObjectList<InvaderShip>::end(); ++it)
- player = *it;
- }
- return player;
- }
-
- void Invader::spawnEnemy()
- {
- if (getPlayer() == NULL)
- return;
- srand(player->getPosition().x + player->getPosition().y);
- for (int i = 0; i < (3*log10(level) + 1); i++)
- {
- WeakPtr<InvaderEnemy> newPawn;
- if (rand() % 42/(1 + level*level) == 0)
- {
- newPawn = new InvaderEnemyShooter(this->center_->getContext());
- newPawn->addTemplate("enemyinvadershooter");
- }
- else
- {
- newPawn = new InvaderEnemy(this->center_->getContext());
- newPawn->addTemplate("enemyinvader");
- }
- newPawn->setPlayer(player);
- newPawn->level = level;
- // spawn enemy at random points in front of player.
- newPawn->setPosition(player->getPosition() + Vector3(500 + 100 * i, 0, float(rand())/RAND_MAX * 400 - 200));
- }
- }
-
- void Invader::costLife()
- {
- lives--;
- multiplier = 1;
- // end the game in 30 seconds.
- if (lives <= 0)
- enemySpawnTimer.setTimer(30.0f, false, createExecutor(createFunctor(&Invader::end, this)));
- };
-
- void Invader::comboControll()
- {
- if (b_combo)
- multiplier++;
- // if no combo was performed before, reset multiplier
- else
- multiplier = 1;
- b_combo = false;
- }
-
- void Invader::start()
- {
- init();
- // Set variable to temporarily force the player to spawn.
- this->bForceSpawn_ = true;
-
- if (this->center_ == NULL) // abandon mission!
- {
- orxout(internal_error) << "Invader: No Centerpoint specified." << endl;
- GSLevel::startMainMenu();
- return;
- }
- // Call start for the parent class.
- Deathmatch::start();
- }
- void Invader::addPoints(int numPoints)
- {
- if (!bEndGame)
- {
- point += numPoints * multiplier;
- b_combo = true;
- }
- }
-
- void Invader::end()
- {
- // DON'T CALL THIS!
- // Deathmatch::end();
- // It will misteriously crash the game!
- // Instead startMainMenu, this won't crash.
- GSLevel::startMainMenu();
- }
-}
Copied: code/trunk/src/modules/invader/Invader.cc (from rev 9938, code/branches/presentationHS13/src/modules/invader/Invader.cc)
===================================================================
--- code/trunk/src/modules/invader/Invader.cc (rev 0)
+++ code/trunk/src/modules/invader/Invader.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,186 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file Invader.cc
+ @brief Implementation of the Invader class.
+*/
+
+#include "Invader.h"
+
+#include "core/CoreIncludes.h"
+#include "core/EventIncludes.h"
+#include "core/command/Executor.h"
+#include "core/config/ConfigValueIncludes.h"
+
+#include "gamestates/GSLevel.h"
+#include "chat/ChatManager.h"
+
+// ! HACK
+#include "infos/PlayerInfo.h"
+
+#include "InvaderCenterPoint.h"
+#include "InvaderShip.h"
+#include "InvaderEnemy.h"
+#include "InvaderEnemyShooter.h"
+
+#include "core/command/ConsoleCommand.h"
+#include "worldentities/BigExplosion.h"
+
+namespace orxonox
+{
+ RegisterUnloadableClass(Invader);
+
+ Invader::Invader(Context* context) : Deathmatch(context)
+ {
+ RegisterObject(Invader);
+ this->center_ = 0;
+ init();
+ this->setHUDTemplate("InvaderHUD");
+ }
+
+ void Invader::init()
+ {
+ bEndGame = false;
+ lives = 3;
+ level = 1;
+ point = 0;
+ bShowLevel = false;
+ multiplier = 1;
+ b_combo = false;
+ // spawn enemy every 3.5 seconds
+ enemySpawnTimer.setTimer(3.5f, true, createExecutor(createFunctor(&Invader::spawnEnemy, this)));
+ comboTimer.setTimer(3.0f, true, createExecutor(createFunctor(&Invader::comboControll, this)));
+ }
+
+ void Invader::levelUp()
+ {
+ level++;
+ if (getPlayer() != NULL)
+ {
+ for (int i = 0; i < 7; i++)
+ {
+ WeakPtr<BigExplosion> chunk = new BigExplosion(this->center_->getContext());
+ chunk->setPosition(Vector3(600, 0, 100 * i - 300));
+ chunk->setVelocity(Vector3(1000, 0, 0)); //player->getVelocity()
+ chunk->setScale(20);
+ }
+ }
+ addPoints(multiplier * 42);
+ multiplier *= 2;
+ toggleShowLevel();
+ showLevelTimer.setTimer(1.0f, false, createExecutor(createFunctor(&Invader::toggleShowLevel, this)));
+ }
+
+ WeakPtr<InvaderShip> Invader::getPlayer()
+ {
+ if (player == NULL)
+ {
+ for (ObjectList<InvaderShip>::iterator it = ObjectList<InvaderShip>::begin(); it != ObjectList<InvaderShip>::end(); ++it)
+ player = *it;
+ }
+ return player;
+ }
+
+ void Invader::spawnEnemy()
+ {
+ if (getPlayer() == NULL)
+ return;
+ srand(player->getPosition().x + player->getPosition().y);
+ for (int i = 0; i < (3*log10(level) + 1); i++)
+ {
+ WeakPtr<InvaderEnemy> newPawn;
+ if (rand() % 42/(1 + level*level) == 0)
+ {
+ newPawn = new InvaderEnemyShooter(this->center_->getContext());
+ newPawn->addTemplate("enemyinvadershooter");
+ }
+ else
+ {
+ newPawn = new InvaderEnemy(this->center_->getContext());
+ newPawn->addTemplate("enemyinvader");
+ }
+ newPawn->setPlayer(player);
+ newPawn->level = level;
+ // spawn enemy at random points in front of player.
+ newPawn->setPosition(player->getPosition() + Vector3(500 + 100 * i, 0, float(rand())/RAND_MAX * 400 - 200));
+ }
+ }
+
+ void Invader::costLife()
+ {
+ lives--;
+ multiplier = 1;
+ // end the game in 30 seconds.
+ if (lives <= 0)
+ enemySpawnTimer.setTimer(30.0f, false, createExecutor(createFunctor(&Invader::end, this)));
+ };
+
+ void Invader::comboControll()
+ {
+ if (b_combo)
+ multiplier++;
+ // if no combo was performed before, reset multiplier
+ else
+ multiplier = 1;
+ b_combo = false;
+ }
+
+ void Invader::start()
+ {
+ init();
+ // Set variable to temporarily force the player to spawn.
+ this->bForceSpawn_ = true;
+
+ if (this->center_ == NULL) // abandon mission!
+ {
+ orxout(internal_error) << "Invader: No Centerpoint specified." << endl;
+ GSLevel::startMainMenu();
+ return;
+ }
+ // Call start for the parent class.
+ Deathmatch::start();
+ }
+ void Invader::addPoints(int numPoints)
+ {
+ if (!bEndGame)
+ {
+ point += numPoints * multiplier;
+ b_combo = true;
+ }
+ }
+
+ void Invader::end()
+ {
+ // DON'T CALL THIS!
+ // Deathmatch::end();
+ // It will misteriously crash the game!
+ // Instead startMainMenu, this won't crash.
+ GSLevel::startMainMenu();
+ }
+}
Deleted: code/trunk/src/modules/invader/Invader.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/Invader.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/Invader.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,93 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file Invader.h
- @brief Gametype.
- @ingroup Invader
-*/
-
-#ifndef _Invader_H__
-#define _Invader_H__
-
-#include "invader/InvaderPrereqs.h"
-
-#include "gametypes/Deathmatch.h"
-
-#include "InvaderCenterPoint.h"
-
-#include "tools/Timer.h"
-
-namespace orxonox
-{
-
- class _InvaderExport Invader : public Deathmatch
- {
- public:
- Invader(Context* context);
-
- virtual void start();
- virtual void end();
-
- void spawnEnemy();
-
- void setCenterpoint(InvaderCenterPoint* center)
- { this->center_ = center; }
-
- int getLives(){return this->lives;}
- int getLevel(){return this->level;}
- int getPoints(){return this->point;}
- int getMultiplier(){return this->multiplier;}
-
- void costLife();
- void levelUp();
- void addPoints(int numPoints);
- // checks if multiplier should be reset.
- void comboControll();
- void init();
- int lives;
- int multiplier;
- bool bEndGame;
- bool bShowLevel;
- private:
- void toggleShowLevel(){bShowLevel = !bShowLevel;}
- WeakPtr<InvaderShip> getPlayer();
- WeakPtr<InvaderCenterPoint> center_;
- WeakPtr<InvaderShip> player;
-
- Timer enemySpawnTimer;
- Timer comboTimer;
- Timer showLevelTimer;
- //Context* context;
- int level;
- int point;
- bool b_combo;
- };
-}
-
-#endif /* _Invader_H__ */
Copied: code/trunk/src/modules/invader/Invader.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/Invader.h)
===================================================================
--- code/trunk/src/modules/invader/Invader.h (rev 0)
+++ code/trunk/src/modules/invader/Invader.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,93 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file Invader.h
+ @brief Gametype.
+ @ingroup Invader
+*/
+
+#ifndef _Invader_H__
+#define _Invader_H__
+
+#include "invader/InvaderPrereqs.h"
+
+#include "gametypes/Deathmatch.h"
+
+#include "InvaderCenterPoint.h"
+
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+
+ class _InvaderExport Invader : public Deathmatch
+ {
+ public:
+ Invader(Context* context);
+
+ virtual void start();
+ virtual void end();
+
+ void spawnEnemy();
+
+ void setCenterpoint(InvaderCenterPoint* center)
+ { this->center_ = center; }
+
+ int getLives(){return this->lives;}
+ int getLevel(){return this->level;}
+ int getPoints(){return this->point;}
+ int getMultiplier(){return this->multiplier;}
+
+ void costLife();
+ void levelUp();
+ void addPoints(int numPoints);
+ // checks if multiplier should be reset.
+ void comboControll();
+ void init();
+ int lives;
+ int multiplier;
+ bool bEndGame;
+ bool bShowLevel;
+ private:
+ void toggleShowLevel(){bShowLevel = !bShowLevel;}
+ WeakPtr<InvaderShip> getPlayer();
+ WeakPtr<InvaderCenterPoint> center_;
+ WeakPtr<InvaderShip> player;
+
+ Timer enemySpawnTimer;
+ Timer comboTimer;
+ Timer showLevelTimer;
+ //Context* context;
+ int level;
+ int point;
+ bool b_combo;
+ };
+}
+
+#endif /* _Invader_H__ */
Deleted: code/trunk/src/modules/invader/InvaderCenterPoint.cc
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderCenterPoint.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderCenterPoint.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,72 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderCenterPoint.cc
- @brief Implementation of the InvaderCenterPoint class.
-*/
-
-#include "InvaderCenterPoint.h"
-
-#include "core/CoreIncludes.h"
-
-#include "Invader.h"
-
-namespace orxonox
-{
- RegisterClass(InvaderCenterPoint);
-
- InvaderCenterPoint::InvaderCenterPoint(Context* context) : StaticEntity(context)
- {
- RegisterObject(InvaderCenterPoint);
-
- this->checkGametype();
- }
-
- void InvaderCenterPoint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
- {
- SUPER(InvaderCenterPoint, XMLPort, xmlelement, mode);
- }
-
- void InvaderCenterPoint::changedGametype()
- {
- SUPER(InvaderCenterPoint, changedGametype);
-
- // Check, whether it's still Invader.
- this->checkGametype();
- }
-
- void InvaderCenterPoint::checkGametype()
- {
- if (this->getGametype() != NULL && this->getGametype()->isA(Class(Invader)))
- {
- Invader* InvaderGametype = orxonox_cast<Invader*>(this->getGametype().get());
- InvaderGametype->setCenterpoint(this);
- }
- }
-}
Copied: code/trunk/src/modules/invader/InvaderCenterPoint.cc (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderCenterPoint.cc)
===================================================================
--- code/trunk/src/modules/invader/InvaderCenterPoint.cc (rev 0)
+++ code/trunk/src/modules/invader/InvaderCenterPoint.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,72 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderCenterPoint.cc
+ @brief Implementation of the InvaderCenterPoint class.
+*/
+
+#include "InvaderCenterPoint.h"
+
+#include "core/CoreIncludes.h"
+
+#include "Invader.h"
+
+namespace orxonox
+{
+ RegisterClass(InvaderCenterPoint);
+
+ InvaderCenterPoint::InvaderCenterPoint(Context* context) : StaticEntity(context)
+ {
+ RegisterObject(InvaderCenterPoint);
+
+ this->checkGametype();
+ }
+
+ void InvaderCenterPoint::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ {
+ SUPER(InvaderCenterPoint, XMLPort, xmlelement, mode);
+ }
+
+ void InvaderCenterPoint::changedGametype()
+ {
+ SUPER(InvaderCenterPoint, changedGametype);
+
+ // Check, whether it's still Invader.
+ this->checkGametype();
+ }
+
+ void InvaderCenterPoint::checkGametype()
+ {
+ if (this->getGametype() != NULL && this->getGametype()->isA(Class(Invader)))
+ {
+ Invader* InvaderGametype = orxonox_cast<Invader*>(this->getGametype().get());
+ InvaderGametype->setCenterpoint(this);
+ }
+ }
+}
Deleted: code/trunk/src/modules/invader/InvaderCenterPoint.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderCenterPoint.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderCenterPoint.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,58 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderCenterPoint.h
- @brief Declaration of the InvaderCenterPoint class.
- @ingroup Invader
-*/
-
-#ifndef _InvaderCenterPoint_H__
-#define _InvaderCenterPoint_H__
-
-#include "invader/InvaderPrereqs.h"
-
-#include "worldentities/StaticEntity.h"
-
-namespace orxonox
-{
- class _InvaderExport InvaderCenterPoint : public StaticEntity
- {
- public:
- InvaderCenterPoint(Context* context); //checks whether the gametype is actually Invader.
-
- virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
-
- virtual void changedGametype(); //!< Is called when the gametype has changed.
- private:
- void checkGametype();
-
- };
-}
-
-#endif /* _InvaderCenterPoint_H__ */
Copied: code/trunk/src/modules/invader/InvaderCenterPoint.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderCenterPoint.h)
===================================================================
--- code/trunk/src/modules/invader/InvaderCenterPoint.h (rev 0)
+++ code/trunk/src/modules/invader/InvaderCenterPoint.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,58 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderCenterPoint.h
+ @brief Declaration of the InvaderCenterPoint class.
+ @ingroup Invader
+*/
+
+#ifndef _InvaderCenterPoint_H__
+#define _InvaderCenterPoint_H__
+
+#include "invader/InvaderPrereqs.h"
+
+#include "worldentities/StaticEntity.h"
+
+namespace orxonox
+{
+ class _InvaderExport InvaderCenterPoint : public StaticEntity
+ {
+ public:
+ InvaderCenterPoint(Context* context); //checks whether the gametype is actually Invader.
+
+ virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
+ virtual void changedGametype(); //!< Is called when the gametype has changed.
+ private:
+ void checkGametype();
+
+ };
+}
+
+#endif /* _InvaderCenterPoint_H__ */
Deleted: code/trunk/src/modules/invader/InvaderEnemy.cc
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderEnemy.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderEnemy.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,87 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderEnemy.h
- @brief Declaration of the InvaderEnemy class.
-*/
-
-#include "invader/InvaderPrereqs.h"
-#include "InvaderEnemy.h"
-#include "InvaderShip.h"
-
-namespace orxonox
-{
- RegisterClass(InvaderEnemy);
-
- InvaderEnemy::InvaderEnemy(Context* context) : Pawn(context)
- {
- RegisterObject(InvaderEnemy);
- enableCollisionCallback();
- lifetime = 0;
- }
-
- void InvaderEnemy::tick(float dt)
- {
- lifetime += dt;
- // die after 5 seconds.
- if (lifetime > 5000)
- removeHealth(2000);
-
- if (player != NULL)
- {
- float newZ = 2/(pow(abs(getPosition().x - player->getPosition().x) * 0.01, 2) + 1) * (player->getPosition().z - getPosition().z);
- setVelocity(Vector3(1000 - level * 100 , 0, newZ));
- }
- SUPER(InvaderEnemy, tick, dt);
- }
-
- inline bool InvaderEnemy::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
- {
- if(orxonox_cast<InvaderShip*>(otherObject))
- removeHealth(2000);
- return false;
- }
-
- WeakPtr<Invader> InvaderEnemy::getGame()
- {
- if (game == NULL)
- {
- for (ObjectList<Invader>::iterator it = ObjectList<Invader>::begin(); it != ObjectList<Invader>::end(); ++it)
- game = *it;
- }
- return game;
- }
-
- void InvaderEnemy::damage(float damage, float healthdamage, float shielddamage, Pawn* originator)
- {
- Pawn::damage(damage, healthdamage, shielddamage, originator);
- if (getGame() && orxonox_cast<InvaderShip*>(originator) != NULL && getHealth() <= 0)
- getGame()->addPoints(42);
- }
-}
\ No newline at end of file
Copied: code/trunk/src/modules/invader/InvaderEnemy.cc (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderEnemy.cc)
===================================================================
--- code/trunk/src/modules/invader/InvaderEnemy.cc (rev 0)
+++ code/trunk/src/modules/invader/InvaderEnemy.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,87 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderEnemy.h
+ @brief Declaration of the InvaderEnemy class.
+*/
+
+#include "invader/InvaderPrereqs.h"
+#include "InvaderEnemy.h"
+#include "InvaderShip.h"
+
+namespace orxonox
+{
+ RegisterClass(InvaderEnemy);
+
+ InvaderEnemy::InvaderEnemy(Context* context) : Pawn(context)
+ {
+ RegisterObject(InvaderEnemy);
+ enableCollisionCallback();
+ lifetime = 0;
+ }
+
+ void InvaderEnemy::tick(float dt)
+ {
+ lifetime += dt;
+ // die after 5 seconds.
+ if (lifetime > 5000)
+ removeHealth(2000);
+
+ if (player != NULL)
+ {
+ float newZ = 2/(pow(abs(getPosition().x - player->getPosition().x) * 0.01, 2) + 1) * (player->getPosition().z - getPosition().z);
+ setVelocity(Vector3(1000 - level * 100 , 0, newZ));
+ }
+ SUPER(InvaderEnemy, tick, dt);
+ }
+
+ inline bool InvaderEnemy::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
+ {
+ if(orxonox_cast<InvaderShip*>(otherObject))
+ removeHealth(2000);
+ return false;
+ }
+
+ WeakPtr<Invader> InvaderEnemy::getGame()
+ {
+ if (game == NULL)
+ {
+ for (ObjectList<Invader>::iterator it = ObjectList<Invader>::begin(); it != ObjectList<Invader>::end(); ++it)
+ game = *it;
+ }
+ return game;
+ }
+
+ void InvaderEnemy::damage(float damage, float healthdamage, float shielddamage, Pawn* originator)
+ {
+ Pawn::damage(damage, healthdamage, shielddamage, originator);
+ if (getGame() && orxonox_cast<InvaderShip*>(originator) != NULL && getHealth() <= 0)
+ getGame()->addPoints(42);
+ }
+}
\ No newline at end of file
Deleted: code/trunk/src/modules/invader/InvaderEnemy.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderEnemy.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderEnemy.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,72 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderEnemy.h
- @brief Declaration of the InvaderEnemy class.
-*/
-
-#ifndef _InvaderEnemy_H__
-#define _InvaderEnemy_H__
-
-#include "invader/InvaderPrereqs.h"
-
-#include "worldentities/pawns/SpaceShip.h"
-
-namespace orxonox
-{
- class _InvaderExport InvaderEnemy : public Pawn
- {
- public:
- InvaderEnemy(Context* context);
-
- virtual void tick(float dt);
- virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
- virtual void damage(float damage, float healthdamage, float shielddamage, Pawn* originator);
- virtual void setPlayer(WeakPtr<InvaderShip> player){this->player = player;}
-
- int level;
- protected:
- WeakPtr<Invader> getGame();
- WeakPtr<Invader> game;
- WeakPtr<InvaderShip> player;
- Camera* camera;
- bool isFireing;
- float speed, damping;
- float lastTimeFront, lastTimeLeft;
- float lifetime;
- struct Velocity
- {
- float x;
- float y;
- } velocity, desiredVelocity;
-
- };
-}
-
-#endif /* _InvaderEnemy_H__ */
Copied: code/trunk/src/modules/invader/InvaderEnemy.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderEnemy.h)
===================================================================
--- code/trunk/src/modules/invader/InvaderEnemy.h (rev 0)
+++ code/trunk/src/modules/invader/InvaderEnemy.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,72 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderEnemy.h
+ @brief Declaration of the InvaderEnemy class.
+*/
+
+#ifndef _InvaderEnemy_H__
+#define _InvaderEnemy_H__
+
+#include "invader/InvaderPrereqs.h"
+
+#include "worldentities/pawns/SpaceShip.h"
+
+namespace orxonox
+{
+ class _InvaderExport InvaderEnemy : public Pawn
+ {
+ public:
+ InvaderEnemy(Context* context);
+
+ virtual void tick(float dt);
+ virtual bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
+ virtual void damage(float damage, float healthdamage, float shielddamage, Pawn* originator);
+ virtual void setPlayer(WeakPtr<InvaderShip> player){this->player = player;}
+
+ int level;
+ protected:
+ WeakPtr<Invader> getGame();
+ WeakPtr<Invader> game;
+ WeakPtr<InvaderShip> player;
+ Camera* camera;
+ bool isFireing;
+ float speed, damping;
+ float lastTimeFront, lastTimeLeft;
+ float lifetime;
+ struct Velocity
+ {
+ float x;
+ float y;
+ } velocity, desiredVelocity;
+
+ };
+}
+
+#endif /* _InvaderEnemy_H__ */
Deleted: code/trunk/src/modules/invader/InvaderEnemyShooter.cc
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderEnemyShooter.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderEnemyShooter.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,79 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderEnemyShooter.h
- @brief Declaration of the InvaderEnemyShooter class.
-*/
-
-#include "invader/InvaderPrereqs.h"
-#include "InvaderEnemyShooter.h"
-// #include "worldentities/pawns/SpaceShip.h"
-
-namespace orxonox
-{
- RegisterClass(InvaderEnemyShooter);
-
- InvaderEnemyShooter::InvaderEnemyShooter(Context* context) : InvaderEnemy(context)
- {
- RegisterObject(InvaderEnemyShooter);
- enableCollisionCallback();
- lifetime = 0;
- // shoot every second
- shootTimer.setTimer(1.0f, true, createExecutor(createFunctor(&InvaderEnemyShooter::shoot, this)));
- }
-
- void InvaderEnemyShooter::tick(float dt)
- {
- lifetime += dt;
- // die after 20 seconds.
- if (lifetime > 20000)
- removeHealth(2000);
-
- if (player != NULL)
- {
- float distPlayer = player->getPosition().z - getPosition().z;
- // orxout() << "i'm different!" << endl;
- float newZ = 2/(pow(abs(getPosition().x - player->getPosition().x) * 0.01, 2) + 1) * distPlayer;
- setVelocity(Vector3(950 - abs(distPlayer), 0, newZ));
- }
- Pawn::tick(dt);
- }
-
- void InvaderEnemyShooter::shoot()
- {
- ControllableEntity::fire(0);
- }
-
- void InvaderEnemyShooter::damage(float damage, float healthdamage, float shielddamage, Pawn* originator)
- {
- Pawn::damage(damage, healthdamage, shielddamage, originator);
- if (getGame() && orxonox_cast<InvaderShip*>(originator) != NULL && getHealth() <= 0)
- getGame()->addPoints(3*42);
- }
-}
\ No newline at end of file
Copied: code/trunk/src/modules/invader/InvaderEnemyShooter.cc (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderEnemyShooter.cc)
===================================================================
--- code/trunk/src/modules/invader/InvaderEnemyShooter.cc (rev 0)
+++ code/trunk/src/modules/invader/InvaderEnemyShooter.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,79 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderEnemyShooter.h
+ @brief Declaration of the InvaderEnemyShooter class.
+*/
+
+#include "invader/InvaderPrereqs.h"
+#include "InvaderEnemyShooter.h"
+// #include "worldentities/pawns/SpaceShip.h"
+
+namespace orxonox
+{
+ RegisterClass(InvaderEnemyShooter);
+
+ InvaderEnemyShooter::InvaderEnemyShooter(Context* context) : InvaderEnemy(context)
+ {
+ RegisterObject(InvaderEnemyShooter);
+ enableCollisionCallback();
+ lifetime = 0;
+ // shoot every second
+ shootTimer.setTimer(1.0f, true, createExecutor(createFunctor(&InvaderEnemyShooter::shoot, this)));
+ }
+
+ void InvaderEnemyShooter::tick(float dt)
+ {
+ lifetime += dt;
+ // die after 20 seconds.
+ if (lifetime > 20000)
+ removeHealth(2000);
+
+ if (player != NULL)
+ {
+ float distPlayer = player->getPosition().z - getPosition().z;
+ // orxout() << "i'm different!" << endl;
+ float newZ = 2/(pow(abs(getPosition().x - player->getPosition().x) * 0.01, 2) + 1) * distPlayer;
+ setVelocity(Vector3(950 - abs(distPlayer), 0, newZ));
+ }
+ Pawn::tick(dt);
+ }
+
+ void InvaderEnemyShooter::shoot()
+ {
+ ControllableEntity::fire(0);
+ }
+
+ void InvaderEnemyShooter::damage(float damage, float healthdamage, float shielddamage, Pawn* originator)
+ {
+ Pawn::damage(damage, healthdamage, shielddamage, originator);
+ if (getGame() && orxonox_cast<InvaderShip*>(originator) != NULL && getHealth() <= 0)
+ getGame()->addPoints(3*42);
+ }
+}
\ No newline at end of file
Deleted: code/trunk/src/modules/invader/InvaderEnemyShooter.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderEnemyShooter.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderEnemyShooter.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,58 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderEnemyShooter.h
- @brief Declaration of the InvaderEnemyShooter class.
-*/
-
-#ifndef _InvaderEnemyShooter_H__
-#define _InvaderEnemyShooter_H__
-
-#include "invader/InvaderPrereqs.h"
-
-#include "invader/InvaderEnemy.h"
-#include "tools/Timer.h"
-
-namespace orxonox
-{
- class _InvaderExport InvaderEnemyShooter : public InvaderEnemy
- {
- public:
- InvaderEnemyShooter(Context* context);
-
- virtual void tick(float dt);
- virtual void damage(float damage, float healthdamage, float shielddamage, Pawn* originator);
- protected:
- void shoot();
- Timer shootTimer;
-
- };
-}
-
-#endif /* _InvaderEnemyShooter_H__ */
Copied: code/trunk/src/modules/invader/InvaderEnemyShooter.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderEnemyShooter.h)
===================================================================
--- code/trunk/src/modules/invader/InvaderEnemyShooter.h (rev 0)
+++ code/trunk/src/modules/invader/InvaderEnemyShooter.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,58 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderEnemyShooter.h
+ @brief Declaration of the InvaderEnemyShooter class.
+*/
+
+#ifndef _InvaderEnemyShooter_H__
+#define _InvaderEnemyShooter_H__
+
+#include "invader/InvaderPrereqs.h"
+
+#include "invader/InvaderEnemy.h"
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+ class _InvaderExport InvaderEnemyShooter : public InvaderEnemy
+ {
+ public:
+ InvaderEnemyShooter(Context* context);
+
+ virtual void tick(float dt);
+ virtual void damage(float damage, float healthdamage, float shielddamage, Pawn* originator);
+ protected:
+ void shoot();
+ Timer shootTimer;
+
+ };
+}
+
+#endif /* _InvaderEnemyShooter_H__ */
Deleted: code/trunk/src/modules/invader/InvaderHUDinfo.cc
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderHUDinfo.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderHUDinfo.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,137 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- *
- */
-
-#include "InvaderHUDinfo.h"
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "util/Convert.h"
-// #include "Invader.h"
-
-namespace orxonox
-{
- RegisterClass(InvaderHUDinfo);
-
- InvaderHUDinfo::InvaderHUDinfo(Context* context) : OverlayText(context)
- {
- RegisterObject(InvaderHUDinfo);
-
- this->InvaderGame = 0;
- this->bShowLives_ = false;
- this->bShowLevel_ = false;
- this->bShowPoints_ = false;
- this->bShowMultiplier_ = false;
- }
-
- void InvaderHUDinfo::XMLPort(Element& xmlelement, XMLPort::Mode mode)
- {
- SUPER(InvaderHUDinfo, XMLPort, xmlelement, mode);
-
- XMLPortParam(InvaderHUDinfo, "showlives", setShowLives, getShowLives, xmlelement, mode).defaultValues(false);
- XMLPortParam(InvaderHUDinfo, "showPoints", setShowPoints, getShowPoints, xmlelement, mode).defaultValues(false);
- XMLPortParam(InvaderHUDinfo, "showLevel", setShowLevel, getShowLevel, xmlelement, mode).defaultValues(false);
- XMLPortParam(InvaderHUDinfo, "showMultiplier", setShowMultiplier, getShowMultiplier, xmlelement, mode).defaultValues(false);
- }
-
- void InvaderHUDinfo::tick(float dt)
- {
- SUPER(InvaderHUDinfo, tick, dt);
-
- if (this->InvaderGame)
- {
- if (this->bShowLives_)
- {
- const std::string& lives = multi_cast<std::string>(this->InvaderGame->getLives());
- this->setCaption(lives);
- }
- else if(this->bShowLevel_)
- {
- const std::string& Level = multi_cast<std::string>(this->InvaderGame->getLevel());
- if (this->InvaderGame->lives <= 0)
- {
- setPosition(Vector2(0.1, 0.65));
- this->setCaption("Game ends in 30 seconds.\nPress (e)xit / (q)uit to go to the main menu.\nTo restart fly out of the screen!");
- setTextSize(0.05);
- this->InvaderGame->bEndGame = true;
- }
- else if (this->InvaderGame->bShowLevel)
- {
- setTextSize(0.1);
- setPosition(Vector2(0.3, 0.55));
- std::stringstream sstm;
- sstm << "Level " << Level;
- this->setCaption(sstm.str()); // + level
- }
- else
- {
- setTextSize(0.04);
- setPosition(Vector2(0.14, 0.055));
- this->setCaption(Level);
- }
- }
- else if(this->bShowPoints_)
- {
- const std::string& points = multi_cast<std::string>(this->InvaderGame->getPoints());
- if (this->InvaderGame->lives <= 0)
- {
- setTextSize(0.2);
- setPosition(Vector2(0.1, 0.25));
- this->setCaption("Final score:\n" + points);
- this->setColour(ColourValue(1, 0, 0, 1));
- }
- else
- {
- setTextSize(0.04);
- setPosition(Vector2(0.14, 0.1));
- this->setColour(ColourValue(1, 1, 1, 1));
- this->setCaption(points);
- }
- }
- else if(this->bShowMultiplier_)
- {
- int mult = this->InvaderGame->getMultiplier();
- const std::string& Multiplier = "X " + multi_cast<std::string>(mult);
- this->setCaption(Multiplier);
- this->setColour(ColourValue(1, 0, 0, clamp(float(mult * 0.1), 0.0f, 1.0f)));
- this->setTextSize(clamp(float(mult * 0.1), 0.0f, 1.0f) * 0.01 + 0.04);
- }
- }
- }
-
- void InvaderHUDinfo::changedOwner()
- {
- SUPER(InvaderHUDinfo, changedOwner);
-
- if (this->getOwner() && this->getOwner()->getGametype())
- {
- this->InvaderGame = orxonox_cast<Invader*>(this->getOwner()->getGametype().get());
- }
- else
- {
- this->InvaderGame = 0;
- }
- }
-}
Copied: code/trunk/src/modules/invader/InvaderHUDinfo.cc (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderHUDinfo.cc)
===================================================================
--- code/trunk/src/modules/invader/InvaderHUDinfo.cc (rev 0)
+++ code/trunk/src/modules/invader/InvaderHUDinfo.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,137 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ *
+ */
+
+#include "InvaderHUDinfo.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "util/Convert.h"
+// #include "Invader.h"
+
+namespace orxonox
+{
+ RegisterClass(InvaderHUDinfo);
+
+ InvaderHUDinfo::InvaderHUDinfo(Context* context) : OverlayText(context)
+ {
+ RegisterObject(InvaderHUDinfo);
+
+ this->InvaderGame = 0;
+ this->bShowLives_ = false;
+ this->bShowLevel_ = false;
+ this->bShowPoints_ = false;
+ this->bShowMultiplier_ = false;
+ }
+
+ void InvaderHUDinfo::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ {
+ SUPER(InvaderHUDinfo, XMLPort, xmlelement, mode);
+
+ XMLPortParam(InvaderHUDinfo, "showlives", setShowLives, getShowLives, xmlelement, mode).defaultValues(false);
+ XMLPortParam(InvaderHUDinfo, "showPoints", setShowPoints, getShowPoints, xmlelement, mode).defaultValues(false);
+ XMLPortParam(InvaderHUDinfo, "showLevel", setShowLevel, getShowLevel, xmlelement, mode).defaultValues(false);
+ XMLPortParam(InvaderHUDinfo, "showMultiplier", setShowMultiplier, getShowMultiplier, xmlelement, mode).defaultValues(false);
+ }
+
+ void InvaderHUDinfo::tick(float dt)
+ {
+ SUPER(InvaderHUDinfo, tick, dt);
+
+ if (this->InvaderGame)
+ {
+ if (this->bShowLives_)
+ {
+ const std::string& lives = multi_cast<std::string>(this->InvaderGame->getLives());
+ this->setCaption(lives);
+ }
+ else if(this->bShowLevel_)
+ {
+ const std::string& Level = multi_cast<std::string>(this->InvaderGame->getLevel());
+ if (this->InvaderGame->lives <= 0)
+ {
+ setPosition(Vector2(0.1, 0.65));
+ this->setCaption("Game ends in 30 seconds.\nPress (e)xit / (q)uit to go to the main menu.\nTo restart fly out of the screen!");
+ setTextSize(0.05);
+ this->InvaderGame->bEndGame = true;
+ }
+ else if (this->InvaderGame->bShowLevel)
+ {
+ setTextSize(0.1);
+ setPosition(Vector2(0.3, 0.55));
+ std::stringstream sstm;
+ sstm << "Level " << Level;
+ this->setCaption(sstm.str()); // + level
+ }
+ else
+ {
+ setTextSize(0.04);
+ setPosition(Vector2(0.14, 0.055));
+ this->setCaption(Level);
+ }
+ }
+ else if(this->bShowPoints_)
+ {
+ const std::string& points = multi_cast<std::string>(this->InvaderGame->getPoints());
+ if (this->InvaderGame->lives <= 0)
+ {
+ setTextSize(0.2);
+ setPosition(Vector2(0.1, 0.25));
+ this->setCaption("Final score:\n" + points);
+ this->setColour(ColourValue(1, 0, 0, 1));
+ }
+ else
+ {
+ setTextSize(0.04);
+ setPosition(Vector2(0.14, 0.1));
+ this->setColour(ColourValue(1, 1, 1, 1));
+ this->setCaption(points);
+ }
+ }
+ else if(this->bShowMultiplier_)
+ {
+ int mult = this->InvaderGame->getMultiplier();
+ const std::string& Multiplier = "X " + multi_cast<std::string>(mult);
+ this->setCaption(Multiplier);
+ this->setColour(ColourValue(1, 0, 0, clamp(float(mult * 0.1), 0.0f, 1.0f)));
+ this->setTextSize(clamp(float(mult * 0.1), 0.0f, 1.0f) * 0.01 + 0.04);
+ }
+ }
+ }
+
+ void InvaderHUDinfo::changedOwner()
+ {
+ SUPER(InvaderHUDinfo, changedOwner);
+
+ if (this->getOwner() && this->getOwner()->getGametype())
+ {
+ this->InvaderGame = orxonox_cast<Invader*>(this->getOwner()->getGametype().get());
+ }
+ else
+ {
+ this->InvaderGame = 0;
+ }
+ }
+}
Deleted: code/trunk/src/modules/invader/InvaderHUDinfo.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderHUDinfo.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderHUDinfo.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,75 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- *
- */
-
-#ifndef _InvaderHUDinfo_H__
-#define _InvaderHUDinfo_H__
-
-#include "overlays/OverlaysPrereqs.h"
-
-#include "tools/interfaces/Tickable.h"
-#include "overlays/OverlayText.h"
-
-namespace orxonox
-{
- class _OverlaysExport InvaderHUDinfo : public OverlayText, public Tickable
- {
- public:
- InvaderHUDinfo(Context* context);
-
- virtual void tick(float dt);
- virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
- virtual void changedOwner();
-
- inline void setShowLives(bool value)
- { this->bShowLives_ = value; }
- inline bool getShowLives() const
- { return this->bShowLives_; }
-
- inline void setShowLevel(bool value)
- { this->bShowLevel_ = value; }
- inline bool getShowLevel() const
- { return this->bShowLevel_; }
-
- inline void setShowPoints(bool value)
- { this->bShowPoints_ = value; }
- inline bool getShowPoints() const
- { return this->bShowPoints_; }
-
- inline void setShowMultiplier(bool value)
- { this->bShowMultiplier_ = value; }
- inline bool getShowMultiplier() const
- { return this->bShowMultiplier_; }
-
-
- private:
- Invader* InvaderGame;
- bool bShowLives_;
- bool bShowLevel_;
- bool bShowPoints_;
- bool bShowMultiplier_;
- };
-}
-#endif /* _InvaderHUDinfo_H__ */
Copied: code/trunk/src/modules/invader/InvaderHUDinfo.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderHUDinfo.h)
===================================================================
--- code/trunk/src/modules/invader/InvaderHUDinfo.h (rev 0)
+++ code/trunk/src/modules/invader/InvaderHUDinfo.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,75 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ *
+ */
+
+#ifndef _InvaderHUDinfo_H__
+#define _InvaderHUDinfo_H__
+
+#include "overlays/OverlaysPrereqs.h"
+
+#include "tools/interfaces/Tickable.h"
+#include "overlays/OverlayText.h"
+
+namespace orxonox
+{
+ class _OverlaysExport InvaderHUDinfo : public OverlayText, public Tickable
+ {
+ public:
+ InvaderHUDinfo(Context* context);
+
+ virtual void tick(float dt);
+ virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+ virtual void changedOwner();
+
+ inline void setShowLives(bool value)
+ { this->bShowLives_ = value; }
+ inline bool getShowLives() const
+ { return this->bShowLives_; }
+
+ inline void setShowLevel(bool value)
+ { this->bShowLevel_ = value; }
+ inline bool getShowLevel() const
+ { return this->bShowLevel_; }
+
+ inline void setShowPoints(bool value)
+ { this->bShowPoints_ = value; }
+ inline bool getShowPoints() const
+ { return this->bShowPoints_; }
+
+ inline void setShowMultiplier(bool value)
+ { this->bShowMultiplier_ = value; }
+ inline bool getShowMultiplier() const
+ { return this->bShowMultiplier_; }
+
+
+ private:
+ Invader* InvaderGame;
+ bool bShowLives_;
+ bool bShowLevel_;
+ bool bShowPoints_;
+ bool bShowMultiplier_;
+ };
+}
+#endif /* _InvaderHUDinfo_H__ */
Deleted: code/trunk/src/modules/invader/InvaderPrereqs.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderPrereqs.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderPrereqs.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,80 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- at file
- at brief
- Shared library macros, enums, constants and forward declarations for the Invader module
-*/
-
-#ifndef _InvaderPrereqs_H__
-#define _InvaderPrereqs_H__
-
-#include "OrxonoxConfig.h"
-#include "OrxonoxPrereqs.h"
-
-//-----------------------------------------------------------------------
-// Shared library settings
-//-----------------------------------------------------------------------
-
-#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined(Invader_STATIC_BUILD)
-# ifdef Invader_SHARED_BUILD
-# define _InvaderExport __declspec(dllexport)
-# else
-# if defined( __MINGW32__ )
-# define _InvaderExport
-# else
-# define _InvaderExport __declspec(dllimport)
-# endif
-# endif
-# define _InvaderPrivate
-#elif defined (ORXONOX_GCC_VISIBILITY)
-# define _InvaderExport __attribute__ ((visibility("default")))
-# define _InvaderPrivate __attribute__ ((visibility("hidden")))
-#else
-# define _InvaderExport
-# define _InvaderPrivate
-#endif
-
-//-----------------------------------------------------------------------
-// Forward declarations
-//-----------------------------------------------------------------------
-
-namespace orxonox
-{
- class Invader;
- class InvaderCenterPoint;
- class InvaderShip;
- class InvaderEnemy;
- class InvaderEnemyShooter;
- class InvaderWeapon;
- class InvaderWeaponEnemy;
- class InvaderHUDinfo;
-}
-
-#endif /* _InvaderPrereqs_H__ */
Copied: code/trunk/src/modules/invader/InvaderPrereqs.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderPrereqs.h)
===================================================================
--- code/trunk/src/modules/invader/InvaderPrereqs.h (rev 0)
+++ code/trunk/src/modules/invader/InvaderPrereqs.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,80 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ at file
+ at brief
+ Shared library macros, enums, constants and forward declarations for the Invader module
+*/
+
+#ifndef _InvaderPrereqs_H__
+#define _InvaderPrereqs_H__
+
+#include "OrxonoxConfig.h"
+#include "OrxonoxPrereqs.h"
+
+//-----------------------------------------------------------------------
+// Shared library settings
+//-----------------------------------------------------------------------
+
+#if defined(ORXONOX_PLATFORM_WINDOWS) && !defined(Invader_STATIC_BUILD)
+# ifdef Invader_SHARED_BUILD
+# define _InvaderExport __declspec(dllexport)
+# else
+# if defined( __MINGW32__ )
+# define _InvaderExport
+# else
+# define _InvaderExport __declspec(dllimport)
+# endif
+# endif
+# define _InvaderPrivate
+#elif defined (ORXONOX_GCC_VISIBILITY)
+# define _InvaderExport __attribute__ ((visibility("default")))
+# define _InvaderPrivate __attribute__ ((visibility("hidden")))
+#else
+# define _InvaderExport
+# define _InvaderPrivate
+#endif
+
+//-----------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------
+
+namespace orxonox
+{
+ class Invader;
+ class InvaderCenterPoint;
+ class InvaderShip;
+ class InvaderEnemy;
+ class InvaderEnemyShooter;
+ class InvaderWeapon;
+ class InvaderWeaponEnemy;
+ class InvaderHUDinfo;
+}
+
+#endif /* _InvaderPrereqs_H__ */
Deleted: code/trunk/src/modules/invader/InvaderShip.cc
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderShip.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderShip.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,188 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderShip.cc
- @brief Implementation of the InvaderShip class.
-*/
-
-#include "InvaderShip.h"
-
-#include "core/CoreIncludes.h"
-#include "core/XMLPort.h"
-#include "Invader.h"
-
-namespace orxonox
-{
- RegisterClass(InvaderShip);
-
- InvaderShip::InvaderShip(Context* context) : SpaceShip(context)
- {
- RegisterObject(InvaderShip);
-
- speed = 500;
- isFireing = false;
- damping = 10;
- }
-
- void InvaderShip::tick(float dt)
- {
- Vector3 pos = getPosition();
-
- //Movement calculation
- lastTimeFront += dt * damping;
- lastTimeLeft += dt * damping;
- lastTime += dt;
-
- velocity.x = interpolate(clamp(lastTimeLeft, 0.0f, 1.0f), desiredVelocity.x, 0.0f);
- velocity.y = interpolate(clamp(lastTimeFront, 0.0f, 1.0f), desiredVelocity.y, 0.0f);
-
- //Execute movement
- if (this->hasLocalController())
- {
- float dist_y = velocity.y * dt;
- float dist_x = velocity.x * dt;
- if(dist_y + posforeward > -42*3 && dist_y + posforeward < 42*6)
- posforeward += dist_y;
- else
- {
- velocity.y = 0;
- // restart if game ended
- if (getGame())
- if (getGame()->bEndGame)
- {
- getGame()->start();
- return;
- }
- }
- if (pos.z + dist_x > 42*2.5 || pos.z + dist_x < -42*3)
- velocity.x = 0;
- pos += Vector3(1000 + velocity.y, 0, velocity.x) * dt;
- }
-
- // shoot!
- if (isFireing)
- ControllableEntity::fire(0);
-
- // Camera
- WeakPtr<Camera> camera = this->getCamera();
- if (camera != NULL)
- {
- camera->setPosition(Vector3(-pos.z, -posforeward, 0));
- camera->setOrientation(Vector3::UNIT_Z, Degree(90));
- }
-
-
-
- // bring back on track!
- if(pos.y != 0)
- pos.y = 0;
-
- setPosition(pos);
- setOrientation(Vector3::UNIT_Y, Degree(270));
-
- // Level up!
- if (pos.x > 42000)
- {
- updateLevel();
- setPosition(Vector3(0, 0, pos.z)); // pos - Vector3(30000, 0, 0)
- }
-
- SUPER(InvaderShip, tick, dt);
- }
-
- void InvaderShip::updateLevel()
- {
- lastTime = 0;
- if (getGame())
- getGame()->levelUp();
- }
-
- void InvaderShip::moveFrontBack(const Vector2& value)
- {
- lastTimeLeft = 0;
- desiredVelocity.x = -value.x * speed;
- }
-
- void InvaderShip::moveRightLeft(const Vector2& value)
- {
- lastTimeFront = 0;
- desiredVelocity.y = value.y * speed * 42;
- }
- void InvaderShip::boost(bool bBoost)
- {
- isFireing = bBoost;
- }
- inline bool InvaderShip::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
- {
- // orxout() << "touch!!! " << endl; //<< otherObject << " at " << contactPoint;
- WeakPtr<InvaderEnemy> enemy = orxonox_cast<InvaderEnemy*>(otherObject);
- WeakPtr<Projectile> shot = orxonox_cast<Projectile*>(otherObject);
- // ensure that this gets only called once per enemy.
- if (enemy != NULL && lastEnemy != enemy)
- {
- lastEnemy = enemy;
-
- removeHealth(20);
- if (getGame())
- {
- getGame()->multiplier = 1;
- }
- }
- // was shot, decrease multiplier
- else if (shot != NULL && lastShot != shot)
- {
- if (getGame() && orxonox_cast<InvaderEnemy*>(shot->getShooter()) != NULL)
- {
- if (getGame()->multiplier > 1)
- {
- lastShot = shot;
- getGame()->multiplier -= 1;
- }
- }
- }
- return false;
- // SUPER(InvaderShip, collidesAgainst, otherObject, contactPoint);
- }
-
- WeakPtr<Invader> InvaderShip::getGame()
- {
- if (game == NULL)
- {
- for (ObjectList<Invader>::iterator it = ObjectList<Invader>::begin(); it != ObjectList<Invader>::end(); ++it)
- game = *it;
- }
- return game;
- }
-
- void InvaderShip::death()
- {
- getGame()->costLife();
- SpaceShip::death();
- }
-}
Copied: code/trunk/src/modules/invader/InvaderShip.cc (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderShip.cc)
===================================================================
--- code/trunk/src/modules/invader/InvaderShip.cc (rev 0)
+++ code/trunk/src/modules/invader/InvaderShip.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,188 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderShip.cc
+ @brief Implementation of the InvaderShip class.
+*/
+
+#include "InvaderShip.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "Invader.h"
+
+namespace orxonox
+{
+ RegisterClass(InvaderShip);
+
+ InvaderShip::InvaderShip(Context* context) : SpaceShip(context)
+ {
+ RegisterObject(InvaderShip);
+
+ speed = 500;
+ isFireing = false;
+ damping = 10;
+ }
+
+ void InvaderShip::tick(float dt)
+ {
+ Vector3 pos = getPosition();
+
+ //Movement calculation
+ lastTimeFront += dt * damping;
+ lastTimeLeft += dt * damping;
+ lastTime += dt;
+
+ velocity.x = interpolate(clamp(lastTimeLeft, 0.0f, 1.0f), desiredVelocity.x, 0.0f);
+ velocity.y = interpolate(clamp(lastTimeFront, 0.0f, 1.0f), desiredVelocity.y, 0.0f);
+
+ //Execute movement
+ if (this->hasLocalController())
+ {
+ float dist_y = velocity.y * dt;
+ float dist_x = velocity.x * dt;
+ if(dist_y + posforeward > -42*3 && dist_y + posforeward < 42*6)
+ posforeward += dist_y;
+ else
+ {
+ velocity.y = 0;
+ // restart if game ended
+ if (getGame())
+ if (getGame()->bEndGame)
+ {
+ getGame()->start();
+ return;
+ }
+ }
+ if (pos.z + dist_x > 42*2.5 || pos.z + dist_x < -42*3)
+ velocity.x = 0;
+ pos += Vector3(1000 + velocity.y, 0, velocity.x) * dt;
+ }
+
+ // shoot!
+ if (isFireing)
+ ControllableEntity::fire(0);
+
+ // Camera
+ WeakPtr<Camera> camera = this->getCamera();
+ if (camera != NULL)
+ {
+ camera->setPosition(Vector3(-pos.z, -posforeward, 0));
+ camera->setOrientation(Vector3::UNIT_Z, Degree(90));
+ }
+
+
+
+ // bring back on track!
+ if(pos.y != 0)
+ pos.y = 0;
+
+ setPosition(pos);
+ setOrientation(Vector3::UNIT_Y, Degree(270));
+
+ // Level up!
+ if (pos.x > 42000)
+ {
+ updateLevel();
+ setPosition(Vector3(0, 0, pos.z)); // pos - Vector3(30000, 0, 0)
+ }
+
+ SUPER(InvaderShip, tick, dt);
+ }
+
+ void InvaderShip::updateLevel()
+ {
+ lastTime = 0;
+ if (getGame())
+ getGame()->levelUp();
+ }
+
+ void InvaderShip::moveFrontBack(const Vector2& value)
+ {
+ lastTimeLeft = 0;
+ desiredVelocity.x = -value.x * speed;
+ }
+
+ void InvaderShip::moveRightLeft(const Vector2& value)
+ {
+ lastTimeFront = 0;
+ desiredVelocity.y = value.y * speed * 42;
+ }
+ void InvaderShip::boost(bool bBoost)
+ {
+ isFireing = bBoost;
+ }
+ inline bool InvaderShip::collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint)
+ {
+ // orxout() << "touch!!! " << endl; //<< otherObject << " at " << contactPoint;
+ WeakPtr<InvaderEnemy> enemy = orxonox_cast<InvaderEnemy*>(otherObject);
+ WeakPtr<Projectile> shot = orxonox_cast<Projectile*>(otherObject);
+ // ensure that this gets only called once per enemy.
+ if (enemy != NULL && lastEnemy != enemy)
+ {
+ lastEnemy = enemy;
+
+ removeHealth(20);
+ if (getGame())
+ {
+ getGame()->multiplier = 1;
+ }
+ }
+ // was shot, decrease multiplier
+ else if (shot != NULL && lastShot != shot)
+ {
+ if (getGame() && orxonox_cast<InvaderEnemy*>(shot->getShooter()) != NULL)
+ {
+ if (getGame()->multiplier > 1)
+ {
+ lastShot = shot;
+ getGame()->multiplier -= 1;
+ }
+ }
+ }
+ return false;
+ // SUPER(InvaderShip, collidesAgainst, otherObject, contactPoint);
+ }
+
+ WeakPtr<Invader> InvaderShip::getGame()
+ {
+ if (game == NULL)
+ {
+ for (ObjectList<Invader>::iterator it = ObjectList<Invader>::begin(); it != ObjectList<Invader>::end(); ++it)
+ game = *it;
+ }
+ return game;
+ }
+
+ void InvaderShip::death()
+ {
+ getGame()->costLife();
+ SpaceShip::death();
+ }
+}
Deleted: code/trunk/src/modules/invader/InvaderShip.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderShip.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderShip.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,90 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderShip.h
- @brief Declaration of the InvaderShip class.
-*/
-
-#ifndef _InvaderShip_H__
-#define _InvaderShip_H__
-
-#include "invader/InvaderPrereqs.h"
-
-#include "worldentities/pawns/SpaceShip.h"
-#include "graphics/Camera.h"
-#include "weapons/projectiles/Projectile.h"
-
-namespace orxonox
-{
- class _InvaderExport InvaderShip : public SpaceShip
- {
- public:
- InvaderShip(Context* context);
-
- virtual void tick(float dt);
-
- // overwrite for 2d movement
- virtual void moveFrontBack(const Vector2& value);
- virtual void moveRightLeft(const Vector2& value);
-
- // Starts or stops fireing
- virtual void boost(bool bBoost);
-
- //no rotation!
- virtual void rotateYaw(const Vector2& value){};
- virtual void rotatePitch(const Vector2& value){};
- //return to main menu if game has ended.
- virtual void rotateRoll(const Vector2& value){if (getGame()) if (getGame()->bEndGame) getGame()->end();};
-
- virtual void updateLevel();
-
- virtual inline bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
-
- protected:
- virtual void death();
- private:
- WeakPtr<Invader> getGame();
- WeakPtr<Invader> game;
- Camera* camera;
- bool isFireing;
- float speed, damping, posforeward;
- float lastTimeFront, lastTimeLeft, lastTime;
- struct Velocity
- {
- float x;
- float y;
- } velocity, desiredVelocity;
-
- WeakPtr<InvaderEnemy> lastEnemy;
- WeakPtr<Projectile> lastShot;
-
- };
-}
-
-#endif /* _InvaderShip_H__ */
Copied: code/trunk/src/modules/invader/InvaderShip.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderShip.h)
===================================================================
--- code/trunk/src/modules/invader/InvaderShip.h (rev 0)
+++ code/trunk/src/modules/invader/InvaderShip.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,90 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderShip.h
+ @brief Declaration of the InvaderShip class.
+*/
+
+#ifndef _InvaderShip_H__
+#define _InvaderShip_H__
+
+#include "invader/InvaderPrereqs.h"
+
+#include "worldentities/pawns/SpaceShip.h"
+#include "graphics/Camera.h"
+#include "weapons/projectiles/Projectile.h"
+
+namespace orxonox
+{
+ class _InvaderExport InvaderShip : public SpaceShip
+ {
+ public:
+ InvaderShip(Context* context);
+
+ virtual void tick(float dt);
+
+ // overwrite for 2d movement
+ virtual void moveFrontBack(const Vector2& value);
+ virtual void moveRightLeft(const Vector2& value);
+
+ // Starts or stops fireing
+ virtual void boost(bool bBoost);
+
+ //no rotation!
+ virtual void rotateYaw(const Vector2& value){};
+ virtual void rotatePitch(const Vector2& value){};
+ //return to main menu if game has ended.
+ virtual void rotateRoll(const Vector2& value){if (getGame()) if (getGame()->bEndGame) getGame()->end();};
+
+ virtual void updateLevel();
+
+ virtual inline bool collidesAgainst(WorldEntity* otherObject, btManifoldPoint& contactPoint);
+
+ protected:
+ virtual void death();
+ private:
+ WeakPtr<Invader> getGame();
+ WeakPtr<Invader> game;
+ Camera* camera;
+ bool isFireing;
+ float speed, damping, posforeward;
+ float lastTimeFront, lastTimeLeft, lastTime;
+ struct Velocity
+ {
+ float x;
+ float y;
+ } velocity, desiredVelocity;
+
+ WeakPtr<InvaderEnemy> lastEnemy;
+ WeakPtr<Projectile> lastShot;
+
+ };
+}
+
+#endif /* _InvaderShip_H__ */
Deleted: code/trunk/src/modules/invader/InvaderWeapon.cc
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderWeapon.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderWeapon.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,88 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * --
- *
- */
-
-/**
- @file InvaderWeapon.h
- @brief Implementation of the InvaderWeapon class.
-*/
-
-#include "InvaderWeapon.h"
-
-#include "core/CoreIncludes.h"
-// #include "core/XMLPort.h"
-// #include "core/command/Executor.h"
-
-#include "graphics/Model.h"
-#include "weaponsystem/Weapon.h"
-#include "weaponsystem/WeaponPack.h"
-#include "weaponsystem/WeaponSystem.h"
-#include "worldentities/WorldEntity.h"
-#include "worldentities/pawns/Pawn.h"
-
-#include "weapons/projectiles/Projectile.h"
-#include "weapons/MuzzleFlash.h"
-
-namespace orxonox
-{
- RegisterClass(InvaderWeapon);
-
- InvaderWeapon::InvaderWeapon(Context* context) : HsW01(context)
- {
- RegisterObject(InvaderWeapon);
- }
-
- InvaderWeapon::~InvaderWeapon(){}
-
- void InvaderWeapon::shot()
- {
- assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
-
- // Create the projectile.projectile
- projectile = new Projectile(this->getContext());
- WeakPtr<Model> model = new Model(projectile->getContext());
- model->setMeshSource(mesh_);
- model->setCastShadows(false);
- projectile->attach(model);
- model->setScale(5);
-
- this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
- // only shoot in foreward direction
- projectile->setOrientation(Quaternion(sqrt(0.5),0,sqrt(0.5),0));
- projectile->setPosition(this->getMuzzlePosition());
- // only shoot in foreward direction
- projectile->setVelocity(Vector3(1, 0, 0) * 2000);
-
- projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
- projectile->setDamage(this->getDamage());
- projectile->setShieldDamage(this->getShieldDamage());
- projectile->setHealthDamage(this->getHealthDamage());
-
- // Display the muzzle flash.
- this->InvaderWeapon::muzzleflash();
- }
-}
Copied: code/trunk/src/modules/invader/InvaderWeapon.cc (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderWeapon.cc)
===================================================================
--- code/trunk/src/modules/invader/InvaderWeapon.cc (rev 0)
+++ code/trunk/src/modules/invader/InvaderWeapon.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,88 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * --
+ *
+ */
+
+/**
+ @file InvaderWeapon.h
+ @brief Implementation of the InvaderWeapon class.
+*/
+
+#include "InvaderWeapon.h"
+
+#include "core/CoreIncludes.h"
+// #include "core/XMLPort.h"
+// #include "core/command/Executor.h"
+
+#include "graphics/Model.h"
+#include "weaponsystem/Weapon.h"
+#include "weaponsystem/WeaponPack.h"
+#include "weaponsystem/WeaponSystem.h"
+#include "worldentities/WorldEntity.h"
+#include "worldentities/pawns/Pawn.h"
+
+#include "weapons/projectiles/Projectile.h"
+#include "weapons/MuzzleFlash.h"
+
+namespace orxonox
+{
+ RegisterClass(InvaderWeapon);
+
+ InvaderWeapon::InvaderWeapon(Context* context) : HsW01(context)
+ {
+ RegisterObject(InvaderWeapon);
+ }
+
+ InvaderWeapon::~InvaderWeapon(){}
+
+ void InvaderWeapon::shot()
+ {
+ assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
+
+ // Create the projectile.projectile
+ projectile = new Projectile(this->getContext());
+ WeakPtr<Model> model = new Model(projectile->getContext());
+ model->setMeshSource(mesh_);
+ model->setCastShadows(false);
+ projectile->attach(model);
+ model->setScale(5);
+
+ this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
+ // only shoot in foreward direction
+ projectile->setOrientation(Quaternion(sqrt(0.5),0,sqrt(0.5),0));
+ projectile->setPosition(this->getMuzzlePosition());
+ // only shoot in foreward direction
+ projectile->setVelocity(Vector3(1, 0, 0) * 2000);
+
+ projectile->setShooter(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn());
+ projectile->setDamage(this->getDamage());
+ projectile->setShieldDamage(this->getShieldDamage());
+ projectile->setHealthDamage(this->getHealthDamage());
+
+ // Display the muzzle flash.
+ this->InvaderWeapon::muzzleflash();
+ }
+}
Deleted: code/trunk/src/modules/invader/InvaderWeapon.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderWeapon.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderWeapon.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,55 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderWeapon.h
- @brief Definition of the InvaderWeapon class.
-*/
-
-#ifndef _InvaderWeapon_H__
-#define _InvaderWeapon_H__
-
-#include "weapons/weaponmodes/HsW01.h"
-#include "weapons/WeaponsPrereqs.h"
-
-#include "tools/Timer.h"
-
-namespace orxonox
-{
- class _InvaderExport InvaderWeapon : public HsW01
- {
- public:
- InvaderWeapon(Context* context);
- virtual ~InvaderWeapon();
- protected:
- virtual void shot();
- WeakPtr<Projectile> projectile;
- };
-}
-
-#endif /* _InvaderWeapon_H__ */
Copied: code/trunk/src/modules/invader/InvaderWeapon.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderWeapon.h)
===================================================================
--- code/trunk/src/modules/invader/InvaderWeapon.h (rev 0)
+++ code/trunk/src/modules/invader/InvaderWeapon.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,55 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderWeapon.h
+ @brief Definition of the InvaderWeapon class.
+*/
+
+#ifndef _InvaderWeapon_H__
+#define _InvaderWeapon_H__
+
+#include "weapons/weaponmodes/HsW01.h"
+#include "weapons/WeaponsPrereqs.h"
+
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+ class _InvaderExport InvaderWeapon : public HsW01
+ {
+ public:
+ InvaderWeapon(Context* context);
+ virtual ~InvaderWeapon();
+ protected:
+ virtual void shot();
+ WeakPtr<Projectile> projectile;
+ };
+}
+
+#endif /* _InvaderWeapon_H__ */
Deleted: code/trunk/src/modules/invader/InvaderWeaponEnemy.cc
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderWeaponEnemy.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderWeaponEnemy.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,55 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * --
- *
- */
-
-/**
- @file InvaderWeaponEnemy.h
- @brief Implementation of the InvaderWeaponEnemy class.
-*/
-
-#include "InvaderWeaponEnemy.h"
-
-namespace orxonox
-{
- RegisterClass(InvaderWeaponEnemy);
-
- InvaderWeaponEnemy::InvaderWeaponEnemy(Context* context) : InvaderWeapon(context)
- {
- RegisterObject(InvaderWeaponEnemy);
- }
-
- void InvaderWeaponEnemy::shot()
- {
- InvaderWeapon::shot();
- // SUPER(InvaderWeaponEnemy, shot);
- // only shoot in foreward direction
- projectile->setVelocity(Vector3(1, 0, 0) * 300);
- // projectile->setOrientation(Quaternion(sqrt(0.5),0,sqrt(0.5),0));
- }
-}
-
-
Copied: code/trunk/src/modules/invader/InvaderWeaponEnemy.cc (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderWeaponEnemy.cc)
===================================================================
--- code/trunk/src/modules/invader/InvaderWeaponEnemy.cc (rev 0)
+++ code/trunk/src/modules/invader/InvaderWeaponEnemy.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,55 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * --
+ *
+ */
+
+/**
+ @file InvaderWeaponEnemy.h
+ @brief Implementation of the InvaderWeaponEnemy class.
+*/
+
+#include "InvaderWeaponEnemy.h"
+
+namespace orxonox
+{
+ RegisterClass(InvaderWeaponEnemy);
+
+ InvaderWeaponEnemy::InvaderWeaponEnemy(Context* context) : InvaderWeapon(context)
+ {
+ RegisterObject(InvaderWeaponEnemy);
+ }
+
+ void InvaderWeaponEnemy::shot()
+ {
+ InvaderWeapon::shot();
+ // SUPER(InvaderWeaponEnemy, shot);
+ // only shoot in foreward direction
+ projectile->setVelocity(Vector3(1, 0, 0) * 300);
+ // projectile->setOrientation(Quaternion(sqrt(0.5),0,sqrt(0.5),0));
+ }
+}
+
+
Deleted: code/trunk/src/modules/invader/InvaderWeaponEnemy.h
===================================================================
--- code/branches/presentationHS13/src/modules/invader/InvaderWeaponEnemy.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/invader/InvaderWeaponEnemy.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,53 +0,0 @@
-/*
- * ORXONOX - the hottest 3D action shooter ever to exist
- * > www.orxonox.net <
- *
- *
- * License notice:
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Author:
- * Florian Zinggeler
- * Co-authors:
- * ...
- *
- */
-
-/**
- @file InvaderWeaponEnemy.h
- @brief Definition of the InvaderWeaponEnemy class.
-*/
-
-#ifndef _InvaderWeaponEnemy_H__
-#define _InvaderWeaponEnemy_H__
-
-// #include "weapons/weaponmodes/HsW01.h"
-// #include "weapons/WeaponsPrereqs.h"
-#include "invader/InvaderWeapon.h"
-#include "tools/Timer.h"
-
-namespace orxonox
-{
- class _InvaderExport InvaderWeaponEnemy : public InvaderWeapon
- {
- public:
- InvaderWeaponEnemy(Context* context);
- protected:
- virtual void shot();
- };
-}
-
-#endif /* _InvaderWeaponEnemy_H__ */
Copied: code/trunk/src/modules/invader/InvaderWeaponEnemy.h (from rev 9938, code/branches/presentationHS13/src/modules/invader/InvaderWeaponEnemy.h)
===================================================================
--- code/trunk/src/modules/invader/InvaderWeaponEnemy.h (rev 0)
+++ code/trunk/src/modules/invader/InvaderWeaponEnemy.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,53 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Florian Zinggeler
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file InvaderWeaponEnemy.h
+ @brief Definition of the InvaderWeaponEnemy class.
+*/
+
+#ifndef _InvaderWeaponEnemy_H__
+#define _InvaderWeaponEnemy_H__
+
+// #include "weapons/weaponmodes/HsW01.h"
+// #include "weapons/WeaponsPrereqs.h"
+#include "invader/InvaderWeapon.h"
+#include "tools/Timer.h"
+
+namespace orxonox
+{
+ class _InvaderExport InvaderWeaponEnemy : public InvaderWeapon
+ {
+ public:
+ InvaderWeaponEnemy(Context* context);
+ protected:
+ virtual void shot();
+ };
+}
+
+#endif /* _InvaderWeaponEnemy_H__ */
Modified: code/trunk/src/modules/objects/ForceField.cc
===================================================================
--- code/trunk/src/modules/objects/ForceField.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/objects/ForceField.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -44,10 +44,14 @@
/*static*/ const std::string ForceField::modeTube_s = "tube";
/*static*/ const std::string ForceField::modeSphere_s = "sphere";
/*static*/ const std::string ForceField::modeInvertedSphere_s = "invertedSphere";
+
+ /*static*/ const std::string ForceField::modeHomogen_s = "homogen";
+
/*static*/ const std::string ForceField::modeNewtonianGravity_s = "newtonianGravity";
/*static*/ const float ForceField::gravConstant_ = 6.673e-11;
/*static*/ const float ForceField::attenFactor_ = 1;
+
/**
@brief
Constructor. Registers the object and initializes some values.
@@ -88,6 +92,7 @@
XMLPortParam(ForceField, "massDiameter", setMassDiameter, getMassDiameter, xmlelement, mode).defaultValues(0);
XMLPortParam(ForceField, "length", setLength , getLength , xmlelement, mode).defaultValues(2000);
XMLPortParam(ForceField, "mode", setMode, getMode, xmlelement, mode);
+ XMLPortParam(ForceField, "forcedirection", setForceDirection, getForceDirection, xmlelement, mode).defaultValues(Vector3(0,-400,0));
}
void ForceField::registerVariables()
@@ -195,6 +200,21 @@
}
}
}
+ else if(this->mode_ == forceFieldMode::homogen)
+ {
+ // Iterate over all objects that could possibly be affected by the ForceField.
+ for (ObjectList<MobileEntity>::iterator it = ObjectList<MobileEntity>::begin(); it != ObjectList<MobileEntity>::end(); ++it)
+ {
+ Vector3 distanceVector = it->getWorldPosition() - this->getWorldPosition();
+ float distance = distanceVector.length();
+ if (distance < this->radius_ && distance > this->massRadius_)
+ {
+ // Add a Acceleration in forceDirection_.
+ // Vector3(0,0,0) is the direction, where the force should work.
+ it->addAcceleration(forceDirection_ , Vector3(0,0,0));
+ }
+ }
+ }
}
/**
@@ -213,6 +233,10 @@
this->mode_ = forceFieldMode::invertedSphere;
else if(mode == ForceField::modeNewtonianGravity_s)
this->mode_ = forceFieldMode::newtonianGravity;
+
+ else if(mode == ForceField::modeHomogen_s)
+ this->mode_ = forceFieldMode::homogen;
+
else
{
orxout(internal_warning) << "Wrong mode '" << mode << "' in ForceField. Setting to 'tube'." << endl;
@@ -238,6 +262,10 @@
return ForceField::modeInvertedSphere_s;
case forceFieldMode::newtonianGravity:
return ForceField::modeNewtonianGravity_s;
+
+ case forceFieldMode::homogen:
+ return ForceField::modeHomogen_s;
+
default:
return ForceField::modeTube_s;
}
Modified: code/trunk/src/modules/objects/ForceField.h
===================================================================
--- code/trunk/src/modules/objects/ForceField.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/objects/ForceField.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,3 +1,4 @@
+
/*
* ORXONOX - the hottest 3D action shooter ever to exist
* > www.orxonox.net <
@@ -56,7 +57,8 @@
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.
+ newtonianGravity, //!< The ForceField imitates Newtonian gravitation for use in stellar bodies.
+ homogen //!< Local homogenous Force field with changeable direction for the Space Station
};
}
@@ -65,6 +67,7 @@
Implements a force field, that applies a force to any @ref orxonox::MobileEntity "MobileEntity" that enters its range.
The following parameters can be set to specify the behavior of the ForceField.
+ - @b forcedirection The direction and the strength of the homogenous force field. Default is 0,-400,0.
- @b velocity The amount of force the ForceField excerts. Default is 100.
- @b diameter The diameter of the ForceField. Default is 500.
- @b length The length of the ForceField. Default is 2000.
@@ -146,6 +149,13 @@
inline float getLength()
{ return this->halfLength_*2; }
+ inline void setForceDirection(Vector3 forcedir)
+ { this->forceDirection_ = forcedir; }
+
+ inline Vector3 getForceDirection()
+ { return this->forceDirection_; }
+
+
void setMode(const std::string& mode); //!< Set the mode of the ForceField.
const std::string& getMode(void); //!< Get the mode of the ForceField.
@@ -156,6 +166,8 @@
static const std::string modeInvertedSphere_s;
static const std::string modeNewtonianGravity_s;
+ static const std::string modeHomogen_s;
+
float velocity_; //!< The velocity of the ForceField.
float radius_; //!< The radius of the ForceField.
float massRadius_; //!< The radius of the stellar body for the Newtonian ForceField.
@@ -166,6 +178,7 @@
static const float gravConstant_;
//! Attenuation factor for Newtonian ForceFields
static const float attenFactor_;
+ Vector3 forceDirection_;
};
}
Modified: code/trunk/src/modules/overlays/OverlaysPrereqs.h
===================================================================
--- code/trunk/src/modules/overlays/OverlaysPrereqs.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/overlays/OverlaysPrereqs.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -79,6 +79,7 @@
class AnnounceMessage;
class BarColour;
class ChatOverlay;
+ class CountDown;
class DeathMessage;
class GametypeFadingMessage;
class GametypeStaticMessage;
Modified: code/trunk/src/modules/overlays/debugging/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/overlays/debugging/CMakeLists.txt 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/overlays/debugging/CMakeLists.txt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -1,4 +1,5 @@
ADD_SOURCE_FILES(OVERLAYS_SRC_FILES
DebugFPSText.cc
DebugRTRText.cc
+ DebugPositionText.cc
)
Copied: code/trunk/src/modules/overlays/debugging/DebugPositionText.cc (from rev 9938, code/branches/presentationHS13/src/modules/overlays/debugging/DebugPositionText.cc)
===================================================================
--- code/trunk/src/modules/overlays/debugging/DebugPositionText.cc (rev 0)
+++ code/trunk/src/modules/overlays/debugging/DebugPositionText.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,61 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Johannes Ritz
+ * Co-authors:
+ * ...
+ *
+ */
+
+#include "DebugPositionText.h"
+
+#include "util/Convert.h"
+#include "core/CoreIncludes.h"
+#include "core/Game.h"
+
+#include "controllers/NewHumanController.h"
+
+namespace orxonox
+{
+ RegisterClass(DebugPositionText);
+
+ DebugPositionText::DebugPositionText(Context* context) : OverlayText(context)
+ {
+ RegisterObject(DebugPositionText);
+ }
+
+ DebugPositionText::~DebugPositionText()
+ {
+ }
+
+ void DebugPositionText::tick(float dt)
+ {
+ SUPER(DebugPositionText, tick, dt);
+
+ ObjectList<NewHumanController>::iterator it = ObjectList<NewHumanController>::begin();
+ if (it && it->getControllableEntity() )
+ {
+ Vector3 pos = it->getControllableEntity()->getPosition();
+ this->setCaption(multi_cast<std::string>(pos));
+ }
+ }
+}
Copied: code/trunk/src/modules/overlays/debugging/DebugPositionText.h (from rev 9938, code/branches/presentationHS13/src/modules/overlays/debugging/DebugPositionText.h)
===================================================================
--- code/trunk/src/modules/overlays/debugging/DebugPositionText.h (rev 0)
+++ code/trunk/src/modules/overlays/debugging/DebugPositionText.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,48 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Johannes Ritz
+ * Co-authors:
+ * ...
+ *
+ */
+
+#ifndef _DebugPositionText_H__
+#define _DebugPositionText_H__
+
+#include "overlays/OverlaysPrereqs.h"
+
+#include "tools/interfaces/Tickable.h"
+#include "overlays/OverlayText.h"
+
+namespace orxonox
+{
+ class _OverlaysExport DebugPositionText : public OverlayText, public Tickable
+ {
+ public:
+ DebugPositionText(Context* context);
+ virtual ~DebugPositionText();
+
+ virtual void tick(float dt);
+ };
+}
+#endif /* _DebugPositionText_H__ */
Modified: code/trunk/src/modules/overlays/hud/CMakeLists.txt
===================================================================
--- code/trunk/src/modules/overlays/hud/CMakeLists.txt 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/overlays/hud/CMakeLists.txt 2013-12-21 22:16:54 UTC (rev 9939)
@@ -17,4 +17,5 @@
LastManStandingInfos.cc
PauseNotice.cc
LastTeamStandingInfos.cc
+ CountDown.cc
)
Copied: code/trunk/src/modules/overlays/hud/CountDown.cc (from rev 9938, code/branches/presentationHS13/src/modules/overlays/hud/CountDown.cc)
===================================================================
--- code/trunk/src/modules/overlays/hud/CountDown.cc (rev 0)
+++ code/trunk/src/modules/overlays/hud/CountDown.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,113 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Johannes Ritz
+ * Co-authors:
+ * ...
+ *
+ */
+
+/**
+ @file CountDown.cc
+ @brief Countdown HUD element, counting down from CountDown::counter_ to zero.
+
+ In use it would like this:
+ @code
+ <OverlayGroup name="spacefightHUD" scale = "1, 1">
+ <CountDown
+ position = "0.49, 0.05"
+ pickpoint = "0.0, 0.0"
+ font = "ShareTechMono"
+ textsize = 0.06
+ colour = "1.0, 1.0, 1.0, 1.0"
+ align = "right"
+ counter = "10.0"
+ speedfactor = "1.0"
+ active = "false"
+ >
+ <events>
+ <activity>
+ <EventListener event="startcounting" />
+ </activity>
+ </events>
+ </CountDown>
+ </OverlayGroup>
+ @endcode
+ The counter is triggered by an event called "startcounting" and counts from 10 to 0.
+*/
+
+#include "CountDown.h"
+
+#include "core/CoreIncludes.h"
+#include "core/XMLPort.h"
+#include "infos/PlayerInfo.h"
+#include "util/Convert.h"
+
+namespace orxonox
+{
+ RegisterClass(CountDown);
+
+ CountDown::CountDown(Context* context) : OverlayText(context)
+ {
+ RegisterObject(CountDown);
+
+ this->owner_ = 0;
+ this->hasStopped_ = false;
+ }
+
+ CountDown::~CountDown()
+ {
+ }
+
+ void CountDown::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ {
+ SUPER(CountDown, XMLPort, xmlelement, mode);
+ XMLPortParam(CountDown, "counter", setCounter, getCounter, xmlelement, mode).defaultValues(10);
+ XMLPortParam(CountDown, "speedfactor", setSpeed, getSpeed, xmlelement, mode).defaultValues(1);
+ }
+
+ void CountDown::tick(float dt)
+ {
+ SUPER(CountDown, tick, dt);
+ if (this->isActive() && !this->hasStopped_)
+ {
+ if (this->counter_ <= 0)
+ {
+ this->counter_ = 0;
+ this->hasStopped_ = true;
+ this->setCaption("");
+ }
+ else
+ {
+ this->counter_ -= dt*speed_;
+ this->setCaption(multi_cast<std::string>((int)this->counter_)); //TODO: evtl. initialize with +0.5f
+ }
+ }
+ }
+
+ void CountDown::changedOwner()
+ {
+ SUPER(CountDown, changedOwner);
+
+ this->owner_ = orxonox_cast<PlayerInfo*>(this->getOwner());
+ }
+}
Copied: code/trunk/src/modules/overlays/hud/CountDown.h (from rev 9938, code/branches/presentationHS13/src/modules/overlays/hud/CountDown.h)
===================================================================
--- code/trunk/src/modules/overlays/hud/CountDown.h (rev 0)
+++ code/trunk/src/modules/overlays/hud/CountDown.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -0,0 +1,68 @@
+/*
+ * ORXONOX - the hottest 3D action shooter ever to exist
+ * > www.orxonox.net <
+ *
+ *
+ * License notice:
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Author:
+ * Johannes Ritz
+ * Co-authors:
+ * ...
+ *
+ */
+
+#ifndef _CountDown_H__
+#define _CountDown_H__
+
+#include "overlays/OverlaysPrereqs.h"
+
+#include "tools/interfaces/TimeFactorListener.h"
+#include "tools/interfaces/Tickable.h"
+#include "overlays/OverlayText.h"
+
+namespace orxonox
+{
+ class _OverlaysExport CountDown : public OverlayText, public Tickable
+ {
+ public:
+ CountDown(Context* context);
+ virtual ~CountDown();
+
+ virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+ virtual void changedOwner();
+ virtual void tick(float dt);
+
+ inline void setCounter(float value)
+ { this->counter_ = value + 0.99f; }
+ inline float getCounter() const
+ { return this->counter_; }
+ inline void setSpeed(float value)
+ { this->speed_ = value; }
+ inline float getSpeed() const
+ { return this->speed_; }
+
+ protected:
+
+ private:
+ PlayerInfo* owner_;
+ float counter_;
+ float speed_;
+ bool hasStopped_;
+ };
+}
+#endif /* _CountDown_H__ */
Modified: code/trunk/src/modules/overlays/hud/HUDNavigation.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDNavigation.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/overlays/hud/HUDNavigation.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -73,8 +73,8 @@
HUDNavigation::HUDNavigation(Context* context) :
OrxonoxOverlay(context)
{
- RegisterObject(HUDNavigation)
-; this->setConfigValues();
+ RegisterObject(HUDNavigation);
+ this->setConfigValues();
// Set default values
this->setFont("Monofur");
Modified: code/trunk/src/modules/overlays/hud/HUDRadar.cc
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDRadar.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/overlays/hud/HUDRadar.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -24,6 +24,7 @@
* Felix Schulthess
* Co-authors:
* Reto Grieder
+ * Wolfgang Roenninger
*
*/
@@ -40,6 +41,7 @@
#include "worldentities/ControllableEntity.h"
#include "Scene.h"
#include "Radar.h"
+#include "core/config/ConfigValueIncludes.h"
namespace orxonox
{
@@ -49,6 +51,7 @@
: OrxonoxOverlay(context)
{
RegisterObject(HUDRadar);
+ this->setConfigValues();
this->marker_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
.createOverlayElement("Panel", "HUDRadar_marker_" + getUniqueNumberString()));
@@ -59,12 +62,25 @@
this->setRadarSensitivity(1.0f);
this->setHalfDotSizeDistance(3000.0f);
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->setDetectionLimit( 10000.0f );
this->owner_ = 0;
+
+ this->map3DFront_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+ .createOverlayElement("Panel", "HUDRadar_mapDreiDFront_" + getUniqueNumberString()));
+ this->map3DFront_->setMaterialName("Orxonox/Radar3DFront");
+ this->overlay_->add2D(this->map3DFront_);
+ this->map3DFront_->hide();
+
+ this->map3DBack_ = static_cast<Ogre::PanelOverlayElement*>(Ogre::OverlayManager::getSingleton()
+ .createOverlayElement("Panel", "HUDRadar_mapDreiDBack_" + getUniqueNumberString()));
+ this->map3DBack_->setMaterialName("Orxonox/Radar3DBack");
+ this->overlay_->add2D(this->map3DBack_);
+ this->map3DBack_->hide();
+
}
HUDRadar::~HUDRadar()
@@ -72,6 +88,9 @@
if (this->isInitialized())
{
Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->marker_);
+ Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->map3DFront_);
+ Ogre::OverlayManager::getSingleton().destroyOverlayElement(this->map3DBack_);
+
for (std::map<RadarViewable*,Ogre::PanelOverlayElement*>::iterator it = this->radarObjects_.begin();
it != this->radarObjects_.end(); ++it)
{
@@ -80,6 +99,13 @@
}
}
+
+
+ void HUDRadar::setConfigValues()
+ {
+ SetConfigValue(RadarMode_, true);
+ }
+
void HUDRadar::XMLPort(Element& xmlelement, XMLPort::Mode mode)
{
SUPER(HUDRadar, XMLPort, xmlelement, mode);
@@ -87,6 +113,13 @@
XMLPortParam(HUDRadar, "sensitivity", setRadarSensitivity, getRadarSensitivity, xmlelement, mode);
XMLPortParam(HUDRadar, "halfDotSizeDistance", setHalfDotSizeDistance, getHalfDotSizeDistance, xmlelement, mode);
XMLPortParam(HUDRadar, "maximumDotSize", setMaximumDotSize, getMaximumDotSize, xmlelement, mode);
+ XMLPortParam(HUDRadar, "maximumDotSize3D", setMaximumDotSize3D, getMaximumDotSize3D, xmlelement, mode);
+ XMLPortParam(HUDRadar, "material2D", set2DMaterial, get2DMaterial, xmlelement, mode);
+ XMLPortParam(HUDRadar, "material3DMiddle", set3DMaterial, get3DMaterial, xmlelement, mode);
+ XMLPortParam(HUDRadar, "material3DFront", set3DMaterialFront, get3DMaterialFront, xmlelement, mode);
+ XMLPortParam(HUDRadar, "material3DBack", set3DMaterialBack, get3DMaterialBack, xmlelement, mode);
+ XMLPortParam(HUDRadar, "mapAngle3D", setMapAngle, getMapAngle, xmlelement, mode);
+ XMLPortParam(HUDRadar, "detectionLimit", setDetectionLimit, getDetectionLimit, xmlelement, mode);
}
void HUDRadar::addObject(RadarViewable* object)
@@ -151,6 +184,23 @@
// update the distances for all objects
std::map<RadarViewable*,Ogre::PanelOverlayElement*>::iterator it;
+
+
+ if(RadarMode_)
+ {
+ this->setBackgroundMaterial(material3D_);
+ this->map3DFront_->_notifyZOrder(this->overlay_->getZOrder() * 100 + 250); // it seems that the ZOrder of overlayelements is 100 times the ZOrder of the overlay
+ this->map3DBack_->_notifyZOrder(this->overlay_->getZOrder() * 100 - 250); // 250 a little bit buffer so that the two shels are displayed all in the front / in the back
+ this->map3DFront_->show();
+ this->map3DBack_->show();
+ }
+ else
+ {
+ this->setBackgroundMaterial(material2D_);
+ this->map3DFront_->hide();
+ this->map3DBack_->hide();
+ }
+
for( it = this->radarObjects_.begin(); it != this->radarObjects_.end(); ++it )
{
// Make sure the object really is a WorldEntity
@@ -164,13 +214,36 @@
// set size to fit distance...
float distance = (wePointer->getWorldPosition() - this->owner_->getPosition()).length();
// calculate the size with 1/distance dependency for simplicity (instead of exp(-distance * lambda)
- float size = maximumDotSize_ * halfDotSizeDistance_ / (halfDotSizeDistance_ + distance) * it->first->getRadarObjectScale();
+
+ float size;
+ if(RadarMode_)
+ size = maximumDotSize3D_ * halfDotSizeDistance_ / (halfDotSizeDistance_ + distance) * it->first->getRadarObjectScale();
+ else
+ size = maximumDotSize_ * halfDotSizeDistance_ / (halfDotSizeDistance_ + distance) * it->first->getRadarObjectScale();
it->second->setDimensions(size, size);
// calc position on radar...
- Vector2 coord = get2DViewcoordinates(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition());
+ Vector2 coord;
+
+ if(RadarMode_)
+ {
+ coord = get3DProjection(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition(), 0.6435011, detectionLimit_);
+
+ // set zOrder on screen
+ bool overXZPlain = isObjectHigherThanShipOnMap(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition(), this->mapAngle_);
+
+ int zOrder = determineMap3DZOrder(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition(), detectionLimit_);
+ if(overXZPlain == false /*&& (it->second->getZOrder() > 100 * this->overlay_->getZOrder())*/) // it appears that zOrder of attached Overlayelements is 100 times the zOrder of the Overlay
+ it->second->_notifyZOrder(this->overlay_->getZOrder() * 100 - 70 + zOrder);
+ if(overXZPlain == true /*&& (it->second->getZOrder() <= 100 * this->overlay_->getZOrder())*/)
+ it->second->_notifyZOrder(this->overlay_->getZOrder() * 100 + 70 + zOrder);
+ }
+ else
+ coord = get2DViewcoordinates(this->owner_->getPosition(), this->owner_->getOrientation() * WorldEntity::FRONT, this->owner_->getOrientation() * WorldEntity::UP, wePointer->getWorldPosition());
+
coord *= math::pi / 3.5f; // small adjustment to make it fit the texture
it->second->setPosition((1.0f + coord.x - size) * 0.5f, (1.0f - coord.y - size) * 0.5f);
+
if( distance < detectionLimit_ || detectionLimit_ < 0 )
it->second->show();
else
@@ -181,6 +254,8 @@
{
this->marker_->setDimensions(size * 1.5f, size * 1.5f);
this->marker_->setPosition((1.0f + coord.x - size * 1.5f) * 0.5f, (1.0f - coord.y - size * 1.5f) * 0.5f);
+ if(RadarMode_)
+ this->marker_->_notifyZOrder(it->second->getZOrder() -1);
this->marker_->show();
}
}
Modified: code/trunk/src/modules/overlays/hud/HUDRadar.h
===================================================================
--- code/trunk/src/modules/overlays/hud/HUDRadar.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/overlays/hud/HUDRadar.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -34,6 +34,7 @@
#include <map>
#include <vector>
+#include <string>
#include "util/OgreForwardRefs.h"
#include "interfaces/RadarListener.h"
@@ -50,24 +51,42 @@
virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
virtual void changedOwner();
+ void setConfigValues();
private:
// XML accessors
float getHalfDotSizeDistance() const { return this->halfDotSizeDistance_; }
void setHalfDotSizeDistance(float distance) { this->halfDotSizeDistance_ = distance; }
- void setDetectionLimit( float limit )
- { this->detectionLimit_ = limit; }
- float getDetectionLimit() const
- { return this->detectionLimit_; }
+ void setDetectionLimit( float limit ) { this->detectionLimit_ = limit; }
+ float getDetectionLimit() const { return this->detectionLimit_; }
float getMaximumDotSize() const { return this->maximumDotSize_; }
void setMaximumDotSize(float size) { this->maximumDotSize_ = size; }
+ float getMaximumDotSize3D() const { return this->maximumDotSize3D_; }
+ void setMaximumDotSize3D(float size) { this->maximumDotSize3D_ = size;}
+
+ std::string get2DMaterial() const {return this->material2D_; }
+ void set2DMaterial(std::string material2D) { this->material2D_ = material2D; }
+
+ std::string get3DMaterial() const {return this->material3D_; }
+ void set3DMaterial(std::string material3D) { this->material3D_ = material3D; }
+
+ std::string get3DMaterialFront() const {return this->material3DFront_; }
+ void set3DMaterialFront(std::string material3DFront) { this->material3DFront_ = material3DFront; }
+
+ std::string get3DMaterialBack() const {return this->material3DBack_; }
+ void set3DMaterialBack(std::string material3DBack) { this->material3DBack_ = material3DBack; }
+
float getRadarSensitivity() const { return this->sensitivity_; }
// used also by RadarListener interface!
void setRadarSensitivity(float sensitivity) { this->sensitivity_ = sensitivity; }
+ // Determines angle between line of sight and x/z-plain on the 3D minimap
+ float getMapAngle() const { return this->mapAngle_; }
+ void setMapAngle(float mapAngle) { this->mapAngle_ = mapAngle; }
+
// RadarListener interface
virtual void addObject(RadarViewable* viewable);
virtual void removeObject(RadarViewable* viewable);
@@ -84,9 +103,21 @@
std::map<RadarViewable*, Ogre::PanelOverlayElement*> radarObjects_;
Ogre::PanelOverlayElement* marker_;
+ bool RadarMode_; // Determines, if Radar runs in 3D or 2D Mode
+
float halfDotSizeDistance_;
float maximumDotSize_;
+ float maximumDotSize3D_;
+ float mapAngle_;
+ std::string material2D_; //Material name for 2D map
+ std::string material3D_; //Material names For the 3D minimap
+ std::string material3DFront_;
+ std::string material3DBack_;
+
+ Ogre::PanelOverlayElement* map3DFront_; //Overlayelements for the 3D minimap to be able to draw the points in a semi 3D matter
+ Ogre::PanelOverlayElement* map3DBack_;
+
float sensitivity_;
float detectionLimit_;
ControllableEntity* owner_;
Modified: code/trunk/src/modules/pong/Pong.cc
===================================================================
--- code/trunk/src/modules/pong/Pong.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/pong/Pong.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -46,6 +46,7 @@
#include "PongBat.h"
#include "PongBot.h"
#include "PongAI.h"
+
namespace orxonox
{
// Events to allow to react to scoring of a player, in the level-file.
@@ -116,6 +117,7 @@
this->bat_[0] = 0;
}
}
+
}
/**
Modified: code/trunk/src/modules/pong/PongBall.cc
===================================================================
--- code/trunk/src/modules/pong/PongBall.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/pong/PongBall.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -40,6 +40,9 @@
#include "PongBat.h"
+#include "sound/WorldSound.h"
+#include "core/XMLPort.h"
+
namespace orxonox
{
RegisterClass(PongBall);
@@ -65,6 +68,23 @@
this->relMercyOffset_ = 0.05f;
this->registerVariables();
+
+ //initialize sound
+ if (GameMode::isMaster())
+ {
+ this->defScoreSound_ = new WorldSound(this->getContext());
+ this->defScoreSound_->setVolume(1.0f);
+ this->defBatSound_ = new WorldSound(this->getContext());
+ this->defBatSound_->setVolume(0.4f);
+ this->defBoundarySound_ = new WorldSound(this->getContext());
+ this->defBoundarySound_->setVolume(0.5f);
+ }
+ else
+ {
+ this->defScoreSound_ = 0;
+ this->defBatSound_ = 0;
+ this->defBoundarySound_ = 0;
+ }
}
/**
@@ -82,6 +102,15 @@
}
}
+ //xml port for loading sounds
+ void PongBall::XMLPort(Element& xmlelement, XMLPort::Mode mode)
+ {
+ SUPER(PongBall, XMLPort, xmlelement, mode);
+ XMLPortParam(PongBall, "defScoreSound", setDefScoreSound, getDefScoreSound, xmlelement, mode);
+ XMLPortParam(PongBall, "defBatSound", setDefBatSound, getDefBatSound, xmlelement, mode);
+ XMLPortParam(PongBall, "defBoundarySound", setDefBoundarySound, getDefBoundarySound, xmlelement, mode);
+ }
+
/**
@brief
Register variables to synchronize over the network.
@@ -116,7 +145,8 @@
// If the ball has gone over the top or bottom boundary of the playing field (i.e. the ball has hit the top or bottom delimiters).
if (position.z > this->fieldHeight_ / 2 || position.z < -this->fieldHeight_ / 2)
{
- // Its velocity in z-direction is inverted (i.e. it bounces off).
+ defBoundarySound_->play(); //play boundary sound
+ // Its velocity in z-direction is inverted (i.e. it bounces off).
velocity.z = -velocity.z;
// And its position is set as to not overstep the boundary it has just crossed.
if (position.z > this->fieldHeight_ / 2)
@@ -141,7 +171,8 @@
distance = (position.z - this->bat_[1]->getPosition().z) / (this->fieldHeight_ * (this->batlength_ * 1.10f) / 2);
if (fabs(distance) <= 1) // If the bat is there to parry.
{
- // Set the ball to be exactly at the boundary.
+ defBatSound_->play(); //play bat sound
+ // Set the ball to be exactly at the boundary.
position.x = this->fieldWidth_ / 2;
// Invert its velocity in x-direction (i.e. it bounces off).
velocity.x = -velocity.x;
@@ -154,6 +185,7 @@
// If the left player scores.
else if (GameMode::isMaster() && position.x > this->fieldWidth_ / 2 * (1 + this->relMercyOffset_))
{
+ defScoreSound_->play();//play score sound
if (this->getGametype() && this->bat_[0])
{
this->getGametype()->playerScored(this->bat_[0]->getPlayer());
@@ -168,7 +200,8 @@
distance = (position.z - this->bat_[0]->getPosition().z) / (this->fieldHeight_ * (this->batlength_ * 1.10f) / 2);
if (fabs(distance) <= 1) // If the bat is there to parry.
{
- // Set the ball to be exactly at the boundary.
+ defBatSound_->play(); //play bat sound
+ // Set the ball to be exactly at the boundary.
position.x = -this->fieldWidth_ / 2;
// Invert its velocity in x-direction (i.e. it bounces off).
velocity.x = -velocity.x;
@@ -181,6 +214,7 @@
// If the right player scores.
else if (GameMode::isMaster() && position.x < -this->fieldWidth_ / 2 * (1 + this->relMercyOffset_))
{
+ defScoreSound_->play();//play score sound
if (this->getGametype() && this->bat_[1])
{
this->getGametype()->playerScored(this->bat_[1]->getPlayer());
@@ -261,4 +295,55 @@
if (this->batID_[1] != OBJECTID_UNKNOWN)
this->bat_[1] = orxonox_cast<PongBat*>(Synchronisable::getSynchronisable(this->batID_[1]));
}
+
+ void PongBall::setDefScoreSound(const std::string &pongSound)
+ {
+ if( defScoreSound_ )
+ defScoreSound_->setSource(pongSound);
+ else
+ assert(0); // This should never happen, because soundpointer is only available on master
+ }
+
+ const std::string& PongBall::getDefScoreSound()
+ {
+ if( defScoreSound_ )
+ return defScoreSound_->getSource();
+ else
+ assert(0);
+ return BLANKSTRING;
+ }
+
+ void PongBall::setDefBatSound(const std::string &pongSound)
+ {
+ if( defBatSound_ )
+ defBatSound_->setSource(pongSound);
+ else
+ assert(0); // This should never happen, because soundpointer is only available on master
+ }
+
+ const std::string& PongBall::getDefBatSound()
+ {
+ if( defBatSound_ )
+ return defBatSound_->getSource();
+ else
+ assert(0);
+ return BLANKSTRING;
+ }
+
+ void PongBall::setDefBoundarySound(const std::string &pongSound)
+ {
+ if( defBoundarySound_ )
+ defBoundarySound_->setSource(pongSound);
+ else
+ assert(0); // This should never happen, because soundpointer is only available on master
+ }
+
+ const std::string& PongBall::getDefBoundarySound()
+ {
+ if( defBoundarySound_ )
+ return defBoundarySound_->getSource();
+ else
+ assert(0);
+ return BLANKSTRING;
+ }
}
Modified: code/trunk/src/modules/pong/PongBall.h
===================================================================
--- code/trunk/src/modules/pong/PongBall.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/pong/PongBall.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -41,6 +41,7 @@
#include "worldentities/MovableEntity.h"
+
namespace orxonox
{
@@ -63,6 +64,8 @@
virtual void tick(float dt);
+ virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
+
/**
@brief Set the dimensions of the playing field.
@param width The width of the playing field.
@@ -122,6 +125,13 @@
static const float MAX_REL_Z_VELOCITY;
+ void setDefScoreSound(const std::string& engineSound);
+ const std::string& getDefScoreSound();
+ void setDefBatSound(const std::string& engineSound);
+ const std::string& getDefBatSound();
+ void setDefBoundarySound(const std::string& engineSound);
+ const std::string& getDefBoundarySound();
+
private:
void registerVariables();
@@ -134,6 +144,9 @@
bool bDeleteBats_; //!< Bool, to keep track, of whether this->bat_ exists or not.
unsigned int* batID_; //!< The object IDs of the bats, to be able to synchronize them over the network.
float relMercyOffset_; //!< Offset, that makes the player not loose, when, in all fairness, he would have.
+ WorldSound* defScoreSound_;
+ WorldSound* defBatSound_;
+ WorldSound* defBoundarySound_;
};
}
Modified: code/trunk/src/modules/pong/PongScore.cc
===================================================================
--- code/trunk/src/modules/pong/PongScore.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/pong/PongScore.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -40,6 +40,7 @@
#include "infos/PlayerInfo.h"
#include "Pong.h"
+#include "sound/WorldSound.h" /////////////////////////////
namespace orxonox
{
Modified: code/trunk/src/modules/pong/PongScore.h
===================================================================
--- code/trunk/src/modules/pong/PongScore.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/pong/PongScore.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -123,6 +123,8 @@
bool bShowRightPlayer_; //!< Whether the right player is shown.
WeakPtr<PlayerInfo> player1_; //!< Store information about left player permanently.
WeakPtr<PlayerInfo> player2_; //!< Same for the right player. To end the game properly.
+ WorldSound* scoreSound_;
+
};
}
#endif /* _PongScore_H__ */
Modified: code/trunk/src/modules/weapons/weaponmodes/HsW01.h
===================================================================
--- code/trunk/src/modules/weapons/weaponmodes/HsW01.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/modules/weapons/weaponmodes/HsW01.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -58,7 +58,7 @@
virtual void fire();
virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode);
- private:
+ protected:
/**
@brief Set the mesh.
@param mesh The mesh name.
@@ -108,7 +108,7 @@
float getDelay() const
{ return this->delay_; }
- void shot();
+ virtual void shot();
void muzzleflash();
std::string material_; //!< The material.
Modified: code/trunk/src/orxonox/MoodManager.h
===================================================================
--- code/trunk/src/orxonox/MoodManager.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/MoodManager.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -50,7 +50,7 @@
virtual ~MoodListener() {}
private:
- virtual void moodChanged(const std::string& mood) = 0;
+ virtual bool moodChanged(const std::string& mood) = 0;
static void changedMood(const std::string& mood);
};
Modified: code/trunk/src/orxonox/controllers/NewHumanController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/NewHumanController.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/controllers/NewHumanController.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -442,7 +442,7 @@
}
if (pawn)
- pawn->setAimPosition( mouseRay.getOrigin() + mouseRay.getDirection() * 1200 );
+ pawn->setAimPosition( mouseRay.getOrigin() + mouseRay.getDirection() * 3000 );
if( this->getControllableEntity() && this->getControllableEntity()->getTarget() != 0 )
this->getControllableEntity()->setTarget( 0 );
Modified: code/trunk/src/orxonox/gamestates/GSMainMenu.cc
===================================================================
--- code/trunk/src/orxonox/gamestates/GSMainMenu.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/gamestates/GSMainMenu.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -84,7 +84,7 @@
GSMainMenu::~GSMainMenu()
{
if (GameMode::playsSound())
- this->ambient_->destroy();
+ this->ambient_->destroy(); //CHECK Thilo destroy ?preDestroy()? !!!!!!!
InputManager::getInstance().destroyState("MainMenuHackery");
Modified: code/trunk/src/orxonox/gametypes/Gametype.cc
===================================================================
--- code/trunk/src/orxonox/gametypes/Gametype.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/gametypes/Gametype.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -170,7 +170,6 @@
entity->setPosition(oldentity->getWorldPosition());
entity->setOrientation(oldentity->getWorldOrientation());
}
-
it->first->startControl(entity);
}
else
Modified: code/trunk/src/orxonox/graphics/ParticleEmitter.cc
===================================================================
--- code/trunk/src/orxonox/graphics/ParticleEmitter.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/graphics/ParticleEmitter.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -44,7 +44,7 @@
{
RegisterClass(ParticleEmitter);
- ParticleEmitter::ParticleEmitter(Context* context) : StaticEntity(context)
+ ParticleEmitter::ParticleEmitter(Context* context) : MovableEntity(context)
{
RegisterObject(ParticleEmitter);
Modified: code/trunk/src/orxonox/graphics/ParticleEmitter.h
===================================================================
--- code/trunk/src/orxonox/graphics/ParticleEmitter.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/graphics/ParticleEmitter.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -32,11 +32,11 @@
#include "OrxonoxPrereqs.h"
#include <string>
-#include "worldentities/StaticEntity.h"
+#include "worldentities/MovableEntity.h"
namespace orxonox
{
- class _OrxonoxExport ParticleEmitter : public StaticEntity
+ class _OrxonoxExport ParticleEmitter : public MovableEntity
{
public:
ParticleEmitter(Context* context);
Modified: code/trunk/src/orxonox/infos/PlayerInfo.cc
===================================================================
--- code/trunk/src/orxonox/infos/PlayerInfo.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/infos/PlayerInfo.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -228,7 +228,13 @@
if (!entity)
return;
- this->controllableEntity_->getController()->setActive(false);
+ Controller* tmp =this->controllableEntity_->getController();
+ if (tmp == NULL)
+ {
+ orxout(verbose) << "PlayerInfo: pauseControl, Controller is NULL " << endl;
+ return;
+ }
+ tmp->setActive(false);
//this->controllableEntity_->getController()->setControllableEntity(NULL);
this->controllableEntity_->setController(0);
}
Modified: code/trunk/src/orxonox/interfaces/RadarViewable.h
===================================================================
--- code/trunk/src/orxonox/interfaces/RadarViewable.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/interfaces/RadarViewable.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -62,6 +62,12 @@
virtual void setRadarName(const std::string& name)
{
+ // The following if-clause hides objects with radarname "HIDDEN"
+ if (name == "HIDDEN")
+ {
+ this->bVisibility_ = 0;
+ this->settingsChanged();
+ }
if (this->radarName_ != name)
{
this->radarName_ = name;
Modified: code/trunk/src/orxonox/items/MultiStateEngine.cc
===================================================================
--- code/trunk/src/orxonox/items/MultiStateEngine.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/items/MultiStateEngine.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -60,6 +60,8 @@
this->defEngineSndBoost_ = new WorldSound(this->getContext());
this->defEngineSndNormal_->setLooping(true);
this->defEngineSndBoost_->setLooping(true);
+ this->defEngineSndNormal_->setVolume(0.8f);
+ this->defEngineSndBoost_->setVolume(0.5f);
this->lua_ = new LuaState();
}
else
Modified: code/trunk/src/orxonox/sound/AmbientSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/AmbientSound.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/sound/AmbientSound.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -78,13 +78,13 @@
return SoundManager::getInstance().getRealVolume(SoundType::Music);
}
- void AmbientSound::setAmbientSource(const std::string& source)
+ bool AmbientSound::setAmbientSource(const std::string& source)
{
this->ambientSource_ = source;
- this->moodChanged(MoodManager::getInstance().getMood());
+ return(this->moodChanged(MoodManager::getInstance().getMood()));
}
- void AmbientSound::moodChanged(const std::string& mood)
+ bool AmbientSound::moodChanged(const std::string& mood)
{
if (GameMode::playsSound())
{
@@ -94,12 +94,19 @@
{
orxout(user_info) << "Loading ambient sound " << path << "..." << endl; // TODO: make this output internal if we implement sound streaming
this->setSource(path);
+
+ // all went fine
+ return true;
}
else
{
orxout(internal_warning, context::sound) << this->ambientSource_ << ": Not a valid name! Ambient sound will not change." << endl;
+
+ // everything went southways
+ return false;
}
}
+ return false;
}
void AmbientSound::setPlayOnLoad(bool val)
Modified: code/trunk/src/orxonox/sound/AmbientSound.h
===================================================================
--- code/trunk/src/orxonox/sound/AmbientSound.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/sound/AmbientSound.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -53,7 +53,7 @@
bool stop();
void pause();
- void setAmbientSource(const std::string& source);
+ bool setAmbientSource(const std::string& source);
inline const std::string& getAmbientSource() const
{ return this->ambientSource_; }
@@ -67,7 +67,7 @@
private:
void preDestroy();
float getRealVolume();
- void moodChanged(const std::string& mood);
+ bool moodChanged(const std::string& mood);
inline void ambientSourceChanged()
{ this->setAmbientSource(this->ambientSource_); }
inline void playOnLoadChanged()
Modified: code/trunk/src/orxonox/sound/BaseSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/BaseSound.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/sound/BaseSound.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -46,7 +46,7 @@
BaseSound::BaseSound()
: bPooling_(false)
- , volume_(1.0)
+ , volume_(0.7)
, bLooping_(false)
, state_(Stopped)
, pitch_ (1.0)
Modified: code/trunk/src/orxonox/sound/SoundManager.cc
===================================================================
--- code/trunk/src/orxonox/sound/SoundManager.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/sound/SoundManager.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -217,7 +217,7 @@
SetConfigValueAlias(volume_[SoundType::All], "soundVolume_", 1.0f)
.description("Defines the overall volume.")
.callback(this, &SoundManager::checkSoundVolumeValidity);
- SetConfigValueAlias(volume_[SoundType::Music], "ambientVolume_", 1.0f)
+ SetConfigValueAlias(volume_[SoundType::Music], "ambientVolume_", 0.7f)
.description("Defines the ambient volume.")
.callback(this, &SoundManager::checkAmbientVolumeValidity);
SetConfigValueAlias(volume_[SoundType::Effects], "effectsVolume_", 1.0f)
Modified: code/trunk/src/orxonox/sound/WorldAmbientSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/WorldAmbientSound.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/sound/WorldAmbientSound.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -32,9 +32,14 @@
#include "core/EventIncludes.h"
#include "core/XMLPort.h"
#include "AmbientSound.h"
+#include "core/command/ConsoleCommand.h"
+#include <exception>
+
namespace orxonox
{
+ SetConsoleCommand("WorldAmbientSound", "nextsong", &WorldAmbientSound::nextSong);
+
RegisterClass(WorldAmbientSound);
WorldAmbientSound::WorldAmbientSound(Context* context) : BaseObject(context), Synchronisable(context)
@@ -43,13 +48,23 @@
this->ambientSound_ = new AmbientSound();
this->registerVariables();
+ soundList_.push_back("Earth.ogg");
+ soundList_.push_back("Jupiter.ogg");
+ soundList_.push_back("Mars.ogg");
+ soundList_.push_back("allgorythm-lift_up.ogg");
+ soundList_.push_back("allgorythm-resonance_blaster.ogg");
+ soundList_.push_back("AlphaCentauri.ogg");
+ soundList_.push_back("Asteroid_rocks.ogg");
+ soundList_.push_back("Ganymede.ogg");
+ soundList_.push_back("luke_grey_-_hypermode.ogg");
+
}
-
WorldAmbientSound::~WorldAmbientSound()
{
if (this->isInitialized())
{
this->ambientSound_->destroy();
+ WorldAmbientSound::soundList_.clear();
}
}
@@ -93,4 +108,18 @@
else
this->ambientSound_->stop();
}
+
+ void WorldAmbientSound::nextSong()
+ {
+
+ //HACK: Assuption - there is only one WorldAmbientSound in a level and only one level is used.
+ for (ObjectList<WorldAmbientSound>::iterator it = ObjectList<WorldAmbientSound>::begin();
+ it != ObjectList<WorldAmbientSound>::end(); ++it)
+ {
+ while(it->ambientSound_->setAmbientSource(WorldAmbientSound::soundList_[WorldAmbientSound::soundNumber_]) == false){
+ WorldAmbientSound::soundNumber_ = (WorldAmbientSound::soundNumber_ + 1) % WorldAmbientSound::soundList_.size();
+ }
+ WorldAmbientSound::soundNumber_ = (WorldAmbientSound::soundNumber_ + 1) % WorldAmbientSound::soundList_.size();
+ }
+ }
}
Modified: code/trunk/src/orxonox/sound/WorldAmbientSound.h
===================================================================
--- code/trunk/src/orxonox/sound/WorldAmbientSound.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/sound/WorldAmbientSound.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -33,7 +33,10 @@
#include "core/BaseObject.h"
#include "network/synchronisable/Synchronisable.h"
+#include <string>
+#include <vector>
+
namespace orxonox
{
/**
@@ -53,11 +56,31 @@
void play();
+ //This function changes the current ambient song.
+ //You can call nextSong() active in the level
+ //by pressing the key 'M'.
+ static void nextSong();
+
private:
void registerVariables();
+ //Vector with the diffrent available level sounds.
+ //The sound names are pushed in the WorldAmbientSound-constructor.
+ static std::vector<std::string> soundList_;
+
+ // This value will be initialized below, don't make this into
+ // a const, since we want to change it in nextSong().
+ static int soundNumber_;
+
+
AmbientSound* ambientSound_;
};
+
+ // This is an initialization for the soundnumber variable. Since it is
+ // static, we have to initialize it this way.
+ int WorldAmbientSound::soundNumber_ = 0;
+ std::vector<std::string> WorldAmbientSound::soundList_;
+
}
#endif /* _WorldAmbientSound_H__ */
Modified: code/trunk/src/orxonox/sound/WorldSound.cc
===================================================================
--- code/trunk/src/orxonox/sound/WorldSound.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/sound/WorldSound.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -80,7 +80,7 @@
float refDist = this->getScene()->getSoundReferenceDistance();
alSourcef(this->audioSource_, AL_REFERENCE_DISTANCE, refDist);
// TODO: 500 is very magical here. Derive something better
- alSourcef(this->audioSource_, AL_MAX_DISTANCE, refDist * 500);
+ alSourcef(this->audioSource_, AL_MAX_DISTANCE, refDist * 20);
}
this->tick(0); // update position, orientation and velocity
}
Modified: code/trunk/src/orxonox/weaponsystem/WeaponMode.cc
===================================================================
--- code/trunk/src/orxonox/weaponsystem/WeaponMode.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/weaponsystem/WeaponMode.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -78,6 +78,7 @@
{
this->defSndWpnFire_ = new WorldSound(this->getContext());
this->defSndWpnFire_->setLooping(false);
+ this->defSndWpnFire_->setVolume(0.8f);
this->bSoundAttached_ = false;
}
else
Modified: code/trunk/src/orxonox/worldentities/BigExplosion.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/BigExplosion.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/worldentities/BigExplosion.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -42,7 +42,7 @@
{
RegisterClass(BigExplosion);
- BigExplosion::BigExplosion(Context* context) : StaticEntity(context)
+ BigExplosion::BigExplosion(Context* context) : MobileEntity(context)
{
RegisterObject(BigExplosion);
@@ -77,6 +77,42 @@
this->registerVariables();
}
+ BigExplosion::BigExplosion(Context* context, Vector3 initVelocity) : MobileEntity(context)
+ {
+ RegisterObject(BigExplosion);
+ this->setVelocity(initVelocity);
+
+ if ( GameMode::showsGraphics() && ( !this->getScene() || !this->getScene()->getSceneManager() ) )
+ ThrowException(AbortLoading, "Can't create BigExplosion, no scene or no scene manager given.");
+
+ this->bStop_ = false;
+ this->LOD_ = LODParticle::Normal;
+
+ if ( GameMode::showsGraphics() )
+ {
+ try
+ {
+ this->init();
+ }
+ catch (const std::exception& ex)
+ {
+ orxout(internal_error) << "Couldn't load particle effect in BigExplosion: " << ex.what() << endl;
+ this->initZero();
+ }
+ }
+ else
+ {
+ this->initZero();
+ }
+
+ if (GameMode::isMaster())
+ {
+ this->destroyTimer_.setTimer(rnd(2, 4), false, createExecutor(createFunctor(&BigExplosion::stop, this)));
+ }
+
+ this->registerVariables();
+ }
+
void BigExplosion::init()
{
this->debrisEntity1_ = new MovableEntity(this->getContext());
@@ -99,7 +135,7 @@
this->debris3_->setSyncMode(0);
this->debris4_->setSyncMode(0);
- this->explosion_ = new StaticEntity(this->getContext());
+ this->explosion_ = new MobileEntity(this->getContext());
this->explosion_->setSyncMode(0);
this->debrisSmoke1_ = new ParticleInterface(this->getScene()->getSceneManager(), "Orxonox/smoke7", this->LOD_);
@@ -147,13 +183,19 @@
this->debrisEntity3_->attach(debris3_);
this->debrisEntity4_->attach(debris4_);
+ // ///////////////////////
+ // TODO: particleSpawner is a static entity. It should probably be dynamic, for better explosions.
+ //
ParticleSpawner* effect = new ParticleSpawner(this->getContext());
+ orxout() << "vel " << this->getVelocity() << endl;
+ // effect->setVelocity(this->getVelocity());
effect->setDestroyAfterLife(true);
effect->setSource("Orxonox/explosion2b");
effect->setLifetime(4.0f);
effect->setSyncMode(0);
ParticleSpawner* effect2 = new ParticleSpawner(this->getContext());
+ // effect2->setVelocity(Vector3(rnd(-1, 1), rnd(-1, 1), rnd(-1, 1))*rnd(10, 200));
effect2->setDestroyAfterLife(true);
effect2->setSource("Orxonox/smoke6");
effect2->setLifetime(4.0f);
Modified: code/trunk/src/orxonox/worldentities/BigExplosion.h
===================================================================
--- code/trunk/src/orxonox/worldentities/BigExplosion.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/worldentities/BigExplosion.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -21,7 +21,7 @@
*
* Author:
* Benjamin de Capitani
- * Co-authors:
+ * Co-authors:ยง
* ...
*
*/
@@ -32,14 +32,15 @@
#include "OrxonoxPrereqs.h"
#include "tools/Timer.h"
-#include "StaticEntity.h"
+#include "MobileEntity.h"
namespace orxonox
{
- class _OrxonoxExport BigExplosion : public StaticEntity
+ class _OrxonoxExport BigExplosion : public MobileEntity
{
public:
BigExplosion(Context* context);
+ BigExplosion(Context* context, Vector3 initVelocity);
virtual ~BigExplosion();
inline void setLOD(LODParticle::Value level)
@@ -59,7 +60,7 @@
bool bStop_;
- StaticEntity* explosion_;
+ MobileEntity* explosion_;
MovableEntity* debrisEntity1_;
MovableEntity* debrisEntity2_;
Modified: code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.cc 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.cc 2013-12-21 22:16:54 UTC (rev 9939)
@@ -45,6 +45,7 @@
#include "weaponsystem/WeaponSlot.h"
#include "weaponsystem/WeaponPack.h"
#include "weaponsystem/WeaponSet.h"
+#include "sound/WorldSound.h"
#include "controllers/FormationController.h"
@@ -99,6 +100,16 @@
this->isHumanShip_ = this->hasLocalController();
this->setSyncMode(ObjectDirection::Bidirectional); // needed to synchronise e.g. aimposition
+
+ if (GameMode::isMaster())
+ {
+ this->explosionSound_ = new WorldSound(this->getContext());
+ this->explosionSound_->setVolume(1.0f);
+ }
+ else
+ {
+ this->explosionSound_ = 0;
+ }
}
Pawn::~Pawn()
@@ -108,6 +119,7 @@
if (this->weaponSystem_)
this->weaponSystem_->destroy();
}
+
}
void Pawn::XMLPort(Element& xmlelement, XMLPort::Mode mode)
@@ -134,9 +146,12 @@
XMLPortParam(Pawn, "reloadrate", setReloadRate, getReloadRate, xmlelement, mode).defaultValues(0);
XMLPortParam(Pawn, "reloadwaittime", setReloadWaitTime, getReloadWaitTime, xmlelement, mode).defaultValues(1.0f);
+ XMLPortParam(Pawn, "explosionSound", setExplosionSound, getExplosionSound, xmlelement, mode);
+
XMLPortParam ( RadarViewable, "radarname", setRadarName, getRadarName, xmlelement, mode );
}
+
void Pawn::registerVariables()
{
registerVariable(this->bAlive_, VariableDirection::ToClient);
@@ -289,7 +304,7 @@
void Pawn::kill()
{
- this->damage(this->health_);
+ this->damage(this->health_);
this->death();
}
@@ -313,7 +328,8 @@
this->setHealth(1);
if (this->getGametype() && this->getGametype()->allowPawnDeath(this, this->lastHitOriginator_))
{
- // Set bAlive_ to false and wait for PawnManager to do the destruction
+ explosionSound_->play();
+ // Set bAlive_ to false and wait for PawnManager to do the destruction
this->bAlive_ = false;
this->setDestroyWhenPlayerLeft(false);
@@ -364,8 +380,10 @@
this->bAlive_ = false;
this->setDestroyWhenPlayerLeft(false);
- BigExplosion* chunk = new BigExplosion(this->getContext());
+ orxout() << "big explosion: " << this->getVelocity() << endl;
+ BigExplosion* chunk = new BigExplosion(this->getContext(), this->getVelocity());
chunk->setPosition(this->getPosition());
+ // chunk->setVelocity(this->getVelocity());
}
void Pawn::deatheffect()
@@ -375,6 +393,7 @@
ParticleSpawner* effect = new ParticleSpawner(this->getContext());
effect->setPosition(this->getPosition());
effect->setOrientation(this->getOrientation());
+ effect->setVelocity(this->getVelocity());
effect->setDestroyAfterLife(true);
effect->setSource("Orxonox/explosion2b");
effect->setLifetime(4.0f);
@@ -383,6 +402,7 @@
ParticleSpawner* effect = new ParticleSpawner(this->getContext());
effect->setPosition(this->getPosition());
effect->setOrientation(this->getOrientation());
+ effect->setVelocity(this->getVelocity());
effect->setDestroyAfterLife(true);
effect->setSource("Orxonox/smoke6");
effect->setLifetime(4.0f);
@@ -391,6 +411,7 @@
ParticleSpawner* effect = new ParticleSpawner(this->getContext());
effect->setPosition(this->getPosition());
effect->setOrientation(this->getOrientation());
+ effect->setVelocity(this->getVelocity());
effect->setDestroyAfterLife(true);
effect->setSource("Orxonox/sparks");
effect->setLifetime(4.0f);
@@ -526,5 +547,22 @@
}
+ void Pawn::setExplosionSound(const std::string &explosionSound)
+ {
+ if(explosionSound_ )
+ explosionSound_->setSource(explosionSound);
+ else
+ assert(0); // This should never happen, because soundpointer is only available on master
+ }
+ const std::string& Pawn::getExplosionSound()
+ {
+ if( explosionSound_ )
+ return explosionSound_->getSource();
+ else
+ assert(0);
+ return BLANKSTRING;
+ }
+
+
}
Modified: code/trunk/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.h 2013-12-20 10:08:13 UTC (rev 9938)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.h 2013-12-21 22:16:54 UTC (rev 9939)
@@ -36,6 +36,7 @@
#include "interfaces/RadarViewable.h"
#include "worldentities/ControllableEntity.h"
+
namespace orxonox // tolua_export
{ // tolua_export
class _OrxonoxExport Pawn // tolua_export
@@ -177,6 +178,9 @@
virtual void changedVisibility();
+ void setExplosionSound(const std::string& engineSound);
+ const std::string& getExplosionSound();
+
protected:
virtual void preDestroy();
@@ -230,6 +234,9 @@
{ this->weaponSystem_ = weaponsystem; }
Vector3 aimPosition_;
+
+ WorldSound* explosionSound_;
+
}; // tolua_export
} // tolua_export
More information about the Orxonox-commit
mailing list