[Orxonox-commit 6218] r10875 - in code/branches/campaignHS15: data/levels src/orxonox/controllers

gania at orxonox.net gania at orxonox.net
Fri Nov 27 13:41:27 CET 2015


Author: gania
Date: 2015-11-27 13:41:26 +0100 (Fri, 27 Nov 2015)
New Revision: 10875

Modified:
   code/branches/campaignHS15/data/levels/AITest.oxw
   code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc
   code/branches/campaignHS15/src/orxonox/controllers/CommonController.cc
   code/branches/campaignHS15/src/orxonox/controllers/CommonController.h
   code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc
   code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc
   code/branches/campaignHS15/src/orxonox/controllers/FlyingController.h
   code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc
   code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc
Log:
fixed library dependencies

Modified: code/branches/campaignHS15/data/levels/AITest.oxw
===================================================================
--- code/branches/campaignHS15/data/levels/AITest.oxw	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/data/levels/AITest.oxw	2015-11-27 12:41:26 UTC (rev 10875)
@@ -61,7 +61,7 @@
 
 <!-- HERE STARTS DEMO FOR THE ACTIONPOINTS. 
 P.S. Never set protectMe in the first actionpoint: if human didn't spawn, that actionpoint will be skipped -->
-       <!-- 
+       
     <Model mesh="cube.mesh" scale=8 position="0,0,0" />
 
     <SpaceShip position="-2000, 1500, -1000" lookat="0,0,0" team=0 name="ss2">
@@ -123,7 +123,7 @@
       </templates>
     </SpaceShip> 
  
-    -->
+   
 <!-- HERE ENDS DEMO FOR THE ACTIONPOINTS -->
 <!-- HERE STARTS DEMO FOR FIGHTING -->
     <!-- 
@@ -209,7 +209,7 @@
      -->
 <!-- HERE ENDS DEMO FOR FIGHTING -->
 <!-- HERE STARTS DEMO FOR FORMATIONS -->
-    
+    <!-- 
     <Model mesh="cube.mesh" scale=8 position="   0,2000,    0" />
     <Model mesh="cube.mesh" scale=8 position="   0,2000,-2000" />
     <Model mesh="cube.mesh" scale=8 position="2000,2000,-2000" />
@@ -258,7 +258,7 @@
         </WingmanController>
       </controller>
     </SpaceShip> 
-   
+    -->
 <!-- HERE ENDS DEMO FOR FORMATIONS -->
     
     

Modified: code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc	2015-11-27 12:41:26 UTC (rev 10875)
@@ -29,8 +29,8 @@
 #include "ActionpointController.h"
 
 #include "core/XMLPort.h"
+#include <algorithm>
 
-#include "controllers/NewHumanController.h"
 
 namespace orxonox
 {
@@ -294,7 +294,7 @@
                 {
                     for (ObjectList<Pawn>::iterator itP = ObjectList<Pawn>::begin(); itP; ++itP)
                     {
-                        if (orxonox_cast<ControllableEntity*>(*itP) && ((*itP)->getController()) && orxonox_cast <NewHumanController*> ((*itP)->getController()))
+                        if (orxonox_cast<ControllableEntity*>(*itP) && ((*itP)->getController()) && ((*itP)->getController()->getIdentifier()->getName() == "NewHumanController"))
                         {
                             this->setProtect (static_cast<ControllableEntity*>(*itP));
                         }

Modified: code/branches/campaignHS15/src/orxonox/controllers/CommonController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/CommonController.cc	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/src/orxonox/controllers/CommonController.cc	2015-11-27 12:41:26 UTC (rev 10875)
@@ -37,6 +37,7 @@
 #include "controllers/WaypointPatrolController.h"
 #include "controllers/NewHumanController.h"
 #include "controllers/DroneController.h"
+#include "util/Math.h"
 
 namespace orxonox
 {

Modified: code/branches/campaignHS15/src/orxonox/controllers/CommonController.h
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/CommonController.h	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/src/orxonox/controllers/CommonController.h	2015-11-27 12:41:26 UTC (rev 10875)
@@ -33,14 +33,11 @@
 #include "controllers/Controller.h"
 #include "worldentities/ControllableEntity.h"
 #include "worldentities/pawns/Pawn.h"
-#include "util/Math.h"
 
 #include "tools/Timer.h"
 #include "tools/interfaces/Tickable.h"
 #include <limits>
-#include <algorithm>
 #include "worldentities/Actionpoint.h"
-#include "worldentities/pawns/SpaceShip.h"
 
 namespace orxonox
 {

Modified: code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc	2015-11-27 12:41:26 UTC (rev 10875)
@@ -27,7 +27,7 @@
  */
 #include "controllers/FightingController.h"
 #include "core/XMLPort.h"
-#include <limits>								//for finding closest target
+#include "util/Math.h"
 
 
 namespace orxonox

Modified: code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/src/orxonox/controllers/FlyingController.cc	2015-11-27 12:41:26 UTC (rev 10875)
@@ -28,6 +28,7 @@
 #include "controllers/FlyingController.h"
 #include "core/XMLPort.h"
 #include "worldentities/pawns/SpaceShip.h"
+#include "util/Math.h"
 
 namespace orxonox
 {    
@@ -127,13 +128,15 @@
     }
     void FlyingController::copyOrientation( const Quaternion& orient, float dt )
     {
-        //roll angle difference in radian
-        float diff=orient.getRoll(false).valueRadians() -
+
+        double diff=orient.getRoll(false).valueRadians() -
                         ( this->getControllableEntity() ->getOrientation() .getRoll( false ).valueRadians() );
-        while( diff>math::twoPi )diff-=math::twoPi;
+        while( diff>math::twoPi)diff-=math::twoPi;
         while( diff<-math::twoPi )diff+=math::twoPi;
-        this->getControllableEntity() ->rotateRoll( diff*0.2f*ROTATEFACTOR * dt );
+
+        this->getControllableEntity() ->rotateRoll(diff * ROTATEFACTOR * dt);
     }
+    //change log: increased precision, increased rotation speed
     void FlyingController::copyTargetOrientation( float dt )
     {
         if ( bHasTargetOrientation_ )

Modified: code/branches/campaignHS15/src/orxonox/controllers/FlyingController.h
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/FlyingController.h	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/src/orxonox/controllers/FlyingController.h	2015-11-27 12:41:26 UTC (rev 10875)
@@ -35,7 +35,7 @@
 namespace orxonox
 {   
     const float SPEED = 0.9f/0.02f;
-    const float ROTATEFACTOR = 1.0f/0.02f;
+    const float ROTATEFACTOR = 0.6f/0.02f;
     namespace FormationMode
     {
         enum Value

Modified: code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc	2015-11-27 12:41:26 UTC (rev 10875)
@@ -77,8 +77,40 @@
     {
         if (!this->isActive())
             return;
-      
-        
+
+    //this doesn't fight in formation flight, thus we can afford executing following code in tick: when nobody fights, tick is anyway stable.
+        if (this->myDivisionLeader_ && this->myDivisionLeader_->getAction() != Action::FIGHT && this->myDivisionLeader_->getAction() !=
+            Action::FIGHTALL && this->myDivisionLeader_->getAction() != Action::ATTACK)
+        {
+            ControllableEntity* myEntity = this->getControllableEntity();
+            Vector3 myPosition = myEntity->getWorldPosition();
+            if (!this->myDivisionLeader_)
+            {
+                return;
+            }
+            ControllableEntity* leaderEntity = this->myDivisionLeader_->getControllableEntity();
+            Quaternion orient = leaderEntity->getWorldOrientation();
+            Vector3 leaderPosition = leaderEntity->getWorldPosition();
+
+            Vector3 targetRelativePosition = getFormationPosition();
+            if (!this->myDivisionLeader_)
+            {
+                return;
+            }
+            Vector3 targetAbsolutePosition = 
+                (leaderPosition + (orient*WorldEntity::FRONT) * (leaderEntity->getVelocity().length()/5)
+                 + (orient* (targetRelativePosition)));
+       
+            this->setAction (Action::FLY, targetAbsolutePosition, orient);
+            if ((targetAbsolutePosition - myPosition).length() > this->tolerance_ * 1.5f)
+            {
+                this->boostControl();
+            }
+            else
+            {
+               this->getControllableEntity()->boost(false);
+            }
+        }    
         SUPER(SectionController, tick, dt);
     }
 
@@ -142,34 +174,7 @@
                 }
                 default:
                 {
-                    ControllableEntity* myEntity = this->getControllableEntity();
-                    Vector3 myPosition = myEntity->getWorldPosition();
-                    if (!this->myDivisionLeader_)
-                    {
-                        return;
-                    }
-                    ControllableEntity* leaderEntity = this->myDivisionLeader_->getControllableEntity();
-                    Quaternion orient = leaderEntity->getWorldOrientation();
-                    Vector3 leaderPosition = leaderEntity->getWorldPosition();
-
-                    Vector3 targetRelativePosition = getFormationPosition();
-                    if (!this->myDivisionLeader_)
-                    {
-                        return;
-                    }
-                    Vector3 targetAbsolutePosition = 
-                        (leaderPosition + (orient*WorldEntity::FRONT) * (leaderEntity->getVelocity().length()/5)
-                         + (orient* (targetRelativePosition)));
-               
-                    this->setAction (Action::FLY, targetAbsolutePosition, orient);
-                    if ((targetAbsolutePosition - myPosition).length() > this->tolerance_ * 1.5f)
-                    {
-                        this->boostControl();
-                    }
-                    else
-                    {
-                       this->getControllableEntity()->boost(false);
-                    }
+                    //formation flight is executed in tick
                 }
             }
             if (this->hasTarget())

Modified: code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc
===================================================================
--- code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc	2015-11-27 08:51:59 UTC (rev 10874)
+++ code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc	2015-11-27 12:41:26 UTC (rev 10875)
@@ -67,8 +67,39 @@
     {   
         if (!this->isActive())
             return;
+        if (this->myLeader_ && this->myLeader_->getAction() != Action::FIGHT && this->myLeader_->getAction() !=
+            Action::FIGHTALL && this->myLeader_->getAction() != Action::ATTACK)
+        {
+            ControllableEntity* myEntity = this->getControllableEntity();
+            Vector3 myPosition = myEntity->getWorldPosition();
+            if (!this->myLeader_)
+            {
+                return;
+            }
+            ControllableEntity* leaderEntity = this->myLeader_->getControllableEntity();
+            Quaternion orient = leaderEntity->getWorldOrientation();
+            Vector3 leaderPosition = leaderEntity->getWorldPosition();
+
+            Vector3 targetRelativePosition = getFormationPosition();
+            if (!this->myLeader_)
+            {
+                return;
+            }
+            Vector3 targetAbsolutePosition = 
+                (leaderPosition + (orient*WorldEntity::FRONT) * (leaderEntity->getVelocity().length()/5)
+                 + (orient* (targetRelativePosition)));
+       
+            this->setAction (Action::FLY, targetAbsolutePosition, orient);
+            if ((targetAbsolutePosition - myPosition).length() > this->tolerance_ * 1.5f)
+            {
+                this->boostControl();
+            }
+            else
+            {
+               this->getControllableEntity()->boost(false);
+            }
+        }   
         
-        
         SUPER(WingmanController, tick, dt);
     }
     
@@ -122,35 +153,7 @@
                 }
                 default:
                 {
-                    ControllableEntity* myEntity = this->getControllableEntity();
-                    Vector3 myPosition = myEntity->getWorldPosition();
-                    if (!this->myLeader_)
-                    {
-                        return;
-                    }
                     
-                    ControllableEntity* leaderEntity = this->myLeader_->getControllableEntity();
-                    Quaternion orient = leaderEntity->getWorldOrientation();
-                    Vector3 leaderPosition = leaderEntity->getWorldPosition();
-
-                    Vector3 targetRelativePosition = getFormationPosition();
-                    if (!this->myLeader_)
-                    {
-                        return;
-                    }
-                    Vector3 targetAbsolutePosition = 
-                        (leaderPosition + (orient*WorldEntity::FRONT) * (leaderEntity->getVelocity().length()/5)
-                         + (orient* (targetRelativePosition)));
-               
-                    this->setAction (Action::FLY, targetAbsolutePosition, orient);
-                    if ((targetAbsolutePosition - myPosition).length() > this->tolerance_ * 1.5f)
-                    {
-                        this->boostControl();
-                    }
-                    else
-                    {
-                       this->getControllableEntity()->boost(false);
-                    }
                 }
             }
             if (this->hasTarget())




More information about the Orxonox-commit mailing list