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