Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Jul 19, 2009, 1:13:43 AM (16 years ago)
Author:
rgrieder
Message:

Keybindings should now map to the correct joy stick by device name (like "WingMan Action Pad" or so).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/core4/src/core/input/JoyStick.cc

    r3286 r3306  
    4343    void loadCalibration(std::vector<int>& list, const std::string& sectionName, const std::string& valueName, size_t size, int defaultValue);
    4444
    45     std::vector<std::string> JoyStick::idStrings_s;
     45    std::vector<std::string> JoyStick::deviceNames_s;
    4646
    4747    JoyStick::JoyStick(unsigned int id, OIS::InputManager* oisInputManager)
     
    5353        this->clearBuffersImpl();
    5454
    55         idString_ = "JoyStick_";
    56         std::string name = oisDevice_->vendor();
    57         replaceCharacters(name, ' ', '_');
    58         idString_ += name + "_";
    59         idString_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_Button))  + "_";
    60         idString_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_Axis))    + "_";
    61         idString_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_Slider))  + "_";
    62         idString_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_POV));
    63         //idString_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_Vector3));
    64 
    65 
    66         BOOST_FOREACH(std::string& idString, idStrings_s)
    67         {
    68             if (idString_ == idString)
     55        // Generate unique name
     56        if (oisDevice_->vendor().empty())
     57            deviceName_ = "Unknown_";
     58        else
     59        {
     60            std::string name = oisDevice_->vendor();
     61            replaceCharacters(name, ' ', '_');
     62            deviceName_ = name + "_";
     63        }
     64        deviceName_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_Button))  + "_";
     65        deviceName_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_Axis))    + "_";
     66        deviceName_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_Slider))  + "_";
     67        deviceName_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_POV));
     68        //deviceName_ += multi_cast<std::string>(oisDevice_->getNumberOfComponents(OIS::OIS_Vector3));
     69
     70        BOOST_FOREACH(std::string& idString, deviceNames_s)
     71        {
     72            if (deviceName_ == idString)
    6973            {
    7074                // Make the ID unique for this execution time.
    71                 idString_ += "_" + multi_cast<std::string>(this->getDeviceID());
     75                deviceName_ += "_" + multi_cast<std::string>(this->getDeviceName());
    7276                break;
    7377            }
    7478        }
    7579
    76         COUT(4) << "Created OIS joy stick with ID " << idString_ << std::endl;
     80        COUT(4) << "Created OIS joy stick with ID " << deviceName_ << std::endl;
    7781
    7882        // Load calibration
    7983        size_t axes = sliderAxes_s + static_cast<size_t>(oisDevice_->getNumberOfComponents(OIS::OIS_Axis));
    80         loadCalibration(configMinValues_,  idString_, "MinValue",  axes,  -32768);
    81         loadCalibration(configMaxValues_,  idString_, "MaxValue",  axes,   32768);
    82         loadCalibration(configZeroValues_, idString_, "ZeroValue", axes, 0);
     84        loadCalibration(configMinValues_,  deviceName_, "MinValue",  axes,  -32768);
     85        loadCalibration(configMaxValues_,  deviceName_, "MaxValue",  axes,   32768);
     86        loadCalibration(configZeroValues_, deviceName_, "ZeroValue", axes, 0);
    8387        this->evaluateCalibration();
    8488    }
     
    148152                configMinValues_[i] = -32768;
    149153            ConfigFileManager::getInstance().setValue(ConfigFileType::JoyStickCalibration,
    150                 idString_, "MinValue", i, multi_cast<std::string>(configMinValues_[i]), false);
     154                deviceName_, "MinValue", i, multi_cast<std::string>(configMinValues_[i]), false);
    151155
    152156            // Maximum values
     
    154158                configMaxValues_[i] = 32767;
    155159            ConfigFileManager::getInstance().setValue(ConfigFileType::JoyStickCalibration,
    156                 idString_, "MaxValue", i, multi_cast<std::string>(configMaxValues_[i]), false);
     160                deviceName_, "MaxValue", i, multi_cast<std::string>(configMaxValues_[i]), false);
    157161
    158162            // Middle values
    159163            ConfigFileManager::getInstance().setValue(ConfigFileType::JoyStickCalibration,
    160                 idString_, "ZeroValue", i, multi_cast<std::string>(configZeroValues_[i]), false);
     164                deviceName_, "ZeroValue", i, multi_cast<std::string>(configZeroValues_[i]), false);
    161165        }
    162166
Note: See TracChangeset for help on using the changeset viewer.