void MIG15_Setup (AirStrucPtr const ControlledAC, ULong Version) { ClassPtr data = ControlledAC->classtype; PMODEL pModel = ControlledAC->fly.pModel; Model& Model = *ControlledAC->fly.pModel; AircraftAnimData* adptr = (AircraftAnimData* )ControlledAC->Anim; switch (Version) { case 1: Model.Type = AT_MIG15; break; case 2: Model.Type = AT_MIG15BIS; break; } SWord CoG = -388;//484; //Max 388 (Wing 26%MAC) PMAINPLANE pMainPlane = new MAINPLANE (pModel, 71000, 240, 390, 32000, 190, 220); pMainPlane->SetPosition(125, 0, -330-CoG, 370, -15, -510-CoG); pMainPlane->SetOrientation (0.75, 0, -3, 0.75, 0, -3); //IGNORE SWEEP pMainPlane->SetMaskAngle(0, 0, 0, 0);//-0.534, -0.666, 50, 50);// pMainPlane->SetDragPolar (0.0175, 0.0825); pMainPlane->SetCurves ("MIG15", "Cl", "Cd", "CompCd0", "CompK", "Cm"); pMainPlane->dCMdq = 0;//-0.01;// pMainPlane->dCMdp = 0; pMainPlane->dCMdr = 0; pMainPlane->buffetAoa0 = Degs2Rads(13); pMainPlane->buffetAoa1 = Degs2Rads(17.5); pMainPlane->buffetM0 = 0.8; pMainPlane->buffetM1 = 1.0; pMainPlane->ACMmaxaoa = Degs2Rads(15); PSURFACE pTailPlane1 = new SURFACE (pModel, ST_PLANE, SD_TAILPLANE, 15000);//, 110); pTailPlane1->SetPosition (55, 175, -875-CoG); pTailPlane1->SetOrientation (0, 0, 0); pTailPlane1->SetMaskAngle(0, 0);//-0.675, 50);// pTailPlane1->SetCurves ("MIG15", "TailCl", "COMM", "TailCd");//, "", "", "COMM", "CompK"); PSURFACE pTailPlane2 = new SURFACE (pModel, ST_PLANE, SD_TAILPLANE, 15000);//, 110); pTailPlane2->SetPosition (-55, 175, -875-CoG); pTailPlane2->SetOrientation (0, 0, 0); pTailPlane2->SetMaskAngle(0, 0);//0.675, 50);// pTailPlane2->SetCurves ("MIG15", "TailCl", "COMM", "TailCd");//, "", "", "COMM", "CompK"); PSURFACE pFin = new SURFACE (pModel, ST_PLANE, SD_FIN, 40000);//40000);//, 260); pFin->SetPosition (0, 100, -730-CoG); pFin->SetOrientation (0, 0, -90); pFin->SetMaskAngle(0, 0);//-0.207, 50);//-0.1, 100);// pFin->SetCurves ("MIG15", "FinCl", "COMM", "TailCd");//, "", "", "COMM", "CompK"); PCYLINDER pCylinder1 = new CYLINDER (pModel, 275, 135, 145); pCylinder1->SetPosition(0, 0, -135-CoG); pCylinder1->SetOrientation (0, 0, 0); PCYLINDER pCylinder2 = new CYLINDER (pModel, 275, 145, 145); pCylinder2->SetPosition(0, 0, -410-CoG); pCylinder2->SetOrientation (0, 0, 0); PCYLINDER pCylinder3 = new CYLINDER (pModel, 275, 115, 115); pCylinder3->SetPosition(0, 0, -685-CoG); pCylinder3->SetOrientation (0, 0, 0); new NEWCTRL (pMainPlane, &Model.Aileron, 17.5, Degs2Rads(15), Degs2Rads(15) ); new NEWCTRL (pTailPlane1, &Model.Elevator, 30, Degs2Rads(16), Degs2Rads(32) ); new NEWCTRL (pTailPlane2, &Model.Elevator, 30, Degs2Rads(16), Degs2Rads(32) ); new NEWCTRL (pFin, &Model.Rudder, 25, Degs2Rads(20), Degs2Rads(20) ); Model.MControlLoss0 = 0.3; Model.MControlLoss1 = 0.9; new AERODEVICE (ControlledAC,pModel, AeroDevice::DT_FLAPS, 0.5, 0.15, -0.25, DEGS2RADS(2.5), 256, FLAPSUPDOWN, &adptr->acflaps);//RJS 14May98 new AERODEVICE (ControlledAC,pModel, AeroDevice::DT_SPEEDBRAKES, 0, 0.05, 0, 0, 256, SPEEDBRAKE, &adptr->acbreak);//RJS 14May98 new AERODEVICE (ControlledAC,pModel, AeroDevice::DT_GEAR, -0.1, 0.04, -0.01, 0, /*35*/128, GEARUPDOWN, NULL, 0); PENGINE pEngine; switch (Version) { case 1: pEngine = new ENGINE (pModel, ET_JET, 22269, 11500, 0.00000005, _CurveRsc.FindCurve ("MIG15", "JetMachFact"), _CurveRsc.FindCurve ("F86E", "JetThrustRpm"), _CurveRsc.FindCurve ("F86E", "JetWindMillDrag"), _CurveRsc.FindCurve ("F86E", "JetWindMillRpm")); break; case 2: pEngine = new ENGINE (pModel, ET_JET, 26476, 11500, 0.00000005, _CurveRsc.FindCurve ("MIG15", "JetMachFact"), _CurveRsc.FindCurve ("F86E", "JetThrustRpm"), _CurveRsc.FindCurve ("F86E", "JetWindMillDrag"), _CurveRsc.FindCurve ("F86E", "JetWindMillRpm")); break; } PTHRUSTPOINT pThrust = new THRUSTPOINT (pModel, TT_JET, 0, 0, -1110-CoG, 0,0); pThrust->SetEngine (pEngine); pEngine->SetThrustPoint (pThrust); Coords3D w,c1,c2; FCRD CG; //Relative to the centre of the shape CG.x = Model.ShapeCoG.x; CG.y = Model.ShapeCoG.y; CG.z = Model.ShapeCoG.z; SHAPE.GetContactPoint(ControlledAC, CT_EYE, w, c1, c2); Model.PilotEyePos.x = c1.X - CG.x; Model.PilotEyePos.y = c1.Y - CG.y; Model.PilotEyePos.z = c1.Z - CG.z; SHAPE.GetContactPoint(ControlledAC, CT_WHLFRONT, w, c1, c2); PGEAR pNose = new GEAR (pModel, NOSE); pNose->SetDimensions (c1.X - CG.x, c1.Y - CG.y, c1.Z - CG.z, c2.X - CG.x, c2.Y - CG.y, c2.Z - CG.z); pNose->SetSuspension (15000, 100000); pNose->SetTyres (0.02, 1, 0); SHAPE.GetContactPoint(ControlledAC, CT_WHLLEFT, w, c1, c2); PGEAR pMainPort = new GEAR (pModel, PORT); pMainPort->SetDimensions (c1.X - CG.x, c1.Y - CG.y, c1.Z - CG.z, c2.X - CG.x, c2.Y - CG.y, c2.Z - CG.z); pMainPort->SetSuspension (55000, 500000); pMainPort->SetTyres (0.02, 1, 12500); SHAPE.GetContactPoint(ControlledAC, CT_WHLRIGHT, w, c1, c2); PGEAR pMainStbd = new GEAR (pModel, STBD); pMainStbd->SetDimensions (c1.X - CG.x, c1.Y - CG.y, c1.Z - CG.z, c2.X - CG.x, c2.Y - CG.y, c2.Z - CG.z); pMainStbd->SetSuspension (55000, 500000); pMainStbd->SetTyres (0.02, 1, 12500); SHAPE.GetContactPoint(ControlledAC, CT_BACK, w, c1, c2); //FAKE GEAR TO STOP TAIL HITTING GROUND PGEAR pTail = new GEAR (pModel, TAIL); pTail->SetDimensions (c1.X - CG.x, c1.Y - CG.y - 10, c1.Z - CG.z, c2.X - CG.x, c2.Y - CG.y, c2.Z - CG.z); pTail->SetSuspension (100000, 100000); pTail->SetTyres (0.1, 1, 0); pModel->SetMassInertias (ControlledAC, 7862, 10539, 4675); Model.MaxG = 9; Model.MinG = -5; Model.ControlForce = 100; // Relative amount of force feedback Model.BuffetForce = 100; Model.PowerBoost = (FP)1.25; Model.ContrailDuration = 1.0; new MODELANIM (ControlledAC,MA_SURFACE, pModel, &ControlledAC->fly.aileron, &adptr->acaileronr);//RJS 14May98 new MODELANIM (ControlledAC,MA_SURFACE, pModel, &ControlledAC->fly.aileron, &adptr->acaileronl, 32767,-32768);//RJS 14May98 new MODELANIM (ControlledAC,MA_SURFACE, pModel, &ControlledAC->fly.elevator, &adptr->acelevator, 32767,-32768);//RJS 14May98 new MODELANIM (ControlledAC,MA_SURFACE, pModel, &ControlledAC->fly.rudder, &adptr->acrudder);//RJS 14May98 new MODELANIM (ControlledAC,MA_SUSPENSION, pNose, &adptr->aclegsuspf, 0, 255); new MODELANIM (ControlledAC,MA_SUSPENSION, pMainPort, &adptr->aclegsuspl, 0, 255); new MODELANIM (ControlledAC,MA_SUSPENSION, pMainStbd, &adptr->aclegsuspr, 0, 255); Mig15_SetupAI(ControlledAC, Version); }
void YAK9_Setup (AirStrucPtr const ControlledAC, ULong Version) { ClassPtr data = ControlledAC->classtype; PMODEL pModel = ControlledAC->fly.pModel; Model& Model = *ControlledAC->fly.pModel; AircraftAnimData* adptr = (AircraftAnimData* )ControlledAC->Anim; Model.Type = AT_YAK9; FP CoG = -352;//26%MAC PTHRUSTPOINT pThrust = new THRUSTPOINT (pModel, TT_PROP, 0, 0, -45-CoG, 0, 0); PMAINPLANE pMainPlane = new MAINPLANE (pModel, 45750, 230, 345, 40000, 165, 215); pMainPlane->SetPosition(140, -45, -350-CoG, 430, -20, -350-CoG); pMainPlane->SetOrientation (1, 0, 5, 1, 0, 5); pMainPlane->SetMaskAngle(0, 0, 0, 0);//-0.865, -1.089);// pMainPlane->SetDragPolar (0.0163, 0.0724); pMainPlane->SetCurves ("F80C", "Cl", "Cd", "CompCd0", "CompK", "Cm"); //DeadCode AMM 29Jun99 pMainPlane->StallAoa = Degs2Rads(0);//22.5); //DeadCode AMM 29Jun99 pMainPlane->UnStallAoa = Degs2Rads(12.5); pMainPlane->dCMdq = 0; pMainPlane->dCMdp = 0; pMainPlane->dCMdr = -1; pMainPlane->SetSlipstream(pThrust, 50); pMainPlane->buffetAoa0 = Degs2Rads(15); pMainPlane->buffetAoa1 = Degs2Rads(20); pMainPlane->buffetM0 = 0.95; pMainPlane->buffetM1 = 1.05; pMainPlane->ACMmaxaoa = Degs2Rads(17.5); PSURFACE pTailPlane1 = new SURFACE (pModel, ST_PLANE, SD_TAILPLANE, 19000);//, 95); pTailPlane1->SetPosition (75, 30, -825-CoG); pTailPlane1->SetOrientation (0, 0, 0); pTailPlane1->SetMaskAngle(0, 0); pTailPlane1->SetCurves ("P51D", "TailCl", "COMM", "TailCd");//, "", "", "COMM", "CompK"); pTailPlane1->SetSlipstream(pThrust, 50);//84); PSURFACE pTailPlane2 = new SURFACE (pModel, ST_PLANE, SD_TAILPLANE, 19000);//, 95); pTailPlane2->SetPosition (-75, 30, -825-CoG); pTailPlane2->SetOrientation (0, 0, 0); pTailPlane2->SetMaskAngle(0, 0); pTailPlane2->SetCurves ("P51D", "TailCl", "COMM", "TailCd");//, "", "", "COMM", "CompK"); pTailPlane2->SetSlipstream(pThrust, 50);//84); PSURFACE pFin = new SURFACE (pModel, ST_PLANE, SD_FIN, 20800);//, 135); pFin->SetPosition (0, 80, -875-CoG); pFin->SetOrientation (0, 0, -90); pFin->SetMaskAngle(0, 0);//-0.153); pFin->SetCurves ("P51D", "FinCl", "COMM", "TailCd");//, "", "", "COMM", "CompK"); pFin->SetSlipstream(pThrust, 50);//90); PCYLINDER pCylinder1 = new CYLINDER (pModel, 280, 85, 115); pCylinder1->SetPosition(0, 0, -150-CoG); pCylinder1->SetOrientation(0, 0, 0); PCYLINDER pCylinder2 = new CYLINDER (pModel, 305, 90, 165); pCylinder2->SetPosition(0, 0, -450-CoG); pCylinder2->SetOrientation(0, 0, 0); PCYLINDER pCylinder3 = new CYLINDER (pModel, 410, 50, 90); pCylinder3->SetPosition(0, 0, -775-CoG); pCylinder3->SetOrientation(0, 0, 0); new NEWCTRL (pMainPlane, &Model.Aileron, 17.5, Degs2Rads(10), Degs2Rads(10) ); new NEWCTRL (pTailPlane1, &Model.Elevator, 30, Degs2Rads(20), Degs2Rads(30) ); new NEWCTRL (pTailPlane2, &Model.Elevator, 30, Degs2Rads(20), Degs2Rads(30) ); new NEWCTRL (pFin, &Model.Rudder, 40, Degs2Rads(30), Degs2Rads(30) ); new AERODEVICE (ControlledAC,pModel, AeroDevice::DT_FLAPS, 0.75, 0.15, -0.25, DEGS2RADS(5), 256, FLAPSUPDOWN, &adptr->acflaps);//RJS 14May98 new AERODEVICE (ControlledAC,pModel, AeroDevice::DT_GEAR, 0, 0.05, -0.01, 0, 4096/*128*/, GEARUPDOWN, NULL, 0); PENGINE pEngine = new ENGINE (pModel, ET_PISTON); pEngine->RotateDirection = 1; //Clockwise from behind pEngine->IdleSpeed = RPM2RADSPERCSEC (500); pEngine->MoI = 64e6; pEngine->PropInertia.x = 10000000; pEngine->PropInertia.y = 10000000; pEngine->PropInertia.z = 20000000; pEngine->BladeRadius = 170; pEngine->BladeArea = 17000; // 4x AR=5 //7771; pEngine->GearRatio = 0.479; pEngine->pPower100 = _CurveRsc.FindCurve ("YAK9", "Power100"); pEngine->pPower0 = _CurveRsc.FindCurve ("F51D", "Power0"); pEngine->pPowerAlt = _CurveRsc.FindCurve ("F51D", "PowerAlt"); pEngine->pPowerAltSuper = _CurveRsc.FindCurve ("F51D", "PowerAltSuper"); //CSB //DeadCode CSB 28/04/99 pEngine->pPropEff = _CurveRsc.FindCurve ("F51D", "PropEff"); //DeadCode CSB 28/04/99 pEngine->pPropTq = _CurveRsc.FindCurve ("F51D", "PropTq"); //DeadCode AMM 29Jun99 pEngine->EngineCount = 1; pEngine->HighBlowerAlt = 457205; //High Gear Supercharger cuts in at 15000ft //CSB pEngine->LowBlowerAlt = 411485; //High Gear Supercharger cuts out at 13500ft //CSB pEngine->BlowerHigh = FALSE; pEngine->p0 = 1590; pEngine->T100 = 1185000; pThrust->SetEngine (pEngine); pEngine->SetThrustPoint (pThrust); Coords3D w,c1,c2; FCRD CG; //Relative to the centre of the shape CG.x = Model.ShapeCoG.x; CG.y = Model.ShapeCoG.y; CG.z = Model.ShapeCoG.z; SHAPE.GetContactPoint(ControlledAC, CT_EYE, w, c1, c2); Model.PilotEyePos.x = c1.X - CG.x; Model.PilotEyePos.y = c1.Y - CG.y; Model.PilotEyePos.z = c1.Z - CG.z; SHAPE.GetContactPoint(ControlledAC, CT_WHLBACK, w, c1, c2); PGEAR pTail = new GEAR (pModel, TAIL); pTail->SetDimensions (c1.X - CG.x, c1.Y - CG.y, c1.Z - CG.z, c2.X - CG.x, c2.Y - CG.y, c2.Z - CG.z); pTail->SetSuspension (10000, 250000); pTail->SetTyres (0.02, 0.75, 0); SHAPE.GetContactPoint(ControlledAC, CT_WHLLEFT, w, c1, c2); PGEAR pMainPort = new GEAR (pModel, PORT); pMainPort->SetDimensions (c1.X - CG.x, c1.Y - CG.y, c1.Z - CG.z, c2.X - CG.x, c2.Y - CG.y, c2.Z - CG.z); pMainPort->SetSuspension (40000, 1000000); pMainPort->SetTyres (0.02, 0.75, 10000); SHAPE.GetContactPoint(ControlledAC, CT_WHLRIGHT, w, c1, c2); PGEAR pMainStbd = new GEAR (pModel, STBD); pMainStbd->SetDimensions (c1.X - CG.x, c1.Y - CG.y, c1.Z - CG.z, c2.X - CG.x, c2.Y - CG.y, c2.Z - CG.z); pMainStbd->SetSuspension (40000, 1000000); pMainStbd->SetTyres (0.02, 0.75, 10000); Model.ControlForce = 100; // Relative amount of force feedback Model.BuffetForce = 100; pModel->SetMassInertias (ControlledAC, 0.75*26500, 0.75*36800, 0.75*11000); //0.75 * F80 //DeadCode CSB 22/03/99 pModel->SetMassInertias (ControlledAC, 18460, 30000, 8100); //Don't know //DeadCode CSB 22/03/99 pModel->SetMassInertias (ControlledAC, 26500, 36800, 11000); //F86E Model.MaxG = 9; Model.MinG = -5; new MODELANIM (ControlledAC,MA_SURFACE, pModel, &ControlledAC->fly.aileron, &adptr->acaileronr); new MODELANIM (ControlledAC,MA_SURFACE, pModel, &ControlledAC->fly.aileron, &adptr->acaileronl,32767,-32768);//RJS 14May98 new MODELANIM (ControlledAC,MA_SURFACE, pModel, &ControlledAC->fly.elevator, &adptr->acelevator,32767,-32768);//RJS 14May98 new MODELANIM (ControlledAC,MA_SURFACE, pModel, &ControlledAC->fly.rudder, &adptr->acrudder); new MODELANIM (ControlledAC,MA_GENERICFP, pModel, &ControlledAC->fly.rpm, &adptr->acrpm, 0, 65536); // new MODELANIM (ControlledAC,MA_GENERICFP, pModel, &pModel->Inst.Rpm1, &adptr->acrpm, 0, 65536); new MODELANIM (ControlledAC,MA_SUSPENSION, pTail, &adptr->aclegsuspb, 0, 255); new MODELANIM (ControlledAC,MA_SUSPENSION, pMainPort, &adptr->aclegsuspl, 0, 255); new MODELANIM (ControlledAC,MA_SUSPENSION, pMainStbd, &adptr->aclegsuspr, 0, 255); //DeadCode AMM 29Jun99 Model.CoordRudder = 768; Model.PowerBoost = 1.4; //DeadCode AMM 29Jun99 Model.ContrailBand = FEET2CM(10000); Model.ContrailDuration = 1.0; F51D_SetupAI (ControlledAC, Version); }