/** * Destructor for CJumpNode class */ CJumpNode::~CJumpNode() { model_unload(m_modelnum); if (Objects[m_objnum].type != OBJ_NONE) obj_delete(m_objnum); }
// ------------------------------------------------------------------------------------ // shockwave_level_close() // // Call at the close of each level (mission) // void shockwave_level_close() { if ( !Shockwave_inited ) return; shockwave_delete_all(); uint i; // unload default shockwave, and erase all others for (i = 0; i < Shockwave_info.size(); i++) { if ( !i ) { if (Shockwave_info[i].bitmap_id >= 0) bm_unload( Shockwave_info[i].bitmap_id ); else if (Shockwave_info[i].model_id >= 0) model_page_out_textures( Shockwave_info[i].model_id ); continue; } if (Shockwave_info[i].bitmap_id >= 0) bm_release( Shockwave_info[i].bitmap_id ); if (Shockwave_info[i].model_id >= 0) model_unload( Shockwave_info[i].model_id ); Shockwave_info.erase( Shockwave_info.begin() + i ); } Shockwave_inited = 0; }
/** * Set jump node model to render * * @param model_name Name of model file to load * @param show_polys Whether to render wireframe or not */ void CJumpNode::SetModel(char *model_name, bool show_polys) { Assert(model_name != NULL); //Try to load the new model; if we can't, then we can't set it int new_model = model_load(model_name, 0, NULL, 0); if(new_model == -1) { Warning(LOCATION, "Couldn't load model file %s for jump node %s", model_name, m_name); return; } //If there's an old model, unload it if(m_modelnum != -1) model_unload(m_modelnum); //Now actually set stuff m_modelnum = new_model; m_flags |= JN_SPECIAL_MODEL; m_radius = model_get_radius(m_modelnum); //Do we want to change poly showing? if(show_polys) m_flags |= JN_SHOW_POLYS; else m_flags &= ~JN_SHOW_POLYS; }