Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 18, 2009, 4:39:56 PM (15 years ago)
Author:
wirthmi
Message:

The weapon is firing where the mouse is pointing. Uncoupling of the mouse with TAB-key.

Location:
code/branches/steering
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • code/branches/steering/data/defaultConfig/keybindings.ini

    r5929 r6091  
    122122KeyStop=
    123123KeySystemRequest=
    124 KeyT=
    125 KeyTab="cycleNavigationFocus"
    126 KeyU=
     124KeyT=""
     125KeyTab="NewHumanController changeMode"
     126KeyU=""
    127127KeyUP="scale 1 moveFrontBack"
    128128KeyUnassigned="openConsole"
  • code/branches/steering/src/orxonox/controllers/NewHumanController.cc

    r6058 r6091  
    4545namespace orxonox
    4646{
     47    SetConsoleCommand(NewHumanController, changeMode,          false).keybindMode(KeybindMode::OnPress);
     48
    4749    CreateUnloadableFactory(NewHumanController);
     50
     51    NewHumanController* NewHumanController::localController_s = 0;
    4852
    4953    NewHumanController::NewHumanController(BaseObject* creator) : HumanController(creator)
     
    6367        this->targetMask_.include(ClassByString("WorldEntity"));
    6468        this->targetMask_.exclude(ClassByString("Projectile"));
     69
     70        NewHumanController::localController_s = this;
    6571    }
    6672
     
    119125        Ogre::RaySceneQuery * rsq = HumanController::localController_s->getControllableEntity()->getScene()->getSceneManager()->createRayQuery(Ogre::Ray());
    120126
    121         //std::cout << "X: " << static_cast<float>(this->currentYaw_)/2*-1+.5 << "  Y: " << static_cast<float>(this->currentPitch_)/2*-1+.5 << endl;
    122 
    123127        Ogre::Ray mouseRay = HumanController::localController_s->getControllableEntity()->getCamera()->getOgreCamera()->getCameraToViewportRay(static_cast<float>(this->currentYaw_)/2*-1+.5, static_cast<float>(this->currentPitch_)/2*-1+.5);
    124128
     
    140144        for (itr = result.begin(); itr != result.end(); ++itr)
    141145        {
    142             //std::cout << "distance: " << itr->distance << "  name: " << itr->movable->getName() << " type: " << itr->movable->getMovableType();
    143146            if (itr->movable->isInScene() && itr->movable->getMovableType() == "Entity" && itr->distance > 500)
    144147            {
     
    151154                        continue;
    152155                }
    153                 //std::cout << "  TAGGED";
     156
    154157                itr->movable->getParentSceneNode()->showBoundingBox(true);
    155                 std::cout << itr->movable->getParentSceneNode()->_getDerivedPosition() << endl;
    156                 return itr->movable->getParentSceneNode()->_getDerivedPosition();
     158                //std::cout << itr->movable->getParentSceneNode()->_getDerivedPosition() << endl;
     159                return mouseRay.getOrigin() + mouseRay.getDirection() * itr->distance; //or itr->movable->getParentSceneNode()->_getDerivedPosition()
    157160            }
    158             //std::cout << endl;
     161
    159162        }
    160163
    161         //if (result.front().movable->isInScene()) std::cout << "in scene" << endl;
    162         // && result.front().movable->getParentSceneNode() != NULL) result.front().movable->getParentSceneNode()->showBoundingBox(true);
    163         //result.front().movable->setVisible(false);
     164        return mouseRay.getOrigin() + mouseRay.getDirection() * 1200;
    164165
    165         //std::cout << endl;
    166 /*
    167         if (!result.empty()) {
    168             Ogre::RaySceneQueryResultEntry obj = result.front();
    169             std::cout << "distance: " << obj.distance << "  name: " << obj.movable->getName() << endl;
    170         }
    171 */
    172         return this->controllableEntity_->getWorldPosition() + (this->controllableEntity_->getWorldOrientation() * Vector3::NEGATIVE_UNIT_Z * 800);
     166        //return this->controllableEntity_->getWorldPosition() + (this->controllableEntity_->getWorldOrientation() * Vector3::NEGATIVE_UNIT_Z * 2000);
    173167        //return this->controllableEntity_->getWorldPosition() + (this->controllableEntity_->getCamera()->getOgreCamera()->getOrientation() * Vector3::NEGATIVE_UNIT_Z);
    174168    }
     
    177171    {
    178172//         SUPER(NewHumanController, yaw, value);
    179         HumanController::yaw(value);
     173        if (this->controlMode_ == 0)
     174            HumanController::yaw(value);
    180175       
    181176        this->currentYaw_ = value.x;
     
    186181    {
    187182//         SUPER(NewHumanController, pitch, value);
    188         HumanController::pitch(value);
    189        
     183        if (this->controlMode_ == 0)
     184            HumanController::pitch(value);
     185
    190186        this->currentPitch_ = value.x;
    191187        //std::cout << "Y: " << static_cast<float>(this->currentPitch_) << " X: " << static_cast<float>(this->currentYaw_) << endl;
    192188    }
     189
     190    void NewHumanController::changeMode() {
     191        if (NewHumanController::localController_s->controlMode_ == 0)
     192            NewHumanController::localController_s->controlMode_ = 1;
     193        else
     194            NewHumanController::localController_s->controlMode_ = 0;
     195    }
    193196}
  • code/branches/steering/src/orxonox/controllers/NewHumanController.h

    r6055 r6091  
    2727 */
    2828
    29 #ifndef _NewNewHumanController_H__
     29#ifndef _NewNewHumanController_H__     
    3030#define _NewNewHumanController_H__
    3131
     
    5050            virtual void doFire(unsigned int firemode);
    5151
    52             void changeMode(unsigned int controleMode);
     52            static void changeMode();
    5353
    5454            virtual bool canFindTarget() { return true; }
    5555            virtual Vector3 getTarget();
    5656
     57        protected:
     58            unsigned int                controlMode_;
     59            static NewHumanController* localController_s;
    5760        private:
    5861            float                       currentYaw_;
     
    6063            OrxonoxOverlay*             crossHairOverlay_;
    6164            float                                   overlaySize_;
    62             unsigned int                controlMode_;
    6365            ClassTreeMask               targetMask_;
    6466    };
Note: See TracChangeset for help on using the changeset viewer.