[Orxonox-commit 4956] r9625 - in code/trunk: . data/levels src/orxonox/controllers src/orxonox/worldentities/pawns
smerkli at orxonox.net
smerkli at orxonox.net
Tue May 21 15:12:21 CEST 2013
Author: smerkli
Date: 2013-05-21 15:12:21 +0200 (Tue, 21 May 2013)
New Revision: 9625
Added:
code/trunk/data/levels/maxim.oxw
Modified:
code/trunk/
code/trunk/src/orxonox/controllers/Controller.h
code/trunk/src/orxonox/controllers/FormationController.cc
code/trunk/src/orxonox/controllers/FormationController.h
code/trunk/src/orxonox/controllers/HumanController.cc
code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
code/trunk/src/orxonox/worldentities/pawns/Pawn.h
Log:
Merged Maxim's Branch back 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:9594
/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/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/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:9594
/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/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
Copied: code/trunk/data/levels/maxim.oxw (from rev 9624, code/branches/formationupdate/data/levels/maxim.oxw)
===================================================================
--- code/trunk/data/levels/maxim.oxw (rev 0)
+++ code/trunk/data/levels/maxim.oxw 2013-05-21 13:12:21 UTC (rev 9625)
@@ -0,0 +1,126 @@
+<LevelInfo
+ name = "Maxim's Test"
+ description = "Intelligent Formation"
+ tags = "test"
+/>
+
+<?lua
+ include("stats.oxo")
+ include("HUDTemplates3.oxo")
+ include("templates/lodInformation.oxt")
+?>
+
+<?lua
+ include("templates/spaceshipAssff.oxt")
+ include("templates/spaceshipPirate.oxt")
+ include("templates/spaceshipSwallow.oxt")
+ include("templates/spaceshipTransporter.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.8, 0.8, 0.8"
+ skybox = "Orxonox/skyBoxMoreNebula"
+ >
+
+ <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="800,700,600" direction="-1,0,0" spawnclass=SpaceShip pawndesign=spaceshipswallow/>
+
+ <!-- TRIGGERS -->
+ <DistanceTrigger name="FormationInit" position="800,700,600" target="Pawn" distance=60 stayActive="true" delay=0.1 />
+ <DistanceTrigger name="LetsGo" position="200,-200,1000" target="Pawn" distance=180 stayActive="true" delay=0.1 />
+ <BlinkingBillboard colour="1,1,0.05" position="200,-200,1000" frequency=0.6 amplitude=3 material="Flares/lensflare" />
+ <DistanceTrigger name="Fight" position="-600,3000,-2000" target="Pawn" distance=180 stayActive="true" delay=0.1 />
+ <BlinkingBillboard colour="0,0,1" position="-600,3000,-2000" frequency=0.6 amplitude=3 material="Flares/lensflare" />
+
+
+
+ <Script code="formationcontroller formationflight true" onLoad="false">
+ <events>
+ <trigger>
+ <EventListener event=FormationInit />
+ </trigger>
+ </events>
+ </Script> <!-- !!! activates formation behaviour !!! -->
+
+ <Script code="artificialcontroller setbotlevel 5" onLoad="false">
+ <events>
+ <trigger>
+ <EventListener event=FormationInit />
+ </trigger>
+ </events>
+ </Script>
+
+ <SimpleNotification message="Let's go!">
+ <events>
+ <trigger>
+ <EventListener event="LetsGo" />
+ </trigger>
+ </events>
+ </SimpleNotification>
+
+
+
+
+<!-- ADDING FORMATION: 2 Swallows -->
+<?lua for i=0,1,1 do
+?>
+ <SpaceShip position="<?lua print(400+i*200) ?>,-200,1000" lookat="-1300,-600,900" visible="true">
+ <templates>
+ <Template link=spaceshipswallow /> <!--spaceshipTransporter spaceshippirate-->
+ </templates>
+ <controller>
+ <AIController team=0>
+ <events>
+ <activity>
+ <EventListener event="LetsGo" />
+ </activity>
+ </events>
+ </AIController>
+ </controller>
+ </SpaceShip>
+<?lua end ?>
+
+<?lua for i=0,2,1 do
+?>
+
+
+<!-- ENEMY SWALLOWS -->
+ <SpaceShip position="<?lua print(-400+i*200) ?>,3000,-2000" lookat="-1300,-600,900" visible="true">
+ <templates>
+ <Template link=spaceshipswallow />
+ </templates>
+ <controller>
+ <AIController team=1>
+ <events>
+ <activity>
+ <EventListener event="Fight" />
+ </activity>
+ </events>
+ </AIController>
+ </controller>
+ </SpaceShip>
+<?lua end ?>
+
+ </Scene>
+</Level>
\ No newline at end of file
Modified: code/trunk/src/orxonox/controllers/Controller.h
===================================================================
--- code/trunk/src/orxonox/controllers/Controller.h 2013-05-14 13:42:22 UTC (rev 9624)
+++ code/trunk/src/orxonox/controllers/Controller.h 2013-05-21 13:12:21 UTC (rev 9625)
@@ -64,7 +64,6 @@
{ return this->controllableEntity_; }
virtual void changedControllableEntity() {}
- protected:
// don't use this directly, use getPlayer()->startControl(entity) (unless you know exactly what you do)
inline void setControllableEntity(ControllableEntity* entity)
{
Modified: code/trunk/src/orxonox/controllers/FormationController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/FormationController.cc 2013-05-14 13:42:22 UTC (rev 9624)
+++ code/trunk/src/orxonox/controllers/FormationController.cc 2013-05-21 13:12:21 UTC (rev 9625)
@@ -534,8 +534,38 @@
}
+ // Sets newMaster as the new master within the formation. Called by the master.
+ void FormationController::setNewMasterWithinFormation(FormationController* newMaster)
+ {
+ if(this->state_ != MASTER || newMaster->myMaster_ != this) return;
+
+ if (!this->slaves_.empty())
+ {
+ std::vector<FormationController*>::iterator it2 = std::find(this->slaves_.begin(), this->slaves_.end(), newMaster);
+ if (it2 != this->slaves_.end())
+ {
+ this->slaves_.erase(it2);
+ }
+
+ newMaster->state_ = MASTER;
+ newMaster->slaves_ = this->slaves_;
+ newMaster->myMaster_ = 0;
+
+ for(std::vector<FormationController*>::iterator it = newMaster->slaves_.begin(); it != newMaster->slaves_.end(); it++)
+ {
+ (*it)->myMaster_ = newMaster;
+ }
+ }
+
+ this->slaves_.clear();
+ this->specificMasterAction_ = NONE;
+ this->state_ = FREE;
+ }
+
+
+
/**
- @brief Frees all slaves form a master. Initiated by a master.
+ @brief Frees all slaves from a master. Initiated by a master.
*/
void FormationController::freeSlaves()
{
Modified: code/trunk/src/orxonox/controllers/FormationController.h
===================================================================
--- code/trunk/src/orxonox/controllers/FormationController.h 2013-05-14 13:42:22 UTC (rev 9624)
+++ code/trunk/src/orxonox/controllers/FormationController.h 2013-05-21 13:12:21 UTC (rev 9625)
@@ -58,6 +58,7 @@
static void followme();
static void passivebehaviour(const bool passive);
static void formationsize(const int size);
+ void setNewMasterWithinFormation(FormationController* newMaster);
inline void setFormationFlight(bool formation)
{ this->formationFlight_ = formation; }
@@ -97,6 +98,10 @@
virtual void hit(Pawn* originator, btManifoldPoint& contactpoint, float damage);
+ FormationController* getMaster( void ) { return myMaster_; }
+ FormationController* getController( void ) { return this; }
+ FormationController* getSlave( void ) { return this->slaves_.back(); }
+
protected:
bool formationFlight_;
bool passive_;
@@ -126,15 +131,15 @@
void unregisterSlave();
void searchNewMaster();
void commandSlaves();
+ void takeLeadOfFormation();
+ void loseMasterState();
void setNewMasterWithinFormation();
void freeSlaves();
void forceFreeSlaves();
- void loseMasterState();
void forceFreedom();
bool forcedFree();
- void takeLeadOfFormation();
void masterAttacked(Pawn* originator);
void specificMasterActionHold();
@@ -158,6 +163,7 @@
void setTarget(Pawn* target);
+
void searchNewTarget();
void forgetTarget();
Modified: code/trunk/src/orxonox/controllers/HumanController.cc
===================================================================
--- code/trunk/src/orxonox/controllers/HumanController.cc 2013-05-14 13:42:22 UTC (rev 9624)
+++ code/trunk/src/orxonox/controllers/HumanController.cc 2013-05-21 13:12:21 UTC (rev 9625)
@@ -101,7 +101,7 @@
}
// commandslaves when Master of a formation
- if (HumanController::localController_s && HumanController::localController_s->state_==MASTER)
+ if (HumanController::localController_s && HumanController::localController_s->state_==MASTER && FormationController::slaves_.size() > 0)
{
if (HumanController::localController_s->formationMode_ != ATTACK)
HumanController::localController_s->commandSlaves();
Modified: code/trunk/src/orxonox/worldentities/pawns/Pawn.cc
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.cc 2013-05-14 13:42:22 UTC (rev 9624)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.cc 2013-05-21 13:12:21 UTC (rev 9625)
@@ -46,6 +46,8 @@
#include "weaponsystem/WeaponPack.h"
#include "weaponsystem/WeaponSet.h"
+#include "controllers/FormationController.h"
+
namespace orxonox
{
CreateFactory(Pawn);
@@ -305,6 +307,7 @@
}
}
+
void Pawn::death()
{
this->setHealth(1);
@@ -319,8 +322,36 @@
this->getGametype()->pawnKilled(this, this->lastHitOriginator_);
if (this->getPlayer() && this->getPlayer()->getControllableEntity() == this)
- this->getPlayer()->stopControl();
+ {
+ // Start to control a new entity if you're the master of a formation
+ if(this->hasSlaves())
+ {
+ Controller* slave = this->getSlave();
+ ControllableEntity* entity = slave->getControllableEntity();
+
+ if(!entity->hasHumanController())
+ {
+ // delete the AIController
+ slave->setControllableEntity(0);
+
+ // set a new master within the formation
+ orxonox_cast<FormationController*>(this->getController())->setNewMasterWithinFormation(orxonox_cast<FormationController*>(slave));
+
+ // start to control a slave
+ this->getPlayer()->startControl(entity);
+ }
+ else
+ {
+ this->getPlayer()->stopControl();
+ }
+
+ }
+ else
+ {
+ this->getPlayer()->stopControl();
+ }
+ }
if (GameMode::isMaster())
{
// this->deathEffect();
@@ -467,4 +498,33 @@
this->RadarViewable::settingsChanged();
}
+
+ // A function to check if this pawn's controller is the master of any formationcontroller
+ bool Pawn::hasSlaves()
+ {
+ for (ObjectList<FormationController>::iterator it =
+ ObjectList<FormationController>::begin();
+ it != ObjectList<FormationController>::end(); ++it )
+ {
+ // checks if the pawn's controller has a slave
+ if (this->hasHumanController() && it->getMaster() == this->getPlayer()->getController())
+ return true;
+ }
+ return false;
+ }
+
+ // A function that returns a slave of the pawn's controller
+ Controller* Pawn::getSlave(){
+ for (ObjectList<FormationController>::iterator it =
+ ObjectList<FormationController>::begin();
+ it != ObjectList<FormationController>::end(); ++it )
+ {
+ if (this->hasHumanController() && it->getMaster() == this->getPlayer()->getController())
+ return it->getController();
+ }
+ return 0;
+ }
+
+
+
}
Modified: code/trunk/src/orxonox/worldentities/pawns/Pawn.h
===================================================================
--- code/trunk/src/orxonox/worldentities/pawns/Pawn.h 2013-05-14 13:42:22 UTC (rev 9624)
+++ code/trunk/src/orxonox/worldentities/pawns/Pawn.h 2013-05-21 13:12:21 UTC (rev 9625)
@@ -184,6 +184,8 @@
virtual void removePlayer();
virtual void death();
+ virtual bool hasSlaves();
+ virtual Controller* getSlave();
virtual void goWithStyle();
virtual void deatheffect();
virtual void spawneffect();
More information about the Orxonox-commit
mailing list