00001 // Filename: fltTrackplane.cxx 00002 // Created by: drose (26Aug00) 00003 // 00004 //////////////////////////////////////////////////////////////////// 00005 // 00006 // PANDA 3D SOFTWARE 00007 // Copyright (c) Carnegie Mellon University. All rights reserved. 00008 // 00009 // All use of this software is subject to the terms of the revised BSD 00010 // license. You should have received a copy of this license along 00011 // with this source code in a file named "LICENSE." 00012 // 00013 //////////////////////////////////////////////////////////////////// 00014 00015 #include "fltTrackplane.h" 00016 #include "fltRecordReader.h" 00017 #include "fltRecordWriter.h" 00018 00019 //////////////////////////////////////////////////////////////////// 00020 // Function: FltTrackplane::Constructor 00021 // Access: Public 00022 // Description: 00023 //////////////////////////////////////////////////////////////////// 00024 FltTrackplane:: 00025 FltTrackplane() { 00026 _origin.set(0.0, 0.0, 0.0); 00027 _alignment.set(0.0, 0.0, 0.0); 00028 _plane.set(0.0, 0.0, 1.0); 00029 _grid_state = false; 00030 _grid_under = false; 00031 _grid_angle = 0.0; 00032 _grid_spacing_x = 1; 00033 _grid_spacing_y = 1; 00034 _snap_to_grid = false; 00035 _grid_size = 10.0; 00036 _grid_spacing_direction = 0; 00037 _grid_mask = 0; 00038 } 00039 00040 //////////////////////////////////////////////////////////////////// 00041 // Function: FltTrackplane::extract_record 00042 // Access: Public 00043 // Description: 00044 //////////////////////////////////////////////////////////////////// 00045 bool FltTrackplane:: 00046 extract_record(FltRecordReader &reader) { 00047 DatagramIterator &iterator = reader.get_iterator(); 00048 00049 _origin[0] = iterator.get_be_float64(); 00050 _origin[1] = iterator.get_be_float64(); 00051 _origin[2] = iterator.get_be_float64(); 00052 _alignment[0] = iterator.get_be_float64(); 00053 _alignment[1] = iterator.get_be_float64(); 00054 _alignment[0] = iterator.get_be_float64(); 00055 _plane[0] = iterator.get_be_float64(); 00056 _plane[1] = iterator.get_be_float64(); 00057 _plane[2] = iterator.get_be_float64(); 00058 _grid_state = (iterator.get_be_int32() != 0); 00059 _grid_under = (iterator.get_be_int32() != 0); 00060 _grid_angle = iterator.get_be_float32(); 00061 iterator.skip_bytes(4); 00062 _grid_spacing_x = iterator.get_be_float64(); 00063 _grid_spacing_y = iterator.get_be_float64(); 00064 _snap_to_grid = (iterator.get_be_int32() != 0); 00065 _grid_size = iterator.get_be_float64(); 00066 _grid_spacing_direction = iterator.get_be_int32(); 00067 _grid_mask = iterator.get_be_int32(); 00068 iterator.skip_bytes(4); 00069 00070 return true; 00071 } 00072 00073 //////////////////////////////////////////////////////////////////// 00074 // Function: FltTrackplane::build_record 00075 // Access: Public 00076 // Description: 00077 //////////////////////////////////////////////////////////////////// 00078 bool FltTrackplane:: 00079 build_record(FltRecordWriter &writer) const { 00080 Datagram &datagram = writer.update_datagram(); 00081 00082 datagram.add_be_float64(_origin[0]); 00083 datagram.add_be_float64(_origin[1]); 00084 datagram.add_be_float64(_origin[2]); 00085 datagram.add_be_float64(_alignment[0]); 00086 datagram.add_be_float64(_alignment[1]); 00087 datagram.add_be_float64(_alignment[2]); 00088 datagram.add_be_float64(_plane[0]); 00089 datagram.add_be_float64(_plane[1]); 00090 datagram.add_be_float64(_plane[2]); 00091 datagram.add_be_int32(_grid_state); 00092 datagram.add_be_int32(_grid_under); 00093 datagram.add_be_float32(_grid_angle); 00094 datagram.pad_bytes(4); 00095 datagram.add_be_float64(_grid_spacing_x); 00096 datagram.add_be_float64(_grid_spacing_y); 00097 datagram.add_be_int32(_snap_to_grid); 00098 datagram.add_be_float64(_grid_size); 00099 datagram.add_be_int32(_grid_spacing_direction); 00100 datagram.add_be_int32(_grid_mask); 00101 datagram.pad_bytes(4); 00102 00103 return true; 00104 }