void LoadAddonImages (void) { PrintLog ("Loading extra images\n"); PrintLog (" Loading corona image\n"); LoadCorona (); PrintLog (" Loading glare image\n"); LoadGlare (); PrintLog (" Loading halo image\n"); LoadHalo (); PrintLog (" Loading thruster image\n"); LoadThruster (1); LoadThruster (2); PrintLog (" Loading shield image\n"); LoadShield (); PrintLog (" Loading explosion blast image\n"); LoadExplBlast (); PrintLog (" Loading spark image\n"); LoadSparks (); PrintLog (" Loading deadzone image\n"); LoadDeadzone (); PrintLog (" Loading zoom image\n"); LoadScope (); PrintLog (" Loading damage icons\n"); LoadDamageIcons (); PrintLog (" Loading joystick emulator image\n"); LoadJoyMouse (); }
FGEngine::FGEngine(FGFDMExec* exec, Element* engine_element, int engine_number, struct Inputs& input) : in(input), EngineNumber(engine_number) { Element* local_element; FGColumnVector3 location, orientation; Name = ""; Type = etUnknown; X = Y = Z = 0.0; EnginePitch = EngineYaw = 0.0; SLFuelFlowMax = 0.0; FuelExpended = 0.0; MaxThrottle = 1.0; MinThrottle = 0.0; ResetToIC(); // initialize dynamic terms FDMExec = exec; PropertyManager = FDMExec->GetPropertyManager(); Name = engine_element->GetAttributeValue("name"); Load(engine_element, PropertyManager, to_string(EngineNumber)); // Call ModelFunctions loader // Find and set engine location local_element = engine_element->GetParent()->FindElement("location"); if (local_element) location = local_element->FindElementTripletConvertTo("IN"); else cerr << "No engine location found for this engine." << endl; local_element = engine_element->GetParent()->FindElement("orient"); if (local_element) orientation = local_element->FindElementTripletConvertTo("RAD"); // else cerr << "No engine orientation found for this engine." << endl; // Jon: The engine orientation has a default and is not normally used. SetPlacement(location, orientation); // Load thruster local_element = engine_element->GetParent()->FindElement("thruster"); if (local_element) { try { if (!LoadThruster(local_element)) exit(-1); } catch (std::string str) { throw("Error loading engine " + Name + ". " + str); } } else { cerr << "No thruster definition supplied with engine definition." << endl; } // Load feed tank[s] references local_element = engine_element->GetParent()->FindElement("feed"); while (local_element) { int tankID = (int)local_element->GetDataAsNumber(); SourceTanks.push_back(tankID); local_element = engine_element->GetParent()->FindNextElement("feed"); } string property_name, base_property_name; base_property_name = CreateIndexedPropertyName("propulsion/engine", EngineNumber); property_name = base_property_name + "/set-running"; PropertyManager->Tie( property_name.c_str(), this, &FGEngine::GetRunning, &FGEngine::SetRunning ); property_name = base_property_name + "/thrust-lbs"; PropertyManager->Tie( property_name.c_str(), Thruster, &FGThruster::GetThrust); property_name = base_property_name + "/fuel-flow-rate-pps"; PropertyManager->Tie( property_name.c_str(), this, &FGEngine::GetFuelFlowRate); property_name = base_property_name + "/fuel-flow-rate-gph"; PropertyManager->Tie( property_name.c_str(), this, &FGEngine::GetFuelFlowRateGPH); property_name = base_property_name + "/fuel-used-lbs"; PropertyManager->Tie( property_name.c_str(), this, &FGEngine::GetFuelUsedLbs); PostLoad(engine_element, PropertyManager, to_string(EngineNumber)); Debug(0); }