Changeset 9857
- Timestamp:
- Dec 2, 2013, 4:05:10 PM (11 years ago)
- Location:
- code/branches/spacestationentry
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/spacestationentry/data/levels/dockingToASpaceStation.oxw
r9820 r9857 71 71 </StaticEntity> 72 72 73 <!-- Docking (Andocken)-->73 <!-- Docking --> 74 74 <Dock position="2830,20,50" roll=0 yaw=0 > 75 75 <animations> … … 83 83 <EventListener event="dockMe" /> 84 84 </execute> 85 86 <undocking> 87 <EventListener event="undockMe" /> 88 </undocking> 85 89 86 90 <activity> … … 93 97 beaconMode="exclude" targetname="bcnDestroyer" name="dockMe" 94 98 /> 99 100 <Billboard position="-2730,-19970,50" material="Flares/ringflare2" colour="0.2,0.4,0.8" scale=1 /> 101 <DistanceTrigger position="-2730,-19970,50" distance="50" target="Pawn" 102 beaconMode="identify" targetname="bcnDestroyer" name="undockMe" 103 /> 95 104 </attached> 96 105 97 106 </Dock> 98 99 100 101 102 107 103 <!--SpaceShip 104 template = "spaceshipcollateraldamage" 105 team = "0" 106 position = "2890,-40,6" 107 orientation = "-0.14, 0.68, 0.68, 0.223" 108 lookat = "0,0,0" 109 roll = "180" 110 name = "collateralDamage" 111 radarname = "Collateral Damage" > 112 <attached> 113 <DockingTarget name="spaceShip" /> 114 <DistanceTriggerBeacon name="bcnDestroyer" /> 115 <DockingTarget name="destroyer" /> 116 </attached> 117 </SpaceShip--> 118 119 <FpsPlayer template = "fps" radarname = "First Person Player" position = "0,-1900,0" > 108 <FpsPlayer template = "fps" radarname = "First Person Player" position = "0,-19900,0" > 120 109 <attached> 121 110 <DockingTarget name="spaceShip" /> … … 127 116 <!-- Wuerfel --> 128 117 129 <StaticEntity position="0,-2000 ,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01 >118 <StaticEntity position="0,-20000,0" direction="0,-1,0" collisionType=static mass=100000 friction=0.01 > 130 119 <attached> 131 <Model position="0,0,0" mesh="crate.mesh" scale3D="66,15,5" /> 132 120 <Model position="0,0,0" mesh="crate.mesh" scale3D="80,80,5" /> 133 121 </attached> 134 122 <collisionShapes> 135 <BoxCollisionShape position="0,0,0" halfExtents=" 330,330,10" />123 <BoxCollisionShape position="0,0,0" halfExtents="400,400,25" /> 136 124 </collisionShapes> 137 125 </StaticEntity> … … 139 127 <!-- Schwerkraftfeld --> 140 128 141 <ForceField position="2500,-92000,2500" mode="sphere" diameter="184000" velocity="-5000" /> 142 <ForceField position="2500,-92000,-2500" mode="sphere" diameter="184000" velocity="-5000" /> 143 <ForceField position="-2500,-92000,2500" mode="sphere" diameter="184000" velocity="-5000" /> 144 <ForceField position="-2500,-92000,-2500" mode="sphere" diameter="184000" velocity="-5000" /> 145 146 <!-- Ausgang - Trigger --> 147 148 <Billboard position="150,-1950,150" material="Flares/ringflare2" colour="0.2,0.4,0.8" scale=1 /> 149 150 <DistanceTrigger name="ausgang" position="100,-1950,100" target="Pawn" distance=50 stayActive="false" delay=0 /> 151 <Script code="undock" onLoad="false"> 152 <events> 153 <trigger> 154 <EventListener event=ausgang /> 155 </trigger> 156 </events> 157 </Script> 158 129 <ForceField position="0,-20000,0" mode="homogen" diameter="2000" forcedirection = "0,-400,0" /> 159 130 160 131 <!-- Rest --> -
code/branches/spacestationentry/src/modules/docking/Dock.cc
r9820 r9857 69 69 XMLPortObject(Dock, DockingAnimation, "animations", addAnimation, getAnimation, xmlelement, mode); 70 70 XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode); 71 //XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);71 XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode); 72 72 73 73 } … … 79 79 XMLPortEventSink(Dock, BaseObject, "execute", execute, xmlelement, mode); 80 80 81 //XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode);82 } 83 84 /* 81 XMLPortEventSink(Dock, BaseObject, "undocking", undocking, xmlelement, mode); 82 } 83 84 85 85 bool Dock::undocking(bool bTriggered, BaseObject* trigger) 86 86 { 87 orxout(user_warning)<<"undocking"<<endl; 88 89 return true; 90 } 91 92 */ 87 // Noch lange nicht fertig (leich veraenderte Kopie von execute()) 88 PlayerTrigger* pTrigger = orxonox_cast<PlayerTrigger*>(trigger); 89 PlayerInfo* player = NULL; 90 91 // Check whether it is a player trigger and extract pawn from it 92 if(pTrigger != NULL) 93 { 94 if(!pTrigger->isForPlayer()) { // The PlayerTrigger is not exclusively for Pawns which means we cannot extract one. 95 orxout(verbose, context::docking) << "Docking:execute PlayerTrigger was not triggered by a player.." << endl; 96 return false; 97 } 98 player = pTrigger->getTriggeringPlayer(); 99 } 100 else 101 { 102 orxout(verbose, context::docking) << "Docking::execute Not a player trigger, can't extract pawn from it.." << endl; 103 return false; 104 } 105 if(player == NULL) 106 { 107 orxout(verbose, context::docking) << "Docking::execute Can't retrieve PlayerInfo from Trigger. (" << trigger->getIdentifier()->getName() << ")" << endl; 108 return false; 109 } 110 111 if(bTriggered) 112 { 113 cmdUndock(); 114 } 115 else 116 { 117 // Remove player from candidates list 118 candidates_.erase(player); 119 } 120 121 return true; 122 } 123 124 93 125 94 126 bool Dock::execute(bool bTriggered, BaseObject* trigger) -
code/branches/spacestationentry/src/modules/docking/Dock.h
r9820 r9857 62 62 // Trigger interface 63 63 bool execute(bool bTriggered, BaseObject* trigger); 64 //bool undocking(bool bTriggered, BaseObject* trigger);64 bool undocking(bool bTriggered, BaseObject* trigger); 65 65 66 66 // XML interface -
code/branches/spacestationentry/src/modules/objects/ForceField.cc
r9667 r9857 45 45 /*static*/ const std::string ForceField::modeSphere_s = "sphere"; 46 46 /*static*/ const std::string ForceField::modeInvertedSphere_s = "invertedSphere"; 47 48 /*static*/ const std::string ForceField::modeHomogen_s = "homogen"; 49 47 50 /*static*/ const std::string ForceField::modeNewtonianGravity_s = "newtonianGravity"; 48 51 /*static*/ const float ForceField::gravConstant_ = 6.673e-11; 49 52 /*static*/ const float ForceField::attenFactor_ = 1; 53 50 54 51 55 /** … … 89 93 XMLPortParam(ForceField, "length", setLength , getLength , xmlelement, mode).defaultValues(2000); 90 94 XMLPortParam(ForceField, "mode", setMode, getMode, xmlelement, mode); 95 XMLPortParam(ForceField, "forcedirection", setForceDirection, getForceDirection, xmlelement, mode).defaultValues(Vector3(0,-400,0)); 91 96 } 92 97 … … 196 201 } 197 202 } 203 else if(this->mode_ == forceFieldMode::homogen) 204 { 205 // Iterate over all objects that could possibly be affected by the ForceField. 206 for (ObjectList<MobileEntity>::iterator it = ObjectList<MobileEntity>::begin(); it != ObjectList<MobileEntity>::end(); ++it) 207 { 208 Vector3 distanceVector = it->getWorldPosition() - this->getWorldPosition(); 209 float distance = distanceVector.length(); 210 if (distance < this->radius_ && distance > this->massRadius_) 211 { 212 // Add a Acceleration in forceDirection_. 213 // Vector3(0,0,0) is the direction, where the force should work. 214 it->addAcceleration(forceDirection_ , Vector3(0,0,0)); 215 } 216 } 217 } 198 218 } 199 219 … … 214 234 else if(mode == ForceField::modeNewtonianGravity_s) 215 235 this->mode_ = forceFieldMode::newtonianGravity; 236 237 else if(mode == ForceField::modeHomogen_s) 238 this->mode_ = forceFieldMode::homogen; 239 216 240 else 217 241 { … … 239 263 case forceFieldMode::newtonianGravity: 240 264 return ForceField::modeNewtonianGravity_s; 265 266 case forceFieldMode::homogen: 267 return ForceField::modeHomogen_s; 268 241 269 default: 242 270 return ForceField::modeTube_s; -
code/branches/spacestationentry/src/modules/objects/ForceField.h
r9667 r9857 1 1 2 /* 2 3 * ORXONOX - the hottest 3D action shooter ever to exist … … 57 58 sphere, //!< The ForceField has a spherical shape. 58 59 invertedSphere, //!< The ForceField has a spherical shape but "inverted" behavior. 59 newtonianGravity //!< The ForceField imitates Newtonian gravitation for use in stellar bodies. 60 newtonianGravity, //!< The ForceField imitates Newtonian gravitation for use in stellar bodies. 61 homogen //!< Local homogenous Force field with changeable direction for the Space Station 60 62 }; 61 63 } … … 66 68 67 69 The following parameters can be set to specify the behavior of the ForceField. 70 - @b forcedirection The direction and the strength of the homogenous force field. Default is 0,-400,0. 68 71 - @b velocity The amount of force the ForceField excerts. Default is 100. 69 72 - @b diameter The diameter of the ForceField. Default is 500. … … 147 150 { return this->halfLength_*2; } 148 151 152 inline void setForceDirection(Vector3 forcedir) 153 { this->forceDirection_ = forcedir; } 154 155 inline Vector3 getForceDirection() 156 { return this->forceDirection_; } 157 158 149 159 void setMode(const std::string& mode); //!< Set the mode of the ForceField. 150 160 const std::string& getMode(void); //!< Get the mode of the ForceField. … … 156 166 static const std::string modeInvertedSphere_s; 157 167 static const std::string modeNewtonianGravity_s; 168 169 static const std::string modeHomogen_s; 158 170 159 171 float velocity_; //!< The velocity of the ForceField. … … 167 179 //! Attenuation factor for Newtonian ForceFields 168 180 static const float attenFactor_; 181 Vector3 forceDirection_; 169 182 }; 170 183 }
Note: See TracChangeset
for help on using the changeset viewer.