[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