A B C E G H I K L M N P R S T V

A

AbstractControl - Class in net.jinx.action.input.robot
Abstract implementation of Control with most parts implemented for you.
AbstractControl(String, int) - Constructor for class net.jinx.action.input.robot.AbstractControl
Constructs an AbstractControl.
act(Participant, float) - Method in class net.jinx.action.input.ActionMap
Polls for input from the InputDevice attached to this ActionMap and then sends action data back to the calling Participant.
act(Participant, float) - Method in interface net.jinx.action.input.Behavior
Causes p to act in some manner, according to this Behavior's mode of operation.
Action - Class in net.jinx.action.input
Actions are generated by Behaviors in response to variables set in Condition objects.
Action() - Constructor for class net.jinx.action.input.Action
Constructs a new Action with a name "default" and value 0f.
Action(String, float) - Constructor for class net.jinx.action.input.Action
Constructs a new Action with the given name and value.
ActionMap - Class in net.jinx.action.input
Behavior implementation that maps input from an array of InputDevice objects to Action objects, which are then processed by the encapsulating Participant.
ActionMap() - Constructor for class net.jinx.action.input.ActionMap
Constructs a new ActionMap with no InputDevices and no associations.
associate(ControlID, String) - Method in class net.jinx.action.input.ActionMap
Associates a control with an action.
AxisControl - Class in net.jinx.action.input.robot
AxisControl is an almost useless extension of AbstractControl.
AxisControl(String) - Constructor for class net.jinx.action.input.robot.AxisControl
Constructs a new AxisControl with the given name.

B

Behavior - Interface in net.jinx.action.input
Behavior is what controls a Participant.
bind(InputDevice[], int[], float) - Static method in class net.jinx.action.input.ControlBinder
Waits at most wait seconds, attempting to detect a difference in one or more of the controls in the array devices.
ButtonControl - Class in net.jinx.action.input.robot
ButtonControl is an AbstractControl extension that converts it's input values to a boolean state.
ButtonControl(String) - Constructor for class net.jinx.action.input.robot.ButtonControl
Constructs a new ButtonControl with the given name.
buttonsPressed() - Method in class net.jinx.action.input.InputDevice
Determines which buttons are currently pressed.

C

clone() - Method in class net.jinx.action.input.Condition
Copies this Condition.
Condition - Class in net.jinx.action.input
This is used by Participants to communicate the current situation to their Behaviors.
Condition() - Constructor for class net.jinx.action.input.Condition
Constructs a new, blank Condition.
Control - Interface in net.jinx.action.input.robot
Control represents an internal variable in a Robot.
ControlBinder - Class in net.jinx.action.input
Contains methods related to detecting the activation of controls.
ControlID - Class in net.jinx.action.input
Represents a particular control attached to an InputDevice.
ControlID(int, int, int) - Constructor for class net.jinx.action.input.ControlID
Constructs a ControlID.
controlString() - Method in class net.jinx.action.input.ControlID
Returns a String representing the control.

E

equals(Object) - Method in class net.jinx.action.input.ControlID
 

G

get(String) - Method in class net.jinx.action.input.Condition
Returns the value associated with key.
getAssociation(ControlID) - Method in class net.jinx.action.input.ActionMap
Gets the association for id.
getAxes() - Method in class net.jinx.action.input.InputDevice
Returns the array containing all of the axes for this InputDevice.
getBehavior() - Method in class net.jinx.action.input.Participant
Provides the current Behavior for this Participant.
getButton(int) - Method in class net.jinx.action.input.InputDevice
Returns the button Axis indicated.
getButtons() - Method in class net.jinx.action.input.InputDevice
Returns the array containing the button axes for this InputDevice.
getCondition() - Method in class net.jinx.action.input.Participant
Provides the Condition object for this Participant.
getCondition() - Method in class net.jinx.action.input.robot.Robot
 
getControl(String) - Method in class net.jinx.action.input.robot.Robot
 
getControl(String) - Method in interface net.jinx.action.input.robot.RobotSystem
 
getControlIndex() - Method in class net.jinx.action.input.ControlID
Returns the control index.
getController() - Method in class net.jinx.action.input.InputDevice
Returns the underlying JInput Controller that this InputDevice is wrapping.
getControls() - Method in interface net.jinx.action.input.robot.RobotSystem
 
getControlType() - Method in class net.jinx.action.input.ControlID
Returns the control type constant.
getDeadZone(int) - Method in class net.jinx.action.input.InputDevice
Returns the dead zone for the indicated fuzzy axis.
getDeadZoneValue(int) - Method in class net.jinx.action.input.InputDevice
Returns the value of the indicated fuzzy axis, using the set dead zone to calculate the value.
getDescription() - Method in class net.jinx.action.input.InputDevice
Returns a best guess as to the type of this InputDevice.
getDeviceIndex() - Method in class net.jinx.action.input.ControlID
Returns the device index.
getDevices(InputDevice[]) - Static method in class net.jinx.action.input.InputDevice
Provides an array of InputDevice objects.
getDevices(InputDevice[], Hierarchy) - Static method in class net.jinx.action.input.InputDevice
Provides an array of InputDevice objects.
getDevices(Hierarchy) - Static method in class net.jinx.action.input.InputDevice
Provides an array of InputDevice objects.
getDevices() - Static method in class net.jinx.action.input.InputDevice
Provides an array of InputDevice objects.
getFuzzyAxes() - Method in class net.jinx.action.input.InputDevice
Returns the array containing the fuzzy axes for this InputDevice.
getFuzzyAxis(int) - Method in class net.jinx.action.input.InputDevice
Returns the fuzzy Axis indicated.
getFuzzyValue(int) - Method in class net.jinx.action.input.InputDevice
Returns the value of the indicated fuzzy axis; dead zone data is ignored and the value is not necessarily normalized.
getID() - Method in class net.jinx.action.input.InputDevice
Returns a (hopefully) unique identifier String for this InputDevice to ease finding the same InputDevice from one run of a program to the next.
getMouseWheel() - Method in class net.jinx.action.input.InputDevice
Returns the mouse wheel Axis, or null if this is not a mouse.
getMouseWheelClicks() - Method in class net.jinx.action.input.InputDevice
Returns the direction and number of clicks that have occured on this mouse's wheel.
getMouseXAxis() - Method in class net.jinx.action.input.InputDevice
Returns the X Axis for a mouse, or null if this is not a mouse.
getMouseYAxis() - Method in class net.jinx.action.input.InputDevice
Returns the Y Axis for a mouse, or null if this is not a mouse.
getName() - Method in class net.jinx.action.input.Action
Peovides the name of this Action.
getName() - Method in class net.jinx.action.input.InputDevice
Returns the name of this InputDevice.
getName() - Method in class net.jinx.action.input.robot.AbstractControl
Returns the name of this Control.
getName() - Method in interface net.jinx.action.input.robot.Control
Provides the human-readable name of this control.
getName() - Method in class net.jinx.action.input.robot.LoopbackReadout
 
getName() - Method in interface net.jinx.action.input.robot.Readout
Provides the name of this Readout; this is used for displaying a label for it.
getName() - Method in interface net.jinx.action.input.robot.RobotSystem
 
getNormalDivider() - Method in class net.jinx.action.input.InputDevice
Returns the normal divider.
getNormalValue(int) - Method in class net.jinx.action.input.InputDevice
Returns the value of the indicated fuzzy axis; dead zone data is ignored, but the return value is guaranteed to be normalized from -1 to 1.
getPOVHat(int) - Method in class net.jinx.action.input.InputDevice
Returns the POV Hat Axis indicated.
getPOVHats() - Method in class net.jinx.action.input.InputDevice
Returns the array containing the POV hat axes for this InputDevice.
getReadout(String) - Method in class net.jinx.action.input.robot.Robot
 
getReadout(String) - Method in interface net.jinx.action.input.robot.RobotSystem
 
getReadouts() - Method in interface net.jinx.action.input.robot.RobotSystem
 
getReport() - Method in class net.jinx.action.input.InputDevice
Gets a report of the current conditions of this InputDevice.
getRumbler(Axis.Identifier) - Method in class net.jinx.action.input.InputDevice
Returns a Rumbler that matches the given identifier, or null if there isn't one.
getRumblers() - Method in class net.jinx.action.input.InputDevice
Gets the array of all Rumblers attached to this InputDevice.
getSystem(String) - Method in class net.jinx.action.input.robot.Robot
 
getText() - Method in class net.jinx.action.input.robot.LoopbackReadout
 
getText() - Method in interface net.jinx.action.input.robot.Readout
 
getThrottleValue(int) - Method in class net.jinx.action.input.InputDevice
Returns the value of the indicated fuzzy axis, using the set dead zone to calculate the value.
getType() - Method in class net.jinx.action.input.robot.AbstractControl
Returns the type constant for this Control.
getType() - Method in interface net.jinx.action.input.robot.Control
Provides a way to identify how this control should be treated and what range of input values it will expect.
getType() - Method in class net.jinx.action.input.robot.LoopbackReadout
 
getType() - Method in interface net.jinx.action.input.robot.Readout
Provides the type constant for this Readout.
getType() - Method in class net.jinx.action.input.robot.ToggleButtonControl
Overriden to return Control.TYPE_TOGGLE.
getValue() - Method in class net.jinx.action.input.Action
Provides the value of this Action.
getValue() - Method in class net.jinx.action.input.robot.AbstractControl
Returns the value of this Control.
getValue() - Method in interface net.jinx.action.input.robot.Control
Provides the current value of this control.
getValue() - Method in class net.jinx.action.input.robot.LoopbackReadout
 
getValue() - Method in interface net.jinx.action.input.robot.Readout
 

H

hashCode() - Method in class net.jinx.action.input.ControlID
 
hasKey(String) - Method in class net.jinx.action.input.Condition
Determines if the given key has a value associated with it.
hasValue(Object) - Method in class net.jinx.action.input.Condition
Determines if the given value has a key associated with it.

I

InputDevice - Class in net.jinx.action.input
Wrapper for net.java.games.input.Controller to make it simpler and easier to deal with.
InputDevice(Controller) - Constructor for class net.jinx.action.input.InputDevice
Constructs a new InputDevice to wrap the given Controller.
isButton() - Method in class net.jinx.action.input.ControlID
Is this refering to a button?
isButtonPressed(int) - Method in class net.jinx.action.input.InputDevice
Determines if the indicated button is pressed.
isEmpty() - Method in class net.jinx.action.input.Condition
Determines if there are no key-value pairs.
isFlashing() - Method in class net.jinx.action.input.robot.LoopbackReadout
 
isFlashing() - Method in interface net.jinx.action.input.robot.Readout
 
isFuzzy() - Method in class net.jinx.action.input.ControlID
Is this refering to a fuzzy axis?
isHeadTracker() - Method in class net.jinx.action.input.InputDevice
Returns true if this InputDevice is a head tracker.
isKeyboard() - Method in class net.jinx.action.input.InputDevice
Returns true if this InputDevice is a keyboard.
isKeypad() - Method in class net.jinx.action.input.InputDevice
Returns true if this InputDevice is a keypad.
isMouse() - Method in class net.jinx.action.input.InputDevice
Returns true if this InputDevice is a mouse.
isOn() - Method in class net.jinx.action.input.robot.ButtonControl
Determines if this ButtonControl is currently on.
isOn() - Method in class net.jinx.action.input.robot.ToggleButtonControl
Returns the result of isToggled().
isPOVCenter(int) - Method in class net.jinx.action.input.InputDevice
Determines if the indicated POV hat is centered.
isPOVDown(int) - Method in class net.jinx.action.input.InputDevice
Determines if the indicated POV hat is pointed in the down direction.
isPOVHat() - Method in class net.jinx.action.input.ControlID
Is this refering to a POV hat?
isPOVLeft(int) - Method in class net.jinx.action.input.InputDevice
Determines if the indicated POV hat is pointed in the left direction.
isPOVRight(int) - Method in class net.jinx.action.input.InputDevice
Determines if the indicated POV hat is pointed in the right direction.
isPOVUp(int) - Method in class net.jinx.action.input.InputDevice
Determines if the indicated POV hat is pointed in the up direction.
isPressed() - Method in class net.jinx.action.input.robot.ButtonControl
Determines if this ButtonControl is currently pressed.
isReverseFuzzy(int) - Method in class net.jinx.action.input.InputDevice
Returns the value of the reverse flag for the indicated fuzzy axis.
isRudder() - Method in class net.jinx.action.input.InputDevice
Returns true if this InputDevice is a rudder control.
isStick() - Method in class net.jinx.action.input.InputDevice
Returns true if this InputDevice is a stick.
isToggled() - Method in class net.jinx.action.input.robot.LoopbackReadout
 
isToggled() - Method in interface net.jinx.action.input.robot.Readout
 
isToggled() - Method in class net.jinx.action.input.robot.ToggleButtonControl
Determines whether or not this ToggleButtonControl is currently toggled.
isUseless() - Method in class net.jinx.action.input.InputDevice
Returns true if this InputDevice has no controls of any kind.
isWheel() - Method in class net.jinx.action.input.InputDevice
Returns true if this InputDevice is a steering wheel.

K

keyIterator() - Method in class net.jinx.action.input.Condition
Provides an Iterator for the keys.

L

load(Hierarchy) - Method in class net.jinx.action.input.InputDevice
Loads the configuration for this InputDevice from h.
load(InputDevice[], Hierarchy) - Static method in class net.jinx.action.input.InputDevice
Calls load(base) on each InputDevice in the array of devices, using a sub-node named according to the device's unique ID (see the getID() method) and that device's order among those devices with an identical ID.
LoopbackReadout - Class in net.jinx.action.input.robot


API Stability: Alpha.
LoopbackReadout(Control) - Constructor for class net.jinx.action.input.robot.LoopbackReadout
 

M

main(String[]) - Static method in class net.jinx.action.input.Test
Main entry point.
matchDevice(String, InputDevice[]) - Static method in class net.jinx.action.input.InputDevice
Attempts to match an InputDevice to it's ID string.

N

net.jinx.action.input - package net.jinx.action.input
 
net.jinx.action.input.robot - package net.jinx.action.input.robot
 

P

Participant - Class in net.jinx.action.input
Participant is the base superclass of any kind of Actor that is actively self guiding.
Participant(String) - Constructor for class net.jinx.action.input.Participant
Constructors a new Participant.
Participant(String, Behavior) - Constructor for class net.jinx.action.input.Participant
Utility constructor that allows setting the Behavior.
poll() - Method in class net.jinx.action.input.InputDevice
Polls this InputDevice for input.
pressed() - Method in class net.jinx.action.input.robot.ButtonControl
Called when the state has changed from released to pressed.
pressed() - Method in class net.jinx.action.input.robot.ToggleButtonControl
Calls toggle().
priority() - Method in class net.jinx.action.input.robot.LoopbackReadout
 
priority() - Method in interface net.jinx.action.input.robot.Readout
Provides the importance level of this Readout.
PRIORITY_ALERT - Static variable in interface net.jinx.action.input.robot.Readout
Priority for data that needs immediate attention.
PRIORITY_CRITICAL - Static variable in interface net.jinx.action.input.robot.Readout
Priority for data that is very important.
PRIORITY_DIAGNOSTIC - Static variable in interface net.jinx.action.input.robot.Readout
Priority for data that would be useful for tuning and/or debugging.
PRIORITY_EMERGENCY - Static variable in interface net.jinx.action.input.robot.Readout
Priority for data that is life-or-death importance.
PRIORITY_INFO - Static variable in interface net.jinx.action.input.robot.Readout
Priority for data that is informative in nature.
PRIORITY_NONE - Static variable in interface net.jinx.action.input.robot.Readout
Setting a panel to this priority indicates that nothing should be displayed and the panel is disabled.
PRIORITY_WARNING - Static variable in interface net.jinx.action.input.robot.Readout
Priority for data that is of a warning nature.
processAction(Action) - Method in class net.jinx.action.input.Participant
Should be called by Behavior to process the actions it produces.
processAction(Action) - Method in class net.jinx.action.input.robot.Robot
 
processEvent(ActorEvent) - Method in class net.jinx.action.input.Participant
Ignores all events except ClockEvent instances.

R

Readout - Interface in net.jinx.action.input.robot
Readout functions to provide feedback from a Robot to a Behavior.
released() - Method in class net.jinx.action.input.robot.ButtonControl
Called when the state has changed from pressed to released.
released() - Method in class net.jinx.action.input.robot.ToggleButtonControl
Does nothing.
remove(String) - Method in class net.jinx.action.input.Condition
Removes the key-value pairing for the given key.
Robot - Class in net.jinx.action.input.robot
Robot is a Participant extension that is suitable for simulating robots and vehicles.
Robot(String, RobotSystem[]) - Constructor for class net.jinx.action.input.robot.Robot
 
Robot(String, RobotSystem[], Behavior) - Constructor for class net.jinx.action.input.robot.Robot
 
RobotSystem - Interface in net.jinx.action.input.robot
RobotSystem

API Stability: Alpha.
RobotUtil - Class in net.jinx.action.input.robot


API Stability: Alpha.
rumble(Axis.Identifier, float) - Method in class net.jinx.action.input.InputDevice
Rumbles the Rumbler that matches the given identifier, if it exists.
rumble(float) - Method in class net.jinx.action.input.InputDevice
Rumbles all rumblers attached to this InputDevice at the same intensity.
rumble(float, float) - Method in class net.jinx.action.input.InputDevice
This should produce a 2D directional rumble if the InputDevice supports it.

S

set(String, Object) - Method in class net.jinx.action.input.Condition
Sets the given key equal to value.
setAll(Condition) - Method in class net.jinx.action.input.Condition
Duplicates all of the key-value pairs in c into this Condition.
setBehavior(Behavior) - Method in class net.jinx.action.input.Participant
Sets the Behavior for this Participant.
setDeadZone(int, float) - Method in class net.jinx.action.input.InputDevice
Sets the dead zone for the indicated fuzzy axis.
setInputDevices(InputDevice[]) - Method in class net.jinx.action.input.ActionMap
Sets the array of InputDevices to map from.
setName(String) - Method in class net.jinx.action.input.Action
Sets the name of this Action.
setNormalDivider(float) - Method in class net.jinx.action.input.InputDevice
Sets the value used to normalize axes that are not normalized.
setReverseFuzzy(int, boolean) - Method in class net.jinx.action.input.InputDevice
Sets whether or not the indicated fuzzy axis should be reversed.
setToggled(boolean) - Method in class net.jinx.action.input.robot.ToggleButtonControl
Sets the state of this ToggleButtonControl.
setValue(float) - Method in class net.jinx.action.input.Action
Sets the value of this Action.
setValue(float) - Method in class net.jinx.action.input.robot.AbstractControl
Sets the value of this Control.
setValue(float) - Method in class net.jinx.action.input.robot.ButtonControl
Rounds value to either zero or one.
setValue(float) - Method in interface net.jinx.action.input.robot.Control
Sets the value of this control.
setValue(float) - Method in class net.jinx.action.input.robot.SliderControl
Clamps the values from zero to one.
size() - Method in class net.jinx.action.input.Condition
Returns the number of key-value pairs currently set.
SliderControl - Class in net.jinx.action.input.robot
SliderControl is an AbstractControl extension that expects input values from zero to one, much like a throttle.
SliderControl(String) - Constructor for class net.jinx.action.input.robot.SliderControl
Constructs a new SliderControl with the given name.
step(float) - Method in class net.jinx.action.input.Participant
Calls the Behavior's act(Participant, float) method.
step(float) - Method in class net.jinx.action.input.robot.Robot
 
step(float) - Method in interface net.jinx.action.input.robot.RobotSystem
 
store(Hierarchy) - Method in class net.jinx.action.input.InputDevice
Stores the configuration for this InputDevice in h.
store(InputDevice[], Hierarchy) - Static method in class net.jinx.action.input.InputDevice
Calls store(Hierarchy) on each InputDevice in the array of devices, using a sub-node named according to the device's unique ID (see the getID() method) and that device's order among those devices with an identical ID.

T

Test - Class in net.jinx.action.input
Tests the InputDevice class.
Test() - Constructor for class net.jinx.action.input.Test
 
toggle() - Method in class net.jinx.action.input.robot.ToggleButtonControl
Triggers a state change for this ToggleButtonControl.
ToggleButtonControl - Class in net.jinx.action.input.robot
ToggleButtonControl is an extension of ButtonControl that when pressed flip-flops back and forth from on to off and back again.
ToggleButtonControl(String, boolean) - Constructor for class net.jinx.action.input.robot.ToggleButtonControl
Constructs a new ToggleButtonControl with the given name.
toggled() - Method in class net.jinx.action.input.robot.ToggleButtonControl
Called when this ToggleButtonControl has changed state.
toString() - Method in class net.jinx.action.input.ControlID
Returns the following: getDeviceIndex() + ":" + controlString();
toString(InputDevice) - Method in class net.jinx.action.input.ControlID
Returns the following: getDeviceIndex() + ":" + dev.getName() + ":" + controlString();
toString() - Method in class net.jinx.action.input.InputDevice
Returns the ID String for this InputDevice.
TYPE_ANALOG - Static variable in interface net.jinx.action.input.robot.Readout
Analog readouts have direction, so they would normally be displayed in a way that encompasses this.
TYPE_AXIS - Static variable in interface net.jinx.action.input.robot.Control
Type ID for an axis that varies in value from -1 to 1.
TYPE_BAR - Static variable in interface net.jinx.action.input.robot.Readout
Bar readouts are usually labeled bar graphs.
TYPE_BOOLEAN - Static variable in interface net.jinx.action.input.robot.Readout
Boolean readouts are usually labeled indicator lights that are either lit or dark.
TYPE_BUTTON - Static variable in class net.jinx.action.input.ControlID
Use a button; pressed will be one, unpressed will be zero.
TYPE_BUTTON - Static variable in interface net.jinx.action.input.robot.Control
Type ID for a momentary push button that is on while pressed.
TYPE_DANGER_BOOLEAN - Static variable in interface net.jinx.action.input.robot.Readout
Similiar to a boolean readout, only the color changes as an additional indication of danger level.
TYPE_DANGER_TEXT - Static variable in interface net.jinx.action.input.robot.Readout
Similiar to a text readout, only the color of text changes as an additional indication of danger level.
TYPE_FUZZY - Static variable in class net.jinx.action.input.ControlID
Use a fuzzy axis' full range.
TYPE_FUZZY_NEGETIVE - Static variable in class net.jinx.action.input.ControlID
Use absolute value of a fuzzy axis' negetive range.
TYPE_FUZZY_POSITIVE - Static variable in class net.jinx.action.input.ControlID
Use a fuzzy axis' positive range.
TYPE_FUZZY_THROTTLE - Static variable in class net.jinx.action.input.ControlID
Use a fuzzy axis as a throttle slider.
TYPE_HAT_CENTER - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; center will be one and anything else will be zero.
TYPE_HAT_DOWN - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; down will be one and center will be zero.
TYPE_HAT_DOWN_UP - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; down will be negetive one, center will be zero, up will be one.
TYPE_HAT_LEFT - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; left will be one and center will be zero.
TYPE_HAT_LEFT_RIGHT - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; left will be negetive one, center will be zero, right will be one.
TYPE_HAT_RIGHT - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; right will be one and center will be zero.
TYPE_HAT_RIGHT_LEFT - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; right will be negetive one, center will be zero, left will be one.
TYPE_HAT_UP - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; up will be one and center will be zero.
TYPE_HAT_UP_DOWN - Static variable in class net.jinx.action.input.ControlID
Use a POV hat; up will be negetive one, center will be zero, down will be one.
TYPE_SLIDER - Static variable in interface net.jinx.action.input.robot.Control
Type ID for an axis with a range of 0 to 1.
TYPE_TEXT - Static variable in interface net.jinx.action.input.robot.Readout
Text readouts are displayed as a console with scrolling text.
TYPE_TOGGLE - Static variable in interface net.jinx.action.input.robot.Control
Type ID for a toggle button that toggles when pressed.
typeString() - Method in class net.jinx.action.input.ControlID
Returns a short text representation of the type constant.

V

valueChange() - Method in class net.jinx.action.input.robot.AbstractControl
This is called when the value of this control has changed.
valueChange() - Method in class net.jinx.action.input.robot.ButtonControl
Calls pressed() or released() according to whether or not isPressed() returns true.
valueIterator() - Method in class net.jinx.action.input.Condition
Provides an Iterator for the values.

A B C E G H I K L M N P R S T V