Ongebruikte bestanden met onbeschikbare afhankelijkheden in Mimis verwijderd. JNI compile configuraties aangepast en Wiiuse foutje weggewerkt.
This commit is contained in:
@@ -76,7 +76,6 @@ public final class JIntellitype implements JIntellitypeConstants {
|
||||
/**
|
||||
* Handler is used by JNI code to keep different JVM instances separate
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
private final int handler = 0;
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,9 +31,10 @@ package com.melloware.jintellitype;
|
||||
* @version 1.3.1
|
||||
*/
|
||||
public class JIntellitypeException extends RuntimeException {
|
||||
protected static final long serialVersionUID = 1L;
|
||||
|
||||
|
||||
public JIntellitypeException() {
|
||||
|
||||
public JIntellitypeException() {
|
||||
super();
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,6 @@ import java.util.Properties;
|
||||
* @author Emil A. Lefkof III <info@melloware.com>
|
||||
* @version 1.3.1
|
||||
*/
|
||||
@SuppressWarnings("")
|
||||
public final class Main {
|
||||
|
||||
/**
|
||||
|
||||
@@ -31,7 +31,6 @@ public abstract class Worker implements Runnable {
|
||||
run();
|
||||
}
|
||||
} else {
|
||||
log.debug("note");
|
||||
notifyAll();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package mimis.event.feedback;
|
||||
import mimis.event.Feedback;
|
||||
|
||||
public class TextFeedback extends Feedback {
|
||||
protected static final long serialVersionUID = 1L;
|
||||
|
||||
protected String text;
|
||||
|
||||
public TextFeedback(String text) {
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
TODO
|
||||
------------
|
||||
exeptions en foutmeldingen nakijken/afhandelen/loggen
|
||||
exceptions en foutmeldingen nakijken/afhandelen/loggen
|
||||
|
||||
feedback?
|
||||
feedback uitbreiden
|
||||
|
||||
mogelijkheid tot webstart onderzoeken
|
||||
|
||||
exporteren naar uitvoerbare jar file
|
||||
mogelijkheid tot webstart onderzoeken
|
||||
@@ -1,17 +1,58 @@
|
||||
package mimis.worker;
|
||||
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import mimis.Worker;
|
||||
import mimis.exception.worker.ActivateException;
|
||||
import mimis.exception.worker.DeactivateException;
|
||||
|
||||
public class Periodic extends Worker {
|
||||
public static final int PERIOD = 500;
|
||||
|
||||
protected TimerTask timerTask;
|
||||
protected Timer timer;
|
||||
protected int period;
|
||||
|
||||
public Periodic() {
|
||||
this(PERIOD);
|
||||
}
|
||||
|
||||
public Periodic(int period) {
|
||||
this.period = period;
|
||||
timerTask = new TimerTask() {
|
||||
public void run() {
|
||||
if (deactivate) {
|
||||
cancel();
|
||||
}
|
||||
work();
|
||||
}
|
||||
};
|
||||
timer = new Timer();
|
||||
}
|
||||
|
||||
protected void activate() throws ActivateException {
|
||||
timer.scheduleAtFixedRate(timerTask, 0, period);
|
||||
|
||||
}
|
||||
|
||||
protected void deactivate() throws DeactivateException {
|
||||
//timer.cancel();
|
||||
}
|
||||
|
||||
protected void work() {
|
||||
log.debug("work!");
|
||||
}
|
||||
|
||||
public void test() {
|
||||
Periodic periodic = new Periodic();
|
||||
periodic.start();
|
||||
sleep(1000);
|
||||
periodic.stop();
|
||||
sleep(1000);
|
||||
periodic.start();
|
||||
sleep(10000);
|
||||
System.exit(1);
|
||||
Worker worker = new Worker() {
|
||||
protected void work() {
|
||||
log.debug("work()");
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
/*
|
||||
* wiigee - accelerometerbased gesture recognition
|
||||
* Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
|
||||
*
|
||||
* Developed at University of Oldenburg
|
||||
* Contact: wiigee@benjaminpoppinga.de
|
||||
*
|
||||
* This file is part of wiigee.
|
||||
*
|
||||
* wiigee is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
package org.wiigee.control;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.wiigee.device.Wiimote;
|
||||
import org.wiigee.util.Log;
|
||||
|
||||
public class WiimoteDeviceDiscovery implements DiscoveryListener {
|
||||
|
||||
private Vector<RemoteDevice> devices;
|
||||
private boolean isInquiring;
|
||||
private final Object lock;
|
||||
|
||||
public WiimoteDeviceDiscovery(Object lock) {
|
||||
super();
|
||||
this.lock = lock;
|
||||
this.devices = new Vector<RemoteDevice>();
|
||||
}
|
||||
|
||||
public void deviceDiscovered(RemoteDevice newdevice, DeviceClass devclass) {
|
||||
Log.write("Device discovered: " + newdevice.getBluetoothAddress() + " - ");
|
||||
// add the device to the vector
|
||||
if (!devices.contains(newdevice) &&
|
||||
devclass.getMajorDeviceClass() == 1280 &&
|
||||
devclass.getMinorDeviceClass() == 4) {
|
||||
Log.write("Is a Wiimote!");
|
||||
devices.addElement(newdevice);
|
||||
} else {
|
||||
Log.write("Is NOT a Wiimote OR you're using an incompatible Bluetooth Stack.");
|
||||
}
|
||||
}
|
||||
|
||||
public void inquiryCompleted(int discType) {
|
||||
switch (discType) {
|
||||
case WiimoteDeviceDiscovery.INQUIRY_COMPLETED:
|
||||
Log.write("Inquiry completed.");
|
||||
break;
|
||||
|
||||
case WiimoteDeviceDiscovery.INQUIRY_ERROR:
|
||||
Log.write("Inquiry error.");
|
||||
break;
|
||||
|
||||
case WiimoteDeviceDiscovery.INQUIRY_TERMINATED:
|
||||
Log.write("Inquiry terminated.");
|
||||
break;
|
||||
}
|
||||
synchronized (this.lock) {
|
||||
this.lock.notify();
|
||||
}
|
||||
}
|
||||
|
||||
public void serviceSearchCompleted(int arg0, int arg1) {
|
||||
// not necessary
|
||||
}
|
||||
|
||||
public void servicesDiscovered(int arg0, ServiceRecord[] arg1) {
|
||||
// not necessary
|
||||
}
|
||||
|
||||
public boolean isInquirying() {
|
||||
return this.isInquiring;
|
||||
}
|
||||
|
||||
public Vector<Wiimote> getDiscoveredWiimotes() throws IOException {
|
||||
Vector<Wiimote> wiimotes = new Vector<Wiimote>();
|
||||
|
||||
for (int i = 0; i < devices.size(); i++) {
|
||||
wiimotes.add(new Wiimote(devices.elementAt(i).getBluetoothAddress(), true, true));
|
||||
}
|
||||
|
||||
return wiimotes;
|
||||
}
|
||||
}
|
||||
@@ -1,207 +0,0 @@
|
||||
/*
|
||||
* wiigee - accelerometerbased gesture recognition
|
||||
* Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
|
||||
*
|
||||
* Developed at University of Oldenburg
|
||||
* Contact: wiigee@benjaminpoppinga.de
|
||||
*
|
||||
* This file is part of wiigee.
|
||||
*
|
||||
* wiigee is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
package org.wiigee.control;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.wiigee.device.Wiimote;
|
||||
import org.wiigee.event.AccelerationListener;
|
||||
import org.wiigee.event.GestureListener;
|
||||
import org.wiigee.filter.Filter;
|
||||
import org.wiigee.util.Log;
|
||||
|
||||
// Singleton
|
||||
public class WiimoteWiigee extends Wiigee {
|
||||
|
||||
protected static String pluginversion = "1.5.6";
|
||||
protected static String pluginreleasedate = "20090817";
|
||||
private static final Object lock = new Object();
|
||||
private Vector<Wiimote> devices;
|
||||
|
||||
public WiimoteWiigee() {
|
||||
super();
|
||||
String stack;
|
||||
String stackVersion;
|
||||
String l2capFeature;
|
||||
String bluecoveVersion;
|
||||
|
||||
Log.write("This is wiigee-plugin-wiimote version " + pluginversion + " (" + pluginreleasedate + ")");
|
||||
|
||||
// Bluecove
|
||||
bluecoveVersion = LocalDevice.getProperty("bluecove");
|
||||
if(!bluecoveVersion.equals("")) {
|
||||
|
||||
stack = LocalDevice.getProperty("bluecove.stack");
|
||||
stackVersion = LocalDevice.getProperty("bluecove.stack.version");
|
||||
Log.write("You are using the "+stack+" Bluetooth stack (Version "+stackVersion+")");
|
||||
|
||||
l2capFeature = LocalDevice.getProperty("bluecove.feature.l2cap");
|
||||
Log.write("L2CAP supported: "+l2capFeature);
|
||||
|
||||
if(l2capFeature.equals("true")) {
|
||||
Log.write("wiigee: found a supported stack!");
|
||||
|
||||
// set min id for Bluecove
|
||||
Log.write(Log.DEBUG, "JSR82 PSM Minimum Restriction -- OFF", null);
|
||||
System.setProperty("bluecove.jsr82.psm_minimum_off", "true");
|
||||
}
|
||||
} else {
|
||||
Log.write("No Bluecove Library detected - trying anyway...");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Automatically discovers Wiimotes nearby and connects to
|
||||
* the first responding Wiimote visible. For multiple managed
|
||||
* instances of the Wiimote, please use getDevices().
|
||||
*
|
||||
* @return First visible Wiimote. Null otherwise.
|
||||
* @throws java.io.IOException
|
||||
*/
|
||||
public Wiimote getDevice() throws IOException {
|
||||
this.devices = this.discoverWiimotes();
|
||||
if(this.devices.size()>0) {
|
||||
return devices.elementAt(0);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an array of all discovered Wiimotes. The count
|
||||
* of Devices depends on your computers bluetooth capabilities.
|
||||
* Usually up to 7 Wiimotes/Devices can be connected.
|
||||
*
|
||||
* @return Array of discovered wiimotes or null if
|
||||
* none discoverd.
|
||||
*/
|
||||
public Wiimote[] getDevices() throws IOException {
|
||||
this.devices = this.discoverWiimotes();
|
||||
for (int i = 0; i < this.devices.size(); i++) {
|
||||
this.devices.elementAt(i).setLED(i + 1);
|
||||
}
|
||||
Wiimote[] out = new Wiimote[this.devices.size()];
|
||||
for (int i = 0; i < this.devices.size(); i++) {
|
||||
out[i] = this.devices.elementAt(i);
|
||||
}
|
||||
|
||||
if(out.length>0) {
|
||||
return out;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Discover the wiimotes around the bluetooth host and
|
||||
* make them available public via getWiimotes method.
|
||||
*
|
||||
* @return Array of discovered wiimotes.
|
||||
*/
|
||||
private Vector<Wiimote> discoverWiimotes() throws IOException {
|
||||
WiimoteDeviceDiscovery deviceDiscovery = new WiimoteDeviceDiscovery(lock);
|
||||
LocalDevice localDevice = LocalDevice.getLocalDevice();
|
||||
Log.write("Your Computers Bluetooth MAC: " + localDevice.getBluetoothAddress());
|
||||
|
||||
Log.write("Starting device inquiry...");
|
||||
DiscoveryAgent discoveryAgent = localDevice.getDiscoveryAgent();
|
||||
discoveryAgent.startInquiry(DiscoveryAgent.GIAC, deviceDiscovery);
|
||||
|
||||
|
||||
try {
|
||||
synchronized (lock) {
|
||||
lock.wait();
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
Log.write("Problems during device discovery.");
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
Log.write("Device discovery completed!");
|
||||
return deviceDiscovery.getDiscoveredWiimotes();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the number of wiimotes discovered.
|
||||
*
|
||||
* @return Number of wiimotes discovered.
|
||||
*/
|
||||
public int getNumberOfDevices() {
|
||||
if(this.devices!=null) {
|
||||
return this.devices.size();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Trainbutton for all wiimotes;
|
||||
*
|
||||
* @param b ManageButton encoding, see static Wiimote values
|
||||
*/
|
||||
public void setTrainButton(int b) {
|
||||
for (int i = 0; i < this.devices.size(); i++) {
|
||||
this.devices.elementAt(i).setTrainButton(b);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the Recognitionbutton for all wiimotes;
|
||||
*
|
||||
* @param b ManageButton encoding, see static Wiimote values
|
||||
*/
|
||||
public void setRecognitionButton(int b) {
|
||||
for (int i = 0; i < this.devices.size(); i++) {
|
||||
this.devices.elementAt(i).setRecognitionButton(b);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the CloseGesturebutton for all wiimotes;
|
||||
*
|
||||
* @param b ManageButton encoding, see static Wiimote values
|
||||
*/
|
||||
public void setCloseGestureButton(int b) {
|
||||
for (int i = 0; i < this.devices.size(); i++) {
|
||||
this.devices.elementAt(i).setCloseGestureButton(b);
|
||||
}
|
||||
}
|
||||
|
||||
public void addDeviceListener(AccelerationListener listener) {
|
||||
for (int i = 0; i < this.devices.size(); i++) {
|
||||
this.devices.elementAt(i).addAccelerationListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public void addGestureListener(GestureListener listener) {
|
||||
for (int i = 0; i < this.devices.size(); i++) {
|
||||
this.devices.elementAt(i).addGestureListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public void addAccelerationFilter(Filter filter) {
|
||||
for (int i = 0; i < this.devices.size(); i++) {
|
||||
this.devices.elementAt(i).addAccelerationFilter(filter);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,605 +0,0 @@
|
||||
/*
|
||||
* wiigee - accelerometerbased gesture recognition
|
||||
* Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
|
||||
*
|
||||
* Developed at University of Oldenburg
|
||||
* Contact: wiigee@benjaminpoppinga.de
|
||||
*
|
||||
* This file is part of wiigee.
|
||||
*
|
||||
* wiigee is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
package org.wiigee.device;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Random;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.wiigee.event.InfraredEvent;
|
||||
import org.wiigee.event.InfraredListener;
|
||||
import org.wiigee.event.RotationEvent;
|
||||
import org.wiigee.event.RotationListener;
|
||||
import org.wiigee.event.RotationSpeedEvent;
|
||||
import org.wiigee.filter.Filter;
|
||||
import org.wiigee.util.Log;
|
||||
|
||||
/**
|
||||
* This class represents the basic functions of the wiimote.
|
||||
* If you want your wiimote to e.g. vibrate you'll do this here.
|
||||
*
|
||||
* @author Benjamin 'BePo' Poppinga
|
||||
*/
|
||||
public class Wiimote extends Device {
|
||||
|
||||
// Fixed number values.
|
||||
public static final int BUTTON_2 = 0x0001;
|
||||
public static final int BUTTON_1 = 0x0002;
|
||||
public static final int BUTTON_B = 0x0004;
|
||||
public static final int BUTTON_A = 0x0008;
|
||||
public static final int BUTTON_MINUS = 0x0010;
|
||||
public static final int BUTTON_HOME = 0x0080;
|
||||
public static final int BUTTON_LEFT = 0x0100;
|
||||
public static final int BUTTON_RIGHT = 0x0200;
|
||||
public static final int BUTTON_DOWN = 0x0400;
|
||||
public static final int BUTTON_UP = 0x0800;
|
||||
public static final int BUTTON_PLUS = 0x1000;
|
||||
|
||||
// Reports
|
||||
public static final byte CMD_SET_REPORT = 0x52;
|
||||
|
||||
// IR Modes
|
||||
public static final byte IR_MODE_STANDARD = 0x01;
|
||||
public static final byte IR_MODE_EXTENDED = 0x03;
|
||||
|
||||
// Modes / Channels
|
||||
public static final byte MODE_BUTTONS = 0x30;
|
||||
public static final byte MODE_BUTTONS_ACCELERATION = 0x31;
|
||||
public static final byte MODE_BUTTONS_ACCELERATION_INFRARED = 0x33;
|
||||
|
||||
// Bluetooth-adress as string representation
|
||||
private String btaddress;
|
||||
|
||||
// LED encoded as byte
|
||||
byte ledencoding;
|
||||
|
||||
// Filters, can filter the data stream
|
||||
protected Vector<Filter> rotfilters = new Vector<Filter>();
|
||||
|
||||
// control connection, send commands to wiimote
|
||||
private L2CAPConnection controlCon;
|
||||
|
||||
// receive connection, receive answers from wiimote
|
||||
private L2CAPConnection receiveCon;
|
||||
|
||||
// Listeners, receive generated events
|
||||
protected Vector<InfraredListener> infraredlistener = new Vector<InfraredListener>();
|
||||
protected Vector<RotationListener> rotationListener = new Vector<RotationListener>();
|
||||
|
||||
// keep track of the orientation
|
||||
private double pitch = 0.0;
|
||||
private double roll = 0.0;
|
||||
private double yaw = 0.0;
|
||||
|
||||
// Functional
|
||||
private boolean vibrating;
|
||||
private boolean calibrated;
|
||||
private boolean infraredEnabled;
|
||||
private WiimoteStreamer wms;
|
||||
private boolean wiiMotionPlusEnabled;
|
||||
|
||||
/**
|
||||
* Creates a new wiimote-device with a specific bluetooth mac-adress.
|
||||
*
|
||||
* @param btaddress
|
||||
* String representation of the mac-adress e.g. 00191D68B57C.
|
||||
* @param autofiltering
|
||||
* If set the wiimote would automatically add the IdleStateFilter.
|
||||
* @param autoconnect
|
||||
* If set the wiimote would automatically be connected.
|
||||
*/
|
||||
public Wiimote(String btaddress, boolean autofiltering, boolean autoconnect) throws IOException {
|
||||
super(autofiltering);
|
||||
this.btaddress = this.removeChar(btaddress, ':');
|
||||
this.vibrating = false;
|
||||
this.setCloseGestureButton(Wiimote.BUTTON_HOME);
|
||||
this.setRecognitionButton(Wiimote.BUTTON_B);
|
||||
this.setTrainButton(Wiimote.BUTTON_A);
|
||||
|
||||
// automatic connect enabled
|
||||
if (autoconnect) {
|
||||
this.connect();
|
||||
this.calibrateAccelerometer();
|
||||
this.streamData(true);
|
||||
this.setLED(1);
|
||||
this.setAccelerationEnabled(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the two needed connections to send and receive commands
|
||||
* to and from the wiimote-device.
|
||||
*
|
||||
*/
|
||||
public void connect() throws IOException {
|
||||
this.controlCon = (L2CAPConnection) Connector.open("btl2cap://" +
|
||||
this.btaddress + ":11;authenticate=false;encrypt=false;master=false",
|
||||
Connector.WRITE); // 11
|
||||
this.receiveCon = (L2CAPConnection) Connector.open("btl2cap://" +
|
||||
this.btaddress + ":13;authenticate=false;encrypt=false;master=false",
|
||||
Connector.READ); // 13
|
||||
}
|
||||
|
||||
/**
|
||||
* Disconnects the wiimote and closes the two connections.
|
||||
*/
|
||||
public void disconnect() {
|
||||
this.vibrating = false;
|
||||
try {
|
||||
this.controlCon.close();
|
||||
this.receiveCon.close();
|
||||
Log.write("Disconnected wiimote.");
|
||||
} catch (Exception e) {
|
||||
Log.write("Failure during disconnect of wiimote.");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return
|
||||
* Receiving data connection
|
||||
*/
|
||||
public L2CAPConnection getReceiveConnection() {
|
||||
return this.receiveCon;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method makes the Wiimote-Class reacting to incoming data.
|
||||
* For just controlling and sending commands to the wiimote
|
||||
* (vibration, LEDs, ...) it's not necessary to call this method.
|
||||
*
|
||||
* @param value
|
||||
* true, if the class should react to incoming data.
|
||||
* false, if you only want to send commands to wiimote and
|
||||
* only the control-connection is used.
|
||||
*/
|
||||
public void streamData(boolean value) {
|
||||
if (value == true) {
|
||||
if (this.wms == null) {
|
||||
this.wms = new WiimoteStreamer(this);
|
||||
}
|
||||
wms.start();
|
||||
} else if (this.wms != null) {
|
||||
wms.stopThread();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The added Listener will be notified about detected infrated
|
||||
* events.
|
||||
*
|
||||
* @param listener The Listener to be added.
|
||||
*/
|
||||
public void addInfraredListener(InfraredListener listener) {
|
||||
this.infraredlistener.add(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* The added Listener will be notified about detected orientation
|
||||
* changes.
|
||||
*
|
||||
* @param listener The Listener to be added.
|
||||
*/
|
||||
public void addRotationListener(RotationListener listener) {
|
||||
this.rotationListener.add(listener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds a filter to process the rotation speed data of the
|
||||
* wiimote with an attached Wii Motion Plus.
|
||||
*
|
||||
* @param filter The Filter to be added.
|
||||
*/
|
||||
public void addRotationFilter(Filter filter) {
|
||||
this.rotfilters.add(filter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets all filters which are applied to the rotation data
|
||||
* from the Wii Motion Plus. Also resets _all_ determined orientation
|
||||
* angles, which should be extended with a consideration of other
|
||||
* external datas - maybe irda events.
|
||||
*/
|
||||
public void resetRotationFilters() {
|
||||
this.yaw = 0.0;
|
||||
this.pitch = 0.0;
|
||||
this.roll = 0.0;
|
||||
for (int i = 0; i < this.rotfilters.size(); i++) {
|
||||
this.rotfilters.elementAt(i).reset();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Write data to a register inside of the wiimote.
|
||||
*
|
||||
* @param offset The memory offset, 3 bytes.
|
||||
* @param data The data to be written, max. 16 bytes.
|
||||
* @throws IOException
|
||||
*/
|
||||
public void writeRegister(byte[] offset, byte[] data) throws IOException {
|
||||
byte[] raw = new byte[23];
|
||||
raw[0] = CMD_SET_REPORT;
|
||||
raw[1] = 0x16; // Write channel
|
||||
raw[2] = 0x04; // Register
|
||||
for (int i = 0; i < offset.length; i++) {
|
||||
raw[3 + i] = offset[i];
|
||||
}
|
||||
raw[6] = (byte) data.length;
|
||||
for (int i = 0; i < data.length; i++) {
|
||||
raw[7 + i] = data[i];
|
||||
}
|
||||
this.sendRaw(raw);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes the Wiimote respond the data of an register. The wiimotestreamer
|
||||
* doesn't react to the reponse yet.
|
||||
*
|
||||
* @param offset The memory offset.
|
||||
* @param size The size which has to be read out.
|
||||
* @throws IOException
|
||||
*/
|
||||
public void readRegister(byte[] offset, byte[] size) throws IOException {
|
||||
byte[] raw = new byte[8];
|
||||
raw[0] = CMD_SET_REPORT;
|
||||
raw[1] = 0x17; // Read channel
|
||||
raw[2] = 0x04; // Register
|
||||
for (int i = 0; i < offset.length; i++) {
|
||||
raw[3 + i] = offset[i];
|
||||
}
|
||||
for (int i = 0; i < size.length; i++) {
|
||||
raw[6 + i] = size[i];
|
||||
}
|
||||
this.sendRaw(raw);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads data out of the EEPROM of the wiimote.
|
||||
* At the moment this method is only used to read out the
|
||||
* calibration data, so the wiimotestreamer doesn't react for
|
||||
* every answer on this request.
|
||||
*
|
||||
* @param offset The memory offset.
|
||||
* @param size The size.
|
||||
* @throws IOException
|
||||
*/
|
||||
public void readEEPROM(byte[] offset, byte[] size) throws IOException {
|
||||
byte[] raw = new byte[8];
|
||||
raw[0] = CMD_SET_REPORT;
|
||||
raw[1] = 0x17; // Read channel
|
||||
raw[2] = 0x00; // EEPROM
|
||||
for (int i = 0; i < offset.length; i++) {
|
||||
raw[3 + i] = offset[i];
|
||||
}
|
||||
for (int i = 0; i < size.length; i++) {
|
||||
raw[6 + i] = size[i];
|
||||
}
|
||||
this.sendRaw(raw);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends pure hexdata to the wiimote. If you want your wiimote
|
||||
* to vibrate use sendRaw(new byte[] {0x52, 0x13, 0x01}). For other raw-commands use
|
||||
* the specific wiki-sites around the web (wiili.org, wiibrew.org, ...)
|
||||
* @param raw
|
||||
* byte representation of an command
|
||||
*/
|
||||
public void sendRaw(byte[] raw) throws IOException {
|
||||
if (this.controlCon != null) {
|
||||
this.controlCon.send(raw);
|
||||
try {
|
||||
Thread.sleep(100l);
|
||||
} catch (InterruptedException e) {
|
||||
System.out.println("sendRaw() interrupted");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables one or more LEDs, where the value could be between 0 and 8.
|
||||
* If value=1 only the left LED would light up, for value=2 the second
|
||||
* led would light up, for value=3 the first and second led would light up,
|
||||
* and so on...
|
||||
*
|
||||
* @param value Between 0 and 8, indicating which LEDs should light up
|
||||
* @throws IOException
|
||||
*/
|
||||
public void setLED(int value) throws IOException {
|
||||
if (value < 16 && value > 0) {
|
||||
byte tmp = (byte) value;
|
||||
this.ledencoding = (byte) (tmp << 4);
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x11, this.ledencoding});
|
||||
} else {
|
||||
// Random LED change :)
|
||||
this.setLED(new Random().nextInt(16));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the report channel according to the choosen
|
||||
* functions that are enabled (acceleration, irda, ...).
|
||||
*
|
||||
*/
|
||||
private void updateReportChannel() throws IOException {
|
||||
if(!accelerationEnabled
|
||||
&& !wiiMotionPlusEnabled
|
||||
&& !infraredEnabled) {
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x12, 0x00, 0x30});
|
||||
}
|
||||
else if(accelerationEnabled
|
||||
&& !wiiMotionPlusEnabled
|
||||
&& !infraredEnabled) {
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x12, 0x04, 0x31});
|
||||
}
|
||||
else if(!accelerationEnabled
|
||||
&& wiiMotionPlusEnabled
|
||||
&& !infraredEnabled) {
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x12, 0x00, 0x32});
|
||||
}
|
||||
else if(accelerationEnabled
|
||||
&& wiiMotionPlusEnabled
|
||||
&& !infraredEnabled) {
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x12, 0x04, 0x35});
|
||||
}
|
||||
else if(accelerationEnabled
|
||||
&& !wiiMotionPlusEnabled
|
||||
&& infraredEnabled) {
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x12, 0x04, 0x33});
|
||||
}
|
||||
else if(accelerationEnabled
|
||||
&& wiiMotionPlusEnabled
|
||||
&& infraredEnabled) {
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x12, 0x04, 0x37});
|
||||
}
|
||||
else {
|
||||
// default channel - fallback to button only.
|
||||
Log.write("Invalid Value Configuration: Fallback to Buttons only.");
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x12, 0x00, 0x30});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes the calibration of the accerlerometer. This is done once
|
||||
* per each controller in program lifetime.
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
private void calibrateAccelerometer() throws IOException {
|
||||
this.readEEPROM(new byte[]{0x00, 0x00, 0x20}, new byte[]{0x00, 0x07});
|
||||
this.calibrated = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Activates the acceleration sensor. You have to call the
|
||||
* streamData(true) method to react to this acceleration data.
|
||||
* Otherwise the wiimote would send data the whole time and
|
||||
* nothing else would happen.
|
||||
*
|
||||
*/
|
||||
@Override
|
||||
public void setAccelerationEnabled(boolean enabled) throws IOException {
|
||||
super.setAccelerationEnabled(enabled);
|
||||
if(enabled) {
|
||||
Log.write("Enabling ACCELEROMETER...");
|
||||
this.accelerationEnabled = true;
|
||||
if (!this.calibrated) {
|
||||
this.calibrateAccelerometer();
|
||||
}
|
||||
} else {
|
||||
Log.write("Disabling ACCELEROMETER...");
|
||||
this.accelerationEnabled = false;
|
||||
}
|
||||
|
||||
// change channel dynamically
|
||||
this.updateReportChannel();
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables or disables the infrared camera of the wiimote with
|
||||
* the default values.
|
||||
*
|
||||
* @param e Should the Infrared Camera be enabled.
|
||||
* @throws IOException In case of a connection error.
|
||||
*/
|
||||
public void setInfraredCameraEnabled(boolean enabled) throws IOException {
|
||||
this.setInfraredCameraEnabled(enabled, Wiimote.IR_MODE_STANDARD);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enables the infrared camera in front of the wiimote to track
|
||||
* IR sources in the field of view of the camera. This could be used
|
||||
* to a lot of amazing stuff. Using this Mode could slow down the
|
||||
* recognition of acceleration gestures during the increased data
|
||||
* size transmitted.
|
||||
*
|
||||
* @param e Should the Infrared Camera be enabled.
|
||||
* @param infraredMode The choosen Infrared Camera Mode.
|
||||
* @throws IOException In case of a connection error.
|
||||
*
|
||||
*/
|
||||
public void setInfraredCameraEnabled(boolean enabled, byte infraredMode) throws IOException {
|
||||
if(enabled) {
|
||||
Log.write("Enabling INFRARED CAMERA...");
|
||||
this.infraredEnabled = true;
|
||||
|
||||
//write 0x04 to output 0x13
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x13, 0x04});
|
||||
|
||||
// write 0x04 to output 0x1a
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x1a, 0x04});
|
||||
|
||||
// write 0x08 to reguster 0xb00030
|
||||
this.writeRegister(new byte[]{(byte) 0xb0, 0x00, 0x30}, new byte[]{0x08});
|
||||
|
||||
// write sensivity block 1 to register 0xb00000
|
||||
this.writeRegister(new byte[]{(byte) 0xb0, 0x00, 0x00}, new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, (byte) 0x90, 0x00, (byte) 0x41});
|
||||
|
||||
// write sensivity block 2 to register 0xb0001a
|
||||
this.writeRegister(new byte[]{(byte) 0xb0, 0x00, (byte) 0x1a}, new byte[]{0x40, 0x00});
|
||||
|
||||
// write ir-mode to register 0xb00033
|
||||
this.writeRegister(new byte[]{(byte) 0xb0, 0x00, 0x33}, new byte[]{infraredMode});
|
||||
} else {
|
||||
Log.write("Disabling INFRARED CAMERA...");
|
||||
this.infraredEnabled = false;
|
||||
}
|
||||
|
||||
// change channel dynamically
|
||||
this.updateReportChannel();
|
||||
}
|
||||
|
||||
/**
|
||||
* To enable the Wii Motion Plus extension. The wiimote will further get
|
||||
* every other information, like acceleration, infrared camera (loss of precision)
|
||||
* and button presses.
|
||||
*
|
||||
* @throws java.io.IOException
|
||||
*/
|
||||
public void setWiiMotionPlusEnabled(boolean enabled) throws IOException {
|
||||
if(enabled) {
|
||||
Log.write("Enabling WII MOTION PLUS..");
|
||||
this.wiiMotionPlusEnabled = true;
|
||||
// write 0x04 to 0x04a600fe to get wii m+ data within extension reports
|
||||
this.writeRegister(new byte[]{(byte) 0xa6, 0x00, (byte) 0xfe}, new byte[]{0x04});
|
||||
} else {
|
||||
Log.write("Disabling WII MOTION PLUS..");
|
||||
this.wiiMotionPlusEnabled = false;
|
||||
}
|
||||
|
||||
// change channel dynamically
|
||||
this.updateReportChannel();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* With this method you gain access over the vibrate function of
|
||||
* the wiimote. You got to try which time in milliseconds would
|
||||
* fit your requirements.
|
||||
*
|
||||
* @param milliseconds Time the wiimote would approx. vibrate.
|
||||
*/
|
||||
public void vibrateForTime(long milliseconds) throws IOException {
|
||||
try {
|
||||
if (!vibrating) {
|
||||
this.vibrating = true;
|
||||
byte tmp = (byte) (this.ledencoding | 0x01);
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x11, tmp});
|
||||
Thread.sleep(milliseconds);
|
||||
this.sendRaw(new byte[]{CMD_SET_REPORT, 0x11, this.ledencoding});
|
||||
this.vibrating = false;
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
System.out.println("WiiMoteThread interrupted.");
|
||||
}
|
||||
}
|
||||
|
||||
public double getPitch() {
|
||||
return this.pitch;
|
||||
}
|
||||
|
||||
public double getYaw() {
|
||||
return this.yaw;
|
||||
}
|
||||
|
||||
public double getRoll() {
|
||||
return this.roll;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fires a infrared event, containig coordinate pairs (x,y) and a
|
||||
* size of the detected IR spot.
|
||||
*
|
||||
* @param coordinates X and Y display coordinates.
|
||||
* @param size The size of the spot.
|
||||
*/
|
||||
public void fireInfraredEvent(int[][] coordinates, int[] size) {
|
||||
InfraredEvent w = new InfraredEvent(this, coordinates, size);
|
||||
for (int i = 0; i < this.infraredlistener.size(); i++) {
|
||||
this.infraredlistener.get(i).infraredReceived(w);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Fires the current relative orientation of the Wiimote to
|
||||
* all RotationListeners.
|
||||
*
|
||||
* @param yaw Orientation around Z axis.
|
||||
* @param roll Orientation around Y axis.
|
||||
* @param pitch Orientation around X axis.
|
||||
*/
|
||||
public void fireRotationEvent(double pitch, double roll, double yaw) {
|
||||
this.pitch = pitch;
|
||||
this.roll = roll;
|
||||
this.yaw = yaw;
|
||||
|
||||
RotationEvent w = new RotationEvent(this, pitch, roll, yaw);
|
||||
for (int i = 0; i < this.rotationListener.size(); i++) {
|
||||
this.rotationListener.elementAt(i).rotationReceived(w);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* If a Wii Motion Plus is attached and activated properly this
|
||||
* event could be fired within every change of orientation of the
|
||||
* device. The orientation is not used to do gesture recognition,
|
||||
* yet.
|
||||
*
|
||||
* @param vector The rotational speed vector, containing:
|
||||
* phi - Rotational speed of x axis (pitch)
|
||||
* theta - Rotational speed of y axis (roll)
|
||||
* psi - Rotational speed of z axis (yaw)
|
||||
*/
|
||||
public void fireRotationSpeedEvent(double[] vector) {
|
||||
for (int i = 0; i < this.rotfilters.size(); i++) {
|
||||
vector = this.rotfilters.get(i).filter(vector);
|
||||
// cannot return here if null, because of time-dependent filters
|
||||
}
|
||||
|
||||
if (vector != null) {
|
||||
RotationSpeedEvent w = new RotationSpeedEvent(this, vector[0], vector[1], vector[2]);
|
||||
for (int i = 0; i < this.rotationListener.size(); i++) {
|
||||
this.rotationListener.elementAt(i).rotationSpeedReceived(w);
|
||||
}
|
||||
|
||||
// calculate new orientation with integration
|
||||
// do not store new global values here, since they
|
||||
// need regular updates only depended on acceleration values.
|
||||
double tyaw = this.yaw + vector[0] * 0.01;
|
||||
double troll = this.roll + vector[1] * 0.01;
|
||||
double tpitch = this.pitch + vector[2] * 0.01;
|
||||
this.fireRotationEvent(tpitch, troll, tyaw);
|
||||
}
|
||||
}
|
||||
|
||||
// ###### Hilfsmethoden
|
||||
// TODO
|
||||
private String removeChar(String s, char c) {
|
||||
String r = "";
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
if (s.charAt(i) != c) {
|
||||
r += s.charAt(i);
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
}
|
||||
@@ -1,398 +0,0 @@
|
||||
/*
|
||||
* wiigee - accelerometerbased gesture recognition
|
||||
* Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
|
||||
*
|
||||
* Developed at University of Oldenburg
|
||||
* Contact: wiigee@benjaminpoppinga.de
|
||||
*
|
||||
* This file is part of wiigee.
|
||||
*
|
||||
* wiigee is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
package org.wiigee.device;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.EventObject;
|
||||
import java.util.Vector;
|
||||
|
||||
import org.wiigee.util.Log;
|
||||
|
||||
/**
|
||||
* This class listens to data sended by the wiimote and generates specific
|
||||
* events for acceleration, buttonpress, ...
|
||||
*
|
||||
* @author Benjamin 'BePo' Poppinga
|
||||
*
|
||||
*/
|
||||
public class WiimoteStreamer extends Thread {
|
||||
|
||||
private boolean running;
|
||||
private int buttonstate;
|
||||
private double x0, x1, y0, y1, z0, z1;
|
||||
private double psi0, theta0, phi0;
|
||||
private boolean wmpcalibrated;
|
||||
private int calibrationcounter;
|
||||
private Vector<double[]> calibrationsequence;
|
||||
private Wiimote wiimote;
|
||||
private L2CAPConnection receiveCon;
|
||||
private EventObject lastevent;
|
||||
|
||||
protected WiimoteStreamer(Wiimote wiimote) {
|
||||
this.wiimote = wiimote;
|
||||
this.receiveCon = wiimote.getReceiveConnection();
|
||||
this.buttonstate = 0;
|
||||
Log.write("WiimoteStreamer initialized...");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
Log.write("WiimoteStreamer running...");
|
||||
this.running = true;
|
||||
this.calibrationcounter = 0;
|
||||
this.calibrationsequence = new Vector<double[]>();
|
||||
|
||||
try {
|
||||
while (running) {
|
||||
// connection has data and we're ready.
|
||||
|
||||
byte[] b = this.getRaw(); // blocks application
|
||||
|
||||
// Log.write("");
|
||||
|
||||
// debug output
|
||||
/* for(int i=0; i<b.length; i++) {
|
||||
* System.out.print((int)b[i]&0xFF); if(i==input.length-1) {
|
||||
* System.out.println(""); } else { System.out.print(":"); } }
|
||||
*/
|
||||
|
||||
|
||||
if((b[1] & 0xFF) == 0x31) {
|
||||
this.handleButtonData(new byte[] { b[2], b[3] });
|
||||
this.handleAccelerationData(new byte[] { b[4], b[5], b[6] });
|
||||
//Log.write("0x31: ManageButton + Acc");
|
||||
}
|
||||
else if ((b[1] & 0xFF) == 0x33) {
|
||||
this.handleButtonData(new byte[] { b[2], b[3] });
|
||||
this.handleAccelerationData(new byte[]{b[4], b[5], b[6]});
|
||||
this.handleInfraredData(new byte[]{b[7], b[8], b[9],
|
||||
b[10], b[11], b[12],
|
||||
b[13], b[14], b[15],
|
||||
b[16], b[17], b[18]});
|
||||
//Log.write("0x33: ManageButton + Acc + Irda");
|
||||
}
|
||||
else if ((b[1] & 0xFF) == 0x37) {
|
||||
this.handleButtonData(new byte[] { b[2], b[3] });
|
||||
this.handleAccelerationData(new byte[]{b[4], b[5], b[6]});
|
||||
this.handleInfraredData(
|
||||
new byte[]{b[7], b[8], b[9], b[10], b[11], b[12],
|
||||
b[13], b[14], b[15], b[16]});
|
||||
this.handleWiiMotionPlusData(
|
||||
new byte[]{b[17], b[18], b[19], b[20], b[21], b[22]});
|
||||
//Log.write("0x37: ManageButton + Acc + Ext");
|
||||
}
|
||||
else if ((b[1] & 0xFF) == 0x21) {
|
||||
this.handleButtonData(new byte[] { b[2], b[3] });
|
||||
|
||||
// calibration data
|
||||
if (((b[5] & 0xFF) == 0x00) && ((b[6] & 0xFF) == 0x20)) {
|
||||
this.handleCalibrationData(
|
||||
new byte[]{b[7], b[8], b[9], b[11], b[12], b[13]});
|
||||
// Log.write("0x21: Calibration result");
|
||||
} else {
|
||||
this.handleRawDataAnswer(
|
||||
new byte[]{b[5], b[6]},
|
||||
new byte[]{b[7], b[8], b[9], b[10], b[11], b[12],
|
||||
b[13], b[14], b[15], b[16], b[17], b[18], b[19], b[20],
|
||||
b[21], b[22]
|
||||
});
|
||||
// Log.write("0x21: Raw data answer");
|
||||
}
|
||||
|
||||
}
|
||||
else if ((b[1] & 0xFF) == (byte) 0x3d) {
|
||||
Log.write("0x3D: Ext only");
|
||||
}
|
||||
else {
|
||||
Log.write("Unknown data retrieved.");
|
||||
this.printBytes(b);
|
||||
}
|
||||
|
||||
|
||||
|
||||
} // while(running)
|
||||
|
||||
} catch (IOException e) {
|
||||
Log.write("Streamer: Connection to Wiimote lost.");
|
||||
this.running = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles calibration Data
|
||||
*
|
||||
* @param data An array of bytes, containing the data.
|
||||
*/
|
||||
private void handleCalibrationData(byte[] data) {
|
||||
this.x0 = data[0] & 0xFF;
|
||||
this.y0 = data[1] & 0xFF;
|
||||
this.z0 = data[2] & 0xFF;
|
||||
this.x1 = data[3] & 0xFF;
|
||||
this.y1 = data[4] & 0xFF;
|
||||
this.z1 = data[5] & 0xFF;
|
||||
Log.write("Autocalibration successful!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles a raw data answer: It just prints it out.
|
||||
*
|
||||
* @param offset The offset of the maybe read data.
|
||||
* @param data The data itself.
|
||||
*/
|
||||
private void handleRawDataAnswer(byte[] offset, byte[] data) {
|
||||
String out = "";
|
||||
String[] o = this.byte2hex(offset);
|
||||
String[] d = this.byte2hex(data);
|
||||
out += "READ " + o[0] + "" + o[1] + ": ";
|
||||
for (int i = 0; i < d.length; i++) {
|
||||
out += d[i] + " ";
|
||||
}
|
||||
Log.write(out);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the Wii Motion Plus data to generate orientation
|
||||
* events on the Wiimote.
|
||||
*
|
||||
* @param data The data containing the raw rotation speeds.
|
||||
*/
|
||||
private void handleWiiMotionPlusData(byte[] data) {
|
||||
|
||||
// fixed values until calibration procedure is known
|
||||
//int psi0 = 8265;
|
||||
//int theta0 = 7963;
|
||||
//int phi0 = 7923;
|
||||
|
||||
//this.printBytes(new byte[]{ data[3], data[4], data[5]});
|
||||
|
||||
int psiL = (data[0] & 0xFF);
|
||||
int thetaL = (data[1] & 0xFF);
|
||||
int phiL = (data[2] & 0xFF);
|
||||
|
||||
// cut two lower bits of UPPER values, shift right
|
||||
int psiU = ((data[3] & 0xFC) << 6);
|
||||
int thetaU = ((data[4] & 0xFC) << 6);
|
||||
int phiU = ((data[5] & 0xFC) << 6);
|
||||
|
||||
// add the two values
|
||||
int psiRAW = psiU + psiL;
|
||||
int thetaRAW = thetaU + thetaL;
|
||||
int phiRAW = phiU + phiL;
|
||||
|
||||
// average of 50 samples for calibration
|
||||
if (!this.wmpcalibrated) {
|
||||
if (this.calibrationcounter++ < 50) {
|
||||
this.calibrationsequence.add(new double[]{psiRAW, thetaRAW, phiRAW});
|
||||
} else {
|
||||
this.calibrateWiiMotionPlus();
|
||||
}
|
||||
} else { // is calibrated
|
||||
// calculate degrees per second movement
|
||||
double psi = (double) (psiRAW - psi0) / 20.0;
|
||||
double theta = (double) (thetaRAW - theta0) / 20.0;
|
||||
double phi = (double) (phiRAW - phi0) / 20.0;
|
||||
|
||||
this.wiimote.fireRotationSpeedEvent(new double[]{-psi, -theta, -phi});
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Build an average of the presaved rotation sequences to have a reference
|
||||
* value for 'not rotating'. This is a kind of calibration until the original
|
||||
* calibration procedure for the wii motion plus is known.
|
||||
*/
|
||||
private void calibrateWiiMotionPlus() {
|
||||
for (int i = 0; i < this.calibrationsequence.size(); i++) {
|
||||
this.psi0 += this.calibrationsequence.elementAt(i)[0];
|
||||
this.theta0 += this.calibrationsequence.elementAt(i)[1];
|
||||
this.phi0 += this.calibrationsequence.elementAt(i)[2];
|
||||
}
|
||||
this.psi0 /= this.calibrationsequence.size();
|
||||
this.theta0 /= this.calibrationsequence.size();
|
||||
this.phi0 /= this.calibrationsequence.size();
|
||||
this.wmpcalibrated = true;
|
||||
Log.write("Wii Motion Plus calibrated manually!");
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the raw infrared data, containing the spot positions
|
||||
* and the intensities of the spots. At the moment only the
|
||||
* 12 Byte irda raw data is supported.
|
||||
*
|
||||
* @param data 12 Bytes of raw irda data.
|
||||
*/
|
||||
private void handleInfraredData(byte[] data) {
|
||||
int[][] coordinates = new int[4][2];
|
||||
int[] size = new int[] { 1, 1, 1, 1 };
|
||||
int j = 0;
|
||||
|
||||
// normal mode
|
||||
if(data.length == 10) {
|
||||
for(int i=0; i<10; i+=5) { // for each IR fife-byte segment
|
||||
int tailX1 = data[i] & 0xFF;
|
||||
int tailY1 = data[i+1] & 0xFF;
|
||||
int preY1 = (data[i+2] & 0xC0) << 2;
|
||||
int preX1 = (data[i+2] & 0x30) << 4;
|
||||
int preY2 = (data[i+2] & 0x0C) << 6;
|
||||
int preX2 = (data[i+2] & 0x03) << 8;
|
||||
int tailX2 = data[i+3] & 0xFF;
|
||||
int tailY2 = data[i+4] & 0xFF;
|
||||
|
||||
coordinates[j][0] = tailX1 + preX1;
|
||||
coordinates[j][1] = tailY1 + preY1;
|
||||
coordinates[j+1][0] = tailX2 + preX2;
|
||||
coordinates[j+1][1] = tailY2 + preY2;
|
||||
j+=2;
|
||||
}
|
||||
|
||||
} else if (data.length == 12) { // extended mode
|
||||
for (int i = 0; i < 12; i += 3) { // for each IR byte
|
||||
// triple
|
||||
int tailX = data[i] & 0xFF;
|
||||
int tailY = data[i + 1] & 0xFF;
|
||||
int preY = (data[i + 2] & 0xC0) << 2;
|
||||
int preX = (data[i + 2] & 0x30) << 4;
|
||||
|
||||
coordinates[j][0] = tailX + preX;
|
||||
coordinates[j][1] = tailY + preY;
|
||||
size[j++] = (data[i + 2] & 0x0F);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.wiimote.fireInfraredEvent(coordinates, size);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the retrieved acceleration data and fires
|
||||
* corresponding Acceleration Event on the Device.
|
||||
*
|
||||
* @param data
|
||||
*/
|
||||
private void handleAccelerationData(byte[] data) {
|
||||
// convert to int.
|
||||
int xraw = (data[0] & 0xFF);
|
||||
int yraw = (data[1] & 0xFF);
|
||||
int zraw = (data[2] & 0xFF);
|
||||
|
||||
// calculate acceleration with calibration data.
|
||||
double x = (double) (xraw - x0) / (double) (x1 - x0);
|
||||
double y = (double) (yraw - y0) / (double) (y1 - y0);
|
||||
double z = (double) (zraw - z0) / (double) (z1 - z0);
|
||||
|
||||
this.wiimote.fireAccelerationEvent(new double[]{x, y, z});
|
||||
}
|
||||
|
||||
/**
|
||||
* Decodes the two bytes with the button press and release bits.
|
||||
*
|
||||
* @param a First button byte.
|
||||
* @param b Second button byte.
|
||||
*/
|
||||
private void handleButtonData(byte[] data) {
|
||||
byte first = (byte)(data[0] & 0xFF);
|
||||
byte second = (byte)(data[1] & 0xFF);
|
||||
int newbuttons = (first<<8) + second;
|
||||
|
||||
int delta = this.buttonstate ^ newbuttons; // XOR
|
||||
|
||||
int shift = 0x0001;
|
||||
while(shift<0x1000) {
|
||||
if(shift!=0x0020 && shift!=0x0040) { // reserved bytes
|
||||
if((delta&shift)==shift) { // change detected
|
||||
if((newbuttons&shift)==shift) { // press detected
|
||||
this.wiimote.fireButtonPressedEvent(shift);
|
||||
} else { // release detected
|
||||
this.wiimote.fireButtonReleasedEvent(shift);
|
||||
}
|
||||
}
|
||||
}
|
||||
shift<<=1;
|
||||
}
|
||||
|
||||
this.buttonstate = newbuttons;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets 23 bytes out of the Receive Connection Stream.
|
||||
*
|
||||
* @return The 23 retrieved bytes.
|
||||
* @throws java.io.IOException
|
||||
*/
|
||||
private byte[] getRaw() throws IOException {
|
||||
byte[] b = new byte[23];
|
||||
this.receiveCon.receive(b);
|
||||
return b;
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops this thread.
|
||||
*/
|
||||
protected void stopThread() {
|
||||
this.running = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* true if thread is running.
|
||||
* @return true if thread is running, false otherwise.
|
||||
*/
|
||||
protected boolean isRunning() {
|
||||
return this.running;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prints a byte stream as hex string.
|
||||
* @param b
|
||||
*/
|
||||
private void printBytes(byte[] b) {
|
||||
String out = "";
|
||||
String[] s = this.byte2hex(b);
|
||||
for (int i = 0; i < s.length; i++) {
|
||||
out += " " + s[i];
|
||||
}
|
||||
Log.write(out);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a byte array to a string array.
|
||||
*
|
||||
* @param b
|
||||
* @return
|
||||
*/
|
||||
private String[] byte2hex(byte[] b) {
|
||||
String[] out = new String[b.length];
|
||||
String stmp = "";
|
||||
for (int n = 0; n < b.length; n++) {
|
||||
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
|
||||
if (stmp.length() == 1) {
|
||||
out[n] = ("0" + stmp).toUpperCase();
|
||||
} else {
|
||||
out[n] = stmp.toUpperCase();
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
}
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
* wiigee - accelerometerbased gesture recognition
|
||||
* Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
|
||||
*
|
||||
* Developed at University of Oldenburg
|
||||
* Contact: wiigee@benjaminpoppinga.de
|
||||
*
|
||||
* This file is part of wiigee.
|
||||
*
|
||||
* wiigee is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
package org.wiigee.filter;
|
||||
|
||||
import org.wiigee.device.Wiimote;
|
||||
import org.wiigee.util.Log;
|
||||
|
||||
/**
|
||||
* Removes rotation events which are for all axis
|
||||
* under a defined threshold value (which default is 2.0 degrees
|
||||
* per second TBD).
|
||||
*
|
||||
* @author Benjamin 'BePo' Poppinga
|
||||
*/
|
||||
public class RotationResetFilter extends Filter {
|
||||
|
||||
private Wiimote device;
|
||||
|
||||
public RotationResetFilter(Wiimote source) {
|
||||
super();
|
||||
this.device = source;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void reset() {
|
||||
// nothing to reset here
|
||||
}
|
||||
|
||||
public double[] filterAlgorithm(double[] vector) {
|
||||
double abs = Math.sqrt(vector[0]*vector[0]+
|
||||
vector[1]*vector[1]+
|
||||
vector[2]*vector[2]);
|
||||
|
||||
if(abs<=1.05 && abs>=0.95) { // wiimote is idle
|
||||
|
||||
//roll = arctan2(ax,sqrt(ay2+az2))
|
||||
//pitch = arctan2(ay,sqrt(ax2+az2))
|
||||
|
||||
double tphi = Math.toDegrees(Math.atan2(vector[0], Math.sqrt(vector[1]*vector[1]+vector[2]*vector[2])));
|
||||
double ttheta = Math.toDegrees(Math.atan2(vector[1], Math.sqrt(vector[0]*vector[0]+vector[2]*vector[2])));
|
||||
this.device.fireRotationEvent(tphi, ttheta, this.device.getYaw());
|
||||
Log.write("reset rotation using acceleration. pitch="+tphi+" roll="+ttheta);
|
||||
}
|
||||
return vector;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,179 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.test;
|
||||
|
||||
import wiiusej.WiiUseApiManager;
|
||||
import wiiusej.Wiimote;
|
||||
import wiiusej.utils.ClassicControllerButtonsEventPanel;
|
||||
import wiiusej.wiiusejevents.physicalevents.ClassicControllerEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This frame is used to display events from a classic controller.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class ClassicControllerGuiTest extends javax.swing.JFrame implements WiimoteListener {
|
||||
|
||||
private Wiimote wiimote;
|
||||
private static int MAX_SHOULDER = 100;
|
||||
|
||||
/** Creates new form ClassicControllerGuiTest */
|
||||
public ClassicControllerGuiTest(Wiimote wiimote) {
|
||||
initComponents();
|
||||
this.wiimote = wiimote;
|
||||
registerListeners();
|
||||
leftShoulderBar.setMaximum(MAX_SHOULDER);
|
||||
rightShoulderBar.setMaximum(MAX_SHOULDER);
|
||||
}
|
||||
|
||||
private void registerListeners() {
|
||||
wiimote.addWiiMoteEventListeners(this);
|
||||
wiimote.addWiiMoteEventListeners((ClassicControllerButtonsEventPanel) classicControllerPanel);
|
||||
}
|
||||
|
||||
public void unRegisterListeners() {
|
||||
wiimote.removeWiiMoteEventListeners(this);
|
||||
wiimote.removeWiiMoteEventListeners((ClassicControllerButtonsEventPanel) classicControllerPanel);
|
||||
}
|
||||
|
||||
/** This method is called from within the constructor to
|
||||
* initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is
|
||||
* always regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
shouldersPanel = new javax.swing.JPanel();
|
||||
leftShoulderBar = new javax.swing.JProgressBar();
|
||||
rightShoulderBar = new javax.swing.JProgressBar();
|
||||
classicControllerPanel = new wiiusej.utils.ClassicControllerButtonsEventPanel();
|
||||
|
||||
setTitle("WiiuseJ Classic Controller Test GUI");
|
||||
setResizable(false);
|
||||
getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS));
|
||||
|
||||
shouldersPanel.setMaximumSize(new java.awt.Dimension(350, 16));
|
||||
shouldersPanel.setMinimumSize(new java.awt.Dimension(350, 16));
|
||||
shouldersPanel.setPreferredSize(new java.awt.Dimension(350, 16));
|
||||
shouldersPanel.setLayout(new javax.swing.BoxLayout(shouldersPanel, javax.swing.BoxLayout.LINE_AXIS));
|
||||
shouldersPanel.add(leftShoulderBar);
|
||||
shouldersPanel.add(rightShoulderBar);
|
||||
|
||||
getContentPane().add(shouldersPanel);
|
||||
|
||||
classicControllerPanel.setMaximumSize(new java.awt.Dimension(350, 182));
|
||||
classicControllerPanel.setMinimumSize(new java.awt.Dimension(350, 182));
|
||||
|
||||
javax.swing.GroupLayout classicControllerPanelLayout = new javax.swing.GroupLayout(classicControllerPanel);
|
||||
classicControllerPanel.setLayout(classicControllerPanelLayout);
|
||||
classicControllerPanelLayout.setHorizontalGroup(
|
||||
classicControllerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 350, Short.MAX_VALUE)
|
||||
);
|
||||
classicControllerPanelLayout.setVerticalGroup(
|
||||
classicControllerPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 182, Short.MAX_VALUE)
|
||||
);
|
||||
|
||||
getContentPane().add(classicControllerPanel);
|
||||
|
||||
pack();
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
if (arg0 instanceof ClassicControllerEvent) {
|
||||
ClassicControllerEvent classicController = (ClassicControllerEvent) arg0;
|
||||
float leftShoulder = classicController.getLeftShoulder();
|
||||
float rightShoulder = classicController.getRightShoulder();
|
||||
leftShoulderBar.setValue(Math.round(leftShoulder * MAX_SHOULDER));
|
||||
rightShoulderBar.setValue(Math.round(rightShoulder * MAX_SHOULDER));
|
||||
}
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
Wiimote[] wiimotes = WiiUseApiManager.getWiimotes(1, true);
|
||||
ClassicControllerGuiTest gui = null;
|
||||
if (wiimotes.length > 0) {
|
||||
gui = new ClassicControllerGuiTest(wiimotes[0]);
|
||||
}
|
||||
gui.setDefaultCloseOperation(WiiuseJGuiTest.EXIT_ON_CLOSE);
|
||||
gui.setVisible(true);
|
||||
}
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JPanel classicControllerPanel;
|
||||
private javax.swing.JProgressBar leftShoulderBar;
|
||||
private javax.swing.JProgressBar rightShoulderBar;
|
||||
private javax.swing.JPanel shouldersPanel;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.test;
|
||||
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.awt.event.WindowListener;
|
||||
|
||||
import wiiusej.WiiUseApiManager;
|
||||
|
||||
/**
|
||||
* This class is used to close wiiusej cleanly.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class CloseGuiTestCleanly implements WindowListener {
|
||||
|
||||
public void windowOpened(WindowEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void windowClosing(WindowEvent e) {
|
||||
WiiUseApiManager.definitiveShutdown();
|
||||
}
|
||||
|
||||
public void windowClosed(WindowEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void windowIconified(WindowEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void windowDeiconified(WindowEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void windowActivated(WindowEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void windowDeactivated(WindowEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,168 +0,0 @@
|
||||
/*
|
||||
* GuitarHeroGUITest.java
|
||||
*
|
||||
* Created on 12 juin 2008, 23:10
|
||||
*/
|
||||
package wiiusej.test;
|
||||
|
||||
import wiiusej.Wiimote;
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.GuitarHeroEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This frame is used to display events from a Guitar Hero 3.
|
||||
* @author guiguito
|
||||
*/
|
||||
public class GuitarHero3GuiTest extends javax.swing.JFrame implements WiimoteListener {
|
||||
|
||||
private Wiimote wiimote;
|
||||
private static int MAX_WHAMMY_BAR = 100;
|
||||
|
||||
/** Creates new form GuitarHeroGUITest */
|
||||
public GuitarHero3GuiTest(Wiimote wiimote) {
|
||||
initComponents();
|
||||
this.wiimote = wiimote;
|
||||
whammyProgressBar.setMaximum(MAX_WHAMMY_BAR);
|
||||
registerListeners();
|
||||
}
|
||||
|
||||
private void registerListeners() {
|
||||
wiimote.addWiiMoteEventListeners(this);
|
||||
//register panel buttons
|
||||
wiimote.addWiiMoteEventListeners(guitarHero3ButtonsEventPanel);
|
||||
//register joystick panel
|
||||
wiimote.addWiiMoteEventListeners(guitarHero3JoystickPanel);
|
||||
}
|
||||
|
||||
public void unRegisterListeners() {
|
||||
wiimote.removeWiiMoteEventListeners(this);
|
||||
wiimote.removeWiiMoteEventListeners(guitarHero3ButtonsEventPanel);
|
||||
wiimote.removeWiiMoteEventListeners(guitarHero3JoystickPanel);
|
||||
}
|
||||
|
||||
/** This method is called from within the constructor to
|
||||
* initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is
|
||||
* always regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
buttonsEventPanel = new javax.swing.JPanel();
|
||||
guitarHero3ButtonsEventPanel = new wiiusej.utils.GuitarHero3ButtonsEventPanel();
|
||||
bottomPanel = new javax.swing.JPanel();
|
||||
guitarHero3JoystickPanel = new wiiusej.utils.GuitarHeroJoystickEventPanel();
|
||||
whammyProgressBar = new javax.swing.JProgressBar();
|
||||
|
||||
setTitle("WiiuseJ Guitar Hero 3 Test GUI");
|
||||
getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS));
|
||||
|
||||
buttonsEventPanel.setBackground(new java.awt.Color(0, 0, 0));
|
||||
|
||||
javax.swing.GroupLayout buttonsEventPanelLayout = new javax.swing.GroupLayout(buttonsEventPanel);
|
||||
buttonsEventPanel.setLayout(buttonsEventPanelLayout);
|
||||
buttonsEventPanelLayout.setHorizontalGroup(
|
||||
buttonsEventPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 526, Short.MAX_VALUE)
|
||||
.addGroup(buttonsEventPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(buttonsEventPanelLayout.createSequentialGroup()
|
||||
.addGap(0, 0, Short.MAX_VALUE)
|
||||
.addComponent(guitarHero3ButtonsEventPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(0, 0, Short.MAX_VALUE)))
|
||||
);
|
||||
buttonsEventPanelLayout.setVerticalGroup(
|
||||
buttonsEventPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 96, Short.MAX_VALUE)
|
||||
.addGroup(buttonsEventPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(buttonsEventPanelLayout.createSequentialGroup()
|
||||
.addGap(0, 0, Short.MAX_VALUE)
|
||||
.addComponent(guitarHero3ButtonsEventPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||
.addGap(0, 0, Short.MAX_VALUE)))
|
||||
);
|
||||
|
||||
getContentPane().add(buttonsEventPanel);
|
||||
|
||||
bottomPanel.setBackground(new java.awt.Color(0, 0, 0));
|
||||
bottomPanel.setLayout(new javax.swing.BoxLayout(bottomPanel, javax.swing.BoxLayout.X_AXIS));
|
||||
bottomPanel.add(guitarHero3JoystickPanel);
|
||||
|
||||
whammyProgressBar.setBackground(new java.awt.Color(255, 255, 255));
|
||||
whammyProgressBar.setForeground(new java.awt.Color(255, 0, 255));
|
||||
bottomPanel.add(whammyProgressBar);
|
||||
|
||||
getContentPane().add(bottomPanel);
|
||||
|
||||
pack();
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
if (arg0 instanceof GuitarHeroEvent) {
|
||||
GuitarHeroEvent guitar = (GuitarHeroEvent) arg0;
|
||||
//move progress bar for whammy bar
|
||||
whammyProgressBar.setValue(Math.round(MAX_WHAMMY_BAR*guitar.getWhammyBar()));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JPanel bottomPanel;
|
||||
private javax.swing.JPanel buttonsEventPanel;
|
||||
private wiiusej.utils.GuitarHero3ButtonsEventPanel guitarHero3ButtonsEventPanel;
|
||||
private wiiusej.utils.GuitarHeroJoystickEventPanel guitarHero3JoystickPanel;
|
||||
private javax.swing.JProgressBar whammyProgressBar;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,45 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.test;
|
||||
|
||||
import wiiusej.WiiUseApiManager;
|
||||
import wiiusej.Wiimote;
|
||||
|
||||
/**
|
||||
* NetworkClient Class to launch WiiuseJ GUI Test.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class Main {
|
||||
|
||||
/**
|
||||
* @param args
|
||||
* the command line arguments
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Wiimote[] wiimotes = WiiUseApiManager.getWiimotes(1, true);
|
||||
WiiuseJGuiTest gui = null;
|
||||
if (wiimotes.length > 0) {
|
||||
gui = new WiiuseJGuiTest(wiimotes[0]);
|
||||
} else {
|
||||
gui = new WiiuseJGuiTest();
|
||||
}
|
||||
gui.setDefaultCloseOperation(WiiuseJGuiTest.EXIT_ON_CLOSE);
|
||||
gui.setVisible(true);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,450 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.test;
|
||||
|
||||
import wiiusej.Wiimote;
|
||||
import wiiusej.utils.AccelerationExpansionEventPanel;
|
||||
import wiiusej.utils.AccelerationPanel;
|
||||
import wiiusej.utils.GForceExpansionEventPanel;
|
||||
import wiiusej.utils.GForcePanel;
|
||||
import wiiusej.utils.NunchukJoystickEventPanel;
|
||||
import wiiusej.utils.OrientationExpansionEventPanel;
|
||||
import wiiusej.utils.OrientationPanel;
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.NunchukButtonsEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.NunchukEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This frame is used to display events from a nunchuk.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class NunchukGuiTest extends javax.swing.JFrame implements
|
||||
WiimoteListener {
|
||||
|
||||
private Wiimote wiimote;
|
||||
private boolean isThresholdsRequested = true;
|
||||
|
||||
/** Creates new form NunchukGuiTest */
|
||||
public NunchukGuiTest(Wiimote wiimote) {
|
||||
initComponents();
|
||||
this.wiimote = wiimote;
|
||||
registerListeners();
|
||||
}
|
||||
|
||||
private void registerListeners() {
|
||||
wiimote.addWiiMoteEventListeners(this);
|
||||
wiimote.addWiiMoteEventListeners((OrientationPanel) orientationPanel);
|
||||
wiimote.addWiiMoteEventListeners((GForcePanel) gForcePanel);
|
||||
wiimote
|
||||
.addWiiMoteEventListeners((AccelerationPanel) rawAccelerationPanel);
|
||||
wiimote
|
||||
.addWiiMoteEventListeners((NunchukJoystickEventPanel) joystickEventsPanel);
|
||||
}
|
||||
|
||||
public void unRegisterListeners() {
|
||||
wiimote
|
||||
.removeWiiMoteEventListeners((OrientationPanel) orientationPanel);
|
||||
wiimote.removeWiiMoteEventListeners((GForcePanel) gForcePanel);
|
||||
wiimote
|
||||
.removeWiiMoteEventListeners((AccelerationPanel) rawAccelerationPanel);
|
||||
wiimote
|
||||
.removeWiiMoteEventListeners((NunchukJoystickEventPanel) joystickEventsPanel);
|
||||
wiimote.removeWiiMoteEventListeners(this);
|
||||
}
|
||||
|
||||
public void requestThresholdsUpdate() {
|
||||
isThresholdsRequested = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated
|
||||
// Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
topPanels = new javax.swing.JPanel();
|
||||
joystickEventsPanel = new NunchukJoystickEventPanel();
|
||||
motionSensingEventsPanel = new javax.swing.JPanel();
|
||||
motionSensingEventsTabbedPanels = new javax.swing.JTabbedPane();
|
||||
rawAccelerationPanel = new AccelerationExpansionEventPanel();
|
||||
orientationPanel = new OrientationExpansionEventPanel();
|
||||
gForcePanel = new GForceExpansionEventPanel();
|
||||
setNunchukValuesPanel = new javax.swing.JPanel();
|
||||
nunchukButtonsEventPanel = new javax.swing.JPanel();
|
||||
cButton = new javax.swing.JButton();
|
||||
zButton = new javax.swing.JButton();
|
||||
nunchukOrientationPanel = new javax.swing.JPanel();
|
||||
nunchukOrientationTextField = new javax.swing.JTextField();
|
||||
nunchukOrientationButton = new javax.swing.JButton();
|
||||
nunchukAccelerationPanel = new javax.swing.JPanel();
|
||||
nunchukAccelerationTextField = new javax.swing.JTextField();
|
||||
nunchukAccelerationButton = new javax.swing.JButton();
|
||||
messagePanel = new javax.swing.JPanel();
|
||||
messageText = new javax.swing.JLabel();
|
||||
|
||||
setTitle("WiiuseJ Nunchuk Test GUI");
|
||||
setMinimumSize(new java.awt.Dimension(400, 400));
|
||||
getContentPane().setLayout(
|
||||
new javax.swing.BoxLayout(getContentPane(),
|
||||
javax.swing.BoxLayout.Y_AXIS));
|
||||
|
||||
topPanels.setMinimumSize(new java.awt.Dimension(400, 200));
|
||||
topPanels.setPreferredSize(new java.awt.Dimension(400, 200));
|
||||
topPanels.setLayout(new javax.swing.BoxLayout(topPanels,
|
||||
javax.swing.BoxLayout.LINE_AXIS));
|
||||
|
||||
joystickEventsPanel.setBackground(new java.awt.Color(0, 0, 0));
|
||||
joystickEventsPanel.setBorder(javax.swing.BorderFactory
|
||||
.createTitledBorder(new javax.swing.border.LineBorder(
|
||||
new java.awt.Color(51, 153, 0), 2, true),
|
||||
"Joystick View",
|
||||
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
|
||||
javax.swing.border.TitledBorder.DEFAULT_POSITION,
|
||||
new java.awt.Font("Tahoma", 0, 11), new java.awt.Color(
|
||||
204, 102, 0)));
|
||||
joystickEventsPanel.setToolTipText("JoystickEvent");
|
||||
joystickEventsPanel.setMinimumSize(new java.awt.Dimension(200, 200));
|
||||
|
||||
javax.swing.GroupLayout joystickEventsPanelLayout = new javax.swing.GroupLayout(
|
||||
joystickEventsPanel);
|
||||
joystickEventsPanel.setLayout(joystickEventsPanelLayout);
|
||||
joystickEventsPanelLayout.setHorizontalGroup(joystickEventsPanelLayout
|
||||
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 601, Short.MAX_VALUE));
|
||||
joystickEventsPanelLayout.setVerticalGroup(joystickEventsPanelLayout
|
||||
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 174, Short.MAX_VALUE));
|
||||
|
||||
topPanels.add(joystickEventsPanel);
|
||||
joystickEventsPanel.getAccessibleContext()
|
||||
.setAccessibleName("Joystick");
|
||||
|
||||
motionSensingEventsPanel
|
||||
.setMinimumSize(new java.awt.Dimension(200, 200));
|
||||
|
||||
rawAccelerationPanel.setToolTipText("Nunchuk MotionSensingEvent");
|
||||
|
||||
javax.swing.GroupLayout rawAccelerationPanelLayout = new javax.swing.GroupLayout(
|
||||
rawAccelerationPanel);
|
||||
rawAccelerationPanel.setLayout(rawAccelerationPanelLayout);
|
||||
rawAccelerationPanelLayout
|
||||
.setHorizontalGroup(rawAccelerationPanelLayout
|
||||
.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 597, Short.MAX_VALUE));
|
||||
rawAccelerationPanelLayout.setVerticalGroup(rawAccelerationPanelLayout
|
||||
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 175, Short.MAX_VALUE));
|
||||
|
||||
motionSensingEventsTabbedPanels.addTab("RawAcceleration",
|
||||
rawAccelerationPanel);
|
||||
|
||||
javax.swing.GroupLayout orientationPanelLayout = new javax.swing.GroupLayout(
|
||||
orientationPanel);
|
||||
orientationPanel.setLayout(orientationPanelLayout);
|
||||
orientationPanelLayout.setHorizontalGroup(orientationPanelLayout
|
||||
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 597, Short.MAX_VALUE));
|
||||
orientationPanelLayout.setVerticalGroup(orientationPanelLayout
|
||||
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 175, Short.MAX_VALUE));
|
||||
|
||||
motionSensingEventsTabbedPanels.addTab("Orientation", orientationPanel);
|
||||
|
||||
javax.swing.GroupLayout gForcePanelLayout = new javax.swing.GroupLayout(
|
||||
gForcePanel);
|
||||
gForcePanel.setLayout(gForcePanelLayout);
|
||||
gForcePanelLayout.setHorizontalGroup(gForcePanelLayout
|
||||
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 597, Short.MAX_VALUE));
|
||||
gForcePanelLayout.setVerticalGroup(gForcePanelLayout
|
||||
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 175, Short.MAX_VALUE));
|
||||
|
||||
motionSensingEventsTabbedPanels.addTab("GForce", gForcePanel);
|
||||
|
||||
javax.swing.GroupLayout motionSensingEventsPanelLayout = new javax.swing.GroupLayout(
|
||||
motionSensingEventsPanel);
|
||||
motionSensingEventsPanel.setLayout(motionSensingEventsPanelLayout);
|
||||
motionSensingEventsPanelLayout
|
||||
.setHorizontalGroup(motionSensingEventsPanelLayout
|
||||
.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(motionSensingEventsTabbedPanels,
|
||||
javax.swing.GroupLayout.DEFAULT_SIZE, 602,
|
||||
Short.MAX_VALUE));
|
||||
motionSensingEventsPanelLayout
|
||||
.setVerticalGroup(motionSensingEventsPanelLayout
|
||||
.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addComponent(motionSensingEventsTabbedPanels,
|
||||
javax.swing.GroupLayout.DEFAULT_SIZE, 200,
|
||||
Short.MAX_VALUE));
|
||||
|
||||
topPanels.add(motionSensingEventsPanel);
|
||||
|
||||
getContentPane().add(topPanels);
|
||||
|
||||
setNunchukValuesPanel.setMinimumSize(new java.awt.Dimension(400, 200));
|
||||
setNunchukValuesPanel
|
||||
.setPreferredSize(new java.awt.Dimension(400, 200));
|
||||
setNunchukValuesPanel.setLayout(new javax.swing.BoxLayout(
|
||||
setNunchukValuesPanel, javax.swing.BoxLayout.Y_AXIS));
|
||||
|
||||
nunchukButtonsEventPanel.setToolTipText("Nunchuk ButtonsEvent");
|
||||
nunchukButtonsEventPanel
|
||||
.setMinimumSize(new java.awt.Dimension(100, 100));
|
||||
nunchukButtonsEventPanel.setPreferredSize(new java.awt.Dimension(100,
|
||||
100));
|
||||
nunchukButtonsEventPanel.setLayout(new javax.swing.BoxLayout(
|
||||
nunchukButtonsEventPanel, javax.swing.BoxLayout.LINE_AXIS));
|
||||
|
||||
cButton.setText("C");
|
||||
cButton.setMaximumSize(new java.awt.Dimension(50, 50));
|
||||
cButton.setMinimumSize(new java.awt.Dimension(50, 50));
|
||||
cButton.setPreferredSize(new java.awt.Dimension(50, 50));
|
||||
nunchukButtonsEventPanel.add(cButton);
|
||||
|
||||
zButton.setText("Z");
|
||||
zButton.setMaximumSize(new java.awt.Dimension(50, 50));
|
||||
zButton.setMinimumSize(new java.awt.Dimension(50, 50));
|
||||
zButton.setPreferredSize(new java.awt.Dimension(50, 50));
|
||||
nunchukButtonsEventPanel.add(zButton);
|
||||
|
||||
setNunchukValuesPanel.add(nunchukButtonsEventPanel);
|
||||
|
||||
nunchukOrientationTextField.setPreferredSize(new java.awt.Dimension(60,
|
||||
20));
|
||||
nunchukOrientationPanel.add(nunchukOrientationTextField);
|
||||
|
||||
nunchukOrientationButton.setText("Set Orientation Threshold");
|
||||
nunchukOrientationButton
|
||||
.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||
public void mousePressed(java.awt.event.MouseEvent evt) {
|
||||
nunchukOrientationButtonMousePressed(evt);
|
||||
}
|
||||
});
|
||||
nunchukOrientationPanel.add(nunchukOrientationButton);
|
||||
|
||||
setNunchukValuesPanel.add(nunchukOrientationPanel);
|
||||
|
||||
nunchukAccelerationTextField.setPreferredSize(new java.awt.Dimension(
|
||||
60, 20));
|
||||
nunchukAccelerationPanel.add(nunchukAccelerationTextField);
|
||||
|
||||
nunchukAccelerationButton.setText("Set Acceleration Threshold");
|
||||
nunchukAccelerationButton
|
||||
.addMouseListener(new java.awt.event.MouseAdapter() {
|
||||
public void mousePressed(java.awt.event.MouseEvent evt) {
|
||||
nunchukAccelerationButtonMousePressed(evt);
|
||||
}
|
||||
});
|
||||
nunchukAccelerationPanel.add(nunchukAccelerationButton);
|
||||
|
||||
setNunchukValuesPanel.add(nunchukAccelerationPanel);
|
||||
|
||||
messageText.setText("Message:");
|
||||
|
||||
javax.swing.GroupLayout messagePanelLayout = new javax.swing.GroupLayout(
|
||||
messagePanel);
|
||||
messagePanel.setLayout(messagePanelLayout);
|
||||
messagePanelLayout
|
||||
.setHorizontalGroup(messagePanelLayout
|
||||
.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 1216, Short.MAX_VALUE)
|
||||
.addGroup(
|
||||
messagePanelLayout
|
||||
.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(
|
||||
messagePanelLayout
|
||||
.createSequentialGroup()
|
||||
.addGap(0, 0,
|
||||
Short.MAX_VALUE)
|
||||
.addComponent(
|
||||
messageText)
|
||||
.addGap(0, 0,
|
||||
Short.MAX_VALUE))));
|
||||
messagePanelLayout
|
||||
.setVerticalGroup(messagePanelLayout
|
||||
.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 34, Short.MAX_VALUE)
|
||||
.addGroup(
|
||||
messagePanelLayout
|
||||
.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGroup(
|
||||
messagePanelLayout
|
||||
.createSequentialGroup()
|
||||
.addGap(0, 0,
|
||||
Short.MAX_VALUE)
|
||||
.addComponent(
|
||||
messageText)
|
||||
.addGap(0, 0,
|
||||
Short.MAX_VALUE))));
|
||||
|
||||
setNunchukValuesPanel.add(messagePanel);
|
||||
|
||||
getContentPane().add(setNunchukValuesPanel);
|
||||
|
||||
pack();
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
private void nunchukOrientationButtonMousePressed(
|
||||
java.awt.event.MouseEvent evt) {// GEN-FIRST:event_nunchukOrientationButtonMousePressed
|
||||
try {
|
||||
float nb = Float.parseFloat(nunchukOrientationTextField.getText());
|
||||
wiimote.setNunchukOrientationThreshold(nb);
|
||||
messageText.setText("Nunchuk orientation threshold set to " + nb);
|
||||
} catch (NumberFormatException e) {
|
||||
messageText
|
||||
.setText("Number is not an integer, nunchuk orientation threshold not set !");
|
||||
}
|
||||
}// GEN-LAST:event_nunchukOrientationButtonMousePressed
|
||||
|
||||
private void nunchukAccelerationButtonMousePressed(
|
||||
java.awt.event.MouseEvent evt) {// GEN-FIRST:event_nunchukAccelerationButtonMousePressed
|
||||
try {
|
||||
int nb = Integer.parseInt(nunchukAccelerationTextField.getText());
|
||||
wiimote.setNunchukAccelerationThreshold(nb);
|
||||
messageText.setText("Nunchuk acceleration threshold set to " + nb);
|
||||
} catch (NumberFormatException e) {
|
||||
messageText
|
||||
.setText("Number is not an integer, nunchuk acceleration threshold not set !");
|
||||
}
|
||||
}// GEN-LAST:event_nunchukAccelerationButtonMousePressed
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
if (arg0 instanceof NunchukEvent) {
|
||||
NunchukEvent nunchuk = (NunchukEvent) arg0;
|
||||
NunchukButtonsEvent buttons = nunchuk.getButtonsEvent();
|
||||
|
||||
//C button
|
||||
if (buttons.isButtonCJustPressed()) {
|
||||
cButton.setEnabled(false);
|
||||
}else if (buttons.isButtonCJustReleased()) {
|
||||
cButton.setEnabled(true);
|
||||
}
|
||||
|
||||
//Z button
|
||||
if(buttons.isButtonZJustPressed()) {
|
||||
zButton.setEnabled(false);
|
||||
}else if (buttons.isButtonZJustReleased()) {
|
||||
zButton.setEnabled(true);
|
||||
}
|
||||
|
||||
|
||||
if (isThresholdsRequested) {
|
||||
MotionSensingEvent evt = nunchuk.getNunchukMotionSensingEvent();
|
||||
nunchukAccelerationTextField.setText(evt
|
||||
.getAccelerationThreshold()
|
||||
+ "");
|
||||
nunchukOrientationTextField.setText(evt
|
||||
.getOrientationThreshold()
|
||||
+ "");
|
||||
isThresholdsRequested = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing to do
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(
|
||||
ClassicControllerInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(
|
||||
ClassicControllerRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JButton cButton;
|
||||
private javax.swing.JPanel gForcePanel;
|
||||
private javax.swing.JPanel joystickEventsPanel;
|
||||
private javax.swing.JPanel messagePanel;
|
||||
private javax.swing.JLabel messageText;
|
||||
private javax.swing.JPanel motionSensingEventsPanel;
|
||||
private javax.swing.JTabbedPane motionSensingEventsTabbedPanels;
|
||||
private javax.swing.JButton nunchukAccelerationButton;
|
||||
private javax.swing.JPanel nunchukAccelerationPanel;
|
||||
private javax.swing.JTextField nunchukAccelerationTextField;
|
||||
private javax.swing.JPanel nunchukButtonsEventPanel;
|
||||
private javax.swing.JButton nunchukOrientationButton;
|
||||
private javax.swing.JPanel nunchukOrientationPanel;
|
||||
private javax.swing.JTextField nunchukOrientationTextField;
|
||||
private javax.swing.JPanel orientationPanel;
|
||||
private javax.swing.JPanel rawAccelerationPanel;
|
||||
private javax.swing.JPanel setNunchukValuesPanel;
|
||||
private javax.swing.JPanel topPanels;
|
||||
private javax.swing.JButton zButton;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,389 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.test;
|
||||
|
||||
import java.awt.AWTException;
|
||||
import java.awt.Robot;
|
||||
import java.awt.event.InputEvent;
|
||||
|
||||
import wiiusej.WiiUseApiManager;
|
||||
import wiiusej.Wiimote;
|
||||
import wiiusej.values.IRSource;
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This class used to test WiiuseJ in text mode.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class Tests implements WiimoteListener {
|
||||
|
||||
Robot robot;
|
||||
|
||||
private static int DISPLAY_EACH_VALUE = 1;
|
||||
private static int DUMP = 2;
|
||||
private static int MOVE_MOUSE = 3;
|
||||
private static int TEST_LEDS = 5;
|
||||
|
||||
private Wiimote wiimote;
|
||||
|
||||
int dump = DISPLAY_EACH_VALUE;
|
||||
|
||||
public Tests(Wiimote wim) {
|
||||
wiimote = wim;
|
||||
wiimote.addWiiMoteEventListeners(this);
|
||||
try {
|
||||
robot = new Robot();
|
||||
} catch (AWTException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent e) {
|
||||
if (dump == DISPLAY_EACH_VALUE) {
|
||||
// System.out.println("*********** WIIMOTE ID : "+
|
||||
// e.getWiimoteId() + " **************");
|
||||
/* button ONE */
|
||||
if (e.isButtonOneJustPressed()) {
|
||||
System.out.println("button one pressed");
|
||||
}
|
||||
if (e.isButtonOneHeld()) {
|
||||
System.out.println("button one held");
|
||||
}
|
||||
if (e.isButtonOneJustReleased()) {
|
||||
System.out.println("button one released");
|
||||
}
|
||||
|
||||
/* button TWO */
|
||||
if (e.isButtonTwoJustPressed()) {
|
||||
System.out.println("button two pressed");
|
||||
}
|
||||
if (e.isButtonTwoHeld()) {
|
||||
System.out.println("button two held");
|
||||
}
|
||||
if (e.isButtonTwoJustReleased()) {
|
||||
System.out.println("button two released");
|
||||
}
|
||||
|
||||
/* button A */
|
||||
if (e.isButtonAJustPressed()) {
|
||||
System.out.println("button A pressed");
|
||||
}
|
||||
if (e.isButtonAHeld()) {
|
||||
System.out.println("button A held");
|
||||
}
|
||||
if (e.isButtonAJustReleased()) {
|
||||
System.out.println("button A released");
|
||||
}
|
||||
|
||||
/* button B */
|
||||
if (e.isButtonBJustPressed()) {
|
||||
System.out.println("button B pressed");
|
||||
}
|
||||
if (e.isButtonBHeld()) {
|
||||
System.out.println("button B held");
|
||||
}
|
||||
if (e.isButtonBJustReleased()) {
|
||||
System.out.println("button B released");
|
||||
}
|
||||
|
||||
/* button LEFT */
|
||||
if (e.isButtonLeftJustPressed()) {
|
||||
System.out.println("button Left pressed");
|
||||
}
|
||||
if (e.isButtonLeftHeld()) {
|
||||
System.out.println("button Left held");
|
||||
}
|
||||
if (e.isButtonLeftJustReleased()) {
|
||||
System.out.println("button Left released");
|
||||
}
|
||||
|
||||
/* button RIGHT */
|
||||
if (e.isButtonRightJustPressed()) {
|
||||
System.out.println("button Right pressed");
|
||||
}
|
||||
if (e.isButtonRightHeld()) {
|
||||
System.out.println("button Right held");
|
||||
}
|
||||
if (e.isButtonRightJustReleased()) {
|
||||
System.out.println("button Right released");
|
||||
}
|
||||
|
||||
/* button UP */
|
||||
if (e.isButtonUpJustPressed()) {
|
||||
System.out.println("button UP pressed");
|
||||
}
|
||||
if (e.isButtonUpHeld()) {
|
||||
System.out.println("button UP held");
|
||||
}
|
||||
if (e.isButtonUpJustReleased()) {
|
||||
System.out.println("button UP released");
|
||||
}
|
||||
|
||||
/* button DOWN */
|
||||
if (e.isButtonDownJustPressed()) {
|
||||
System.out.println("button DOWN pressed");
|
||||
}
|
||||
if (e.isButtonDownHeld()) {
|
||||
System.out.println("button DOWN held");
|
||||
}
|
||||
if (e.isButtonDownJustReleased()) {
|
||||
System.out.println("button DOWN released");
|
||||
}
|
||||
|
||||
/* button MINUS */
|
||||
if (e.isButtonMinusJustPressed()) {
|
||||
System.out.println("button MINUS pressed");
|
||||
}
|
||||
if (e.isButtonMinusHeld()) {
|
||||
System.out.println("button MINUS held");
|
||||
}
|
||||
if (e.isButtonMinusJustReleased()) {
|
||||
System.out.println("button MINUS released");
|
||||
}
|
||||
|
||||
/* button PLUS */
|
||||
if (e.isButtonPlusJustPressed()) {
|
||||
System.out.println("button PLUS pressed");
|
||||
}
|
||||
if (e.isButtonPlusHeld()) {
|
||||
System.out.println("button PLUS held");
|
||||
}
|
||||
if (e.isButtonPlusJustReleased()) {
|
||||
System.out.println("button PLUS released");
|
||||
}
|
||||
|
||||
/* button HOME */
|
||||
if (e.isButtonHomeJustPressed()) {
|
||||
System.out.println("button HOME pressed");
|
||||
}
|
||||
if (e.isButtonHomeHeld()) {
|
||||
System.out.println("button HOME held");
|
||||
}
|
||||
if (e.isButtonHomeJustReleased()) {
|
||||
System.out.println("button HOME released");
|
||||
}
|
||||
|
||||
/* get status */
|
||||
if (e.isButtonUpJustPressed()) {
|
||||
wiimote.getStatus();
|
||||
}
|
||||
|
||||
/* Activate rumble */
|
||||
if (e.isButtonOneJustPressed()) {
|
||||
System.out.println("Rumble Activated");
|
||||
wiimote.activateRumble();
|
||||
}
|
||||
if (e.isButtonTwoJustPressed()) {
|
||||
System.out.println("Rumble Deactivated");
|
||||
wiimote.deactivateRumble();
|
||||
}
|
||||
|
||||
/* Activate IR Tracking */
|
||||
if (e.isButtonAJustPressed()) {
|
||||
System.out.println("IR Activated");
|
||||
wiimote.activateIRTRacking();
|
||||
}
|
||||
if (e.isButtonBJustPressed()) {
|
||||
System.out.println("IR Deactivated");
|
||||
wiimote.deactivateIRTRacking();
|
||||
}
|
||||
|
||||
/* Activate Motion sensing */
|
||||
if (e.isButtonPlusJustPressed()) {
|
||||
System.out.println("Motion sensing Activated");
|
||||
wiimote.activateMotionSensing();
|
||||
}
|
||||
if (e.isButtonMinusJustPressed()) {
|
||||
System.out.println("Motion sensing Deactivated");
|
||||
wiimote.deactivateMotionSensing();
|
||||
}
|
||||
|
||||
/* leave test */
|
||||
if (e.isButtonHomeJustPressed()) {
|
||||
System.out.println("LEAVING TEST");
|
||||
wiimote.disconnect();
|
||||
WiiUseApiManager.definitiveShutdown();
|
||||
}
|
||||
|
||||
} else if (dump == DUMP) {
|
||||
System.out.println(e);
|
||||
/* Activate all */
|
||||
if (e.isButtonAJustPressed()) {
|
||||
System.out.println("IR, rumble and motion sensing Activated");
|
||||
wiimote.activateIRTRacking();
|
||||
wiimote.activateMotionSensing();
|
||||
wiimote.activateRumble();
|
||||
}
|
||||
if (e.isButtonBJustPressed()) {
|
||||
System.out.println("IR, rumble and motion sensing Deactivated");
|
||||
wiimote.deactivateIRTRacking();
|
||||
wiimote.deactivateMotionSensing();
|
||||
wiimote.deactivateRumble();
|
||||
}
|
||||
|
||||
/* leave test */
|
||||
if (e.isButtonHomeJustPressed()) {
|
||||
System.out.println("LEAVING TEST");
|
||||
wiimote.disconnect();
|
||||
}
|
||||
} else if (dump == MOVE_MOUSE) {
|
||||
/* Activate IR Tracking */
|
||||
if (e.isButtonOneJustPressed()) {
|
||||
System.out.println("IR Activated");
|
||||
wiimote.activateIRTRacking();
|
||||
}
|
||||
if (e.isButtonTwoJustPressed()) {
|
||||
System.out.println("IR Deactivated");
|
||||
wiimote.deactivateIRTRacking();
|
||||
}
|
||||
|
||||
/* button A */
|
||||
if (e.isButtonAJustPressed()) {
|
||||
robot.mousePress(InputEvent.BUTTON1_MASK);
|
||||
}
|
||||
if (e.isButtonAJustReleased()) {
|
||||
robot.mouseRelease(InputEvent.BUTTON1_MASK);
|
||||
}
|
||||
|
||||
/* button B */
|
||||
if (e.isButtonBJustPressed()) {
|
||||
robot.mousePress(InputEvent.BUTTON2_MASK);
|
||||
}
|
||||
if (e.isButtonBJustReleased()) {
|
||||
robot.mouseRelease(InputEvent.BUTTON2_MASK);
|
||||
}
|
||||
|
||||
/* leave test */
|
||||
if (e.isButtonHomeJustPressed()) {
|
||||
System.out.println("LEAVING TEST");
|
||||
wiimote.disconnect();
|
||||
}
|
||||
} else if (dump == TEST_LEDS) {
|
||||
wiimote.activateMotionSensing();
|
||||
if (e.isButtonUpJustPressed()) {
|
||||
wiimote.setLeds(true, false, false, false);
|
||||
}
|
||||
if (e.isButtonDownJustPressed()) {
|
||||
wiimote.setLeds(false, true, false, false);
|
||||
}
|
||||
if (e.isButtonLeftJustPressed()) {
|
||||
wiimote.setLeds(false, false, true, false);
|
||||
}
|
||||
if (e.isButtonRightJustPressed()) {
|
||||
wiimote.setLeds(false, false, false, true);
|
||||
}
|
||||
|
||||
/* leave test */
|
||||
if (e.isButtonHomeJustPressed()) {
|
||||
System.out.println("LEAVING TEST");
|
||||
wiimote.disconnect();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent e) {
|
||||
if (dump == MOVE_MOUSE) {
|
||||
IRSource[] list = e.getIRPoints();
|
||||
if (list.length > 0) {
|
||||
int x1 = (int) list[0].getX();
|
||||
int y1 = (int) list[0].getY();
|
||||
|
||||
int mousex = (int) Math.round(((double) x1 / 1024.0) * 1280.0);
|
||||
int mousey = (int) Math.round(((double) y1 / 768.0) * 1024.0);
|
||||
robot.mouseMove(mousex, mousey);
|
||||
}
|
||||
} else {
|
||||
System.out.println(e);
|
||||
}
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent e) {
|
||||
/* display motion sensing */
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent e) {
|
||||
// Display status variables
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent e) {
|
||||
System.out.println(" wiimote " + e.getWiimoteId()
|
||||
+ "has been disconnected !!");
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(
|
||||
ClassicControllerInsertedEvent e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent e) {
|
||||
System.out.println(e);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
Wiimote[] wiimotes = WiiUseApiManager.getWiimotes(1, true);
|
||||
if (wiimotes.length > 0) {
|
||||
System.out.println(wiimotes[0]);
|
||||
new Tests(wiimotes[0]);
|
||||
} else {
|
||||
System.out.println("No wiimotes found !!!");
|
||||
}
|
||||
|
||||
// java.util.Timer timer = new java.util.Timer();
|
||||
// timer.scheduleAtFixedRate(new LedsTask(), 0, 100);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,39 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.values.RawAcceleration;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.NunchukEvent;
|
||||
|
||||
/**
|
||||
* Panel to display Acceleration in a MotionSensingEvent from an expansion.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class AccelerationExpansionEventPanel extends AccelerationPanel {
|
||||
|
||||
@Override
|
||||
public RawAcceleration getRawAccelerationValue(GenericEvent e) {
|
||||
if (e instanceof NunchukEvent) {
|
||||
return ((NunchukEvent) e).getNunchukMotionSensingEvent()
|
||||
.getRawAcceleration();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,303 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import wiiusej.values.RawAcceleration;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This panel is used to watch raw acceleration values from a
|
||||
* MotionSensingEvent.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public abstract class AccelerationPanel extends javax.swing.JPanel implements
|
||||
WiimoteListener {
|
||||
|
||||
private Image mImage;// image for double buffering
|
||||
private Color xColor = Color.RED;
|
||||
private Color yColor = Color.GREEN;
|
||||
private Color zColor = Color.BLUE;
|
||||
private Color backgroundColor = Color.WHITE;
|
||||
private Color lineColor = Color.BLACK;
|
||||
private ArrayList<RawAcceleration> values = new ArrayList<RawAcceleration>();
|
||||
|
||||
/** Creates new form AccelerationPanel */
|
||||
public AccelerationPanel() {
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to choose the colors used by the AccelerationPanel.
|
||||
*
|
||||
* @param bgColor
|
||||
* background color.
|
||||
* @param xColor
|
||||
* x color.
|
||||
* @param yColor
|
||||
* y color.
|
||||
* @param zColor
|
||||
* z color.
|
||||
* @param lColor
|
||||
* line color.
|
||||
*/
|
||||
public AccelerationPanel(Color bgColor, Color xColor, Color yColor,
|
||||
Color zColor, Color lColor) {
|
||||
backgroundColor = bgColor;
|
||||
this.xColor = xColor;
|
||||
this.yColor = yColor;
|
||||
this.zColor = zColor;
|
||||
lineColor = lColor;
|
||||
initComponents();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
Dimension d = getSize();
|
||||
checkOffScreenImage();
|
||||
Graphics offG = mImage.getGraphics();
|
||||
offG.setColor(backgroundColor);
|
||||
offG.fillRect(0, 0, d.width, d.height);
|
||||
Graphics2D g2 = (Graphics2D) mImage.getGraphics();
|
||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
// draw medium line
|
||||
int yLine = getHeight() - 25;
|
||||
|
||||
g2.setPaint(lineColor);
|
||||
g2.drawLine(0, yLine, getWidth(), yLine);
|
||||
|
||||
RawAcceleration[] valuesArray = values.toArray(new RawAcceleration[0]);
|
||||
|
||||
double unit = yLine / 255.0;
|
||||
int previousX = 0;
|
||||
int previousY = 0;
|
||||
int previousZ = 0;
|
||||
// draw curves
|
||||
for (int i = 0; i < valuesArray.length && i < getWidth(); i++) {
|
||||
RawAcceleration acceleration = valuesArray[i];
|
||||
// draw X
|
||||
g2.setPaint(xColor);
|
||||
int yDelta = (int) Math.round(unit * acceleration.getX());
|
||||
int y = -1 * yDelta + yLine;
|
||||
g2.drawLine(i - 1, previousX, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousX = y;
|
||||
// draw Y
|
||||
g2.setPaint(yColor);
|
||||
yDelta = (int) Math.round(unit * acceleration.getY());
|
||||
y = -1 * yDelta + yLine;
|
||||
g2.drawLine(i - 1, previousY, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousY = y;
|
||||
// draw Z
|
||||
g2.setPaint(zColor);
|
||||
yDelta = (int) Math.round(unit * acceleration.getZ());
|
||||
y = -1 * yDelta + yLine;
|
||||
g2.drawLine(i - 1, previousZ, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousZ = y;
|
||||
}
|
||||
|
||||
// draw legend
|
||||
g2.setPaint(xColor);
|
||||
g2.drawLine(5, getHeight() - 10, 25, getHeight() - 10);
|
||||
g2.setPaint(yColor);
|
||||
g2.drawLine(60, getHeight() - 10, 80, getHeight() - 10);
|
||||
g2.setPaint(zColor);
|
||||
g2.drawLine(120, getHeight() - 10, 140, getHeight() - 10);
|
||||
|
||||
g2.setPaint(lineColor);
|
||||
g2.drawString("X", 30, getHeight() - 5);
|
||||
g2.drawString("Y", 85, getHeight() - 5);
|
||||
g2.drawString("Z", 145, getHeight() - 5);
|
||||
g2.drawString("0", 2, yLine - 5);
|
||||
g2.drawString("255", 2, 15);
|
||||
// put offscreen image on the screen
|
||||
g.drawImage(mImage, 0, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the mImage variable has been initialized. If it's not the case
|
||||
* it initializes it with the dimensions of the panel. mImage is for double
|
||||
* buffering.
|
||||
*/
|
||||
private void checkOffScreenImage() {
|
||||
Dimension d = getSize();
|
||||
if (mImage == null || mImage.getWidth(null) != d.width
|
||||
|| mImage.getHeight(null) != d.height) {
|
||||
mImage = createImage(d.width, d.height);
|
||||
}
|
||||
}
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
draw(arg0);
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
draw(arg0);
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
// Clear points.
|
||||
values.clear();
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(
|
||||
ClassicControllerInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(
|
||||
ClassicControllerRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
private void draw(GenericEvent arg0) {
|
||||
if (values.size() >= getWidth()) {
|
||||
// if there are as many values as pixels in the width
|
||||
// clear points
|
||||
values.clear();
|
||||
}
|
||||
RawAcceleration rawAcceleration = getRawAccelerationValue(arg0);
|
||||
if (rawAcceleration != null)
|
||||
values.add(rawAcceleration);
|
||||
repaint();
|
||||
}
|
||||
|
||||
public abstract RawAcceleration getRawAccelerationValue(GenericEvent e);
|
||||
|
||||
public Color getBackgroundColor() {
|
||||
return backgroundColor;
|
||||
}
|
||||
|
||||
public Color getLineColor() {
|
||||
return lineColor;
|
||||
}
|
||||
|
||||
public Color getXColor() {
|
||||
return xColor;
|
||||
}
|
||||
|
||||
public Color getYColor() {
|
||||
return yColor;
|
||||
}
|
||||
|
||||
public Color getZColor() {
|
||||
return zColor;
|
||||
}
|
||||
|
||||
public void setBackgroundColor(Color backgroundColor) {
|
||||
this.backgroundColor = backgroundColor;
|
||||
}
|
||||
|
||||
public void setLineColor(Color lineColor) {
|
||||
this.lineColor = lineColor;
|
||||
}
|
||||
|
||||
public void setXColor(Color xColor) {
|
||||
this.xColor = xColor;
|
||||
}
|
||||
|
||||
public void setYColor(Color yColor) {
|
||||
this.yColor = yColor;
|
||||
}
|
||||
|
||||
public void setZColor(Color zColor) {
|
||||
this.zColor = zColor;
|
||||
}
|
||||
|
||||
public void clearView() {
|
||||
values.clear();
|
||||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated
|
||||
// Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
|
||||
Short.MAX_VALUE));
|
||||
layout.setVerticalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
|
||||
Short.MAX_VALUE));
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.values.RawAcceleration;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
|
||||
/**
|
||||
* Panel to display Acceleration in a MotionSensingEvent from a wiimote.
|
||||
* @author guiguito
|
||||
*/
|
||||
public class AccelerationWiimoteEventPanel extends AccelerationPanel {
|
||||
|
||||
@Override
|
||||
public RawAcceleration getRawAccelerationValue(GenericEvent e) {
|
||||
if (e instanceof MotionSensingEvent) {
|
||||
return ((MotionSensingEvent) e).getRawAcceleration();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,382 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.Shape;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.geom.AffineTransform;
|
||||
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This panel is used to see what buttons are pressed on the wiimote. It
|
||||
* displays the result of last ButtonsEvent.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class ButtonsEventPanel extends javax.swing.JPanel implements
|
||||
WiimoteListener {
|
||||
|
||||
private Image mImage;// image for double buffering
|
||||
private Image wiimoteImage;// image for double buffering
|
||||
private WiimoteButtonsEvent buttons;
|
||||
private Color pressedColor = Color.RED;
|
||||
private Color heldColor = Color.ORANGE;
|
||||
private Color releasedColor = Color.YELLOW;
|
||||
private Shape shape = new java.awt.geom.Ellipse2D.Double(0, 0, 13, 13);
|
||||
|
||||
/**
|
||||
* Default constructor. Red : button just pressed. Orange : button held.
|
||||
* Yellow : button just released.
|
||||
*/
|
||||
public ButtonsEventPanel() {
|
||||
Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
|
||||
java.net.URL url = ButtonsEventPanel.class
|
||||
.getResource("/img/wiimote.png");
|
||||
wiimoteImage = toolkit.createImage(url);
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to set colors and shape used.
|
||||
*
|
||||
* @param pressColor
|
||||
* color of a button just pressed.
|
||||
* @param hColor
|
||||
* color of a button held.
|
||||
* @param relColor
|
||||
* color of a button just released.
|
||||
* @param sh
|
||||
* shape draw on the buttons.
|
||||
*/
|
||||
public ButtonsEventPanel(Color pressColor, Color hColor, Color relColor,
|
||||
Shape sh) {
|
||||
pressedColor = pressColor;
|
||||
heldColor = hColor;
|
||||
releasedColor = relColor;
|
||||
shape = sh;
|
||||
Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
|
||||
wiimoteImage = toolkit.createImage("img\\wiimote.png");
|
||||
initComponents();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
Dimension d = getSize();
|
||||
checkOffScreenImage();
|
||||
Graphics offG = mImage.getGraphics();
|
||||
// offG.setColor(backgroundColor);
|
||||
offG.fillRect(0, 0, d.width, d.height);
|
||||
Graphics2D g2 = (Graphics2D) mImage.getGraphics();
|
||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
// draw buttons pushed
|
||||
g2.drawImage(wiimoteImage, 0, 0, this);
|
||||
g2.setTransform(new AffineTransform());
|
||||
|
||||
if (buttons != null) {
|
||||
/* button ONE */
|
||||
if (buttons.isButtonOneJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 53, 353);
|
||||
}
|
||||
if (buttons.isButtonOneHeld()) {
|
||||
drawFunction(g2, heldColor, 53, 353);
|
||||
}
|
||||
if (buttons.isButtonOneJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 53, 353);
|
||||
}
|
||||
|
||||
/* button TWO */
|
||||
if (buttons.isButtonTwoJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 53, 395);
|
||||
}
|
||||
if (buttons.isButtonTwoHeld()) {
|
||||
drawFunction(g2, heldColor, 53, 395);
|
||||
}
|
||||
if (buttons.isButtonTwoJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 53, 395);
|
||||
}
|
||||
|
||||
/* button A */
|
||||
if (buttons.isButtonAJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 53, 150);
|
||||
}
|
||||
if (buttons.isButtonAHeld()) {
|
||||
drawFunction(g2, heldColor, 53, 150);
|
||||
}
|
||||
if (buttons.isButtonAJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 53, 150);
|
||||
}
|
||||
|
||||
/* button B */
|
||||
if (buttons.isButtonBJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 16, 149);
|
||||
}
|
||||
if (buttons.isButtonBHeld()) {
|
||||
drawFunction(g2, heldColor, 16, 149);
|
||||
}
|
||||
if (buttons.isButtonBJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 16, 149);
|
||||
}
|
||||
|
||||
/* button LEFT */
|
||||
if (buttons.isButtonLeftJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 33, 77);
|
||||
}
|
||||
if (buttons.isButtonLeftHeld()) {
|
||||
drawFunction(g2, heldColor, 33, 77);
|
||||
}
|
||||
if (buttons.isButtonLeftJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 33, 77);
|
||||
}
|
||||
|
||||
/* button RIGHT */
|
||||
if (buttons.isButtonRightJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 73, 77);
|
||||
}
|
||||
if (buttons.isButtonRightHeld()) {
|
||||
drawFunction(g2, heldColor, 73, 77);
|
||||
}
|
||||
if (buttons.isButtonRightJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 73, 77);
|
||||
}
|
||||
|
||||
/* button UP */
|
||||
if (buttons.isButtonUpJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 54, 60);
|
||||
}
|
||||
if (buttons.isButtonUpHeld()) {
|
||||
drawFunction(g2, heldColor, 54, 60);
|
||||
}
|
||||
if (buttons.isButtonUpJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 54, 60);
|
||||
}
|
||||
|
||||
/* button DOWN */
|
||||
if (buttons.isButtonDownJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 54, 97);
|
||||
}
|
||||
if (buttons.isButtonDownHeld()) {
|
||||
drawFunction(g2, heldColor, 54, 97);
|
||||
}
|
||||
if (buttons.isButtonDownJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 54, 97);
|
||||
}
|
||||
|
||||
/* button MINUS */
|
||||
if (buttons.isButtonMinusJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 20, 230);
|
||||
}
|
||||
if (buttons.isButtonMinusHeld()) {
|
||||
drawFunction(g2, heldColor, 20, 230);
|
||||
}
|
||||
if (buttons.isButtonMinusJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 20, 230);
|
||||
}
|
||||
|
||||
/* button PLUS */
|
||||
if (buttons.isButtonPlusJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 86, 230);
|
||||
}
|
||||
if (buttons.isButtonPlusHeld()) {
|
||||
drawFunction(g2, heldColor, 86, 230);
|
||||
}
|
||||
if (buttons.isButtonPlusJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 86, 230);
|
||||
}
|
||||
|
||||
/* button HOME */
|
||||
if (buttons.isButtonHomeJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 53, 230);
|
||||
}
|
||||
if (buttons.isButtonHomeHeld()) {
|
||||
drawFunction(g2, heldColor, 53, 230);
|
||||
}
|
||||
if (buttons.isButtonHomeJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 53, 230);
|
||||
}
|
||||
|
||||
buttons = null;
|
||||
}
|
||||
|
||||
// put offscreen image on the screen
|
||||
g.drawImage(mImage, 0, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function used to factorize code.
|
||||
*
|
||||
* @param g2
|
||||
* where to draw a shape.
|
||||
* @param col
|
||||
* color to use.
|
||||
* @param x
|
||||
* x coordinates.
|
||||
* @param y
|
||||
* y coordinates.
|
||||
*/
|
||||
private void drawFunction(Graphics2D g2, Color col, int x, int y) {
|
||||
g2.setPaint(col);
|
||||
g2.translate(x, y);
|
||||
g2.draw(shape);
|
||||
g2.fill(shape);
|
||||
g2.setTransform(new AffineTransform());
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the mImage variable has been initialized. If it's not the case
|
||||
* it initializes it with the dimensions of the panel. mImage is for double
|
||||
* buffering.
|
||||
*/
|
||||
private void checkOffScreenImage() {
|
||||
Dimension d = getSize();
|
||||
if (mImage == null || mImage.getWidth(null) != d.width
|
||||
|| mImage.getHeight(null) != d.height) {
|
||||
mImage = createImage(d.width, d.height);
|
||||
}
|
||||
}
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
setSize(wiimoteImage.getWidth(this), wiimoteImage.getHeight(this));
|
||||
buttons = arg0;
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
clearView();
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(
|
||||
ClassicControllerInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(
|
||||
ClassicControllerRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public Color getHeldColor() {
|
||||
return heldColor;
|
||||
}
|
||||
|
||||
public Color getPressedColor() {
|
||||
return pressedColor;
|
||||
}
|
||||
|
||||
public Color getReleasedColor() {
|
||||
return releasedColor;
|
||||
}
|
||||
|
||||
public Shape getShape() {
|
||||
return shape;
|
||||
}
|
||||
|
||||
public void setHeldColor(Color heldColor) {
|
||||
this.heldColor = heldColor;
|
||||
}
|
||||
|
||||
public void setPressedColor(Color pressedColor) {
|
||||
this.pressedColor = pressedColor;
|
||||
}
|
||||
|
||||
public void setReleasedColor(Color releasedColor) {
|
||||
this.releasedColor = releasedColor;
|
||||
}
|
||||
|
||||
public void setShape(Shape shape) {
|
||||
this.shape = shape;
|
||||
}
|
||||
|
||||
public void clearView() {
|
||||
buttons = null;
|
||||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated
|
||||
// Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
|
||||
Short.MAX_VALUE));
|
||||
layout.setVerticalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
|
||||
Short.MAX_VALUE));
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,501 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.Shape;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.geom.AffineTransform;
|
||||
|
||||
import wiiusej.wiiusejevents.physicalevents.ClassicControllerButtonsEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.ClassicControllerEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.JoystickEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This panel is used to display what happens on the classic controller.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class ClassicControllerButtonsEventPanel extends javax.swing.JPanel implements WiimoteListener {
|
||||
|
||||
private Image mImage;// image for double buffering
|
||||
private Image wiimoteImage;// image for double buffering
|
||||
private ClassicControllerEvent event;
|
||||
private Color pressedColor = Color.RED;
|
||||
private Color heldColor = Color.ORANGE;
|
||||
private Color releasedColor = Color.YELLOW;
|
||||
private Color joystickColor = Color.PINK;
|
||||
private Color shoulderColor = Color.BLUE;
|
||||
private Shape shapeJoystick = new java.awt.geom.Ellipse2D.Double(0, 0, 15, 15);
|
||||
private Shape shapeButton = new java.awt.geom.Ellipse2D.Double(0, 0, 20, 20);
|
||||
private static int xAmplitude = 20;
|
||||
private static int yAmplitude = 20;
|
||||
|
||||
/**
|
||||
* Default constructor. Red : button just pressed. Orange : button held.
|
||||
* Yellow : button just released.
|
||||
*/
|
||||
public ClassicControllerButtonsEventPanel() {
|
||||
Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
|
||||
java.net.URL url = ButtonsEventPanel.class.getResource("/img/classiccontroller.png");
|
||||
wiimoteImage = toolkit.createImage(url);
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to set colors and shape used.
|
||||
*
|
||||
* @param pressColor
|
||||
* color of a button just pressed.
|
||||
* @param hColor
|
||||
* color of a button held.
|
||||
* @param relColor
|
||||
* color of a button just released.
|
||||
* @param jsColor
|
||||
* color of the joysticks.
|
||||
* @param shouldColor
|
||||
* color of the shoulders.
|
||||
* @param js
|
||||
* shape drawn on the joysticks.
|
||||
* @param sh
|
||||
* shape drawn on the buttons.
|
||||
*/
|
||||
public ClassicControllerButtonsEventPanel(Color pressColor, Color hColor, Color relColor,
|
||||
Color jsColor, Color shouldColor, Shape js, Shape sh) {
|
||||
pressedColor = pressColor;
|
||||
heldColor = hColor;
|
||||
releasedColor = relColor;
|
||||
shapeButton = sh;
|
||||
shapeJoystick = js;
|
||||
joystickColor = jsColor;
|
||||
shoulderColor = shouldColor;
|
||||
Toolkit toolkit = java.awt.Toolkit.getDefaultToolkit();
|
||||
wiimoteImage = toolkit.createImage("img\\wiimote.png");
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/** This method is called from within the constructor to
|
||||
* initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is
|
||||
* always regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 400, Short.MAX_VALUE)
|
||||
);
|
||||
layout.setVerticalGroup(
|
||||
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||
.addGap(0, 300, Short.MAX_VALUE)
|
||||
);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
Dimension d = getSize();
|
||||
checkOffScreenImage();
|
||||
Graphics offG = mImage.getGraphics();
|
||||
// offG.setColor(backgroundColor);
|
||||
offG.fillRect(0, 0, d.width, d.height);
|
||||
Graphics2D g2 = (Graphics2D) mImage.getGraphics();
|
||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
//draw classic controller
|
||||
g2.drawImage(wiimoteImage, 0, 0, this);
|
||||
g2.setTransform(new AffineTransform());
|
||||
|
||||
if (event != null) {
|
||||
// draw buttons pushed
|
||||
ClassicControllerButtonsEvent buttons = event.getButtonsEvent();
|
||||
|
||||
/* button A */
|
||||
if (buttons.isButtonAJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 304, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonAHeld()) {
|
||||
drawFunction(g2, heldColor, 304, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonAJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 304, 76, shapeButton);
|
||||
}
|
||||
|
||||
/* button B */
|
||||
if (buttons.isButtonBJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 269, 98, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonBHeld()) {
|
||||
drawFunction(g2, heldColor, 269, 98, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonBJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 269, 98, shapeButton);
|
||||
}
|
||||
|
||||
/* button Down */
|
||||
if (buttons.isButtonDownJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 60, 97, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonDownHeld()) {
|
||||
drawFunction(g2, heldColor, 60, 97, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonDownJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 60, 97, shapeButton);
|
||||
}
|
||||
|
||||
/* button FullLeft */
|
||||
if (buttons.isButtonFullLeftJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 55, 4, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonFullLeftHeld()) {
|
||||
drawFunction(g2, heldColor, 55, 4, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonFullLeftJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 55, 4, shapeButton);
|
||||
}
|
||||
|
||||
/* button FullRight */
|
||||
if (buttons.isButtonFullRightJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 276, 4, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonFullRightHeld()) {
|
||||
drawFunction(g2, heldColor, 276, 4, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonFullRightJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 276, 4, shapeButton);
|
||||
}
|
||||
|
||||
/* button Home */
|
||||
if (buttons.isButtonHomeJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 166, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonHomeHeld()) {
|
||||
drawFunction(g2, heldColor, 166, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonHomeJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 166, 76, shapeButton);
|
||||
}
|
||||
|
||||
/* button Left */
|
||||
if (buttons.isButtonLeftJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 34, 75, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonLeftHeld()) {
|
||||
drawFunction(g2, heldColor, 34, 75, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonLeftJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 34, 75, shapeButton);
|
||||
}
|
||||
|
||||
/* button Minus */
|
||||
if (buttons.isButtonMinusJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 140, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonMinusHeld()) {
|
||||
drawFunction(g2, heldColor, 140, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonMinusJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 140, 76, shapeButton);
|
||||
}
|
||||
|
||||
/* button Plus */
|
||||
if (buttons.isButtonPlusJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 191, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonPlusHeld()) {
|
||||
drawFunction(g2, heldColor, 191, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonPlusJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 191, 76, shapeButton);
|
||||
}
|
||||
|
||||
/* button Right */
|
||||
if (buttons.isButtonRightJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 86, 75, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonRightHeld()) {
|
||||
drawFunction(g2, heldColor, 86, 75, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonRightJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 86, 353, shapeButton);
|
||||
}
|
||||
|
||||
/* button Up */
|
||||
if (buttons.isButtonUpJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 60, 50, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonUpHeld()) {
|
||||
drawFunction(g2, heldColor, 60, 50, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonUpJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 60, 50, shapeButton);
|
||||
}
|
||||
|
||||
/* button X */
|
||||
if (buttons.isButtonXJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 271, 53, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonXHeld()) {
|
||||
drawFunction(g2, heldColor, 271, 53, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonXJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 271, 53, shapeButton);
|
||||
}
|
||||
|
||||
/* button Y */
|
||||
if (buttons.isButtonYJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 237, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonYHeld()) {
|
||||
drawFunction(g2, heldColor, 237, 76, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonYJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 237, 76, shapeButton);
|
||||
}
|
||||
|
||||
/* button ZL */
|
||||
if (buttons.isButtonZLJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 123, 4, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonZLHeld()) {
|
||||
drawFunction(g2, heldColor, 123, 4, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonZLJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 123, 4, shapeButton);
|
||||
}
|
||||
|
||||
/* button ZR */
|
||||
if (buttons.isButtonZRJustPressed()) {
|
||||
drawFunction(g2, pressedColor, 208, 4, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonZRHeld()) {
|
||||
drawFunction(g2, heldColor, 208, 4, shapeButton);
|
||||
}
|
||||
if (buttons.isButtonZRJustReleased()) {
|
||||
drawFunction(g2, releasedColor, 208, 4, shapeButton);
|
||||
}
|
||||
|
||||
//joysticks
|
||||
int halfWidth = (int) Math.round(shapeJoystick.getBounds().getWidth() / 2);
|
||||
int halfHeight = (int) Math.round(shapeJoystick.getBounds().getHeight() / 2);
|
||||
|
||||
// left joystick
|
||||
JoystickEvent jl = event.getClassicControllerLeftJoystickEvent();
|
||||
int xCenter1 = 121;
|
||||
int yCenter1 = 125;
|
||||
|
||||
double xAng1 = Math.sin(jl.getAngle() * Math.PI / 180.0) * jl.getMagnitude();
|
||||
double yAng1 = Math.cos(jl.getAngle() * Math.PI / 180.0) * jl.getMagnitude();
|
||||
|
||||
int xShift1 = (int) Math.round(xAng1 * xAmplitude);
|
||||
int yShift1 = (int) Math.round(yAng1 * yAmplitude);
|
||||
int x1 = xCenter1 + xShift1 - halfWidth;
|
||||
int y1 = yCenter1 - yShift1 - halfHeight;
|
||||
// draw shape
|
||||
drawFunction(g2, joystickColor, x1, y1, shapeJoystick);
|
||||
|
||||
//Right joystick
|
||||
JoystickEvent jr = event.getClassicControllerRightJoystickEvent();
|
||||
int xCenter2 = 213;
|
||||
int yCenter2 = 125;
|
||||
|
||||
double xAng2 = Math.sin(jr.getAngle() * Math.PI / 180.0) * jr.getMagnitude();
|
||||
double yAng2 = Math.cos(jr.getAngle() * Math.PI / 180.0) * jr.getMagnitude();
|
||||
|
||||
int xShift2 = (int) Math.round(xAng2 * xAmplitude);
|
||||
int yShift2 = (int) Math.round(yAng2 * yAmplitude);
|
||||
int x2 = xCenter2 + xShift2 - halfWidth;
|
||||
int y2 = yCenter2 - yShift2 - halfHeight;
|
||||
// draw shape
|
||||
drawFunction(g2, joystickColor, x2, y2, shapeJoystick);
|
||||
|
||||
event = null;
|
||||
}
|
||||
|
||||
// put offscreen image on the screen
|
||||
g.drawImage(mImage, 0, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Function used to factorize code.
|
||||
*
|
||||
* @param g2
|
||||
* where to draw a shape.
|
||||
* @param col
|
||||
* color to use.
|
||||
* @param x
|
||||
* x coordinates.
|
||||
* @param y
|
||||
* y coordinates.
|
||||
* @param sh
|
||||
* shape to draw.
|
||||
*/
|
||||
private void drawFunction(Graphics2D g2, Color col, int x, int y, Shape sh) {
|
||||
g2.setPaint(col);
|
||||
g2.translate(x, y);
|
||||
g2.draw(sh);
|
||||
g2.fill(sh);
|
||||
g2.setTransform(new AffineTransform());
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the mImage variable has been initialized. If it's not the case
|
||||
* it initializes it with the dimensions of the panel. mImage is for double
|
||||
* buffering.
|
||||
*/
|
||||
private void checkOffScreenImage() {
|
||||
Dimension d = getSize();
|
||||
if (mImage == null || mImage.getWidth(null) != d.width || mImage.getHeight(null) != d.height) {
|
||||
mImage = createImage(d.width, d.height);
|
||||
}
|
||||
}
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
if (arg0 instanceof ClassicControllerEvent) {
|
||||
event = (ClassicControllerEvent) arg0;
|
||||
}
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) {
|
||||
clearView();
|
||||
}
|
||||
|
||||
public Color getHeldColor() {
|
||||
return heldColor;
|
||||
}
|
||||
|
||||
public Color getJoystickColor() {
|
||||
return joystickColor;
|
||||
}
|
||||
|
||||
public Color getPressedColor() {
|
||||
return pressedColor;
|
||||
}
|
||||
|
||||
public Color getReleasedColor() {
|
||||
return releasedColor;
|
||||
}
|
||||
|
||||
public Color getShoulderColor() {
|
||||
return shoulderColor;
|
||||
}
|
||||
|
||||
public Shape getShapeButton() {
|
||||
return shapeButton;
|
||||
}
|
||||
|
||||
public Shape getShapeJoystick() {
|
||||
return shapeJoystick;
|
||||
}
|
||||
|
||||
public void setHeldColor(Color heldColor) {
|
||||
this.heldColor = heldColor;
|
||||
}
|
||||
|
||||
public void setJoystickColor(Color joystickColor) {
|
||||
this.joystickColor = joystickColor;
|
||||
}
|
||||
|
||||
public void setPressedColor(Color pressedColor) {
|
||||
this.pressedColor = pressedColor;
|
||||
}
|
||||
|
||||
public void setReleasedColor(Color releasedColor) {
|
||||
this.releasedColor = releasedColor;
|
||||
}
|
||||
|
||||
public void setShoulderColor(Color shoulderColor) {
|
||||
this.shoulderColor = shoulderColor;
|
||||
}
|
||||
|
||||
public void setShapeButton(Shape shapeButton) {
|
||||
this.shapeButton = shapeButton;
|
||||
}
|
||||
|
||||
public void setShapeJoystick(Shape shapeJoystick) {
|
||||
this.shapeJoystick = shapeJoystick;
|
||||
}
|
||||
|
||||
public void clearView() {
|
||||
event = null;
|
||||
repaint();
|
||||
}
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.values.GForce;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.NunchukEvent;
|
||||
|
||||
/**
|
||||
* Panel to display GForce in a MotionSensingEvent from an expansion.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class GForceExpansionEventPanel extends GForcePanel{
|
||||
|
||||
@Override
|
||||
public GForce getGForceValue(GenericEvent e) {
|
||||
if (e instanceof NunchukEvent){
|
||||
return ((NunchukEvent)e).getNunchukMotionSensingEvent().getGforce();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,304 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import wiiusej.values.GForce;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This panel is used to watch gravity force values from a MotionSensingEvent.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public abstract class GForcePanel extends javax.swing.JPanel implements
|
||||
WiimoteListener {
|
||||
|
||||
private Image mImage;// image for double buffering
|
||||
private Color xColor = Color.RED;
|
||||
private Color yColor = Color.GREEN;
|
||||
private Color zColor = Color.BLUE;
|
||||
private Color backgroundColor = Color.WHITE;
|
||||
private Color lineColor = Color.BLACK;
|
||||
private ArrayList<GForce> values = new ArrayList<GForce>();
|
||||
|
||||
/**
|
||||
* Default constructor of the AccelerationPanel.
|
||||
*/
|
||||
public GForcePanel() {
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to choose the colors used by the AccelerationPanel.
|
||||
*
|
||||
* @param bgColor
|
||||
* background color.
|
||||
* @param xxColor
|
||||
* color of the acceleration on X axis.
|
||||
* @param yyColor
|
||||
* color of the acceleration on Y axis.
|
||||
* @param zzColor
|
||||
* color of the acceleration on Z axis.
|
||||
* @param lColor
|
||||
* line color.
|
||||
*/
|
||||
public GForcePanel(Color bgColor, Color xxColor, Color yyColor,
|
||||
Color zzColor, Color lColor) {
|
||||
backgroundColor = bgColor;
|
||||
xColor = xxColor;
|
||||
yColor = yyColor;
|
||||
zColor = zzColor;
|
||||
lineColor = lColor;
|
||||
initComponents();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
Dimension d = getSize();
|
||||
checkOffScreenImage();
|
||||
Graphics offG = mImage.getGraphics();
|
||||
offG.setColor(backgroundColor);
|
||||
offG.fillRect(0, 0, d.width, d.height);
|
||||
Graphics2D g2 = (Graphics2D) mImage.getGraphics();
|
||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
// draw medium line
|
||||
double yMiddleFloat = getHeight() / 2.0;
|
||||
int yMiddle = (int) Math.round(yMiddleFloat);
|
||||
|
||||
g2.setPaint(lineColor);
|
||||
g2.drawLine(0, yMiddle, getWidth(), yMiddle);
|
||||
|
||||
GForce[] valuesArray = values.toArray(new GForce[0]);
|
||||
double unit = yMiddleFloat / 5.0;
|
||||
int previousX = 0;
|
||||
int previousY = 0;
|
||||
int previousZ = 0;
|
||||
// draw curves
|
||||
for (int i = 0; i < valuesArray.length && i < getWidth(); i++) {
|
||||
GForce gforce = valuesArray[i];
|
||||
// draw X
|
||||
g2.setPaint(xColor);
|
||||
int yDelta = (int) Math.round(unit * gforce.getX());
|
||||
int y = -1 * yDelta + yMiddle;
|
||||
g2.drawLine(i - 1, previousX, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousX = y;
|
||||
// draw Y
|
||||
g2.setPaint(yColor);
|
||||
yDelta = (int) Math.round(unit * gforce.getY());
|
||||
y = -1 * yDelta + yMiddle;
|
||||
g2.drawLine(i - 1, previousY, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousY = y;
|
||||
// draw Z
|
||||
g2.setPaint(zColor);
|
||||
yDelta = (int) Math.round(unit * gforce.getZ());
|
||||
y = -1 * yDelta + yMiddle;
|
||||
g2.drawLine(i - 1, previousZ, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousZ = y;
|
||||
}
|
||||
|
||||
// draw legend
|
||||
g2.setPaint(xColor);
|
||||
g2.drawLine(5, getHeight() - 10, 25, getHeight() - 10);
|
||||
g2.setPaint(yColor);
|
||||
g2.drawLine(60, getHeight() - 10, 80, getHeight() - 10);
|
||||
g2.setPaint(zColor);
|
||||
g2.drawLine(120, getHeight() - 10, 140, getHeight() - 10);
|
||||
|
||||
g2.setPaint(lineColor);
|
||||
g2.drawString("X", 30, getHeight() - 5);
|
||||
g2.drawString("Y", 85, getHeight() - 5);
|
||||
g2.drawString("Z", 145, getHeight() - 5);
|
||||
g2.drawString("0", 2, yMiddle - 5);
|
||||
g2.drawString("5", 2, 10);
|
||||
g2.drawString("-5", 2, getHeight() - 15);
|
||||
// put offscreen image on the screen
|
||||
g.drawImage(mImage, 0, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the mImage variable has been initialized. If it's not the case
|
||||
* it initializes it with the dimensions of the panel. mImage is for double
|
||||
* buffering.
|
||||
*/
|
||||
private void checkOffScreenImage() {
|
||||
Dimension d = getSize();
|
||||
if (mImage == null || mImage.getWidth(null) != d.width
|
||||
|| mImage.getHeight(null) != d.height) {
|
||||
mImage = createImage(d.width, d.height);
|
||||
}
|
||||
}
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
draw(arg0);
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
draw(arg0);
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
// Clear points.
|
||||
values.clear();
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(
|
||||
ClassicControllerInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(
|
||||
ClassicControllerRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
private void draw(GenericEvent arg0) {
|
||||
if (values.size() >= getWidth()) {
|
||||
// if there are as many values as pixels in the width
|
||||
// clear points
|
||||
values.clear();
|
||||
}
|
||||
GForce gforce = getGForceValue(arg0);
|
||||
if (gforce != null)
|
||||
values.add(gforce);
|
||||
repaint();
|
||||
}
|
||||
|
||||
public abstract GForce getGForceValue(GenericEvent e);
|
||||
|
||||
public Color getBackgroundColor() {
|
||||
return backgroundColor;
|
||||
}
|
||||
|
||||
public Color getLineColor() {
|
||||
return lineColor;
|
||||
}
|
||||
|
||||
public Color getXColor() {
|
||||
return xColor;
|
||||
}
|
||||
|
||||
public Color getYColor() {
|
||||
return yColor;
|
||||
}
|
||||
|
||||
public Color getZColor() {
|
||||
return zColor;
|
||||
}
|
||||
|
||||
public void setBackgroundColor(Color backgroundColor) {
|
||||
this.backgroundColor = backgroundColor;
|
||||
}
|
||||
|
||||
public void setLineColor(Color lineColor) {
|
||||
this.lineColor = lineColor;
|
||||
}
|
||||
|
||||
public void setXColor(Color xColor) {
|
||||
this.xColor = xColor;
|
||||
}
|
||||
|
||||
public void setYColor(Color yColor) {
|
||||
this.yColor = yColor;
|
||||
}
|
||||
|
||||
public void setZColor(Color zColor) {
|
||||
this.zColor = zColor;
|
||||
}
|
||||
|
||||
public void clearView() {
|
||||
values.clear();
|
||||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated
|
||||
// Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
|
||||
Short.MAX_VALUE));
|
||||
layout.setVerticalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
|
||||
Short.MAX_VALUE));
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.values.GForce;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
|
||||
/**
|
||||
* Panel to display GForce in a MotionSensingEvent from a wiimote.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class GForceWiimoteEventPanel extends GForcePanel {
|
||||
|
||||
@Override
|
||||
public GForce getGForceValue(GenericEvent e) {
|
||||
if (e instanceof MotionSensingEvent) {
|
||||
return ((MotionSensingEvent) e).getGforce();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,274 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.GuitarHeroButtonsEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.GuitarHeroEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This panel is used to display what happens on the buttons of the
|
||||
* Guitar Hero 3 controller.
|
||||
* @author guiguito
|
||||
*/
|
||||
public class GuitarHero3ButtonsEventPanel extends javax.swing.JPanel implements WiimoteListener {
|
||||
|
||||
/** Creates new form GuitarHero3ButtonsEventPanel */
|
||||
public GuitarHero3ButtonsEventPanel() {
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/** This method is called from within the constructor to
|
||||
* initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is
|
||||
* always regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
leftPanel = new javax.swing.JPanel();
|
||||
plusButton = new javax.swing.JToggleButton();
|
||||
minusButton = new javax.swing.JToggleButton();
|
||||
strumPanel = new javax.swing.JPanel();
|
||||
strumUpButton = new javax.swing.JToggleButton();
|
||||
strumDownButton = new javax.swing.JToggleButton();
|
||||
RightPanel = new javax.swing.JPanel();
|
||||
coloredButtonsPanel = new javax.swing.JPanel();
|
||||
orangeButton = new javax.swing.JToggleButton();
|
||||
blueButton = new javax.swing.JToggleButton();
|
||||
yellowButton = new javax.swing.JToggleButton();
|
||||
redButton = new javax.swing.JToggleButton();
|
||||
greenButton = new javax.swing.JToggleButton();
|
||||
|
||||
setBackground(new java.awt.Color(0, 0, 0));
|
||||
setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.X_AXIS));
|
||||
|
||||
leftPanel.setBackground(new java.awt.Color(0, 0, 0));
|
||||
leftPanel.setLayout(new javax.swing.BoxLayout(leftPanel, javax.swing.BoxLayout.LINE_AXIS));
|
||||
|
||||
plusButton.setBackground(new java.awt.Color(255, 255, 255));
|
||||
plusButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
plusButton.setText("+");
|
||||
leftPanel.add(plusButton);
|
||||
|
||||
minusButton.setBackground(new java.awt.Color(255, 255, 255));
|
||||
minusButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
minusButton.setText("-");
|
||||
leftPanel.add(minusButton);
|
||||
|
||||
strumPanel.setBackground(new java.awt.Color(0, 0, 0));
|
||||
strumPanel.setLayout(new javax.swing.BoxLayout(strumPanel, javax.swing.BoxLayout.Y_AXIS));
|
||||
|
||||
strumUpButton.setBackground(new java.awt.Color(255, 255, 255));
|
||||
strumUpButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
strumUpButton.setText("Strum UP");
|
||||
strumPanel.add(strumUpButton);
|
||||
|
||||
strumDownButton.setBackground(new java.awt.Color(255, 255, 255));
|
||||
strumDownButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
strumDownButton.setText("Strum DOWN");
|
||||
strumPanel.add(strumDownButton);
|
||||
|
||||
leftPanel.add(strumPanel);
|
||||
|
||||
add(leftPanel);
|
||||
|
||||
RightPanel.setBackground(new java.awt.Color(0, 0, 0));
|
||||
RightPanel.setLayout(new javax.swing.BoxLayout(RightPanel, javax.swing.BoxLayout.LINE_AXIS));
|
||||
|
||||
coloredButtonsPanel.setLayout(new javax.swing.BoxLayout(coloredButtonsPanel, javax.swing.BoxLayout.LINE_AXIS));
|
||||
|
||||
orangeButton.setBackground(new java.awt.Color(255, 153, 0));
|
||||
orangeButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
orangeButton.setText("O");
|
||||
coloredButtonsPanel.add(orangeButton);
|
||||
|
||||
blueButton.setBackground(new java.awt.Color(0, 0, 204));
|
||||
blueButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
blueButton.setText("O");
|
||||
coloredButtonsPanel.add(blueButton);
|
||||
|
||||
yellowButton.setBackground(new java.awt.Color(255, 255, 0));
|
||||
yellowButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
yellowButton.setText("O");
|
||||
coloredButtonsPanel.add(yellowButton);
|
||||
|
||||
redButton.setBackground(new java.awt.Color(255, 0, 0));
|
||||
redButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
redButton.setText("O");
|
||||
coloredButtonsPanel.add(redButton);
|
||||
|
||||
greenButton.setBackground(new java.awt.Color(51, 255, 0));
|
||||
greenButton.setFont(new java.awt.Font("Arial", 1, 24));
|
||||
greenButton.setText("O");
|
||||
coloredButtonsPanel.add(greenButton);
|
||||
|
||||
RightPanel.add(coloredButtonsPanel);
|
||||
|
||||
add(RightPanel);
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
if (arg0 instanceof GuitarHeroEvent) {
|
||||
GuitarHeroEvent guitar = (GuitarHeroEvent) arg0;
|
||||
GuitarHeroButtonsEvent buttons = guitar.getButtonsEvent();
|
||||
|
||||
//orange button
|
||||
if (buttons.isButtonOrangeJustPressed()) {
|
||||
orangeButton.setSelected(true);
|
||||
orangeButton.setText("X");
|
||||
} else if (buttons.isButtonOrangeJustReleased()) {
|
||||
orangeButton.setSelected(false);
|
||||
orangeButton.setText("O");
|
||||
}
|
||||
|
||||
//blue button
|
||||
if (buttons.isButtonBlueJustPressed()) {
|
||||
blueButton.setSelected(true);
|
||||
blueButton.setText("X");
|
||||
} else if (buttons.isButtonBlueJustReleased()) {
|
||||
blueButton.setSelected(false);
|
||||
blueButton.setText("O");
|
||||
}
|
||||
|
||||
//Yellow button
|
||||
if (buttons.isButtonYellowJustPressed()) {
|
||||
yellowButton.setSelected(true);
|
||||
yellowButton.setText("X");
|
||||
} else if (buttons.isButtonYellowJustReleased()) {
|
||||
yellowButton.setSelected(false);
|
||||
yellowButton.setText("O");
|
||||
}
|
||||
|
||||
//Red button
|
||||
if (buttons.isButtonRedJustPressed()) {
|
||||
redButton.setSelected(true);
|
||||
redButton.setText("X");
|
||||
} else if (buttons.isButtonRedJustReleased()) {
|
||||
redButton.setSelected(false);
|
||||
redButton.setText("O");
|
||||
}
|
||||
|
||||
//Green button
|
||||
if (buttons.isButtonGreenJustPressed()) {
|
||||
greenButton.setSelected(true);
|
||||
greenButton.setText("X");
|
||||
} else if (buttons.isButtonGreenJustReleased()) {
|
||||
greenButton.setSelected(false);
|
||||
greenButton.setText("O");
|
||||
}
|
||||
|
||||
//Plus button
|
||||
if (buttons.isButtonPlusJustPressed()) {
|
||||
plusButton.setSelected(true);
|
||||
} else if (buttons.isButtonPlusJustReleased()) {
|
||||
plusButton.setSelected(false);
|
||||
}
|
||||
|
||||
//Minus button
|
||||
if (buttons.isButtonMinusJustPressed()) {
|
||||
minusButton.setSelected(true);
|
||||
} else if (buttons.isButtonMinusJustReleased()) {
|
||||
minusButton.setSelected(false);
|
||||
}
|
||||
|
||||
//Strum up button
|
||||
if (buttons.isButtonStrumUpJustPressed()) {
|
||||
strumUpButton.setSelected(true);
|
||||
} else if (buttons.isButtonStrumUpJustReleased()) {
|
||||
strumUpButton.setSelected(false);
|
||||
}
|
||||
|
||||
//Strum down button
|
||||
if (buttons.isButtonStrumDownJustPressed()) {
|
||||
strumDownButton.setSelected(true);
|
||||
} else if (buttons.isButtonStrumDownJustReleased()) {
|
||||
strumDownButton.setSelected(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(ClassicControllerInsertedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(ClassicControllerRemovedEvent arg0) {
|
||||
//do nothing
|
||||
}
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
private javax.swing.JPanel RightPanel;
|
||||
private javax.swing.JToggleButton blueButton;
|
||||
private javax.swing.JPanel coloredButtonsPanel;
|
||||
private javax.swing.JToggleButton greenButton;
|
||||
private javax.swing.JPanel leftPanel;
|
||||
private javax.swing.JToggleButton minusButton;
|
||||
private javax.swing.JToggleButton orangeButton;
|
||||
private javax.swing.JToggleButton plusButton;
|
||||
private javax.swing.JToggleButton redButton;
|
||||
private javax.swing.JToggleButton strumDownButton;
|
||||
private javax.swing.JPanel strumPanel;
|
||||
private javax.swing.JToggleButton strumUpButton;
|
||||
private javax.swing.JToggleButton yellowButton;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,39 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.GuitarHeroEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.JoystickEvent;
|
||||
|
||||
/**
|
||||
* Panel to display Guitar Hero 3 controller joystick events.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class GuitarHeroJoystickEventPanel extends JoystickEventPanel{
|
||||
|
||||
@Override
|
||||
public JoystickEvent getJoystickEvent(ExpansionEvent e) {
|
||||
if (e instanceof GuitarHeroEvent){
|
||||
return ((GuitarHeroEvent)e).getGuitarHeroJoystickEvent();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,275 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.Shape;
|
||||
import java.awt.geom.AffineTransform;
|
||||
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This panel is used to see what the IR camera of the wiimote sees.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class IRPanel extends javax.swing.JPanel implements WiimoteListener {
|
||||
|
||||
private static int MAX_NB_POINTS = 4;
|
||||
private Color color = Color.YELLOW;
|
||||
private Color backgroundColor = Color.BLACK;
|
||||
private Color borderColor = Color.BLUE;
|
||||
private Shape shape;
|
||||
private Image mImage;// image for double buffering
|
||||
private int[] xCoordinates;
|
||||
private int[] yCoordinates;
|
||||
private int nbPoints = -1;
|
||||
|
||||
/**
|
||||
* Default constructor for IR Panel. Background color : black. IR sources
|
||||
* color : yellow. Border color of IR sources : blue. Shape of the IR
|
||||
* sources : circle with a diameter of 10.
|
||||
*/
|
||||
public IRPanel() {
|
||||
shape = new java.awt.geom.Ellipse2D.Double(0, 0, 10, 10);
|
||||
initArrays();
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to parameterize the IR panel.
|
||||
*
|
||||
* @param bgColor
|
||||
* color.
|
||||
* @param ptColor
|
||||
* IR sources color.
|
||||
* @param bdColor
|
||||
* border color of IR sources.
|
||||
* @param sh
|
||||
* Shape of the IR sources.
|
||||
*/
|
||||
public IRPanel(Color bgColor, Color ptColor, Color bdColor, Shape sh) {
|
||||
backgroundColor = bgColor;
|
||||
color = ptColor;
|
||||
borderColor = bdColor;
|
||||
shape = sh;
|
||||
initArrays();
|
||||
initComponents();
|
||||
}
|
||||
|
||||
private void initArrays() {
|
||||
xCoordinates = new int[MAX_NB_POINTS];
|
||||
yCoordinates = new int[MAX_NB_POINTS];
|
||||
for (int i = 0; i < MAX_NB_POINTS; i++) {
|
||||
xCoordinates[i] = -1;
|
||||
yCoordinates[i] = -1;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
Dimension d = getSize();
|
||||
checkOffScreenImage();
|
||||
Graphics offG = mImage.getGraphics();
|
||||
offG.setColor(backgroundColor);
|
||||
offG.fillRect(0, 0, d.width, d.height);
|
||||
Graphics2D g2 = (Graphics2D) mImage.getGraphics();
|
||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
// draw points
|
||||
int i = 0;
|
||||
while (i < nbPoints) {
|
||||
double x = xCoordinates[i];
|
||||
double y = yCoordinates[i];
|
||||
|
||||
long xx = getWidth() - Math.round((double) getWidth() * x / 1024.0);
|
||||
long yy = getHeight()
|
||||
- Math.round((double) getHeight() * y / 768.0);
|
||||
g2.translate(xx, yy);
|
||||
|
||||
g2.setPaint(borderColor);
|
||||
g2.draw(shape);
|
||||
g2.setPaint(color);
|
||||
g2.fill(shape);
|
||||
|
||||
g2.setTransform(new AffineTransform());
|
||||
i++;
|
||||
}
|
||||
// put offscreen image on the screen
|
||||
g.drawImage(mImage, 0, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the mImage variable has been initialized. If it's not the case
|
||||
* it initializes it with the dimensions of the panel. mImage is for double
|
||||
* buffering.
|
||||
*/
|
||||
private void checkOffScreenImage() {
|
||||
Dimension d = getSize();
|
||||
if (mImage == null || mImage.getWidth(null) != d.width
|
||||
|| mImage.getHeight(null) != d.height) {
|
||||
mImage = createImage(d.width, d.height);
|
||||
}
|
||||
}
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
// nothing
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// transfer points
|
||||
wiiusej.values.IRSource[] points = arg0.getIRPoints();
|
||||
nbPoints = points.length;
|
||||
for (int i = 0; i < points.length; i++) {
|
||||
xCoordinates[i] = (int) points[i].getRx();
|
||||
yCoordinates[i] = (int) points[i].getRy();
|
||||
}
|
||||
for (int i = points.length; i < MAX_NB_POINTS; i++) {
|
||||
xCoordinates[i] = -1;
|
||||
yCoordinates[i] = -1;
|
||||
}
|
||||
|
||||
// redraw panel
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
// clear previous points
|
||||
for (int i = 0; i < MAX_NB_POINTS; i++) {
|
||||
xCoordinates[i] = -1;
|
||||
yCoordinates[i] = -1;
|
||||
}
|
||||
// redraw panel
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent e) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(
|
||||
ClassicControllerInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(
|
||||
ClassicControllerRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public Color getBackgroundColor() {
|
||||
return backgroundColor;
|
||||
}
|
||||
|
||||
public Color getBorderColor() {
|
||||
return borderColor;
|
||||
}
|
||||
|
||||
public Color getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public Shape getShape() {
|
||||
return shape;
|
||||
}
|
||||
|
||||
public void setBackgroundColor(Color backgroundColor) {
|
||||
this.backgroundColor = backgroundColor;
|
||||
}
|
||||
|
||||
public void setBorderColor(Color borderColor) {
|
||||
this.borderColor = borderColor;
|
||||
}
|
||||
|
||||
public void setColor(Color color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public void setShape(Shape shape) {
|
||||
this.shape = shape;
|
||||
}
|
||||
|
||||
public void clearView() {
|
||||
initArrays();
|
||||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated
|
||||
// Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
|
||||
Short.MAX_VALUE));
|
||||
layout.setVerticalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
|
||||
Short.MAX_VALUE));
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,249 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.Shape;
|
||||
import java.awt.geom.AffineTransform;
|
||||
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.JoystickEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* Panel to display joystick events.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public abstract class JoystickEventPanel extends javax.swing.JPanel implements
|
||||
WiimoteListener {
|
||||
|
||||
private Image mImage;// image for double buffering
|
||||
private Color backgroundColor = Color.BLACK;
|
||||
private Color borderColor = Color.RED;
|
||||
private Color pointColor = Color.RED;
|
||||
private Shape shape = new java.awt.geom.Ellipse2D.Double(0, 0, 30, 30);
|
||||
private JoystickEvent lastJoystickEvent = null;
|
||||
|
||||
/** Creates new form JoystickPanel */
|
||||
public JoystickEventPanel() {
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to choose the colors used by the JoystickPanel.
|
||||
*
|
||||
* @param bgColor
|
||||
* background color.
|
||||
* @param pColor
|
||||
* point color.
|
||||
* @param bdColor
|
||||
* border color for the shape.
|
||||
* @param sh
|
||||
* shape of what is drawn.
|
||||
*/
|
||||
public JoystickEventPanel(Color bgColor, Color pColor, Color bdColor,
|
||||
Shape sh) {
|
||||
backgroundColor = bgColor;
|
||||
pointColor = pColor;
|
||||
shape = sh;
|
||||
borderColor = bdColor;
|
||||
initComponents();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
Dimension d = getSize();
|
||||
checkOffScreenImage();
|
||||
Graphics offG = mImage.getGraphics();
|
||||
offG.setColor(backgroundColor);
|
||||
offG.fillRect(0, 0, d.width, d.height);
|
||||
Graphics2D g2 = (Graphics2D) mImage.getGraphics();
|
||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
g2.setTransform(new AffineTransform());
|
||||
|
||||
// compute center
|
||||
int xCenter = (int) Math.round(d.getWidth() / 2.0);
|
||||
int yCenter = (int) Math.round(d.getHeight() / 2.0);
|
||||
|
||||
// compute coordinates
|
||||
if (lastJoystickEvent != null) {
|
||||
double xAng = Math.sin(lastJoystickEvent.getAngle() * Math.PI
|
||||
/ 180.0)
|
||||
* lastJoystickEvent.getMagnitude();
|
||||
double yAng = Math.cos(lastJoystickEvent.getAngle() * Math.PI
|
||||
/ 180.0)
|
||||
* lastJoystickEvent.getMagnitude();
|
||||
int halfWidth = (int) Math.round(shape.getBounds().getWidth() / 2);
|
||||
int halHeight = (int) Math.round(shape.getBounds().getHeight() / 2);
|
||||
int xAmplitude = (int) Math.round(xCenter - shape.getBounds().getWidth());
|
||||
int yAmplitude = (int) Math.round(xCenter - shape.getBounds().getHeight());
|
||||
int xShift = (int) Math.round(xAng * xAmplitude);
|
||||
int yShift = (int) Math.round(yAng * yAmplitude);
|
||||
int x = xCenter + xShift - halfWidth;
|
||||
int y = yCenter - yShift - halHeight;
|
||||
// shape
|
||||
g2.translate(x, y);
|
||||
g2.setPaint(borderColor);
|
||||
g2.draw(shape);
|
||||
g2.setPaint(pointColor);
|
||||
g2.fill(shape);
|
||||
}
|
||||
// put offscreen image on the screen
|
||||
g.drawImage(mImage, 0, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the mImage variable has been initialized. If it's not the case
|
||||
* it initializes it with the dimensions of the panel. mImage is for double
|
||||
* buffering.
|
||||
*/
|
||||
private void checkOffScreenImage() {
|
||||
Dimension d = getSize();
|
||||
if (mImage == null || mImage.getWidth(null) != d.width
|
||||
|| mImage.getHeight(null) != d.height) {
|
||||
mImage = createImage(d.width, d.height);
|
||||
}
|
||||
}
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
JoystickEvent joy = getJoystickEvent(arg0);
|
||||
if (joy != null) {
|
||||
lastJoystickEvent = joy;
|
||||
}
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(
|
||||
ClassicControllerInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(
|
||||
ClassicControllerRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public Color getBackgroundColor() {
|
||||
return backgroundColor;
|
||||
}
|
||||
|
||||
public Color getPointColor() {
|
||||
return pointColor;
|
||||
}
|
||||
|
||||
public Color getBorderColor() {
|
||||
return borderColor;
|
||||
}
|
||||
|
||||
public Shape getShape() {
|
||||
return shape;
|
||||
}
|
||||
|
||||
public void setBackgroundColor(Color backgroundColor) {
|
||||
this.backgroundColor = backgroundColor;
|
||||
}
|
||||
|
||||
public void setPointColor(Color pointColor) {
|
||||
this.pointColor = pointColor;
|
||||
}
|
||||
|
||||
public void setBorderColor(Color borderColor) {
|
||||
this.borderColor = borderColor;
|
||||
}
|
||||
|
||||
public void setShape(Shape shape) {
|
||||
this.shape = shape;
|
||||
}
|
||||
|
||||
public abstract JoystickEvent getJoystickEvent(ExpansionEvent e);
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated
|
||||
// Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
|
||||
Short.MAX_VALUE));
|
||||
layout.setVerticalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
|
||||
Short.MAX_VALUE));
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.JoystickEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.NunchukEvent;
|
||||
|
||||
/**
|
||||
* Panel to display nunchuk joystick events.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class NunchukJoystickEventPanel extends JoystickEventPanel {
|
||||
|
||||
@Override
|
||||
public JoystickEvent getJoystickEvent(ExpansionEvent e) {
|
||||
if (e instanceof NunchukEvent) {
|
||||
return ((NunchukEvent) e).getNunchukJoystickEvent();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.values.Orientation;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.NunchukEvent;
|
||||
|
||||
/**
|
||||
* Panel to display Orientation in a MotionSensingEvent from an expansion.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class OrientationExpansionEventPanel extends OrientationPanel {
|
||||
|
||||
@Override
|
||||
public Orientation getOrientationValue(GenericEvent e) {
|
||||
if (e instanceof NunchukEvent) {
|
||||
return ((NunchukEvent) e).getNunchukMotionSensingEvent()
|
||||
.getOrientation();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -1,305 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.Image;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.geom.AffineTransform;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import wiiusej.values.Orientation;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.ExpansionEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.IREvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.WiimoteButtonsEvent;
|
||||
import wiiusej.wiiusejevents.utils.WiimoteListener;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.ClassicControllerRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.DisconnectionEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.GuitarHeroRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukInsertedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.NunchukRemovedEvent;
|
||||
import wiiusej.wiiusejevents.wiiuseapievents.StatusEvent;
|
||||
|
||||
/**
|
||||
* This panel is used to watch orientation values from a MotionSensingEvent.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public abstract class OrientationPanel extends javax.swing.JPanel implements
|
||||
WiimoteListener {
|
||||
|
||||
private Image mImage;// image for double buffering
|
||||
private Color rollColor = Color.RED;
|
||||
private Color pitchColor = Color.GREEN;
|
||||
private Color yawColor = Color.BLUE;
|
||||
private Color backgroundColor = Color.WHITE;
|
||||
private Color lineColor = Color.BLACK;
|
||||
private ArrayList<Orientation> values = new ArrayList<Orientation>();
|
||||
|
||||
/**
|
||||
* Default constructor. Background color : White. Roll color : Red. Pitch
|
||||
* color : Green. Yaw color : Blue.
|
||||
*/
|
||||
public OrientationPanel() {
|
||||
initComponents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor used to choose the colors used by the OrientationPanel.
|
||||
*
|
||||
* @param bgColor
|
||||
* background color.
|
||||
* @param rColor
|
||||
* roll color.
|
||||
* @param pColor
|
||||
* pitch color.
|
||||
* @param yColor
|
||||
* yaw color.
|
||||
* @param lColor
|
||||
* line color.
|
||||
*/
|
||||
public OrientationPanel(Color bgColor, Color rColor, Color pColor,
|
||||
Color yColor, Color lColor) {
|
||||
backgroundColor = bgColor;
|
||||
rollColor = rColor;
|
||||
pitchColor = pColor;
|
||||
yawColor = yColor;
|
||||
lineColor = lColor;
|
||||
initComponents();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
Dimension d = getSize();
|
||||
checkOffScreenImage();
|
||||
Graphics offG = mImage.getGraphics();
|
||||
offG.setColor(backgroundColor);
|
||||
offG.fillRect(0, 0, d.width, d.height);
|
||||
Graphics2D g2 = (Graphics2D) mImage.getGraphics();
|
||||
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
|
||||
RenderingHints.VALUE_ANTIALIAS_ON);
|
||||
|
||||
// draw medium line
|
||||
double yMiddleFloat = getHeight() / 2.0;
|
||||
int yMiddle = (int) Math.round(yMiddleFloat);
|
||||
|
||||
g2.setPaint(lineColor);
|
||||
g2.drawLine(0, yMiddle, getWidth(), yMiddle);
|
||||
|
||||
Orientation[] valuesArray = values.toArray(new Orientation[0]);
|
||||
double unit = yMiddleFloat / 180.0;
|
||||
int previousRoll = 0;
|
||||
int previousPitch = 0;
|
||||
int previousYaw = 0;
|
||||
// draw curves
|
||||
for (int i = 0; i < valuesArray.length && i < getWidth(); i++) {
|
||||
Orientation orientation = valuesArray[i];
|
||||
// draw roll
|
||||
g2.setPaint(rollColor);
|
||||
int yDelta = (int) Math.round(unit * orientation.getRoll());
|
||||
int y = -1 * yDelta + yMiddle;
|
||||
g2.drawLine(i - 1, previousRoll, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousRoll = y;
|
||||
// draw pitch
|
||||
g2.setPaint(pitchColor);
|
||||
yDelta = (int) Math.round(unit * orientation.getPitch());
|
||||
y = -1 * yDelta + yMiddle;
|
||||
g2.drawLine(i - 1, previousPitch, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousPitch = y;
|
||||
// draw yaw
|
||||
g2.setPaint(yawColor);
|
||||
yDelta = (int) Math.round(unit * orientation.getYaw());
|
||||
y = -1 * yDelta + yMiddle;
|
||||
g2.drawLine(i - 1, previousYaw, i, y);
|
||||
g2.setTransform(new AffineTransform());
|
||||
previousYaw = y;
|
||||
}
|
||||
|
||||
// draw legend
|
||||
g2.setPaint(rollColor);
|
||||
g2.drawLine(5, getHeight() - 10, 25, getHeight() - 10);
|
||||
g2.setPaint(pitchColor);
|
||||
g2.drawLine(60, getHeight() - 10, 80, getHeight() - 10);
|
||||
g2.setPaint(yawColor);
|
||||
g2.drawLine(120, getHeight() - 10, 140, getHeight() - 10);
|
||||
|
||||
g2.setPaint(lineColor);
|
||||
g2.drawString("Roll", 30, getHeight() - 5);
|
||||
g2.drawString("Pitch", 85, getHeight() - 5);
|
||||
g2.drawString("Yaw", 145, getHeight() - 5);
|
||||
g2.drawString("0", 2, yMiddle - 5);
|
||||
g2.drawString("180", 2, 10);
|
||||
g2.drawString("-180", 2, getHeight() - 15);
|
||||
// put offscreen image on the screen
|
||||
g.drawImage(mImage, 0, 0, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* check if the mImage variable has been initialized. If it's not the case
|
||||
* it initializes it with the dimensions of the panel. mImage is for double
|
||||
* buffering.
|
||||
*/
|
||||
private void checkOffScreenImage() {
|
||||
Dimension d = getSize();
|
||||
if (mImage == null || mImage.getWidth(null) != d.width
|
||||
|| mImage.getHeight(null) != d.height) {
|
||||
mImage = createImage(d.width, d.height);
|
||||
}
|
||||
}
|
||||
|
||||
public void onButtonsEvent(WiimoteButtonsEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onIrEvent(IREvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onMotionSensingEvent(MotionSensingEvent arg0) {
|
||||
draw(arg0);
|
||||
}
|
||||
|
||||
public void onExpansionEvent(ExpansionEvent arg0) {
|
||||
draw(arg0);
|
||||
}
|
||||
|
||||
public void onStatusEvent(StatusEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onDisconnectionEvent(DisconnectionEvent arg0) {
|
||||
// Clear points.
|
||||
values.clear();
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void onNunchukInsertedEvent(NunchukInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onNunchukRemovedEvent(NunchukRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroInsertedEvent(GuitarHeroInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onGuitarHeroRemovedEvent(GuitarHeroRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerInsertedEvent(
|
||||
ClassicControllerInsertedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
public void onClassicControllerRemovedEvent(
|
||||
ClassicControllerRemovedEvent arg0) {
|
||||
// nothing
|
||||
}
|
||||
|
||||
private void draw(GenericEvent arg0) {
|
||||
if (values.size() >= getWidth()) {
|
||||
// if there are as many values as pixels in the width
|
||||
// clear points
|
||||
values.clear();
|
||||
}
|
||||
Orientation orientation = getOrientationValue(arg0);
|
||||
if (orientation != null)
|
||||
values.add(orientation);
|
||||
repaint();
|
||||
}
|
||||
|
||||
public abstract Orientation getOrientationValue(GenericEvent e);
|
||||
|
||||
public Color getBackgroundColor() {
|
||||
return backgroundColor;
|
||||
}
|
||||
|
||||
public Color getLineColor() {
|
||||
return lineColor;
|
||||
}
|
||||
|
||||
public Color getPitchColor() {
|
||||
return pitchColor;
|
||||
}
|
||||
|
||||
public Color getRollColor() {
|
||||
return rollColor;
|
||||
}
|
||||
|
||||
public Color getYawColor() {
|
||||
return yawColor;
|
||||
}
|
||||
|
||||
public void setBackgroundColor(Color backgroundColor) {
|
||||
this.backgroundColor = backgroundColor;
|
||||
}
|
||||
|
||||
public void setLineColor(Color lineColor) {
|
||||
this.lineColor = lineColor;
|
||||
}
|
||||
|
||||
public void setPitchColor(Color pitchColor) {
|
||||
this.pitchColor = pitchColor;
|
||||
}
|
||||
|
||||
public void setRollColor(Color rollColor) {
|
||||
this.rollColor = rollColor;
|
||||
}
|
||||
|
||||
public void setYawColor(Color yawColor) {
|
||||
this.yawColor = yawColor;
|
||||
}
|
||||
|
||||
public void clearView() {
|
||||
values.clear();
|
||||
repaint();
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called from within the constructor to initialize the form.
|
||||
* WARNING: Do NOT modify this code. The content of this method is always
|
||||
* regenerated by the Form Editor.
|
||||
*/
|
||||
// <editor-fold defaultstate="collapsed" desc="Generated
|
||||
// Code">//GEN-BEGIN:initComponents
|
||||
private void initComponents() {
|
||||
|
||||
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
|
||||
this.setLayout(layout);
|
||||
layout.setHorizontalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400,
|
||||
Short.MAX_VALUE));
|
||||
layout.setVerticalGroup(layout.createParallelGroup(
|
||||
javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300,
|
||||
Short.MAX_VALUE));
|
||||
}// </editor-fold>//GEN-END:initComponents
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
// End of variables declaration//GEN-END:variables
|
||||
}
|
||||
@@ -1,38 +0,0 @@
|
||||
/**
|
||||
* This file is part of WiiuseJ.
|
||||
*
|
||||
* WiiuseJ is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* WiiuseJ is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with WiiuseJ. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package wiiusej.utils;
|
||||
|
||||
import wiiusej.values.Orientation;
|
||||
import wiiusej.wiiusejevents.GenericEvent;
|
||||
import wiiusej.wiiusejevents.physicalevents.MotionSensingEvent;
|
||||
|
||||
/**
|
||||
* Panel to display Orientation in a MotionSensingEvent from a wiimote.
|
||||
*
|
||||
* @author guiguito
|
||||
*/
|
||||
public class OrientationWiimoteEventPanel extends OrientationPanel {
|
||||
|
||||
@Override
|
||||
public Orientation getOrientationValue(GenericEvent e) {
|
||||
if (e instanceof MotionSensingEvent) {
|
||||
return ((MotionSensingEvent) e).getOrientation();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user