Files
jlibwiiuse/WiiUseJ/src/wiiusej/wiiuseapievents/EventsGatherer.java
guilhem.duche d8b72061eb reorganized files and a part of the architecture.
This version needs to be tested.
Don't forget to add comments.

git-svn-id: http://wiiusej.googlecode.com/svn/trunk@64 ae48ae66-6a45-0410-b38e-211266189506
2008-02-29 00:25:40 +00:00

181 lines
4.4 KiB
Java

package wiiusej.wiiuseapievents;
/**
* Gather events during a call to the Wiiuse API.
*
* @author gduche
*
*/
public class EventsGatherer {
private WiiUseApiEvent[] events;
private int index = 0;
private GenericEvent genericEvent = null;
/**
* Create EventsGatherer.
*
* @param nbWiimotes
* nb wiimotes (nb a of events possible in a call to Wiiuse API)
*/
public EventsGatherer(int nbWiimotes) {
events = new WiiUseApiEvent[nbWiimotes];
}
/**
* Add an event to the array.
*
* @param e
* the event to add.
*/
private void addEvent(WiiUseApiEvent e) {
events[index] = e;
index++;
}
/**
* Prepare a wiimote event to add.
*
* @param id
* id of the wiimote.
* @param buttonsJustPressed
* buttons just pressed
* @param buttonsJustReleased
* buttons just released
* @param buttonsHeld
* buttons held
*/
public void prepareWiiMoteEvent(int id, short buttonsJustPressed,
short buttonsJustReleased, short buttonsHeld) {
genericEvent = new GenericEvent(id, buttonsJustPressed,
buttonsJustReleased, buttonsHeld);
}
/**
* Add an IR point to the WiiMoteEvent prepared
*
* @param x
* x coordinates
* @param y
* y coordinates
*/
public void addIRPointToPreparedWiiMoteEvent(int x, int y) {
if (genericEvent != null) {
genericEvent.addIRpoint(x, y);
}
}
/**
* Set orientation and gravity force of the prepared event.
*
* @param r
* roll
* @param p
* pitch
* @param ya
* yaw
* @param x
* gravity force on x axis
* @param y
* gravity force on y axis
* @param z
* gravity force on z axis
*/
public void addMotionSensingValues(float r, float p, float ya, float x,
float y, float z) {
if (genericEvent != null) {
genericEvent.setMotionSensingEvent(r, p, ya, x, y, z);
}
}
/**
* Add the prepared WiimoteEvent to the gatherer.
*/
public void addWiimoteEvent() {
if (genericEvent != null) {
addEvent(genericEvent);
genericEvent = null;
}
}
/**
* Add a StatusEvent to the gatherer.
*
* @param id
* id of the wiimote
* @param connect
* true if the wiimote is connected
* @param batt
* battery level
* @param led
* status of leds
* @param speak
* speakers status
* @param attach
* attachment status
* @param rumbleState
* true if rumble is active
* @param orientationThreshold
* value of the minimum angle between two events with the
* accelerometer
* @param accelerationThreshold
* value of the value variation between two events with the
* accelerometer
* @param alphaSmooth
* value of the alpha smoothing parameter
* @param continuousState
* true if continuous flag is activated
* @param smoothingState
* true if smoothing flag is activated
* @param irState
* true if ir is active
* @param motionSensingState
* true if accelerometer is active
*/
public void addStatusEvent(int id, boolean connect, float batt, short led,
boolean speak, int attach, boolean rumbleState,
float orientationThreshold, int accelerationThreshold,
float alphaSmooth, boolean continuousState, boolean smoothingState,
boolean irState, boolean motionSensingState) {
StatusEvent evt = new StatusEvent(id, connect, batt, led, speak,
attach, rumbleState, orientationThreshold,
accelerationThreshold, alphaSmooth, continuousState,
smoothingState, irState, motionSensingState);
addEvent(evt);
}
/**
* Add a DisconnectionEvent to the gatherer.
*
* @param id
* id of the wiimote
*/
public void addDisconnectionEvent(int id) {
DisconnectionEvent evt = new DisconnectionEvent(id);
addEvent(evt);
}
/**
* Return an array containing the events.
*
* @return
*/
public WiiUseApiEvent[] getEvents() {
return java.util.Arrays.copyOfRange(events, 0, index);
}
/**
* Clear the gatherer and remove objects.
*/
public void clearEvents() {
for (int i = 0; i < events.length; i++) {
events[i] = null;
}
genericEvent = null;
index = 0;
}
}