MCPcopy Create free account
hub / github.com/ange-yaghi/engine-sim / buildEngine

Method buildEngine

scripting/include/engine_node.h:25–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

23 virtual ~EngineNode() { /* void */ }
24
25 void buildEngine(Engine *engine) {
26 int cylinderCount = 0;
27 for (const CylinderBankNode *bank : m_cylinderBanks) {
28 cylinderCount += bank->getCylinderCount();
29 }
30
31 std::set<ExhaustSystemNode *> exhaustSystems;
32 std::set<IntakeNode *> intakes;
33 for (const CylinderBankNode *bank : m_cylinderBanks) {
34 const int n = bank->getCylinderCount();
35 for (int i = 0; i < n; ++i) {
36 exhaustSystems.insert(bank->getCylinder(i).exhaust);
37 intakes.insert(bank->getCylinder(i).intake);
38 }
39 }
40
41 EngineContext context;
42 context.setEngine(engine);
43
44 Engine::Parameters parameters = m_parameters;
45 parameters.CrankshaftCount = (int)m_crankshafts.size();
46 parameters.CylinderBanks = (int)m_cylinderBanks.size();
47 parameters.CylinderCount = cylinderCount;
48 parameters.ExhaustSystemCount = (int)exhaustSystems.size();
49 parameters.IntakeCount = (int)intakes.size();
50 parameters.throttle = m_throttle->generate();
51 engine->initialize(parameters);
52
53 {
54 int i = 0;
55 for (ExhaustSystemNode *exhaust : exhaustSystems) {
56 context.addExhaust(
57 exhaust, engine->getExhaustSystem(i++));
58 }
59 }
60
61 {
62 int i = 0;
63 for (IntakeNode *intake : intakes) {
64 context.addIntake(
65 intake, engine->getIntake(i++));
66 }
67 }
68
69 {
70 int i = 0;
71 for (const CylinderBankNode *bank : m_cylinderBanks) {
72 context.addHead(bank->getCylinderHead(), engine->getHead(i++));
73 }
74 }
75
76 for (const CylinderBankNode *bank : m_cylinderBanks) {
77 const int n = bank->getCylinderCount();
78 for (int i = 0; i < n; ++i) {
79 exhaustSystems.insert(bank->getCylinder(i).exhaust);
80 intakes.insert(bank->getCylinder(i).intake);
81 }
82 }

Callers 1

_evaluateMethod · 0.80

Calls 15

pressureFunction · 0.85
celciusFunction · 0.85
sizeMethod · 0.80
addExhaustMethod · 0.80
addIntakeMethod · 0.80
addHeadMethod · 0.80
connectRodAssembliesMethod · 0.80
getFuelMethod · 0.80
getChamberMethod · 0.80
getCylinderCountMethod · 0.45
setEngineMethod · 0.45
generateMethod · 0.45

Tested by

no test coverage detected