summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorWim Vriend <facetracknoir@gmail.com>2010-09-24 17:09:20 +0000
committerWim Vriend <facetracknoir@gmail.com>2010-09-24 17:09:20 +0000
commit44828b42ec40330e2e98033202d76ea29dd219e6 (patch)
treee5d658a6b4e94b02e6092e2f1adafea02ae7c4da
parent511b934a97dc7f9765270de69864c7132e1c5b24 (diff)
Curves added (1st try)
git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@18 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb
-rw-r--r--FaceTrackNoIR.ncbbin31697920 -> 33295360 bytes
-rw-r--r--FaceTrackNoIR.suobin246784 -> 247296 bytes
-rw-r--r--FaceTrackNoIR/FTNoIR_KeyboardShortcuts.ui2
-rw-r--r--FaceTrackNoIR/FaceTrackNoIR.cpp226
-rw-r--r--FaceTrackNoIR/FaceTrackNoIR.h27
-rw-r--r--FaceTrackNoIR/FaceTrackNoIR.ui7
-rw-r--r--FaceTrackNoIR/FaceTrackNoIR.vcproj34
-rw-r--r--FaceTrackNoIR/GeneratedFiles/qrc_FaceTrackNoIR.cpp2
-rw-r--r--FaceTrackNoIR/GeneratedFiles/ui_FTNoIR_ppjoycontrols.h2
-rw-r--r--FaceTrackNoIR/GeneratedFiles/ui_FaceTrackNoIR.h8
-rw-r--r--FaceTrackNoIR/Release/BuildLog.htmbin14636 -> 10028 bytes
-rw-r--r--FaceTrackNoIR/Release/mt.dep2
-rw-r--r--bin/FaceTrackNoIR.exebin512000 -> 528384 bytes
-rw-r--r--bin/QBezierConfigurator.dllbin0 -> 49152 bytes
-rw-r--r--bin/QtGui4.dllbin0 -> 8171520 bytes
-rw-r--r--bin/QtNetwork4.dllbin0 -> 720896 bytes
-rw-r--r--bin/Settings/ArmA.ini6
-rw-r--r--bin/Settings/FreeFalcon.ini6
18 files changed, 313 insertions, 9 deletions
diff --git a/FaceTrackNoIR.ncb b/FaceTrackNoIR.ncb
index 6eb7a9ac..e813b164 100644
--- a/FaceTrackNoIR.ncb
+++ b/FaceTrackNoIR.ncb
Binary files differ
diff --git a/FaceTrackNoIR.suo b/FaceTrackNoIR.suo
index 99f8ef88..9133533d 100644
--- a/FaceTrackNoIR.suo
+++ b/FaceTrackNoIR.suo
Binary files differ
diff --git a/FaceTrackNoIR/FTNoIR_KeyboardShortcuts.ui b/FaceTrackNoIR/FTNoIR_KeyboardShortcuts.ui
index 435f22ee..321a1af5 100644
--- a/FaceTrackNoIR/FTNoIR_KeyboardShortcuts.ui
+++ b/FaceTrackNoIR/FTNoIR_KeyboardShortcuts.ui
@@ -11,7 +11,7 @@
</rect>
</property>
<property name="windowTitle">
- <string>PPJoy settings FaceTrackNoIR</string>
+ <string>FaceTrackNoIR keyboard shortcuts</string>
</property>
<property name="windowIcon">
<iconset>
diff --git a/FaceTrackNoIR/FaceTrackNoIR.cpp b/FaceTrackNoIR/FaceTrackNoIR.cpp
index 30ad25ef..cac13715 100644
--- a/FaceTrackNoIR/FaceTrackNoIR.cpp
+++ b/FaceTrackNoIR/FaceTrackNoIR.cpp
@@ -36,10 +36,17 @@ FaceTrackNoIR::FaceTrackNoIR(QWidget *parent, Qt::WFlags flags) :
QMainWindow(parent, flags)
{
cameraDetected = false;
+
+ //
+ // Initialize Widget handles, to prevent memory-access errors.
+ //
_engine_controls = 0;
_server_controls = 0;
_keyboard_shortcuts = 0;
_preferences = 0;
+ _keyboard_shortcuts = 0;
+ _curve_config = 0;
+
tracker = 0;
_display = 0;
l = 0;
@@ -64,6 +71,7 @@ void FaceTrackNoIR::setupFaceTrackNoIR() {
connect(ui.actionPreferences, SIGNAL(triggered()), this, SLOT(showPreferences()));
connect(ui.actionKeyboard_Shortcuts, SIGNAL(triggered()), this, SLOT(showKeyboardShortcuts()));
+ connect(ui.actionCurve_Configuration, SIGNAL(triggered()), this, SLOT(showCurveConfiguration()));
connect(ui.actionAbout, SIGNAL(triggered()), this, SLOT(about()));
@@ -707,7 +715,7 @@ void FaceTrackNoIR::showPreferences() {
}
}
-/** toggles Server Controls Dialog **/
+/** toggles Keyboard Shortcut Dialog **/
void FaceTrackNoIR::showKeyboardShortcuts() {
// Create if new
@@ -723,6 +731,22 @@ void FaceTrackNoIR::showKeyboardShortcuts() {
}
}
+/** toggles Curve Configuration Dialog **/
+void FaceTrackNoIR::showCurveConfiguration() {
+
+ // Create if new
+ if (!_curve_config)
+ {
+ _curve_config = new CurveConfigurationDialog( this, Qt::Dialog );
+ }
+
+ // Show if already created
+ if (_curve_config) {
+ _curve_config->show();
+ _curve_config->raise();
+ }
+}
+
/** exit application **/
void FaceTrackNoIR::exit() {
QCoreApplication::exit(0);
@@ -954,8 +978,10 @@ void PreferencesDialog::save() {
settingsDirty = false;
}
+//**************************************************************************************************//
+//**************************************************************************************************//
//
-// Constructor for server-settings-dialog
+// Constructor for Keyboard-shortcuts-dialog
//
KeyboardShortcutDialog::KeyboardShortcutDialog( QWidget *parent, Qt::WindowFlags f ) :
QWidget( parent , f)
@@ -1248,3 +1274,199 @@ void KeyboardShortcutDialog::save() {
settingsDirty = false;
}
+
+//**************************************************************************************************//
+//**************************************************************************************************//
+//
+// Constructor for Curve-configuration-dialog
+//
+CurveConfigurationDialog::CurveConfigurationDialog( QWidget *parent, Qt::WindowFlags f ) :
+QWidget( parent , f)
+{
+ ui.setupUi( this );
+
+ QPoint offsetpos(100, 100);
+ this->move(parent->pos() + offsetpos);
+
+ // Connect Qt signals to member-functions
+ connect(ui.btnOK, SIGNAL(clicked()), this, SLOT(doOK()));
+ connect(ui.btnCancel, SIGNAL(clicked()), this, SLOT(doCancel()));
+
+ connect(ui.curveRoll, SIGNAL(BezierCurveChanged(bool)), this, SLOT(curveChanged(bool)));
+
+ // Load the settings from the current .INI-file
+ loadSettings();
+}
+
+//
+// Destructor for server-dialog
+//
+CurveConfigurationDialog::~CurveConfigurationDialog() {
+ qDebug() << "~CurveConfigurationDialog() says: started";
+}
+
+//
+// OK clicked on server-dialog
+//
+void CurveConfigurationDialog::doOK() {
+ save();
+ this->close();
+}
+
+// override show event
+void CurveConfigurationDialog::showEvent ( QShowEvent * event ) {
+ loadSettings();
+}
+
+//
+// Cancel clicked on server-dialog
+//
+void CurveConfigurationDialog::doCancel() {
+ //
+ // Ask if changed Settings should be saved
+ //
+ if (settingsDirty) {
+ int ret = QMessageBox::question ( this, "Settings have changed", "Do you want to save the settings?", QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Discard );
+
+ qDebug() << "doCancel says: answer =" << ret;
+
+ switch (ret) {
+ case QMessageBox::Save:
+ save();
+ this->close();
+ break;
+ case QMessageBox::Discard:
+ this->close();
+ break;
+ case QMessageBox::Cancel:
+ // Cancel was clicked
+ break;
+ default:
+ // should never be reached
+ break;
+ }
+ }
+ else {
+ this->close();
+ }
+}
+
+//
+// Load the current Settings from the currently 'active' INI-file.
+//
+void CurveConfigurationDialog::loadSettings() {
+int NeutralZone;
+int sensRoll;
+QPointF point;
+
+ qDebug() << "loadSettings says: Starting ";
+ QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // Registry settings (in HK_USER)
+
+ QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
+ QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file)
+
+ qDebug() << "loadSettings says: iniFile = " << currentFile;
+
+ iniFile.beginGroup ( "Tracking" );
+ NeutralZone = iniFile.value ( "NeutralZone", 5 ).toInt();
+ sensRoll = iniFile.value ( "sensRoll", 100 ).toInt();
+ iniFile.endGroup ();
+
+ iniFile.beginGroup ( "Curves" );
+
+ //
+ // If Point 1 exists, read it from the file.
+ // If not: get the y-coord from the global (deprecated) NeutralZone setting.
+ // Any case: set the x-coord to '0', to keep it on the Y-axis
+ //
+ if (iniFile.contains("Roll_point1")) {
+ point = iniFile.value ( "Roll_point1", 0 ).toPoint();
+ }
+ else {
+ point.setY(NeutralZone);
+ }
+ point.setX(0);
+ ui.curveRoll->setPointOne( point );
+
+ //
+ // If Point 4 exists, read it from the file.
+ // If not: derive the x-coord from the (deprecated) 'Sensitivity' setting and set y to max.
+ //
+ if (iniFile.contains("Roll_point4")) {
+ point = iniFile.value ( "Roll_point4", 0 ).toPoint();
+ }
+ else {
+ point.setY(50); // Max. Input for rotations
+ if (sensRoll < 360) {
+ point.setX((sensRoll/100.0f) * 50);
+ }
+ else {
+ point.setX(180);
+ }
+ }
+ ui.curveRoll->setPointFour( point );
+
+ //
+ // If Point 2 exists, read it from the file.
+ // If not: derive it from the (deprecated) 'Sensitivity' setting.
+ //
+ if (iniFile.contains("Roll_point2")) {
+ point = iniFile.value ( "Roll_point2", 0 ).toPoint();
+ }
+ else {
+ point.setY(0.333f * 50); // Set the Point at 1/3 of Max. Input
+ if (sensRoll < 360) {
+ point.setX(0.333f * (sensRoll/100.0f) * 50);
+
+ }
+ else {
+ point.setX(60);
+ }
+ }
+ ui.curveRoll->setPointTwo( point );
+
+ //
+ // If Point 3 exists, read it from the file.
+ // If not: derive it from the (deprecated) 'Sensitivity' setting.
+ //
+ if (iniFile.contains("Roll_point3")) {
+ point = iniFile.value ( "Roll_point3", 0 ).toPoint();
+ }
+ else {
+ point.setY(0.666f * 50); // Set the Point at 2/3 of Max. Input
+ if (sensRoll < 360) {
+ point.setX(0.666f * (sensRoll/100.0f) * 50);
+
+ }
+ else {
+ point.setX(120);
+ }
+ }
+ ui.curveRoll->setPointThree( point );
+ iniFile.endGroup ();
+
+ settingsDirty = false;
+
+}
+
+//
+// Save the current Settings to the currently 'active' INI-file.
+//
+void CurveConfigurationDialog::save() {
+
+ qDebug() << "save() says: started";
+
+ QSettings settings("Abbequerque Inc.", "FaceTrackNoIR"); // Registry settings (in HK_USER)
+
+ QString currentFile = settings.value ( "SettingsFile", QCoreApplication::applicationDirPath() + "/Settings/default.ini" ).toString();
+ QSettings iniFile( currentFile, QSettings::IniFormat ); // Application settings (in INI-file)
+
+ iniFile.beginGroup ( "Curves" );
+ iniFile.setValue ("Roll_point1", ui.curveRoll->getPointOne() );
+ iniFile.setValue ("Roll_point2", ui.curveRoll->getPointTwo() );
+ iniFile.setValue ("Roll_point3", ui.curveRoll->getPointThree() );
+ iniFile.setValue ("Roll_point4", ui.curveRoll->getPointFour() );
+ iniFile.endGroup ();
+
+ settingsDirty = false;
+}
diff --git a/FaceTrackNoIR/FaceTrackNoIR.h b/FaceTrackNoIR/FaceTrackNoIR.h
index 93160c48..e1bdc5cb 100644
--- a/FaceTrackNoIR/FaceTrackNoIR.h
+++ b/FaceTrackNoIR/FaceTrackNoIR.h
@@ -37,6 +37,7 @@
#include "ui_FaceTrackNoIR.h"
#include "ui_FTNoIR_KeyboardShortcuts.h"
#include "ui_FTNoIR_Preferences.h"
+#include "ui_FTNoIR_Curves.h"
#include <sm_api_qt.h>
#include <Dshow.h>
@@ -67,6 +68,7 @@ private:
QWidget *_server_controls;
QWidget *_preferences;
QWidget *_keyboard_shortcuts;
+ QWidget *_curve_config;
/** QT objects **/
QDialog aboutDialog;
@@ -109,6 +111,7 @@ private:
void showServerControls();
void showPreferences();
void showKeyboardShortcuts();
+ void showCurveConfiguration();
// sensibility sliders
void setSensYaw( int sens );
@@ -196,5 +199,29 @@ private slots:
void keyChanged( int index ) { settingsDirty = true; };
};
+// Widget that has controls for Keyboard shortcuts.
+class CurveConfigurationDialog: public QWidget, public Ui::UICCurveConfigurationDialog
+{
+ Q_OBJECT
+public:
+
+ explicit CurveConfigurationDialog( QWidget *parent=0, Qt::WindowFlags f=0 );
+ virtual ~CurveConfigurationDialog();
+ void showEvent ( QShowEvent * event );
+
+private:
+ Ui::UICCurveConfigurationDialog ui;
+ void loadSettings();
+ void save();
+
+ /** helper **/
+ bool settingsDirty;
+
+private slots:
+ void doOK();
+ void doCancel();
+ void curveChanged( bool change ) { settingsDirty = true; };
+};
+
#endif // FaceTrackNoIR_H
diff --git a/FaceTrackNoIR/FaceTrackNoIR.ui b/FaceTrackNoIR/FaceTrackNoIR.ui
index 16c91108..b0889c31 100644
--- a/FaceTrackNoIR/FaceTrackNoIR.ui
+++ b/FaceTrackNoIR/FaceTrackNoIR.ui
@@ -2205,6 +2205,8 @@ background:none;</string>
</property>
<addaction name="actionPreferences"/>
<addaction name="actionKeyboard_Shortcuts"/>
+ <addaction name="separator"/>
+ <addaction name="actionCurve_Configuration"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuView"/>
@@ -2355,6 +2357,11 @@ background:none;</string>
<string>Preferences</string>
</property>
</action>
+ <action name="actionCurve_Configuration">
+ <property name="text">
+ <string>Curve Configuration</string>
+ </property>
+ </action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<tabstops>
diff --git a/FaceTrackNoIR/FaceTrackNoIR.vcproj b/FaceTrackNoIR/FaceTrackNoIR.vcproj
index b35e07b9..cb75ed3b 100644
--- a/FaceTrackNoIR/FaceTrackNoIR.vcproj
+++ b/FaceTrackNoIR/FaceTrackNoIR.vcproj
@@ -68,7 +68,7 @@
/>
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="QtMain.lib QtCore4.lib QtGui4.lib QtNetwork4.lib smft32.lib smftcpp.lib smftqt.lib Strmiids.lib Ws2_32.lib"
+ AdditionalDependencies="QtMain.lib QtCore4.lib QtGui4.lib QtNetwork4.lib smft32.lib smftcpp.lib smftqt.lib Strmiids.lib Ws2_32.lib QBezierConfigurator.lib"
OutputFile="$(OutDir)\$(ProjectName).exe"
AdditionalLibraryDirectories=""
GenerateManifest="true"
@@ -103,7 +103,7 @@
/>
<Tool
Name="VCPostBuildEventTool"
- CommandLine=""
+ CommandLine="postbuild.bat &quot;$(QTDIR)\plugins\designer\QBezierConfigurator.dll&quot; &quot;$(OutDir)&quot; $(ConfigurationName)"
/>
</Configuration>
<Configuration
@@ -464,6 +464,32 @@
</FileConfiguration>
</File>
<File
+ RelativePath=".\FTNoIR_Curves.ui"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Uic&apos;ing $(InputFileName)..."
+ CommandLine="&quot;$(QTDIR)\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ AdditionalDependencies="$(QTDIR)\bin\uic.exe"
+ Outputs="&quot;.\GeneratedFiles\ui_$(InputName).h&quot;"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ Description="Uic&apos;ing $(InputFileName)..."
+ CommandLine="&quot;$(QTDIR)\bin\uic.exe&quot; -o &quot;.\GeneratedFiles\ui_$(InputName).h&quot; &quot;$(InputPath)&quot;&#x0D;&#x0A;"
+ AdditionalDependencies="$(QTDIR)\bin\uic.exe"
+ Outputs="&quot;.\GeneratedFiles\ui_$(InputName).h&quot;"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath=".\FTNoIR_KeyboardShortcuts.ui"
>
<FileConfiguration
@@ -593,6 +619,10 @@
>
</File>
<File
+ RelativePath=".\GeneratedFiles\ui_FTNoIR_Curves.h"
+ >
+ </File>
+ <File
RelativePath=".\GeneratedFiles\ui_FTNoIR_KeyboardShortcuts.h"
>
</File>
diff --git a/FaceTrackNoIR/GeneratedFiles/qrc_FaceTrackNoIR.cpp b/FaceTrackNoIR/GeneratedFiles/qrc_FaceTrackNoIR.cpp
index 363370e6..cb1a03ee 100644
--- a/FaceTrackNoIR/GeneratedFiles/qrc_FaceTrackNoIR.cpp
+++ b/FaceTrackNoIR/GeneratedFiles/qrc_FaceTrackNoIR.cpp
@@ -1,7 +1,7 @@
/****************************************************************************
** Resource object code
**
-** Created: Fri 3. Sep 13:27:15 2010
+** Created: Fri 24. Sep 11:22:09 2010
** by: The Resource Compiler for Qt version 4.6.2
**
** WARNING! All changes made in this file will be lost!
diff --git a/FaceTrackNoIR/GeneratedFiles/ui_FTNoIR_ppjoycontrols.h b/FaceTrackNoIR/GeneratedFiles/ui_FTNoIR_ppjoycontrols.h
index bb1e60c8..198683a3 100644
--- a/FaceTrackNoIR/GeneratedFiles/ui_FTNoIR_ppjoycontrols.h
+++ b/FaceTrackNoIR/GeneratedFiles/ui_FTNoIR_ppjoycontrols.h
@@ -1,7 +1,7 @@
/********************************************************************************
** Form generated from reading UI file 'FTNoIR_ppjoycontrols.ui'
**
-** Created: Fri 3. Sep 13:27:15 2010
+** Created: Fri 24. Sep 11:22:05 2010
** by: Qt User Interface Compiler version 4.6.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
diff --git a/FaceTrackNoIR/GeneratedFiles/ui_FaceTrackNoIR.h b/FaceTrackNoIR/GeneratedFiles/ui_FaceTrackNoIR.h
index 32f64a21..1c9582fd 100644
--- a/FaceTrackNoIR/GeneratedFiles/ui_FaceTrackNoIR.h
+++ b/FaceTrackNoIR/GeneratedFiles/ui_FaceTrackNoIR.h
@@ -1,7 +1,7 @@
/********************************************************************************
** Form generated from reading UI file 'FaceTrackNoIR.ui'
**
-** Created: Fri 3. Sep 13:27:15 2010
+** Created: Fri 24. Sep 11:22:07 2010
** by: Qt User Interface Compiler version 4.6.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
@@ -54,6 +54,7 @@ public:
QAction *actionSave_As;
QAction *actionKeyboard_Shortcuts;
QAction *actionPreferences;
+ QAction *actionCurve_Configuration;
QWidget *centralWidget;
QVBoxLayout *verticalLayout_2;
QWidget *widgetTop;
@@ -286,6 +287,8 @@ public:
actionKeyboard_Shortcuts->setObjectName(QString::fromUtf8("actionKeyboard_Shortcuts"));
actionPreferences = new QAction(FaceTrackNoIRClass);
actionPreferences->setObjectName(QString::fromUtf8("actionPreferences"));
+ actionCurve_Configuration = new QAction(FaceTrackNoIRClass);
+ actionCurve_Configuration->setObjectName(QString::fromUtf8("actionCurve_Configuration"));
centralWidget = new QWidget(FaceTrackNoIRClass);
centralWidget->setObjectName(QString::fromUtf8("centralWidget"));
centralWidget->setMinimumSize(QSize(800, 500));
@@ -1143,6 +1146,8 @@ public:
menuView->addAction(actionHeadPoseWidget);
menuOptions->addAction(actionPreferences);
menuOptions->addAction(actionKeyboard_Shortcuts);
+ menuOptions->addSeparator();
+ menuOptions->addAction(actionCurve_Configuration);
retranslateUi(FaceTrackNoIRClass);
QObject::connect(sensYaw, SIGNAL(valueChanged(int)), spinSensYaw, SLOT(setValue(int)));
@@ -1212,6 +1217,7 @@ public:
actionSave_As->setText(QApplication::translate("FaceTrackNoIRClass", "Save As", 0, QApplication::UnicodeUTF8));
actionKeyboard_Shortcuts->setText(QApplication::translate("FaceTrackNoIRClass", "Keyboard Shortcuts", 0, QApplication::UnicodeUTF8));
actionPreferences->setText(QApplication::translate("FaceTrackNoIRClass", "Preferences", 0, QApplication::UnicodeUTF8));
+ actionCurve_Configuration->setText(QApplication::translate("FaceTrackNoIRClass", "Curve Configuration", 0, QApplication::UnicodeUTF8));
headRotYLine->setText(QApplication::translate("FaceTrackNoIRClass", "N/A", 0, QApplication::UnicodeUTF8));
headRotXLine->setText(QApplication::translate("FaceTrackNoIRClass", "N/A", 0, QApplication::UnicodeUTF8));
headRotZLine->setText(QApplication::translate("FaceTrackNoIRClass", "N/A", 0, QApplication::UnicodeUTF8));
diff --git a/FaceTrackNoIR/Release/BuildLog.htm b/FaceTrackNoIR/Release/BuildLog.htm
index 995147bd..27fcb281 100644
--- a/FaceTrackNoIR/Release/BuildLog.htm
+++ b/FaceTrackNoIR/Release/BuildLog.htm
Binary files differ
diff --git a/FaceTrackNoIR/Release/mt.dep b/FaceTrackNoIR/Release/mt.dep
index d9624085..f8da41f8 100644
--- a/FaceTrackNoIR/Release/mt.dep
+++ b/FaceTrackNoIR/Release/mt.dep
@@ -1 +1 @@
-Manifest resource last updated at 13:08:32.52 on vr 10-09-2010
+Manifest resource last updated at 19:03:49.66 on vr 24-09-2010
diff --git a/bin/FaceTrackNoIR.exe b/bin/FaceTrackNoIR.exe
index c7998c9a..7e219b7d 100644
--- a/bin/FaceTrackNoIR.exe
+++ b/bin/FaceTrackNoIR.exe
Binary files differ
diff --git a/bin/QBezierConfigurator.dll b/bin/QBezierConfigurator.dll
new file mode 100644
index 00000000..46db60ad
--- /dev/null
+++ b/bin/QBezierConfigurator.dll
Binary files differ
diff --git a/bin/QtGui4.dll b/bin/QtGui4.dll
new file mode 100644
index 00000000..b21accc6
--- /dev/null
+++ b/bin/QtGui4.dll
Binary files differ
diff --git a/bin/QtNetwork4.dll b/bin/QtNetwork4.dll
new file mode 100644
index 00000000..69e46f47
--- /dev/null
+++ b/bin/QtNetwork4.dll
Binary files differ
diff --git a/bin/Settings/ArmA.ini b/bin/Settings/ArmA.ini
index cc7a02e2..50bbca36 100644
--- a/bin/Settings/ArmA.ini
+++ b/bin/Settings/ArmA.ini
@@ -16,3 +16,9 @@ invertZ=false
[GameProtocol]
Selection=0
+
+[Curves]
+Roll_point1=@Variant(\0\0\0\x1a\0\0\0\0\0\0\0\0@\x1c\0\0\0\0\0\0)
+Roll_point2=@Variant(\0\0\0\x1a@O\xc0\0\0\0\0\0@/\0\0\0\0\0\0)
+Roll_point3=@Variant(\0\0\0\x1a@Q \0\0\0\0\0@F@\0\0\0\0\0)
+Roll_point4=@Variant(\0\0\0\x1a@`@\0\0\0\0\0@I\0\0\0\0\0\0)
diff --git a/bin/Settings/FreeFalcon.ini b/bin/Settings/FreeFalcon.ini
index 3c7c1e1f..a87b24a0 100644
--- a/bin/Settings/FreeFalcon.ini
+++ b/bin/Settings/FreeFalcon.ini
@@ -23,3 +23,9 @@ redZ=75
[GameProtocol]
Selection=4
+
+[Curves]
+Roll_point1=@Variant(\0\0\0\x1a\0\0\0\0\0\0\0\0@$\0\0\0\0\0\0)
+Roll_point2=@Variant(\0\0\0\x1a@X@\0\0\0\0\0@0\0\0\0\0\0\0)
+Roll_point3=@Variant(\0\0\0\x1a@F\x80\0\0\0\0\0@E\0\0\0\0\0\0)
+Roll_point4=@Variant(\0\0\0\x1a@b\xc0\0\0\0\0\0@I\0\0\0\0\0\0)