Panda3D
 All Classes Functions Variables Enumerations
fltEyepoint.cxx
00001 // Filename: fltEyepoint.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 "fltEyepoint.h"
00016 #include "fltRecordReader.h"
00017 #include "fltRecordWriter.h"
00018 
00019 ////////////////////////////////////////////////////////////////////
00020 //     Function: FltEyepoint::Constructor
00021 //       Access: Public
00022 //  Description:
00023 ////////////////////////////////////////////////////////////////////
00024 FltEyepoint::
00025 FltEyepoint() {
00026   _rotation_center.set(0.0, 0.0, 0.0);
00027   _hpr.set(0.0, 0.0, 0.0);
00028   _rotation = LMatrix4::ident_mat();
00029   _fov = 60.0;
00030   _scale = 1.0;
00031   _near_clip = 0.1;
00032   _far_clip = 10000.0;
00033   _fly_through = LMatrix4::ident_mat();
00034   _eyepoint.set(0.0, 0.0, 0.0);
00035   _fly_through_yaw = 0.0;
00036   _fly_through_pitch = 0.0;
00037   _eyepoint_direction.set(0.0, 1.0, 0.0);
00038   _no_fly_through = true;
00039   _ortho_mode = false;
00040   _is_valid = true;
00041   _image_offset_x = 0;
00042   _image_offset_y = 0;
00043   _image_zoom = 1;
00044 }
00045 
00046 ////////////////////////////////////////////////////////////////////
00047 //     Function: FltEyepoint::extract_record
00048 //       Access: Public
00049 //  Description:
00050 ////////////////////////////////////////////////////////////////////
00051 bool FltEyepoint::
00052 extract_record(FltRecordReader &reader) {
00053   DatagramIterator &iterator = reader.get_iterator();
00054 
00055   _rotation_center[0] = iterator.get_be_float64();
00056   _rotation_center[1] = iterator.get_be_float64();
00057   _rotation_center[2] = iterator.get_be_float64();
00058   _hpr[0] = iterator.get_be_float32();
00059   _hpr[1] = iterator.get_be_float32();
00060   _hpr[2] = iterator.get_be_float32();
00061   int r;
00062   for (r = 0; r < 4; r++) {
00063     for (int c = 0; c < 4; c++) {
00064       _rotation(r, c) = iterator.get_be_float32();
00065     }
00066   }
00067   _fov = iterator.get_be_float32();
00068   _scale = iterator.get_be_float32();
00069   _near_clip = iterator.get_be_float32();
00070   _far_clip = iterator.get_be_float32();
00071   for (r = 0; r < 4; r++) {
00072     for (int c = 0; c < 4; c++) {
00073       _fly_through(r, c) = iterator.get_be_float32();
00074     }
00075   }
00076   _eyepoint[0] = iterator.get_be_float32();
00077   _eyepoint[1] = iterator.get_be_float32();
00078   _eyepoint[2] = iterator.get_be_float32();
00079   _fly_through_yaw = iterator.get_be_float32();
00080   _fly_through_pitch = iterator.get_be_float32();
00081   _eyepoint_direction[0] = iterator.get_be_float32();
00082   _eyepoint_direction[1] = iterator.get_be_float32();
00083   _eyepoint_direction[2] = iterator.get_be_float32();
00084   _no_fly_through = (iterator.get_be_int32() != 0);
00085   _ortho_mode = (iterator.get_be_int32() != 0);
00086   _is_valid = (iterator.get_be_int32() != 0);
00087   _image_offset_x = iterator.get_be_int32();
00088   _image_offset_y = iterator.get_be_int32();
00089   _image_zoom = iterator.get_be_int32();
00090   iterator.skip_bytes(4*9);
00091 
00092   return true;
00093 }
00094 
00095 ////////////////////////////////////////////////////////////////////
00096 //     Function: FltEyepoint::build_record
00097 //       Access: Public
00098 //  Description:
00099 ////////////////////////////////////////////////////////////////////
00100 bool FltEyepoint::
00101 build_record(FltRecordWriter &writer) const {
00102   Datagram &datagram = writer.update_datagram();
00103 
00104   datagram.add_be_float64(_rotation_center[0]);
00105   datagram.add_be_float64(_rotation_center[1]);
00106   datagram.add_be_float64(_rotation_center[2]);
00107   datagram.add_be_float32(_hpr[0]);
00108   datagram.add_be_float32(_hpr[1]);
00109   datagram.add_be_float32(_hpr[2]);
00110   int r;
00111   for (r = 0; r < 4; r++) {
00112     for (int c = 0; c < 4; c++) {
00113       datagram.add_be_float32(_rotation(r, c));
00114     }
00115   }
00116   datagram.add_be_float32(_fov);
00117   datagram.add_be_float32(_scale);
00118   datagram.add_be_float32(_near_clip);
00119   datagram.add_be_float32(_far_clip);
00120   for (r = 0; r < 4; r++) {
00121     for (int c = 0; c < 4; c++) {
00122       datagram.add_be_float32(_fly_through(r, c));
00123     }
00124   }
00125   datagram.add_be_float32(_eyepoint[0]);
00126   datagram.add_be_float32(_eyepoint[1]);
00127   datagram.add_be_float32(_eyepoint[2]);
00128   datagram.add_be_float32(_fly_through_yaw);
00129   datagram.add_be_float32(_fly_through_pitch);
00130   datagram.add_be_float32(_eyepoint_direction[0]);
00131   datagram.add_be_float32(_eyepoint_direction[1]);
00132   datagram.add_be_float32(_eyepoint_direction[2]);
00133   datagram.add_be_int32(_no_fly_through);
00134   datagram.add_be_int32(_ortho_mode);
00135   datagram.add_be_int32(_is_valid);
00136   datagram.add_be_int32(_image_offset_x);
00137   datagram.add_be_int32(_image_offset_y);
00138   datagram.add_be_int32(_image_zoom);
00139   datagram.pad_bytes(4*9);
00140 
00141   return true;
00142 }
 All Classes Functions Variables Enumerations