New chaperone/audio profile now replaces an already existing one with the same name.

This commit is contained in:
2016-12-21 20:10:58 +01:00
parent 7179023cdb
commit 613610c050
2 changed files with 63 additions and 45 deletions
+26 -17
View File
@@ -450,23 +450,32 @@ namespace advsettings {
} }
void AudioTabController::addPttProfile(QString name) { void AudioTabController::addPttProfile(QString name) {
auto i = pttProfiles.size(); PttProfile* profile = nullptr;
pttProfiles.emplace_back(); for (auto& p : pttProfiles) {
auto& profile = pttProfiles[i]; if (p.profileName.compare(name.toStdString()) == 0) {
profile.profileName = name.toStdString(); profile = &p;
profile.showNotification = m_pttShowNotification; break;
profile.leftControllerEnabled = m_pttLeftControllerEnabled; }
profile.rightControllerEnabled = m_pttRightControllerEnabled; }
profile.controllerConfigs[0].digitalButtons = m_pttControllerConfigs[0].digitalButtons; if (!profile) {
profile.controllerConfigs[0].digitalButtonMask = m_pttControllerConfigs[0].digitalButtonMask; auto i = pttProfiles.size();
profile.controllerConfigs[0].triggerMode = m_pttControllerConfigs[0].triggerMode; pttProfiles.emplace_back();
profile.controllerConfigs[0].touchpadMode = m_pttControllerConfigs[0].touchpadMode; profile = &pttProfiles[i];
profile.controllerConfigs[0].touchpadAreas = m_pttControllerConfigs[0].touchpadAreas; }
profile.controllerConfigs[1].digitalButtons = m_pttControllerConfigs[1].digitalButtons; profile->profileName = name.toStdString();
profile.controllerConfigs[1].digitalButtonMask = m_pttControllerConfigs[1].digitalButtonMask; profile->showNotification = m_pttShowNotification;
profile.controllerConfigs[1].triggerMode = m_pttControllerConfigs[1].triggerMode; profile->leftControllerEnabled = m_pttLeftControllerEnabled;
profile.controllerConfigs[1].touchpadMode = m_pttControllerConfigs[1].touchpadMode; profile->rightControllerEnabled = m_pttRightControllerEnabled;
profile.controllerConfigs[1].touchpadAreas = m_pttControllerConfigs[1].touchpadAreas; profile->controllerConfigs[0].digitalButtons = m_pttControllerConfigs[0].digitalButtons;
profile->controllerConfigs[0].digitalButtonMask = m_pttControllerConfigs[0].digitalButtonMask;
profile->controllerConfigs[0].triggerMode = m_pttControllerConfigs[0].triggerMode;
profile->controllerConfigs[0].touchpadMode = m_pttControllerConfigs[0].touchpadMode;
profile->controllerConfigs[0].touchpadAreas = m_pttControllerConfigs[0].touchpadAreas;
profile->controllerConfigs[1].digitalButtons = m_pttControllerConfigs[1].digitalButtons;
profile->controllerConfigs[1].digitalButtonMask = m_pttControllerConfigs[1].digitalButtonMask;
profile->controllerConfigs[1].triggerMode = m_pttControllerConfigs[1].triggerMode;
profile->controllerConfigs[1].touchpadMode = m_pttControllerConfigs[1].touchpadMode;
profile->controllerConfigs[1].touchpadAreas = m_pttControllerConfigs[1].touchpadAreas;
savePttProfiles(); savePttProfiles();
OverlayController::appSettings()->sync(); OverlayController::appSettings()->sync();
emit pttProfilesUpdated(); emit pttProfilesUpdated();
+37 -28
View File
@@ -352,69 +352,78 @@ void ChaperoneTabController::reloadFromDisk() {
void ChaperoneTabController::addChaperoneProfile(QString name, bool includeGeometry, bool includeVisbility, bool includeFadeDistance, bool includeCenterMarker, void ChaperoneTabController::addChaperoneProfile(QString name, bool includeGeometry, bool includeVisbility, bool includeFadeDistance, bool includeCenterMarker,
bool includePlaySpaceMarker, bool includeFloorBounds, bool includeBoundsColor, bool includeChaperoneStyle, bool includeForceBounds) { bool includePlaySpaceMarker, bool includeFloorBounds, bool includeBoundsColor, bool includeChaperoneStyle, bool includeForceBounds) {
vr::EVRSettingsError vrSettingsError; vr::EVRSettingsError vrSettingsError;
auto i = chaperoneProfiles.size(); ChaperoneProfile* profile = nullptr;
chaperoneProfiles.emplace_back(); for (auto& p : chaperoneProfiles) {
auto& profile = chaperoneProfiles[i]; if (p.profileName.compare(name.toStdString()) == 0) {
profile.profileName = name.toStdString(); profile = &p;
profile.includesChaperoneGeometry = includeGeometry; break;
}
}
if (!profile) {
auto i = chaperoneProfiles.size();
chaperoneProfiles.emplace_back();
profile = &chaperoneProfiles[i];
}
profile->profileName = name.toStdString();
profile->includesChaperoneGeometry = includeGeometry;
if (includeGeometry) { if (includeGeometry) {
vr::VRChaperoneSetup()->RevertWorkingCopy(); vr::VRChaperoneSetup()->RevertWorkingCopy();
uint32_t quadCount = 0; uint32_t quadCount = 0;
vr::VRChaperoneSetup()->GetLiveCollisionBoundsInfo(nullptr, &quadCount); vr::VRChaperoneSetup()->GetLiveCollisionBoundsInfo(nullptr, &quadCount);
profile.chaperoneGeometryQuadCount = quadCount; profile->chaperoneGeometryQuadCount = quadCount;
profile.chaperoneGeometryQuads.reset(new vr::HmdQuad_t[quadCount]); profile->chaperoneGeometryQuads.reset(new vr::HmdQuad_t[quadCount]);
vr::VRChaperoneSetup()->GetLiveCollisionBoundsInfo(profile.chaperoneGeometryQuads.get(), &quadCount); vr::VRChaperoneSetup()->GetLiveCollisionBoundsInfo(profile->chaperoneGeometryQuads.get(), &quadCount);
vr::VRChaperoneSetup()->GetWorkingStandingZeroPoseToRawTrackingPose(&profile.standingCenter); vr::VRChaperoneSetup()->GetWorkingStandingZeroPoseToRawTrackingPose(&profile->standingCenter);
vr::VRChaperoneSetup()->GetWorkingPlayAreaSize(&profile.playSpaceAreaX, &profile.playSpaceAreaZ); vr::VRChaperoneSetup()->GetWorkingPlayAreaSize(&profile->playSpaceAreaX, &profile->playSpaceAreaZ);
} }
profile.includesVisibility = includeVisbility; profile->includesVisibility = includeVisbility;
if (includeVisbility) { if (includeVisbility) {
profile.visibility = m_visibility; profile->visibility = m_visibility;
} }
profile.includesFadeDistance = includeFadeDistance; profile->includesFadeDistance = includeFadeDistance;
if (includeFadeDistance) { if (includeFadeDistance) {
profile.fadeDistance = m_fadeDistance; profile->fadeDistance = m_fadeDistance;
} }
profile.includesCenterMarker = includeCenterMarker; profile->includesCenterMarker = includeCenterMarker;
if (includeCenterMarker) { if (includeCenterMarker) {
profile.centerMarker = m_centerMarker; profile->centerMarker = m_centerMarker;
} }
profile.includesPlaySpaceMarker = includePlaySpaceMarker; profile->includesPlaySpaceMarker = includePlaySpaceMarker;
if (includePlaySpaceMarker) { if (includePlaySpaceMarker) {
profile.playSpaceMarker = m_playSpaceMarker; profile->playSpaceMarker = m_playSpaceMarker;
} }
profile.includesFloorBoundsMarker = includeFloorBounds; profile->includesFloorBoundsMarker = includeFloorBounds;
if (includeFloorBounds) { if (includeFloorBounds) {
profile.floorBoundsMarker = vr::VRSettings()->GetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_GroundPerimeterOn_Bool, &vrSettingsError); profile->floorBoundsMarker = vr::VRSettings()->GetBool(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_GroundPerimeterOn_Bool, &vrSettingsError);
if (vrSettingsError != vr::VRSettingsError_None) { if (vrSettingsError != vr::VRSettingsError_None) {
LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_GroundPerimeterOn_Bool << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_GroundPerimeterOn_Bool << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
} }
} }
profile.includesBoundsColor = includeBoundsColor; profile->includesBoundsColor = includeBoundsColor;
if (includeBoundsColor) { if (includeBoundsColor) {
profile.boundsColor[0] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaR_Int32, &vrSettingsError); profile->boundsColor[0] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaR_Int32, &vrSettingsError);
if (vrSettingsError != vr::VRSettingsError_None) { if (vrSettingsError != vr::VRSettingsError_None) {
LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaR_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaR_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
} }
profile.boundsColor[1] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaG_Int32, &vrSettingsError); profile->boundsColor[1] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaG_Int32, &vrSettingsError);
if (vrSettingsError != vr::VRSettingsError_None) { if (vrSettingsError != vr::VRSettingsError_None) {
LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaG_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaG_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
} }
profile.boundsColor[2] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaB_Int32, &vrSettingsError); profile->boundsColor[2] = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_ColorGammaB_Int32, &vrSettingsError);
if (vrSettingsError != vr::VRSettingsError_None) { if (vrSettingsError != vr::VRSettingsError_None) {
LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaB_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_ColorGammaB_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
} }
} }
profile.includesChaperoneStyle = includeChaperoneStyle; profile->includesChaperoneStyle = includeChaperoneStyle;
if (includeChaperoneStyle) { if (includeChaperoneStyle) {
profile.chaperoneStyle = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_Style_Int32, &vrSettingsError); profile->chaperoneStyle = vr::VRSettings()->GetInt32(vr::k_pch_CollisionBounds_Section, vr::k_pch_CollisionBounds_Style_Int32, &vrSettingsError);
if (vrSettingsError != vr::VRSettingsError_None) { if (vrSettingsError != vr::VRSettingsError_None) {
LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_Style_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError); LOG(WARNING) << "Could not read \"" << vr::k_pch_CollisionBounds_Style_Int32 << "\" setting: " << vr::VRSettings()->GetSettingsErrorNameFromEnum(vrSettingsError);
} }
} }
profile.includesForceBounds = includeForceBounds; profile->includesForceBounds = includeForceBounds;
if (includeForceBounds) { if (includeForceBounds) {
profile.forceBounds = m_forceBounds; profile->forceBounds = m_forceBounds;
} }
saveChaperoneProfiles(); saveChaperoneProfiles();
OverlayController::appSettings()->sync(); OverlayController::appSettings()->sync();