<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<?xml-stylesheet href="./_c74_ref.xsl" type="text/xsl"?>

<!--This is an automatically generated file. DO NOT EDIT THIS FILE DIRECTLY. Rather, use the _ref.xml files found in the 'edits' folder.-->
<c74object name="jit.gl.handle" module="jit" category="Jitter OpenGL">
	<digest>
		Use mouse movement to control position/rotation
	</digest>
	<description>
		<o>jit.gl.handle</o> responds to mouse clicks and drags in the destination by generating rotate and position messages out its left outlet.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Jitter
		</metadata>
		<metadata name="tag">
			Jitter OpenGL
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				attribute settings, reset
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="INLET_TYPE">
			<digest>
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="OUTLET_TYPE">
			<digest>
				position/rotate to ob3d
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="OUTLET_TYPE">
			<digest>
				dumpout
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--OB3D-->
	<OB3D />
	<!--MESSAGES-->
	<methodlist>
		<method name="reset">
			<arglist />
			<digest>
				Reset to initial origin and rotation
			</digest>
			<description>
				Returns <o>jit.gl.handle</o> and attached objects to the original viewing origin and undoes all rotation.
			</description>
		</method>
	</methodlist>
	<jittermethodlist>
		<jittermethod name="bang" />
		<jittermethod name="anim_grow" />
		<jittermethod name="anim_move" />
		<jittermethod name="anim_reset" />
		<jittermethod name="anim_turn" />
		<jittermethod name="draw" />
		<jittermethod name="drawimmediate" />
		<jittermethod name="drawraw" />
		<jittermethod name="exportattrs" />
		<jittermethod name="exportsummary" />
		<jittermethod name="getattributes" />
		<jittermethod name="getstate" />
		<jittermethod name="importattrs" />
		<jittermethod name="summary" />
		<jittermethod name="update_node" />
	</jittermethodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="auto_handle" get="1" set="1" type="int" size="1">
			<digest>
				Enable auto handle mode
			</digest>
			<description>
				Enable/disable auto handle mode. When enabled the handle will perform mouse picking to select 3D objects under the mouse. This mode is enabled by default when the <o>jit.gl.handle</o> left inlet is unconnected.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Auto Handle" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="auto_rotate" get="1" set="1" type="int" size="1">
			<digest>
				Auto-rotation
			</digest>
			<description>
				Continue spinning along last rotation when no UI input is present (default = 0)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Auto Rotate" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="auto_time" get="1" set="1" type="int" size="1">
			<digest>
				Auto-rotation time
			</digest>
			<description>
				The time between automatic rotations for auto_rotate (default = 0)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Auto Time" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="filters" get="1" set="1" type="symbol" size="10">
			<digest>
				List of filterclass names to control picking
			</digest>
			<description>
				Specify a list of <at>filterclass</at> names that can be picked when <at>auto_handle</at> is enabled (default = all). Possible values include <ar>all</ar> and <ar>default</ar>. Additional values include any user-specified <at>filterclass</at> names (maximum allowed = 10).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Filter" />
			</attributelist>
		</attribute>
		<attribute name="hilite_color" get="1" set="1" type="float" size="4">
			<digest>
				Set the hilite color
			</digest>
			<description>
				Set the hilite color, used when <at>select_mode</at> is <m>hilite</m> (default = 1. 1. 0. 1.).
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Hilite Color" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="rgba" />
			</attributelist>
		</attribute>
		<attribute name="hover" get="1" set="1" type="int" size="1">
			<digest>
				Enable mouse hovering
			</digest>
			<description>
				Enable/disable mouse hovering (default = 0).
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Hover" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="radius" get="1" set="1" type="float" size="1">
			<digest>
				Control sphere radius
			</digest>
			<description>
				The radius of control sphere in 3D world (default = 1.0)
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Radius" />
			</attributelist>
		</attribute>
		<attribute name="rgb_axes" get="1" set="1" type="int" size="1">
			<digest>
				Sphere axis color
			</digest>
			<description>
				Sphere axis color flag (default = 1) When the flag is set, the sphere axes are drawn in RGB colors, Otherwise, the <at>color</at> attribute determines the color used.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="RGB Axes" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
		<attribute name="select_mode" get="1" set="1" type="symbol" size="1">
			<digest>
				Set selection mode
			</digest>
			<description>
				Set the selection mode to use when <ar>auto_handle</ar>= 1 (default = none).
			</description>
			<attributelist>
				<attribute name="enumvals" get="1" set="1" type="atom" size="5">
					<enumlist>
						<enum name="none">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="bounds">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="wireframe">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="hilite">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
						<enum name="depth">
							<digest>
								TEXT_HERE
							</digest>
							<description>
								TEXT_HERE
							</description>
						</enum>
					</enumlist>
				</attribute>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Select Mode" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="enum" />
			</attributelist>
		</attribute>
		<attribute name="tracking" get="1" set="1" type="float" size="1">
			<digest>
				Mouse-to-rotation tracking
			</digest>
			<description>
				The rotation amount relative to amount of mouse movement (default = 1.)
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Tracking" />
			</attributelist>
		</attribute>
		<attribute name="ui_priority" get="1" set="1" type="int" size="1">
			<digest>
				UI priority value
			</digest>
			<description>
				UI priority value (default = -700). When multiple UI objects are listening to the same window, ui_priority determines the order objects receive input. Lower values test first.
			</description>
			<attributelist>
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="UI Priority" />
			</attributelist>
		</attribute>
		<attribute name="visible" get="1" set="1" type="int" size="1">
			<digest>
				Visibility
			</digest>
			<description>
				Visibility flag (default = 1) When the flag is set, the sphere axes are visible in the 3D world.
			</description>
			<attributelist>
				<attribute name="basic" get="1" set="1" type="int" size="1" value="1" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Visible" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
	</attributelist>
	<jitterattributelist>
		<jitterattribute name="anchor" />
		<jitterattribute name="anim" />
		<jitterattribute name="animmode" />
		<jitterattribute name="antialias" />
		<jitterattribute name="aux_color" />
		<jitterattribute name="axes" />
		<jitterattribute name="color" />
		<jitterattribute name="cull_face" />
		<jitterattribute name="depth_clear" />
		<jitterattribute name="depth_enable" />
		<jitterattribute name="depth_write" />
		<jitterattribute name="dest_dim" />
		<jitterattribute name="drawto" />
		<jitterattribute name="enable" />
		<jitterattribute name="gl_color" />
		<jitterattribute name="inherit_all" />
		<jitterattribute name="inherit_color" />
		<jitterattribute name="inherit_depth" />
		<jitterattribute name="inherit_fog" />
		<jitterattribute name="inherit_material" />
		<jitterattribute name="inherit_poly" />
		<jitterattribute name="inherit_texture" />
		<jitterattribute name="inherit_transform" />
		<jitterattribute name="layer" />
		<jitterattribute name="line_width" />
		<jitterattribute name="name" />
		<jitterattribute name="point_size" />
		<jitterattribute name="poly_mode" />
		<jitterattribute name="position" />
		<jitterattribute name="quat" />
		<jitterattribute name="rotate" />
		<jitterattribute name="rotatexyz" />
		<jitterattribute name="scale" />
		<jitterattribute name="smooth_shading" />
		<jitterattribute name="transform_reset" />
		<jitterattribute name="viewalign" />
	</jitterattributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="jit.gl.handle.png" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="jit.gl.graph" />
		<seealso name="jit.gl.gridshape" />
		<seealso name="jit.gl.isosurf" />
		<seealso name="jit.gl.mesh" />
		<seealso name="jit.gl.model" />
		<seealso name="jit.gl.nurbs" />
		<seealso name="jit.gl.plato" />
		<seealso name="jit.gl.render" />
		<seealso name="jit.gl.shader" />
		<seealso name="jit.gl.sketch" />
		<seealso name="jit.gl.slab" />
		<seealso name="jit.gl.text2d" />
		<seealso name="jit.gl.text3d" />
		<seealso name="jit.gl.texture" />
		<seealso name="jit.gl.videoplane" />
		<seealso name="jit.gl.volume" />
		<seealso module="jit" name="jitterchapter32" type="tutorial" />
		<seealso module="jit" name="jitterchapter36" type="tutorial" />
	</seealsolist>
	<discussion>
		This object requires one argument: the name of a drawing context. A named drawing context is a named instance of a <o>jit.window</o>, <o>jit.pwindow</o>, or <o>jit.matrix</o> object which has an instance of the <o>jit.gl.render</o> object associated with it. Additionally it can reference the name of a <o>jit.gl.node</o> sub-context. This value may also be set via the OB3D <at>drawto</at> attribute. If no argument is present, the object is implicitly added to the first valid drawing context or sub-context found in the current patch or by searching up the patcher hierarchy. When the context is being drawn to a <o>jit.window</o> or <o>jit.pwindow</o>, <o>jit.gl.handle</o> responds to mouse clicks and drags in the destination by generating rotate and position messages out its left outlet. When these messages are sent to 3D objects, the objects can then be rotated and moved in space using the mouse.
		<p />
		If the messages from <o>jit.gl.handle</o> are sent directly to <o>jit.gl.render</o>, mouse motion has the effect of moving and rotating the entire 3D space defined by the renderer. In this setup, the <at>inherit_transform</at> attribute should be set to 1, so that the <o>jit.gl.handle</o> object does not move within the world as well.
		<p />
		While mouse input is present, the <o>jit.gl.handle</o> is drawn as circles around a sphere on the x, y, and z axes. Clicking and dragging on the sphere rotates connected objects. Dragging with the command key held moves the objects along the xy plane relative to the camera. Dragging with the option key held moves the objects towards and away from the camera.
	</discussion>
</c74object>
