1 package com.neuronrobotics.sdk.addons.gamepad;
3 import java.util.ArrayList;
4 import java.util.Arrays;
5 import java.util.HashMap;
8 import net.java.games.input.Component;
9 import net.java.games.input.Controller;
10 import net.java.games.input.Event;
11 import net.java.games.input.EventQueue;
13 import com.neuronrobotics.bowlerstudio.assets.ConfigurationDatabase;
14 import com.neuronrobotics.sdk.common.Log;
15 import com.neuronrobotics.sdk.common.NonBowlerDevice;
16 import com.neuronrobotics.sdk.util.ThreadUtil;
18 import eu.mihosoft.vrl.v3d.JavaFXInitializer;
30 private ArrayList<IGameControlEvent>
listeners =
new ArrayList<IGameControlEvent>();
35 private HashMap<String, Double>
recentValue =
new HashMap<String, Double>();
43 net.java.games.input.ControllerEnvironment.getDefaultEnvironment();
47 ArrayList<Controller> back =
new ArrayList<Controller>();
50 Controller[] getDefaultEnvironmentGetControllers = defaultEnvironment.
getControllers();
51 for (
int i = 0; i < getDefaultEnvironmentGetControllers.length; i++) {
52 if (!getDefaultEnvironmentGetControllers[i].
getName().contains(
"Wacom")) {
53 back.add(getDefaultEnvironmentGetControllers[i]);
61 ArrayList<Controller> getDefaultEnvironmentGetControllers =
controllers();
62 ArrayList<String> cons =
new ArrayList<>();
63 for (
int i = 0; i < getDefaultEnvironmentGetControllers.size(); i++) {
64 Controller
controller = getDefaultEnvironmentGetControllers.get(i);
66 if(!
name.contains(
"Wacom")){
86 ArrayList<Controller> getDefaultEnvironmentGetControllers =
controllers();
89 if (names ==
null && getDefaultEnvironmentGetControllers.size() > 0) {
90 controller = getDefaultEnvironmentGetControllers.get(index);
93 for (
int i = 0; i < getDefaultEnvironmentGetControllers.size(); i++) {
94 Controller c = getDefaultEnvironmentGetControllers.get(i);
95 if (c.getName().toLowerCase().contains(n.toLowerCase())) {
99 System.out.println(
"Non match: " + c.getName() +
" " + n);
108 throw new RuntimeException(
"Contoller must not be null");
140 setName(
"Game Controller Poll thread");
144 }
catch (Exception e1) {
146 e1.printStackTrace();
156 }
catch (Throwable t) {
157 System.out.println(
"BowlerJInputDevice Waiting for device to be availible");
161 }
catch (InterruptedException e) {
174 EventQueue queue =
controller.getEventQueue();
175 Event
event =
new Event();
176 while (queue.getNextEvent(event) && run) {
177 Component comp =
event.getComponent();
178 float value =
event.getValue();
179 String n = comp.getName();
180 if (n.contentEquals(
"pov")) {
181 double angle = Math.PI * 2 * value;
183 sendValue((
float) Math.sin(angle),
"pov-up-down");
184 sendValue((
float) Math.cos(angle),
"pov-left-right");
186 sendValue((
float) 0,
"pov-up-down");
187 sendValue((
float) 0,
"pov-left-right");
194 }
catch (Throwable t) {
200 private void sendValue(
float value, String n) {
202 if (Math.abs(value) < 0.0001 && value != 0)
205 for (
int i = 0; i <
listeners.size(); i++) {
209 }
catch (Throwable ex) {
210 ex.printStackTrace();
235 System.out.println(
"Found! " +
controller.getName());
238 EventQueue queue =
controller.getEventQueue();
239 Event
event =
new Event();
240 while (queue.getNextEvent(event)) {
257 this.listeners.remove(l);
265 this.listeners.clear();
275 this.listeners.add(l);
286 return new ArrayList<String>();
291 String values =
" unmaped:";
294 values +=
"\n\t" + key +
" = " +
recentValue.get(key);
296 values +=
"\nMaped:";
299 values +=
"\n\t" + mappedAxisName +
" (from \"" + key +
"\") " +
getValue(mappedAxisName);
301 return name +
" " + values;
307 values +=
"\n\t" + key +
" = " +
recentValue.get(key);
313 return name +
" = " + values;
316 public void map(String controllerVal, String persistantVal) {
322 public static void main(String[] args)
throws InterruptedException {
330 System.out.println(g);
334 System.out.println(
"Controller clean exit");
335 }
catch (Throwable t) {
336 System.out.println(
"Waiting for device to be availible");
static String getGitSource()
static ControllerEnvironment getDefaultEnvironment()
abstract Controller[] getControllers()
static String getMappedAxisName(String controllerName, String incomingName)
static Set< String > getMappedAxis(String name)
static boolean areAllAxisMapped(String controllerName)
static void map(String name, String controllerVal, String persistantVal)
static boolean isMapedAxis(String controllerName, String mappedValue)
static void warning(String message)
static void wait(int time)
void onEvent(String name, float value)