1412103239
2 2
11 libp3device 4 k0F5 12 panda3d.core 
57
57 24 fork_asynchronous_thread 0 4 114 36 ClientBase::fork_asynchronous_thread 0 1 1 612
////////////////////////////////////////////////////////////////////
//     Function: ClientBase::fork_asynchronous_thread
//       Access: Public
//  Description: Forks a separate thread to do all the polling of
//               connected devices.  The forked thread will poll after
//               every poll_time seconds has elapsed.  Returns true if
//               the fork was successful, or false otherwise (for
//               instance, because we were already forked, or because
//               asynchronous threads are disabled).
////////////////////////////////////////////////////////////////////
60
bool ClientBase::fork_asynchronous_thread(double poll_time);

58 9 is_forked 0 4 114 21 ClientBase::is_forked 0 1 2 854
// Filename: clientBase.I
// Created by:  drose (25Jan01)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ClientBase::is_forked
//       Access: Public
//  Description: Returns true if the ClientBase has been forked (and,
//               therefore, poll() does not need to be called), false
//               otherwise.
////////////////////////////////////////////////////////////////////
46
inline bool ClientBase::is_forked(void) const;

59 4 poll 0 4 114 16 ClientBase::poll 0 1 3 429
////////////////////////////////////////////////////////////////////
//     Function: ClientBase::poll
//       Access: Public
//  Description: Initiates a poll of the client devices, if we are not
//               forked and if we have not already polled this frame.
//               Returns true if the poll occurred, or false if it did
//               not.
////////////////////////////////////////////////////////////////////
35
inline bool ClientBase::poll(void);

60 18 get_last_poll_time 0 4 114 30 ClientBase::get_last_poll_time 0 1 4 365
////////////////////////////////////////////////////////////////////
//     Function: ClientBase::get_last_poll_time
//       Access: Public
//  Description: Returns the time (according to the global
//               ClockObject's get_real_time() method) of the last
//               device poll.
////////////////////////////////////////////////////////////////////
57
inline double ClientBase::get_last_poll_time(void) const;

61 21 set_coordinate_system 0 4 114 33 ClientBase::set_coordinate_system 0 1 5 390
////////////////////////////////////////////////////////////////////
//     Function: ClientBase::set_coordinate_system
//       Access: Published
//  Description: Specifies the coordinate system that all devices
//               associated with this client will operate in.
//               Normally, this is CS_default.
////////////////////////////////////////////////////////////////////
67
inline void ClientBase::set_coordinate_system(CoordinateSystem cs);

62 21 get_coordinate_system 0 4 114 33 ClientBase::get_coordinate_system 0 1 6 388
////////////////////////////////////////////////////////////////////
//     Function: ClientBase::get_coordinate_system
//       Access: Published
//  Description: Returns the coordinate system that all devices
//               associated with this client will operate in.
//               Normally, this is CS_default.
////////////////////////////////////////////////////////////////////
70
inline CoordinateSystem ClientBase::get_coordinate_system(void) const;

63 14 get_class_type 0 4 114 26 ClientBase::get_class_type 0 1 7 0
51
static TypeHandle ClientBase::get_class_type(void);

64 10 AnalogNode 0 4 116 22 AnalogNode::AnalogNode 0 1 8 219
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
84
AnalogNode::AnalogNode(ClientBase *client, basic_string< char > const &device_name);

65 8 is_valid 0 4 116 20 AnalogNode::is_valid 0 1 9 317
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::is_valid
//       Access: Public
//  Description: Returns true if the AnalogNode is valid and
//               connected to a server, false otherwise.
////////////////////////////////////////////////////////////////////
45
inline bool AnalogNode::is_valid(void) const;

66 16 get_num_controls 0 4 116 28 AnalogNode::get_num_controls 0 1 10 378
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::get_num_controls
//       Access: Public
//  Description: Returns the number of analog controls known to the
//               AnalogNode.  This number may change as more controls
//               are discovered.
////////////////////////////////////////////////////////////////////
52
inline int AnalogNode::get_num_controls(void) const;

67 17 get_control_state 0 4 116 29 AnalogNode::get_control_state 0 1 11 453
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::get_control_state
//       Access: Public
//  Description: Returns the current position of indicated analog
//               control identified by its index number, or 0.0 if
//               the control is unknown.  The normal range of a single
//               control is -1.0 to 1.0.
////////////////////////////////////////////////////////////////////
61
inline double AnalogNode::get_control_state(int index) const;

68 16 is_control_known 0 4 116 28 AnalogNode::is_control_known 0 1 12 398
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::is_control_known
//       Access: Public
//  Description: Returns true if the state of the indicated analog
//               control is known, or false if we have never heard
//               anything about this particular control.
////////////////////////////////////////////////////////////////////
58
inline bool AnalogNode::is_control_known(int index) const;

69 10 set_output 0 4 116 22 AnalogNode::set_output 0 1 13 598
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::set_output
//       Access: Public
//  Description: Causes a particular analog control to be placed in
//               the data graph for the indicated channel.  Normally,
//               a mouse uses channels 0 and 1 for the X and Y
//               information, respectively; channels 0, 1, and 2 are
//               available.  If flip is true, the analog control value
//               will be reversed before outputting it.
////////////////////////////////////////////////////////////////////
70
inline void AnalogNode::set_output(int channel, int index, bool flip);

70 12 clear_output 0 4 116 24 AnalogNode::clear_output 0 1 14 332
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::clear_output
//       Access: Public
//  Description: Removes the output to the data graph associated with
//               the indicated channel.  See set_output().
////////////////////////////////////////////////////////////////////
50
inline void AnalogNode::clear_output(int channel);

71 10 get_output 0 4 116 22 AnalogNode::get_output 0 1 15 410
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::get_output
//       Access: Public
//  Description: Returns the analog control index that is output to
//               the data graph on the indicated channel, or -1 if no
//               control is output on that channel.  See set_output().
////////////////////////////////////////////////////////////////////
53
inline int AnalogNode::get_output(int channel) const;

72 17 is_output_flipped 0 4 116 29 AnalogNode::is_output_flipped 0 1 16 389
////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::is_output_flipped
//       Access: Public
//  Description: Returns true if the analog control index that is
//               output to the data graph on the indicated channel is
//               flipped.  See set_output().
////////////////////////////////////////////////////////////////////
61
inline bool AnalogNode::is_output_flipped(int channel) const;

73 14 get_class_type 0 4 116 26 AnalogNode::get_class_type 0 1 17 0
51
static TypeHandle AnalogNode::get_class_type(void);

74 10 ButtonNode 0 4 118 22 ButtonNode::ButtonNode 0 1 18 219
////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
84
ButtonNode::ButtonNode(ClientBase *client, basic_string< char > const &device_name);

75 8 is_valid 0 4 118 20 ButtonNode::is_valid 0 1 19 803
// Filename: buttonNode.I
// Created by:  drose (12Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::is_valid
//       Access: Public
//  Description: Returns true if the ButtonNode is valid and
//               connected to a server, false otherwise.
////////////////////////////////////////////////////////////////////
45
inline bool ButtonNode::is_valid(void) const;

76 15 get_num_buttons 0 4 118 27 ButtonNode::get_num_buttons 0 1 20 572
////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::get_num_buttons
//       Access: Public
//  Description: Returns the number of buttons known to the
//               ButtonNode.  This includes those buttons whose state
//               has been seen, as well as buttons that have been
//               associated with a ButtonHandle even if their state is
//               unknown.  This number may change as more buttons are
//               discovered.
////////////////////////////////////////////////////////////////////
51
inline int ButtonNode::get_num_buttons(void) const;

77 14 set_button_map 0 4 118 26 ButtonNode::set_button_map 0 1 21 820
////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::set_button_map
//       Access: Public
//  Description: Associates the indicated ButtonHandle with the button
//               of the indicated index number.  When the given button
//               index changes state, a corresponding ButtonEvent will
//               be generated with the given ButtonHandle.  Pass
//               ButtonHandle::none() to turn off any association.
//
//               It is not necessary to call this if you simply want
//               to query the state of the various buttons by index
//               number; this is only necessary in order to generate
//               ButtonEvents when the buttons change state.
////////////////////////////////////////////////////////////////////
71
inline void ButtonNode::set_button_map(int index, ButtonHandle button);

78 14 get_button_map 0 4 118 26 ButtonNode::get_button_map 0 1 22 441
////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::get_button_map
//       Access: Public
//  Description: Returns the ButtonHandle that was previously
//               associated with the given index number by
//               a call to set_button_map(), or ButtonHandle::none()
//               if no button was associated.
////////////////////////////////////////////////////////////////////
64
inline ButtonHandle ButtonNode::get_button_map(int index) const;

79 16 get_button_state 0 4 118 28 ButtonNode::get_button_state 0 1 23 392
////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::get_button_state
//       Access: Public
//  Description: Returns true if the indicated button (identified by
//               its index number) is currently known to be down, or
//               false if it is up or unknown.
////////////////////////////////////////////////////////////////////
58
inline bool ButtonNode::get_button_state(int index) const;

80 15 is_button_known 0 4 118 27 ButtonNode::is_button_known 0 1 24 388
////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::is_button_known
//       Access: Public
//  Description: Returns true if the state of the indicated button is
//               known, or false if we have never heard anything about
//               this particular button.
////////////////////////////////////////////////////////////////////
57
inline bool ButtonNode::is_button_known(int index) const;

81 14 get_class_type 0 4 118 26 ButtonNode::get_class_type 0 1 25 0
51
static TypeHandle ButtonNode::get_class_type(void);

82 8 DialNode 0 4 119 18 DialNode::DialNode 0 1 26 217
////////////////////////////////////////////////////////////////////
//     Function: DialNode::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
80
DialNode::DialNode(ClientBase *client, basic_string< char > const &device_name);

83 8 is_valid 0 4 119 18 DialNode::is_valid 0 1 27 797
// Filename: dialNode.I
// Created by:  drose (12Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: DialNode::is_valid
//       Access: Public
//  Description: Returns true if the DialNode is valid and
//               connected to a server, false otherwise.
////////////////////////////////////////////////////////////////////
43
inline bool DialNode::is_valid(void) const;

84 13 get_num_dials 0 4 119 23 DialNode::get_num_dials 0 1 28 363
////////////////////////////////////////////////////////////////////
//     Function: DialNode::get_num_dials
//       Access: Public
//  Description: Returns the number of dial dials known to the
//               DialNode.  This number may change as more dials
//               are discovered.
////////////////////////////////////////////////////////////////////
47
inline int DialNode::get_num_dials(void) const;

85 9 read_dial 0 4 119 19 DialNode::read_dial 0 1 29 465
////////////////////////////////////////////////////////////////////
//     Function: DialNode::read_dial
//       Access: Public
//  Description: Returns the number of complete revolutions of the
//               dial since the last time read_dial() was called.
//               This is a destructive operation; it is not possible
//               to read the dial without resetting the counter.
////////////////////////////////////////////////////////////////////
45
inline double DialNode::read_dial(int index);

86 13 is_dial_known 0 4 119 23 DialNode::is_dial_known 0 1 30 385
////////////////////////////////////////////////////////////////////
//     Function: DialNode::is_dial_known
//       Access: Public
//  Description: Returns true if the state of the indicated dial
//               dial is known, or false if we have never heard
//               anything about this particular dial.
////////////////////////////////////////////////////////////////////
53
inline bool DialNode::is_dial_known(int index) const;

87 14 get_class_type 0 4 119 24 DialNode::get_class_type 0 1 31 0
49
static TypeHandle DialNode::get_class_type(void);

88 16 MouseAndKeyboard 0 4 120 34 MouseAndKeyboard::MouseAndKeyboard 0 1 32 228
////////////////////////////////////////////////////////////////////
//     Function: MouseAndKeyboard::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
105
MouseAndKeyboard::MouseAndKeyboard(GraphicsWindow *window, int device, basic_string< char > const &name);

89 10 set_source 0 4 120 28 MouseAndKeyboard::set_source 0 1 33 382
////////////////////////////////////////////////////////////////////
//     Function: MouseAndKeyboard::set_source
//       Access: Published
//  Description: Redirects the class to get the data from the mouse
//               and keyboard associated with a different window
//               and/or device number.
////////////////////////////////////////////////////////////////////
70
void MouseAndKeyboard::set_source(GraphicsWindow *window, int device);

90 17 get_source_window 0 4 120 35 MouseAndKeyboard::get_source_window 0 1 34 272
////////////////////////////////////////////////////////////////////
//     Function: MouseAndKeyboard::get_source_window
//       Access: Published
//  Description: Returns the associated source window.
////////////////////////////////////////////////////////////////////
76
PointerTo< GraphicsWindow > MouseAndKeyboard::get_source_window(void) const;

91 17 get_source_device 0 4 120 35 MouseAndKeyboard::get_source_device 0 1 35 272
////////////////////////////////////////////////////////////////////
//     Function: MouseAndKeyboard::get_source_device
//       Access: Published
//  Description: Returns the associated source device.
////////////////////////////////////////////////////////////////////
52
int MouseAndKeyboard::get_source_device(void) const;

92 14 get_class_type 0 4 120 32 MouseAndKeyboard::get_class_type 0 1 36 0
57
static TypeHandle MouseAndKeyboard::get_class_type(void);

93 17 ~MouseAndKeyboard 0 4 120 35 MouseAndKeyboard::~MouseAndKeyboard 0 0 0
42
MouseAndKeyboard::~MouseAndKeyboard(void);

94 11 TrackerNode 0 4 121 24 TrackerNode::TrackerNode 0 2 37 38 442
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::Constructor
//       Access: Public
//  Description:
////////////////////////////////////////////////////////////////////
141
TrackerNode::TrackerNode(ClientBase *client, basic_string< char > const &device_name);
TrackerNode::TrackerNode(ClientTrackerDevice *device);

95 8 is_valid 0 4 121 21 TrackerNode::is_valid 0 1 39 806
// Filename: trackerNode.I
// Created by:  drose (12Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::is_valid
//       Access: Public
//  Description: Returns true if the TrackerNode is valid and
//               connected to a server, false otherwise.
////////////////////////////////////////////////////////////////////
46
inline bool TrackerNode::is_valid(void) const;

96 7 get_pos 0 4 121 20 TrackerNode::get_pos 0 1 40 298
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_pos
//       Access: Public
//  Description: Returns the current position of the tracker, if it is
//               available.
////////////////////////////////////////////////////////////////////
56
inline LPoint3f const &TrackerNode::get_pos(void) const;

97 10 get_orient 0 4 121 23 TrackerNode::get_orient 0 1 41 304
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_orient
//       Access: Public
//  Description: Returns the current orientation of the tracker, if it
//               is available.
////////////////////////////////////////////////////////////////////
64
inline LOrientationf const &TrackerNode::get_orient(void) const;

98 13 get_transform 0 4 121 26 TrackerNode::get_transform 0 1 42 322
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_transform
//       Access: Public
//  Description: Returns the current position and orientation of the
//               tracker, as a combined matrix.
////////////////////////////////////////////////////////////////////
63
inline LMatrix4f const &TrackerNode::get_transform(void) const;

99 8 get_time 0 4 121 21 TrackerNode::get_time 0 1 43 264
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_time
//       Access: Public
//  Description: Returns the time of the tracker's last update.
////////////////////////////////////////////////////////////////////
48
inline double TrackerNode::get_time(void) const;

100 8 has_time 0 4 121 21 TrackerNode::has_time 0 1 44 258
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::has_time
//       Access: Public
//  Description: True if this data comes with timestamps.
////////////////////////////////////////////////////////////////////
46
inline bool TrackerNode::has_time(void) const;

101 29 set_tracker_coordinate_system 0 4 121 42 TrackerNode::set_tracker_coordinate_system 0 1 45 547
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::set_tracker_coordinate_system
//       Access: Published
//  Description: Specifies the coordinate system that the tracker
//               associated with this node will operate in.  Normally,
//               this is set from the ClientBase that's used to create
//               the TrackerNode, so it should not need to be set on
//               an individual tracker basis.
////////////////////////////////////////////////////////////////////
76
inline void TrackerNode::set_tracker_coordinate_system(CoordinateSystem cs);

102 29 get_tracker_coordinate_system 0 4 121 42 TrackerNode::get_tracker_coordinate_system 0 1 46 348
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_tracker_coordinate_system
//       Access: Published
//  Description: Returns the coordinate system that the tracker
//               associated with this node will operate in.
////////////////////////////////////////////////////////////////////
79
inline CoordinateSystem TrackerNode::get_tracker_coordinate_system(void) const;

103 27 set_graph_coordinate_system 0 4 121 40 TrackerNode::set_graph_coordinate_system 0 1 47 422
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::set_graph_coordinate_system
//       Access: Published
//  Description: Specifies the coordinate system that the TrackerNode
//               will convert its transform into for passing down the
//               data graph.  Normally, this is CS_default.
////////////////////////////////////////////////////////////////////
74
inline void TrackerNode::set_graph_coordinate_system(CoordinateSystem cs);

104 27 get_graph_coordinate_system 0 4 121 40 TrackerNode::get_graph_coordinate_system 0 1 48 420
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_graph_coordinate_system
//       Access: Published
//  Description: Returns the coordinate system that the TrackerNode
//               will convert its transform into for passing down the
//               data graph.  Normally, this is CS_default.
////////////////////////////////////////////////////////////////////
77
inline CoordinateSystem TrackerNode::get_graph_coordinate_system(void) const;

105 14 get_class_type 0 4 121 27 TrackerNode::get_class_type 0 1 49 0
52
static TypeHandle TrackerNode::get_class_type(void);

106 12 VirtualMouse 0 4 122 26 VirtualMouse::VirtualMouse 0 1 50 224
////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::Constructor
//       Access: Published
//  Description:
////////////////////////////////////////////////////////////////////
61
VirtualMouse::VirtualMouse(basic_string< char > const &name);

107 13 set_mouse_pos 0 4 122 27 VirtualMouse::set_mouse_pos 0 1 51 402
////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::set_mouse_pos
//       Access: Published
//  Description: Sets the current mouse pixel location, where (0,0) is
//               the upper left, and (width-1, height-1) is the lower
//               right pixel of the virtual window.
////////////////////////////////////////////////////////////////////
47
void VirtualMouse::set_mouse_pos(int x, int y);

108 15 set_window_size 0 4 122 29 VirtualMouse::set_window_size 0 1 52 385
////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::set_window_size
//       Access: Published
//  Description: Sets the size of the "window" in which the mouse
//               rolls.  This changes the meaning of the values passed
//               to set_mouse_pos().
////////////////////////////////////////////////////////////////////
58
void VirtualMouse::set_window_size(int width, int height);

109 12 set_mouse_on 0 4 122 26 VirtualMouse::set_mouse_on 0 1 53 477
////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::set_mouse_on
//       Access: Published
//  Description: Sets whether the mouse should appear to be within the
//               window or not.  If this is true, the mouse is within
//               the window; if false, the mouse is not within the
//               window (and set_mouse_pos() means nothing).
////////////////////////////////////////////////////////////////////
43
void VirtualMouse::set_mouse_on(bool flag);

110 12 press_button 0 4 122 26 VirtualMouse::press_button 0 1 54 426
////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::press_button
//       Access: Published
//  Description: Simulates a mouse or keyboard button being depressed.
//               This should be followed up by a call to
//               release_button() sometime later (possibly
//               immediately).
////////////////////////////////////////////////////////////////////
53
void VirtualMouse::press_button(ButtonHandle button);

111 14 release_button 0 4 122 28 VirtualMouse::release_button 0 1 55 336
////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::release_button
//       Access: Published
//  Description: Simulates the button being released.  This should
//               follow a previous call to press_button().
////////////////////////////////////////////////////////////////////
55
void VirtualMouse::release_button(ButtonHandle button);

112 14 get_class_type 0 4 122 28 VirtualMouse::get_class_type 0 1 56 0
53
static TypeHandle VirtualMouse::get_class_type(void);

113 13 ~VirtualMouse 0 4 122 27 VirtualMouse::~VirtualMouse 0 0 0
34
VirtualMouse::~VirtualMouse(void);

56
1 14 Dtool_k0F5_6xH 0 6 3 125 0 14 Dtool_k0F5_6xH 612 ////////////////////////////////////////////////////////////////////
//     Function: ClientBase::fork_asynchronous_thread
//       Access: Public
//  Description: Forks a separate thread to do all the polling of
//               connected devices.  The forked thread will poll after
//               every poll_time seconds has elapsed.  Returns true if
//               the fork was successful, or false otherwise (for
//               instance, because we were already forked, or because
//               asynchronous threads are disabled).
//////////////////////////////////////////////////////////////////// 2 4 this 3 123  9 poll_time 1 124  
2 14 Dtool_k0F5pe_A 0 6 4 125 0 14 Dtool_k0F5pe_A 854 // Filename: clientBase.I
// Created by:  drose (25Jan01)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ClientBase::is_forked
//       Access: Public
//  Description: Returns true if the ClientBase has been forked (and,
//               therefore, poll() does not need to be called), false
//               otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 126  
3 14 Dtool_k0F50HyU 0 6 5 125 0 14 Dtool_k0F50HyU 429 ////////////////////////////////////////////////////////////////////
//     Function: ClientBase::poll
//       Access: Public
//  Description: Initiates a poll of the client devices, if we are not
//               forked and if we have not already polled this frame.
//               Returns true if the poll occurred, or false if it did
//               not.
//////////////////////////////////////////////////////////////////// 1 4 this 3 123  
4 14 Dtool_k0F5kkN3 0 6 6 124 0 14 Dtool_k0F5kkN3 365 ////////////////////////////////////////////////////////////////////
//     Function: ClientBase::get_last_poll_time
//       Access: Public
//  Description: Returns the time (according to the global
//               ClockObject's get_real_time() method) of the last
//               device poll.
//////////////////////////////////////////////////////////////////// 1 4 this 3 126  
5 14 Dtool_k0F5HNkp 0 4 7 129 0 14 Dtool_k0F5HNkp 390 ////////////////////////////////////////////////////////////////////
//     Function: ClientBase::set_coordinate_system
//       Access: Published
//  Description: Specifies the coordinate system that all devices
//               associated with this client will operate in.
//               Normally, this is CS_default.
//////////////////////////////////////////////////////////////////// 2 4 this 3 123  2 cs 1 128  
6 14 Dtool_k0F5wXH8 0 6 8 128 0 14 Dtool_k0F5wXH8 388 ////////////////////////////////////////////////////////////////////
//     Function: ClientBase::get_coordinate_system
//       Access: Published
//  Description: Returns the coordinate system that all devices
//               associated with this client will operate in.
//               Normally, this is CS_default.
//////////////////////////////////////////////////////////////////// 1 4 this 3 126  
7 14 Dtool_k0F5Xw0P 0 7 9 131 0 14 Dtool_k0F5Xw0P 0 0 
8 14 Dtool_k0F5r0Vk 0 7 12 133 0 14 Dtool_k0F5r0Vk 219 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 2 6 client 1 123  11 device_name 1 132  
9 14 Dtool_k0F5ljF9 0 6 13 125 0 14 Dtool_k0F5ljF9 317 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::is_valid
//       Access: Public
//  Description: Returns true if the AnalogNode is valid and
//               connected to a server, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 134  
10 14 Dtool_k0F5OfB0 0 6 14 136 0 14 Dtool_k0F5OfB0 378 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::get_num_controls
//       Access: Public
//  Description: Returns the number of analog controls known to the
//               AnalogNode.  This number may change as more controls
//               are discovered.
//////////////////////////////////////////////////////////////////// 1 4 this 3 134  
11 14 Dtool_k0F5VK5b 0 6 15 124 0 14 Dtool_k0F5VK5b 453 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::get_control_state
//       Access: Public
//  Description: Returns the current position of indicated analog
//               control identified by its index number, or 0.0 if
//               the control is unknown.  The normal range of a single
//               control is -1.0 to 1.0.
//////////////////////////////////////////////////////////////////// 2 4 this 3 134  5 index 1 136  
12 14 Dtool_k0F5_d_i 0 6 16 125 0 14 Dtool_k0F5_d_i 398 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::is_control_known
//       Access: Public
//  Description: Returns true if the state of the indicated analog
//               control is known, or false if we have never heard
//               anything about this particular control.
//////////////////////////////////////////////////////////////////// 2 4 this 3 134  5 index 1 136  
13 14 Dtool_k0F5Dna3 0 4 17 129 0 14 Dtool_k0F5Dna3 598 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::set_output
//       Access: Public
//  Description: Causes a particular analog control to be placed in
//               the data graph for the indicated channel.  Normally,
//               a mouse uses channels 0 and 1 for the X and Y
//               information, respectively; channels 0, 1, and 2 are
//               available.  If flip is true, the analog control value
//               will be reversed before outputting it.
//////////////////////////////////////////////////////////////////// 4 4 this 3 133  7 channel 1 136  5 index 1 136  4 flip 1 125  
14 14 Dtool_k0F50Apo 0 4 18 129 0 14 Dtool_k0F50Apo 332 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::clear_output
//       Access: Public
//  Description: Removes the output to the data graph associated with
//               the indicated channel.  See set_output().
//////////////////////////////////////////////////////////////////// 2 4 this 3 133  7 channel 1 136  
15 14 Dtool_k0F5_dLB 0 6 19 136 0 14 Dtool_k0F5_dLB 410 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::get_output
//       Access: Public
//  Description: Returns the analog control index that is output to
//               the data graph on the indicated channel, or -1 if no
//               control is output on that channel.  See set_output().
//////////////////////////////////////////////////////////////////// 2 4 this 3 134  7 channel 1 136  
16 14 Dtool_k0F5yrW_ 0 6 20 125 0 14 Dtool_k0F5yrW_ 389 ////////////////////////////////////////////////////////////////////
//     Function: AnalogNode::is_output_flipped
//       Access: Public
//  Description: Returns true if the analog control index that is
//               output to the data graph on the indicated channel is
//               flipped.  See set_output().
//////////////////////////////////////////////////////////////////// 2 4 this 3 134  7 channel 1 136  
17 14 Dtool_k0F5JCld 0 7 21 131 0 14 Dtool_k0F5JCld 0 0 
18 14 Dtool_k0F5N3Xg 0 7 23 137 0 14 Dtool_k0F5N3Xg 219 ////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 2 6 client 1 123  11 device_name 1 132  
19 14 Dtool_k0F5Woo7 0 6 24 125 0 14 Dtool_k0F5Woo7 803 // Filename: buttonNode.I
// Created by:  drose (12Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::is_valid
//       Access: Public
//  Description: Returns true if the ButtonNode is valid and
//               connected to a server, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 138  
20 14 Dtool_k0F50MKT 0 6 25 136 0 14 Dtool_k0F50MKT 572 ////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::get_num_buttons
//       Access: Public
//  Description: Returns the number of buttons known to the
//               ButtonNode.  This includes those buttons whose state
//               has been seen, as well as buttons that have been
//               associated with a ButtonHandle even if their state is
//               unknown.  This number may change as more buttons are
//               discovered.
//////////////////////////////////////////////////////////////////// 1 4 this 3 138  
21 14 Dtool_k0F5gucs 0 4 26 129 0 14 Dtool_k0F5gucs 820 ////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::set_button_map
//       Access: Public
//  Description: Associates the indicated ButtonHandle with the button
//               of the indicated index number.  When the given button
//               index changes state, a corresponding ButtonEvent will
//               be generated with the given ButtonHandle.  Pass
//               ButtonHandle::none() to turn off any association.
//
//               It is not necessary to call this if you simply want
//               to query the state of the various buttons by index
//               number; this is only necessary in order to generate
//               ButtonEvents when the buttons change state.
//////////////////////////////////////////////////////////////////// 3 4 this 3 137  5 index 1 136  6 button 1 140  
22 14 Dtool_k0F5Q5W8 0 7 27 140 0 14 Dtool_k0F5Q5W8 441 ////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::get_button_map
//       Access: Public
//  Description: Returns the ButtonHandle that was previously
//               associated with the given index number by
//               a call to set_button_map(), or ButtonHandle::none()
//               if no button was associated.
//////////////////////////////////////////////////////////////////// 2 4 this 3 138  5 index 1 136  
23 14 Dtool_k0F5GekS 0 6 28 125 0 14 Dtool_k0F5GekS 392 ////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::get_button_state
//       Access: Public
//  Description: Returns true if the indicated button (identified by
//               its index number) is currently known to be down, or
//               false if it is up or unknown.
//////////////////////////////////////////////////////////////////// 2 4 this 3 138  5 index 1 136  
24 14 Dtool_k0F5IiuC 0 6 29 125 0 14 Dtool_k0F5IiuC 388 ////////////////////////////////////////////////////////////////////
//     Function: ButtonNode::is_button_known
//       Access: Public
//  Description: Returns true if the state of the indicated button is
//               known, or false if we have never heard anything about
//               this particular button.
//////////////////////////////////////////////////////////////////// 2 4 this 3 138  5 index 1 136  
25 14 Dtool_k0F5O7Jc 0 7 30 131 0 14 Dtool_k0F5O7Jc 0 0 
26 14 Dtool_k0F5n9Tp 0 7 32 142 0 14 Dtool_k0F5n9Tp 217 ////////////////////////////////////////////////////////////////////
//     Function: DialNode::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 2 6 client 1 123  11 device_name 1 132  
27 14 Dtool_k0F5onZa 0 6 33 125 0 14 Dtool_k0F5onZa 797 // Filename: dialNode.I
// Created by:  drose (12Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: DialNode::is_valid
//       Access: Public
//  Description: Returns true if the DialNode is valid and
//               connected to a server, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 143  
28 14 Dtool_k0F5pBgJ 0 6 34 136 0 14 Dtool_k0F5pBgJ 363 ////////////////////////////////////////////////////////////////////
//     Function: DialNode::get_num_dials
//       Access: Public
//  Description: Returns the number of dial dials known to the
//               DialNode.  This number may change as more dials
//               are discovered.
//////////////////////////////////////////////////////////////////// 1 4 this 3 143  
29 14 Dtool_k0F5TlFp 0 6 35 124 0 14 Dtool_k0F5TlFp 465 ////////////////////////////////////////////////////////////////////
//     Function: DialNode::read_dial
//       Access: Public
//  Description: Returns the number of complete revolutions of the
//               dial since the last time read_dial() was called.
//               This is a destructive operation; it is not possible
//               to read the dial without resetting the counter.
//////////////////////////////////////////////////////////////////// 2 4 this 3 142  5 index 1 136  
30 14 Dtool_k0F5dP5l 0 6 36 125 0 14 Dtool_k0F5dP5l 385 ////////////////////////////////////////////////////////////////////
//     Function: DialNode::is_dial_known
//       Access: Public
//  Description: Returns true if the state of the indicated dial
//               dial is known, or false if we have never heard
//               anything about this particular dial.
//////////////////////////////////////////////////////////////////// 2 4 this 3 143  5 index 1 136  
31 14 Dtool_k0F50JS5 0 7 37 131 0 14 Dtool_k0F50JS5 0 0 
32 14 Dtool_k0F5iwVV 0 7 39 147 93 14 Dtool_k0F5iwVV 228 ////////////////////////////////////////////////////////////////////
//     Function: MouseAndKeyboard::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 3 6 window 1 145  6 device 1 136  4 name 1 132  
33 14 Dtool_k0F5Hs56 0 4 40 129 0 14 Dtool_k0F5Hs56 382 ////////////////////////////////////////////////////////////////////
//     Function: MouseAndKeyboard::set_source
//       Access: Published
//  Description: Redirects the class to get the data from the mouse
//               and keyboard associated with a different window
//               and/or device number.
//////////////////////////////////////////////////////////////////// 3 4 this 3 147  6 window 1 145  6 device 1 136  
34 14 Dtool_k0F5d9gp 0 7 41 145 0 14 Dtool_k0F5d9gp 272 ////////////////////////////////////////////////////////////////////
//     Function: MouseAndKeyboard::get_source_window
//       Access: Published
//  Description: Returns the associated source window.
//////////////////////////////////////////////////////////////////// 1 4 this 3 148  
35 14 Dtool_k0F5zRsj 0 6 42 136 0 14 Dtool_k0F5zRsj 272 ////////////////////////////////////////////////////////////////////
//     Function: MouseAndKeyboard::get_source_device
//       Access: Published
//  Description: Returns the associated source device.
//////////////////////////////////////////////////////////////////// 1 4 this 3 148  
36 14 Dtool_k0F5wQKX 0 7 43 131 0 14 Dtool_k0F5wQKX 0 0 
37 14 Dtool_k0F5HyCC 0 7 46 150 0 14 Dtool_k0F5HyCC 220 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 2 6 client 1 123  11 device_name 1 132  
38 14 Dtool_k0F5uJ5o 0 7 46 150 0 14 Dtool_k0F5uJ5o 220 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::Constructor
//       Access: Public
//  Description:
//////////////////////////////////////////////////////////////////// 1 6 device 1 151  
39 14 Dtool_k0F5DEoZ 0 6 47 125 0 14 Dtool_k0F5DEoZ 806 // Filename: trackerNode.I
// Created by:  drose (12Mar02)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::is_valid
//       Access: Public
//  Description: Returns true if the TrackerNode is valid and
//               connected to a server, false otherwise.
//////////////////////////////////////////////////////////////////// 1 4 this 3 153  
40 14 Dtool_k0F5fpbJ 0 6 48 155 0 14 Dtool_k0F5fpbJ 298 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_pos
//       Access: Public
//  Description: Returns the current position of the tracker, if it is
//               available.
//////////////////////////////////////////////////////////////////// 1 4 this 3 153  
41 14 Dtool_k0F5c1d9 0 6 49 158 0 14 Dtool_k0F5c1d9 304 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_orient
//       Access: Public
//  Description: Returns the current orientation of the tracker, if it
//               is available.
//////////////////////////////////////////////////////////////////// 1 4 this 3 153  
42 14 Dtool_k0F5zbsf 0 6 50 161 0 14 Dtool_k0F5zbsf 322 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_transform
//       Access: Public
//  Description: Returns the current position and orientation of the
//               tracker, as a combined matrix.
//////////////////////////////////////////////////////////////////// 1 4 this 3 153  
43 14 Dtool_k0F5Kr_I 0 6 51 124 0 14 Dtool_k0F5Kr_I 264 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_time
//       Access: Public
//  Description: Returns the time of the tracker's last update.
//////////////////////////////////////////////////////////////////// 1 4 this 3 153  
44 14 Dtool_k0F5gtUM 0 6 52 125 0 14 Dtool_k0F5gtUM 258 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::has_time
//       Access: Public
//  Description: True if this data comes with timestamps.
//////////////////////////////////////////////////////////////////// 1 4 this 3 153  
45 14 Dtool_k0F5Sq_7 0 4 53 129 0 14 Dtool_k0F5Sq_7 547 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::set_tracker_coordinate_system
//       Access: Published
//  Description: Specifies the coordinate system that the tracker
//               associated with this node will operate in.  Normally,
//               this is set from the ClientBase that's used to create
//               the TrackerNode, so it should not need to be set on
//               an individual tracker basis.
//////////////////////////////////////////////////////////////////// 2 4 this 3 150  2 cs 1 128  
46 14 Dtool_k0F5Otgh 0 6 54 128 0 14 Dtool_k0F5Otgh 348 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_tracker_coordinate_system
//       Access: Published
//  Description: Returns the coordinate system that the tracker
//               associated with this node will operate in.
//////////////////////////////////////////////////////////////////// 1 4 this 3 153  
47 14 Dtool_k0F5gH95 0 4 55 129 0 14 Dtool_k0F5gH95 422 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::set_graph_coordinate_system
//       Access: Published
//  Description: Specifies the coordinate system that the TrackerNode
//               will convert its transform into for passing down the
//               data graph.  Normally, this is CS_default.
//////////////////////////////////////////////////////////////////// 2 4 this 3 150  2 cs 1 128  
48 14 Dtool_k0F5_MOP 0 6 56 128 0 14 Dtool_k0F5_MOP 420 ////////////////////////////////////////////////////////////////////
//     Function: TrackerNode::get_graph_coordinate_system
//       Access: Published
//  Description: Returns the coordinate system that the TrackerNode
//               will convert its transform into for passing down the
//               data graph.  Normally, this is CS_default.
//////////////////////////////////////////////////////////////////// 1 4 this 3 153  
49 14 Dtool_k0F5bA7p 0 7 57 131 0 14 Dtool_k0F5bA7p 0 0 
50 14 Dtool_k0F5Zip_ 0 7 59 164 113 14 Dtool_k0F5Zip_ 224 ////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::Constructor
//       Access: Published
//  Description:
//////////////////////////////////////////////////////////////////// 1 4 name 1 132  
51 14 Dtool_k0F5OTQU 0 4 60 129 0 14 Dtool_k0F5OTQU 402 ////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::set_mouse_pos
//       Access: Published
//  Description: Sets the current mouse pixel location, where (0,0) is
//               the upper left, and (width-1, height-1) is the lower
//               right pixel of the virtual window.
//////////////////////////////////////////////////////////////////// 3 4 this 3 164  1 x 1 136  1 y 1 136  
52 14 Dtool_k0F5az5v 0 4 61 129 0 14 Dtool_k0F5az5v 385 ////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::set_window_size
//       Access: Published
//  Description: Sets the size of the "window" in which the mouse
//               rolls.  This changes the meaning of the values passed
//               to set_mouse_pos().
//////////////////////////////////////////////////////////////////// 3 4 this 3 164  5 width 1 136  6 height 1 136  
53 14 Dtool_k0F5i_qA 0 4 62 129 0 14 Dtool_k0F5i_qA 477 ////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::set_mouse_on
//       Access: Published
//  Description: Sets whether the mouse should appear to be within the
//               window or not.  If this is true, the mouse is within
//               the window; if false, the mouse is not within the
//               window (and set_mouse_pos() means nothing).
//////////////////////////////////////////////////////////////////// 2 4 this 3 164  4 flag 1 125  
54 14 Dtool_k0F5e3_V 0 4 63 129 0 14 Dtool_k0F5e3_V 426 ////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::press_button
//       Access: Published
//  Description: Simulates a mouse or keyboard button being depressed.
//               This should be followed up by a call to
//               release_button() sometime later (possibly
//               immediately).
//////////////////////////////////////////////////////////////////// 2 4 this 3 164  6 button 1 140  
55 14 Dtool_k0F5gbfY 0 4 64 129 0 14 Dtool_k0F5gbfY 336 ////////////////////////////////////////////////////////////////////
//     Function: VirtualMouse::release_button
//       Access: Published
//  Description: Simulates the button being released.  This should
//               follow a previous call to press_button().
//////////////////////////////////////////////////////////////////// 2 4 this 3 164  6 button 1 140  
56 14 Dtool_k0F52nN2 0 7 65 131 0 14 Dtool_k0F52nN2 0 0 
51
114 10 ClientBase 0 75777 10 ClientBase 10 ClientBase 0 0 0 0 0 0 7 57 58 59 60 61 62 63 0 0 1 0 115 0 0 0 0 568
////////////////////////////////////////////////////////////////////
//       Class : ClientBase
// Description : An abstract base class for a family of client
//               device interfaces--including trackers, buttons,
//               dials, and other analog inputs.
//
//               This provides a common interface to connect to such
//               devices and extract their data; it is used by
//               TrackerNode etc. to put these devices in the data
//               graph.
////////////////////////////////////////////////////////////////////

115 19 TypedReferenceCount 0 2049 19 TypedReferenceCount 19 TypedReferenceCount 0 0 0 0 0 0 0 0 0 0 0 0 710
////////////////////////////////////////////////////////////////////
//       Class : TypedReferenceCount
// Description : A base class for things which need to inherit from
//               both TypedObject and from ReferenceCount.  It's
//               convenient to define this intermediate base class
//               instead of multiply inheriting from the two classes
//               each time they are needed, so that we can sensibly
//               pass around pointers to things which are both
//               TypedObjects and ReferenceCounters.
//               
//               See also TypedObject for detailed instructions.
////////////////////////////////////////////////////////////////////

116 10 AnalogNode 0 75777 10 AnalogNode 10 AnalogNode 0 0 0 1 64 0 0 9 65 66 67 68 69 70 71 72 73 0 0 1 0 117 0 0 0 0 1077
////////////////////////////////////////////////////////////////////
//       Class : AnalogNode
// Description : This is the primary interface to analog controls like
//               sliders and joysticks associated with a ClientBase.
//               This creates a node that connects to the named analog
//               device, if it exists, and provides hooks to the user
//               to read the state of any of the sequentially numbered
//               controls associated with that device.
//
//               Each control can return a value ranging from -1 to 1,
//               reflecting the current position of the control within
//               its total range of motion.
//
//               The user may choose up to two analog controls to
//               place on the data graph as the two channels of an
//               xy datagram, similarly to the way a mouse places its
//               position data.  In this way, an AnalogNode may be
//               used in place of a mouse.
////////////////////////////////////////////////////////////////////

117 8 DataNode 0 2049 8 DataNode 8 DataNode 0 0 0 0 0 0 0 0 0 0 0 0 695
////////////////////////////////////////////////////////////////////
//       Class : DataNode
// Description : The fundamental type of node for the data graph.  The
//               DataNode class is itself primarily intended as an
//               abstract class; it defines no inputs and no outputs.
//               Most kinds of data nodes will derive from this to
//               specify the inputs and outputs in the constructor.
//
//               DataNode does not attempt to cycle its data with a
//               PipelineCycler.  The data graph is intended to be
//               used only within a single thread.
////////////////////////////////////////////////////////////////////

118 10 ButtonNode 0 75777 10 ButtonNode 10 ButtonNode 0 0 0 1 74 0 0 7 75 76 77 78 79 80 81 0 0 1 0 117 0 0 0 0 851
////////////////////////////////////////////////////////////////////
//       Class : ButtonNode
// Description : This is the primary interface to on/off button
//               devices associated with a ClientBase.  This creates a
//               node that connects to the named button device, if it
//               exists, and provides hooks to the user to read the
//               state of any of the sequentially numbered buttons
//               associated with that device.
//
//               It also can associate an arbitrary ButtonHandle with
//               each button; when buttons are associated with
//               ButtonHandles, this node will put appropriate up and
//               down events on the data graph for each button state
//               change.
////////////////////////////////////////////////////////////////////

119 8 DialNode 0 75777 8 DialNode 8 DialNode 0 0 0 1 82 0 0 5 83 84 85 86 87 0 0 1 0 117 0 0 0 0 815
////////////////////////////////////////////////////////////////////
//       Class : DialNode
// Description : This is the primary interface to infinite dial type
//               devices associated with a ClientBase.  This creates a
//               node that connects to the named dial device, if it
//               exists, and provides hooks to the user to read the
//               state of any of the sequentially numbered dial
//               controls associated with that device.
//
//               A dial is a rotating device that does not have
//               stops--it can keep rotating any number of times.
//               Therefore it does not have a specific position at any
//               given time, unlike an AnalogDevice.
////////////////////////////////////////////////////////////////////

120 16 MouseAndKeyboard 0 141313 16 MouseAndKeyboard 16 MouseAndKeyboard 0 0 0 1 88 93 0 4 89 90 91 92 0 0 1 0 117 0 0 0 0 1158
////////////////////////////////////////////////////////////////////
//       Class : MouseAndKeyboard
// Description : Reads the mouse and/or keyboard data sent from a
//               GraphicsWindow, and transmits it down the data graph.
//
//               The mouse and keyboard devices are bundled together
//               into one device here, because they interrelate so
//               much.  A mouse might be constrained by the holding
//               down of the shift key, for instance, or the clicking
//               of the mouse button might be handled in much the same
//               way as a keyboard key.
//
//               Mouse data is sent down the data graph as an x,y
//               position as well as the set of buttons currently
//               being held down; keyboard data is sent down as a set
//               of keypress events in an EventDataTransition.  To
//               throw these events to the system, you must attach an
//               EventThrower to the MouseAndKeyboard object;
//               otherwise, the events will be discarded.
////////////////////////////////////////////////////////////////////

121 11 TrackerNode 0 75777 11 TrackerNode 11 TrackerNode 0 0 0 1 94 0 0 11 95 96 97 98 99 100 101 102 103 104 105 0 0 1 0 117 0 0 0 0 461
////////////////////////////////////////////////////////////////////
//       Class : TrackerNode
// Description : This is the primary interface to a Tracker object
//               associated with a ClientBase.  It reads the position
//               and orientation information from the tracker and
//               makes it available as a transformation on the data
//               graph.
////////////////////////////////////////////////////////////////////

122 12 VirtualMouse 0 141313 12 VirtualMouse 12 VirtualMouse 0 0 0 1 106 113 0 6 107 108 109 110 111 112 0 0 1 0 117 0 0 0 0 541
////////////////////////////////////////////////////////////////////
//       Class : VirtualMouse
// Description : Poses as a MouseAndKeyboard object in the datagraph,
//               but accepts input from user calls, rather than
//               reading the actual mouse and keyboard from an input
//               device.  The user can write high-level code to put
//               the mouse wherever he/she wants, and to insert
//               keypresses on demand.
////////////////////////////////////////////////////////////////////

123 12 ClientBase * 0 8576 12 ClientBase * 12 ClientBase * 0 0 114 0 0 0 0 0 0 0 0 0 0

124 6 double 0 8194 6 double 6 double 0 3 0 0 0 0 0 0 0 0 0 0 0

125 4 bool 0 8194 4 bool 4 bool 0 4 0 0 0 0 0 0 0 0 0 0 0

126 18 ClientBase const * 0 8576 18 ClientBase const * 18 ClientBase const * 0 0 127 0 0 0 0 0 0 0 0 0 0

127 16 ClientBase const 0 8832 16 ClientBase const 16 ClientBase const 0 0 114 0 0 0 0 0 0 0 0 0 0

128 16 CoordinateSystem 0 532480 16 CoordinateSystem 16 CoordinateSystem 0 0 0 0 0 0 0 0 0 0 6 10 CS_default 10 CS_default 0 12 CS_zup_right 12 CS_zup_right 1 12 CS_yup_right 12 CS_yup_right 2 11 CS_zup_left 11 CS_zup_left 3 11 CS_yup_left 11 CS_yup_left 4 10 CS_invalid 10 CS_invalid 5 0 0

129 4 void 0 8194 4 void 4 void 0 6 0 0 0 0 0 0 0 0 0 0 0

130 10 TypeHandle 0 2048 10 TypeHandle 10 TypeHandle 0 0 0 0 0 0 0 0 0 0 0 0 1098
////////////////////////////////////////////////////////////////////
//       Class : TypeHandle
// Description : TypeHandle is the identifier used to differentiate
//               C++ class types.  Any C++ classes that inherit from
//               some base class, and must be differentiated at run
//               time, should store a static TypeHandle object that
//               can be queried through a static member function
//               named get_class_type().  Most of the time, it is also
//               desirable to inherit from TypedObject, which provides
//               some virtual functions to return the TypeHandle for a
//               particular instance.
//
//               At its essence, a TypeHandle is simply a unique
//               identifier that is assigned by the TypeRegistry.  The
//               TypeRegistry stores a tree of TypeHandles, so that
//               ancestry of a particular type may be queried, and the
//               type name may be retrieved for run-time display.
////////////////////////////////////////////////////////////////////

131 12 TypeHandle * 0 8576 12 TypeHandle * 12 TypeHandle * 0 0 130 0 0 0 0 0 0 0 0 0 0

132 13 atomic string 0 2 13 atomic string 13 atomic string 0 7 0 0 0 0 0 0 0 0 0 0 0

133 12 AnalogNode * 0 8576 12 AnalogNode * 12 AnalogNode * 0 0 116 0 0 0 0 0 0 0 0 0 0

134 18 AnalogNode const * 0 8576 18 AnalogNode const * 18 AnalogNode const * 0 0 135 0 0 0 0 0 0 0 0 0 0

135 16 AnalogNode const 0 8832 16 AnalogNode const 16 AnalogNode const 0 0 116 0 0 0 0 0 0 0 0 0 0

136 3 int 0 8194 3 int 3 int 0 1 0 0 0 0 0 0 0 0 0 0 0

137 12 ButtonNode * 0 8576 12 ButtonNode * 12 ButtonNode * 0 0 118 0 0 0 0 0 0 0 0 0 0

138 18 ButtonNode const * 0 8576 18 ButtonNode const * 18 ButtonNode const * 0 0 139 0 0 0 0 0 0 0 0 0 0

139 16 ButtonNode const 0 8832 16 ButtonNode const 16 ButtonNode const 0 0 118 0 0 0 0 0 0 0 0 0 0

140 14 ButtonHandle * 0 8576 14 ButtonHandle * 14 ButtonHandle * 0 0 141 0 0 0 0 0 0 0 0 0 0

141 12 ButtonHandle 0 2048 12 ButtonHandle 12 ButtonHandle 0 0 0 0 0 0 0 0 0 0 0 0 364
////////////////////////////////////////////////////////////////////
//       Class : ButtonHandle
// Description : A ButtonHandle represents a single button from any
//               device, including keyboard buttons and mouse buttons
//               (but see KeyboardButton and MouseButton).
////////////////////////////////////////////////////////////////////

142 10 DialNode * 0 8576 10 DialNode * 10 DialNode * 0 0 119 0 0 0 0 0 0 0 0 0 0

143 16 DialNode const * 0 8576 16 DialNode const * 16 DialNode const * 0 0 144 0 0 0 0 0 0 0 0 0 0

144 14 DialNode const 0 8832 14 DialNode const 14 DialNode const 0 0 119 0 0 0 0 0 0 0 0 0 0

145 16 GraphicsWindow * 0 8576 16 GraphicsWindow * 16 GraphicsWindow * 0 0 146 0 0 0 0 0 0 0 0 0 0

146 14 GraphicsWindow 0 2048 14 GraphicsWindow 14 GraphicsWindow 0 0 0 0 0 0 0 1 165 0 0 0 0 329
////////////////////////////////////////////////////////////////////
//       Class : GraphicsWindow
// Description : A window, fullscreen or on a desktop, into which a
//               graphics device sends its output for interactive
//               display.
////////////////////////////////////////////////////////////////////

147 18 MouseAndKeyboard * 0 8576 18 MouseAndKeyboard * 18 MouseAndKeyboard * 0 0 120 0 0 0 0 0 0 0 0 0 0

148 24 MouseAndKeyboard const * 0 8576 24 MouseAndKeyboard const * 24 MouseAndKeyboard const * 0 0 149 0 0 0 0 0 0 0 0 0 0

149 22 MouseAndKeyboard const 0 8832 22 MouseAndKeyboard const 22 MouseAndKeyboard const 0 0 120 0 0 0 0 0 0 0 0 0 0

150 13 TrackerNode * 0 8576 13 TrackerNode * 13 TrackerNode * 0 0 121 0 0 0 0 0 0 0 0 0 0

151 21 ClientTrackerDevice * 0 8576 21 ClientTrackerDevice * 21 ClientTrackerDevice * 0 0 152 0 0 0 0 0 0 0 0 0 0

152 19 ClientTrackerDevice 0 1050624 19 ClientTrackerDevice 19 ClientTrackerDevice 0 0 0 0 0 0 0 0 0 0 0 0 332
////////////////////////////////////////////////////////////////////
//       Class : ClientTrackerDevice
// Description : A device, attached to the ClientBase by a
//               TrackerNode, that records the data from a single
//               tracker device.
////////////////////////////////////////////////////////////////////

153 19 TrackerNode const * 0 8576 19 TrackerNode const * 19 TrackerNode const * 0 0 154 0 0 0 0 0 0 0 0 0 0

154 17 TrackerNode const 0 8832 17 TrackerNode const 17 TrackerNode const 0 0 121 0 0 0 0 0 0 0 0 0 0

155 16 LPoint3f const * 0 8576 16 LPoint3f const * 16 LPoint3f const * 0 0 156 0 0 0 0 0 0 0 0 0 0

156 14 LPoint3f const 0 8832 14 LPoint3f const 14 LPoint3f const 0 0 157 0 0 0 0 0 0 0 0 0 0

157 8 LPoint3f 0 2048 8 LPoint3f 8 LPoint3f 0 0 0 0 0 0 0 0 0 0 0 0 1083
// Filename: lpoint3_src.h
// Created by:  drose (25Sep99)
//
////////////////////////////////////////////////////////////////////
//
// PANDA 3D SOFTWARE
// Copyright (c) Carnegie Mellon University.  All rights reserved.
//
// All use of this software is subject to the terms of the revised BSD
// license.  You should have received a copy of this license along
// with this source code in a file named "LICENSE."
//
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
//       Class : LPoint3
// Description : This is a three-component point in space (as opposed
//               to a three-component vector, which represents a
//               direction and a distance).  Some of the methods are
//               slightly different between LPoint3 and LVector3; in
//               particular, subtraction of two points yields a
//               vector, while addition of a vector and a point yields
//               a point.
////////////////////////////////////////////////////////////////////

158 21 LOrientationf const * 0 8576 21 LOrientationf const * 21 LOrientationf const * 0 0 159 0 0 0 0 0 0 0 0 0 0

159 19 LOrientationf const 0 8832 19 LOrientationf const 19 LOrientationf const 0 0 160 0 0 0 0 0 0 0 0 0 0

160 13 LOrientationf 0 2048 13 LOrientationf 13 LOrientationf 0 0 0 0 0 0 0 0 0 0 0 0 247
////////////////////////////////////////////////////////////////////////
//       Class : LOrientation
// Description : This is a unit quaternion representing an orientation.
////////////////////////////////////////////////////////////////////////

161 17 LMatrix4f const * 0 8576 17 LMatrix4f const * 17 LMatrix4f const * 0 0 162 0 0 0 0 0 0 0 0 0 0

162 15 LMatrix4f const 0 8832 15 LMatrix4f const 15 LMatrix4f const 0 0 163 0 0 0 0 0 0 0 0 0 0

163 9 LMatrix4f 0 2048 9 LMatrix4f 9 LMatrix4f 0 0 0 0 0 0 0 3 166 167 168 0 0 0 0 215
////////////////////////////////////////////////////////////////////
//       Class : LMatrix4
// Description : This is a 4-by-4 transform matrix.
////////////////////////////////////////////////////////////////////

164 14 VirtualMouse * 0 8576 14 VirtualMouse * 14 VirtualMouse * 0 0 122 0 0 0 0 0 0 0 0 0 0

0
0
4
165 0 0 122 22 get_input_device_names 21 get_num_input_devices 21 get_input_device_name 
166 0 0 149 8 get_rows 4 size 7 get_row 
167 0 0 149 8 get_cols 4 size 7 get_col 
168 0 0 149 9 get_row3s 4 size 8 get_row3