diff --git a/Source/Plugins/Plugin_WiimoteNew/Plugin_WiimoteNew.vcproj b/Source/Plugins/Plugin_WiimoteNew/Plugin_WiimoteNew.vcproj
index 01c0ade09d..1c017b1bb1 100644
--- a/Source/Plugins/Plugin_WiimoteNew/Plugin_WiimoteNew.vcproj
+++ b/Source/Plugins/Plugin_WiimoteNew/Plugin_WiimoteNew.vcproj
@@ -603,6 +603,14 @@
RelativePath=".\Src\WiimoteEmu\Attachment\Nunchuk.h"
>
+
+
+
+
reg;
};
diff --git a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/Nunchuk.h b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/Nunchuk.h
index fecc101e10..6531568c85 100644
--- a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/Nunchuk.h
+++ b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/Nunchuk.h
@@ -1,5 +1,7 @@
-#include "Attachment.h"
+#ifndef NUNCHUCK_H
+#define NUNCHUCK_H
+#include "Attachment.h"
namespace WiimoteEmu
{
@@ -8,7 +10,7 @@ class Nunchuk : public Attachment
{
public:
Nunchuk();
- void GetState( u8* const data, const bool focus );
+ virtual void GetState( u8* const data, const bool focus );
private:
Tilt* m_tilt;
@@ -23,3 +25,5 @@ private:
};
}
+
+#endif
\ No newline at end of file
diff --git a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/UDPNunchuk.cpp b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/UDPNunchuk.cpp
new file mode 100644
index 0000000000..d84c7d04ae
--- /dev/null
+++ b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/UDPNunchuk.cpp
@@ -0,0 +1,26 @@
+#include "UDPNunchuk.h"
+#include "UDPWrapper.h"
+#include "UDPWiimote.h"
+
+#define NUNCHUK_C 0x02
+#define NUNCHUK_Z 0x01
+
+namespace WiimoteEmu
+{
+
+void UDPNunchuk::GetState( u8* const data, const bool focus )
+{
+ Nunchuk::GetState(data,focus);
+ if (!(wrp->inst)) return;
+
+ wm_extension* const ncdata = (wm_extension*)data;
+ u8 mask;
+ float x,y;
+ wrp->inst->getNunchuck(x,y,mask);
+ if (mask&UDPWM_NC) ncdata->bt&=~NUNCHUK_C;
+ if (mask&UDPWM_NZ) ncdata->bt&=~NUNCHUK_Z;
+ ncdata->jx=u8(0x80+x*127);
+ ncdata->jy=u8(0x80+y*127);
+}
+
+}
\ No newline at end of file
diff --git a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/UDPNunchuk.h b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/UDPNunchuk.h
new file mode 100644
index 0000000000..e3b951cea5
--- /dev/null
+++ b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/Attachment/UDPNunchuk.h
@@ -0,0 +1,21 @@
+#ifndef UDPNUNCHUCK_H
+#define UDPNUNCHUCK_H
+
+#include "Nunchuk.h"
+
+class UDPWrapper;
+
+namespace WiimoteEmu
+{
+
+class UDPNunchuk : public Nunchuk
+{
+public:
+ UDPNunchuk(UDPWrapper * _wrp) : wrp(_wrp ) {name="UDP Nunchuk";}; //sorry for this :p I just dont' feel like rewriting the whole class for a name :p
+ virtual void GetState( u8* const data, const bool focus );
+private:
+ UDPWrapper * wrp;
+};
+
+}
+#endif
\ No newline at end of file
diff --git a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/WiimoteEmu.cpp b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/WiimoteEmu.cpp
index 24da0a828f..cee3863ac9 100644
--- a/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/WiimoteEmu.cpp
+++ b/Source/Plugins/Plugin_WiimoteNew/Src/WiimoteEmu/WiimoteEmu.cpp
@@ -3,6 +3,7 @@
#include "Attachment/Nunchuk.h"
#include "Attachment/Guitar.h"
#include "Attachment/Drums.h"
+#include "Attachment/UDPNunchuk.h"
#include "WiimoteEmu.h"
#include "WiimoteHid.h"
@@ -292,6 +293,7 @@ Wiimote::Wiimote( const unsigned int index )
m_extension->attachments.push_back( new WiimoteEmu::Classic() );
m_extension->attachments.push_back( new WiimoteEmu::Guitar() );
m_extension->attachments.push_back( new WiimoteEmu::Drums() );
+ m_extension->attachments.push_back( new WiimoteEmu::UDPNunchuk(m_udp) );
// rumble
groups.push_back( m_rumble = new ControlGroup( "Rumble" ) );