]> git.mxchange.org Git - flightgear.git/blobdiff - src/ATC/AIEntity.cxx
Moved random ground cover object management code (userdata.[ch]xx) over
[flightgear.git] / src / ATC / AIEntity.cxx
index f3b06ff9cf904f5cb9b2f9368dcf2baf5b5c31ee..88945a1efbe1381c50b1e4a48f9f46bfc2f208ba 100644 (file)
 *
 ******************************************************************/
 
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
+
 #include <Main/globals.hxx>
 #include <Scenery/scenery.hxx>
 //#include <simgear/constants.h>
 FGAIEntity::~FGAIEntity() {
 }
 
-// Run the internal calculations
-void FGAIEntity::Update() {
+void FGAIEntity::Update(double dt) {
 }
 
-void FGAIEntity::Transform() {
-
-    // Translate moving object w.r.t eye
-    Point3D sc = globals->get_scenery()->get_center();
-    //cout << "sc0 = " << sc.x() << " sc1 = " << sc.y() << " sc2 = " << sc.z() << '\n';
-    //cout << "op0 = " << obj_pos.x() << " op1 = " << obj_pos.y() << " op2 = " << obj_pos.z() << '\n';
-
-    sgCoord shippos;
-    FastWorldCoordinate(&shippos, sc);
-    position->setTransform( &shippos );
-    globals->get_scenery()->get_scene_graph()->addKid(position);
-    //cout << "Transform called\n";
+void FGAIEntity::RegisterTransmission(int code) {
 }
 
-#if 0
-// Taken from tileentry.cxx
-void FGAIEntity::WorldCoordinate(sgCoord *obj_pos, Point3D center) {
-    // setup transforms
-    Point3D geod( lon * SGD_DEGREES_TO_RADIANS,
-                  lat * SGD_DEGREES_TO_RADIANS,
-                  elev );
-       
-    Point3D world_pos = sgGeodToCart( geod );
-    Point3D offset = world_pos - center;
-       
-    sgMat4 POS;
-    sgMakeTransMat4( POS, offset.x(), offset.y(), offset.z() );
-
-    sgVec3 obj_rt, obj_up;
-    sgSetVec3( obj_rt, 0.0, 1.0, 0.0); // Y axis
-    sgSetVec3( obj_up, 0.0, 0.0, 1.0); // Z axis
-
-    sgMat4 ROT_lon, ROT_lat, ROT_hdg;
-    sgMakeRotMat4( ROT_lon, lon, obj_up );
-    sgMakeRotMat4( ROT_lat, 90 - lat, obj_rt );
-    sgMakeRotMat4( ROT_hdg, hdg, obj_up );
-
-    sgMat4 TUX;
-    sgCopyMat4( TUX, ROT_hdg );
-    sgPostMultMat4( TUX, ROT_lat );
-    sgPostMultMat4( TUX, ROT_lon );
-    sgPostMultMat4( TUX, POS );
-
-    sgSetCoord( obj_pos, TUX );
-}
-#endif
-
-// Norman's 'fast hack' for above
-void FGAIEntity::FastWorldCoordinate(sgCoord *obj_pos, Point3D center) {
-    double lon_rad = lon * SGD_DEGREES_TO_RADIANS;
-    double lat_rad = lat * SGD_DEGREES_TO_RADIANS;
-    double hdg_rad = hdg * SGD_DEGREES_TO_RADIANS;
-
-    // setup transforms
-    Point3D geod( lon_rad, lat_rad, elev );
-       
-    Point3D world_pos = sgGeodToCart( geod );
-    Point3D offset = world_pos - center;
-
-    sgMat4 mat;
-
-    SGfloat sin_lat = (SGfloat)sin( lat_rad );
-    SGfloat cos_lat = (SGfloat)cos( lat_rad );
-    SGfloat cos_lon = (SGfloat)cos( lon_rad );
-    SGfloat sin_lon = (SGfloat)sin( lon_rad );
-    SGfloat sin_hdg = (SGfloat)sin( hdg_rad ) ;
-    SGfloat cos_hdg = (SGfloat)cos( hdg_rad ) ;
-
-    mat[0][0] =  cos_hdg * (SGfloat)sin_lat * (SGfloat)cos_lon - sin_hdg * (SGfloat)sin_lon;
-    mat[0][1] =  cos_hdg * (SGfloat)sin_lat * (SGfloat)sin_lon + sin_hdg * (SGfloat)cos_lon;
-    mat[0][2] =        -cos_hdg * (SGfloat)cos_lat;
-    mat[0][3] =         SG_ZERO;
-
-    mat[1][0] = -sin_hdg * (SGfloat)sin_lat * (SGfloat)cos_lon - cos_hdg * (SGfloat)sin_lon;
-    mat[1][1] = -sin_hdg * (SGfloat)sin_lat * (SGfloat)sin_lon + cos_hdg * (SGfloat)cos_lon;
-    mat[1][2] =         sin_hdg * (SGfloat)cos_lat;
-    mat[1][3] =         SG_ZERO;
-
-    mat[2][0] = (SGfloat)cos_lat * (SGfloat)cos_lon;
-    mat[2][1] = (SGfloat)cos_lat * (SGfloat)sin_lon;
-    mat[2][2] =        (SGfloat)sin_lat;
-    mat[2][3] =  SG_ZERO;
-
-    mat[3][0] = offset.x();
-    mat[3][1] = offset.y();
-    mat[3][2] = offset.z();
-    mat[3][3] = SG_ONE ;
-
-    sgSetCoord( obj_pos, mat );
+// Run the internal calculations
+//void FGAIEntity::Update() {
+void FGAIEntity::Transform() {
+    aip.setPosition(pos.lon(), pos.lat(), pos.elev() * SG_METER_TO_FEET);
+    aip.setOrientation(roll, pitch, hdg);
+    aip.update( globals->get_scenery()->get_center() );    
 }