26 TrackerNode(
ClientBase *client,
const std::string &device_name) :
29 _transform_output = define_output(
"transform", TransformState::get_class_type());
31 _transform = TransformState::make_identity();
33 nassertv(client !=
nullptr);
35 set_graph_coordinate_system(CS_default);
38 client->get_device(ClientTrackerDevice::get_class_type(), device_name);
40 if (device ==
nullptr) {
42 <<
"Unable to open tracker device " << device_name <<
"\n";
46 if (!device->is_of_type(ClientTrackerDevice::get_class_type())) {
48 <<
"Inappropriate device type " << device->get_type()
49 <<
" created; expected a ClientTrackerDevice.\n";
64 _transform_output = define_output(
"transform", TransformState::get_class_type());
66 _transform = TransformState::make_identity();
68 nassertv(device !=
nullptr);
72 set_tracker_coordinate_system(CS_default);
73 set_graph_coordinate_system(CS_default);
99 _data = _tracker->get_tracker();
102 if (_tracker_cs != _graph_cs) {
104 _mat = _mat * LMatrix4::convert_mat(_tracker_cs, _graph_cs);
106 _mat.set_row(3, _data.
get_pos());
110 _transform = TransformState::make_mat(_mat);