Changeset 8382 for code/branches/dockingsystem2
- Timestamp:
- May 2, 2011, 4:16:27 PM (14 years ago)
- Location:
- code/branches/dockingsystem2
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/dockingsystem2/data/levels/docking.oxw
r8257 r8382 17 17 > 18 18 <templates> 19 <Template link= lodtemplate_default/>19 <Template link="lodtemplate_default" /> 20 20 </templates> 21 21 … … 25 25 > 26 26 27 <Light type= directionalposition="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" />27 <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" /> 28 28 29 29 <?lua for i = 1, 10, 1 do ?> 30 <SpawnPoint position="<?lua print(math.random() * 500 - 250) ?>,<?lua print(math.random() * 500 - 250) ?>,<?lua print(math.random() * 500 - 250) ?>" lookat="0,0,0" spawnclass= SpaceShip pawndesign=spaceshipassff/>30 <SpawnPoint position="<?lua print(math.random() * 500 - 250) ?>,<?lua print(math.random() * 500 - 250) ?>,<?lua print(math.random() * 500 - 250) ?>" lookat="0,0,0" spawnclass="SpaceShip" pawndesign="spaceshipassff" /> 31 31 <?lua end ?> 32 32 33 33 <Dock position="-50,-100,50"> 34 34 <effects> 35 <DockToShip target=" asdf" />35 <DockToShip target="theDestroyer" /> 36 36 </effects> 37 37 <events> … … 41 41 </events> 42 42 <attached> 43 <DistanceTrigger position="0,0,0" distance="20" target="Pawn" beaconMode="exclude" targetname=" beacon1" name="dockMe" />43 <DistanceTrigger position="0,0,0" distance="20" target="Pawn" beaconMode="exclude" targetname="destroyerBeacon" name="dockMe" /> 44 44 <Billboard material="Examples/Flare" colour="1.0, 0, 0" /> 45 45 </attached> … … 47 47 48 48 49 50 49 51 <SpaceShip 50 hudtemplate = spaceshiphud51 camerapositiontemplate = spaceshipassffcameras52 engine = spaceshipassffengine52 hudtemplate = "spaceshiphud" 53 camerapositiontemplate = "spaceshipassffcameras" 54 engine = "spaceshipassffengine" 53 55 spawnparticlesource = "Orxonox/fairytwirl" 54 spawnparticleduration = 355 explosionchunks = 656 57 health = 10058 maxhealth = 20059 initialhealth = 10060 61 primaryThrust = 100;62 auxilaryThrust = 30;63 rotationThrust = 25;56 spawnparticleduration = "3" 57 explosionchunks = "6" 58 59 health = "100" 60 maxhealth = "200" 61 initialhealth = "100" 62 63 primaryThrust = "100;" 64 auxilaryThrust = "30;" 65 rotationThrust = "25;" 64 66 65 67 collisionType = "dynamic" 66 mass = 10067 linearDamping = 0.768 angularDamping = 0.999999968 mass = "100" 69 linearDamping = "0.7" 70 angularDamping = "0.9999999" 69 71 > 70 72 <attached> … … 72 74 <DockingTarget name="asdf" /> 73 75 74 <Model position="0,0,0" yaw= 90 pitch=-90 roll=0 scale=4mesh="assff.mesh" />75 <BlinkingBillboard position="17,-1.5,0" material="Examples/Flare" colour="1.0, 0.5, 0.3" amplitude= 0.1 frequency=0.5 quadratic=1/>76 <BlinkingBillboard position="-17,-1.5,0" material="Examples/Flare" colour="0.5, 1.0, 0.3" amplitude= 0.1 frequency=0.5 phase=180 quadratic=1/>77 <DistanceTriggerBeacon name="PlayerDistanceTrigger" /> <!--added DistanceTrigger-->76 <Model position="0,0,0" yaw="90" pitch="-90" roll="0" scale="4" mesh="assff.mesh" /> 77 <BlinkingBillboard position="17,-1.5,0" material="Examples/Flare" colour="1.0, 0.5, 0.3" amplitude="0.1" frequency="0.5" quadratic="1" /> 78 <BlinkingBillboard position="-17,-1.5,0" material="Examples/Flare" colour="0.5, 1.0, 0.3" amplitude="0.1" frequency="0.5" phase="180" quadratic="1" /> 79 <DistanceTriggerBeacon name="PlayerDistanceTrigger" /> 78 80 </attached> 79 81 <collisionShapes> … … 90 92 </SpaceShip> 91 93 92 93 <!-- <Destroyer 94 95 96 97 <Destroyer 94 98 position = "100,150,0" 95 collisionType = dynamic96 mass = 10000099 collisionType = "dynamic" 100 mass = "100000" 97 101 velocity = "0,0,0" 98 angularDamping = 0.999999999 health = 10000100 maxhealth = 10000101 initialhealth = 10000102 angularDamping = "0.9999999" 103 health = "10000" 104 maxhealth = "10000" 105 initialhealth = "10000" 102 106 > 103 107 104 108 <attached> 105 106 <DistanceTriggerBeacon name=" beacon1" />107 <DockingTarget name=" asdf" />108 109 110 <TeamSpawnPoint team= 1 position="150,0,7" direction="-1,0,0" roll=90 yaw=0 spawnclass=SpaceShip pawndesign=spaceshipassff/>111 <TeamSpawnPoint team= 1 position="0,0,7" lookat="-1,0,0" roll="90" yaw=0 spawnclass=SpaceShip pawndesign=spaceshipassff/>112 <TeamSpawnPoint team= 1 position="-50,0,7" lookat="-1,0,0" roll="90" yaw=0 spawnclass=SpaceShip pawndesign=spaceshipassff/>113 <TeamSpawnPoint team= 1 position="100,0,7" lookat="-1,0,0" roll="90" yaw=0 spawnclass=SpaceShip pawndesign=spaceshipassff/>114 <TeamSpawnPoint team= 1 position="50,0,7" lookat="-1,0,0" roll="90" yaw=0 spawnclass=SpaceShip pawndesign=spaceshipassff/>109 110 <DistanceTriggerBeacon name="destroyerBeacon" /> 111 <DockingTarget name="theDestroyer" /> 112 113 114 <TeamSpawnPoint team="1" position="150,0,7" direction="-1,0,0" roll="90" yaw="0" spawnclass="SpaceShip" pawndesign="spaceshipassff" /> 115 <TeamSpawnPoint team="1" position="0,0,7" lookat="-1,0,0" roll="90" yaw="0" spawnclass="SpaceShip" pawndesign="spaceshipassff" /> 116 <TeamSpawnPoint team="1" position="-50,0,7" lookat="-1,0,0" roll="90" yaw="0" spawnclass="SpaceShip" pawndesign="spaceshipassff" /> 117 <TeamSpawnPoint team="1" position="100,0,7" lookat="-1,0,0" roll="90" yaw="0" spawnclass="SpaceShip" pawndesign="spaceshipassff" /> 118 <TeamSpawnPoint team="1" position="50,0,7" lookat="-1,0,0" roll="90" yaw="0" spawnclass="SpaceShip" pawndesign="spaceshipassff" /> 115 119 <?lua for i = 1, 100, 1 do ?> 116 120 <TeamSpawnPoint 117 team= 0121 team="0" 118 122 position="<?lua print((math.random() * 500 + 500) * (math.floor(math.random() + 0.5) * 2 - 1)) ?>,<?lua print((math.random() * 500 + 500) * (math.floor(math.random() + 0.5) * 2 - 1)) ?>,<?lua print((math.random() * 500 + 500) * (math.floor(math.random() + 0.5) * 2 - 1)) ?>" 119 123 lookat="0,0,0" 120 spawnclass= SpaceShip121 pawndesign= spaceshipassff124 spawnclass="SpaceShip" 125 pawndesign="spaceshipassff" 122 126 /> 123 127 <?lua end ?> … … 125 129 <Model mesh="Carrier.mesh" scale="5" /> 126 130 <Backlight 127 mainstate= activity128 active= false129 scale= 0.4130 name= bltest131 mainstate="activity" 132 active="false" 133 scale="0.4" 134 name="bltest" 131 135 position=" 7.6, 0, 6" 132 136 colour="0.2, 0.65, 1.0, 1.0" 133 width= 15134 length= 1500135 lifetime= 2136 elements= 50137 width="15" 138 length="1500" 139 lifetime="2" 140 elements="50" 137 141 trailmaterial="Trail/backlighttrail" 138 turnontime= 1139 turnofftime= 1142 turnontime="1" 143 turnofftime="1" 140 144 material="Flares/ThrusterFlare1" 141 145 /> 146 <Backlight 147 scale="1" 148 position=" 169, 75, -15" 149 colour="1, 0.85, 0.5, 0.5" 150 width="40" 151 length="1000" 152 lifetime="5" 153 elements="15" 154 trailmaterial="Trail/backlighttrail" 155 material="Examples/Flare" 156 /> 157 <Backlight 158 scale="1" 159 position=" 169, -75, -15" 160 colour="1, 0.85, 0.5, 0.5" 161 width="40" 162 length="1000" 163 lifetime="5" 164 elements="15" 165 trailmaterial="Trail/backlighttrail" 166 material="Examples/Flare" 167 /> 142 168 <?lua for i=0,8,1 do ?> 143 169 <BlinkingBillboard … … 146 172 colour="1.0, 0.5, 0.3" 147 173 phase="<?lua print(-360/8*i)?>" 148 amplitude= 0.1149 frequency= 0.5150 quadratic= 1174 amplitude="0.1" 175 frequency="0.5" 176 quadratic="1" 151 177 /> 152 178 … … 156 182 colour="1.0, 0.5, 0.3" 157 183 phase="<?lua print(-360/8*i)?>" 158 amplitude= 0.1159 frequency= 0.5160 quadratic= 1184 amplitude="0.1" 185 frequency="0.5" 186 quadratic="1" 161 187 /> 162 188 <?lua end ?> 163 189 164 <Backlight165 scale=1166 position=" 169, 75, -15"167 colour="1, 0.85, 0.5, 0.5"168 width=40169 length=1000170 lifetime=5171 elements=15172 trailmaterial="Trail/backlighttrail"173 material="Examples/Flare"174 />175 <Backlight176 scale=1177 position=" 169, -75, -15"178 colour="1, 0.85, 0.5, 0.5"179 width=40180 length=1000181 lifetime=5182 elements=15183 trailmaterial="Trail/backlighttrail"184 material="Examples/Flare" />185 190 </attached> 186 191 <collisionShapes> … … 193 198 <BoxCollisionShape position="167,0,70" halfExtents="17, 20, 20" /> 194 199 </collisionShapes> 200 195 201 </Destroyer> 196 //-->197 202 198 203 </Scene> -
code/branches/dockingsystem2/src/modules/docking/Dock.cc
r8257 r8382 33 33 34 34 #include "Dock.h" 35 35 36 #include "infos/HumanPlayer.h" 36 37 #include "worldentities/pawns/Pawn.h" 37 38 #include "interfaces/PlayerTrigger.h" 39 #include "controllers/HumanController.h" 40 #include "core/command/ConsoleCommand.h" 41 38 42 39 43 … … 41 45 { 42 46 CreateFactory(Dock); 47 48 SetConsoleCommand("Dock", "dock", &Dock::cmdDock).addShortcut().setAsInputCommand(); 49 SetConsoleCommand("Dock", "undock", &Dock::cmdUndock).addShortcut().setAsInputCommand(); 43 50 44 51 Dock::Dock(BaseObject* creator) : StaticEntity(creator) … … 80 87 { 81 88 if(!pTrigger->isForPlayer()) { // The PlayerTrigger is not exclusively for Pawns which means we cannot extract one. 82 COUT( 0) << "Docking:execute PlayerTrigger was not triggered by a player.." << std::endl;89 COUT(2) << "Docking:execute PlayerTrigger was not triggered by a player.." << std::endl; 83 90 return false; 84 91 } 85 92 pawn = pTrigger->getTriggeringPlayer(); 86 93 } else { 87 COUT( 0) << "Docking::execute Not a player trigger, can't extract pawn from it.." << std::endl;94 COUT(2) << "Docking::execute Not a player trigger, can't extract pawn from it.." << std::endl; 88 95 return false; 89 96 } 90 97 if(pawn == NULL) 91 98 { 92 COUT( 0) << "Docking::execute Can't retrieve Pawn from Trigger. (" << trigger->getIdentifier()->getName() << ")" << std::endl;99 COUT(2) << "Docking::execute Can't retrieve Pawn from Trigger. (" << trigger->getIdentifier()->getName() << ")" << std::endl; 93 100 return false; 94 101 } … … 98 105 if(player == NULL) 99 106 { 100 COUT( 0) << "The PlayerInfo* is NULL." << std::endl;107 COUT(2) << "The PlayerInfo* is NULL." << std::endl; 101 108 return false; 102 109 } … … 105 112 106 113 if(bTriggered) { 107 DockingEffect::invokeEffect(docking::DOCKING, player, effects_); 108 DockingEffect::invokeEffect(docking::ATTACH, player, effects_); 114 // Add player to this Docks candidates 115 candidates.insert(player); 116 117 //DockingEffect::invokeEffect(docking::DOCKING, player, effects_); 109 118 } else { 110 DockingEffect::invokeEffect(docking::RELEASE, player, effects_); 119 // Remove player from candidates list 120 candidates.erase(player); 121 122 //DockingEffect::invokeEffect(docking::RELEASE, player, effects_); 111 123 } 112 124 … … 115 127 116 128 129 void Dock::cmdDock() { 130 PlayerInfo* player = HumanController::getLocalControllerSingleton()->getPlayer(); 131 for(ObjectList<Dock>::iterator it = ObjectList<Dock>::begin(); it != ObjectList<Dock>::end(); ++it) { 132 if(it->dock(player)) 133 break; 134 } 135 } 136 137 void Dock::cmdUndock() { 138 PlayerInfo* player = HumanController::getLocalControllerSingleton()->getPlayer(); 139 for(ObjectList<Dock>::iterator it = ObjectList<Dock>::begin(); it != ObjectList<Dock>::end(); ++it) { 140 if(it->undock(player)) 141 break; 142 } 143 } 144 145 146 bool Dock::dock(PlayerInfo* player) { 147 // Check if player is a candidate 148 if(candidates.find(player) == candidates.end()) { 149 COUT(0) << "Player is not a candidate!"; 150 return false; 151 } 152 153 // Remove player from candidates, add to docked players and invoke docking effect 154 candidates.erase(player); 155 docked.insert(player); 156 DockingEffect::invokeEffect(docking::ATTACH, player, effects); 157 return true; 158 } 159 160 bool Dock::undock(PlayerInfo* player) { 161 // Check if player is docked to this Dock 162 if(docked.find(player) == docked.end()) { 163 COUT(0) << "Player is not docked to this Dock." << std::endl; 164 return false; 165 } 166 167 // Remove player from docked, add to candidates and reverse DockingEffect 168 docked.erase(player); 169 candidates.insert(player); 170 DockingEffect::invokeEffect(docking::RELEASE, player, effects); 171 return true; 172 } 173 174 117 175 bool Dock::addEffect(DockingEffect* effect) { 118 176 assert(effect); 119 effects _.push_back(effect);177 effects.push_back(effect); 120 178 return true; 121 179 } … … 123 181 const DockingEffect* Dock::getEffect(unsigned int index) const { 124 182 int i = index; 125 for (std::list<DockingEffect*>::const_iterator effect = this->effects_.begin(); effect != this->effects_.end(); ++effect) 126 { 183 for (std::list<DockingEffect*>::const_iterator effect = this->effects.begin(); effect != this->effects.end(); ++effect) { 127 184 if(i == 0) 128 185 return *effect; 129 130 186 i--; 131 187 } -
code/branches/dockingsystem2/src/modules/docking/Dock.h
r8196 r8382 36 36 #define _Dock_H__ 37 37 38 #include <map> 39 38 40 #include "core/CoreIncludes.h" 39 41 #include "core/XMLPort.h" … … 41 43 42 44 #include "worldentities/StaticEntity.h" 45 #include "notifications/NotificationManager.h" 46 43 47 #include "DockingEffect.h" 44 48 #include "DockingPrereqs.h" 45 49 46 namespace orxonox { 47 50 namespace orxonox { 48 51 49 52 class _DockingExport Dock : public StaticEntity { … … 60 63 const DockingEffect* getEffect(unsigned int index) const; //!< Get the DockingEffect at a given index. 61 64 65 bool dock(PlayerInfo* player); //!< Returns true if given player docked successfully (player must be a candidate) 66 bool undock(PlayerInfo* player); //!< Undocks a player (player must be docked) 67 68 static void cmdDock(); 69 static void cmdUndock(); 70 62 71 private: 63 std::list<DockingEffect*> effects_; //!< The list of DockingEffects to be executed when a player docks. 72 std::set<PlayerInfo*> candidates; //!< A set of all players which are allowed to dock using the console command. 73 std::set<PlayerInfo*> docked; //!< A set of all docked players 74 std::list<DockingEffect*> effects; //!< The list of DockingEffects to be executed when a player docks. 64 75 }; 65 76 -
code/branches/dockingsystem2/src/modules/docking/DockToShip.cc
r8257 r8382 89 89 } 90 90 91 // Make sure target isn't removed when undocking 92 dockTo->setDestroyWhenPlayerLeft(false); 91 93 player->startTemporaryControl(dockTo); 92 94 … … 97 99 { 98 100 COUT(0) << "DockToShip::release" << endl; 101 102 player->stopTemporaryControl(); 103 99 104 return true; 100 105 } -
code/branches/dockingsystem2/src/orxonox/infos/PlayerInfo.cc
r8289 r8382 223 223 this->controllableEntity_->setController(0); 224 224 225 this->controllableEntity_ = this->previousControllableEntity_.back();225 // this->controllableEntity_ = this->previousControllableEntity_.back(); 226 226 do { 227 227 this->controllableEntity_ = this->previousControllableEntity_.back();
Note: See TracChangeset
for help on using the changeset viewer.