void PropGeom::copy( Geom* fromGeom ) { int i; Geom::copy( fromGeom ); // Copy Base Stuff if ( fromGeom->getType() != PROP_GEOM_TYPE ) return; PropGeom* g = (PropGeom*)fromGeom; // Upcast numU = g->getNumU(); numW = g->getNumW(); numBlades = g->getNumBlades(); bladeVec.resize( numBlades ); surfVec.clear(); for ( i = 0 ; i < (int)bladeVec.size() ; i++ ) surfVec.push_back( &bladeVec[i] ); diameter.set( g->get_diameter()->get() ); cone_angle.set( g->get_cone_angle()->get() ); pitch.set( g->get_pitch()->get() ); //==== Delete Current Foils ====// DeleteAllFoilsAndSects(); //for ( i = 0 ; i < (int)sectVec.size() ; i++ ) // delete sectVec[i].foil; vector<Section> sVec = g->getSectVec(); sectVec = sVec; for ( i = 0 ; i < (int)sectVec.size() ; i++ ) { sectVec[i].foil = new Af(this); sectVec[i].foil->init_script(Stringc("prop_foil")); *(sectVec[i].foil) = *(sVec[i].foil); sectVec[i].foil->set_geom( this ); } currSectID = 0; chord = sectVec[currSectID].chord; loc = sectVec[currSectID].x_off; offset = sectVec[currSectID].y_off; twist = sectVec[currSectID].twist; for ( int i = 0 ; i < (int)sectVec.size() ; i++ ) sectVec[i].SetGeomPtr( this ); setCurrSectID( currSectID ); compose_model_matrix(); generate(); }
//==== Parm Has Changed ReGenerate Fuse Component ====// void PropGeom::parm_changed(Parm* p) { if ( p->get_update_grp() == UPD_XFORM ) { if ( p == &xLoc || p == &yLoc || p == &zLoc || p == &xRot || p == &yRot || p == &zRot ) updateAttach(1); else updateAttach(0); } else if ( p->get_update_grp() == UPD_NUM_PNT_XSEC ) { numPnts = 4*((int)numPnts()/4)+1; for ( int i = 0 ; i < (int)sectVec.size() ; i++ ) { sectVec[i].foil->set_num_pnts( numPnts.iget() ); } } else if ( p->get_update_grp() == AF_UPDATE_GROUP ) { for ( int i = 0 ; i < (int)sectVec.size() ; i++ ) { sectVec[i].foil-> generate_airfoil(); sectVec[i].foil-> load_name(); } //get_af_ptr()->generate_airfoil(); //get_af_ptr()->load_name(); } if ( p == &scaleFactor ) { scale(); } generate(); updateAttach(0); compose_model_matrix(); //==== Tell Aircraft You Have Changed ====// airPtr->geomMod( this ); }