Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jun 8, 2008, 5:46:52 AM (16 years ago)
Author:
landauf
Message:
  • several small changes in most of the HUD classes (code cleanup): removed obsolete variables, privatized all member variables, removed resizing functioncalls from tick, destroying overlayelements, added some const qualifiers.
  • moved calculation functions for RadarObject-position to Math.h and changed the phi/right/radius format to Vector2. the functions are used too by SpaceShipAI.
  • cycleNavigationFocus takes the nearest object if focus was NULL
  • BarOverlayElement works in both directions (left to right and right to left)
  • fixed bug causing SpaceShipAI to not stop shooting when losing target - this also speeds up orxonox a lot, because there are less projectiles

####################################

!! UPDATE YOUR MEDIA REPOSITORY !!

####################################
…or the BarOverlayElement will look strange

Location:
code/trunk/src/orxonox/objects
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/orxonox/objects/SpaceShip.cc

    r1563 r1564  
    152152
    153153            if (!this->myShip_)
    154                 HUD::getSingleton().removeRadarObject(this->getNode());
     154                HUD::getSingleton().removeRadarObject(this);
    155155        }
    156156    }
     
    161161          myShip_=true;
    162162        else
    163           HUD::getSingleton().addRadarObject(this->getNode(), this->getProjectileColour());
     163          HUD::getSingleton().addRadarObject(this, this->getProjectileColour());
    164164      }
    165165      if(Model::create())
     
    508508          this->mouseXRotation_ = Radian(0);
    509509          this->mouseYRotation_ = Radian(0);
    510           this->bLMousePressed_ = false;
    511510        }/*else
    512511          COUT(4) << "not steering ship: " << objectID << " our ship: " << network::Client::getSingleton()->getShipID() << std::endl;*/
     512
     513          this->bLMousePressed_ = false;
    513514    }
    514515
  • code/trunk/src/orxonox/objects/SpaceShipAI.cc

    r1563 r1564  
    226226            this->moveToTargetPosition(dt);
    227227
    228         if (this->bShooting_ && this->isCloseAtTarget(2500) && this->isLookingAtTarget(Ogre::Math::PI / 10))
     228        if (this->bShooting_ && this->isCloseAtTarget(2500) && this->isLookingAtTarget(Ogre::Math::PI / 20.0))
    229229            this->doFire();
    230230
     
    234234    void SpaceShipAI::moveToTargetPosition(float dt)
    235235    {
    236         Vector3 proj = Ogre::Plane(this->getDir(), this->getPosition()).projectVector(this->targetPosition_ - this->getPosition());
    237         float angle = acos((this->getOrth().dotProduct(proj)) / (this->getOrth().length()*proj.length()));
    238 
    239         if ((this->getDir().crossProduct(this->getOrth())).dotProduct(this->targetPosition_ - this->getPosition()) > 0)
    240             this->setMoveYaw(sgn(sin(angle)));
    241         else
    242             this->setMoveYaw(-sgn(sin(angle)));
    243         this->setMovePitch(sgn(cos(angle)));
     236        Vector2 coord = get2DViewdirection(this->getPosition(), this->getDir(), this->getOrth(), this->targetPosition_);
     237        this->setMoveYaw(0.8 * sgn(coord.x));
     238        this->setMovePitch(0.8 * sgn(coord.y));
    244239
    245240        if ((this->targetPosition_ - this->getPosition()).length() > 300)
    246             this->setMoveLongitudinal(1);
     241            this->setMoveLongitudinal(0.8);
    247242
    248243        if (this->isCloseAtTarget(300) && this->target_)
    249244        {
    250245            if (this->getVelocity().length() > this->target_->getVelocity().length())
    251                 this->setMoveLongitudinal(-1);
     246                this->setMoveLongitudinal(-0.5);
    252247        }
    253248    }
     
    319314    bool SpaceShipAI::isLookingAtTarget(float angle)
    320315    {
    321         Vector3 dist = this->targetPosition_ - this->getPosition();
    322         return (acos((this->getDir().dotProduct(dist)) / (dist.length() * this->getDir().length())) < angle);
     316        return (getAngle(this->getPosition(), this->getDir(), this->targetPosition_) < angle);
    323317    }
    324318
Note: See TracChangeset for help on using the changeset viewer.