History

example script for controller scripting, input mapping

Sam Gondelman committed 11 years ago

Commit dd12e471 parent 984d4491 file · +94 −0Browse files

Showing the changes to examples/example/scripts/controllerScriptingExamples.js (1 of 1 file). Show all

Unified · Split

examples/example/scripts/controllerScriptingExamples.js+94−0
@@ -0,0 +1,94 @@
1+//
2+// controllerScriptingExamples.js
3+// examples
4+//
5+// Created by Sam Gondelman on 6/2/15
6+// Copyright 2015 High Fidelity, Inc.
7+//
8+// Distributed under the Apache License, Version 2.0.
9+// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10+//
11+
12+// Resets every device to its default key bindings:
13+Controller.resetAllDeviceBindings()
14+
15+// Query all actions
16+print("All Actions: \n" + Controller.getAllActions())
17+
18+// Each action stores:
19+// action: int representation of enum
20+print("Action 5 int: \n" + Controller.getAllActions()[5].action)
21+
22+// actionName: string representation of enum
23+print("Action 5 name: \n" + Controller.getAllActions()[5].actionName)
24+
25+// inputChannels: list of all inputchannels that control that action
26+print("Action 5 input channels: \n" + Controller.getAllActions()[5].inputChannels + "\n")
27+
28+
29+// Each input channel stores:
30+// action: Action that this InputChannel maps to
31+print("Input channel action: \n" + Controller.getAllActions()[5].inputChannels[0].action)
32+
33+// scale: sensitivity of input
34+print("Input channel scale: \n" + Controller.getAllActions()[5].inputChannels[0].scale)
35+
36+// input and modifier: Inputs
37+print("Input channel input and modifier: \n" + Controller.getAllActions()[5].inputChannels[0].input + "\n" + Controller.getAllActions()[5].inputChannels[0].modifier + "\n")
38+
39+
40+// Each Input stores:
41+// device: device of input
42+print("Input device: \n" + Controller.getAllActions()[5].inputChannels[0].input.device)
43+
44+// channel: channel of input
45+print("Input channel: \n" + Controller.getAllActions()[5].inputChannels[0].input.channel)
46+
47+// type: type of input (Unknown, Button, Axis, Joint)
48+print("Input type: \n" + Controller.getAllActions()[5].inputChannels[0].input.type)
49+
50+// id: id of input
51+print("Input id: \n" + Controller.getAllActions()[5].inputChannels[0].input.id + "\n")
52+
53+
54+// You can get the name of a device from its id
55+print("Device 1 name: \n" + Controller.getDeviceName(Controller.getAllActions()[5].inputChannels[0].input.id))
56+
57+// You can also get all of a devices input channels
58+print("Device 1's input channels: \n" + Controller.getAllInputsForDevice(1) + "\n")
59+
60+
61+// Modifying properties:
62+// The following code will switch the "w" and "s" key functionality and adjust their scales
63+var s = Controller.getAllActions()[0].inputChannels[0]
64+var w = Controller.getAllActions()[1].inputChannels[0]
65+
66+// You must remove an input controller before modifying it so the old input controller isn't registered anymore
67+// removeInputChannel and addInputChannel return true if successful, false otherwise
68+Controller.removeInputChannel(s)
69+Controller.removeInputChannel(w)
70+print(s.scale)
71+s.action = 1
72+s.scale = .01
73+
74+w.action = 0
75+w.scale = 10000
76+Controller.addInputChannel(s)
77+Controller.addInputChannel(w)
78+print(s.scale)
79+
80+// You can get all the available inputs for any device
81+// Each AvailableInput has:
82+// input: the Input itself
83+// inputName: string representing the input
84+var availableInputs = Controller.getAvailableInputs(1)
85+for (i = 0; i < availableInputs.length; i++) {
86+ print(availableInputs[i].inputName);
87+}
88+
89+// You can modify key bindings by using these avaiable inputs
90+// This will replace e (up) with 6
91+var e = Controller.getAllActions()[5].inputChannels[0]
92+Controller.removeInputChannel(e)
93+e.input = availableInputs[6].input
94+Controller.addInputChannel(e)