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:
13Controller.resetAllDeviceBindings()
14
15// Query all actions
16print("All Actions: \n" + Controller.getAllActions())
17
18// Each action stores:
19// action: int representation of enum
20print("Action 5 int: \n" + Controller.getAllActions()[5].action)
21
22// actionName: string representation of enum
23print("Action 5 name: \n" + Controller.getAllActions()[5].actionName)
24
25// inputChannels: list of all inputchannels that control that action
26print("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
31print("Input channel action: \n" + Controller.getAllActions()[5].inputChannels[0].action)
32
33// scale: sensitivity of input
34print("Input channel scale: \n" + Controller.getAllActions()[5].inputChannels[0].scale)
35
36// input and modifier: Inputs
37print("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
42print("Input device: \n" + Controller.getAllActions()[5].inputChannels[0].input.device)
43
44// channel: channel of input
45print("Input channel: \n" + Controller.getAllActions()[5].inputChannels[0].input.channel)
46
47// type: type of input (Unknown, Button, Axis, Joint)
48print("Input type: \n" + Controller.getAllActions()[5].inputChannels[0].input.type)
49
50// id: id of input
51print("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
55print("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
58print("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
63var s = Controller.getAllActions()[0].inputChannels[0]
64var 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
68Controller.removeInputChannel(s)
69Controller.removeInputChannel(w)
70print(s.scale)
71s.action = 1
72s.scale = .01
73
74w.action = 0
75w.scale = 10000
76Controller.addInputChannel(s)
77Controller.addInputChannel(w)
78print(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
84var availableInputs = Controller.getAvailableInputs(1)
85for (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
91var e = Controller.getAllActions()[5].inputChannels[0]
92Controller.removeInputChannel(e)
93e.input = availableInputs[6].input
94Controller.addInputChannel(e)